1999-06-11  Franois Pinard  <pinard@iro.umontreal.ca>

	* buffer.c (open_archive):

	* Makefile.am (EXTRA_PROGRAMS): Add cpio and pax.
	(noinst_PROGRAMS): Deleted.
	(libexec_PROGRAMS):

	* extract.c (extract_sparse_file): Report lseek errors.
	Reported by Dale Worley.

1999-06-11  Dale Worley  <worley@ariadne.com>

	Implement --per-file-compress.
	* common.h: Declare per_file_compress_option, compress_whole_archive,
	file_compress_temporary, MINIMUM_FILE_COMPRESS_SIZE and
	MAXIMUM_FILE_COMPRESS_SIZE.
	* tar.h: Add OLDGNU_REGULAR_COMPRESSED, OLDGNU_CONTIG_COMPRESSED
	and OLDGNU_SPARSE_COMPRESSED.
	* tar.c (long_options, usage, declare_options, decode_options):
	Handle -y option.
	(init_compress_work_file, delete_compress_work_file): New functions.
	(main): Use them.
	* extract.c (extract_compressed_file): New function.
	(extract_archive): Handle compressed entries.
	* create.c (dump_file): Handle compressed entries.
	* compare.c (diff_compressed_file): New function.
	(diff_archive): Handle compressed entries.
	* misc (xclose, xdup2): New from buffer.c, not static anymore.
	* buffer.c (xclose, xdup2): Deleted.
	(open_archive): Rather test compress_whole_archive.
	* common.h: Declare them.

1999-05-28  Franois Pinard  <pinard@iro.umontreal.ca>

	* tar.c (decode_options): Error if wildcards are used in quick mode.
	* misc.c (is_pattern): New routine, moved out of names.c.
	* common.h: Declare its prototype.
	Reported by Eli Zaretskii and Gran Uddeborg.

1999-05-23  Franois Pinard  <pinard@iro.umontreal.ca>

	* common.h: Introduce quick_option, and name_list_unmatched_count.
	* names.c: Maintain proper value for name_list_unmatched_count.
	Diagnose wildcards whenever quick_option has been specified.
	* tar.c (usage, decode_options, main): Introduce quick_option.
	* reading.c (read_and): Enforce quick_option.
	Reported by Alexandre Oliva, Doug Lenz, Ed DeRivas, Enno Busse,
	Kurt, Randall Glass and Tom Karches.

	* update.c (update_archive): Call commented out.
	* common.h: Adjusted.

	* incremen.c (compare_names): Tidied.

1999-05-02  Franois Pinard  <pinard@iro.umontreal.ca>

	* names.c (next_name_string): Unquote names coming from files, but
	not anymore for names coming from command arguments, and not when
	--null is set.  Consider the shell offers quoting services already.
	Reported by Ed Avis.

1999-04-26  Franois Pinard  <pinard@iro.umontreal.ca>

	* rtapelib.c (rmt_open__): Do not allocate command_buffer
	statically.  It was possible to get a buffer overflow.
	Reported by Alan Cox.

	* rtapelib.c (do_rexec): If user is empty, consider it NULL.
	* rmt.cpio.c, rmt.cpio.h, rtapelib.cpio.c: Deleted.
	* Makefile.am (EXTRA_DIST): Deleted.

1999-04-17  Franois Pinard  <pinard@iro.umontreal.ca>

	* copyin.c, copypass.c: Use dir_name instead of dirname.

	* system.h: Remove the DOSWIN conditional and define CONSOLE to
	/dev/tty in all cases.  Previously, it was con for the DOSWIN case.
	Reported by Eli Zaretskii.

1999-04-13  Franois Pinard  <pinard@iro.umontreal.ca>

	* tar.c (get_reply): Attempt discarding any pending input before
	writing the prompt.
	Reported by Brendan O'Dea, Eli Zaretskii, Jim Meyering, Steven
	Sargent and Ulrich Drepper.

	* copyin.c (process_copy_in): If we cannot copy because -d wasn't
	given, make the error message mention the directory part of name.
	If we are not allowed to create intermediate directories, mention
	the parent directory in message.  Say unsupported, not unknown.
	* copypass.c (copy_pass_one_file): Idem.
	Reported by Eli Zaretskii.

	* system.h [DOSWIN]: Set EPERM to EACCES.  Set UMASKED_SYMLINK to link.
	* copyin.c (long_format) [DOSWIN]: Use cpio_mode_string.
	(process_copy_in) [DOSWIN]: Set binary mode on archive and
	consider device as special if not directed from terminal.
	Clean out drives from paths.  Say we cannot set times on a directory.
	* copyout.c (process_copy_out) [DOSWIN]: Set binary mode on
	archive and consider device as special if not directed to terminal.
	(copy_out_one_file) [DOSWIN]: Adjust st_rdev to st_dev.
	* copypass.c (copy_pass_one_file) [DOSWIN]:  Say we cannot set
	times on a directory.
	(copy_pass_maybe_recurse) [DOSWIN]: Remove drive from file name.
	* cpio.c (main) [DOSWIN]: Set program name to base name.
	* fmttar.c (read_in_tar_header) [DOSWIN]: Truncate time.
	* util.c (readlink, maybe_rename_file) [DOSWIN]: New functions.
	Reported by Eli Zaretskii.

	* names.c (next_name_string): Recognize -C from the command line
	even with --null, if still not from a file.  Previously, -C was
	ignored everywhere if --null was given.
	Reported by Karl Berry.

1999-04-12  Franois Pinard  <pinard@iro.umontreal.ca>

	Address the long lasting problem (back to version 1.10) that -C
	and -T are incompatible.  Also, -T may now be used more than once.
	* tar.c (decode_options): Process -T by saving it and its argument
	in the list of names, instead of setting variable files_from_option.
	Use files_from_option as a boolean flag, instead of a file name.
	* names.c (next_name_string): Declare enum expecting and
	expecting.  Use it to introduce -T processing similar to -C, yet
	not from within files.  Do not open or close name_file elsewhere.
	* common.c: Adjusted.
	Reported by Angelo Fumagalli, Carsten Heyl, Franois Pinard, Igor
	Schein, Karen Newcastle, Karl Berry, Kevin L. Smith, Larry
	M. Augustin, Patrick Timmons and Steve Biederman.

	* names.c (initialize_name_strings): Merge previous init_names and
	name_init.
	(terminate_name_strings): Merge previous name_term and name_close.
	(add_name_string): New name for name_add.
	(next_name_string): New name for name_next.
	* common.c, create.c, names.c, tar.c: Adjusted.

	* names.c (find_matching_name): Merge previous name_match and
	name_scan, with a new commit argument to segregate cases.
	* common.h, delete.c, reading.c, update.c: Adjusted.

	* names.c (next_unprocessed_name): New name for name_from_list.
	(prepare_to_reprocess_names): New name for blank_name_list.
	(report_unprocessed_names): New name for names_notfound.
	* common.h, create.c, delete.c, misc.c, reading.c, tar.c, update.c:
	Adjusted.

	* names.c (name_next): Inline previous read_name_from_file.
	(read_name_from_file): Deleted.

	* names.c (name_next): Rename change_dirs to recognize_minus_c and
	chdir_flag to next_is_directory.

1999-04-07  Franois Pinard  <pinard@iro.umontreal.ca>

	* rtapelib.c (rmt_open__): Use execl if --rsh-command is
	specified, even if rexec was compiled in.
	* tar.c (decode_options) [REMOTE_SHELL]: Initialise
	rsh_command_option with REMOTE_SHELL.
	Reported by Stephen Costaras.

1999-03-17  Franois Pinard  <pinard@iro.umontreal.ca>

	* create.c (dump_file): Use hash_insert as per last hash.[ch].

	* buffer.c (new_volume): Get the BEL out of the translated message.

1999-03-16  Dale Worley  <worley@dworley.ne.mediaone.net>

	* Fix compare.c so that --atime-preserve works with -d and with -c
	--verify.

1999-03-07  Franois Pinard  <pinard@iro.umontreal.ca>

	* rename.c, util.c: Use %s in error calls.
	Reported by Jim Meyering.

1999-03-06  Franois Pinard  <pinard@iro.umontreal.ca>

	* create.c (dump_file): For the purpose of --ignore-failed-read,
	consider the following cases as failed read: unexpected shrinking
	of files, failed opening of directories, files for which dumping
	type is not known, or failed removal of files after dump.
	Reported by Alexandre Oliva.

1999-03-05  Franois Pinard  <pinard@iro.umontreal.ca>

	* list.c (print_header): When listing files non-verbosely and
	--null is given, use NUL instead of \n, and avoid any quoting.
	Reported by Richard J. Kettlewell.

	* common.h: Introduce null_option, get rid of filename_terminator.
	* names.c (read_name_from_file, name_next): Idem.
	* tar.c (decode_options, main): Idem.

1998-12-10  Franois Pinard  <pinard@iro.umontreal.ca>

	* buffer.c, signal.h [!HAVE_SIGNAL_H]: Rather include sys/signal.h.
	Unixware 7 does have sys/signal.h, without having signal.h.
	Reported by Allan M. Clark and Peter Waltenberg.

	* rtapelib.c (rmt_program_array): Do not attempt /zorglub/rmt.
	Reported by John David Anglin.

1998-12-09  Franois Pinard  <pinard@iro.umontreal.ca>

	* header.c (get_header_mode): Handle buggy Solaris archives.
	Reported by Alexandre Oliva, Manabu Nakamura and William Kucharski.

1998-11-30  Paul Eggert  <eggert@twinsun.com>

	* extract.c (set_stat): chmod after chown even when not root,
	if we are using --same-owner.  This is needed on Solaris 2.5.1.
	Reported by Paul D. Smith.

1998-11-21  Franois Pinard  <pinard@iro.umontreal.ca>

	* cdf.c, copyin.c, copyout.c, extern.h, fmttar.c, format.c: Rename
	 GNUTAR and gnutar to OLDGNU and oldgnu.

1998-11-10  Franois Pinard  <pinard@iro.umontreal.ca>

	* extract.c (extract_archive): Declare size as off_t.
	Reported by Eli Zaretskii.

	* misc.c (unixify_file_name): New function.
	* common.h: Prototype it.
	* names.c (name_next): Use it.
	* tar.c (decode_options): Use it.
	Reported by Eli Zaretskii.

	* extract.c (extract_archive) [DOSWIN]: Rename variables as well.
	(rename_if_dos_device_name) [DOSWIN]: Idem.
	Reported by Eli Zaretskii.

	* misc.c (get_programe_base_name) [DOSWIN]: New function.
	* common.h [DOSWIN]: Declare it.
	* tar.c (main) [DOSWIN]: Use it, so the test suite works.
	* cpio.c (main) [DOSWIN]: Idem.
	* mt.c (main) [DOSWIN]: Idem.
	* pax.c (main) [DOSWIN]: Idem.
	* rmt.c (main) [DOSWIN]: Idem.
	Reported by Eli Zaretskii.

	* buffer.c (new_volume): Unconditionalise a few tests handling
	closes of stdin or stdout in multi-volume situations, and delete
	the old alternative code.  Such tests were only done when DOSWIN,
	while the problem is generic for all systems.
	Reported by Eli Zaretskii and Germano Leichsenring.

	* buffer.c (new_volume): Handle writing to stdout or reading from
	stdin on multi-volume archives.  Do not create files named "-".
	Reported by Eli Zaretskii.

1998-10-31  Franois Pinard  <pinard@iro.umontreal.ca>

	* rtapelib.c (rmt_read__, rmt_write__, rmt_lseek__): Return
	type was different from declaration.
	Reported by Alexandre Oliva, Eli Zaretskii and Nelson H. F. Beebe.

1998-10-31 Alexandre Oliva  <oliva@dcc.unicamp.br>

	* system.h: Include <locale.h> where available.

1998-10-31  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

	* extern.h: Declare dir_name instead of dirname.
	* util.c (create_all_directories): Adjusted.

	* system.h: Always use full_read and full_write.

	* extern.h: Fix declaration of make_path, it has a new argument.
	* util.c (create_all_directories): Adjusted.

	* system.h: Don't declare stpcpy if it is a macro.

1998-10-28  Franois Pinard  <pinard@iro.umontreal.ca>

	* system.h: Declare stpcpy.
	Reported by Sakai Kiyotaka.

	* util.c: Do not include <mtio.h>, as system.h did it already.
	Reported by Alexandre Oliva, Nelson H. F. Beebe and Sakai Kiyotaka.

	* cpio.c (usage): Correct bug reporting address.
	* pax.c (usage): Idem.
	Reported by Howard Bampton.

1998-10-27  Franois Pinard  <pinard@iro.umontreal.ca>

	* create.c (dump_file): Adjust call to hash_initialize to provide
	a NULL for new tuning argument.

	* tar.c (decode_options): Handle arguments after --.
	Reported by Nick Cleaton.

1998-10-21  Franois Pinard  <pinard@iro.umontreal.ca>

	* buffer.c (child_open_for_uncompress): Correct a message.
	* extract.c (set_stat): Word a message as another, already existing.
	* list.c (print_header, print_for_mkdir): Use %lu instead of %ul.
	* update.c (append_file): Idem.
	Reported by Santiago Vila Doncel.

1998-10-18  Franois Pinard  <pinard@iro.umontreal.ca>

	* Makefile.am: Have main programs depend on ../config.status, so a
	version change in configure.in gets reflected in binaries.

1998-10-13  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

	* common.h (FILE_IS_NEW_ENOUGH): Fix paren nesting.  Return true
	also if timestamps are equal.

1998-10-10  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

	* buffer.c (output_checkpoint_mark): Consistently print 10 dots
	per group.

	* names.c (check_exclude): Compare the exclude strings only with
	the last part of the name string.

	* util.c (find_inode_file): Fix index when doing linear search
	through hash table.

	* cpio.c (process_args): Print a helpful message when processing
	an unknown option.

	* cpio.c (long_opts): Correct name of --no-absolute-filenames
	option.
	(process_args): Handle case OPTION_NOABSFILE.

	* copyin.c (process_copy_in): Don't crash when removing leading
	slashes from names that comes from tar files.

	* cpio.c (process_args): Reject --sparse in copy-out mode, allow
	it in copy-in mode.
	(usage): Update help string.

1998-10-09  Franois Pinard  <pinard@iro.umontreal.ca>

	* rename.c: Always include regex.h, never rx.h.
	Reported by Alexandre Oliva, Andreas Schwab, Nelson H. F. Beebe
	and Sakai Kiyotaka.

1998-10-04  Franois Pinard  <pinard@iro.umontreal.ca>

	* create.c (dump_file): Do not call finish_sparse_file when
	sending the archive to the sink.  This avoids `Bad file number'
	messages.
	Reported by Alexandre Oliva, Craig Wiegert, David Lamkin, Gerard
	Hickey and Matthias Urlichs.

	* create.c (create_archive): Avoid producing the increment file
	when sending the archive to the sink.
	Reported by Matthias Urlichs.

1998-10-03  Franois Pinard  <pinard@iro.umontreal.ca>

	* cpio.c, mt.c, pax.c, tar.c: Adjust for combined package name.

	* buffer.c, compare.c, create.c, extract.c, list.c, mangle.c,
	reading.c, tar.c, tar.h: Rename all GNUTYPE_* with OLDGNU_*, and
	GNU_FORMAT by FREE_FORMAT.

1998-09-14  Franois Pinard  <pinard@iro.umontreal.ca>

	* tar.c (usage): Fix typo.
	Reported by Andreas Schwab.

1998-06-25  Franois Pinard  <pinard@iro.umontreal.ca>

	* tar.c (decode_options): Use Cravenly, not Cowardly, in message.
	Reported by Doug Edwards.

1998-06-22  Franois Pinard  <pinard@iro.umontreal.ca>

	* cpio.c, fmttar.c, pax.c, copyout.c, copypass.c, copyin.c,
	global.c, getfile.c, util.c, rename.c: Do not include dstring.h.
	* getfile.c, copyin.c, copyout.c, copypass.c, rename.c, util.c:
	Remove ds_ prefix to field names of dynamic strings.

	* common.h: Declare name_prefix_length.
	* tar.c (decode_options): Compute it.
	* extract.c (extract_archive): Implement --name-prefix.

1998-06-20  Franois Pinard  <pinard@iro.umontreal.ca>

	* misc.c (concat_no_slash, concat_with_slash): New functions, the
	first being a new name for new_name, previously in names.c.  Check
	and diagnose if PATH_MAX is being overflowed.
	* common.h, incremen.c, names.c, misc.c: Usages adjusted.
	* names.c (add_name): Use xgetcwd, instead of self code.
	* system.h: Declare xgetcwd.  Do not declare getcwd.
	* incremen.c (read_directory_file): Use xgetcwd, instead of self
	code.  Also use concat_with_slash.

	* common.h: Rename namelist to name_list_head and namelast to
	name_list_tail.  Add name_list_current, renaming gnu_list_name.
	* names.c: Declare the above variables.
	* incremen.c (incremental_restore): New name for gnu_restore.
	* names.c (add_name): New name for addname.
	* create.c, extract.c, incremen.c, names.c, tar.c: Usages adjusted.

	* buffer.c (is_regular_file): Rename stbuf to stat_info.
	* cdf.c (add_cdf_double_slashes): Rename dir_stat to stat_info.
	* compare.c (get_stat_info): New name for get_stat_data.  Callers
	adjusted.
	(get_stat_info, diff_archive): Rename stat_data to stat_info.
	* copyin.c (process_copy_in): Rename file_stat to stat_info.
	* copyout.c: Rename all file_stat by stat_info.
	* copypass.c: Rename all in_file_stat to stat_info.
	* create.c (write_long): Rename foo to stat_info.
	(start_header): Rename st to stat_info.
	* extract.c (rename_if_dos_device_name): Rename st_buf to stat_info.
	(extract_archive): Rename st, st1 and st2 to stat_info,
	stat_info_1 and stat_info_2.
	* incremen.c (collect_and_sort_names, get_directory_contents):
	Rename stat_data to stat_info.

	* misc.c (remove_any_file): Rename stat_buffer by stat_info.
	* mt.c (check_type): Rename stats to stat_info.
	* update.c (append_file, update_archive): Rename stat_data to stat_info.

1998-06-06  Franois Pinard  <pinard@iro.umontreal.ca>

	* buffer.c (new_volume): Abort processing if info script does not
	complete successfully.
	Reported by Brian J. Murrell.

1998-05-24  Franois Pinard  <pinard@iro.umontreal.ca>

	* system.h: Declare CONSOLE.
	* common.h: Do not declare TTY_NAME.
	* buffer.c, tar.c: Use CONSOLE instead of TTY_NAME.

	* system.h: Declare struct utimbuf.
	* create.c, extract.c: Don't.

	* system.h: Ensure that SEEK_SET, SEEK_CUR and SEEK_END are
	defined, instead of ensuring L_SET, L_INCR and L_XTND.  If needed
	and possible, define the former in terms of the later.
	* buffer.c, compare.c, create.c, delete.c, extract.c: Use these.

	* Makefile.am (bin_PROGRAMS): Include cpio and $extra_bin_progs.
	(libexec_PROGRAMS): Do not include @RMT@, but $extra_libexec_progs.
	(EXTRA_PROGRAMS): Define as mt and rmt.
	(noinst_PROGRAMS): Define as pax.
	(shared_SOURCES, cpio_SOURCES, pax_SOURCES): New definitions,
	taken from cpio's src/Makefile.am.
	(LDADD): Use libpu.a instead of libtar.a.
	(cpio.o, cpio._o, mt.o, mt._o, pax.o, pax._o): New goals.
	* cpio.c: New file, merged from main.c and cpio.c in cpio.
	* pax.c: New file, merged from main.c and pax.c in cpio.
	* ustar.h: New file, from tar.h in cpio.
	* mt.c, util.c: New, from cpio.  Use NULL as fourth argument to
	rmtopen.  Manage to have force_local_option defined as false.
	* argmatch.cpio.c, cdf.c, copyin.c, copyout.c, copypass.c, cpio.c,
	cpio.h, cpiohdr.h defer.c, extern.h, fmtcpio.c fmttar.c, format.c,
	getfile.c, global.c, pax.c, rename.c, rmt.cpio.c, rmt.cpio.h,
	rtapelib.cpio.c, tarhdr.h: New files, from cpio, with slight
	adjustments as needed.
	* system.h: Add UMASKED_SYMLINK for cpio and pax.
	* All new files: Replace TRUE by true and FALSE by false.  Replace
	P_ by PARAMS.  Use prototypes for function headers.
	* ChangeLog: Integrate entries from cpio.

1998-05-17  Franois Pinard  <pinard@iro.umontreal.ca>

	* tar.c (decode_number): New function.
	(decode_options): Use it.
	Reported by Horst von Brand.

1998-05-14  Franois Pinard  <pinard@iro.umontreal.ca>

	* common.h: In struct name, rename regexp to is_wildcard, firstch to
	first_is_literal, found to match_found, and fake as is_chdir.
	Declare them all as being bool.
	* delete.c, incremen.c, names.c, update.c: Adjusted.

1998-04-25  Franois Pinard  <pinard@iro.umontreal.ca>

	* buffer.c (flush_read, flush_write): Make checkpointing more terse.
	(flush_checkpoint_line, output_checkpoint_mark): New routines.
	* common.h: Declare flush_checkpoint_line.
	* tar.c (usage): Adjusted, also tell about --show-omitted-dirs.
	(flush_checkpoint_print_progname): New routine.
	* reading.c (read_and): Call flush_checkpoint_line as needed.
	* buffer.c (open_archive, close_archive, flush_read, new_volume): Idem.
	* compare.c (report_difference, diff_archive): Idem.
	* extract.c (extract_archive): Idem.
	* incremen.c (gnu_restore): Idem.
	* list.c (print_header, print_for_mkdir): Idem.
	* misc.c (maybe_backup_file, undo_last_backup): Idem.
	* tar.c (confirm, get_reply): Idem.

1998-04-22  Franois Pinard  <pinard@iro.umontreal.ca>

	* Makefile.am (LDADD): Do not include INTLLIBS.
	(INCLUDES): Do not include from ../intl.
	(localedir): Use share instead of DATADIRNAME.

	* system.h [ENABLE_NLS]: Include gettext.h rather than libintl.h.

1998-04-01  Franois Pinard  <pinard@iro.umontreal.ca>

	* create.c (dump_file): Use hashing to discover hard linked files,
	instead of linear search.  This can save hours in some big dumps.
	Reported by Greg Lehey.

	* names.c: Do not anymore include <pwd.h> nor <grp.h>.

1998-03-26  Franois Pinard  <pinard@iro.umontreal.ca>

	* create.c (dump_file): While padding shrunk files, do not add a
	spurious zero block.  Get rid of labels and gotos.
	Reported by Egil Kvaleberg.

1998-03-13  Franois Pinard  <pinard@iro.umontreal.ca>

	* common.h: Renamed after_date_option to newer_ctime_option.
	* incremen.c, tar.c: Adjusted.

1998-03-09  Franois Pinard  <pinard@iro.umontreal.ca>

	* common.h: Include backupfile.h.
	* misc.c, tar.c: Don't.
	* misc.c: Allocate backup_type.
	(maybe_backup_file): Use it.
	* common.h: Declare backup_type.
	* tar.c (decode_options): Turn off backup if backup_type is none.

	* common.h, incremen.c, tar.c: Rename newer_mtime_threshold to
	time_option_threshold.  It was misleading when applied to ctime.

	* common.h (FILE_IS_NEW_ENOUGH): Corrected wrong logic.
	Reported by Eli Zaretskii.

1998-03-07  Eli Zaretskii  <eliz@is.elta.co.il>

	* All: Replace MSDOS by DOSWIN in preprocessor directives.
	* system.h [MSDOS, WIN32]: Lump these into a single DOSWIN class,
	and supply some auxiliary definitions for WIN32.
	* create.c, extract.c [DOSWIN]: Include sys/utime.h.

1998-03-04  Franois Pinard  <pinard@iro.umontreal.ca>

	* common.h: Declare TTY_NAME back here, instead of in tar.c.
	Undoes 1997-11-07.  buffer.c (new_volume) [MSDOS]: needs it.
	Reported by Eli Zaretskii.

	* create.c (start_header) [MSDOS]: Remove redundant call to
	sprintf.
	Reported by Eli Zaretskii.

	* buffer.c, compare.c [MSDOS]: Adjustments for previous variable
	name changes.
	Reported by Eli Zaretskii.

1998-02-19  Franois Pinard  <pinard@iro.umontreal.ca>

	* buffer.c (open_archive): Make sure we don't get handles for
	local files which are larger than 128, and thus deemed to be
	remote.  Also use rmtfstat instead of fstat.
	Reported by Eli Zaretskii.

	* compare.c (diff_archive): Diagnose the link name, not the file
	name, when stat fails for the link name.
	Reported by Eli Zaretskii.

1998-02-18  Franois Pinard  <pinard@iro.umontreal.ca>

	* extract.c (extract_archive): Do not diagnose the removal of a
	leading slash, when extracting to standard output.
	Reported by Eli Zaretskii.

	* extract.c (extract_archive): While extracting directories,
	handle --unlink-first like for any other type of file.
	Reported by Eli Zaretskii.

1998-02-17  Franois Pinard  <pinard@iro.umontreal.ca>

	* extract.c (make_directories): Continue when permission denied.
	Reported by Graham Catchpole and Torsten Naumann.

1998-02-16  Eli Zaretskii  <eliz@is.elta.co.il>

	* buffer.c [MSDOS]: Write something to the archive and fsync the
	handle, to make sure the archive won't be dumped into itself.  Look at
	st_ino when comparing to stat results from /dev/null.
	(child_open_for_compress, child_open_for_uncompress) [MSDOS]:
	Support for compressed archives on MS-DOS and MS-Windows.
	(close_archive) [MSDOS]: Support compressed archives.

	* buffer.c [MSDOS]: Declare ar_dev and ar_ino just as well.
	In no case ever switch console device to binary mode.
	(flush_write, flush_read) [MSDOS]: Test the drive letter before
	the colon, to make sure it is a valid drive letter.
	(close_archive) [MSDOS]: Use ftruncate, instead of rmtwriting
	the empty string.
	(new_volume) [MSDOS]: Save standard streams when spawning the
	child shell, and restore them after it returns.  When the new
	volume name is -, use stdin/stdout.  Use system instead of spawnl.

	* compare.c (get_stat_data) [MSDOS]: Set st_rdev to st_dev.
	(diff_two_files) [MSDOS]: New function, used on MS-DOS to compare
	with links which are simulatd by copying files.
	(mode_differs): New function on MS-DOS, macro for Unix.
	(uid_differs, gid_differs): New macros, compare UIDs and GIDs.
	(diff_archive): Use _differs functions above, and time_compare.
	Set O_BINARY on	open for compared file.
	[MSDOS]: Support --diff for simulated links.  Adjust messages'
	text to the links simulation by copying.  Don't compare inodes of
	the links, since they always differ on MS-DOS.
	(verify_volume) [MSDOS]: Flush any disk caches.

	* create.c [MSDOS]: Include <pwd.h> and <grp.h> just as well.
	Declare ar_dev and ar_ino just as well.
	(start_header) [MSDOS]: Make it so tar warns about removal of both
	drive letter and the leading slash from absolute file names.
	(dump_file) [MSDOS]: Avoid dumping the archive into itself, as well.

	* extract.c (make_directories) [MSDOS]: Avoid making root
	directory on any drive.
	(msdosify_file_name) [MSDOS]: New function.
	(maybe_recoverable) [MSDOS]: Call it when extraction fails.  Print
	a message about renamed files when verbose.
	(rename_if_dos_device_name) [MSDOS]: New function.
	(extract_archive) [MSDOS]: Call it.  Skip DOS drive letter in
	absolute file names.  Write redirected stdout in binary mode.
	Don't check inodes for simulated links.  Don't zap trailing slash
	in DOS root directories given as "d:/".  Don't panic if we get
	EACCES when trying to create an existing directory.

	* incremen.c (read_directory_file) [MSDOS]: Take care of a DOS
	drive letter in --listed-incremental file name.

	* misc.c (maybe_backup_file) [MSDOS]: Don't back up non-regular files.

	* names.c (name_next) [MSDOS]: Mirror DOS-style backslashes into
	UNix-style forward slashes.  Don't zap trailing slash in root
	directories given with a drive letter "d:/".
	(addname) [MSDOS]: Support DOS-style file names with drive letters.

	* rmt.h (_remdev) [MSDOS]: Don't treat "d:/foo/bar" as remote file
	specification.
	(__REM_BIAS) [MSDOS]: Make the bias be 256 for DJGPP.
	(EOPNOTSUPP): Define to ENOSYS or, if undefined, to EINVAL.
	* rtapelib.c (EOPNOTSUPP): Remove definition.

	* system.h [MSDOS]: Include <time.h>.
	(S_ISUID, S_ISGID, S_ISVTX) [MSDOS]: Define them only if they
	aren't already undefined by system headers.
	(major, minor, makedev) [MSDOS]: Just rely on common fallback.

	* tar.c (usage) [MSDOS]: Advertise -N and --newer-mtime.
	(restore_original_directory) [MSDOS]: New function.
	(decode_options) [MSDOS]: Convert the argument to -C to Unix-style
	forward slashes and make default directories in "d:foo" pathnames
	explicit.  Remember original working directory to restore it at
	exit.  Arrange for restore_original_directory to be called at exit.
	Enable -N and --newer-mtime options.
	[MSDOS]: Mirror any backslashes in file names to forward slashes.
	Use explicit .exe suffixes in names of gzip and compress programs.
	(main) [MSDOS]: Remove the directories from argv[0] and drop the
	.exe suffix, so the test suite works.

	* misc.c (time_compare) [MSDOS]: New function.
	* common.h (time_compare) [MSDOS]: Prototype.  [!MSDOS]: Macro.
	(FILE_IS_NEW_ENOUGH): Use it.
	* reading.c (read_and): Use it.
	* update.c (update_archive): Use it.

1998-02-12  Franois Pinard  <pinard@iro.umontreal.ca>

	* common.h: Declare update_option.
	* tar.c (decode_options): Transform a create subcommand into an
	update subcommand if -u was specified with -c, implied or not, or
	else, issue a diagnostic if the subcommand is not -x.
	FIXME: To be completed.

1998-02-11  Franois Pinard  <pinard@iro.umontreal.ca>

	* rtapelib.c: Comment out the rexec declaration, as UNICOS barfs
	at it.
	Reported by Mike Kienenberger.

	* system.h: Reorganised a few #if to avoid negating the test.

	* buffer.c, compare.c, create.c, extract.c, incremen.c, list.c,
	mangle.c, names.c, reading.c: Correction of some messages.
	Reported by Santiago Vila Doncel.

	* buffer.c (flush_read): Use a more descriptive message when
	adjusting the block size from the archive.
	Reported by Karl Berry.

1998-01-29  Tom Tromey  <tromey@cygnus.com>

	* fmtcpio.c (write_out_oldascii_header): Don't pass variables of
	type dev_t to sprintf; cast to int first.  From Eric Backus.

1998-01-08  Franois Pinard  <pinard@iro.umontreal.ca>

	* arith.h: Declare tarcell as an unsigned int or an unsigned long,
	replace LONGS_PER_TARLONG by CELLS_PER_TARLONG, and many unsigned
	long by tarcell.  Some compilers do not support unsigned longs.
	* arith.c: Adjusted accordingly.
	Reported by Alexandre Oliva.

1997-12-21  Franois Pinard  <pinard@iro.umontreal.ca>

	* common.h, tar.c, extract.c: Implement --no-attributes.

	* system.h: Include <stdbool.h> or use a replacement.
	* All: Use bool, false and true instead of int, 0 and 1, whenever
	appropriate.

	* tar.c (usage): Correct description of --checkpoint.

1997-11-09  Franois Pinard  <pinard@iro.umontreal.ca>

	* tar.c (confirm): Accepts a format and an argument, instead of
	two words, for allowing more effective translation.
	* create.c (dump_file): Caller changed.
	* extract.c (extract_archive): Caller changed.
	* incremen.c (gnu_restore): Caller changed.
	* update.c (update_archive): Caller changed.

1997-11-07  Franois Pinard  <pinard@iro.umontreal.ca>

	Changes so -M prompting will not consume file list given in -T-.
	* tar.c: Declare TTY_NAME here instead of in common.h.
	(request_stdin): Make static.
	(get_reply): New function.
	* common.h: Declare STDIN and STDOUT here instead of in buffer.c.
	* tar.c (decode_options): Request stdin right after -T- or -X-.
	* names.c (name_init, add_exclude_file): Do not request stdin.
	* tar.c (confirm): Rewritten to use get_reply.
	* buffer.c (new_volume): Rewritten to use get_reply.
	Reported by Horst-W. Radners.

1997-11-04  Franois Pinard  <pinard@iro.umontreal.ca>

	* common.h: Delete newer_ctime_option, rename newer_mtime_option
	to newer_mtime_threshold, add newer_mtime_option as boolean.  It
	was wrong using a zero value as a lower bound to imply the time
	options were not set, as there are negative dates around, at least
	on some Solaris CD-ROMs, SAMBA mounted files, or on systems using
	dates after year 2038.
	(FILE_IS_NEW_ENOUGH): New macro.
	* buffer.c, create.c, incremen.c, tar.c: Adjusted.
	Reported by Ahmon Dancy, David Coffin, Denis Excoffier, Jon Lewis,
	Mark Eichin, Richard Racz, Robert E. Brown, Stephan Engelke,
	Stephen K Degler and Thomas Koschny.

	* tar.c (check_decimal): Deleted.

1997-11-02  Franois Pinard  <pinard@iro.umontreal.ca>

	* header.c: New module, for get_header and set_header routines.
	* buffer.c, compare.c, create.c, extract.c, list.c, reading.c:
	Use these routines, instead of to_octal and from_octal.
	* create.c (to_octal): Deleted, as functionality now in header.c
	* reading.c (from_octal): Idem.
	* common.h, Makefile.am: Adjusted.

1997-11-01  Franois Pinard  <pinard@iro.umontreal.ca>

	* tar.h (BLOCKSIZE): Cast to size_t.
	* common.h: In struct name, declare length as size_t and specify
	dir_contents as const.  Declare numbytes as size_t in sp_array.
	(record_size): Declare as size_t instead of int.
	* buffer.c, create.c, compare.c, delete.c, extract.c, incremen.c,
	list.c, mangle.c, names.c, update.c, reading.c, rmt.c, rmt.h,
	rtapelib.c, update.c: Add needed const.  Declare some long
	variables or parameters as off_t, some int as size_t or ssize_t,
	or else, dev_t, mode_t or pid_t.  Remove unneeded casts.  Use %lu
	instead of %d in some formats, with appropriate casts.
	Reported by Florian La Roche, John Bley and Paul Eggert.

	* rmt.c: Remove all gotos, and some cleanup.

1997-10-31  Franois Pinard  <pinard@iro.umontreal.ca>

	* arith.c (add_to_tarlong_helper, mult_tarlong_helper): Declare
	the addend or multiplicand to be unsigned long instead of int.
	* arith.h: Adjust prototypes and usage.  Also, when using long
	long, declare them unsigned.
	Reported by Paul Eggert.

	* tar.c (decode_options, usage): Warn that option names --gunzip,
	--ungzip and --uncompress are getting obsolescent.

	* common.h, create.c, buffer.c, compare.c, extract.c, list.c,
	reading.c: Rename from_oct and to_oct to from_octal and to_octal.

1997-10-24  Franois Pinard  <pinard@iro.umontreal.ca>

	* system.h: Check S_ISLNK for defining lstat only once having
	given it some chance to be defined out of S_IFLNK, not before.
	Otherwise links might sometimes be followed even without -h.

	Reported by Bernhard Simon, Frank Roscher, Georg Schwarz, Helmut
	Heller, James E. Quick, John Klug, Hermann Lauer, Merlin
	J. Mathesius, Michael Pakovic, Norman Kysler, Rex Dieter, Rob
	Urban and Tony Lill.

1997-10-20  Franois Pinard  <pinard@iro.umontreal.ca>

	* rmt.c (private_strerror): Declare the result to be const.
	Reported by Chun-Hsiung Chiu.

	* compare.c (verify_volume): Use two messages, do not try sticking
	plural and singular forms together in a single message.
	Reported by Vladimir Michl.

	* compare.c (verify_volume): Remove a spurious semicolon after a
	while, possibly causing an infinite loop.
	Reported by Paul Green.

1997-10-10  Tom Tromey  <tromey@cygnus.com>

	* pax.c (long_opts): Fix typo.
	(usage): Likewise.

	* Makefile.am (EXTRA_PROGRAMS): Added pax.
	(bin_PROGRAMS): Removed pax.

1997-08-06  Franois Pinard  <pinard@iro.umontreal.ca>

	* rtapelib.c: Add rmt_program_array, in so introducing the try of
	/sbin/rmt before /etc/rmt.
	(do_rexec, rmt_open__): Use it.
	Reported by Florian La Roche.

	* rtapelib.c (do_shutdown): New name for _rmt_shutdown.
	(do_rexec): New name for _rmt_exec.

1997-08-02  Franois Pinard  <pinard@iro.umontreal.ca>

	* common.h: Declare name_prefix_option.
	* tar.c: Declare NAME_PREFIX_OPTION, decode it, document it.
	* create.c (start_header): Implement it.
	Reported by Eric S. Raymond.

1997-07-15  Franois Pinard  <pinard@iro.umontreal.ca>

	* tar.c (main): Rephrase message about delayed error exit.
	From Karl Berry.

1997-06-30  Franois Pinard  <pinard@iro.umontreal.ca>

	* misc.c (remove_any_file): In the recursive case, ensure the
	deletion loop does not stop at . or .., but merely skips the entry.
	Reported by Ali Erkan, Eli Zaretskii, Gran Uddeborg, Gordon
	H. Atwood, Greg Herman, Hirofumi Yamaki, Jeff DeFouw, Joh Dokler,
	Peter Bloom, Peter Kohler, Sebastian Unger and Todd Rannow.

1997-06-18  Franois Pinard  <pinard@iro.umontreal.ca>

	* names.c (name_init): Use -T file in message, to not segfault.
	Reported by Florian La Roche, Paul Colin De Verdire, Paul Eggert
	and Stephen J. Friedl.

1997-06-06  Franois Pinard  <pinard@iro.umontreal.ca>

	* system.h: Define L_* symbols as required, for lseek and rmtlseek.
	* buffer.c, compare.c, create.c, delete.c, extract.c: Use them.

	* system.h: If system calls may be restarted, define full_read as
	read and full_write as write.  Else, declare their prototype.
	* buffer.c, compare.c, create.c, rmt.c, rmt.h, rtapelib.c,
	update.c: Call full_read instead of read.
	* buffer.c, extract.c, rmt.c, rmt.h, rtapelib.c: Call full_write
	instead of write.
	Reported by Bob Forsman, Bruno Haible, Chris Metcalf, Greg McGary
	and Thomas Knig.

	* arith.c (add_to_tarlong_helper): Consider the case where added
	value is bigger than what a superdigit may hold, as this happens
	in practice.  Get rid of the negative case, currently unused.
	Reported by Alexandre Oliva, Brendan O'Dea, Helmut Heller and Paul
	Eggert.

1997-06-05  Franois Pinard  <pinard@iro.umontreal.ca>

	* reading.c (read_header): Clean up and many tiny changes.
	Accepts a tar_entry argument to modify instead of changing global
	variables, save recognised format in it.  Do more sensible
	allocation for name and linkname.  Do not loose the 100th
	character anymore, do allocate the memory for accomodating a NUL
	for long names or linknames, and probably such other tiny bugs.
	Callers changed.
	(decode_header): Clean up.  Replace three arguments by one
	tar_entry.  Do not decode format again.  Callers changed.
	(print_header): Accepts a tar_entry argument to print instead
	of relying on global variables.  Callers changed.

	* list.c (read_and): Rename prev_status to previous_status, and
	save_typeflag to saved_typeflag.

	* reading.c: New file, split out of list.c.
	* common.h, Makefile.am: Adjusted.
	* common.h, compare.c, create.c, delete.c, extract.c, incremen.c,
	list.c, mangle.c, update.c: Introduce struct tar_entry and
	variable current, rename current_format, current_header,
	current_stat, current_file_name and current_link_name to
	current.format, current.block, current.stat, current.name and
	current.linkname.

1997-06-03  Franois Pinard  <pinard@iro.umontreal.ca>

	* list.c (read_header): If the header is properly POSIX, decode
	file names the POSIX way.
	Reported by Amos Gouaux, Andrew Dunstan, Bruno Haible, Carsten
	Heyl, Eric Tomio, Erik E. Rantapaa, Igor Sobrado Delgado, Lorenzo
	Di Gregorio, Manabu Nakamura, Michael Helm, Olivier Lefevre, Peter
	Waltenberg, Robert Zawiasa, Scott Bertilson, Shimon Facterman,
	Sriram Srinivasan and Tanya Ruttenberg.

	* arith.h (TARLONG_FORMAT): Use %lu instead of %uld as a format
	for unsigned long.
	* arith.c (print_tarlong_helper): Idem.
	Reported by Alexandre Oliva, Andreas Zeller, Brendan O'Dea, Dale
	Hirchert, Ed DeRivas, Garret Brady, Helmut Heller, Howard Bampton,
	Jrg Schilling, Paul Eggert and Robert E. Brown.

	Manage so compression work on DOSish systems.
	* buffer.c [!HAVE_PIPE]: [!HAVE_POPEN]: Include our own popen.h.
	(child_open_for_compress, child_open_for_uncompress) [!HAVE_PIPE]:
	Use popen.
	(close_archive) [!HAVE_PIPE]: Use pclose.
	Reported by John Gatewood Ham.

1997-06-02  Franois Pinard  <pinard@iro.umontreal.ca>

	Do not limit the cache to one user and one group, use module
	idcache.c instead.  This indirectly solves a problem where IDs
	unresolved symbolically were not detected as such.  It also solves
	the need to cache non-existing entries, as well existing ones.
	* tar.c (decode_options): Use getgidbyname instead of gname_to_gid.
	* create.c (start_header): Use getuser and getgroup instead of
	uid_to_user and gid_gname.
	* list.c (decode_header): Use getuidbyname and getgidbyname
	instead of uname_to_uid and gname_to_gid.
	* system.h: Declare idcache.c functions.
	* names.c (uid_to_uname, uname_to_uid, gid_to_gname, gname_to_gid):
	Deleted.
	* common.h: Remove declarations for functions deleted in names.c.
	Reported by Clive Stubbings, Dieter Ntzel, Emmanuel Galanos,
	Felix von Leitner, Hao He, Ilya Dorfman, James E. Carpenter,
	Jrgen Christoffel, Michael Bickel, Paul Sheer, Tobias Ringstrom
	and Ulrich Drepper.

	* tar.c (decode_options): Let --owner and --group correctly accept
	a numeric uid/gid.  There was an oversight in operator priorities.
	Reported by Andreas Schwab and Eli Zaretskii.

	* tar.c (decode_options): Let --owner accept user.group notation,
	as already does chown.
	Reported by Andreas Schwab.

1997-05-01  Franois Pinard  <pinard@iro.umontreal.ca>

	* tar.c (usage): Correct an orthographical mistake.
	Reported by Karl Heuer.

1997-04-30  Franois Pinard  <pinard@iro.umontreal.ca>

	* arith.c (mult_tarlong_helper): Use unsigned long, not int, to
	carry intermediate results.

1997-04-29  Franois Pinard  <pinard@iro.umontreal.ca>

	* tar.c (usage): Change bug reporting address.

1997-04-28  Franois Pinard  <pinard@iro.umontreal.ca>

	* tar.c (usage): English correction.
	Reported by Karl Berry.

1997-04-25  Franois Pinard  <pinard@iro.umontreal.ca>

	* Release tar 1.12.

	* tar.c (main): Attempt to clarify the delayed error exit message.
	Reported by Richard Stallman.

	* list.c (decode_mode): New name for demode.

	* list.c (read_and): Set current_stat.st_mtime before testing it.
	Reported by Sven Verdoolaege.

1997-04-24  Franois Pinard  <pinard@iro.umontreal.ca>

	* create.c (dump_file): Before asserting that we cannot access
	a directory, make sure tar is not installed suid root.
	Reported by Dietmar Braun.

	* misc.c (quote_copy_string): Undo 1996-05-02 change, meant for
	the file mangler, now obsolete.  This will do neater listings.
	Reported by Max Hailperin and Noah Friedman.

	* buffer.c, incremen.c, misc.c, tar.c: Replace dangling semicolons
	by continue; or break; depending on context.
	Reported by Robert E. Brown.

1997-04-23  Franois Pinard  <pinard@iro.umontreal.ca>

	* arith.c (add_to_tarlong_helper): Compare a superdigit against a
	value, rather than an unsigned sum against zero.
	Reported by Bruno Haible.

	* misc.c (quote_copy_string): Replace many if's by a switch.

1997-04-22  Franois Pinard  <pinard@iro.umontreal.ca>

	* extract.c (extract_archive): Check if directory extraction was
	attempted over an existing directory before attempting recovery,
	so avoiding extraction loops in cases like DIR/../DIR.
	Reported by Marc Boucher.

	* delete.c (delete_archive_members): New name for junk_archive.
	* common.h, tar.c (main): Adjusted.

1997-04-20  Franois Pinard  <pinard@iro.umontreal.ca>

	* tar.c (usage): Update comment about --mode.

1997-04-19  Franois Pinard  <pinard@iro.umontreal.ca>

	* buffer.c: Include <fnmatch.h> if necessary.
	Reported by Bruno Haible.

	* common.h: Declare write_dir_file for incremen.c.
	Reported by Bruno Haible.

	* incremen.c (get_directory_contents): Nest an assignment and test
	within another set of aesthetical parentheses.
	Reported by Bruno Haible.

	* tar.c (check_octal): Deleted.
	Reported by Bruno Haible.

	* buffer.c (flush_archive): Add one impossible switch case.
	* delete.c (junk_archive): Add two impossible switch cases.
	* list.c (read_and): Add one impossible switch case.
	* update.c (update_archive): Add two impossible switch cases.
	Reported by Bruno Haible.

	* names.c (name_gather): Explicitly declare allocated_length as
	an int, do not imply it.
	Reported by Bruno Haible.

1997-04-18  Franois Pinard  <pinard@iro.umontreal.ca>

	* Makefile.am (tar._o, rmt._o): Revise rules further.
	Reported by Bruno Haible and Ken Steube.

1997-04-16  Franois Pinard  <pinard@iro.umontreal.ca>

	* arith.h: Prefer a single long over a long long, if possible.
	Also reject long long if it is not long enough :-).
	Reported by Bruno Haible.

1997-04-15  Franois Pinard  <pinard@iro.umontreal.ca>

	* buffer.c, tar.c, update.c, common.h: Replace _COMMAND suffixed
	constants by _SUBCOMMAND suffixed.  Rename enum command by
	enum subcommand, main_command_option by subcommand_option and
	set_main_command_option by set_subcommand_option.

	* create.c (dump_file): Remove badperror label, call WARN
	explicitly at the two other needed places instead.  Remove
	badfile label, expand the proper code at the three other
	needed places instead.	Delete the critical_error flag, just
	set exit_status to TAREXIT_FAILURE rather than setting this flag.

1997-04-13  Tom Tromey  <tromey@cygnus.com>

	* copypass.c (copy_pass_one_file): Conditionalize use of lchown on
	HAVE_LCHOWN.
	* copyin.c (process_copy_in): Conditionalize use of lchown on
	HAVE_LCHOWN.

1997-04-12  Franois Pinard  <pinard@iro.umontreal.ca>

	* delete.c (move_archive): Declare it void.
	Reported by Bruno Haible and Kaveh R. Ghazi.

1997-04-11  Franois Pinard  <pinard@iro.umontreal.ca>

	* Makefile.am: Duplicate rules for the ansi2knr case.
	Reported by Kaveh R. Ghazi and Marcus Daniels.

1997-04-10  Franois Pinard  <pinard@iro.umontreal.ca>

	* common.h: Change mode_option from int to struct mode_change *.
	* tar.c (decode_option): Use mode_compile.
	* create.c (start_header): Use mode_adjust.

1997-04-09  Franois Pinard  <pinard@iro.umontreal.ca>

	* All: Replace all flag_ prefixed variables by _option suffixed.
	* tar.c: Replace OPTION_ prefixed macros by _OPTION suffixed.

	* buffer.c, tar.c, update.c, common.h: Replace COMMAND_ prefixed
	macros by _COMMAND suffixed, COMMAND_NONE by UNKNOWN_COMMAND,
	and delete TOO_MANY_COMMAND.  Turn these into an enum and declare
	main_command_option of this enum type, to replace command_mode,
	which was an int, everywhere.
	* tar.c (decode_options): Initialise main_command_option.
	(set_main_command_option): New function to replace
	SET_COMMAND_MODE.  Diagnostic ambiguous command as soon as seen.
	However, be forgiving if command has merely been repeated.

	* buffer.c, tar.c, common.h: Have info_script_option be at the
	same time a flag and the option value, no need for a separate
	info_script variable.  Rename rsh_command to rsh_command_option,
	tape_length to tape_length_option, compress_program to
	use_compress_program_option, volno_file to volno_file_option.
	* tar.c (set_use_compress_program_option): New function.

	* buffer.c, names.c, tar.c, common.h: Have files_from_option
	be at the same time a flag and the option value, no need for
	a separate namefile_name variable.

	* buffer.c, create.c, tar.c, commun.h: Rename volume_label to
	volume_label_option.

	* incremen.c, tar.c, common.h: Rename gnu_dumpfile to
	listed_incremental_option.  Let it unitialised for just incremental.
	* create.c (create_archive): No need to check both
	incremental_option and listed_incremental_option, as the later
	implies the former already.

	* create.c, tar.c, common.h: Rename preset_owner to owner_option,
	preset_group to group_option and preset_mode to mode_option.

	* create.c, incremen.c, list.c, tar.c, commun.h: Have
	after_date_option be a Boolean instead of a three-valued flag.
	Rename threshold_time to newer_mdate_option, which may be looked
	at without checking after_date_option first, as threshold_time
	before.  Make newer_cdate_option an alias for newer_mdate_option.

1997-04-08  Franois Pinard  <pinard@iro.umontreal.ca>

	* buffer.c: Use int after extern to declare time_to_start_writing.
	* extract.c: Use int after static to declare we_are_root.
	Reported by Ariel Faigon.

1997-04-03  Franois Pinard  <pinard@iro.umontreal.ca>

	* list.c (read_and): Use the proper enum constants in switch,
	instead of oldish and wrong numbers.
	Reported by Martin Mares.

1997-04-01  Franois Pinard  <pinard@iro.umontreal.ca>

	* arith.c [SUPERDIGIT] (zerop_tarlong, lessp_tarlong,
	clear_tarlong, add_to_tarlong, add_to_tarlong, mult_tarlong,
	print_tarlong): Rename all functions by adding a _helper suffix.
	* arith.h [SUPERDIGIT]: Replace function prototypes by macros,
	each calling the function with _helper appended, and extracting
	pointers out of the tarlong structures.
	Reported by Andrew A. Ivanov and Kaveh R. Ghazi.

	* buffer.c (child_open_for_compress): Copy all records coming out
	of the compressor, not only the last one.
	Reported by Alois Steindl, Mark Bynum, Martin Mares, Nelson
	H. F. Beebe, Scott J. Kramer and Torkel Hasle.

1997-03-29  Franois Pinard  <pinard@iro.umontreal.ca>

	* create.c (dump_file): Ignore unreadable directories when
	--ignore-failed-read.
	Reported by Ralph Schleicher.

	* create.c (deal_with_sparse): Chain the last partial zero block
	with the preceding data, do not try sparing it.  This correction
	is approximative, as the whole thing should be rethought.
	Reported by Andreas Degert.

1997-03-24  Franois Pinard  <pinard@iro.umontreal.ca>

	* All: Rename head to current_header, hstat to current_stat, and
	header_format to current_format.
	* update.c (update_archive): Rename nstat to stat_data.
	* create.c: Do not extern hstat, as common.h does it.
	(deal_with_sparse): Get rid of amidst_data, since numbytes is
	already usable as a flag for the same thing.

1997-03-21  Franois Pinard  <pinard@iro.umontreal.ca>

	* names.c (name_gather): Do not declare static variables which
	do not need to be.  Have allocated_length represent the full
	allocated length, instead of only the name part.  It's clearer.
	(addname): Similar cleanups.

1997-03-20  Franois Pinard  <pinard@iro.umontreal.ca>

	* compare.c: Always call report_difference when there is a
	problem, so the exit status will be set in all cases.  Build the
	message string if necessary, so avoiding stdargs/varargs.
	(report_difference): If NULL argument, just set the exit status
	without reporting a message.  Move out the word `differs'
	in all callers, do not insert into an English message.
	(read_and_process): Return void, as the int result is never used.
	Assume processors returns nonzero for success and zero for
	failure, instead of 0 for success and -1 for error.
	(process_rawdata, process_dumpdir): Adjusted.

	* compare.c: Remove different as a global variable, it is useless.
	(diff_sparse_files): Make different a local variable, reinitialise
	it on each call.  Otherwise, after any error elsewhere, all sparse
	files were always and falsely reported as erroneous.
	Reported by James E. Carpenter and Tim Towers.

1997-02-25  Franois Pinard  <pinard@iro.umontreal.ca>

	* tar.c: Adjust copyright years in --version output.

	* create.c (dump_file): Allow saving directories even with -o.
	Reported by Daniel Trinkle.

1997-01-26  Tom Tromey  <tromey@cygnus.com>

	* cpio.c (process_args): Miscellaneous error fixes.

1996-12-30  Tom Tromey  <tromey@cygnus.com>

	* copyin.c (create_final_defers): Removed statement that could
	cause infinite loop.  From Ronald F. Guilmette.

1996-11-26  Franois Pinard  <pinard@iro.umontreal.ca>

	* compare.c (verify_volume) [FDFLUSH]: Use fsync even in that case.
	Reported by Marty Leisner.

1996-11-25  Franois Pinard  <pinard@iro.umontreal.ca>

	* buffer.c (new_volume): Write file name in two words.
	* names.c (name_next): Idem.
	* buffer.c (flush_read): Speak of record size instead of blocksize.
	Reported by Christian Kirsch.

1996-11-22  Franois Pinard  <pinard@iro.umontreal.ca>

	* list.c (read_header): Return failure, instead of success,
	whenever checksums do not match.
	Reported by Marc Boucher and Marty Leisner.

	* incremen.c (get_directory_contents): Use stat_data instead of
	current_header for checking normal files.  Otherwise, new or
	modified files in old directories were not dumped, that is, if a
	directory was older than the listed entry, it was skipped
	completely without checking the contained files.
	Reported by David Johnson, John David Anglin and Wolfram Wagner.

	* buffer.c (open_archive): When updating the archive, initialize
	the access variable with reading mode, not update mode.
	Reported by Andreas Schwab.

	* delete.c (junk_archive): Initially jump directly into the loop,
	so deleting a file after a big one will not destroying the archive.
	Reported by Akiko Matsushita, Andreas Schwab, Eric Backus, Jeff
	Siegel, Saul Lubkin, Stuart Kemp and Yasushi Suzudo.

1996-11-19  Franois Pinard  <pinard@iro.umontreal.ca>

	* incremen.c (get_directory_contents): Compute distance using the
	start of the proper buffer.
	Reported by David Johnson, Donald H. Locker, John David Anglin,
	Marc Boucher and Noah Friedman.

	* tar.c (usage): Revise the mandatory/optional sentence again.
	Reported by Karl Berry.

1996-11-18  Franois Pinard  <pinard@iro.umontreal.ca>

	* tar.c (usage): Explain the purpose of the program.

	* tar.c (usage): Clarify the mandatory/optional sentence.
	Reported by Alex Schmidt.

	* system.h [HAVE_SYS_TAPE_H]: Include sys/buf.h if it exists, to
	avoid many warnings on BSD/OS.
	Reported by Dan Reish.

1996-11-18  Tom Tromey  <tromey@cygnus.com>

	From Han Holl:
	* copyin.c (process_copy_in): Typo fix; use minor device number in
	argument to link_to_maj_min_ino.

1996-11-11  Franois Pinard  <pinard@iro.umontreal.ca>

	* incremen.c (write_directory_file): Renamed from write_dir_file.
	(get_directory_contents): Renamed from get_dir_contents.
	* common.h: Adjusted.

	* all: Cleanup around local variables, renaming them more
	appropriately, using initializers when natural, and moving them
	closer to the blocks where they are used.

	A bit of reorganisation in the sources:
	* common.h: New file, for holding all tar specific definitions,
	which were previously held in tar.h.
	* tar.h: Now limited to the archive format description only.
	* all: Include common.h instead of tar.h.
	* delete.c: New file, holding delete code out of update.c.
	* update.c: Now limited to appending type of commands.
	* compare.c: New name for diffarch.c.
	* incremen.c: New name for increm.c.
	* names.c: Moved over all name processing from tar.c.
	* tar.c, common.h: Adjusted.
	* Makefile.am: Adjusted.

	* system.h (lstat) [!S_ISLNK]: Define as stat.
	* create.c, diffarch.c, increm.c: Remove similar definitions.

	* tar.c: Merge --version-control into --backup, make it obsolete.

1996-11-10  Franois Pinard  <pinard@iro.umontreal.ca>

	* all: Add a FIXME comment everywhere errno is modified by tar.

	* buffer.c (new_volume): Return nonzero/zero for success/failure,
	instead of zero/negative.  Callers adjusted.  Use xstrdup on
	file name given by user with the answer "n", so avoiding the
	apparently useless allocation of one extra byte.  Avoid using p.

	* buffer.c: Add DEBUG_FORK conditional code.
	Reported by Thomas Knig and Ulrich Drepper.

	* misc.c (maybe_backup_file): In the renaming message, say that
	the previous file is being renamed, not the newly extracted one.

	* buffer.c (backspace_output): Change return type to void, since
	returned values were never used.
	* update.c (move_arch): Idem.
	(xdup2): New name for redirect, order of arguments was not natural.

1996-11-09  Franois Pinard  <pinard@iro.umontreal.ca>

	* all: Remove all white lines between open braces and comments.

	* tar.h: Declare access_mode as an enum and as a variable.
	Adjust declaration of open_archive.
	* buffer.c: (open_archive, new_volume): Use access instead of
	reading.  Callers adjusted for using enum access_mode arguments.
	(flush_archive, close_archive): Use access_mode, and cleanup.
	* diffarch.c (verify_volume): Use access_mode.

	* buffer.c (child_open_for_compress, child_open_for_uncompress):
	Split of previous child_open_for_compress.  Clean up.
	(open_archive): Adjusted for calling the proper function above.

1996-11-09  Franois Pinard  <pinard@iro.umontreal.ca>

	* tar.c (usage): Do not tie --posix anymore to 1.12.

	* extract.c (set_stat): Until we know better, for the time being,
	limit restoring symbolic link attributes to lchown only.

	* all: Mini clean up.  Systematically set logical variables to
	one instead of auto-incrementing them (PDP-11 time is over by
	now! :-).  Replace some single letter counters or cursors by
	variables named counter or cursor.  Simplify a few C constructs.

	* buffer.c, tar.h: Delete read_error_flag, set but never used.
	Rename r_error_count to read_error_count.

	* create.c (clear_buffer): Use memset instead of explicit loop.
	(zero_block_p): Renamed from zero_block, callers adjusted.

1996-11-07  Franois Pinard  <pinard@iro.umontreal.ca>

	* rmt.c (private_strerror): Add const's to sys_errlist declaration.
	Reported by Fabio d'Alessi.

1996-11-06  Franois Pinard  <pinard@iro.umontreal.ca>

	* tar.h: Add OPTION_BACKUP, OPTION_SUFFIX, OPTION_VERSION_CONTROL.
	Renumber options from 3 instead of from 10.  Declare flag_backup.
	* tar.c:  Include backupfile.h.  Implement --backup, --suffix and
	--version-control decoding.  Adjust usage documentation.
	* misc.c (maybe_backup_file, un_backup_file): New functions.
	* tar.h: Adjusted.
	* buffer.c (child_open_for_compress, open_archive, new_volume):
	Use the new functions.
	* extract.c (extract_archive): Idem.
	Reported by Greg McGary, Jeffrey Mark Siskind, Karl Berry, Karl
	Heuer, Marty Leisner, Melissa Weisshaus and William Bader.

	* misc.c (assign_string): Moved over from tar.c.
	* tar.h: Adjusted.

1996-10-28  Franois Pinard  <pinard@iro.umontreal.ca>

	* tar.h: Declare enum read_header, for return values of read_header.
	* diffarch.c (verify_volume): Adjusted.
	* list.c (read_and, read_header): Adjusted.
	* update.c (junk_archive, update_archive): Adjusted.
	* update.c: Rename prev_status to previous_status.
	* update.c (junk_archive): Delete found_stuff, use logical_status.

1996-10-15  Franois Pinard  <pinard@iro.umontreal.ca>

	* buffer.c (new_volume, open_archive): Soften messages.
	* create.c, extract.c: Add quotes around slashes in some messages.
	* tar.c (usage): Added a missing equal sign after --directory.
	Reported by Jan Djarv.

1996-09-22  Franois Pinard  <pinard@iro.umontreal.ca>

	* tar.c: Write --no-recursion instead of --no-recurse.
	Reported by Noah Friedman.

1996-09-20  Franois Pinard  <pinard@iro.umontreal.ca>

	* tar.h: Delete label_pattern.
	* tar.c (main): Do not compile anymore volume_label as a regexp.
	(usage): Document --label as accepting a globbing pattern.
	* buffer.c, tar.c: Do not include regex.h neither rx.h.
	* buffer.c (check_label_pattern): New function.
	(open_archive, flush_read): Use it, instead of re_match.

	* tar.c (decode_options): Better space --version output.

1996-09-19  Franois Pinard  <pinard@iro.umontreal.ca>

	* Makefile.am (EXTRA_PROGRAMS): Compile rmt properly, instead of
	letting make use default .c to executable rule.

	* tar.c: Include getopt.h.
	* system.h: Don't.

	* increm.c (get_dir_contents): Consider all NFS devices as equal
	before deciding that a directory was renamed, so automount will
	not fool tar into spurious incremental redumping.
	Reported by Frank Koenen, Giorgio Signorini, Joachim Holzfuss,
	Konno Hiroharu, R. Kent Dybvig and Wolfram Wagner.

	* tar.c (usage): Add bug report address in --help output.
	(decode_options): Add copyright and authors in --version output.

	* increm.c: New name for gnu.c.
	* Makefile.am (tar_SOURCES): Adjusted.

	* gnu.c (init_buffer, add_buffer, get_buffer, flush_buffer): Moved
	over from misc.c.  Deleted is_dot_or_dot_dot and remove_any_file.
	* misc.c (is_dot_or_dotdot, remove_any_file): Moved over from gnu.c.
	Deleted init_buffer, add_buffer, get_buffer and flush_buffer.
	* tar.h: Adjusted.

1996-09-18  Franois Pinard  <pinard@iro.umontreal.ca>

	* buffer.c (write_error): Obey --totals before aborting.
	Reported by Greg Chung.

	* buffer.c (read_error, write_error): Renamed from readerror and
	writeerror.
	* tar.c (read_name_from_file): Rename c to character.

1996-09-17  Franois Pinard  <pinard@iro.umontreal.ca>

	* arith.h (tarlong): The typedef tarlong, when an array, is now
	wrapped inside a struct to avoid bugs in EWS 4.2 C compiler.
	* arith.c: Adjusted.
	Reported by Paul Eggert.

	* buffer.c: Declare archive_stat statically.
	(open_archive): Do not declare archive_stat locally.
	(close_archive): Limit archive draining to while reading a pipe.
	Reported by Andreas Schwab.

1996-09-16  Franois Pinard  <pinard@iro.umontreal.ca>

	* system.h: Define protected defaults for open parameter symbols.
	[EMUL_OPEN3]: Intercept open calls and redirect them to open3.
	* open3.c: New file, moved over from lib/.  Merely include
	system.h rather than config.h, errno.h and open3.h.
	[EMUL_OPEN3]: The compilation of the file depends on this symbol.
	When it was in lib/, we were using LIBOBJS to control this.
	* Makefile.am: Adjusted.
	* extract.c: Don't call open3.h.
	Reported by Jim Meyering.

1996-09-15  Tom Tromey  <tromey@creche.cygnus.com>

	* Makefile.am (shared_SOURCES): New variable.
	(cpio_SOURCES): Use it.
	(pax_SOURCES): Ditto.
	(noinst_HEADERS): Removed.

	* copyout.c (writeout_final_defers): Free deferment after writing
	it.

	* defer.c (create_deferment): Use xstrdup.

1996-09-14  Tom Tromey  <tromey@creche.cygnus.com>

	* copyout.c (copy_out_one_file): NULL c_name after freeing.

	* copyin.c (process_copy_in): NULL c_name after freeing.

	* copypass.c (verbosely_copy_file): Just print newline after
	filename.  Fixes test "GCPIO -pdumv".

	* extern.h: Include <dmalloc.h> if --with-dmalloc given.

	* cpio.c (process_args): Don't use usage to report all errors.

	* fmtcpio.c (write_out_oldascii_header): Always print the correct
	magic number.

1996-09-13  Tom Tromey  <tromey@creche.cygnus.com>

	* pax.c (usage): Print bug-report address.  Other cleanups.

	* cpio.c (usage): Print bug-report address.

1996-09-12  Tom Tromey  <tromey@creche.cygnus.com>

	* util.c, copyout.c, copypass.c: Merged with net 2.4.2 release.

	* cpio.c (usage): Rewrote.

	* pax.c (usage): Minor cleanups.

	* copypass.c (copy_pass_one_file): Better error message.

	* copyout.c (copy_out_one_file): Better error message.
	(writeout_defered_file): Ditto.

1996-09-09  Franois Pinard  <pinard@iro.umontreal.ca>

	* Makefile.am (libexec_PROGRAMS): Rely on @RMT@, not rmt.
	(bin_PROGRAMS): Do not include @RMT@.

	* gnu.c (remove_any_file): Protect value of errno in case
	of failure to remove a directory, in non-recursive mode.
	This should correct spurious diagnostics while extracting
	directories over already existing hierarchies.
	Reported by Martin Mares and Marty Leisner.

1996-09-04  Franois Pinard  <pinard@iro.umontreal.ca>

	* gnu.c (read_dir_file): Diagnose file names over PATH_MAX.
	(get_dir_contents, add_dir_name): Increase namebuf many times if
	this is	needed to receive a loong file name.
	Reported by Carsten Heyl.

	* Makefile.am (tar.o, rmt.o): Special rules for defining
	LOCALEDIR, instead of having it defined on all compiles.

	* Makefile.am: Remove check related lines, moved over to tests/.

1996-09-03  Franois Pinard  <pinard@iro.umontreal.ca>

	* Makefile.am: Use genfile in check_PROGRAMS, not noinst_PROGRAMS.
	(check-local): Do not depend on genfile.

1996-08-24  Franois Pinard  <pinard@iro.umontreal.ca>

	* Makefile.am (EXTRA_DIST): Do not mention ansi2knr.1 nor
	ansi2knr.c, as Automake now handle them automatically.

1996-08-11  Tom Tromey  <tromey@creche.cygnus.com>

	* Makefile.am (cpio_DEPENDENCIES): Removed.
	(pax_DEPENDENCIES): Ditto.
	(mt_DEPENDENCIES): Ditto.

1996-07-18  Franois Pinard  <pinard@iro.umontreal.ca>

	* arith.h: Include tar.h, not arith.h, so FATAL_ERROR is defined.
	[!SUPER_DIGIT]: Declare arguments to ..._tarlong routines as
	pointers to unsigned long and not arrays, for avoiding pointers
	to arrays, and nevertheless have arrays passed by reference
	rather than by value.
	* arith.c: Adjusted function headers accordingly.
	* buffer.c, tar.c: Removed address-of operators, using tarlongs.
	Reported by Christian T. Dum, Jim Meyering and Kaveh R. Ghazi.

	* arith.h [SUPER_DIGIT]: Avoid indirection in all macros for
	Accumulators.  This, in particular, solves a bug where the pointer
	value itself was printed, rather than the pointed to value.
	Reported by Drew Sullivan and Wolfram Wagner.

	* Makefile.am (EXTRA_DIST): Include ansi2knr.[1c] for now.
	Reported by Christian T. Dum, Jim Meyering and Kaveh R. Ghazi.

1996-07-17  Franois Pinard  <pinard@iro.umontreal.ca>

	* Makefile.am (check-local): Ensure relinking if the service
	libraries where modified (waiting for Automake to do it!).

1996-07-16  Franois Pinard  <pinard@iro.umontreal.ca>

	* rmt.c (strerror): It is a macro on some systems.
	Reported by Santiago Vila Doncel.

1996-07-15  Franois Pinard  <pinard@iro.umontreal.ca>

	* checktar.sh: Use a more regular WARNING in message.

1996-07-09  Franois Pinard  <pinard@iro.umontreal.ca>

	* tar.h: Declare that unquote_string as returning int, not char *.
	* misc.c (unquote_string): New name for un_quote_string.  Clean
	up a bit, return a boolean indicator for success, not a string.
	* gnu.c (read_dir_file), mangle.c (extract_mangle), tar.c
	(add_exclude): Callers adjusted, so they never use a NULL return
	as an actual string.  In fact, the result of unquote_string is
	always used, even if the quoting was improper.
	Reported by Johan Vromans.

1996-05-03  Franois Pinard  <pinard@iro.umontreal.ca>

	* tar.h: Define TTY_NAME as a macro, instead of an external array.
	* tar.c: Remove declaration of TTY_NAME.

	* tar.h: Rename new_time to threshold time.  Make it GLOBAL.
	* tar.c, create.c, gnu.c, list.c: Adjusted.
	(decode_options): Clarify -N and --newer-mtime decoding, ensure
	one of them is called at most, otherwise it would misbehave.

1996-05-02  Franois Pinard  <pinard@iro.umontreal.ca>

	* misc.c (quote_copy_string): Ensure spaces are backslash-quoted.
	Reported by Max Hailperin.

	* list.c (decode_header): Some clean up.  Recognize POSIX archive
	headers, avoid fetching atime or ctime in this case.
	[!S_IFBLK || !S_IFCHR]: Ensure st_rdev is cleared appropriately.
	* tar.h: Rename head_standard to header_format, so turning an
	int to an enum archive_format.  Adjust decode_header prototype.
	* diffarch.c, extract.c, list.c, update.c: Usages changed.
	* create.c: Ensure oldgnu_header is only used when OLDGNU_FORMAT.
	(Correction just starting to be made--will be comprehensive...)
	Reported by Anders Andersson, Bdale Garbee, Chris G Demetriou and
	David J. MacKenzie.

	* buffer.c, gnu.c, rtapelib.c, tar.c: Diagnose errors on fclose.
	Reported by Jim Meyering.

1996-05-01  Franois Pinard  <pinard@iro.umontreal.ca>

	* buffer.c (close_archive): If reading and the archive is
	finished, read until end of archive, for avoiding an error
	message from the upstream process if we are reading from a pipe.
	Reported by Bennett Todd, Dick Streefland, Don Bennett, Ian Lance
	Taylor, Jean-loup Gailly and Piercarlo Grandi.

	* create.c (dump_file): Add note about accuracy of st_blocks.
	Reported by Dick Streefland.

	* diffarch.c: Include <linux/fd.h> if it exists.
	(verify_volume): fsync, than ioctl(, FDFLUSH) first.
	Reported by Marty Leisner.

1996-04-29  Franois Pinard  <pinard@iro.umontreal.ca>

	* list.c (isotime): New function.
	(print_header) [!USE_OLD_CTIME]: Use it instead of ctime.
	Reported by Karl Berry and Markus Kuhn.

1996-04-23  Franois Pinard  <pinard@iro.umontreal.ca>

	* extract.c (set_stat): Accept a new parameter telling if this is
	a symbolic link.  In this case, and if lchown exists, use it
	instead of chown.  Callers adjusted.
	(extract_archive): Do call set_stat over restored symbolic links.
	Reported by Andreas Koppenhoefer, Bernard Derval, Ian Jackson,
	Matt Power, Warren Dodge and Wolfram Gloger.

	* extract.c (extr_init): If the umask was very restrictive at
	start of tar, nevertheless ensure we create intermediate
	directories with such permissions that we can at least add files
	into them.
	(extract_archive): Same, but for final directory.  Ensure
	directory attributes are restored in all cases.
	Reported by Piercarlo Grandi.

	* tar.c: Implement --owner, --group and --mode options.
	* tar.h: Declare preset_owner, preset_group and preset_mode.
	* create.c: Obey these variables.
	Reported by Ken Raeburn, Richard Stallman and Stephen Gildea.

	* create.c (dump_file): When wanting the length of the link
	name, use strlen, rather then doing wrong arithmetic giving
	the number of removed slashes at the beginning of it.
	Reported by Brian R. Smith.

	* create.c (start_header): Try removing leading slashes even for
	long file names.
	Reported by Art Isbell, Fritz Elfert and Robert E. Brown.

	* buffer.c (new_volume): Avoid calling closeout_volume_number if
	the --volno-file option was not specified, so avoiding crashes.
	* tar.c (usage): Document the --volno-file option.
	Reported by Christoph Litauer, Daniel S. Barclay, David Taylor,
	Erik D. Frederick, Larry Creech, Loc Prylli, Loren J. Rittle,
	Marty Leisner, Neil Faulks, Paul Mitchell, Rocky Giannini, Roy
	Marantz, Sylvain Rougier, Timothy J. Lee and Werner Almesberger.

1996-04-22  Franois Pinard  <pinard@iro.umontreal.ca>

	* system.h (N_): Define marking macro for delayed translations.
	* rmt.c: Use N_ instead of _ for returned strings.  It does not
	make sense translating messages in a remote process, not knowing
	the language in use in the local process.

1996-04-18  Franois Pinard  <pinard@iro.umontreal.ca>

	Instead of -UU for removing directories, request a long option.
	* tar.c: Implement --recursive-unlink.
	(usage): Document --recursive-unlink.
	(decode_options): Have --recursive-unlink imply --unlink-first.
	* tar.h: Declare --recursive-unlink.
	* extract.c (extract_archive): Use flag_recursive_unlink instead
	of flag_unlink_first > 1.
	Reported by Andreas Schwab.

1996-04-17  Franois Pinard  <pinard@iro.umontreal.ca>

	* Makefile.am (EXTRA_DIST): New name for DIST_OTHER.

	* tar.c (addname, name_gather): Zero out freshly allocated struct
	name, to prevent garbage to get into the structure.
	Reported by Jonathan Kamens.

1996-03-28  Franois Pinard  <pinard@iro.umontreal.ca>

	* create.c (dump_file): Cast %ld argument to (long).
	Reported by Constantin Belous, Jrgen Hgg and Walter C. Pelissero.

1996-03-21  Franois Pinard  <pinard@iro.umontreal.ca>

	* tar.c (main): Return int, not void.
	Reported by Timothy J. Lee and Peter Seebach.

1996-03-21  Tom Tromey  <tromey@creche.cygnus.com>

	* mt.c (main): Return int.

	* main.c (main): Return int.

1996-03-20  Tom Tromey  <tromey@creche.cygnus.com>

	* fmtcpio.c (write_out_oldascii_header): Make dev, rdev long in
	MSDOS case.

1996-03-09  Tom Tromey  <tromey@creche.cygnus.com>

	* fmtcpio.c: Include sys/types.h and sys/stat.h.

	* rmt.c (copyright): Removed.

	* Makefile.am (EXTRA_PROGRAMS): New macro.
	(PROGRAMS): Removed.

1996-02-28  Franois Pinard  <pinard@iro.umontreal.ca>

	* Makefile.am: Use RMT instead of PROGRAMS and noinst_HEADERS
	instead of HEADERS.

1996-02-12  Franois Pinard  <pinard@iro.umontreal.ca>

	* Makefile.am: Remove CONFIG_HEADER, not required by Automake 0.29.

1996-02-03  Franois Pinard  <pinard@iro.umontreal.ca>

	Ensure --totals work correctly for huge archives:
	* arith.h, arith.c: New files.
	* Makefile.am: Use arith.h and arith.c.
	* tar.h: Do not declare tot_written anymore, include "arith.h".
	* tar.c (main): Call init_total_written and print_total_written.
	* buffer.c: Rename tot_written to total_written, make it tarlong.
	(init_total_written, print_total_written): New routines.
	Reported by Albert W. Dorrington, Chris F.M. Verberne, David
	Martin, Eduardo Villasenor de Rivas, Greg Chung, Jim Meyering,
	John R. Vanderpool, Jon Lewis, Jrg Weule, Jrgen Hgg, Rod
	Thompson, Russell Cattelan, Ted Rule and Tor Lillqvist.

	Ensure --tape-length is usable for huge media:
	* tar.h: Declare tape_length as tarlong instead of int.
	* tar.c (decode_option): Decode tape_length as tarlong, and use
	its value pre-multiplied by 1024.
	* buffer.c (flush_write): Use bytes_written and tape_length as
	tarlongs.  Declare bytes_written outside flush_write.
	(init_total_written): Zero out bytes_written as well.
	Reported by Dave Barr.

1996-01-16  John Oleynick  <juo@wombat.gnu.ai.mit.edu>

	* util.c: An I/O error reading a file would cause the last byte
	of the next file to be corrupted in the archive.  Thanks to a
	buggy NT NFS server for pointing out this problem.

	* Version 2.4.2 released.

1996-01-15  Franois Pinard  <pinard@iro.umontreal.ca>

	* rtapelib.c (rmt_open__) [MSDOS]: Do not call setuid/setgid.
	Reported by Yasushi Suzudo.

1996-01-14  Franois Pinard  <pinard@iro.umontreal.ca>

	* Makefile.am (AUTOMAKE_OPTIONS): Select gnits and ansi2knr.

1996-01-09  John Oleynick  <juo@wombat.gnu.ai.mit.edu>
	* copyout.c: missed 1 part of last bug fix.

1996-01-08  Franois Pinard  <pinard@iro.umontreal.ca>

	* create.c: Initialize linklist to NULL.
	Reported by Bradley A. Smith.

1996-01-08  John Oleynick  <juo@wombat.gnu.ai.mit.edu>

	* copyout.c, copypass.c: Use result of readlink() as length
	of link name instead of size from lstat().  On some OS's lstat()
	doesn't return the true length in size.
	Reported by Robert Joop.

1996-01-07  Franois Pinard  <pinard@iro.umontreal.ca>

	* Makefile.am: Add parts of previous Makefile.in as FIXME comments.

1996-01-03  Franois Pinard  <pinard@iro.umontreal.ca>

	* tar.c (usage): Avoid an unescaped new line.
	Reported by Kaveh R. Ghazi and Mark Bynum.

	* system.h: Declare valloc if it exists and is not #defined.
	* create.c (start_header): Add missing DEFAULT_FORMAT case.
	* gnu.c (read_dir_file): Use NULL instead of (char *) 0.

	* Makefile.am: Install rmt in $(libexec), not in sbin.

	* tar.c (decode_options): Add a semicolon so default case is
	not completely empty, for better ANSI C compliance.
	Reported by John David Anglin, Kaveh R. Ghazi and Mark Bynum.

1996-01-03  Tom Tromey  <tromey@cambric.colorado.edu>

	* rmt.c: Don't use "error.h".

1996-01-02  Franois Pinard  <pinard@iro.umontreal.ca>

	* buffer.c (open_archive): Allocate real_s_name at run time
	instead of statically, because PATH_MAX is not always constant.
	Reported by Bruno Haible, John David Anglin, Jonathan Thornburg,
	Kaveh R. Ghazi, Martin Bellenberg, Marty Leisner, Nelson
	H. F. Beebe, Roland McGrath and Thomas Knig.

	* Makefile.am (DIST_OTHER): Distribute BACKLOG.
	Reported by Marty Leisner.

1996-01-01  Franois Pinard  <pinard@iro.umontreal.ca>

	* system.h: Include "error.h" instead of declaring error ().
	Reported by Jim Meyering.

1996-01-01  Tom Tromey  <tromey@cambric.colorado.edu>

	* rmt.c: Use "error.h".
	* mt.c: Use "error.h".
	* extern.h: Use "error.h".

1995-12-31  Franois Pinard  <pinard@iro.umontreal.ca>

	* Makefile.am: New file.

1995-12-30  Franois Pinard  <pinard@iro.umontreal.ca>

	* Makefile.in: Define LOCALEDIR in DEFS.
	* system.h [!ENABLE_NLS]: Add replacement for bindtextdomain.
	* tar.c (main): Add call to bindtextdomain.
	* rmt.c (main): Add calls to bindtextdomain and textdomain.
	Reported by Ulrich Drepper.

	* buffer.c, create.c, diffarch.c, gnu.c, list.c, rmt.h, system.h,
	tar.h, update.c: Replace __P by PARAMS, to respect ANSI C.
	* rtapelib.c, rmt.h: Replace all __rmt* symbols by rmt*__.

1995-12-28  Franois Pinard  <pinard@iro.umontreal.ca>

	* extract.c (extr_init): Initialize variables in any case,
	instead of partly relying on static initializations.  Remove
	static initializations for those variables.

1995-12-24  Franois Pinard  <pinard@iro.umontreal.ca>

	* extract.c (extract_archive): On systems not having symbolic
	links, attempt extracting symbolic links as hard links instead,
	as POSIX suggests.  Emit a diagnostic on first occurrence.

	* extract.c (extract_archive): On systems not having contiguous
	files, continue extracting them as regular files as before, but
	emit a diagnostic on first occurrence.

1995-12-23  Franois Pinard  <pinard@iro.umontreal.ca>

	* tar.h: Declare remove_any_file.
	* gnu.c (remove_any_file): New name for recursively_delete.
	Add a parameter to control recursion.  Inverse return value,
	so 0 is failure.  Ensure errno is always valid in this case.
	(gnu_restore): Specify recursion when calling remove_any_file.
	* extract.c (maybe_recoverable): New routine.
	(extract_archive): Call maybe_recoverable rather than
	make_directories, so deleting files is also tried.  Some cleanup.

	* tar.h: Declare flag_unlink_first.
	* tar.c (decode_options): Decode --unlink-first (-U).
	(usage): Document it.
	* extract.c (extract_archive): With -U, call remove_any_file
	prior to extraction for everything except directories.

	Reported by Andrew J. Schorr, Andrey A. Chernov, Axel Boldt, Bo
	Nygaard Bai, Chris F.M. Verberne, Chris G. Demetriou, Christian
	Callsen, Daniel S. Barclay, Ian Jackson, James Stevens, Seth
	Robertson, Tito Flagella, Warner Losh and Wolfram Wagner.

1995-12-22  Franois Pinard  <pinard@iro.umontreal.ca>

	* tar.c (name_close): Specify static.
	(main): Call name_close after create_archive.
	* create.c (create_archive): Do not call name_close.

	* tar.c: Clean out names_arg[cv] crumb.
	(name_next): Simplify routine by merging both loops.
	(addname): Avoid xstrdup'ing result of new_name, this corrects a
	memory leak.

	* extract.c: Normalize error message so the file is identified at
	the beginning of it.

	* tar.h (USAGE_ERROR): New macro.
	* tar.c: Use USAGE_ERROR as far as possible.  Cleanup and
	normalization in string for usage errors.  Better detection of
	conflicting options about archive format or compression program.

	* tar.c (decode_options): Decouple cases for -C and files.  Count
	number of input files.  Cowardly refuse to create an empty archive
	file, if -c is given without input file or list.
	Reported by Hugh Daniel, Karl Berry and Robert Bernstein.

1995-12-21  Franois Pinard  <pinard@iro.umontreal.ca>

	* buffer.c: Rename a few err variables to status.
	* extract.c: Rename a few check variables to status.

	Corrections to speed-up the sizeing pass in Amanda:
	* tar.h: Declare dev_null_output.
	* buffer.c (open_archive): Detect when archive is /dev/null.
 	(flush_write): Avoid writing to /dev/null.
	* create.c (dump_file): Do not open file if archive is being
	written to /dev/null, nor read file nor restore times.
	Reported by Greg Maples and Tor Lillqvist.

	* gnu.c: Have dir_list properly initialized to NULL.
	Reported by Paul Nordstrom and Tim Lashua.

	* extract.c: Rename ourmask to newdir_umask.  Rename and
	complement notumask to current_umask.
	* list.c (print_for_mkdir): New name for pr_mkdir.
	* tar.h: Adjust declaration.
	* extract.c (make_directories): New name for make_dirs.  Some
	cleanup in variable names.

	* extract.c: Let newdir_umask be a global variable.
	(make_directories): Use newdir_umask while creating intermediate
	directories.  They used to be 0777 unconditionally.
	Reported by Bruce Evans, Harald Knig and James Crawford Ralston.

1995-12-20  Franois Pinard  <pinard@iro.umontreal.ca>

	* create.c (finish_header): Avoid printing the header for long
	names or links, this avoids spurious `Visible longname error's.

	Reported by Arne Wichmann, Chris F.M. Verberne, Frank Koenen,
	Franz-Werner Gergen, Ian Jackson, Jon Lewis, Mark Kollert, Paul
	Nordstrom, Ted Rule, Thomas Priesner, Tim Rylance and Tom Tromey.

1995-12-19  Franois Pinard  <pinard@iro.umontreal.ca>

	* buffer.c: Have real_s_name able to hold PATH_MAX characters,
	not only NAME_FIELD_SIZE.  It was breaking --multi-volume
	--listed-incremental when backing up long file names.
	Many symptoms really: a screwed-up date on the incremental data
	file, dumping incremental which should not have been, etc.
	* (flush_read): Avoid altering save_name pointer value, use
	cursor instead.  Also avoid the optimization of cleaning each
	save_name only once per flush_read if it did not change: it
	was using `save_name = real_s_name;', and since save_name may
	be freed at any time, this is/was really running after trouble.

	Reported by Alexander V. Lukyanov, Axel Habermann, Chance
	Reschke, Claus Heine, Christian von Roques, Daniel Hagerty,
	Daniel S. Barclay, Dirk Herr-Hoyman, Donald H. Locker, Ed Childs,
	Heiko Schinke, Hunyue Yau, Goeran Uddeborg, Grant McDorman,
	Joachim Seelig, Joe DeBattista, Jonathan Thornburg, Joutsiniemi
	Tommi Il, Jrgen Lters, Keith Young, Kelly Stephens, Kevin
	Dalley, Konno Hiroharu, Larry Creech, Martin Mares, Michael
	Dietrich, Michael Giddings, Michael Meissner, Michael P Urban,
	Mike Castle, Paul Siddall, Pierce Cantrell, Peter Fox, Robert
	Frey, Roderich Schupp, Sam Richards, Stephen J Bevan, Torsten
	Lull, Wolfram Gloger and Yu-Min Liang.

	* system.h: Include <sys/tprintf.h> and <sys/device.h> for BSDi.
	Reported by Chris Arthur, Dan Reish, Karl Berry and Skip Montanaro.

	* rmt.c (private_strerror):  New, copied from lib/error.c.
	Remove sys_errlist declaration, and use syserror instead.
	Reported by Chris Arthur, Coranth Gryphon, Erich Stefan Boleyn,
	Fabio d'Alessi, Greg Hudson, Jason R. Mastaler, Skip Montanaro,
	Thomas Krebs and Troy Rudolph.

1995-12-18  Tom Tromey  <tromey@cambric.colorado.edu>

	* rmt.c: Only include <sgtty.h> if it exists.

1995-12-17  Franois Pinard  <pinard@iro.umontreal.ca>

	* extract.c (extract_archive): Unrecognized types were defaulted
	to sparse files instead of regular files, because of an improper
	/* Fall through.  */.

	* create.c, diffarch.c, extract.c, gnu.c, list.c, rtapelib.c,
	tar.c: Drop register specifications, as longjmp is not used,
	and GNU C has -O automagically set.

	* extract.c (extract_archive): Inhibit creation of links, special
	devices, directories, etc., when --to-stdout option is being used.
	Reported by Donald B Gordon, Gerben Wierda, Greg Chung, Norbert
	Kiesel and Roman Czyborra.

1995-12-17  Tom Tromey  <tromey@cambric.colorado.edu>

	* mt.c: Merged with released 2.4 version.

	* Makefile.am (bin_PROGRAMS): Moved mt from sbin_PROGRAMS.

1995-12-16  Tom Tromey  <tromey@cambric.colorado.edu>

	* Makefile.am (libexec_PROGRAMS): New macro.

1995-12-04  Franois Pinard  <pinard@iro.umontreal.ca>

	* tar.h: Implement FATAL_ERROR, telling error is not recoverable.
	* tar.c (main): Diagnose delayed error, for TAREXIT_FAILURE only.
	* buffer.c, diffarch.c, gnu.c, list.c, tar.c, update.c: Replace
	all `ERROR ((TAREXIT_FAILURE,' by `FATAL_ERROR ((0,'.
	Reported by Marty Leisner.

	* list.c (read_and): When telling block numbers in verbose output,
	clearly list block numbers for NUL blocks and end of file.
	Reported by Jrg Weule.

	* tar.c (usage): Document --newer-time.
	Reported by Greg Chung.

1995-12-03  Tom Tromey  <tromey@cambric.colorado.edu>

	* Makefile.am (PROGRAMS): @PROGS@ -> @PROGRAMS@.

1995-11-30  Franois Pinard  <pinard@iro.umontreal.ca>

	* system.h: Conditionally include <sgtty.h> prior to <mtio.h>.
	* rmt.c: Do not include <sgtty.h> anymore.
	Reported by Harald Knig and Kaveh R. Ghazi.

	* rtapelib.c: Remove seemingly useless include of setjmp.h.

	* rtapelib.c: Try to get EOPNOTSUPP defined in all cases.
	If needed, include net/errno.h or sys/inet.h when they exist.
	Reported by Goeran Uddeborg, J.J. Bailey, John L. Chmielewski,
	Peder Chr. Norgaard and Yasushi Suzudo.

1995-11-29  Franois Pinard  <pinard@iro.umontreal.ca>

	* tar.c (decode_options): Diagnose --block-compress properly.
	Was segment violating because falling into --blocking-factor.

	* buffer.c, create.c, diffarch.c, genfile.c, gnu.c, tar.c:
	Uniformly write nonzero instead of non-zero.
	Reported by Karl Berry.

	* system.h, buffer.c, create.c, diffarch.c, tar.c, update.c [MSDOS]:
	Instead of __MSDOS__, all occurrences.
	* extract.c (extract_archive) [MSDOS]: Avoid delaying restoration
	of timestamps for directories.
	* buffer.c (child_open_for_compress): Add a missing semi-colon.
	* diffarch.c (diff_archive): Avoid comparing uid and gid.
	Reported by Yasushi Suzudo.

	* tar.c (usage): Correct absolute-paths to absolute-names.
	Reported by Jonathan Kamens.

	* tar.c (usage): Indicate that --exclude uses globbing, and that
	--label uses regexps.
	Reported by John R. Vanderpool and Matti Aarnio.

	* tar.c (names_notfound): Do not report a fake namelist entry, so
	gzipped empty archives will not produce spurious diagnostics.
	Reported by Jonathan Kamens.

1995-11-23  Franois Pinard  <pinard@iro.umontreal.ca>

	* tar.c (name_scan, name_match): Avoid labels and gotos.

1995-11-22  Franois Pinard  <pinard@iro.umontreal.ca>

	* Makefile.in (DISTFILES): Distribute ChangeLog.

	* ChangeLog: New, extracted from top-level ChangeLog.

	* tar.c (main, decode_options): Delay request_stdin for `-f'
	until all options processed, so we now for sure that `-' means
	standard input, not standard output.

	* tar.c (usage): Document that users should not count on
	POSIX support yet, saying it is only partially implemented so far.

1995-11-21  Tom Tromey  <tromey@cambric.colorado.edu>

	* mt.c (main): New form for --version message.
	* cpio.c (process_args): New form for --version message.
	* pax.c (process_args): New form for --version message.

1995-11-20  Tom Tromey  <tromey@cambric.colorado.edu>

	* copypass.c (copy_pass_maybe_recurse): Put \0 terminator in
	correct place.

1995-11-16  Tom Tromey  <tromey@cambric.colorado.edu>

	* pax.c (process_args): Save patterns from command line.

1995-11-13  Tom Tromey  <tromey@cambric.colorado.edu>

	* Makefile.am (HEADERS): Renamed from SOURCES.
	(LIBRARIES): New macro.
	(arch_SOURCES): Ditto.
	(LDADD): Include libarch.a.

1995-11-12  Tom Tromey  <tromey@cambric.colorado.edu>

	* Makefile.am: New file.

1995-11-11  Tom Tromey  <tromey@cambric.colorado.edu>

	* pax.c (process_args): Open archive if necessary.
	(long_opts): Added --dereference/-L.
	(process_args): Handle -L argument.

	* copypass.c (copy_pass_maybe_recurse): Put null char at correct
	position.

	* copyout.c (pax_copy_out_one_file): Put null char at correct
	position.

1995-11-10  Tom Tromey  <tromey@cambric.colorado.edu>

	* pax.c (long_opts): Use --one-file-system, not --xdev, for tar
	compatibility.

	* cpio.c (long_opts): Changed --no-absolute-filenames to
	--absolute-names, for tar (pseudo-)compatibility.

	* util.c (is_dot_or_dotdot): Moved from copyout.c.

	* copypass.c (verbosely_copy_file): New function.
	(copy_pass_maybe_recurse): New function.
	(process_copy_pass): Use it.

1995-11-09  Tom Tromey  <tromey@cambric.colorado.edu>

	* copyout.c (verbosely_copy_out_file): New function.
	(dump_file): Use it.
	(pax_copy_out_one_file): Ditto.
	(copy_out_one_file): Don't handle verbose flags here.

	* copypass.c (process_copy_pass): Split into two.
	(copy_pass_one_file): New function.

	* pax.c (long_opts): Option now named "--keep-old-files", for tar
	compatibility.

	* copypass.c (process_copy_pass): Rename file if appropriate.

1995-11-08  Tom Tromey  <tromey@cambric.colorado.edu>

	* copyout.c (copy_out_one_file): Explicitly disallow negative mtimes.
	Reported by John Heller.

1995-11-05  Tom Tromey  <tromey@cambric.colorado.edu>

	* copypass.c (process_copy_pass): Print message if file already
	exists.
	* copyin.c (process_copy_in): Print message if file already
	exists.

1995-11-04  Tom Tromey  <tromey@cambric.colorado.edu>

	* cdf.c, copyin.c, copyout.c, copypass.c, cpio.c, defer.c,
	fmtcpio.c, fmttar.c, format.c, getfile.c, global.c, main.c, mt.c,
	pax.c, rename.c, rmt.c, rtapelib.c, util.c: Include <config.h>.
	* Makefile.in (INCLS): ".." is a search directory; for config.h.

	* rename.c (rename_in): New variable.
	(setup_interactive_renaming): Handle batch renaming.
	(possibly_rename_file): Handle batch renaming.

	* Makefile.in: Changes for rename of tar.c.
	* fmttar.c: Renamed from tar.c.

	* cpio.c (long_opts): --silent is synonym for --quiet; per GNU
	standards.

	More merging with 2.3.910:
	* fmtcpio.c: Merged with 2.3.910 version.
	* copyin.c: Merged with 2.3.910 version.
	* copypass.c: Merged with 2.3.910 version.
	* tar.c: Merged with 2.3.910 version.
	* extern.h: Merged with 2.3.910 version.
	* global.c: Merged with 2.3.910 version.
	* cpio.c (process_args): Use no_block_message_flag, not
	quiet_flag.
	* util.c: More merging.

1995-11-03  Tom Tromey  <tromey@cambric.colorado.edu>

	* Makefile.in (LDFLAGS): Default to $(CFLAGS).
	(libdir): Use standard GNU value.
	(.c.o): Put CFLAGS last.

	Merged with 2.3.910 from John Oleynick.  His ChangeLog entries
	have been merged into this file, below.
	* util.c: Merge with 2.3.910 version.
	* cpio.c: Merged with 2.3.910 version.
	(OPTION_NOABSFILE): New define.
	(OPTION_CRCVERIFY): Ditto.
	(OPTION_BATCHRENAME): Ditto.
	(OPTION_QUIET): Ditto.
	(OPTION_SPARSE): Ditto.
	* system.h: Merged with 2.3.910 version.
	* argmatch.c: Merged with 2.3.910 version.
	* mt.c: Merged with 2.3.910 version.

1995-11-02  Tom Tromey  <tromey@cambric.colorado.edu>

	* copyout.c (copy_out_one_file): Call possibly_rename_file.

	* tar.c (write_out_tar_header): Better tar support.

	* copyout.c (copy_out_one_file): Use name_too_long hook.

	* format.c (set_write_pointers_from_format): Init name_too_long.

	* global.c (name_too_long): New variable.

	* fmtcpio.c (is_cpio_filename_too_long): New function.

	* rename.c (possibly_rename_file): Make sure result of regexp
	transforms is returned.

	* copyin.c (skip_padding): No longer static.
	(process_copy_in): Free file_hdr.c_name after use.

	* fmtcpio.c (read_in_binary): Moved from copyin.c.
	(read_in_new_ascii): Ditto.
	(read_in_old_ascii): Ditto.
	(swab_array): Ditto.

	* rename.c (match_and_substitute): Init outstr.
	(add_rename_regexp): Compile correct string into regexp.

	* Makefile.in (dist_topdir): Removed.

	* rename.c (setup_interactive_renaming): Set regexp syntax.
	(match_and_substitute): Changed interface.
	(struct rename_regexp): Added "regs" item.

	* format.c (the_list): Filled in definitions for "cpio" and
	"sv4cpio" formats.

1995-11-01  Tom Tromey  <tromey@cambric.colorado.edu>

	* rename.c (add_rename_regexp): Bug fix.

	* copyout.c (process_copy_out): Added asserts.

1995-10-31  Tom Tromey  <tromey@cambric.colorado.edu>

	* copyout.c (pax_copy_out_one_file): Wrote recursion code.
	(is_dot_or_dotdot): New function (from tar).

	* system.h: Include directory reading routines and structures.

	* copyout.c (dump_file): New function.
	(process_copy_out): Use it.
	(copy_out_one_file): Changed interface.
	(pax_copy_out_one_file): Ditto.

	* main.c (main): Call setlocale() and textdomain().

	* Makefile.in (dist_topdir): New macro.

	* version.c: Removed.

	* Makefile.in (INCLS): New macro.
	(DEFS): Changes for NLS.
	(LIBS): Ditto.
	(top_srcdir): New macro.
	(subdir): Ditto.
	(VERSION): Ditto.
	(PACKAGE): Ditto.
	(distdir): Ditto.
	(dist): Rewrote.

	* pax.c (process_args): Use VERSION.

	* mt.c (main): Use VERSION.

	* cpio.c (process_args): Use VERSION.

	* rename.c (match_and_substitute): New function.
	(possibly_rename_file): Use it.

	* dstring.h: Include ansidecl.h.
	Include <stdio.h>.

	* extern.h: Include ansidecl.h.

	* ansidecl.h: New file.

1995-10-30  Tom Tromey  <tromey@cambric.colorado.edu>

	* dstring.c (ds_strcat): New function.
	(ds_strncat): Ditto.

	* dstring.h: Use P_ macro everywhere.

	* tar.c (is_tar_header): Format unknown if version number is not
	"00".

	* rename.c (add_rename_regexp): New function.
	(possibly_rename_file): Changes to handle regexp renaming.

	* pax.c (parse_buffer_size): New function.
	(process_args): Use it.

	* cdf.c (add_cdf_double_slashes): Moved from util.c.
	(islastparentcdf): Ditto.

	* pax.c (process_args): Set pax_rename_flag.

	* global.c (pax_rename_flag): New variable.

	* rename.c (possibly_rename_file): Handle pax_rename_flag.

	* copypass.c (process_copy_pass): Handle overwrite_existing_files
	flag.

	* copyin.c (process_copy_in): Handle overwrite_existing_files
	flag.

	* dstring.c (ds_destroy): New function.

	* copyin.c (process_copy_in): Use setup_interactive_renaming,
	possibly_rename_file.

	* rename.c: New file.

	* format.c (the_list): Turn off gnu tar by default.

	* tar.c (is_tar_header): Turn off gnu tar by default.

1995-10-29  Tom Tromey  <tromey@cambric.colorado.edu>

	* global.c (preserve_mode_flag): New variable.
	(cross_device_flag): Ditto.
	(current_device): Ditto.

	* pax.c (long_opts): "retain"->"priveleges".

	* global.c (directory_recurse_flag): New variable.
	(overwrite_existing_files): Ditto.

	* pax.c (process_args): Set directory_recurse_flag.

	* copyout.c (process_copy_out): Call pax_copy_out_one_file if
	necessary.
	(pax_copy_out_one_file): New function.

	* copyin.c (read_in_header): Added debug code.

	* format.c (format_name): New function.

	* copyout.c (process_copy_out): Respect no_block_message_flag.

	* copypass.c (process_copy_pass): Repsect no_block_message_flag.

	* global.c (no_block_message_flag): New variable.

	* pax.c (process_args): Set no_block_message_flag.

	* copyin.c (process_copy_in): Respect no_block_message_flag.

	* tar.c (write_out_tar_header): Deal with gnutar format.
	(read_in_tar_header): Ditto.
	(is_tar_filename_too_long): Ditto.

	* format.c (the_list): Added "gnutar" entry.
	(set_write_pointers_from_format): Deal with gnutar format.

	* copyout.c (copy_out_one_file): Deal with gnutar format.
	(pad_output): Ditto.
	(writeout_defered_file): Ditto.

	* copyin.c (read_in_header): Deal with gnutar format.
	(skip_padding): Ditto.

	* cdf.c (possibly_munge_cdf_directory_name): Deal with gnutar
	format.

	* tar.c (is_tar_header): Return arf_gnutar as appropriate.

	* extern.h (archive_format): Added arf_gnutar.

	* tar.c (is_tar_header): Changed return value.

1995-10-27  Franois Pinard  <pinard@iro.umontreal.ca>

	* rtapelib.c (_rmt_shutdown): Add the errno_value parameter.
	(__rmt_open): Call shutdown if remote open fails, or else, we lose
	file descriptors.
	Reported by Holger Teutsch.

1995-10-26  Tom Tromey  <tromey@cambric.colorado.edu>

	* copyout.c (copy_out_one_file): New function; extracted from
	process_copy_out.

	* cdf.c: New file.

1995-10-25  Tom Tromey  <tromey@cambric.colorado.edu>

	* copyout.c (pad_output): No longer static.

	* tar.c (write_tar_eof): New function.

	* fmtcpio.c (write_cpio_eof): New function.

	* global.c (eof_writer): New global.

	* format.c (set_write_pointers_from_format): New function.

	* global.c (header_writer): New global.

	* copyout.c (write_out_header): Deleted.
	(process_copy_out): Write headers through header_writer global.
	(writeout_other_defers): Ditto.
	(writeout_final_defers): Ditto.
	(writeout_defered_file): Ditto.

	* format.c (format_error): Use gettext.

	* fmtcpio.c: New file.

	* tar.c (tar_checksum): Now static.
	(null_block): Now static.

	* octal.c: New file (from tar.c).

1995-10-24  Tom Tromey  <tromey@cambric.colorado.edu>

	* makepath.c (make_path): Ditto.

	* mt.c (main): Use gettext.
	(check_type): Ditto.
	(print_status): Ditto.
	(usage): Ditto.

	* rtapelib.c (_rmt_rexec): Use gettext.
	(__rmt_open): Ditto.

	* tar.c (read_in_tar_header): Use gettext.

	* tcexparg.c (expargs): Use gettext.
	(grow_argv): Ditto.

	* userspec.c (parse_user_spec): Use gettext.

	* util.c (empty_output_buffer): Use gettext.
	(empty_output_buffer_swap): Ditto.
	(fill_input_buffer): Ditto.
	(peek_in_buf): Ditto.
	(create_all_directories): Ditto.
	(prepare_append): Ditto.
	(get_next_reel): Ditto.

	* xmalloc.c (xmalloc): Use gettext.
	(xrealloc): Ditto.

1995-10-20  Tom Tromey  <tromey@drip.colorado.edu>

	* tar.c (request_stdin): New function.
	(stdin_used_by): New variable.
	(name_init, add_exclude_file, decode_options): Use request_stdin
	if required.
	(confirm): Check stdin_used_by to see if stdin in use.

	* list.c (read_header):  Consistently use sizeof to find size
	of checksum field.

1995-10-20  Tom Tromey  <tromey@cambric.colorado.edu>

	* argmatch.c: Include <libintl.h>.
	(invalid_arg): Use gettext.

1995-10-17  Tom Tromey  <tromey@cambric.colorado.edu>

	* Makefile.in (SRCS): Include getfile.c.
	(OBJS): Include getfile.o.

	* extern.h: Protect again multiple inclusion.

	* dstring.h: Protect against multiple inclusion.

	* copypass.c (process_copy_pass): Use gettext.
	(link_to_name): Ditto.

	* copyin.c (read_in_header): Use gettext.
	(read_in_binary): Ditto.
	(process_copy_in): Ditto.
	(create_defered_links): Ditto.

	* main.c (main): Use gettext.

	* cpio.c (usage): Use gettext.
	(process_args): Ditto.

	* copyout.c (write_out_header): Use gettext.
	(process_copy_out): Ditto.
	(read_for_checksum): Ditto.

	* version.c: Changed definition of version_string; changed all
	users.

	* copypass.c (process_copy_pass): Use get_next_file_name.

	* copyout.c (process_copy_out): Use get_next_file_name.

	* getfile.c: New file.

	* global.c (pax_file_names): New variable.
	(num_pax_file_names): Ditto.

	* Makefile.in (SRCS): Include cpio.c, pax.c.
	(cpio): Link against cpio.o.
	(pax): New target.
	(cpio.o): Ditto.
	(pax.o): Ditto.

	* extern.h: Include <libintl.h>.

1995-10-16  Tom Tromey  <tromey@cambric.colorado.edu>

	* extern.h (gettext): New define.
	(_): Ditto.

	* pax.c: New file.

	* cpio.c: New file (contents from main.c).

	* main.c (process_args): Use format_error.

	* util.c (initialize_buffers): Moved from main.c.

	* main.c (process_args): Use find_format.

	* format.c: New file.

1995-08-26  Franois Pinard  <pinard@iro.umontreal.ca>

	* names.c (uid_to_uname, gid_to_gname): Ensure that the empty
	string is returned when not found, instead of the previous one.

1995-08-06  Franois Pinard  <pinard@iro.umontreal.ca>

	* buffer.c (new_volume): Use stderr rather than stdlis for
	interactions.  Clarify `archive == 0' into `archive == STDIN'.
	Reported by Scott Hunziker.

1995-08-02  Franois Pinard  <pinard@iro.umontreal.ca>

	* diffarch.c (diff_archive): When symlink differs, report the
	file name, not the link name.
	Reported by Dale R. Worley and Wolfram Wagner.

1995-07-23  Franois Pinard  <pinard@iro.umontreal.ca>

	* Makefile.in (Makefile): Remove some useless lines.

1995-06-27  Franois Pinard  <pinard@iro.umontreal.ca>

	* tar.h: Sort out declarations a little better.
	* tar.c (decode_options): Reorder the cases in the big switch.

	* tar.h: Introduce OLDGNU_COMPATIBILITY, enum archive_format,
	variable archive_format.  Delete flag_old_archive, flag_standard.
	* tar.c (decode_options): Initialize archive_format so that -o
	yields V7_FORMAT, nothing yields OLDGNU_FORMAT, --posix yields
	GNU_FORMAT, and --posix with POSIXLY_CORRECT yields POSIX_FORMAT.
	* create.c (start_header): Use TMAGIC and TVERSION if required.
	Replace all flag_old_archive and flag_standard appropriately.

	* tar.c: Implement a --record-size option, which is an
	alternate way of saying --blocking-factor, in bytes this time.

	* tar.h, tar.c, create.c (dump_file): Implement
	a --no-recurse option, to help using tar with find.
	Reported by Chris G. Demetriou, Jamie Zawinski, Kimball
	Collins, Loic Dachary, Oswald P. Backus IV and Stuart Poulin.

	* tar.h, tar.c, buffer.c (child_open_for_compress):
	Delete --block-compress, issue a warning if used.  It was never
	obeyed while outputting on disk files, where it would have been
	useful.  It was only obeyed for pipes, remotes and devices, that
	is, exactly when it would be an error not to specify it.

	Reported by Hans Guerth, James H Caldwell Jr, Jean-loup Gailly,
	Jeffrey W. Parker, John D. Sybalsky, Kai Schlichting, Marcin
	Matuszewski, Mike Silano, Paul O'Connor, Pete Geenhuizen and
	Richard Stallman.

	* buffer.c (open_archive): Cosmetic changes.

	* buffer.c, diffarch.c, tar.h, update.c: Rename fl_read by
	flush_read and fl_write by flush_write.

1995-06-27  John Oleynick  <juo@wombat.gnu.ai.mit.edu>

        * configure.in: fixed for new autoconf.  Added check to make
	sure fnmatch() works.
        * Makefile.in: changed realclean to maintainer-clean.  Added
	support to handle fnmatch separate from other LIBOBJS.
        * cpio.texi:  More changes for 2.4.

1995-06-26  Franois Pinard  <pinard@iro.umontreal.ca>

	* tar.c (usage): Remind that `USER@' may be specified.
	Reported by John J. Szetela and Oliver Trepte.

	* tar.c (usage): Replace `modificators' by `modifiers'.
	Reported by Alan Modra.

	* extract.c (set_mode, set_stat): New functions, from
	previous code, elsewhere.  Replace various occurrences of code
	appropriately with function calls.  Ensure mode bits are properly
	set in all circumstances.  This may imply calling set_mode twice.
	Reported by Piercarlo Grandi and Tim Magill.

	* extract.c: Save the whole stat information in saved
	directory information, instead of parts of it, all mistyped.
	(restore_saved_dir_info): Free information as we consume it.
	Simplify code by using set_mode and set_times.  Rename routine to
	apply_delayed_set_stat, and do some other cleanup around it.

	* *.[hc]: Replace flag_confirm by flag_interactive,
	flag_do_chown by flag_same_owner,
	flag_exstdout by flag_to_stdout,
	flag_follow_links by flag_dereference,
	flag_gnudump by flag_incremental,
	flag_ignorez by flag_ignore_zeros,
	flag_keep by flag_keep_old_files,
	flag_local_filesys by flag_one_file_system,
	flag_modified by flag_touch,
	flag_multivol by flag_multi_volume,
	flag_namefile by flag_files_from,
	flag_new_files by flag_after_date,
	flag_oldarch by flag_old_archive,
	flag_reblock by flag_read_full_records,
	flag_run_script_at_end by flag_info_script,
	flag_sayblock by flag_block_number,
	flag_sorted_names by flag_same_order,
	flag_sparse_files by flag_sparse,
	flag_startfile by flag_starting_file,
	flag_use_protection by flag_same_permissions,
	OPTION_COMPRESS_PROG by OPTION_USE_COMPRESS_PROGRAM,
	flag_volhdr by volume_label,
	flag_compressprog by compress_program,
	flag_rsh_command by rsh_command,
	and flag_volno_file by volno_file.

	* tar.c: Rename --modification-time by --touch, and provide a
	warning for the old option.

1995-06-24  Franois Pinard  <pinard@iro.umontreal.ca>

	* list.c (decode_header): At extraction time, use the stored
	uid if uname is unknown in this system, and use the stored gid if
	gname is unknown in this system, instead.  This solves a long
	lasting bug by which restored files were all owned by root, using
	an incomplete /etc/passwd or /etc/group file.
	* names.c: Rename finduname to uid_to_uname and findgname to
	gid_to_gname, exchanging the order of arguments.  Use uid_t and
	gid_t instead of int's.  Use empty strings in cached_[ug]name for
	marking there is no valid cached translation, instead of using
	magic values for cached_[ug]id.  Rename finduid to uname_to_uid
	and findgid to gname_to_gid, adding a second argument to store the
	result if found, and returning a success/failure indication, not
	anymore assuming the current [ug]id by default.
	* tar.h, create.c, list.c: Adjust prototypes and callers.

	Reported by Anders Andersson, Bernard Derval, Brian Perkins,
	Charles Fu, Daniel Trinkle, Ian Jackson, Johannes Helander,
	Michael Lin, Richard Sims, Robert E. Brown, Tim P. Starrin and
	Torkel Hasle.

	* tar.h, create.c, list.c, names.c, tar.c:
	Implement --numeric-owner, to replace the NONAMES define.  Then,
	ensure some reasonable values to magic and linkflags if POSIX.
	Reported by Benedikt Stockebrand, Ian Jackson and Stephen Gildea.

	* buffer.c: Delete save_block function, as well as
	saved_block_pointer and saved_block variables.  Blocks were
	carefully saved indeed, but never consulted after the fact.
	* tar.h: Delete save_block prototype.
	* *.c: Delete all usages of save_block.

	* rmt.c: Add static to variable declarations.
	* list.c (read_header): Rename recsum to recorded_sum.

1995-06-23  Franois Pinard  <pinard@iro.umontreal.ca>

	* *.[hc]: Rename --read-full-blocks to --read-full-records,
	--block-size to --blocking-factor, and --record-number to
	--block-number.
	* tar.c (decode_options): Diagnose usage of old names.

	* *.[hc]: Rename saverec to save_block, findrec to
	find_next_block, and userec to set_next_block_after.
	Replace endofrecs by available_space_after which does the space
	computation instead of returning the end pointer, adjust and
	simplify all callers, by using variable data_block systematically.
	Also, rename union block field charptr to buffer.

1995-06-22  Franois Pinard  <pinard@iro.umontreal.ca>

	* *.[hc]: Exchange "record" and "block" almost everywhere and
	whenever appropriate, to follow the terminology used in
	P1003.1-1990, and so removing a lot of confusion in sources.

	* tar.h: Prefer naming constants and fields per P1003-1.1990 as
	far as possible.  Rename those remaining LF_xxx to GNUTYPE_xxx.
	* *.c: Adjusted accordingly.

	* tar.h: Clean up the header structure.  Make very clear what is
	specified by POSIX, and what is extended format.  Use
	xxx_FIELD_SIZE instead of NAMSIZ, TUNMLEN and TGNMLEN.  Dismangle
	some other names, on the way...
	* *.c: Adjusted accordingly.

	* tar.h: Do not declare baserec, declare current_block_ordinal.
	* buffer.c (current_block_ordinal): New function.
	Rename baserec to record_start_block, and make it static.
	* list.c: Use current_block_ordinal, avoid baserec computations.
	* buffer.c, list.c: Get rid of saved_recno and annofile.

	* buffer.c, diffarch.c: Move no_op and wantbytes from
	buffer.c to diffarch.c.  Correct prototypes so first arg is long.
	* tar.h: Do not declare no_op nor wantbytes, anymore.

	* tar.h, buffer.c: Move ar_block, ar_record and ar_last
	from tar.h to buffer.c, renaming them to record_start,
	current_block, record_end respectively.
	* update.c: Add temporary extern declaration for record_start,
	current_block and record_end.

	* tar.h, buffer.c: Move ar_reading from tar.h to buffer.c,
	renaming it to reading_archive.
	* diffarch.c: Add temporary extern declaration for
	reading_archive.

	* buffer.c, create.c, diffarch.c, extract.c, gnu.c,
	list.c, names.c, rmt.c, rmt.h, rtapelib.c,
	tar.c, update.c: Replace many #ifdef's by #if's, and
	#ifndef's by #if !'s.

	* buffer.c (redirect): New name for dupto.  Callers changed.

	* create.c (dump_file), extract.c (extract_archive,
	extract_sparse_file), tar.h: Remove crumb about ending_blanks
	and end_nulls.

	* Makefile.in (all): Do not prepare genfile by default, as it
	is only needed for checking.

	* tar.c (decode_options): Diagnose lacking arguments to old
	options.
	Reported by Aage Robeck, Alan Cox, Benny Holmgren, Bruno Haible,
	Daniel Quinlan, Michael Schmidt, Richard J. Kettlewell and Robert
	Leslie.

1995-06-21  Franois Pinard  <pinard@iro.umontreal.ca>

	* rtapelib.c (__rmt_open): Avoid dereferencing remote_user
	when NULL.

	Reported by Alois Steindl, Amos Yahil, Anders Liljeborg, Andre
	Novaes Cunha, Andreas Haumer, Andreas Reuter, Andy Gay, Bdale
	Garbee, Bradley A. Smith, Brett Gaines, Bruce Jerrick, Calvin
	Cliff, Cameron Elliott, Charles Lopes, Charles M. Hannum, Chris
	Metcalf, Christophe Colle, Christopher T. Johnson, Dale Wiles,
	David Shaw, Dimitri Bougoulias, Daniel Hagerty, Dave Gregorich,
	David Mansfield, David Nugent, David Shaw, David Steiner, Douglas
	Scott, Dunstan Vavasour, Edgar Taube, Eduardo Kortright, Elmer
	Fittery, Eric Benson, Eric M. Boehm, Gerd Knorr, Graham Whitted,
	Harald Milz, Heiko Schlichting, James V. Di Toro III, Jan Carlson,
	Janne Snabb, Jeff Sorensen, Jens Henrik Jensen, Jim Clausing, John
	J. Szetela, John R. Vanderpool, Jurgen Botz, Karl Berry, Karlos
	Z. Smith, Karsten Thygesen, Koji Kishi, Luke Mewburn, Manuel
	Munier, Marc Ewing, Matthew J. D'Errico, Martin Goik, Maxime
	Taksar, Michael Hayes, Michael Schwingen, Michael Smolsky, Michael
	Kaufman, Mike Walker, Minh Tran-Le, Mitsuaki Masuhara, Nelson
	H. F. Beebe, Noel Cragg, Olaf Wucknitz, Oliver Trepte, Olivier
	Roussel, Patrick Fulconis, Paul Kanz, Paul Nordstrom, Pekka
	Janhunen, Peter Carah, Peter Kutschera, Phil Hands, Randy Bias,
	Reuben J. Ravago, Ricardo Marek, Robert Anthony Nader, Rod
	Buchanan, Roderich Schupp, Russell Cattelan, Scott J. Kramer,
	Scott L. Burson, Simon Wright, Sisira Jayasinghe, Steffen Stempel,
	Thomas M. Browder Jr., Thomas Waas, Tim Bradshaw, Tim Lashua,
	Timothy J. Lee, Tom Popovitch, Toshiaki Nishi, Victor J. Griswold,
	Wayne Christopher, William J. Eaton, Wlodzimierz Jan Martin,
	Wolfgang Rupprecht and Wolfram Wagner.

	* tar.h: Remove external prototypes related to rtapelib.c, as
	those are already declared in rmt.h.

1995-06-18  Franois Pinard  <pinard@iro.umontreal.ca>

	* buffer.c (xclose): New, from port.c (ck_close).
	Replace ck_close by xclose in all modules.
	* port.c: Remove ck_close.

	* port.c: Remove ck_malloc, because xmalloc can be used
	instead, now that it protects against malloc(0) returning NULL.
	* gnu.c (gnu_restore), list.c (read_header): Replace
	ck_malloc with xmalloc.  In gnu_restore, remove skipping code in
	case of failed allocation, because tar already aborted in xmalloc.
	* tar.h: Delete ck_malloc declaration.

	* port.c: Remove mknod, link, chown and geteuid, which
	normally exist on Unix.  To be reinserted later, as needed.
	Reported by Jyh-Shyang Wang, Nelson H. F. Beebe, Philippe Defert
	and Serge Granik.

	* tar.c: Declare TTY_NAME, moved over from port.c.

	* extract.c (extract_archive), tar.c (decode_options):
	Clean out old NO_OPEN3 code.
	* Makefile.in: Adjusted.

	* buffer.c (child_open): In-line previous ck_pipe code.
	* tar.h: Delete ck_pipe declaration.
	* port.c: Delete ck_pipe function.

	* misc.c: New, reorganizing remaining code from port.c.
	* port.c: Deleted.
	* Makefile.in: Adjusted.

	* misc.c (un_quote_string): If `\' ends a string to unquote,
	just pass it undisturbed.
	From Robert Lipe.

	* system.h: Replace many #ifdef by #if, #ifndef by #if !.

1995-06-17  Franois Pinard  <pinard@iro.umontreal.ca>

	* Release tar 1.11.8.

	* Makefile.in (mostlyclean): Remove also _*.c and _*.o.

	* create.c (dump_file), gnu.c (get_dir_contents): Cast
	(int) explicitely for test.

	* Makefile.in ($(OBJECTS)): Depend on ../intl/libgettext.h
	instead of ../intl/libintl.h, which does not always exist.

	* genfile.c: Define EXIT_SUCCESS and EXIT_FAILURE if not.
	* tar.c (main): Use TAREXIT_SUCCESS instead of EXIT_SUCCESS.

	* tar.h: Use off_t instead of long for the second argument in
	__rmt_lseek declaration.
	* system.h: Remove typedef of off_t, because AC_TYPE_OFF_T
	takes care of it now.
	Reported by Coranth Gryphon, Jim Blandy and Thomas Krebs.

1995-06-15  Franois Pinard  <pinard@iro.umontreal.ca>

	* checktar.sh: Send a message saying that it is still useless.

1995-06-11  Franois Pinard  <pinard@iro.umontreal.ca>

	* tar.h, tar.c (decode_options), extract.c
	(extract_archive), diffarch.c (diff_archive), create.c
	(dump_file, start_header), tar.c (decode_options): Replace
	flag_absolute_paths by flag_absolute_names.
	* tar.c (decode_options): Implement OBSOLETE_ABSOLUTE_NAMES for
	reporting --absolute-paths as obsolete.

	* system.h: Conditionnaly include <locale.h> and define
	setlocale to void independently of ENABLE_NLS.
	Reported by Ulrich Drepper.

1995-06-10  Franois Pinard  <pinard@iro.umontreal.ca>

	* tar.c (long_options): Use no_argument and require_argument,
	instead of constants.  Have long option names translated to short
	options whenever possible, rather than setting flags directly:
	easing option management is worth a few extra nanoseconds.

	* tar.c (long_options): Add --gunzip as meaning -z.
	Reported by Bruno Haible.

1995-06-07  Franois Pinard  <pinard@iro.umontreal.ca>

	* Makefile.in: Use subdir and distdir.

	* system.h [NLS]: Simplify by merely including <libintl.h>.
	Also, define setlocale to empty only if the setlocale function is
	not known, instead of when <locale.h> is missing.
	* Makefile.in (INCLUDES): Use ../intl in compilations,
	taking care of the fact libintl.h might have been symlinked there.

1995-06-05  Franois Pinard  <pinard@iro.umontreal.ca>

	* tar.c, tar.h: Rename TAR_EXTERN to GLOBAL.

	* tar.h: Delete COMMAND_VERSION.
	* tar.c: Replace OPTION_HELP and OPTION_VERSION commands by
	show_help and show_version variables, so `--version --create' will
	not diagnose `Too many commands'.  Adjust things so this works.
	Reported by Marty Leisner.

1995-06-04  Franois Pinard  <pinard@iro.umontreal.ca>

	* Makefile.in (check): New goal.
	* checktar.sh: New script.
	* genfile.c: New file.
	* Makefile.in (all): Prepare genfile.
	* Makefile.in: Distribute checktar.sh and genfile.c.

1995-06-03  Franois Pinard  <pinard@iro.umontreal.ca>

	* tar.h: Adjust so extracted doc/header.texi is neater.

1995-05-30  Franois Pinard  <pinard@iro.umontreal.ca>

	* tar.c (name_match): Use %s for printing directory, not %d.
	Reported by Marty Leisner.

	* tar.c (name_gather, addname): chdir_name receives string
	pointers which might later be overwritten, but nevertheless saved
	into structures, so, use xstrdup for the time being.
	Reported by Michael Holmes.

	* tar.c (name_next, name_from_list): Abort when chdir fails.
	Reported by Ian Jackson and Marty Leisner.

1995-05-28  Franois Pinard  <pinard@iro.umontreal.ca>

	* rmt.h: Declare second argument of __rmt_lseek to be off_t
	instead of long, so it is the same as in rmt.c.
	Reported by Chris Arthur.

	* buffer.c (close_archive): Compensate for the addition of 2
	to ar_block at open_archive time, for when -M used, just before
	calling free.
	Reported by Bruno Haible, Clinton Carr, Hernan Prieto Schmidt,
	Kevin Dalley, Loren J. Rittle and Marty Leisner.

	* rmt.c: Replace SSIZE by STRING_SIZE, avoiding a conflict
	with some header files.
	Reported by Kaveh R. Ghazi and William Bader.

	* tar.c: Use DEVICE_PREFIX instead of DEVICE_PREXIX, and
	WITH_REGEX instead of WITH_REGEC.
	Reported by Bruno Haible.

1995-05-16  Franois Pinard  <pinard@iro.umontreal.ca>

	* Makefile.in (tar): Have $(OBJECTS) depend on system.h.

	* system.h: Many adjustements for GNU gettext.

1995-05-09  Franois Pinard  <pinard@iro.umontreal.ca>

	* Makefile.in: Clean glocale out.

1995-05-08  Franois Pinard  <pinard@iro.umontreal.ca>

	* Makefile.in: Use libintl.a while linking.
	* system.h: Include <libintl.h> unconditionally, instead only
	if WITH_CATALOG.  Let <libintl.h> define _() appropriately.
	* tar.c (main): Call textdomain.

1995-05-02  Franois Pinard  <pinard@iro.umontreal.ca>

	* system.h, gnu.c, list.c, port.c: Avoid
	superfluous parentheses in macro definitions.
	* port.c: Capitalize macro arguments.
	* buffer.c, create.c, diffarch.c, tar.c: Use comma
	operator when assignment in test.

1995-04-27  Franois Pinard  <pinard@iro.umontreal.ca>

	* port.c (link): Use WARN to report the message.
	Reported by Sherwood Botsford.

1995-03-19  Franois Pinard  <pinard@iro.umontreal.ca>

	* Makefile.in: Remove GLOCALE, add LINGUAS, use fp_WITH_CATALOGS.
	* system.h: Use WITH_CATALOGS to define _() differently.

1995-03-14  Franois Pinard  <pinard@iro.umontreal.ca>

	* rtapelib.c (__rmt_open): Close the unused side of each
	pipe, instead of the useful one, prior to processing.
	Reported by Charles Lopes and Minh Tran-Le.

1995-02-22  Franois Pinard  <pinard@iro.umontreal.ca>

	* Makefile.in: Replace `date' by `echo timestamp'.

1995-02-19  Franois Pinard  <pinard@iro.umontreal.ca>

	* Makefile.in: Support ID files.  Do not distribute TAGS.

1995-02-13  Franois Pinard  <pinard@iro.umontreal.ca>

	* Makefile.in: Use top_srcdir.

1995-02-11  Franois Pinard  <pinard@iro.umontreal.ca>

	* gnu.c (is_dot_or_dotdot): Through NFS, readdir might deliver
	empty filenames under old Solaris 2.4, causing endless loops in
	tar.  As a workaround, avoid `' as done already for `.' and `..'.
	Reported by Jan Carlson.

1995-02-05  Franois Pinard  <pinard@iro.umontreal.ca>

	* Makefile.in (maintainer-clean): New name for realclean.

1995-01-04  Franois Pinard  <pinard@iro.umontreal.ca>

	* extract.c (make_dirs) [MSDOS]: Correct for Turbo C, which may
	return EACCES instead of EEXIST on mkdir.
	Reported by Jeffrey Goldberg.

	* tar.c (usage) [MSDOS]: Do not tell about -N and related.
	(decode_options) [MSDOS]: Be blind to -N and related.
	Reported by Jeffrey Goldberg.

	* rmt.h (_remdev): A filename is not remote if the colon is
	preceeded by a slash, to take care of `/:/' which is a shorthand
	for `/.../<CELL-NAME>/fs' on OSF's Distributing Computing
	Environment (DCE) and Distributed File System (DFS).
	Reported by Travis L. Priest.

1995-01-03  Franois Pinard  <pinard@iro.umontreal.ca>

	* tar.c (decode_options): Renamed from options.  Convert
	oldish-style non-dashed options to modern writing before
	performing option decoding.  Diagnose when modern options are met
	before old style options are fully converted.  This allows
	mixing of option styles on a single call.  Avoid getoldopt and
	use getopt_long instead.
	* getoldopt.c: Deleted.
	* tar.h: Prototype deleted.
	* Makefile.in: Adjusted.
	Reported by Bruno Haible, Les Mikesell, Patrick Timmons and Saul
	Lubkin.

1995-01-02  Franois Pinard  <pinard@iro.umontreal.ca>

	* system.h: New file, split out of tar.h.
	* buffer.c, create.c, diffarch.c, extract.c,
	getoldopt.c, gnu.c, list.c, mangle.c, names.c,
	port.c, tar.c, update.c: Include "system.h", and move
	the inclusion of "tar.h" down after system dependent definitions.
	* Makefile.in: Distribute system.h.

	* rmt.c: Include "system.h", and simplify accordingly.
	* rtapelib.c: Include "system.h", and simplify accordingly.
	* rmt.h: Simplify according to the inclusion of "system.h".

	* system.h: Include conditionnaly <sys/gentape.h>,
	<sys/tape.h>, <sys/mtio.h>, <sys/ioctl.h> and <sys/io/trioctl.h>.
	* buffer.c, diffarch.c, rmt.c, rtapelib.c,
	update.c: Simplify accordingly.

	* system.h: If it exists, include <sys/ioccom.h> prior to
	<sys/mtio.h>, to account for problems when GNU libc 1.0x is
	installed over SunOS 4.1.3: GNU libc does not provide sys/mtio.h,
	so it is taken from Sun header files which use things like _IOW,
	which GNU libc despises, sys/ioccom.h then provides definitions.
	Reported by Joseph E. Sacco.

1994-12-27  Franois Pinard  <pinard@iro.umontreal.ca>

	* rmt.h: Ensure strrchr is defined to rindex in some cases.
	Reported by Karl Vogel.

1994-12-18  Franois Pinard  <pinard@iro.umontreal.ca>

	* tar.h: Include <ctype.c> and declare ISASCII.
	* gnu.c: Adjust, declare and use ISDIGIT and ISSPACE.
	* list.c: Adjust, declare and use ISODIGIT and ISSPACE.
	* port.c: Adjust, declare and use ISPRINT.
	Reported by Bruno Haible, Konno Hiroharu and Max Hailperin.

1994-12-14  John Oleynick  <juo@wombat.gnu.ai.mit.edu>

	* copypass.h:  When given the -a option, set the access time of
	the copy to be the access time of the original, instead of the
	modification time of the original.
	Reported by Charles Karney.

	* cpio.texi:  Updated with changes for 2.4.

1994-12-11  Franois Pinard  <pinard@iro.umontreal.ca>

	* buffer.c, tar.c [WITH_REGEX]: Check it.

1994-12-03  Franois Pinard  <pinard@iro.umontreal.ca>

	* rmt.c: Adjust for localization, by including <locale.h> and
	<libintl.h>, by defining _(), by defining and calling setlocale,
	and by defining and initializing program_name.
	* Makefile.in: Use locale.o and libtar.a with rmt.

	* Makefile.in: Ensure INSTALL_DATA is defined.

	* Makefile.in, tar.h, tar.c:
	Localize, adapting from how it is done in sharutils.

	* Makefile.in, tar.c: Rename PRODUCT to PACKAGE.

1994-11-29  Franois Pinard  <pinard@iro.umontreal.ca>

	* buffer.c (backspace_output): Change cur from long to off_t.
	* diffarch.c (diff_archive): Idem for offset.
	* extract.c (extract_archive): Idem for offset.
	* rmt.c: Idem for lseek ().
	(main): For case 'L', use atol instead of atoi, and cast the
	result to (off_t) rather than (long).
	* rtapelib.c (__rmt_lseek): Idem of offset argument.
	* tar.h: Change offset of sp_array from int to off_t.
	* update.c (move_arch): Change cur from long to off_t.
	Reported by David J. MacKenzie.

1994-11-26  Franois Pinard  <pinard@iro.umontreal.ca>

	* rmt.h, tar.h, buffer.c, create.c,
	diffarch.c, extract.c, gnu.c, list.c,
	rtapelib.c, update.c: Rename _ to __P.
	* tar.h, rmt.h: Declare _ as a macro returning its
	argument, or else, include <libintl.h> and declare _ as gettext.
	* tar.c: Possibly include <locale.h> and call setlocale.
	* rmt.c, buffer.c, create.c, diffarch.c,
	extract.c, getoldopt.c, gnu.c, list.c,
	mangle.c, port.c, rtapelib.c, tar.c,
	update.c: Use _ macro over all localizable strings.

	* rtapelib.c: Declare prototype for xstrdup.  Do not declare
	strstr, which is not needed.

1994-11-03  John Oleynick  <juo@wombat.gnu.ai.mit.edu>

	* safe-stat.h, Makefile.in:  New file used by mkdir.c.  This will go
	away when we get the real safe-xstat.[ch]in for mkdir.c.

	* main.c:  Don't mention [--null] twice in -p's usage message.
	Changed --no-absolute-paths to --no-absolute-filenames.

	* cpio.1:  Updated man page with new features.

	* cpio.texi, texinfo.tex, Makefile.in:  Added texi documentation.
	Reported by Robert Carleton.

1994-11-01  Franois Pinard  <pinard@iro.umontreal.ca>

	* Makefile.in: Clean up, following those of GNU m4.  I will
	not detail all the changes here.
	* tar.c: Use PRODUCT and VERSION instead of version_string.

1994-10-30  Franois Pinard  <pinard@iro.umontreal.ca>

	* tar.h [__STDC__]: Use #if instead of #ifdef.

1994-10-27  Franois Pinard  <pinard@iro.umontreal.ca>

	* rmt.h, tar.h, buffer.c, create.c, diffarch.c,
	extract.c, gnu.c, list.c, mangle.c, tar.c,
	update.c: Rename all f_* variables to flag_*.

	* tar.h, buffer.c, tar.c, update.c: Rename cmd_mode into command_mode.
	* tar.c (SET_COMMAND_MODE): New macro, use it.

	* port.c (quote_copy_string): Prevent sign extension of
	character while copying it to an int.
	* (un_quote_string): Increment to_there pointer in all cases.
	Reported by Konno Hiroharu, Mats Lofkvist, Max Hailperin and
	Ryutaro Susukita.

1994-10-09  Franois Pinard  <pinard@iro.umontreal.ca>

	* rmt.c, rtapelib.c, tar.h: Get rid of CONFIG_BROKETS.

1994-10-04  Franois Pinard  <pinard@iro.umontreal.ca>

	* diffarch.c (fill_in_sparse_array): Add a cast for Pyramid's
	dumb compiler.  Later remove the cast and compare to 0 instead.
	* extract.c (extract_archive): Idem.
	Reported by Karl Vogel and Kaveh R. Ghazi.

1994-10-03  John Oleynick  <juo@wombat.gnu.ai.mit.edu>

	* makefile.pc, system.h:  Changes to compile with Borland C++ 4.0.

1994-09-29  John Oleynick  <juo@wombat.gnu.ai.mit.edu>

	* makepath.c: Don't #define index if it is already #defined.

	* mt.c:  Check for __hpux defined instead of __hpux__.
	Reported by Eric Backus.

1994-09-29  John Oleynick  <juo@wombat.gnu.ai.mit.edu>

	* extern.h, util.c, copyout.c, copypass.c, main.c, global.c:
	Never mind --ignore-disk-input-errors flag, we'll just always
	do that, like tar.

	* global.c, extern.h, main.c, copyin.c, copyout.c, copypass.c:
	Added --quiet flag to supress printing number of blocks copied.

	* global.c, extern.h:  If compiled with gcc, make input_bytes
	and output_bytes `long long' instead of `long'.  We need more
	than 32 bits to keep track of the number of bytes copied to
	and from tape drives that hold more than 4Gbytes.

	* util.c, copyin.c, main.c, global.c, extern.h:  Added
	--only-verify-crc flag to read a CRC format archive and verify
	its contents' CRCs.

	* copyout.c:  Fixed problem with creating oldc format archives
	on machines with 16 bit ints.
	Reported by Martin Poole.

	* mt.c: Need to open tape WR_ONLY for erase command (and probably
	others?).  Accept `eject' as a synonym for `offline'.  Accept `-t'
	as a synonym for `-f', to be compatible with HPUX mt, which only
	accepts `-t'.
	Reported by Robert Vogelgesan.

1994-09-28  John Oleynick  <juo@wombat.gnu.ai.mit.edu>

	* extern.h, global.c, main.c, util.c: only write sparse files
	when given --sparse flag.

	* extern.h, util.c, copyout.c, copypass.c, main.c, global.c:
	Added support for --ignore-disk-input-errors flag.

1994-09-27  Franois Pinard  <pinard@iro.umontreal.ca>

	* diffarch.c: Normalize capitalization in diagnostics.

1994-09-26  Franois Pinard  <pinard@iro.umontreal.ca>

	* tar.c (name_next, name_match): Abort tar if directory cannot
	be changed, instead of going on.  This is not an innocuous error.
	Reported by Marty Leisner.

1994-09-15  Franois Pinard  <pinard@iro.umontreal.ca>

	* rtapelib.c: Include "rmt.h" only once <sys/types.h> has been
	included, because off_t might not be defined otherwise.
	Reported by James W. McKelvey, John L. Chmielewski, Karl
	Vogel, Kaveh R. Ghazi an and Jim Meyering and Tilman Schmidt.

1994-09-14  Franois Pinard  <pinard@iro.umontreal.ca>

	* Makefile.in: Cleanup:
	(DISTFILES): Distribute TAGS.
	(ansi2knr): Use $(LIBS).
	(TAGS): Make TAGS in $(srcdir) only.
	(distclean): Do not remove TAGS.
	(realclean): Remove TAGS.
	(Makefile): Have ./config.status create this Makefile only.

1994-09-13  Franois Pinard  <pinard@iro.umontreal.ca>

	* buffer.c: Remove the presetting of stdlis, because stdout is
	not a constant in GNU libc.
	Reported by Joseph E. Sacco and Thomas Bushnell n/BSG.

	* buffer.c (new_volume): Pass an otherwise unused argument to
	wait, do not use NULL.
	Reported by Thomas Bushnell n/BSG.

1994-09-05  Franois Pinard  <pinard@iro.umontreal.ca>

	* Makefile.in (TAGS): Remove -t on etags call.  It has been
	the default behavior for a few releases of Emacs and it seems that
	option -t is now disappearing (from Emacs 19.25, at least).
	Reported by Goeran Uddeborg.

1994-09-02  Franois Pinard  <pinard@iro.umontreal.ca>

	* gnu.c (get_dir_contents): Do not set dp->allnew if dp is not
	set itself.
	Reported by Piercarlo Grandi.

	* extract.c (extract_archive): Issue diagnostic or verbose
	messages to msg_file, instead of stdout.
	Reported by Piercarlo Grandi.

1994-08-24  David J. MacKenzie  <djm@churchy.gnu.ai.mit.edu>

	* configure.in: Replace calls to AC_REMOTE_TAPE and AC_RSH
	with equivalent code, since those macros are going away.

1994-08-23  Franois Pinard  <pinard@iro.umontreal.ca>

	* tar.h: Do not declare alloca if already defined, so HP's
	+Olibcalls compiler option works.
	Reported by John David Anglin.

	* rtapelib.c (__rmt_open): Use REMOTE_SHELL only if defined.
	Otherwise, if the command argument has been specified and
	REMOTE_SHELL is not defined, immediately return an error.
	Reported by Bruno Haible, Kaveh R. Ghazi, Marty Leisner,
	Torkel Hasle and William Bader.

	Because --rsh-command may always be given, even if no remote shell
	was found at configure time, remote capabilities are always
	compiled.  This also solve other problems related to RTAPELIB.
	* Makefile.in: Always compile $Urtapelib.o.
	* buffer.c (child_open): Always test _remdev, do not depend
	anymore on HAVE_RTAPELIB.
	* rmt.h [!HAVE_RTAPELIB]: Remove some code.
	Reported by Andreas Schwab and Vic Abell.

	* rtapelib.c: Remove unused COMPAT (mis)feature.  Remove most
	length limitations for remote host name, remote user name and
	remote device name.  Duplicate path, and free it in all cases.
	* (_rmt_rexec): The `user' parameter may never by the empty
	string.  Remove code for that case.

1994-08-22  Franois Pinard  <pinard@iro.umontreal.ca>

	Little cleanup in installation:
	* Makefile.in: Remove rule for ../lib/libtar.a.

1994-08-21  Franois Pinard  <pinard@iro.umontreal.ca>

	* Makefile.in: Correct for when a different	build directory.

	* tar.h: Replace W* definitions.  Adapted from make 3.71.
	* buffer.c (close_archive): Replace WIFCOREDUMPED by
	WCOREDUMP.  Previous WIFSIGNALED definition was excluding SIGSTOP,
	new definition do not exclude it anymore.  We'll see.
	Reported by Demizu Noritoshi, Greg Black, Kaveh R. Ghazi,
	Robert E. Brown and Russ Evans.

1994-08-20  Franois Pinard  <pinard@iro.umontreal.ca>

	This might (?) solve the dirent problems on NeXT's and Apollo's:
	* tar.h: Change includes and defines from older AC_DIR_HEADER
	style to newer and clearer AC_HEADER_DIRENT style.
	* create.c, gnu.c: Replace NLENGTH by NAMLEN.
	Reported by Drew Trieger, Hugh Secker-Walker, James W. McKelvey,
	Robert E. Brown and Thomas Krebs.

1994-08-17  Franois Pinard  <pinard@iro.umontreal.ca>

	Remove some shadowings.
	* update.c (update_archive): Rename head_standard to unused.
	* buffer.c (open_archive): Rename head to label.
	(fl_read): Rename head to cursor.

	* gnu.c (dirent_cmp): Use (char *const *), not (const char **)
	for not loosing the const specifier while casting.

	* mangle.c (extract_mangle): Remove unused argument.
	* tar.h: Adjust prototype.
	* extract.c (extract_archive): Caller changed.

	* rtapelib.c (__rmt_open): Remove useless mode parameter.
	* rmt.h, tar.h: Adjust prototype.
	* rmt.h: Adjust macros calling __rmt_open.
	* create.c (deal_with_sparse): Remove unused argument.
	* create.c (dump_file): Caller changed.
	Reported by Greg Black.

	* Makefile.in: Avoid $U in defining RTAPELIB.  Remove both
	rtapelib.o and _urtapelib.o explicit rules, not needed anymore.
	* rmt.h, buffer.c [HAVE_RTAPELIB]: Instead of !NO_REMOTE.
	Reported by Andreas Schwab.

	* Makefile.in: Correct a typo in $Ubuffer.o dependencies.
	Reported by Andreas Schwab.

	* rtapelib.c (__rmt_ioctl): Compile the MTIOCGET case only if
	this symbol is defined.  This also solves a missing mt_type field
	on NS32016 running SysVr2.2.
	Reported by Greg Black.

	* rtapelib.c (__rmt_ioctl) : Conditionnalize only the MTIOCTOP
	case, not the whole routine, with the MTIOCTOP symbol.  In case of
	unrecognized operation, return EOPNOTSUPP instead of EINVAL.
	* rmt.h: Always provide a prototype for __rmt_ioctl.  Delete
	the RMTIOCTL machinery.

1994-08-16  Franois Pinard  <pinard@iro.umontreal.ca>

	* rmt.c, buffer.c: Use a more uniform way of including
	<sys/mtio.h> or its alternates.
	Reported by Daniel R. Guilderson and Kaveh R. Ghazi.

	* Makefile.in: Split rule for $Urtapelib.o into one rule for
	rtapelib.o and one rule for _rtapelib.o, taking care of the fact
	that rtapelib.c is in $(srcdir) while _rtapelib.c is in current
	directory.
	Reported by Andreas Schwab, Kaveh R. Ghazi, Minh Tran-Le and
	Per Foreby.

	* rmt.c (string_error): Correct DEBUG2 into DEBUG1, and strint
	into string.
	Reported by Anders Andersson, Bruno Haible, Thomas Krebs and
	Thomas Knig.

	* Makefile.in: Add $U's to rtapelib and rmt specific rules.
	Reported by Thomas Knig.

1994-08-15  Franois Pinard  <pinard@iro.umontreal.ca>

	* rmt.c (numeric_error): Renamed from error.
	(string_error): New, to replace ERROR ((...)), unavailable in rmt.c.

	* rmt.c (checkbuf): Do not accept, nor return record.  Use the
	global instead.  This will get rid of useless shadowings.

	* rmt.h: Give prototypes for __rmt_* routines.
	* rtapelib.c: Include "rmt.h".
	* update.c (move_arch): Cast last rmtioctl argument to char *.
	* buffer.c (backspace_output): Idem.
	* diffarch.c (verify_volume): Idem.

	* Makefile.in (rmt): Declare dependencies over rmt.h.

1994-08-14  Franois Pinard  <pinard@iro.umontreal.ca>

	* rtapelib.c: Use MTIO_CHECK_FIELD instead of mt_type.
	Reported by Ben A. Mesander.

1994-08-13  Franois Pinard  <pinard@iro.umontreal.ca>

	* tar.h: Include <sys/wait.h> if it exists, whether POSIX or not.
	Check if WIFSTOPPED is defined, to decide if defining others WIF*.
	Reported by Bruno Haible.

1994-08-11  Franois Pinard  <pinard@iro.umontreal.ca>

	* extract.c (extract_archive) [O_CTG]: Declare longname variable.
	Initialize it as NULL.  This dirty kludge will allow the module to
	compile on Masscomp's, for the time being.
	Reported by Ben A. Mesander.

	* tar.h, rtapelib.c: Declare strstr if we replaced it.
	Reported by Ben A. Mesander, Christian T. Dum and Kaveh R. Ghazi.

1994-08-10  Franois Pinard  <pinard@iro.umontreal.ca>

	* create.c (dump_file): Do not test only for hpux, but also
	for __hpux.  I added __hpux__ too, as done in tar.h.
	Reported by Richard Lloyd.

	* tar.h: Do not include <sys/mknod.h> anymore for HP-UX from
	HP-UX 8 and after, for which definitions are in <sys/sysmacros.h>,
	and reorganize the tests in this area.
	Reported by Christian T. Dum, Dimitris Fousekis, Kimmy Posey,
	Michael Maass, Richard Lloyd and Thomas Knig.

1994-08-09  Franois Pinard  <pinard@iro.umontreal.ca>

	These changes for const-cleaning gnu.c and tar.c:
	* tar.c (read_name_from_file): Work directly on global
	variables instead of accepting parameters.  Return success or
	failure as an int instead of the relocated name_buffer.
	(name_next): Caller changed, internal clean-up of the function.
	Remove trailing slashes on the command call too, not only when
	reading from a file through -T option.
	* gnu.c: Add const to name and dir_text in struct dirname.
	Reported by Ben A. Mesander, Bruno Haible, Christian T. Dum,
	Dean Gaudet, James W. McKelvey, Richard Lloyd and Robert E. Brown.

1994-08-08  Franois Pinard  <pinard@iro.umontreal.ca>

	* tar.c (name_next, name_gather, addname): Use strcmp for
	checking for "-C", instead of decomposed tests, just for clarity.

	* Makefile.in (RSH): Define from configuration.
	(rtapelib.o): Define REMOTE_SHELL from $(RSH) while compiling.
	* rtapelib.c (__rmt_open): If command not given, use
	REMOTE_SHELL, instead of cascading tries of filenames.
	Reported by Bruno Haible.

	* tar.c: Include <fnmatch.h> if FNM_LEADING_DIR is not
	defined, instead of checking for FNM_PATHNAME, because some
	<unistd.h> define the later without defining the former.
	Reported by Thomas Knig.

	* create.c (dump_file): Cast alloca results, for those
	compilers not processing void * properly.
	Reported by Kaveh R. Ghazi.

	* Makefile.in: Get prefix and exec_prefix from configure.
	Reported by Andreas Schwab, Christian T. Dum and Dean Gaudet.

	* src/port.c: Delete mkdir (and rmdir), rename, strstr and
	ftruncate replacements.
	Reported by Kaveh R. Ghazi (for memset and strstr).
	Reported by Bruno Haible (for mkdir and rename).

1994-08-05  Franois Pinard  <pinard@iro.umontreal.ca>

	* tar.h: Replace msg_file by stdlis.
	* buffer.c, gnu.c, list.c, diffarch.c: Idem.

	* tar.c (main): Print version on stdout, not stderr.

	* tar.h: Unconditionnaly insert the pad.  Why play the game of
	forcing the compiler to do it for us?  (Hum!  I'm not so sure.)
	Reported by Bruno Haible.

	* list.c (read_header): Initialize signed_sum to 0.  Use this
	opportunity for slightly reorganizing the code around.
	Reported by Anders Andersson, Andrey A. Chernov, Bruno Haible
	and Chris Ransom.

	* tar.c: Declare name_buffer_length as size_t instead of int.
	Reported by Andreas Schwab, J.T. Conklin, Kaveh R. Ghazi and
	Robert E. Brown.

	* rmt.h: Have the NO_REMOTE case be a particular case of the
	other, for rmtopen and rmtcreat were not transmitting the proper
	number of parameters to open and creat (since 26 July 1994).
	Reported by Andreas Schwab.

	* extract.c (extract_archive): Delay changing owner to after
	doing utime, for keeping long enough the permission of utime'ing.
	(extract_archive, restore_saved_dir_info): Idem for directories.
	Reported by Jonathan I. Kamens.

	* tar.h: Change malloc_dbg to dmalloc, mutatis mutandis.

	* tar.h: Undefine many macros if stat macros found to be
	broken.  Define mkfifo only if configure did not find it.
	Include <sys/param.h> if not _POSIX_SOURCE, then <unistd.h> if
	we have it, than "pathmax.h".  Move _POSIX_VERSION dependent
	code further down.  Do not declare getcwd if we do not have it.
	* tar.c: Do not include <unistd.h>, now in "tar.h".
	Reported by Bernard Chen, Jean-Michel Soenen, John L.
	Chmielewski and Kaveh R. Ghazi.

	* tar.h: Define DEV_BSIZE, ST_BLKSIZE and ST_NBLOCKS,
	borrowing this code from both fileutils-3.9's "lib/system.h" and
	textutils-1.9's "system.h".
	* create.c (dump_file): Straighten the test for sparseness,
	which was requiring one block too much, most probably for trying
	to get around DEV_BSIZE/st_blksize confusion.  Use ST_NBLOCKS,
	instead of computing a variable block_size and doing specific
	tests for HP-UX or Linux.  Also rewrite the test so it works
	when ST_NBLOCKS is unsigned.
	Reported by Bruno Haible, Dean Gaudet, Dick Streefland, Harald
	Knig, Jim Meyering, Kai Petzke, Kaveh R. Ghazi and Torkel Hasle.

1994-08-04  Franois Pinard  <pinard@iro.umontreal.ca>

	* tar.c: Do not include <unistd.h> if we do not have it.
	Reported by Kaveh R. Ghazi.

	* Makefile.in (RTAPELIB): Prefix by $U for unprotoization.
	Reported by Kaveh R. Ghazi and Christian T. Dum.

	* port.c: Remove many static specifiers.
	Reported by Demizu Noritoshi, Kaveh R. Ghazi and William Bader.

	* rtapelib.c (__rmt_open): Replace system by remote, twice.
	Reported by Ben A. Mesander, Christian T. Dum, Demizu Noritoshi
	and Kaveh R. Ghazi.

	* tar.c (addname): Replace a forgotten EX_SYSTEM by
	TAREXIT_FAILURE.
	Reported by Demizu Noritoshi, James W. McKelvey, Kaveh R.
	Ghazi and Robert E. Brown.

1994-08-02  Franois Pinard  <pinard@iro.umontreal.ca>

	* tar.c (assign_string): New routines.
	* create.c (dump_file, start_header), extract.c
	(extract_archive), list.c (list_archive, read_header),
	buffer.c (open_archive), diffarch.c (diff_archive): Use
	assign_string for setting these variables to a string value or
	NULL.
	* buffer.c (open_archive): Sets current_file_name,
	current_link_name and save_name to NULL.
	(close_archive): Free each of them if not NULL.
	(fl_write): Take a copy of save_name into cursor, and advance the
	cursor instead, because save_name should stay free-able.
	Reported by Dave Gentzel, Harald Anlauf, Mark Clements, Robert
	Weissenfels, Ronald van Loon, Tsutomu Yamada and Vic Abell.

	* extract.c (extract_archive): Use xstrdup, for clarity.
	* gnu.c (add_dir): Idem.

	* list.c (print_header): Correct a little bug by which
	non-symbolic links were not printed properly quoted.

	* diffarch.c (diff_archive): Allocate tmpbuf to the proper
	size.  NAMSIZ + 2 is not necessarily enough.

1994-08-01  Franois Pinard  <pinard@iro.umontreal.ca>

	* tar.h: Refresh str*/mem* configured declarations.  Among
	other things, this will solve previously missing #undef's.
	* rmt.h: Revise strchr configured declaration.
	* *.c: Replace bzero by memset, bcopy by memcpy, bcmp by
	memcmp, index by strchr and rindex by strrchr.
	* port.c: Delete functions bzero and bcmp, said to not exist
	on Minix.  AC_MINIX in configure.in should guarantee POSIX things.
	Reported by Drew Trieger, Hugh Secker-Walker and Vic Abell.

	* tar.h, tar.c, buffer.c, update.c: Change CMD_* to COMMAND_*.

	* buffer.c (open_archive): Use strcmp to compare archive name
	to `-', instead of doing it explicitely.  Just for clarity.

	* tar.h, tar.c, buffer.c: Replace ar_files by
	archive_name_array, n_ar_files by archive_names and ar_files_len
	by allocated_archive_names.  Replace the index cur_ar_file by
	archive_name_cursor, which is a cursor in archive_name_array.

	* tar.c (main): Move the initialization of
	archive_name_array at beginning, taken from options routine.
	Free it at end of main.
	(options): Use xrealloc instead of ck_realloc for archive_name,
	for the already saved names to be preserved.
	Reported by Per Bojsen.

	* tar.h, tar.c: Replace name_file by namefile_name.
	* tar.c: Replace n_ind by name_array, n_indused by names,
	n_indalloc by allocated_names, and n_indscan by name_index.
	Replace namef by name_file, n_argv by names_argv and n_argc by
	names_argc.
	(main): Make an initial allocation for name_array at beginning,
	moved out from name_add, free it at end of main.

	* buffer.c (close_archive): Free ar_block at end.

1994-07-30  Franois Pinard  <pinard@iro.umontreal.ca>

	* tar.h [WITH_MALLOC_DBG]: Include "malloc_dbg.h".

	* create.c (create_archive): Do not attempt creating a
	directory summary file if -G, since -G sets gnu_dumpfile to 0.
	Reported by Alexander Dupuy.

	* create.c (dump_file): Avoid a NULL dereference with -G when
	trying to dump an empty directory.
	* gnu.c (add_dir_name): Same thing.
	Reported by Rainer Orth.

	Correction for the improper `data differs' diagnostic given when
	the continuation of a multi-volume was compared.
	* diffarch.c (diff_archive): If multi-volume, update save_name
	and save_totsize before calling wantbytes.
	* buffer.c (wantbytes): If multi-volume, update save_sizeleft.
	Reported by Andreas Schwab, Denis Fortin, Franois Pinard,
	Hiroyuki Bessho, Olaf Schlueter, Simon Wright and Saul Lubkin.

1994-07-30  Franois Pinard  <pinard@iro.umontreal.ca>

	* tar.c (options): Implement DEVICE_PREFIX and DENSITY_LETTER.
	Reported by Danny R. Johnston.

	* gnu.c (gnu_restore): Use CURRENT_FILE_NAME abbreviation.
	* extract.c (extract_archive): Idem.
	Reported by Timothy Fossum.

1994-07-29  Franois Pinard  <pinard@iro.umontreal.ca>

	* create.c (dump_file): Abort if no memory for a possible
	link, remove related bogus code, and the variable nolinks.
	Reported by Andreas Schwab.

	* create.c (dump_file): Detect file sparseness correctly for
	Linux ext2 filesystem.
	Reported by Kai Petzke.

	* port.c (link) [!MSDOS]: Do not call setmode.
	Reported by Richard Deal.

	Reorganization for `tar -d' to provide a different exit status.
	* tar.h: Replace errors by exit_status.  Declare TAREXIT_*.
	* buffer.c (child_open): Exit with exit_status.
	* tar.c (main): Initialize exit_status to TAREXIT_SUCCESS, and
	exit with exit_status.
	* buffer.c, diffarch.c, gnu.c, list.c, port.c,
	rmt.c, tar.c, update.c: Replace EXIT_FAILURE by
	TAREXIT_FAILURE, and EXIT_SUCCESS by TAREXIT_SUCCESS.
	* tar.h (ERROR), create.c (dump_file): Set exit_status to
	TAREXIT_FAILURE instead of increasing errors.
	* diffarch.c (sigh, diff_sparse_files): On differences, set
	exit_status to TAREXIT_DIFFERS if nothing more serious already.
	Reported by Tilman Schmidt.

	* rmt.c: Define EXIT_FAILURE and EXIT_SUCCESS if not already.
	* rtapelib.c: Define EXIT_ON_EXEC_ERROR to 128 and use it.

1994-07-27  Franois Pinard  <pinard@iro.umontreal.ca>

	* diffarch.c (sigh): Increment errors, so a difference will
	yield a non-zero exit status at end.
	Reported by Nick Holloway.

	* tar.h: Rename TARERROR to WARN, then add ERROR which is similar,
	but increments the errors counter.
	* *.c: Replace all TARERROR by WARN or ERROR, deciding for each
	case.  Many errors were not reflected in exit status.

	Reported by Carl Streeter, Esa Karell, George Chyu, Ian Jackson,
	Judy Ricker, Massimo Dal Zotto, Roland McGrath, Tilman Schmidt
	and Torkel Hasle.

	* buffer.c (child_open): Exit with EXIT_FAILURE if any error.

	* rtapelib.c: Use error for reporting errors.
	(do_command): New name for command.
	(get_status): New name for status.

	* buffer.c: Remove definition of MAGIC_STAT.
	(close_archive): Do not check MAGIC_STAT for an exit value, since
	this value is never returned.

	* *.c: Use TARERROR or exit with EXIT_FAILURE, instead of various
	esoteric statuses.  Normalize using TARERROR with an exit status,
	instead of calling TARERROR with 0 first, then _exit.  On exit
	calls, use EXIT_SUCCESS instead of 0.
	* tar.c: Do not use the exit status anymore for outputting an
	error counter value.  Wrap around was creating spurious success.
	* tar.h: Remove EX_* definitions for tar exit statuses.
	Reported by Bob Mende and Torbjorn Granlund.

1994-07-26  Franois Pinard  <pinard@iro.umontreal.ca>

	* tar.h: Add f_rsh_command variable.
	* tar.c: Add and process --rsh-command option.
	* buffer.c (open_archive, child_open, new_volume): Pass
	f_rsh_command to rmtopen and rmtcreat calls.
	* rmt.h (rmtopen, rmtcreat): Pass a supplementary argument.
	* rtapelib.c (__rmt_open): Accept and process a command
	argument, to replace rsh.
	Reported by Jonathan I. Kamens.

	* tar.h: Instead of including <sys/file.h> with BSD42 or
	<fcntl.h> for V7, merely include <fcntl.h> if it exists,
	otherwise <sys/file.h>.
	* buffer.c, diffarch.c, extract.c, list.c,
	port.c, update.c: Do not include <fcntl.h> or
	<sys/file.h>, because they are indirectly included through
	"tar.h".

	* create.c (dump_file): Remove the BSD42 conditional.  If not
	f_sparse_files, initialize upperbound as when not BSD42.
	Reported by Alan Bawden, Claude Scarpelli, Laurent
	Sainte-Marthe, Noah Friedman, Reuben Sumner, Tom Quinn and
	William Bader.

1994-07-24  Franois Pinard  <pinard@iro.umontreal.ca>

	* tar.h: Merely define valloc as being malloc if valloc does
	not exist.
	* port.h: Remove valloc, which was only a dummy for malloc.
	Reported by Cliff Krumvieda, Francois Pinard, Henrik Bakman,
	J.T. Conklin, Nelson H.F. Beebe and Tilman Schmidt.

1994-07-22  Franois Pinard  <pinard@iro.umontreal.ca>

	* create.c (start_header): Cast NAMSIZ to size_t before
	comparing it to strlen result.
	Reported by Mark Frost.

	* tar.c (main): Zero out label_pattern before compiling in
	regular expressions, instead of using uninitialized memory.
	Reported by Holger Teutsch.

	* tar.c [!FNM_PATHNAME]: Include fnmatch.h only if unistd.h fails
	to define this symbol.
	Reported by Alan Modra, Christian T. Dum, Eddy ?, John
	Oleynick and Richard Lloyd.

	* buffer.c, diffarch.c, rtapelib.c, update.c:
	Include <sys/io/trioctl.h> before <sys/mtio.h>, if it exists.
	Reported by Kaveh R. Ghazi.

	* tar.c (options): Use defined OPTION_* constants instead of
	anonymous numbers for long options not having a short option form.

	* rmt.h [!MTIOCTOP]: Do not define RMTIOCTL, so __rmt_ioctl
	will not be called if it has not been compiled in rtapelib.c.

	* tar.h: Add CMD_TOO_MANY.
	* tar.c (main): Use CMD_TOO_MANY, and get rid of badopt label.
	Reported by David J. MacKenzie.

	* tar.c (usage): New name for describe().  Rewritten with
	better help formatting and more logical grouping of options.
	Accepts an exit status argument.  Callers adapted.
	Reported by Richard O'Neill.

1994-07-20  Franois Pinard  <pinard@iro.umontreal.ca>

	* port.c (rename): Constify the arguments.
	Reported by Elmar Heeb, Jeff Prothero and John Clark.

	* tar.c (main): Declare version_string locally.
	* version.c: Deleted.
	* Makefile.in: Adjusted.

1994-07-19  Franois Pinard  <pinard@iro.umontreal.ca>

	* tar.h: Merge "port.h" towards the beginning of tar.h.
	Include <stdio.h> and <errno.h>, and define errno if needed.
	* *.c: Do not include "port.h" anymore after "tar.h", do not
	include <stdio.h>, <errno.h> nor <sys/types.h>.  Also move
	"tar.h" as the first file included in every module.  This
	would solve, among other things, the problem of RE_DUP_MAX
	being redefined by <limits.h>, when included after "regex.h".
	* port.h: Deleted.
	* Makefile.in: Adjusted.
	Reported by Alan Modra, Christian T. Dum, Dimitris Fousekis,
	John David Anglin, Matthew Braun, Michael Maass, Richard Lloyd
	and Stefan Skoglund.

	* create.c (dump_file): Do not cast alloca result to (char *).
	The problem reported was that alloca result was seen as int, but
	with the changes just made, alloca should be properly declared.
	Reported by Bryant Fujimoto and Michael Kubik.

1994-07-06  Franois Pinard  <pinard@iro.umontreal.ca>

	* create.c, extract.c [HAVE_UTIME_H]: Instead of _POSIX_VERSION,
	for choosing to include <utime.h>.
	Reported by Carl Swanson and Thomas Krebs.

1994-07-05  Franois Pinard  <pinard@iro.umontreal.ca>

	* tar.c: Replace DEF_AR_FILE with DEFAULT_ARCHIVE, replace
	DEFBLOCKING with DEFAULT_BLOCKING.

	* rtapelib.c: Replace "??'" by "?? '" at two places in a
	comment, so avoiding Pyramid's DC/OSx compiler to complain about
	ANSI trigraph sequences.  Even comments can trigger bugs, now!
	Reported by Mark Frost.

	* tar.h: Declare valloc.
	* buffer.c, diffarch.c: Remove declaration for valloc.

	* testpad.c: Deleted.
	* tar.h: Do not include "testpad.h" anymore.
	* Makefile.in: Delete testpad matters.

	* buffer.c (new_volume): Inside case 'n', strcpy into r then
	assign r to p, instead of strcpy'ing directly into p, for making
	the module const clean.

1994-07-03  Franois Pinard  <pinard@iro.umontreal.ca>

	Rename a few variables to avoid shadowing variables or functions:
	* list.c (print_header): Change name to quoted_name.
	* buffer.c (child_open): Change pipe to local_pipe.
	* extract.c (extract_archive): Change namelen to namelen_bis.
	* rtapelib.c (__rmt_open): Change system to remote.

	* tar.c (options): Add two missing arguments to getoldopt
	call, NULL is not necessarily implied on all systems.

	* list.c (print_header): Add a few missing long specification
	in formats.
	* diffarch.c (compare_chunk, diff_sparse_files): Idem.
	* port.c (msg, msg_perror): Idem.

	* tar.h: Include prototypes for all functions which call from
	one module to another.  Declare voidstar (use it everywhere
	instead of PTR).  Move in the include <sys/stat.h> from
	<port.h>, and the include of option.h from tar.c and
	getoldopt.c, waiting for a better solution for all these things.
	* port.c: Removed PTR declaration and including <sys/stat.h>.
	* getoldopt.c, tar.c: Remove including "option.h".

1994-07-02  Franois Pinard  <pinard@iro.umontreal.ca>

	* *: Protoized all function headers.  Added static to
	functions which can take it.  Add many const specifiers.  Remove
	unused variables.

	* port.c (xmalloc): Delete function, do not mask the true one.
	* port.c (ck_malloc): Use xmalloc, waiting for annihilation.
	* port.c (ck_realloc): Use xrealloc, waiting for annihilation.
	* *: Begin switching from ck_malloc (or even pure malloc) to
	xmalloc.  Same for ck_realloc (pure realloc) to xrealloc.
	Doing this correctly is a delicate matter, which I'll continue
	without reporting it anymore, while doing other modifications.

	* *: Replace msg and msg_perror calls by TARERROR macro calls.
	Capitalize first word of all error messages, remove ending
	punctuation or newline.  Systematically avoid contractions for
	`Cannot' and `Could not'.  Always write `WARNING:' all in capitals.
	* tar.h: Declare TARERROR as calling error().  Rename
	variable tar to program_name.
	* tar.c (main, options), buffer.c (child_open), port.c
	(msg, msg_perror), gnu.c (gnu_restore): Rename variable tar to
	program_name.
	* gnu.c (gnu_restore): Remove a spurious repetition of
	program_name in error message.

1994-07-01  Franois Pinard  <pinard@iro.umontreal.ca>

	* buffer.c, create.c extract.c, gnu.c, list.c,
	names.c, rmt.c, tar.c, update.c: Remove all (void)
	prefixes to function calls.  There are limits to lint clutter.

1994-06-30  Franois Pinard  <pinard@iro.umontreal.ca>

	* port.h: Remove definition of const.  Let configure do it.

	* tar.h, rmt.c, rtapelib.c, version.c, testpad.c: Add a block
	for including <config.h> or "config.h".  If "tar.h" was included
	everywhere, the block will only be needed there.

	* *.[ch]: Reindented to GNU standards (they were not far).
	Got rid of all `* ' left prefixes in comments and refilled them.
	There is still a lot of cosmetic changes needed everywhere.
	I will not report them any more, doing them along the way of
	other things in the future.

	* Makefile.in: New file.

	* Split distribution into a few subdirectories, for easing
	maintainance.

	* Taking over maintenance duties.

1994-02-13  John Oleynick  <juo@goldman.gnu.ai.mit.edu>

	* extern.h, global.c, main.c, util.c:  Added code to
	tape_buffered_peek() to properly handle large, corrutped
	archives, without overrunning the allocated buffer and
	dumping core.  Also changed the way the input and output
	buffers are allocated in initialize_buffers().

1994-01-25  John Oleynick  <juo@goldman.gnu.ai.mit.edu>

	* copyin.c, copyout.c, copypass.c, extern.h, main.c, tar.c, util.c:
	Redid i/o buffer code.  Previously, the same routines buffered input and
	output for accessing the archive and the filesystem.  Now there are
	separate routines for buffering input and output and for buffering the
	archive and the filesystem.  This simplifies much of the buffer code
	(e.g., only input from the archive has to check for end of tape and
	allow the tape to be changed, only output to the filesystem has to
	handle byte and word swapping, etc.; previously one routine had to
	handle all of these special cases) This is how the routines got split
	and renamed (old name -> new name):

		clear_rest_of_block -> tape_clear_rest_of_block
		copy_files -> copy_files_tape_to_disk
		    "      -> copy_files_disk_to_disk
		    "      -> copy_files_disk_to_tape
		copy_buf_out -> disk_buffered_write
		    "        -> tape_buffered_write
		copy_in_buf -> tape_buffered_read
		empty_output_buffer -> tape_empty_output_buffer
		    "               -> disk_empty_output_buffer
		fill_input_buffer -> tape_fill_input_buffer
		    "             -> disk_fill_input_buffer
		pad_output -> tape_pad_output
		peek_in_buf -> tape_buffered_peek
		skip_padding -> tape_skip_padding
		toss_input -> tape_toss_input

	* extern.h, global.c, main.c, util.c:  Added support for
	writing sparse files.

1993-12-28  John Oleynick  <juo@goldman.gnu.ai.mit.edu>

	* util.c, system.h, makepath.c, extern.h: don't define chown()
	and don't typedef uid_t and gid_t if we are being compiled
	by DJGPP.

	* copyin.c, extern.h, global.c, main.c:  Added support for
	--rename-batch-file.

	* copyin.c, copyout.c, extern.h:  Cleaned up to pass gcc -Wall.

1993-12-22  John Oleynick  <juo@goldman.gnu.ai.mit.edu>

	* makepath.c, copypass.c, copyin.c:  If cpio was creating a
	directory that contained `.' in the pathname (e.g. `foo/./bar'),
	it would complain that it could not create `.', since it already
	exists.
	Reported by Andreas Schwab.

	* mt.c:  Added "eject" as a synonym for "offline".

	* util.c:  Slight modification to when we lseek with
	BROKEN_LONG_TAPE_DRIVER (do it every 1Gb, instead
	of every 2Gb).

	* copyin.c, global.c, extern.h:  Added --no-absolute-paths option,
	to ignore absolute paths in archives.

1993-12-21  John Oleynick  <juo@goldman.gnu.ai.mit.edu>

	* util.c:  Fix for copying new_media_message_after_number.
	Reported by Christian Kuehnke.

1993-08-31  David J. MacKenzie  <djm@goldman.gnu.ai.mit.edu>

	* rmt.c [M_UNIX]: Include sys/tape.h instead of sys/mtio.h.
	Reported by Drew Sullivan and William Bader.

1993-07-29  David J. MacKenzie  <djm@wookumz.gnu.ai.mit.edu>

	* Makefile.in (config.status): Run config.status --recheck, not
	configure, to get the right args passed.

1993-07-29  David J. MacKenzie  <djm@wookumz.gnu.ai.mit.edu>

	* Makefile.in (config.status): Run config.status --recheck, not
	configure, to get the right args passed.

1993-07-19  David J. MacKenzie  <djm@churchy.gnu.ai.mit.edu>

	* Makefile.in (libdir): Use standard GNU value --
	$(exec_prefix)/lib, not /etc.

1993-07-19  David J. MacKenzie  <djm@churchy.gnu.ai.mit.edu>

	* Makefile.in (libdir): Use standard GNU value --
	$(exec_prefix)/lib, not /etc.
	(.c.o): Put CFLAGS last.

1993-07-08  David J. MacKenzie  <djm@goldman.gnu.ai.mit.edu>

	* Makefile.in (installdirs, configure, config.status,
	Makefile): New targets.

1993-07-08  David J. MacKenzie  <djm@goldman.gnu.ai.mit.edu>

	* Makefile.in: Add rules for remaking Makefile, configure,
	config.status.

1993-07-05  John Oleynick  <juo@spiff.gnu.ai.mit.edu>

	* cpio.1:  Updated man page for 2.3.
	* Makefile.in:  Create distribution with .gz extension, instead of .z.

1993-06-29  John Oleynick  <juo@goldman.gnu.ai.mit.edu>

	* Makefile.in: Added installdirs target (using mkinstalldirs).
	* Added mkinstalldirs script.
	* main.c, mt.c:  Added --help option.  Changed usage() to
	take a stream and exit value (so --help can print on stdout
	and return a 0 exit status).
	* extern.h:  Removed usage()'s prototype (it was out of date,
	and only used in main.c).

1993-06-14  Noah Friedman  <friedman@nutrimat.gnu.ai.mit.edu>

	* Makefile.in (.c.o): Put -I. before -I$(srcdir), and make
        $(CFLAGS) last.

1993-05-22  The King  <elvis@graceland.gnu.ai.mit.edu>

	* extract.c (extract_archive, restore_saved_dir_info): Print
	mode in octal, not in decimal.
	Reported by Scott S. Bertilson.

1993-05-06  John Oleynick  <juo@hal.gnu.ai.mit.edu>

	* cpio.1:  Added hpbin and hpodc.

1993-05-04  John Oleynick  <juo@hal.gnu.ai.mit.edu>

	* copyin.c (process_copy_in), copypass.c (process_copy_pass):  When
	deleting an existing file, if the file is a directory, use rmdir()
	instead of unlink().

1993-04-29  John Oleynick  <juo@goldman.gnu.ai.mit.edu>

	* tar.c (read_in_tar_header):  Clear non-protection bits from
	mode, in case tar has left some device bits in there.

1993-04-28  John Oleynick  <juo@goldman.gnu.ai.mit.edu>

	* util.c: Added code to try and work around broken tape drivers
	that have problems with tapes > 2Gb.

	* copyout.c (process_copy_out): Pass file_hdr to
	writeout_other_defers() and add_link_defer() by reference,
	not by value.

	* copyin.c (process_copy_in): Pass file_hdr to defer_copyin()
	and create_defered_links() by reference, not by value.

	* defer.c: include <sys/types.h> (to build on BSD 4.3 on HP300)

1993-04-16  John Oleynick  <juo@goldman.gnu.ai.mit.edu>

	* mt.c, util.c: Include <sys/mtio.h> if HAVE_SYS_MTIO_H is
	defined, not HAVE_MTIO_H.

1993-04-14  John Oleynick  <juo@goldman.gnu.ai.mit.edu>

	* util.c: Include <sys/io/trioctl.h> if HAVE_SYS_IO_TRIOCTL_H
	is defined.

	* mt.c: Only include <sys/mtio.h> if HAVE_SYS_MTIO_H is defined.

1993-04-02  John Oleynick  <juo@goldman.gnu.ai.mit.edu>

	* configure.in: Added fnmatch to AC_REPLACE_FUNCS.  Added
	sys/io/trioctl.h to AC_HAVE_HEADERS.

	* Makefile.in: Removed fnmatch.o from OBJS.

	* copyin.c: Only include "fnmatch.h" if FNM_PATHNAME isn't
	defined yet.

	* mt.c: Include <sys/io/trioctl.h> if HAVE_SYS_IO_TRIOCTL_H is
	defined.

1993-03-29  John Oleynick  <juo@hal.gnu.ai.mit.edu>

	* Many changes for supporting HPUX Context Dependent Files;
	also some bug fixes to fix problems with multiply (hard) linked
	device files; minor changes to support HPUX format archives
	(slightly broken?) System V.4 posix tar archives and HPUX
	posix tar archives.

	* Makefile.in: New files defer.o, defer,c and defer.h; added
	-DSYMLINK_USES_UMASK and -DHPUX_CDF comments; changed dist rule
	to use gzip with tar, instead of compress.

	* copyin.c: changes for new arf_hpbinary and arf_hpascii formats;
	HPUX CDF's; DEBUG_CPIO; fixes to properly handle multiple
	links in newc and crc format archives (new routines defer_copyin(),
	create_defered_links(), create_final_defers()); move most
	multiple (hard) link code to new routines link_name() and
	link_to_maj_min_ino(); use new macro UMASKED_SYMLINK instead of
	symlink().

	* copyout.c: fixes to properly handle multiple links in newc
	and crc format archives (new routines last_link(),
	count_defered_links_to_dev_ino(), add_link_defer(),
	writeout_other_defers(), writeout_final_defers(),
	writeout_defered_file()); support for new arf_hpbinary and
	arf_hpascii formats; support for HPUX CDF's.

	* copypass.c: move most multiple link code to new routines
	link_name() and link_to_maj_min_ino(); use new macro UMASKED_SYMLINK
	instead of symlink(); support for HPUX CDF's.

	* extern.h: added arf_hpascii and arf_hpbinary archive enum types;
	added debug_flag.

	* global.c: added debug_flag.

	* main.c: added debug_flag; support for hpodc and hpbin formats.

	* makepath.c: split from standard makpath.c to add support
	for HPUX CDF's.

	* mt.c: added !defined(__osf__).
	Reported by Andrew Marquis.

	* system.h: new macro UMASKED_SYMLINK

	* tar.c: minor changes to read (slightly broken?) System V.4 posix
	tar archives and HPUX posix tar archives.

	* util.c: HPUX CDF support (including new routines
	add_cdf_double_slashes() and islasparentcdf()); new routine
	umasked_symlink().

1993-03-26  Noah Friedman  <friedman@nutrimat.gnu.ai.mit.edu>

	* configure.in: Better way of detecting HP-UX.
	Reported by Noah Friedman.

1993-03-25  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* version.c: Released version 1.11.2.

	* Makefile.in (dist): Do the link differently; some of the
	files have changed filesystems which makes it more complex.

	* Makefile.in (dist, shar): Use gzip instead of compress.

	* create.c (dump_file): Test for curdev == -1, not curdev < 0.
	Some losing NFS systems give negative device numbers sometimes.
	Reported by Thorbjxrn Willoch.

1993-03-19  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* buffer.c (new_volume): Write the global volume number to the
	volno file before running the info script, so that the script
	can look at it.

1993-03-17  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* tar.c (describe, long_options): Changed --compress-block to
	--block-compress.
	(options): Fixed f_compress_block sanity check error message
	to give the correct name of the option.

1993-03-16  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* extract.c (extract_archive): case LF_DIR: Do chown when
	necessary.  Don't bother jumping to set_filestat for
	f_modified; repeat the chmod code here.  Replace `break',
	deleted on 2 September 1992.

	* tar.c (describe, long_options, options): Added gzip options
	and use-compress-program option.
	* tar.h: Added new compression options.
	* buffer.c (child_open, open_archive): Use new compression options.

	* create.c (start_header): Only mask off high bits when
	creating old-style archives.
	* list.c (decode_header): Mask off potentially misleading
	high bits from the mode when reading headers.
	Reported by Paul Eggert.

1993-03-15  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* extract.c (extract_archive): Put arguments in the right
	order for error message.
	Reported by Bruno Haible.

	* create.c (deal_with_sparse): If the last byte was null, we
	didn't write it out.

	* gnu.c, create.c, extract.c, diffarch.c, list.c:
	Replace malloc calls with ck_malloc and realloc with ck_realloc.
	Reported by Jonathan Kamens.

	* tar.c (describe): Improve doc for -L.

	* tar.c (name_next): Don't apply exclusion to explicitly named
	files.

	* tar.c (long_options, describe): Added new-volume-script as
	an alias for info-script.

	* extract.c (extract_archive): LF_DUMPDIR case; misplaced paren.

	* extract.c (extract_archive): extract_file case, first if,
	include space for null in namelen computation.

	* extract.c (extract_sparse_file): Use value returned by write
	to properly create error message.

	* create.c (create_archive): Don't assume we have anything to
	dump.

	* buffer.c (open_archive): Set current_file_name for the
	volume header so that verbose listings work properly.

	* Makefile.in (realclean): Added getdate.c.

	* create.c (deal_with_sparse): If exactly 26 elements in
	sparsearray, only 25 were written.
	Reported by Jim Murray.

	* create.c (deal_with_sparse): If the file ends with a zero
	block, the last byte was not written.  This is fixed in create
	rather than extract: if amidst_data is not set at EOF, put out a
	block with just the last byte of the file.
	Reported by Jim Murray.

1993-03-14  Jim Meyering  <meyering@comco.com>

	* copypass.c (process_copy_pass): Use <=, not just <, when comparing
	mtimes.
	Reported by Pieter Bowman.

1993-01-15  David J. MacKenzie  <djm@kropotkin.gnu.ai.mit.edu>

	* copyin.c: Move include of fnmatch.h to get right FNM* macros.

1993-01-14  David J. MacKenzie  <djm@kropotkin.gnu.ai.mit.edu>

	* tar.c: Include fnmatch.h after port.h to make sure we get our FNM_*
	(e.g. on HPUX 8).

1992-11-24  David J. MacKenzie  <djm@goldman.gnu.ai.mit.edu>

	* tar.c (addname), gnu.c (read_dir_file) [HAVE_GETCWD]: Instead of USG.

	* port.h, rmt.h [HAVE_STRING_H]: Instead of USG.

	* port.h: Add dir header decls.
	* create.c, gnu.c: Use SYSNDIR, SYSDIR, and NDIR
	instead of BSD42 and USG.  Rename DP_NAMELEN to NLENGTH.
	Use `struct dirent' instead of `struct direct'.
	* create.c, gnu.c, tar.c: Remove dir header decls.

1992-11-24  David J. MacKenzie  <djm@goldman.gnu.ai.mit.edu>

	* Version 2.2.

	* copyout.c (process_copy_out): Add parens for gcc -Wall.
	From Jim Meyering.

	* system.h: Use HAVE_FCNTL_H, not USG.

	* dstring.c, mt.c, system.h: Use HAVE_STRING_H, not USG.

1992-11-20  David J. MacKenzie  <djm@goldman.gnu.ai.mit.edu>

	* copyin.c (read_in_binary): Copy the dev and ino that are
	already in `file_hdr' into `short_hdr'.
	From David A. Oshinsky.

	* system.h [!_POSIX_VERSION]: Declare lseek as off_t, not long.
	From Karl Berry.

1992-11-18  David J. MacKenzie  <djm@goldman.gnu.ai.mit.edu>

	* tar.c: Change FNM_TARPATH to FNM_LEADING_DIR to match change
	in fnmatch.[ch].

1992-10-14  David J. MacKenzie  <djm@goldman.gnu.ai.mit.edu>

	* Version 2.1.

1992-10-13  David J. MacKenzie  <djm@goldman.gnu.ai.mit.edu>

	* main.c: Add --swap equivalent to -b.

	* mt.c: Add f_force_local variable and -V --version option.

1992-10-02  David J. MacKenzie  <djm@goldman.gnu.ai.mit.edu>

	* tar.c (describe): Fix some tab alignments.

	* Makefile.in (SRC3): Add getdate.c, for systems without bison/yacc
	(like MS-DOS).

	* diffarch.c (diff_sparse_files): Add missing arg to fprintf calls.

	* extract.c (extract_archive, restore_saved_dir_info),
	buffer.c (child_open), list.c (decode_header, print_header):
	Delete unused vars.

	* port.c [__MSDOS__]: Have strstr, rename, and mkdir.  Don't
	define ck_pipe.

	* buffer.c, tar.c (init_volume_number, closeout_volume_number),
	create.c (write_long): 	Declare as void, not int, since they
	don't return a value.

1992-10-02  David J. MacKenzie  <djm@kropotkin.gnu.ai.mit.edu>

	* main.c (long_opts, usage): Add --force-local option.

1992-10-01  David J. MacKenzie  <djm@goldman.gnu.ai.mit.edu>

	* main.c (process_args) [__MSDOS__]: Don't call geteuid.

	* copyin.c (read_in_{old,new}_ascii): Use `l' for sscanf into longs.
	* copyout.c (write_out_header): Ditto for sprintf.
	* global.c, extern.h: Make input_size and output_size long.

1992-09-22  Michael I Bushnell  <mib@wookumz.gnu.ai.mit.edu>

	* buffer.c (close_archive): Removed leftover `break' from when
	this was a switch.

1992-09-22  Noah Friedman  <friedman@nutrimat.gnu.ai.mit.edu>

	* create.c, port.h: indented #pragma directives with 1 space.

1992-09-18  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* All source files: re indented using GNU indent.

	* rtapelib.c (__rmt_read): Only read the amount left in the
	buffer; otherwise a broken rmt server (which puts too much
	data out) could overwrite past our buffer.

1992-09-17  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* configure.in: Check for getpwuid and getgrgid.
	Reported by J.T. Conklin.

	* create.c: Throughout, use struct utimbuf rather than array
	of longs.
	Reported by J.T. Conklin and Michael Ellis.

	* Makefile.in (SRC3, AUX): Move alloca.c to SRC3.
	(OBJ3): Add @ALLOCA@.

	* Makefile.in (getdate.c): Look in srcdir for getdate.y.

	* buffer.c (close_archive): We can't check WTERMSIG
	meaningfully unless we already know tha WIFSIGNALED is true.
	(There is no guarantee it WTERMSIG will return zero when
	WIFSIGNALED is false.)
	* port.c (rmdir, mkdir): Check WIFSIGNALED rather than
	WTERMSIG.

	* Makefile.in (getdate.c): Use $(YACC) instead of `yacc'.

1992-09-15  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* version.c: Released version 1.11.1.

	* Makefile (AUX): Added NEWS.

	* Makefile.in (rmt): Added $(LIBS).

	* mangle.c (extract_mangle): Null terminate link name for
	losing archives missing it.

	* configure.in: Added tests for libraries needed on Solaris.

	* Makefile.in: added target and rule for getdate.c: getdate.y;
	some makes don't have one built in.

1992-09-14  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* tar.c (options, main): Advise use of --help rather than
	+help.
	Reported by J.T. Conklin.

	* create.c (write_long): Using hstat here is a Bad Idea, and
	totally unnecessary at that.

	* list.c (read_header): Compute both signed and normal
	checksums.
	Reported by Robert E. Brown.

	* diffarch.c, buffer.c: Declare valloc as void* rather than
	char*.
	Reported by Robert E. Brown.

	* Makefile.in: Don't install info files.

	* port.h: Undefine index and rindex if necessary; some
	string.h's define them for us.

	* tar.c (addname): Missing braces after if.
	* gnu.c (read_dir_file): Missing braces after if.

	* names.c: Include <stdio.h>.

	* create.c (start_header): Set current_file_name so that
	print_header, used for verbose create, works properly.
	(dump_file): Set current_link_name when setting up symlink
	and hardlink records.
	Reported by Robert Crowe.

	* configure.in: Define BSD in the presence of /sdmach or
	/../../mach.
	Reported by Robert E. Brown.

	* configure.in: Check for malloc was scrambled.

1992-09-11  David J. MacKenzie  <djm@nutrimat.gnu.ai.mit.edu>

	* fnmatch.[ch]: New files.
	* wildmat.c: File removed.
	* tar.c: Include fnmatch.h and use fnmatch instead of wildmat.
	* Makefile.in, makefile.pc: Replace wildmat.o(bj) with fnmatch.

1992-09-10  David J. MacKenzie  <djm@nutrimat.gnu.ai.mit.edu>

	* buffer.c, tar.c: Remove redundant decls of getenv, rindex.

	* Makefile.in: Add uninstall target.
	Define libdir instead of hardcoding /etc for installing rmt.

1992-09-10  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* list.c (read_header): On second thought, that doesn't work
	either, so just store the names in malloced areas.  Sigh.

	* NEWS: New file.
	* README: Removed things that belong in NEWS; point to it.

	* list.c (read_header): current_file_name and
	current_link_name need to be set to the arrays in head rather
	than header; header is the actual read buffer and will change.

	* extract.c (extract_archive):
	* buffer.c (new_volume): `#' directives need to start in
	column 1.
	Reported by J.T. Conklin.

1992-09-10  David J. MacKenzie  <djm@nutrimat.gnu.ai.mit.edu>

	* global.c, extern.h: Add new var f_force_local to work with
	rmt.h change from tar.

1992-09-09  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* version.c: Release of version 1.11.

	* Makefile.in (AUX): Add getpagesize.h.
	(AUX): Comment out manuals.
	(all): Comment out dependency on tar.info.

	* Makefile, configure.in: Arrange to use local malloc on HP-UX.

	* port.h Use the canonical Autoconf chunk for alloca instead
	of just	looking for gcc.

1992-09-09  Noah Friedman  <friedman@nutrimat.gnu.ai.mit.edu>

	* port.h: If compiling with gcc, use __builtin_alloca.

1992-09-08  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* extract.c: Removed long name support from here.
	* list.c (read_header): Understand and skip longname/longlink
	headers here.  Names for current file are stored in new global
	variables.  All source files except create.c changed to refer
	to current_file_name and current_link_name instead of fields
	directly from the current header.

1992-09-03  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* create.c (write_long): New function.
	(dump_file): When writing link records or symlink records, use
	new write_long function instead of mangling when the link
	target is too long.
	(start_header): Use write_long instead of mangling for long
	names.
	* extract.c (saverec): Recognize LF_LONGNAME and LF_LONGLINK.
	(saverec): Throughout, use longname and longlink if they are set.

1992-09-02  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* mangle.c: This is now deprecated; retain extract_mangle for
	backward compatibility.

	* list.c (print_header): Prevent printing 0 when the gid or uid is
	null.
	Reported by Chris Arthur.

	* list.c (decode_header): Use the gid field when the gid is empty,
	and similarly for uid.
	Reported by Chris Arthur.

	* extract.c: saved_dir_info, saved_dir_info_head: new type and
	var.
	(extract_archive): When extracting directories, now save info
	in saved_dir_info_head.
	(restore_saved_dir_info): New function.
	* list.c (read_and): Call restore_saved_dir_info at the end of
	the run.
	Reported by Chris Arthur.

1992-08-31  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* create.c (create_archive): If there are no names specified,
	write nothing on the archive instead of dumping ".".

	* buffer.c (open_archive): Useful error message.

 	* tar.c, tar.h: Recognize f_atime_preserve.
	* create.c (dump_file): Implement f_atime_preserve.

	* rmt.h (_remdev): Don't require /dev/ to be in remote archive
	names; obey new force-local flag.
	* tar.c, tar.h: Implement new force-local flag.
	Reported by Roland Schemers III.

	* tar.c (describe): same-owner and same-order were confused.

	* create.c (dump_file): Check for toplevel had sense reversed.

	* buffer.c (new_archive): Don't free old_name...when these
	come from the command line, they aren't malloced, and it isn't
	important to save this trivial amount of memory.

	* tar.h: replace ar_file with ar_files, n_ar_files,
	cur_ar_files.
	* buffer.c (open_archive): multi-volume compressed archives
	never worked; give an appropriate error.  Change open of
	ar_file to open of ar_files[0].
	(writeerror, readerror, flush_archive): use
	ar_files[cur_ar_file] instead of ar_file.
	(new_archive): Necessary changes to support ar_files.
	* tar.c (options): handle multiple tape drive arguments.

1992-08-28  Michael I Bushnell  <mib@wookumz.gnu.ai.mit.edu>

	* list.c (decode_header), create.c (start_header), tar.h (TMAGIC):
	Undo djm's changes below; tar does not support the final
	Posix.1 format; it's bad to make it look like it does.

1992-08-23  David J. MacKenzie  <djm@churchy.gnu.ai.mit.edu>

	* Version 2.0.

	* tar.c (otoa): Compute value in an unsigned long, not an int.
	* copyout.c (write_out_header) [__MSDOS__]: Don't use dev_t.

	* main.c (process_args): By default, don't chown for non-root users.

1992-08-22  David J. MacKenzie  <djm@nutrimat.gnu.ai.mit.edu>

	* global.c, extern.h: Use uid_t and gid_t.

	* main.c (main) [__EMX__]: Expand wildcards.
	* system.h [__EMX__]: Alias some error names.  From Kai Uwe Rommel.

	* extern.h [__STDC__]: Use prototypes.

	* copyin.c (process_copy_in), copyout.c (process_copy_out),
	copypass.c (process_copy_pass): Open all files with O_BINARY.
	Add cast to chmod call.
	* util.c: Add cast to bcopy calls.  Make hash_insert static.
	From Kai Uwe Rommel.

1992-08-20  David J. MacKenzie  <djm@nutrimat.gnu.ai.mit.edu>

	* util.c (peek_in_buf): Don't print "end of file" before
	getting the next reel of medium.

	* copyin.c (read_in_old_ascii): Allocate space for NUL terminator.
	Print newline for dot line when done, even if appending.

1992-07-23  David J. MacKenzie  <djm@nutrimat.gnu.ai.mit.edu>

	* tar.c (write_out_tar_header, read_in_tar_header)
	[__MSDOS__]: Don't try to get user and group names.
	* extern.h: Don't declare the functions to do it (need uid_t).

	* main.c [__MSDOS__]: Ignore the -R option.

	* system.h: Define makedev if defining major and minor.

	* copyin.c, copyout.c [__MSDOS__]: setmode on archive_des, not
	0 and 1.

1992-07-19  David J. MacKenzie  <djm@nutrimat.gnu.ai.mit.edu>

	* port.h: Try to prevent redefining major.
	* port.c [minix]: Implies HAVE_BZERO.  Fix a typo.

	* list.c (decode_header): Recognize the final POSIX.1 magic as
	well as the early draft magic for ustar.
	* create.c (start_header): Create a final POSIX.1 magic string
	instead of an early draft string for ustar.
	* tar.h (TMAGIC): Remove the trailing blanks.

	* rmt.c, rtapelib.c: Use POSIX and STDC headers if available.
	* rmt.h: Declare the external functions defined in rtapelib.c.

1992-07-18  David J. MacKenzie  <djm@nutrimat.gnu.ai.mit.edu>

	* tar.c, stripslash.c, userspec.c, cpiohdr.h, tar.h, tarhdr.h,
	system.h: New files.
	* Move portability stuff from various files to system.h.
	* cpio.h: Rename header structure and members, and add
	new structure for SVR4 format.
	* copyin.c, copyout.c: Use the new structure internally, the
	old one only for I/O in the old formats.
	* copyin.c (read_in_header): Recognize the new archive formats.
	(read_in_new_ascii, read_pattern_file, skip_padding): New functions.
	(swab_array): Do the swapping using char pointers instead of
	bitwise arithmetic.
	(process_copy_in): Handle byte and halfword swapping and new formats.
	Ok if a directory we want to make already exists, but set its perms.
	Do chmod after chown to fix any set[ug]id bits.
	Use `struct utimbuf' instead of a long array.
	* copyout.c (write_out_header): Handle new formats.
	(process_copy_out): Use `struct utimbuf'.
	Handle appending and new formats.
	Remove any leading `./' from filenames.
	(read_for_checksum, clear_rest_of_block, pad_output): New functions.
	* copypass.c (process_copy_pass): Use `struct utimbuf'.
	Ok if a directory we want to make already exists, but set its perms.
	Do chmod after chown to fix any set[ug]id bits.
	Don't change perms of `.'.
	* extern.h, global.c: Replace the separate format flags with
	one variable.  Add new variables for the new options.
	* main.c: Add new options -A --append, -H --format, -C --io-size,
	-M --message, --no-preserve-owner, -R --owner, -E --pattern-file,
	-V --dot, -s --swap-bytes, -S --swap-halfwords, -b, -I, -k, -O.
	(usage): Document them.
	(process_args): Recognize them.  Use open_archive.
	(initialize_buffers): Allow room for tar archives and double buffers.
	* util.c (empty_output_buffer_swap): New function.
	(empty_output_buffer): Call it if swapping current file.
	Check additional end of media indicators.
	(swahw_array, peek_in_buf, prepare_append, open_archive,
	set_new_media_message): New functions.
	(fill_input_buffer): Don't print error message if end of media.
	(toss_input): Don't seek, always read.
	(copy_files): Update crc if needed.
	(find_inode_file, add_inode): Check major and minor numbers as
	well as dev.
	(get_next_reel): Prompt user if archive name is unknown.
	Print fancy messages.
	Close the archive and reopen it.

	Reported by John Oleynick.

	* util.c (find_inode_file): Use modulus when computing initial
	loop index.
	(add_inode): Zero out new entry.
	Reported by Scott Hammond.

	* cpio.h, copyin.c, copyout.c: Rename `struct cpio_header'
	members from h_foo to c_foo.

1992-07-14  David J. MacKenzie  <djm@apple-gunkies.gnu.ai.mit.edu>

	* pathmax.h: New file.
	* port.h: Include it.
	* create.c (create_archive): Allocate PATH_MAX instead of
	NAME_MAX for temporary buffer so we don't have to figure out
	what NAME_MAX is (portably).

1992-07-10  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* gnu.c (collect_and_sort_names): write_dir_file has no argument.

1992-07-06  David J. MacKenzie  <djm@nutrimat.gnu.ai.mit.edu>

	* port.c (rename): If unlinking the source at the end fails,
	unlink the destination instead to avoid leaving a mess.

1992-07-03  David J. MacKenzie  <djm@nutrimat.gnu.ai.mit.edu>

	* buffer.c, diffarch.c, update.c, rtapelib.c [HAVE_SYS_MTIO_H]:
	Instead of NO_MTIO.

	* port.c, tar.h [HAVE_FOO]: Instead of FOO_MISSING.

1992-06-23  David J. MacKenzie  <djm@goldman.gnu.ai.mit.edu>

	* rmt.c: Add #ifdefs to work on ISC.

1992-05-20  David J. MacKenzie  <djm@churchy.gnu.ai.mit.edu>

	* port.h: Define major, minor, makedev if the system doesn't.

1992-05-20  David J. MacKenzie  <djm@churchy.gnu.ai.mit.edu>

	* copyin.c:  If we include a header file specifically to get
	major et al., assume we have them.

1992-05-13  Michael I Bushnell  <mib@apple-gunkies.gnu.ai.mit.edu>

	* gnu.c (add_dir_name): Store legitimate value into
	dir_contents when get_dir_contents returns NULL.

1992-05-07  Michael I Bushnell  <mib@apple-gunkies.gnu.ai.mit.edu>

	* gnu.c (add_dir_name): Check for return of NULL from
	get_dir_contents; see djm's change of Fri Jul 26 01:12:58 1991.

1992-05-04  David J. MacKenzie  <djm@churchy.gnu.ai.mit.edu>

	* tar.h: Make comments for option names say -- instead of +.

1992-04-29  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* tar.c, tar.t: Added +volno-file option.
	buffer.c (init_volume_number, closeout_volume_number): New functions.
	tar.c (main): Call new functions in the right place.

	* buffer.c (fl_write, fl_read): Mod to allow losing tape
	drives which use short counts to indicate end of tape
	correctly handle the multi-tape stuff.  The read half won't
	co-exist with f_reblock; there's no way to fix that, of
	course.

	* tar.c, tar.h: Added new option +show-omitted-dirs.
	list.c (read_and): Implemented show-omitted-dirs.
	Reported by Karl Berry.

	* tar.c, tar.h: Added new option +checkpoint.
	buffer.c (fl_read, fl_write): Implemented +checkpoint lazily.

	* create.c (dump_file): Added toplevel argument; some devices
	can be negative, so the old method was bogus.  All callers
	changed.
	Reported by Max Hailperin.

	* tar.c, tar.h: Added new option +ignore-failed-read.
	create.c (dump_file): Implemented +ignore-failed-read.
	Reported by Bob Mende Pie.

	* create.c (finish_sparse_file): Commented out debugging printf.

	* tar.c, tar.h: Added new option +remove-files to delete files
	after they are added to the archive.
	create.c (dump_file): Implemented +remove-files for
	everything but directories.  I don't think they need it.

1992-04-28  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* create.c: (dump_file): save_name needs to be set equal to p,
	not something inside the header, because the header changes at
	the first buffer flush.

1992-04-24  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* create.c: Djm incorrectly moved the include of port.h to
	precede the include of sys/file.h; restored.

	* tar.c (main): Cases CMD_EXTRACT and CMD_LIST: declare error
	string with const.

	* gnu.c (collect_and_sort_names): Leave if around
	write_dir_file in place.

1992-04-22  David J. MacKenzie  <djm@churchy.gnu.ai.mit.edu>

	* rtapelib.c: SIGTYPE -> RETSIGTYPE.

1992-03-09  David J. MacKenzie  <djm@nutrimat.gnu.ai.mit.edu>

	* rtapelib.c: Reformat and make comments more complete.
	Rename a few variables for clarity.

1992-03-09  David J. MacKenzie  <djm@nutrimat.gnu.ai.mit.edu>

	* mt.c (main): rmtclose the tape file descriptor.

	* main.c (main): rmtclose the archive, if not in copy-pass mode.

	* util.c (create_all_directories): Don't print a message when
	creating a directory, for UNIX compat.

	* copyin.c (process_copy_in), copypass.c (process_copy_pass):
	Skip file if it has the same timestamp as existing file, not just
	if it is older than existing file, for UNIX compat.

1992-03-05  David J. MacKenzie  <djm@nutrimat.gnu.ai.mit.edu>

	* tar.c (describe): Document long options as starting with --.

1992-03-03  David J. MacKenzie  <djm@wookumz.gnu.ai.mit.edu>

	* main.c, mt.c (usage): Document long options as starting with
	-- instead of +.

	* extern.h: Only declare lseek if not _POSIX_VERSION.

1992-01-23  David J. MacKenzie  <djm@wookumz.gnu.ai.mit.edu>

	* tar.c (options): Check get_date return value for error indication.

1991-12-24  David J. MacKenzie  <djm@wookumz.gnu.ai.mit.edu>

	* tar.c, gnu.c, extract.c, create.c, port.h, rmt.h [HAVE_UNISTD_H,
	_POSIX_VERSION]: Instead of POSIX ifdefs.

1991-12-24  David J. MacKenzie  <djm@wookumz.gnu.ai.mit.edu>

	* copyin.c: Use MAJOR_IN_MKDEV and MAJOR_IN_SYSMACROS instead
	of USG and _POSIX_VERSION to find major and minor macros.

	* mt.c: Use unistd.h and stdlib.h if available.

	* copyin.c, copyout.c, copypass.c, util.c, extern.h: Change
	POSIX ifdefs to HAVE_UNISTD_H and _POSIX_VERSION.

1991-12-20  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* testpad.c (main): flush stderr so perror and fprintf
	cooperate right.

1991-12-18  David J. MacKenzie  <djm@wookumz.gnu.ai.mit.edu>

	* port.h [MAJOR_IN_MKDEV, MAJOR_IN_SYSMACROS]: To find where to
	get major, minor and makedev.
	* create.c, list.c, update.c: Don't check USG to include
	sys/sysmacros.h.

1991-12-12  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* mangle.c (extract_mangle): Correctly null terminate name of
	link target.

1991-11-21  Michael I Bushnell  <mib@nutrimat>

	* create.c (dump_file, at start of ISREG output loop): use
	filename from header instead of real name to make sure that we
	get the mangled version and not one that is too long and
	overflows buffers.

1991-11-16  David J. MacKenzie  <djm@wookumz.gnu.ai.mit.edu>

	* tar.h: Use new criteria for STDC version of msg.

1991-11-02  David J. MacKenzie  <djm@wookumz.gnu.ai.mit.edu>

	* create.c, gnu.c, tar.c [USG]: Use DIRENT instead of NDIR to select
	between dirent.h and ndir.h.

	* port.c [FOO_MISSING]: Instead of WANT_FOO, to make sharing code
	and configure script with other utilities easier.
	[VPRINTF_MISSING, DOPRNT_MISSING]: Instead of FOO_MSG, to select
	error reporting routines.

1991-08-29  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* tar.c (long_options).  Fixed info-script long option.
	Reported by Eric Norum.

1991-08-26  David J. MacKenzie  <djm@pogo.gnu.ai.mit.edu>

	* configure, Makefile.in: Only put $< in Makefiles if VPATH
	is being used, because older makes don't understand it.

1991-08-25  David J. MacKenzie  <djm@apple-gunkies>

	* Version 1.5.

	* bcopy.c: New file (moved from util.c).

	* mt.c (print_status): Not all hpux machines have mt_fileno
	and mt_blkno; rather than trying to track HP's product line,
	just assume none of them have them.

	* util.c (copy_buf_out, copy_in_buf): Use more efficient
	copying technique for a big speedup.

1991-08-19  David J. MacKenzie  <djm@wookumz.gnu.ai.mit.edu>

	* create.c: Indent '#pragma alloca' so non-ANSI compilers
	don't choke on it.

1991-08-14  David J. MacKenzie  <djm@geech.gnu.ai.mit.edu>

	* list.c (UGSWIDTH): Increase from 11 (sort of like Unix tar) to
	18, so that with normal user and group names of <= 8 chars,
	the columns never shift in a tar -t listing.

1991-08-02  David J. MacKenzie  <djm@apple-gunkies>

	* Makefile.in (dist): Include texinfo.tex and tar.info*.
	(install): Install tar.info*.
	* configure: Set INSTALLDATA.

	* configure: Create config.status.  Remove it and Makefile if
	interrupted while creating them.

	* configure: Check for +srcdir etc. arg and look for
	Makefile.in in that directory.  Set VPATH if srcdir is not `.'.
	* Makefile.in: Add `prefix'.
	(tar.info): New target.

1991-08-02  David J. MacKenzie  <djm@apple-gunkies>

	* configure: Support +srcdir.  Create config.status.
	Remove it and Makefile if interrupted while creating them.

1991-07-30  David J. MacKenzie  <djm@apple-gunkies>

	* configure [FTIME_MISSING]: Instead of NEED_TZSET.

1991-07-29  David J. MacKenzie  <djm@wombat.gnu.ai.mit.edu>

	* port.c [F_CHSIZE]: Additional version.

1991-07-27  David J. MacKenzie  <djm@wombat.gnu.ai.mit.edu>

	* rmt.h: Clean up ifdefs.

	* makefile.pc: Fix typo.
	* port.h [__MSDOS__]: Instead of MSDOS.
	[__MSDOS__]: Define off_t.  Include io.h and not sys/param.h.
	[__TURBOC__]: Use void * and don't define const.

1991-07-26  David J. MacKenzie  <djm@bleen>

	* buffer.c: Rename `eof' to `hit_eof' to avoid conflict with an
	MSDOS function.
	* gnu.c (get_dir_contents): Return NULL, not "\0\0\0\0", on error.
	* diffarch.c (diff_archive): Open files in binary mode.
	Don't use or free a non-malloc'd return value from get_dir_contents.
	* msd_dir.c [__TURBOC__]: Include stdlib.h.
	* rmt.h: lseek returns off_t, not long.

	* tar.c (describe): -X is +exclude-from, not +exclude.
	(names_notfound): Free memory only if amiga, not !unix.

	* tar.h, tar.c: Add +null option to make -T read
	null-terminated filenames (such as those produced by GNU find
	-print0), and disable -C option.
	This guarantees that odd filenames will get archived.
	* tar.c (read_name_from_file): New function.
	(name_next): Call it instead of fgets.
	From David J. MacKenzie.

1991-07-24  David J. MacKenzie  <djm@wookumz.gnu.ai.mit.edu>

	* create.c [_AIX]: Declare alloca.

	* buffer.c (open_archive): Check for successful open before,
	not after, fstatting the fd.

1991-07-23  David J. MacKenzie  <djm@wookumz.gnu.ai.mit.edu>

	* configure: Only define BSD42 if sys/file.h exists.
	If alloca is missing and /usr/ucblib exists (SVR4), use it
	instead of -lPW.

	* port.h [!__STDC__]: #define const.
	* gnu.c (dirent_cmp): Fix args to agree with ANSI C prototype.
	* create.c: Declare ck_realloc.
	* gnu.c, diffarch.c: Move check for symlinks to after port.h include.

1991-07-20  David J. MacKenzie  <djm@apple-gunkies>

	* msd_dir.[ch]: Use POSIX-style `struct dirent' instead of
	`struct direct'.
	* create.c, gnu.c, tar.c: Adjust callers.

1991-07-18  David J. MacKenzie  <djm@bleen>

	* port.c (ck_malloc, ck_realloc): Return PTR, not char *.
	* gnu.c, create.c, tar.c: Fix decls.

	* port.c: Don't use the preprocessor to guess missing
	functions on Unix; let configure do it.
	[WANT_GETWD] (getwd): Function removed; not needed because
	getcwd is used if needed.
	* gnu.c, tar.c [POSIX]: Use getcwd.

	* rtapelib.c: Use SIGTYPE instead of testing SIGNAL_VOID.
	Default to void (more common these days) instead of int.

	* tar.c, gnu.c, mangle.c: Remove VOIDSTAR defn.  Use PTR instead.
	* port.h: Define PTR.

	* gnu.c, tar.c [__MSDOS__ || USG]: Remove incorrect getcwd decl.
	[!POSIX]: Put correct one in port.h.

	* tar.c (describe): Print on stdout instead of stderr; it's
	not so much a usage message (since you have to ask for it
	explicitly) as on-line help, and you really need to be able to
	page it because it's more than a screen long.

	* Make #ifdefs for sys/file.h or fcntl.h, directory header,
	sys/mtio.h consistent between files.  Use NO_MTIO instead of
	tricks with USG and HAVE_MTIO and NO_RMTIOCTL.
	* Move decls of ANSI C and POSIX functions to port.h and
	use standard headers to declare them if available
	[STDC_HEADERS or POSIX].
	* Add many missing function declarations and return types.
	* Some places used __MSDOS__, some MSDOS; standardize on __MSDOS__.
	* Change S_IF macros to S_IS for POSIX.
	* port.h: Define appropriate S_IS macros if missing.
	* port.h [POSIX]: Rename macros for testing exit status to conform to
	POSIX; use the system's versions if available.
	* Use POSIX PATH_MAX and NAME_MAX instead of MAXPATHLEN and MAXNAMLEN.
	* port.h: Define PATH_MAX and NAME_MAX.
	* create.c, gnu.c, tar.c: Use ck_malloc and free instead of
	auto arrays of size PATH_MAX or NAME_MAX, since with pathconf
	they might not be constants.
	* Move all definitions of O_* to port.h to reduce redundancy.
	* Make all source files that now need to include port.h do so.
	* port.c: Remove #undefs of WANT_* so you can use -DWANT_*
	when compiling, instead of having to edit port.c.
	[WANT_DUMB_GET_DATE] (get_date): Function removed.
	Even systems without bison can get bison output and compile it.
	[WANT_STRING] (index, rindex, bcopy, bzero, bcmp): Functions
	removed; the translation is now done by macros in port.h.
	* wildmat.c (wildmat): Use POSIX.2 '!' instead of '^' to negate
	character classes.

1991-07-18  David J. MacKenzie  <djm@wookumz.gnu.ai.mit.edu>

	* Many files: use __MSDOS__ instead of MSDOS.

	* util.c, configure: Use NO_MTIO instead of HAVE_MTIO, to keep
	up with tar and rtapelib.c.

1991-07-15  David J. MacKenzie  <djm@wookumz.gnu.ai.mit.edu>

	* testpad.c (main): Return type void.

	* port.c [WANT_STRING]: Don't include memory.h if NO_MEMORY_H.

	* create.c (dump_file) [AIX]: Fix typo, `allocate' for `alloca'.
	* gnu.c (collect_and_sort_names): Move misplaced brace out of #ifdef.
	Reported by Minh Tran-Le.

	* configure: Also look in sys/signal.h for signal decl.

1991-07-15  David J. MacKenzie  <djm@wookumz.gnu.ai.mit.edu>

	* configure: Also look in sys/signal.h for signal decl.

1991-07-11  David J. MacKenzie  <djm@wookumz.gnu.ai.mit.edu>

	* Version 1.4.

	* configure: Remove /etc and /usr/etc from PATH to avoid
	finding /etc/install.

1991-07-10  David J. MacKenzie  <djm@wookumz.gnu.ai.mit.edu>

	* Rename rtape_server.c to rmt.c and rtape_lib.c to rtapelib.c.

	* configure, Makefile.in: $(INSTALLPROG) -> $(INSTALL).

1991-07-10  David J. MacKenzie  <djm@wookumz.gnu.ai.mit.edu>

	* makefile.pc: Rewrite for Turbo C 2.0.
	* util.c [__TURBOC__] (utime): New function.
	* alloca.c, tcexparg.c: New files.

	* extern.h [STDC_HEADERS]: Don't declare malloc and realloc.

	* main.c [MSDOS]: Make binary mode the default.
	* copyin.c, copyout.c: Make stdin or stdout binary mode as
	appropriate (so cpio archives don't get corrupted).

	* Many files: Use <string.h> if STDC_HEADERS as well as if USG.

	* configure, Makefile.in: $(INSTALLPROG) -> $(INSTALL),
	$(INSTALLTEXT) -> $(INSTALLDATA).

1991-07-09  David J. MacKenzie  <djm@wookumz.gnu.ai.mit.edu>

	* Most files: Refer to GPL version 2.
	* COPYING: Use version 2.

	* port.c [__TURBOC__] (utime): New function.

	* xmalloc: New function (just calls ck_malloc), for alloca.c
	and bison.simple (in getdate.y output).

	* Makefile.in (AUX): Include alloca.c and tcexparg.c, a
	command line globber for Turbo C.

1991-07-08  David J. MacKenzie  <djm@geech.gnu.ai.mit.edu>

	* testpad.c: Open and write to testpad.h instead of stdout,
	because some MS-DOS makes (Borland's at least) can't do
	redirection in commands.
	* Makefile.in: Don't redirect testpad output.

1991-07-08  Michael I Bushnell  <mib@churchy.gnu.ai.mit.edu>

	* buffer.c (fl_read): Missing \n in printf.

1991-07-08  David J. MacKenzie  <djm@geech.gnu.ai.mit.edu>

	* create.c, extract.c, gnu.c, diffarch.c, tar.c: Comment out
	unused variables.

	* tar.c (options): Cast get_date arg to VOIDSTAR instead of
	`struct timeb *', since on some non-BSD systems the latter is
	undefined.

1991-07-08  David J. MacKenzie  <djm@wookumz.gnu.ai.mit.edu>

	* configure: For some library functions that might be missing,
	conditionally add the .o files to Makefile instead of
	defining func_MISSING.
	* mkdir.c: Renamed from mkrmdir.c.

1991-07-06  David J. MacKenzie  <djm@geech.gnu.ai.mit.edu>

	* Replace Makefile with configure, Makefile.in, and makefile.pc.
	Update README with current compilation instructions.

	* port.c [WANT_RENAME] (rename): New function.

1991-07-06  David J. MacKenzie  <djm@geech.gnu.ai.mit.edu>

	* configure: echo messages to stdout, not stderr.
	Use a test program to see if alloca needs -lPW.

1991-07-03  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* testpad.c (main): Avoid warning from some compilers on array
	address.

	* rtape_server.c (sys_errlist): Should be declared extern.
	Reported by Stuart Kemp.

1991-07-01  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* Release of version 1.10; appropriate changes to README.

	* create.c: Removed printf's about sparse files.

1991-06-27  David J. MacKenzie  <djm@geech.gnu.ai.mit.edu>

	* copyin.c (process_copy_in), copyout.c (process_copy_out),
	copypass.c (process_copy_pass): Check close return value for
	delayed error notification because of NFS.

1991-06-21  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* list.c (skip_extended_headers): Userec was being called in
	the wrong place.

1991-06-20  David J. MacKenzie  <djm@geech.gnu.ai.mit.edu>

	* tar.h [STDC_MSG]: Use ANSI prototypes for msg and msg_perror,
	even if BSD42 is also.

	* Makefile: Replace DESTDIR with bindir.
	(install): Don't install tar.texinfo.  There's no standard
	place for texinfo files, and /usr/local/man is inappropriate.
	Add TAGS, distclean, and realclean targets and SHELL= line.

	* version.c: Move old change history to bottom of ChangeLog.

1991-06-20  David J. MacKenzie  <djm@geech.gnu.ai.mit.edu>

	* configure: Include $DEFS when compiling test programs.

	* util.c: Only declare getpwuid and getgrgid if not POSIX.

	* Version 1.3.

	* copyin.c: Use time_t, not long, for time values.

	* mt.c (print_status): Special cases for HP-UX and Ultrix.

	* util.c: Compile bcopy if USG or STDC_HEADERS, not BCOPY_MISSING.

1991-06-12  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* rtape_lib.c (__rmt_write) [SIGNAL_VOID]: Instead of USG.

1991-06-11  David J. MacKenzie  <djm@geech.gnu.ai.mit.edu>

	* copyin.c: Don't include sys/sysmacros.h if _POSIX_SOURCE.

	* copyin.c, copyout.c, copypass.c: Don't include sys/file.h if POSIX.

	* util.c: Include sys/types.h before, not after, pwd.h and grp.h.

	* configure: New shell script to aid configuration and create
	Makefile from Makefile.in.

	* copyin.c (process_copy_in): Use POSIX.2 fnmatch instead of
	glob_match.

1991-06-10  David J. MacKenzie  <djm@geech.gnu.ai.mit.edu>

	* global.c, extern.h: New variable, name_end.
	* main.c (process_args, usage): Add -0 +null option to set it.
	* copypass.c (process_copy_pass), copyout.c (process_copy_out):
	Use it.

	* dstring.c (ds_fgetstr): New function made from ds_fgets.
	(ds_fgets, ds_fgetname): Implement as front ends to ds_fgetstr.

1991-06-05  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* tar.c (name_match, addname): Ugly hack to handle -C without
	any files specified.
	tar.h (struct name): New field for ugly hack.

1991-06-03  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* testpad.c: New file to determine if we need special padding
	in struct header in tar.h.

	* tar.h (struct header): include padding if necessary, include
	testpad.h.

	* Makefile: rules to create testpad.h, etc.

1991-06-02  David J. MacKenzie  <djm@wheat-chex>

	* most files: use GPL version 2.

1991-05-22  Michael I Bushnell  <mib@churchy.gnu.ai.mit.edu>

	* tar.c (options): -L takes an argument.

	* rtape_lib.c (__rmt_open): add /usr/bin/nsh to the list of
	remote shell programs.

	* create.c: define MAXPATHLEN if we don't get it from a system
	header file.

	* create.c (deal_with_sparse): return a real return value if
	we can't open the file.

	* tar.c (long_options): +newer takes an argument.
	(describe): fix printing in various trivial ways

1991-05-21  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* tar.c (long_options): +get and +concatentate don't require arguments

1991-05-20  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* create.c (write_eot): Don't try and write an EOF if we are
	already at one.

	* port.c (strstr): Looking for null string should return zero.

1991-05-19  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* tar.c (options): -l doesn't take an argument

	* Makefile: Minor fix for SGI 4D defines.
	Reported by Andrew Torda.

	* rtape_server.c (main.c): For 386/AIX.  I'm suspicious about this
	one.
	* create.c (dump_file): For hidden files on AIX.
	gnu.c (collect_and_sort_name, get_dir_contents): AIX hidden file mod.
	Reported by Minh Tran-Le.

	* tar.c: (name_next): Allow -C inside a file list given to -T.
	Reported by David Taylor.

	* Makefile: Comment describing presence of USE_REXEC.

	* extract.c (extract_archive, case LF_SPARSE): zero check for
	last element on numbytes needs to look at value after
	converted from octal.

	* port.c [HAVE_STRSTR]: Check it, instead of always demanding strstr.
	Makefile: Comment describing presence of HAVE_STRSTR option.

1991-05-19  David J. MacKenzie  <djm@churchy.gnu.ai.mit.edu>

	* port.c (get_date): Renamed from getdate, to avoid SVR4 conflict.
	* tar.c: Call get_date instead of getdate.

1991-05-18  David J. MacKenzie  <djm@geech.gnu.ai.mit.edu>

	* copyin.c, copypass.c: Take out #ifdef MSDOS around chown.
	* util.c [MSDOS]: Provide dummy chown.

1991-05-17  David J. MacKenzie  <djm@churchy.gnu.ai.mit.edu>

	* Version 1.2.

	* makefile.pc, cpio.cs: Update for new source and object files.

1991-05-10  Noah Friedman  <friedman@nutrimat>

	* tar.c:  added "\n\" to the end of some documentation strings
	where they were left off.

1991-05-09  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* Makefile: added level-0, level-1, and backup-specs to AUX.
	* version.c: changed to 1.10 beta.
	* README: updated for 1.10 beta release.

1991-04-02  Michael I Bushnell  <mib@godwin>

	* create.c (dump_file): HPUX's st_blocks is in 1024 byte units
	instead of 512 like the rest of the world, so I special cased
	it.
	* tar.c: Undo Noah's changes.

1991-04-01  Noah Friedman  <friedman@wookumz.gnu.ai.mit.edu>

        (This ought to be temporary until things are fixed properly. )

	* tar.c: (struct option long_options):  flag for "sparse" zero if
	compiling under hpux.
	tar.c: (functon options): case 'S' is a no-op if compiling under
	hpux.

1991-03-30  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* tar.h: new variable tape_length.

	* tar.c (options): add new option +tape-length / -L.

	* buffer.c (fl_write): Turn #ifdef TEST code for limited tape
	length on always, for tape-length option.

	* create.c (dump_file): avoid apollo lossage where S_IFIFO == S_IFSOCK.

	* buffer.c: include regex.h
	* buffer.c (fl_read, open_archive): Use regex routines for
	volume header match.
	* xmalloc.c: removed file; wasn't necessary.
	* tar.c: (main) use ck_malloc instead of xmalloc.

1991-03-28  Noah Friedman  <friedman@goldman>

	* regex.c, regex.o: New links.
	* tar.c: include regex.h.
	* Makefile (OBJ2): Add regex.o.
        (regex.o, tar.o): Depend on regex.h
        (SRC2, AUX): Add the new files.

1991-03-23  Noah Friedman  <friedman@wookumz.gnu.ai.mit.edu>

	* Makefile: added default flags and options for compiling under
	hpux.

	* Added files alloca.c and xmalloc.c.

1991-03-23  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* port.c [HPUX]: Define WANT_VALLOC.

1991-03-15  David J. MacKenzie  <djm@geech.ai.mit.edu>

	* rtape_lib.c [USG && !HAVE_MTIO]: Define NO_RMTIOCTL automatically.
	(_rmt_rexec): Temporarily re-open stdin and stdout to
	/dev/tty, to guarantee that rexec() can prompt and read the
	login name and password from the user.
	* Makefile: Mention -DUSE_REXEC.
	Reported by Pascal Meheut.

1991-03-15  David J. MacKenzie  <djm@geech.ai.mit.edu>

	* global.c, extern.h: New variable `archive_desc'.
	* main.c (process_args): Set it.
	* copyout.c (process_copy_out), copyin.c (process_copy_in):
	Use it.

	* copyout.c (process_copy_out), copyin.c (process_copy_in):
	Remote tapes are special and not seekable; don't fstat them.

	* main.c (main, usage): Add -F, +file option.  Use rmtopen.
	(main): Exit after printing version number.
	* util.c (empty_output_buffer): Use rmtwrite instead of write.
	(fill_input_buffer): Use rmtread instead of read.
	(tape_offline): Use rmtioctl instead of ioctl.
	Test HAVE_MTIO instead of MTIO_MISSING, for tar compatibility.

1991-03-14  David J. MacKenzie  <djm@geech.ai.mit.edu>

	* util.c (create_all_directories): Use make_path to do the work.

1991-03-08  Michael I Bushnell  <mib@wookumz.ai.mit.edu>

	* tar.h, Makefile [HAVE_SIZE_T]:  Might be useful for some people.

	* gnu.c: lstat->stat define where appropriate

	* buffer.c (fl_write): keep track of amount written for +totals.
	* tar.c, tar.h: set flag f_totals from +totals option.
	* tar.h (f_totals, tot_written): new variables.
	* tar.c (main): print total written with CMD_CREATE.

	* tar.c (main): return appropriate exit status

1991-01-17  David J. MacKenzie  <djm@apple-gunkies>

	* port.c: Remove a spurious `+' between functions (a remnant
	of a context diff, apparently).

1991-01-12  David J. MacKenzie  <djm@geech.ai.mit.edu>

	* copyin.c, copyout.c, copypass.c, util.c: Only declare
	`errno' if not MSDOS.  Some Unix errno.h do, some don't . . . .

	* global.c, extern.h: Make `input_size' and `output_size'
	unsigned, for 16 bit machines.

	* copyin.c (print_name_with_quoting): All non-ctrl chars are
	printable on MS-DOS.

	* util.c (empty_output_buffer): Never make sparse files;
	can create unrunnable executables.
	* copyin.c, copyout.c, copypass.c: Callers changed.
	* util.c (finish_output_file): Function removed.

1991-01-09  Michael I Bushnell  <mib@pogo.ai.mit.edu>

	* create.c (where_is_data): Rewritten to be better, and then
	#ifdef-ed out.
	(deal_with_sparse): Severly pruned.  Now we write or don't
	write only complete blocks, not worrying about partial blocks.
	This simplifies calculations, removes bugs, and elides the
	second scan through the block.  The first was zero_record, the
	second was where_is_data.

1991-01-07  Michael I Bushnell  <mib@wookumz.ai.mit.edu>

	* create.c (deal_with_sparse): Second computation (for short
	reads) of numbytes increment had subtraction backwards.
	Need to handle calling where_is_data better when we did a
	short read (it might go past the end of the read), also, set
	sparsearray[...].offset in this case too.

1991-01-04  Jay Fenlason <hack@ai.mit.edu>

	* buffer.c: Return a special error code if the archive
	you're trying to read starts with a different label than
	the one specified on the command line.

1991-01-02  Jay Fenlason <hack@ai.mit.edu>

	* gnu.c: Prepend the current directory to the gnu_dumpfile, so that
	-C's won't affect where the output goes. (sigh.)

1990-12-18  Jay Fenlason <hack@ai.mit.edu>

	* gnu.c: Don't complain if the gnudumpfile we're reading info
	from doesn't exist.

	* create.c: Write out gnudumpfile after finishing writing the archive.

	* tar.c: Add +exclude FNAME, and make +exclude-from do what +exclude
	used to.
	* Make +version an operation, not an option.
	* Add +confirmation alias for +interactive.

1990-12-04  Jay Fenlason <hack@ai.mit.edu>

	* tar.c (check_exclude): Don't let MUMBLE match MUMBLE.c or
	fooMUMBLE but only foo/MUMBLE.

	* mangle.c: New file.
	* create.c, extract.c: According changes.

	* extract.c: Don't complain when extracting an already existing link.
	Don't complain when extracting a directory iff it already exists.
	Don't ad u+wx to directories when running as root.
	Reported by Chip Salzenberg.

	* gnu.c: Make +listed-incremental work.
	Reported by Chip Salzenberg.

	* port.c: Add the F_FREESP emulation of the ftruncate syscall.

1990-11-21  Jay Fenlason <hack@ai.mit.edu>

	Remove excess \n from lots of msg() calls.

1990-11-19  Jay Fenlason <hack@ai.mit.edu>

	* tar.c: Rename +volume to +label.

1990-11-16  David J. MacKenzie  <djm@apple-gunkies>

	* tar.c (describe): Include the default values for -b and -f
	(as set in the Makefile) in the message.

1990-11-15  Jay Fenlason <hack@ai.mit.edu>

	* extract.c (extract_archive): Do the utime() call before the
	chmod() call, 'cuz some versons of utime() trash the file's mode
	bits.

	* list.c (read_and): Call do_something on volume headers and
	multivol files even if they don't match the names we're looking
	for, etc.

1990-11-06  Jay Fenlason <hack@ai.mit.edu>

	* port.c (un-quote-string): Don't try to write a null if there's
	already one there.

1990-11-06  David J. MacKenzie  <djm@apple-gunkies>

	* copyin.c, util.c, extern.h: Rename copystring to xstrdup.

1990-11-01  Jay Fenlason <hack@ai.mit.edu>

	* buffer.c (new_volume): fflush(msg_file) before reading for
	confirmation on new volume.  On EOF or error, print error msg and
	abort.

1990-10-29  Jay Fenlason <hack@ai.mit.edu>

	* getdate.y: Use new version of getdate().

	* tar.c (name_add): Use sizeof(char *) instead of sizeof(int)

	* README: Give the correct return address.

1990-10-29  David J. MacKenzie  <djm@apple-gunkies>

	* util.c (empty_output_buffer): Only make sparse files if
	NO_SPARSE_FILES is undefined, to accomodate dumb kernels.

1990-10-25  Jay Fenlason <hack@ai.mit.edu>

	rtape_lib.c [NO_RMTIOCTL]: Instead of RMTIOCTL, so it is on by default.

	rmt.h [NO_REMOTE]: Add _isrmt() #define.

	gnu.c: Add forward reference for add_dir_name().

1990-10-16  Jay Fenlason <hack@ai.mit.edu>

	Version 1.09 --- New -G file implementation of gnu-dump stuff.

	* tar.c (name_add): Get the calls to ck_realloc and ck_malloc right.

1990-10-11  Jay Fenlason <hack@ai.mit.edu>

	* gnu.c: Fix A couple of typos.

1990-09-19  David J. MacKenzie  <djm@apple-gunkies>

	* getdate.y [USG && !DAYLIGHT_MISSING] (ftime): Use `daylight'.

1990-09-17  Jay Fenlason <hack@ai.mit.edu>

	* gnu.c (gnu_restore): Don't use a passed char* for the
	file name, use skipcrud+head->header.name, just like everything
	else does.  This means that gnu_restore will still work with
	small buffers, etc.

1990-09-13  Jay Fenlason <hack@ai.mit.edu>

	* tar.c (add_exclude): Don't bus-error if the exclude file doesn't
	end with a newline.

1990-09-09  David J. MacKenzie  <djm@albert.ai.mit.edu>

	* Makefile (dist): Remove .fname when done.

1990-09-06  Jay Fenlason <hack@ai.mti.edu>

	* gnu.c (gnu_restore): Rember to skip_file() over the directory
	contents, even if we don't have to do anything with them.

	* create.c, extract.c, diffarch.c: Free sparsearray after we're
	done with it.

1990-09-04  Jay Fenlason <hack@ai.mit.edu>

	* Makefile: Include gnu.c in dist

	* gnu.c: Move add_dir above read_dir_file so that cc doesn't
	complain about add_dir returning void.

1990-09-02  David J. MacKenzie  <djm@apple-gunkies>

	* getdate.y: Declare some more functions and add storage
	classes where omitted to shut compiler up.
	[USG] (ftime): Don't use extern var `daylight'; appears that
	some systems don't have it.

1990-08-29  David J. MacKenzie  <djm@apple-gunkies>

	* getdate.y (lookup): In the code that allows `Aug.' to be
	recognized as `Aug', don't chop off the final `.' from words
	like `a.m.', so they can be recognized.

1990-08-16  Jay Fenlason <hack@ai.mit.edu>

	* buffer.c (open_archive): If -O, write verbosity to stderr
	instead of stdout.

1990-08-10  Jay Fenlason <hack@ai.mit.edu>

	* getdate.y: Handle an explicit DST in the input string.
	Reported by Per Foreby.

1990-07-25  David J. MacKenzie  <djm@albert.ai.mit.edu>

	* util.c (getuser, getgroup): Make uid and gid unsigned short,
	not int.

1990-07-21  David J. MacKenzie  <djm@apple-gunkies>

	* copyin.c, copyout.c, copypass.c, util.c, cpio.h: Add ifdefs
	for MSDOS.

1990-07-16  Jay Fenlason <hack@ai.mit.edu>

	* tar.c: rename -g -G +incremental, +listed-imcremental, etc.

1990-07-15  David J. MacKenzie  <djm@albert.ai.mit.edu>

	* copyin.c, copyout.c, copypass.c, global.c, extern.h, util.c:
	Use longs where appropriate, for 16 bit machines.

1990-07-13  Jay Fenlason <hack@ai.mit.edu>

	* tar.c: Make +newer and +newer-mtime work according to their names.

	* gnu.c: If +newer or +newer-mtime, use the time specified on the
	command line.

	* buffer.c, create.c: Add test to see if dimwit is trying to
	archive the archive.

	* tar.c (long_options[]): Re-ordered, so that groups of similar
	options are next to each other...  I think.

	(describe): Modified to more closely reflect reality.

1990-07-08  David J. MacKenzie  <djm@apple-gunkies>

	* main.c (process_args, usage): Change -b option to -O (old), to
	allow adding byte swapping later.

1990-07-07  David J. MacKenzie  <dave@edfmd>

	* Version 1.1.

	* cpio.h: Make `mtime' and `filesize' unsigned long.
	* copyin.c (read_in_binary), copyout.c (write_out_header):
	High short-word of `mtime' and `filesize' always comes first.

	* (read_in_ascii, read_in_binary): New functions, from code in
	read_in_header.
	(read_in_header): Search for valid magic number, then fill in
	rest of header using read_in_ascii and read_in_binary.
	* global.c, extern.h: New variable, `binary_flag'.
	* main.c (process_args): Recognize new -b +binary option.
	* util.c [BCOPY_MISSING] (bcopy): New function.

1990-07-06  Jay Fenlason <hack@ai.mit.edu>

	* tar.c: Add compile-time option for SYS V (?) style
	tape-drive names /dev/rmt/{n}[lmh]

	* tar.c: Fix getopt-style stuff so that -C always works correctly.

	* gnu.c, tar.c: Make filename to -G optional.

	* {all over}: Replace some fprintf(stderr...) calls with calls
	to msg().

	* port.c: Make -Dmumble_MSG option on command line override
	internal assumptions.

	* Makefile: Mention -Dmumble_MSG options

1990-07-06  David J. MacKenzie  <djm@apple-gunkies>

	* tar.c (options): Don't change `c' if it is 0, as getopt now
	handles that internally.

1990-07-04  David J. MacKenzie  <djm@apple-gunkies>

	* main.c (process_args): Add local pointers to functions to
	work around a pcc bug found on a Convex.

	* copyin.c (process_copy_in), util.c (toss_input,
	create_all_directories, add_inode): Don't use `index' as a
	variable name.

1990-07-03  David J. MacKenzie  <djm@apple-gunkies>

	* version 1.0.

1990-07-02 Jay Fenlason <hack@ai.mit.edu>

	* gnu.c (new file): Moved all the f_gnudump stuff here where we
	can keep track of it easier.  Also made -G take a file name where
	it stores the inode information about directories so that we can
	detect moved directores.

	* create.c (dump_file): Changed slightly to work with the new
	f_gnudump.

	* tar.c: Moved the f_gnudump stuff to gnu.c

	* tar.c, extract.c: Added the +do-chown option, which forces tar
	to always try to chown the created files to their original owners.

	* version.c: New version 1.09

1990-07-02  David J. MacKenzie  <djm@twiddle>

	* copyin.c (process_copy_in), copyout.c (process_copy_out),
	copypass.c (process_copy_pass): Print "1 block", not "1 blocks".

	* copyin.c (process_copy_in), copypass.c (process_copy_pass):
	Unlink existing dest. file unless either it is newer and
	not unconditional, or it is a directory.

1990-07-02  David J. MacKenzie  <dave@edfmd>

	* util.c (xrealloc): New function.
	* dstring.c (ds_resize): Use xrealloc instead of free and
	xmalloc.  Never shrink the string.

	* copypass.c (process_copy_pass): More efficient
	string handling while constructing output filename.

	* global.c, extern.h, main.c, cpio.h: Change from an enum,
	`copy_command', to a pointer to a void function, `copy_function'.

	* cpio.h (struct cpio_header): Make most fields unsigned.
	Rename h_filesize to h_filesizes and h_mtime to h_mtimes, and
	add new `long' fields with the old names at the end of the
	structure.
	* copyin.c (read_in_header): Set the long fields from the
	short arrays, making sure longs are aligned properly.
	(process_copy_in, long_format): Use the long fields.
	* copyout.c (write_out_header): Set the short arrays from the
	long fields, making sure longs are aligned properly.
	(process_copy_out): Use the long fields.

	* global.c, extern.h: New variable `output_is_seekable'.
	* util.c (empty_output_buffer): If output_is_seekable, use
	lseek to write blocks of zeros.
	(finish_output_file): New function.
	* copyin.c (process_copy_in), copyout.c (process_copy_out),
	copypass.c (process_copy_pass): Set `output_is_seekable'
	correctly and call finish_output_file.
	* main.c (initialize_buffers): Allocate space for sentinel in
	`output_buffer'.

	* global.c, extern.h: New variable `numeric_uid'.
	* main.c (process_args): Accept -n +numeric-uid-gid option, like ls.
	* copyin.c (long_format): Use numeric_uid.

	* copyin.c (process_copy_in), copyout.c (process_copy_out),
	copypass.c (process_copy_pass): Don't (for verbose) print the
	names of files that are not copied because of errors.  Try to
	create missing directories for all file types.  Free temporary
	buffers on error.

1990-06-30  David J. MacKenzie  <djm@apple-gunkies>

	* version.c: New file.
	* main.c: Add -V, +version option.
	* Makefile [dist]: Extract version number from version.c.

1990-06-30  David J. MacKenzie  <dave@edfmd>

	* global.c, extern.h, copyin.c, copyout.c, util.c: Rename
	`{input,output}_is_regular' to `{input,output}_is_special' and
	reverse the truth value.

	* global.c, extern.h: New variable `input_is_seekable' to
	control whether to skip data with lseek or read.
	* copyin.c (process_copy_in): Set it.
	* util.c (toss_input): Use it.

	* global.c, extern.h: New variable `xstat' that selects stat
	or lstat for input files.
	* main.c (process_args): New option -L, +dereference to set
	xstat to stat instead of lstat.
	(usage): Document it.
	* copyout.c (process_copy_out), copypass.c
	(process_copy_pass): Use *xstat on input file.

1990-06-30  David J. MacKenzie  <dave@edfmd>

	* dstring.c (ds_init): Return void because return value was
	never used.
	(ds_resize): Ditto, and free old value instead of new one.

	* util.c (empty_output_buffer, fill_input_buffer,
	copy_out_buf, copy_in_buf, toss_input, copy_files): Return
	void instead of an error value and make errors fatal
	immediately instead of several levels up, to prevent printing
	of multiple error messages by different levels of functions.

	* copyin.c (read_in_header): Return void, because the error
	handling all happens at lower levels.
	(print_name_with_quoting): New function.
	(long_format): Call print_name_with_quoting.  Take additional
	arg for name of linked-to file, and print it if nonzero.
	(process_copy_in): For verbose listing of symlinks, read in
	the linkname and pass it to long_format.

	* extern.h: Declare some more functions.

1990-06-28  David J. MacKenzie  <dave@edfmd>

	* copypass.c (process_copy_pass): Warn about unknown file types.

	* copyout.c (process_copy_out): Check fstat return for error.
	Record filesize of 0 for special files.  Warn about unknown
	file types.

	* copyin.c (process_copy_in): Warn about unknown file types.
	(read_in_header): Warn about byte-reversed binary headers.

1990-06-24  David J. MacKenzie  <djm@albert.ai.mit.edu>

	* create.c: Change ifdefs for directory library header
	selection to be like the ones in tar.c.
	* Makefile [Xenix]: Link with -ldir to get the dirent.h
	directory library.

1990-06-23  David J. MacKenzie  <dave@edfmd>

	* main.c (main): Set umask to 0 so permissions of created
	files are preserved.

	* copyin.c, copyout.c, copypass.c, util.c: Pass file
	descriptors as ints, not pointers to ints.
	Cast file timestamps and sizes to long *, not int *, for 16
	bit machines.
	Use lstat instead of stat, if available.
	Handle FIFO's, sockets, and symlinks, if supported by O.S.

	* copyin.c (process_copy_in), copyout.c (process_copy_out):
	Don't consider FIFO'S, sockets, etc. to be possible tape drives.

	* util.c (create_all_directories): Fix incorrect loop
	termination check.  Only copy string if it contains slashes.
	Don't check whether directory "" exists.
	(tape_offline): Code moved from get_next_reel.
	(get_next_reel): Print message before taking tape offline.
	Read a line of arbitrary length.

	* copyout.c, copyin.c, copypass.c: Always use utime, not utimes.

	* copyin.c (swab_short): New macro.
	(swab_array): New function.
	(read_in_header): In binary mode, if a byte-swapped header is
	read, swap the bytes back.
	(process_copy_in, process_copy_pass): Don't stat each file to
	create unless !unconditional_flag.  Create device files correctly.
	Don't temporarily allow files being created to be read by
	other users.  Don't unnecessarily chmod special files.

1990-06-07  David J. MacKenzie  <djm@albert.ai.mit.edu>

	* Makefile, buffer.c, diffarch.c [HAVE_MTIO]: Instead of MTIO, as
	SCO Xenix defines 'MTIO' for an incompatible tape driver system in
	a file included by termio.h.
	* tar.h: Don't define size_t for Xenix.

1990-06-05  Jay Fenlason <hack@ai.mit.edu>

	* create.c (dump_file): Only print the
	"... is on a different filesystem..." if f_verbose is on.
	also add a case for S_IFSOCK and treat it like a FIFO.
	(Not sure if that's the right thing to do or not, but it's better
	than all those Unknown File Type msgs.)

1990-05-31  Jay Fenlason <hack@ai.mit.edu>

	* port.c [sparc]: Use instead of SPARC since the lowercase version
	is defined, and the uppercase one isn't.

1990-05-31  David J. MacKenzie  <djm@albert.ai.mit.edu>

	* copyin.c (long_format): Use mode_string to format
	file protections instead of doing it ourselves.
	(protections): Function removed.

1990-05-22  Jay Fenlason <hack@ai.mit.edu>

	* port.c (ck_malloc): if size==0 pretend size=1
	(ck_realloc): if(!ptr) call ck_malloc instead.

1990-05-15  Jay Fenlason <hack@ai.mit.edu>

	* diffarch.c (diff_archive): If not f_absolute_paths, and attempt
	to open a file listed in the archive fails, try /filename also.
	This will allow diff to open the wrong file if both /filename and
	filename exist, but there's nothing we can do about that.

1990-05-11  Jay Fenlason <hack@ai.mit.edu>

	* Makefile: Describe new -DMTIO option.

	* buffer.c, diffarch.c: Change ifdefs slightly, so that -DMTIO
	will include sys/mtio.h even if USG is defined.  This is for HPUX
	and similar BSD/USG crossovers.

1990-05-08  Jay Fenlason <hack@ai.mit.edu>

	* update.c (update_archive): Call reset_eof() when appropriate.

	* buffer.c (reset_eof): New function, that turns of EOF flag, and
	re-sets the ar_record and ar_last pointers.  This will allow
	'tar rf non-existant-file' to not core-dump.

1990-05-04  David J. MacKenzie  <djm@albert.ai.mit.edu>

	* tar.c: Recognize the +sparse option.  It was documented, but
	only the short form (-S) was actually recognized.

1990-04-17  Jay Fenlason <hack@ai.mit.edu>

	* create.c: Don't access location 0 if ->dir_contents is null.

1990-04-14  David J. MacKenzie  <djm@albert.ai.mit.edu>

	* cpio.h (struct cpio_header): Make inode, mode, uid, gid
	fields unsigned.

	* util.c (getgroup): New function.
	* copyin.c (long_format): Print group name of files.
	Print file size, etc. as unsigned integers, not signed.

	* main.c (process_args): If -t is given and neither -i, -o, or
	-p is given, assume -i.

	* Add -f, +nonmatching option.
	* main.c: Rename +out to +create, +in to +extract,
	+modification-time to +preserve-modification-time,
	+pass to +pass-through.

	* copyin.c (process_copy_in), copypass.c (process_copy_pass):
	Don't complain in chown fails because the user doesn't have
	permission.

1990-04-13  David J. MacKenzie  <djm@albert.ai.mit.edu>

	* Add ifdefs for USG/Xenix.
	* util.c (cpio_error): Function removed.
	* Use error instead of cpio_error, so system error messages
	will be included.
	* cpio.h: Rename 'hdr_struct' to 'struct cpio_header'.
	* Move definition of xmalloc from dstring.c to util.c.
	* global.c, extern.c: Add global `program_name'.
	* main.c (main): Set program_name.
	(process_args): Rename +reset-atime to +reset-access-time,
	+table to +list.
	Have +block-size take an argument.

1990-04-12  David J. MacKenzie  <djm@rice-chex>

	* util.c (find_inode_file): Make inode an int, not a short.

	* Make functions that don't return a value have type void.
	Add some casts to function calls.

1990-04-11  Jay Fenlason <hack@ai.mit.edu>

	* buffer.c (flush_archive, close_archive, new_volume): Always
	check the return value of rmtclose(), and only give a warning msg
	if it is <0.  Some device drivers (including Sun floppy disk, and
	HP streaming tape) return -1 after an IO error (or something like
	that.)

1990-04-11  David J. MacKenzie  <djm@albert.ai.mit.edu>

	* main.c (process_args): -i, -o, and -p don't take arguments.

	* main.c (process_args): Get the non-option args from the
	correct elements of argv.

1990-04-10  David J. MacKenzie  <djm@albert.ai.mit.edu>

	* Indent source code and update copyrights.

	* cpio.c (usage): Change `collection' to `archive' in message.

1990-03-23  Jim Kingdon  <kingdon@mole.ai.mit.edu>

	* tar.c (long_options): Make it so +append +extract +list +update
	+catenate and +delete don't take arguments.

1990-03-12  Jay Fenlason <hack@ai.mit.edu>

	* buffer.c (open_archive, fl_write): Set the mtime of the volume
	header to the current time.

1990-03-07  Jay Fenlason <hack@ai.mit.edu>

	* buffer.c  Fix +compress-block  A two character patch from
	Juha Sarlin.
	Replace #ifdef __GNU__ with #ifdef __STDC__.
	(new_volume): If open of new archive fails, ask again, as it
	probably is user error.

	* tar.c: Replace #ifdef __GNU__ with #ifdef __STDC__

	* port.c: Clean up #ifdef and #defines a bit.
	(quote_copy_string): Sometimes the malloc'd buffer would be up to
	two characters too short.

	* extract.c (extract_archive): Don't declare ind static.

	* create.c (dump_file): Don't declare index_offset static.

	* diffarch.c: Remove diff_name variable, and always use
	head->header.name, which will always work, unlike diff_name, which
	becomes trash when the next block is read in.

1990-03-01  Jay Fenlason <hack@wookumz.ai.mit.edu>

	* Makefile: Mention the -NO_REMOTE option.
	* port.c [i386]: Fix typo, and define WANT_FTRUNCATE.

1990-02-26  Jim Kingdon  <kingdon@pogo.ai.mit.edu>

	* getdate.y: Declare yylex and yyerror as static.
	#define yyparse to getdate_yyparse.

1990-02-25  David J. MacKenzie  <djm@albert.ai.mit.edu>

	* tar.c: Remove +old option, since it is a valid abbreviation of
	+old-archive, which does the same thing.
	(describe): A few small cleanups in message.

1990-02-05  Jay Fenlason	<hack@wookumz>

	* port.c [sparc]: Define LOSING_MSG, since doprnt_msg doesn't work.
	[WANT_GETWD]: Fix typo.

1990-01-26  Jay Fenlason	<hack@wookumz>

	Version 1.08 --- Sparse file support added.  Also various other
	features.

	* diffarch.c (compare_chunk): Include correct arguments in
	a call to fprintf() for an error msg.
	(compare_chunks, compare_dir): First argument is a long, not an int.

	* tar.c (options): Use tar variable (argv[0]) as the name to print
 	in an error msg, instead of a constant "tar".
	(confirm): Use external variable char TTY_NAME[] for name of file
	to open for confirmation input.

	* buffer.c (new_volume): Ditto.

	* port.c: Add declaration for TTY_NAME[].

	* rmt.h: Add long declarations for lseek() and __rmt_lseek();

1990-01-23  Jay Fenlason <hack@wookumz>

	* tar.c, create.c: Create the +newer-mtime option, which is like
	+newer, but only looks for files whose mtime is newer than the
	given date.

	* rtape_lib.c [USG]: Make *both* instances of signal-handler stuff
	use void (*foo)().

1990-01-11  Jay Fenlason  <hack@wookumz>

	* getdate.y : Parse European dates of the form YYMMDD.
	In ftime(): Init timezone by calling localtime(), and remember that
	timezone is in seconds, but we want timeb->timezone to be in minutes.
	Reported by Jrgen Haegg.

	* rtape_lib.c (__rmt_open): Also look for /usr/bsd/rsh.
	Declare signal handler as returning void instead of int if USG is
	defined.

	* port.c: Declare WANT_GETWD for SGI 4-D IRIS.

	* Makefile: Include defines for SGI 4D version.
	Reported by Mike Muuss.

	* buffer.c (fl_read): Work properly on broken Ultrix systems where
	read() returns -1 with errno==ENOSPC on end of tape.  Correctly go
	on to the next volume if f_multivol.

	* list.c (list_archive, print_header): Flush msg_file after
	printing messages.

	* port.c: Delete unused references to alloca().
	Don't crash if malloc() returns zero in quote_copy_string.
	Flush stderr in msg() and msg_perror().

	* tar.c: Flush msg_file after printing confirmation msg.

1990-01-10  David J. MacKenzie  <djm@hobbes.ai.mit.edu>

	* tar.c (main): Change -help option and references to it to +help,
	and remove suggestion to run info (which is unreleased, so not
	likely to be of any help).

1990-01-09  Jay Fenlason  <hack@wookumz>

	* create.c (dump_file): Close file descriptor if start_header()
	fails.
	(dump_file): Change test for `./'-ness to not think that `.' {any
	character} is a `./'.
	Reported by Piercarlo Grandi.

	* diffarch.c (diff_init): Print correct number of bytes in error
	message.

1990-01-09  David J. MacKenzie  <djm@hobbes.ai.mit.edu>

	* Makefile: Add comment at top noting that two source files also
	contain #defines that might need to be changed by hand.

	* create.c, diffarch.c, extract.c: Change L_SET to 0 in lseek
	calls, because only BSD defines it.
	* create.c (dump_file) [BSD42]: Make sparse file checking code
	conditional because it uses st_blocks, which the other systems lack.

1990-01-02  Jay Fenlason <hack@gnu>

	* port.c (quote_copy_string): Fix so it doesn't scramble memory if
	the last character is non-printable.
	Reported by Kian-Tat Lim.

1989-12-28  David J. MacKenzie  <djm@hobbes.ai.mit.edu>

	* dstring.c (xmalloc): Don't return a null pointer if size is 0,
	on the assumption that trying to allocate 0 bytes is a bug that
	should be trapped.

1989-12-20  David J. MacKenzie  <djm@hobbes.ai.mit.edu>

	* All files: Change from GNU CPIO General Public License to
	GNU General Public License.

1989-12-19  Jim Kingdon  <kingdon@pogo>

	* port.c [BSD42]: Define DOPRNT_MSG.
	tar.h [BSD42]: Do not prototype msg{,_perror}.

1989-12-18  David J. MacKenzie  <djm@hobbes.ai.mit.edu>

	* Makefile: Add clean target and defines for CC and LDFLAGS.
	Add dist target and SRCS, DISTFILES macros.  Add tags and TAGS targets.
	* dstring.c (ds_fgets): Read characters into an int, not char.
	(xmalloc): New function.
	(out_of_memory): Function removed.
	Global: use xmalloc instead of malloc and out_of_memory.
	* extern.h, global.c: Make flag variables ints instead of chars for
	compatibility with getopt_long.
	* extern.h: Declare more functions.
	* main.c (usage): Put the whole usage message into a single string
	and fix errors.
	* util.c (create_all_directories): Remove unused variable.
	(get_next_reel): Ditto.
	* dstring.h: Declare function.

1989-12-08  Jay Fenlason <hack@gnu>

	* create.c (dump_file): Remove typo in msg.

1989-12-02  David J. MacKenzie  <djm@hobbes.ai.mit.edu>

	* main.c: Change +copy-pass option to +pass, +copy-in to +in,
	+copy-out to +out, and +mkdir to +make-directories, and add null
	option to terminate table.
	(process_args): Use the same code to handle long and short named
	options.
	(usage): Mention long options in message.

1989-12-01  David J. MacKenzie  <djm@trix>

	* Makefile: Remove comments referring to certain systems lacking
	getopt, since it is now provided always and needed by all systems.

	* port.c: Remove copy of getopt.c, as it is now linked in
	separately to always get the current version.

	* tar.c: Rename +cat-tars option to +catenate or +concatenate,
	and +local-filesystem to +one-file-system (preferred by rms
	and used in GNU cp for the same purpose).
	(describe): Reflect changes.

1989-11-28  David J. MacKenzie  <djm@hobbes.ai.mit.edu>

	* port.c: Move declaration of alloca into #else /* sparc */
	so it will compile on sparcs.

1989-11-27  David J. MacKenzie  <djm@hobbes.ai.mit.edu>

	* tar.c (options): Remove -version option (replaced by +version).
	(describe): Mention long options.

1989-11-25  David J. MacKenzie  <djm@hobbes.ai.mit.edu>

	* getoldopt.c (getoldopt): Make `opt_index' argument a pointer to
	an int, not char.

	* tar.c: Modify long options per rms's suggestions:
	Make preserve-permissions an alias for same-permissions.
	Make preserve-order an alias for same-order.
	Define preserve to mean both of those combined.
	Make old an alias for old-archive.
	Make portability an alias for old-archive, also.
	Rename sym-links to dereference.
	Rename gnudump to incremental.
	Rename filename to file.
	Make compare an alias for diff.  Leave diff but prefer compare.
	Rename blocking-factor to block-size.
	Rename chdir to directory.
	Make uncompress an alias for compress.
	Rename confirm to interactive.
	Make get an alias for extract.
	Rename volume-header to volume.

	Also make +version an alias for -version.

	(options): Shorten code that interprets long options by using
	the equivalent short options' code.  This also makes it tons
	easier to change the long options.

	(describe): Make usage message more internally consistent
	stylistically.

1989-11-20  Jay Fenlason  <hack@ai.mit.edu>

	* list.c (read_and): Call check_exclude() to see if the files
	should be skipped on extract or list.

1989-11-09  Jim Kingdon  <kingdon@hobbes.ai.mit.edu>

	* buffer.c (fl_read): Fix typos in error message
	"tar EOF not on block boundary".

1989-10-23  Jay Fenlason  <hack@ai.mit.edu>

	* tar.c (long_options[]): Add an option for blocked compression.

1989-10-19  Jay Fenlason  <hack@ai.mit.edu>

	* buffer.c (writeerror): Print a more useful error msg.

1989-09-27  Jay Fenlason  <hack@ai.mit.edu>

	* tar.c (main): Mention "tar -help" if the luser types a non-workable
	set of options.

1989-09-11  Jay Fenlason  <hack@ai.mit.edu>

	* tar.c (options): Have -F correctly set info_script.

1989-08-29  Jay Fenlason  <hack@ai.mit.edu>

	* Makefile  Include ChangeLog in tar.tar and tar.tar.Z

1989-08-28  Jay Fenlason  <hack@ai.mit.edu>

	* tar.c (options) Made -F imply -M.
	Also remind tar that the -f option takes an argument!

	* Modified -F option to make it do what (I think) it
	should.  e.g, if you say -F, tar won't send a msg to
	msg_file and wait for a <return> It'll just run the program
	it was given, and when the prog returns, the new tape had
	*better* be ready...

	* buffer.c (open_archive): Give error message and abort if
	the luser didn't give an archive name.

1989-08-25  Joy Kendall  <jak@hobbes>

	* Added code to make a new option to run a specified script at
	the end of each tape in a multi-volume backup.	Changed: tar.c:
	made new switch, -F, and new long-named option, "info-script".
	Code is where you would expect.
	* tar.h: added flag f_run_script_at_end, and an extern char *
	called info_script, which optarg gets set to.
	* buffer.c (new_volume): if f_run_script_at_end is set, we give
	info_script to system(), otherwise we do what we've always done.

1989-08-24  Joy Kendall  <jak@spiff>

	[These changes made over the course of 1989-06 -- 1989-08]

	* diffarch.c: diff_archive: Added switches for LF_SPARSE in the
	case statements that needed it.  Also, skip any extended headers
	if we need to when we skip over a file.  (need to change the bit
	about, if the size doesn't agree AND the file is NOT sparse,
	then there's a discrepancy, because I added another field to
	the header which should be able to deal with the sizes): If
	the file is sparse, call the added routine "diff_sparse_files"
	to compare.  Also added routine "fill_in_sparse_array".

	* extract.c: extract_archive: added the switch LF_SPARSE to the
	case statement as needed, and code to treat the sparse file.
	At label "again_file", modified opening the file to see if we
	should have O_APPEND be one of the modes.  Added code at label
	"extract_file" to call the new routine "extract_sparse_file"
	when we have an LF_SPARSE flag.

	Note: really should erase the commented-out code in there,
	because it's confusing.

	* update.c: made sure that if a file needed to be "skipped"
	over, it would check to see if the linkflag was sparse, and if
	so, would then make sure to skip over any "extended headers"
	that might come after the header itself.  Do so by calling
	"skip_extended_headers".

	* create.c: create_archive: added code to detect a sparse file
	when in the long case statement.  Added ways to detect extended
	headers, and label "extend" (ack! should get rid of that, is
	atrocious).  Call the new routine "finish_sparse_file" if the
	linkflag is LF_SPARSE to write the info to the tape.  Also added
	routines "init_sparsearray", "deal_with_sparse", "clear_buffer",
	"where_is_data", "zero_record", and "find_new_file_size".

	* tar.h: Added the #define's SPARSE_EXT_HDR and SPARSE_IN_HDR.
	Added the struct sparse and the struct sp_array.  Added the
	linkflag LF_SPARSE. Changed the tar header in several ways:
	- added an array of struct sparse's SPARSE_IN_HDR long
	- added a char flag isextended
	- added a char string realsize to store the true size of a sparse file
	Added another choice to the union record called a struct
	extended_header, which is an array of 21 struct sparse's and a
	char isextended flag.  Added flag f_sparse_file to list of flags.

	* tar.c: added long-named options to make tar compatible with
	getopt_long, changed Makefile.

1989-03-03  David MacKenzie  <edf@rocky2.rockefeller.edu>

	* buffer.c [USG]: ifdef'd out #include <sys/file.h>.
	(close_archive): SysV doesn't have ftruncate, so substituted
	fmtwrite (just copied the code for MS-DOS).
	* create.c: Unos lacks <sys/sysmacros.h> so provided a substitute.
	(start_header): Only strip leading paths if f_relative_paths is true.
	* extract.c:
	(extract_archive): Only strip leading paths if
	f_relative_paths is true.  Because the Unos filesystem has
	only one timestamp, moved the utime call to after the chown
	and chmod calls.
	* getdate.y: Don't define ftime if Unos.
	* list.c: Defined size_t for Unos.  [USG]: Don't include <sys/file.h>.
	Define <sys/sysmacros> stuff manually for Unos.
	(decode_header): Add braces around switch cases; some compilers
	require them.
	(print_header): Changed UGSWIDTH from 11 to 25 because the smaller
	value made tape listings of files owned by more than one user
	gradually get wider, making them hard to read.
	* port.c: Don't include <sys/file.h> if SysV.  Define
	size_t for Unos.
	(mkdir): Add code to support Unos makedir sys call.
	(getopt): Use malloc instead of alloca, because tar doesn't
	use alloca anywhere else and many systems lack it.  A few other
	changes from the current version of getopt.c incorporated.
	* rtape_lib.c: Undefine RMTIOCTL.  Doesn't seem to be needed,
	and can't compile on Unos/SysV with it defined.  Might need to be
	ifdef'd.
	* tar.c: Alias addname to add_name and rmdir to deldir on Unos
	due to C library weirdness.
	(options): Recognize new -P option to set f_relative paths.
	(describe): Clean up error message and add -P description.
	* tar.h: Add variable, f_relative_paths, to cause tar to strip
	leading `/' characters in pathnames during create and extract.
	* tar.texinfo: Fixed a couple of typos, detected by texi2roff.
	* update.c: Simulate <sys/sysmacros.h> for Unos.

1989-12-12   Jay Fenlason  <hack@ai.mit.edu>

	* Version 1.07.
	* New version to go on beta tape with GCC 1.35.
	* Better USG support.
	* Support for __builtin_alloca if we're compiling with GCC.
	* diffarch.c: Include the correct header files so MTIOCTOP
	is defined.
	* tar.c:  Don't print the verbose list of options unless
	given -help.  The list of options is *way* too long.

	* Version 1.06.
	* [__STDC__]: Use STDC_MSG.
	* ENXIO meand end-of-volume in archive (for the UNIX PC)
	* extract.c: Added break after volume-header case.
	* rtape_lib.c: Added patch.  Reported by Arnold Robbins.
	* Added f_absolute_paths option.
	* Deleted refereces to UN*X manual sections (dump(8), etc).
	* Fixed to not core-dump on illegal options.
	* Modified msg_perror to call perror("") instead of perror(0)
	* Patch so -X - works
	* tar.c: Fix so 'tar cf - -C dir' doesn't core-dump.
	* tar.c (name_match): Fixed to chdir() to the appropriate
	directory if the matching name's change_dir is set.  This makes
	tar xv -C foo {files} work.

	* Version 1.05.
	* A fix to make confirm() work when the archive is on stdin; include
	'extern FILE *msg_file;' in pr_mkdir().
	* tar.h [__STDC__]: Fix to work.
	* port.c: New mkdir() ftruncate().  Removed: lstat().
	* Fixed -G to work with -X
	* tar.texinfo: Another fix.
	* tar.c: Changed to say argv[0]":you must specify exactly ...".
	* buffer.c: modified child_open() to keep tar from hanging when
	it is done reading/writing a compressed archive.
	* Added fflush(msg_file) before printing error messages.
	* create.c: fixed to make link_names non-absolute.

	* Version 1.04.
	* Added functions msg() and msg_perror(), modified all the files
	to call them.  Also checked that all (I hope) calls to
	msg_perror() have a valid errno value.
	* Modified anno() to leave errno alone, etc.
	* Re-fixed the -X option.  This time for sure...
	* Re-modified the msg stuff.
	* Flushed anno() completely.
	* Modified the directory stuff so it should work on sysV boxes
	* getdate.y: Added ftime().
	* Fixed un_quote_string() so it won't wedge on \".  Also fixed
	\ddd (like \123, etc).
	* tar.texinfo: More fixes.

	* Version 1.03.
	* buffer.c: Fix so 'tar tzf NON_EXISTENT_FILE' returns an error
	message instead of hanging forever.
	* tar.texinfo: More fixes.

	* Version 1.02.
	* tar.c: Fix so 'tar -h' and 'tar -v' don't cause core dump.  Also
	fixed the 'usage' message to be more up-to-date.
	* diffarch.c [!MTIOCTOP]: Fixed so verify should compile.

	* Version 1.01.
	* tar.texinfo: Fixed typoes.
	* Fixed a bug in the #define for rmtcreat().
	* Fixed the -X option to not call realloc() of 0.

	* Version 1.00.
	* version.c: New file.  -version option added.
	* Installed new version of the remote-tape library.
	* Added -help option.
