(root)/
tar-1.35/
ChangeLog.1
Currently there is just one ChangeLog file for tar, but there
used to be separate ChangeLog files for each subdirectory. This
file records what used to be in those separate files.

Copyright 1989‐1997, 2013, 2023 Free Software Foundation, Inc.

This file is part of GNU tar.

GNU tar is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
by the Free Software Foundation; either version 3 of the License,
or (at your option) any later version.

GNU tar is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MER‐
CHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/li‐
censes/>.


‐‐‐‐‐ ChangeLog ‐‐‐‐‐

1997‐04‐25 François Pinard <pinard@iro.umontreal.ca>

* Release 1.12.

* configure.in: Check for the inline keyword.

1997‐04‐24 François Pinard <pinard@iro.umontreal.ca>

* Makefile.am (BABYL): Delete admin/RMAIL, renamed
rmail/announce.

* PORTS: New file. (EXTRA_DIST): Adjusted.

1997‐04‐23 François Pinard <pinard@iro.umontreal.ca>

* BI‐PATCHES: Patches for Bison 1.25. * Make‐
file.am (EXTRA_DIST): Adjusted.

* configure.in (AC_PROG_INSTALL): Call deleted.
AM_INIT_AUTOMAKE takes care of this already.

1997‐04‐22 François Pinard <pinard@iro.umontreal.ca>

* Prerelease 1.11q.

* configure.in: Use gethostent instead of gethostbyname
while checking for ‐lnsl. It seems SINIX systems require
this. Reported by Bruno Haible.

1997‐04‐19 François Pinard <pinard@iro.umontreal.ca>

* acinclude.m4: New fp_WITH_INCLUDED_MALLOC macro.
* configure.in: Use it instead of the HP/UX test for GNU
malloc. Reported by Bruno Haible.

1997‐04‐17 François Pinard <pinard@iro.umontreal.ca>

* Prerelease 1.11p.

* acinclude.m4 (cl_FUNC_GMALLOC): New macro, yet still
unused, as it requires config.guess. I have to think
more about this. Reported by Bruno Haible.

1997‐04‐16 François Pinard <pinard@iro.umontreal.ca>

* AC‐PATCHES: Patches for Autoconf 2.12. * AM‐
PATCHES: Patches for Automake 1.1n. * Makefile.am (EX‐
TRA_DIST): Adjusted.

1997‐04‐15 François Pinard <pinard@iro.umontreal.ca>

* configure.in: Ensure all cpp directives are left justi‐
fied. Reported by Kaveh R. Ghazi.

1997‐04‐12 François Pinard <pinard@iro.umontreal.ca>

* configure.in: Add fnmatch.o to LIBOBJS if AC_FUNC_FN‐
MATCH says no working copy was found. This is not done
automatically. Reported by Bruno Haible, Bryant Fuji‐
moto, John David Anglin, Kaveh R. Ghazi, Laurent Caillat‐
Vallet, Sakai Kiyotaka and Santiago Vila Doncel.

1997‐04‐11 François Pinard <pinard@iro.umontreal.ca>

* configure.in: Much simplify the ‐lsocket and ‐lnsl
tests. Reported by Larry Schwimmer.

1997‐04‐11 François Pinard <pinard@iro.umontreal.ca>

* Prerelease 1.11o.

* configure.in: Do not check for gettimeofday anymore.

* configure.in: Do not anymore blindly add ‐lnsl if geth‐
ostname is found, nor ‐lsocket if setsockopt is found.
Instead, for resolving setsockopt, try none, ‐lsocket,
and ‐lsocket ‐lnsl, in that order. For resoving gethost‐
byname, try none, than ‐lnsl. Reported by Ariel Faigon,
Heiko Schlichting, Jean‐Philippe Martin‐Flatin, John J.
Szetela, John R. Vanderpool, Kaveh R. Ghazi, Larry
Schwimmer, Marcus Daniels, Mark Bynum and Russell Catte‐
lan.

1997‐04‐10 François Pinard <pinard@iro.umontreal.ca>

* configure.in: Define _GNU_SOURCE to get FNM_LEADIR_DIR,
etc. * acconfig.h: Document _GNU_SOURCE. Re‐
ported by Andreas Jaeger, Becki Kain, Brendan Kehoe, David
N. Brown, J. Dean Brock, James V. DI Toro III, Jeffrey
Mark Siskind, Jürgen Reiss, Paul Eggert, Roland McGrath,
Rolf Niepraschk, Roman Gollent, Thomas Bushnell n/BSG and
Ulrich Drepper.

1997‐03‐26 François Pinard <pinard@iro.umontreal.ca>

* configure.in (ALL_LINGUAS): Add it.

1997‐03‐20 François Pinard <pinard@iro.umontreal.ca>

* configure.in: Require Autoconf 2.12.

1997‐02‐25 François Pinard <pinard@iro.umontreal.ca>

* configure.in: Use AM_CONFIG_HEADER and AM_GNU_GETTEXT
instead of AC_CONFIG_HEADER and ud_GNU_GETTEXT. Use
AC_FUNC_FNMATCH instead of AM_FUNC_FNMATCH. Do not take
care anymore of stamp‐h in AC_OUTPUT, leave it to Au‐
tomake. * acinclude.m4: Replaced whole, from elsewhere.
* Makefile.am (EXTRA_DIST): Leave README‐alpha to Au‐
tomake.

1997‐02‐12 François Pinard <pinard@iro.umontreal.ca>

* configure.in: Delete README‐alpha code, Automake han‐
dles it now.

1996‐11‐18 François Pinard <pinard@iro.umontreal.ca>

* Prerelease 1.11.14.

* Makefile.am (BABYL): Add admin/RMAIL.

* configure.in: Check for sys/buf.h, as BSD/OS.
Reported by Dan Reish.

1996‐11‐09 François Pinard <pinard@iro.umontreal.ca>

* configure.in: Replace a missing basename. Re‐
ported by Bryant Fujimoto, Erick Branderhorst, Greg Black, John
David Anglin, John J. Szetela, Kaveh R. Ghazi, Kurt
Jaeger, Marcus Daniels, Santiago Vila Doncel and William
Bader.

1996‐11‐08 François Pinard <pinard@iro.umontreal.ca>

* Prerelease 1.11.13.

* configure.in: Replace a missing dirname.

1996‐10‐07 François Pinard <pinard@iro.umontreal.ca>

* configure.in: Clean out some macro calls made useless
since AM_INIT_AUTOMAKE implies them.

1996‐09‐20 François Pinard <pinard@iro.umontreal.ca>

* configure.in: Do not check anymore for regex.

1996‐09‐19 François Pinard <pinard@iro.umontreal.ca>

* Prerelease 1.11.12

* configure.in: Check echo for newline suppression.

1996‐09‐18 François Pinard <pinard@iro.umontreal.ca>

* configure.in: Do not add open3.o to LIBOBJS anymore.

1996‐09‐05 François Pinard <pinard@iro.umontreal.ca>

* configure.in (ALL_LINGUAS): Add pl.

1996‐09‐04 François Pinard <pinard@iro.umontreal.ca>

* configure.in (AC_OUTPUT): Prepare tests/Makefile and
tests/preset. * Use AM_ version of fp_ macros.

* Makefile.am (SUBDIRS): Add tests/.

1996‐07‐18 François Pinard <pinard@iro.umontreal.ca>

* Prerelease 1.11.11.

* configure.in: Use AC_PREREQ(2.10).

1996‐07‐16 François Pinard <pinard@iro.umontreal.ca>

* configure.in (ALL_LINGUAS): Add nl. Reported
by Erick Branderhorst.

1996‐07‐12 François Pinard <pinard@iro.umontreal.ca>

* Prerelease 1.11.10.

* configure.in (ALL_LINGUAS): Add ko and sl.

1996‐05‐01 François Pinard <pinard@iro.umontreal.ca>

* configure.in: Check for fsync, and linux/fd.h.
Reported by Marty Leisner.

1996‐04‐17 François Pinard <pinard@iro.umontreal.ca>

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

* configure.in (ALL_LINGUAS): Add no.

* Makefile.am (BABYL): Consider rmail/* instead of
rmail/*/*.

1996‐02‐28 François Pinard <pinard@iro.umontreal.ca>

* configure.in: Avoid PROGRAMS, instead use RMT to sub‐
stitute rmt. * Makefile.am (SUBDIRS): Use intl and po
instead of @INTLSUB@ and @POSUB@.

* configure.in: Check for poll.h and stropts.h.
Check for nap, napms, poll, select and usleep.

1996‐02‐12 François Pinard <pinard@iro.umontreal.ca>

* Makefile.am: Remove CONFIG_HEADER, not required by Au‐
tomake 0.29. * configure.in: Temporarily remove a in
AC_OUTPUT for automake.

1996‐02‐03 François Pinard <pinard@iro.umontreal.ca>

* configure.in: Check size of unsigned long (assume 32
bits if cross‐compiling) and long long (assume not avail‐
able).

1996‐01‐14 François Pinard <pinard@iro.umontreal.ca>

* Makefile.am (AUTOMAKE_OPTIONS): Select gnits and dist‐
shar. (dist‐zoo): New goal, experimental for now.

1996‐01‐07 François Pinard <pinard@iro.umontreal.ca>

* Makefile.am: Force distribution of BACKLOG.
Reported by Jonathan Thornburg.

* Makefile.am: Declare BABYL. Force distribution of AU‐
THORS and rebox.el. Add id, ID and dist‐shar targets.
Add parts of previous Makefile.in as FIXME comments.

1995‐12‐30 François Pinard <pinard@iro.umontreal.ca>

* configure.in: Ensure there is a link for libintl.h.
Reported by Daniel S. Barclay, Göran Uddeborg, Jonathan
Thornburg, Ken Raeburn and Minh Tran‐Le.

1995‐12‐29 François Pinard <pinard@iro.umontreal.ca>

* Prerelease 1.11.9.

* Makefile.am: New file.

* configure.in: Decide if README‐alpha should be distrib‐
uted. From Ulrich Drepper.

1995‐12‐28 François Pinard <pinard@iro.umontreal.ca>

* configure.in (AC_OUTPUT): Call sed for po/Makefile.in.

* Makefile.in: Distribute ABOUT‐NLS rather than NLS, and
do not distribute config.guess or config.sub anymore.

* configure.in: Test for lchown.

1995‐12‐19 François Pinard <pinard@iro.umontreal.ca>

* configure.in: Prefer avoiding union wait, and use it
only if using int fails. This turns around the previous
test, as directly checking for union wait is seemingly
seeking for trouble. Reported by Alan Bawden, Chris
Arthur, Coranth Gryphon, Jean‐Philippe Martin‐Flatin,
Robert Bernstein and Tarang Kumar Patel.

* configure.in: Check for strerror, so lib/error.c will
not try to define sys_errlist in the case strerror is al‐
ready provided. Reported by Coranth Gryphon, Chris
Arthur, David J. MacKenzie, Erich Stefan Boleyn, Greg
Black, Jason R. Mastaler, Michael Innis Bushnell, Robert
Bernstein, Santiago Vila Doncel, Skip Montanaro and
Thomas Krebs.

* configure.in: Quote the selected shell. I wonder why
this error did not show up before!

* configure.in: Check <sys/tprintf.h> and <sys/device.h>
for BSDi. Reported by Chris Arthur and Skip Montanaro.

1995‐12‐17 François Pinard <pinard@iro.umontreal.ca>

* configure.in: Be more systematic at caching test re‐
sults. Reported by Ulrich Drepper.

* configure.in: While checking for remote tape header
files, only include <sgtty.h> if it was found to exist.

* configure.in: Prefer #if to #ifdef while checking for
open3.

1995‐11‐30 François Pinard <pinard@iro.umontreal.ca>

* configure.in: Check for net/errno.h and sys/inet.h,
trying to get EOPNOTSUPP defined.

* configure.in: Check for sgtty.h.

1995‐11‐06 François Pinard <pinard@iro.umontreal.ca>

* acconfig.h: Document HAVE_STPCPY for the time being. I
do not understand yet why this is mandatory: it should be
automatic from AC_CHECK_FUNCS(stpcpy) in aclocal.m4,
through autoheader.

* configure.in: Use fp_FUNC_FNMATCH, to get around non‐
working versions on SCO Unix 3.2v4.2, and Solaris.
Reported by Chad Hurwitz, Dennis Pixton, Per Foreby,
Richard Westerik, Robert Weiner and Tom Tromey.

1995‐10‐27 François Pinard <pinard@iro.umontreal.ca>

* configure.in: Add /usr/bin/rcmd as a possible remote
shell, as this is the name used by SCO Unix 3.2.4.
Reported by Bela Lubkin and Rodney Brown.

1995‐07‐23 François Pinard <pinard@iro.umontreal.ca>

* configure.in: Adapt for GNU gettext 0.8.

1995‐07‐10 François Pinard <pinard@iro.umontreal.ca>

* Makefile.in (default): Define to all.

1995‐06‐18 François Pinard <pinard@iro.umontreal.ca>

* configure.in: For mknod, also include <sys/types.h>
prior to <sys/stat.h>, as Ultrix needs this. Re‐
ported by Bruce Jerrick, Bryant Fujimoto, Conrad Hughes, Erich
Stefan Boleyn, Jason R. Mastaler, Joshua R. Poulson, Jur‐
gen Botz, Serge Granik, Simon Wright, Ulrich Drepper and
Vince Del Vecchio.

* configure.in: Replace execlp as needed (for Minix,
mainly).

* configure.in: Force compilation of lib/open3.c if re‐
quired. Clean out old NO_OPEN3 code. 1995‐06‐17
François Pinard <pinard@iro.umontreal.ca>

* Release 1.11.8.

* Makefile.in (DISTFILES): Distribute config.guess and
config.sub. Reported by Ulrich Drepper.

* acconfig.h, aclocal.m4, configure.in: Last minutes
additions, and glimpses to the future gettext 0.6.1.
Reported by Ulrich Drepper.

* acconfig.h: Document HAVE_MKNOD. * config‐
ure.in: Test for mknod only once <sys/stat.h> included.
Reported by Alan Modra, Ray Dassen and Ulrich Drepper.

* aclocal.m4: Test for re_rx_search instead of rx_com‐
pile, the latter not being exported unless
RX_WANT_RX_DEFS is defined. Reported by Alan Modra.

1995‐06‐15 François Pinard <pinard@iro.umontreal.ca>

* Makefile.in (dist): Do not hide copying rule.

* configure.in: Adjustments to NLS, so .sed scripts may
now all reside in intl/.

1995‐06‐13 François Pinard <pinard@iro.umontreal.ca>

* Makefile.in (pot): New goal, triggering po/tar.pot.

1995‐06‐07 François Pinard <pinard@iro.umontreal.ca>

* configure.in: Substitute POTFILES by contents of
po/POTFILES.

* configure.in: More adjustments for GNU gettext 0.6.
* config.guess, config.sub: New files, all taken from
gettext 0.6.

1995‐06‐04 François Pinard <pinard@iro.umontreal.ca>

* Makefile.in (check): New goal.

1995‐05‐30 François Pinard <pinard@iro.umontreal.ca>

* Makefile.in (DISTFILES): Do not distribute SUPPORT, now
integrated in the documentation. Reported by
Karl Berry.

1995‐05‐28 François Pinard <pinard@iro.umontreal.ca>

* configure.in: Check for isascii, not iascii.
Reported by Alan Modra, Bruno Haible and Greg McGary.

1995‐05‐16 François Pinard <pinard@iro.umontreal.ca>

* Prerelease 1.11.7.

* Makefile.in (DISTFILES): Distribute NLS. *
configure.in, acconfig.h: Many adjustments for GNU gettext.

1995‐05‐09 François Pinard <pinard@iro.umontreal.ca>

* configure.in: Clean glocale out. * Makefile.in
(SUBDIRS): Add po. * Makefile.in (pofile): New goal.

1995‐05‐08 François Pinard <pinard@iro.umontreal.ca>

* configure.in: Call ud_WITH_NLS, create intl/Make‐
file.in. Compute size of unsigned short and unsigned
int.

* acconfig.h: Document ENABLE_NLS, HAVE_CATGETS and
HAVE_GETTEXT. * Makefile.in: Process intl subdirectory.

* configure.in (LINGUAS): Add pt. * src/pt.po:
New file, for Portuguese. Reported by Antonio Jose
Coutinho.

1995‐03‐19 François Pinard <pinard@iro.umontreal.ca>

* configure.in: Remove GLOCALE, add LINGUAS, use
fp_WITH_CATALOGS. * acconfig.h: Add description for
WITH_CATALOGS.

1995‐02‐22 François Pinard <pinard@iro.umontreal.ca>

* configure.in, Makefile.in: Replace ‘date’ by ‘echo
timestamp’.

1995‐02‐19 François Pinard <pinard@iro.umontreal.ca>

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

1995‐02‐05 François Pinard <pinard@iro.umontreal.ca>

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

1995‐01‐02 François Pinard <pinard@iro.umontreal.ca>

* configure.in: Check for <sys/ioccom.h>. Re‐
ported by Joseph E. Sacco.

1995‐01‐01 François Pinard <pinard@iro.umontreal.ca>

* Makefile.in (DISTFILES): Distribute SUPPORT, with
*pre*‐releases.

1994‐12‐18 François Pinard <pinard@iro.umontreal.ca>

* configure.in: Check for isascii. Reported by
Bruno Haible.

1994‐12‐11 François Pinard <pinard@iro.umontreal.ca>

* configure.in: Use fp_WITH_REGEX. * acconfig.h:
Document WITH_REGEX.

1994‐12‐10 François Pinard <pinard@iro.umontreal.ca>

* src/de.tt: New file, for German. Reported by
Ulrich Drepper.

1994‐12‐03 François Pinard <pinard@iro.umontreal.ca>

* Prerelease 1.11.6.

* configure.in: Localize, adapting from how it is done in
sharutils.

* src/fr.tt: New file, for French.

* configure.in, {,*/}Makefile.in, acconfig.h: Re‐
name PRODUCT to PACKAGE.

1994‐11‐26 François Pinard <pinard@iro.umontreal.ca>

* configure.in: Check for <libintl.h> and <locale.h>.

1994‐11‐02 François Pinard <pinard@iro.umontreal.ca>

* configure.in: Check for const only after having found
possible ANSIfying compiler flags, this is of no use to
check it before.

1994‐11‐01 François Pinard <pinard@iro.umontreal.ca>

* {,*/}Makefile.in: Clean up, following those of GNU m4.
I will not detail all the changes here. * con‐
figure.in: Likewise. * acconfig.h: Document PRODUCT and
VERSION.

1994‐10‐04 François Pinard <pinard@iro.umontreal.ca>

* configure.in: Correct shell assignment for
ac_cv_path_RSH. Reported by Kaveh R. Ghazi.

1994‐09‐14 François Pinard <pinard@iro.umontreal.ca>

* Makefile.in: Cleanup... Use subshells for all cd’s.
(MDEFINES): Do not use $(INSTALL...), because ./install‐
sh will not be relocated correctly. (DISTFILES):
Distribute install‐sh, not install.sh. (tags): Make only
in lib and src. (TAGS): Deleted. (distclean,
realclean): Remove config.status. (distclean‐local):
Don’t. (*‐recursive): Combine, use sed to strip ‐recur‐
sive in subgoals. (Makefile): Have ./config.status cre‐
ate this Makefile only. (stamp‐h): Have ./config.status
create config.h only. Do not create stamp‐h here, it is
now done from configure. (stamp‐h.in): Use date instead
of touch. * configure.in (AC_OUTPUT): Create stamp‐h.

1994‐09‐09 François Pinard <pinard@iro.umontreal.ca>

* configure.in: Use fp_ macros for accessing aclocal.m4.
Revert _OS_ macros to their previous names, to follow Au‐
toconf.

1994‐09‐08 François Pinard <pinard@iro.umontreal.ca>

* configure.in: Delete AC_OS_XENIX, now within
AC_HEADER_DIRENT.

1994‐09‐01 François Pinard <pinard@iro.umontreal.ca>

* configure.in (PROGS): Warn if $DEFAULT_ARCHIVE was
specified, while not being found on the current system.
Reported by Robert Bernstein.

1994‐08‐31 François Pinard <pinard@iro.umontreal.ca>

* Makefile.in: Distribute it.

* Makefile.in (distclean‐local): Delete config.log.

1994‐08‐27 François Pinard <pinard@iro.umontreal.ca>

* acconfig.h: Document HAVE_UNION_WAIT, no more in Auto‐
conf.

1994‐08‐24 François Pinard <pinard@iro.umontreal.ca>

* configure.in: Replace AC_SYS_REMOTE_TAPE by its defini‐
tion, distillating it around. It is going out of Auto‐
conf. Do not backslash quotes anymore while defining un‐
quoted, this is now corrected in Autoconf.

1994‐08‐23 François Pinard <pinard@iro.umontreal.ca>

* configure.in: Do not define RTAPELIB nor HAVE_RTAPELIB.

1994‐08‐22 François Pinard <pinard@iro.umontreal.ca>

Little cleanup in installation: * configure.in:
Do not check for wait3, this function is not used. *
Makefile.in: Remove useless RSH substitutions.

* configure.in: Use ‘‐g ‐O’ instead of ‘‐g’ as CFLAGS de‐
fault value, when GNU C is being used. Delay testing for
presets. Reported by Chris Arthur.

1994‐08‐21 François Pinard <pinard@iro.umontreal.ca>

* Prerelease 1.11.5.

* Makefile.in (BACKLOG, dist, shar): Correct for when a
different build directory.

* configure.in: Check for union wait. Adapted from make
3.71.

* configure.in: Replace both mkdir and rmdir, not just
mkdir, because NS32016 running SysVr2.2 has mkdir and
lacks rmdir. Reported by Greg Black.

* configure.in: Do not try anymore to discover the
archive device by looking around for various device
names. If the installer does not override it, nicely use
‘‐’ as a convenient default. Reported by Andreas Schwab
and Kaveh R. Ghazi.

1994‐08‐20 François Pinard <pinard@iro.umontreal.ca>

* configure.in: Correct a checking message. Re‐
ported by Bruno Haible.

1994‐08‐17 François Pinard <pinard@iro.umontreal.ca>

* configure.in: Replace AC_PROG_RSH with its expansion.
Correct the no/true confusion in tests. Do not substi‐
tute RSH anymore in src/Makefile, instead define RE‐
MOTE_SHELL in config.h. Replace NO_REMOTE by
HAVE_RTAPELIB, with inverted meaning. Substitute
RTAPELIB by $Urtapelib.o instead of rtapelib.o.
* acconfig.h: Document HAVE_RTAPELIB and REMOTE_SHELL.
Reported by Andreas Schwab.

* configure.in: Checking for remote shell, use the RSH
environment variable if set. This is done only when not
already in the cache. Reported by Kaveh R. Ghazi.

* configure.in: Include <sys/types.h> when testing
<utime.h>. Reported by Andreas Schwab.

* configure.in: Also create doc/Makefile. *
Makefile.in: Add doc in subdirs, set infodir, update MDEFINES.

1994‐08‐16 François Pinard <pinard@iro.umontreal.ca>

* configure.in: Undo the ‘test ‐b’ patch of 1994‐08‐05.
Ultrix 4.2 test does not know about ‐b. Grrr...
Reported by Kaveh R. Ghazi.

* configure.in: Check for <sys/gentape.h>, HAVE_SYS_GEN‐
TAPE_H is tested in rmt.c. Check for <sys/tape.h>, to
avoid playing with M_UNIX anymore in rmt.c. Re‐
ported by Daniel R. Guilderson and Kaveh R. Ghazi.

* configure.in: Use proper function names in
AC_CHECK_LIB’s. Reported by Alexander Dupuy and Kurt
Jaeger.

* configure.in: Use $LIBOBJS, not LIBOJBS, while adding
to it. Reported by Demizu Noritoshi and Kaveh R. Ghazi.

1994‐08‐15 François Pinard <pinard@iro.umontreal.ca>

* Prerelease 1.11.4.

1994‐08‐14 François Pinard <pinard@iro.umontreal.ca>

* configure.in: Decide MTIO_CHECK_FIELD by grepping
<sys/mtio.h>. * acconfig.h: Document it. Re‐
ported by Ben A. Mesander.

* Makefile.in: Substitute CC, INSTALL, INSTALL_PROGRAM,
INSTALL_DATA, RSH, CFLAGS, LDFLAGS, LIBS, prefix,
exec_prefix, binprefix, bindir and libexecdir.
(MDEFINES): New, using the previous substitutions.
(all, install, uninstall): Use it. Reported by
Bruno Haible.

1994‐08‐13 François Pinard <pinard@iro.umontreal.ca>

* configure.in: Check for <sys/wait.h>.

1994‐08‐11 François Pinard <pinard@iro.umontreal.ca>

* configure.in: For <utime.h>, also ensure struct utimbuf
is defined by the header file before defining
HAVE_UTIME_H. Some systems will not define the structure
without _POSIX_SOURCE. * acconfig.h: Document
HAVE_UTIME_H. Reported by James W. McKelvey and Robert
E. Brown.

* configure.in: Instead of replacing strstr, check for
it, so HAVE_STRSTR gets defined, then replace it ex‐
plicitely if required.

1994‐08‐09 François Pinard <pinard@iro.umontreal.ca>

* configure.in: Updated for Autoconf 2.0.

1994‐08‐08 François Pinard <pinard@iro.umontreal.ca>

* configure.in: Replace memset, mkdir (and rmdir), re‐
name, strstr, ftruncate, when not found. Re‐
ported by Kaveh R. Ghazi (for memset and strstr). Re‐
ported by Bruno Haible (for mkdir and rename).

1994‐08‐05 François Pinard <pinard@iro.umontreal.ca>

* configure.in: Remove padding test. * ac‐
config.h: Remove PADDING_IN_TAR_HEADER. Reported by
Bruno Haible.

* configure.in: While defining DEFAULT_ARCHIVE, check for
a block device, instead of mere existence. But is ‘test
‐b’ portable? Test for /dev/fd0, instead of for /dev/fd.
Put rct tests last. Reported by Andreas Schwab.

* configure.in: Define uid_t and gid_t if necessary.
Reported by Jonathan I. Kamens.

* Makefile.in (distclean‐local): Delete config.cache.
Reported by Thomas Koenig.

* configure.in: Change malloc_dbg to dmalloc, mutatis mu‐
tandi. * acconfig.h: According changes.

* configure.in: Test for broken stat macros, and for mk‐
fifo.

* configure.in: Check for ST_BLKSIZE and ST_BLOCKS.

1994‐08‐02 François Pinard <pinard@iro.umontreal.ca>

* Prerelease 1.11.3.

* Makefile.in (dist, shar): Distribute the scripts direc‐
tory.

1994‐08‐01 François Pinard <pinard@iro.umontreal.ca>

* configure.in: Check for <memory.h>.

1994‐07‐30 François Pinard <pinard@iro.umontreal.ca>

* configure.in: When ‐‐with‐malloc‐dbg, define WITH_MAL‐
LOC_DBG and add ‐lmalloc_dbg to LIBS. * ac‐
config.h: Document WITH_MALLOC_DBG.

* configure.in: Try deciding DEVICE_PREFIX and DEN‐
SITY_LETTER from the selected DEFAULT_ARCHIVE. *
acconfig.h: Document DEVICE_PREFIX and DENSITY_LETTER.
Reported by Danny R. Johnston.

1994‐07‐29 François Pinard <pinard@iro.umontreal.ca>

* aclocal.m4: Adapt AC_PROTOTYPES to caching.

* Using configure as generated by a more recent Autoconf
solves a problem of rename being rejected on HP‐UX in
ANSI mode, because of a conflicting prototype from
<stdio.h>. In this context, Autoconf now uses ctype.c
instead for defining __stub macros. Reported by Alan
Modra, Burkhard Plache, Edward Welbourne, Henrik Bakman,
Jeffrey Goldberg, Jim Farrell, Kimmy Posey, Michael
Maass, Mike Nolan, Richard Lloyd, Robert McGraw, Robert
W. Kim, Stefan Skoglund, Tarang Kumar Patel, Tilman
Schmidt, Tim Ramsey, Van Snyder and W. Phillip Moore.

1994‐07‐26 François Pinard <pinard@iro.umontreal.ca>

* configure.in: Check for <fcntl.h>. Do not define
BSD42, do not look anymore if /vmunix, /sdmach or
/../../mach exist. * acconfig.h: Remove BSD42.

1994‐07‐24 François Pinard <pinard@iro.umontreal.ca>

* configure.in: Add gmalloc.o to LIBOBJS, instead of
AC_SUBST’ing MALLOC. Check for valloc only if gmalloc.o
is not being selected. valloc was possibly defined both
in "port.h" and GNU malloc. * acconfig.h: Add a descrip‐
tion for HAVE_VALLOC. J.T. Conklin, Nelson H.F. Beebe
and Tilman Schmidt.

1994‐07‐22 François Pinard <pinard@iro.umontreal.ca>

* configure.in: Use provided fnmatch only as a replace‐
ment.

* configure.in: Check for <sys/io/trioctl.h>, needed for
defining _IOW and _IOR on the Tektronix XD88.
Reported by Kaveh R. Ghazi.

1994‐07‐20 François Pinard <pinard@iro.umontreal.ca>

* Makefile.in (BACKLOG): New goal, for summarizing the
maintainance backlog. Distribute file BACKLOG.

1994‐07‐08 François Pinard <pinard@iro.umontreal.ca>

* regex.c, regex.h: Use newer versions. This solves a
few problems reported by users. Reported by
Chris Hopps and John David Anglin.

1994‐07‐06 François Pinard <pinard@iro.umontreal.ca>

* configure.in: Check for <utime.h>.

1994‐07‐05 François Pinard <pinard@iro.umontreal.ca>

* configure.in: Substitute DEFAULT_ARCHIVE and DE‐
FAULT_BLOCKING from the environment. Check for /dev/tape
first while trying to decide the default archive, because
it is often symlinked right. * acconfig.h: Explain DE‐
FAULT_ARCHIVE and DEFAULT_BLOCKING.

* configure.in: Use AC_SET_MAKE. * Makefile.in:
Use @SET_MAKE@. Reported by Jim Meyering.

* configure.in: Integrate the check, previously in test‐
pad.c, about a needed padding field in the tar header
struct. * acconfig.h: Explain PADDING_IN_TAR_HEADER.

1994‐07‐02 François Pinard <pinard@iro.umontreal.ca>

* configure.in: Check for ‐linet, this library is re‐
quired on a few systems for gettimeofday() or getservby‐
name(). Also, on ISC 4.0, this avoids a broken version
of rename(). Reported by Dean Gaudet, Goeran Uddeborg,
Mike Rogers and Peder Chr. Norgaard.

* configure.in: Ensure ‐lsocket is tested after ‐lnsl.
This is required in particular for SINIX‐Z, an SVR4.0
system. Reported by Manfred Weichel and Mark Frost.

* configure.in: All tests reordered for clarity.

1994‐07‐01 François Pinard <pinard@iro.umontreal.ca>

* configure.in: Use AC_TIME_WITH_SYS_TIME, test for
<sys/time.h>. This should solve the problem of multiple
inclusions of <time.h>. Also, also check for
<sys/timeb.h>, for getdate.y tests this. Reported by Jim
Meyering, John Rouillard, Karl Berry and Rick Emerson.

1994‐06‐30 François Pinard <pinard@iro.umontreal.ca>

* configure.in: AC_CONST was already added since 1.11.2,
but no ChangeLog entry for it, so here is one, with list
of reporters. * AIX 3.2 RS/6000 IBM’s compiler was un‐
able to compile regex.c, this might be solved already
through improved Autoconf tests.

Reported by Alexey Vovenko, Ben A. Mesander, Bryant
Fujimoto, Christian. T. Dum, Christopher Vickery, Dan
Bloch, David K. Drum, David Lemson, Demizu Noritoshi,
Dimitris Fousekis, Ezra Peisach, Hugh Secker‐Walker, In‐
dra Singhal, J.T. Conklin, Jan Hoeglund, Janice Burton,
Jeff Siegel, Jim Blandy, John L. Chmielewski, John Rouil‐
lard, Jonathan N. Sherman, Kevin D Quitt, Kurt Jaeger,
Mark Frost, Matthew Braun, Michael Kubik, Michael Helm,
Moritz D. Klingholz, Neil Jerram, Nelson H.F. Beebe, Nick
Barron, Paul Eggert, R. Scott Butler, Rob Parry, Ron
Guilmette, Scott Grosch, Sherwood and Stephen Saroff.

* Makefile.in: Completely replaced, lurking at the previ‐
ous one. At the same time, solve a few minor problems
reported by users. The most frequently reported ones
pertained to a trailing in a comment, and rmt installing
in /etc. Reported by Dean Gaudet, Gerben Wierda, James
W. McKelvey, John L. Chmielewski, Karl Berry, Mike
Rogers, Ralf Suckow and Richard Lloyd.

* configure.in: Also process lib/Makefile.in and
src/Makefile.in. Substitute CFLAGS, LDFLAGS and YFLAGS
from the environment. Use AC_CHECKING instead of using
echo explicitely. Use AC_HEADER_CHECK(unistd.h) instead
of obsolete AC_UNISTD_H.

* configure.in: Generate a configuration header file.
This not only puts less clutter in make output, but also
goes around some compilers’ limits about the number of
allowed ‐D options. Reported by Nelson H.F. Beebe.

* acconfig.h: New file.

* Split distribution into a few subdirectories, for eas‐
ing maintainance. So far: src, lib, scripts, msdos which
are to be distributed; then rmail, texinfo, ARCH and misc
to be kept here. * scripts/ChangeLog: Initialized by
moving entries related to scripts out of this ChangeLog.

* Taking over maintenance duties.


‐‐‐‐‐ doc/ChangeLog ‐‐‐‐‐

1997‐04‐23 François Pinard <pinard@iro.umontreal.ca>

* Release 1.12.

* Makefile.am (EXTRA_DIST): Remove tar‐mew.texi for the
release. (tar.dvi) [!PUBLISH]: Delete @smallbook. Call
sed in all cases.

1997‐04‐11 François Pinard <pinard@iro.umontreal.ca>

* Prerelease 1.11o.

* Makefile.am (tar.info): Comment about needed makeinfo
version. Reported by Sherwood Botsford.

1997‐04‐10 François Pinard <pinard@iro.umontreal.ca>

* Makefile.am (EXTRA_DIST): Add tar‐mew.texi.

1997‐03‐16 François Pinard <pinard@iro.umontreal.ca>

* Makefile.am (tar.dvi): Merely use tar.texi and rely on
‐I to resolve it in $(srcdir). Remove tmp‐tar.info*
files right away. (CLEANFILES): Define to tmp‐*.

1997‐03‐14 François Pinard <pinard@iro.umontreal.ca>

* Makefile.am: Rename RENDERING, QUALITY, DRAFT and DEBUG
to RENDITION, PUBLISH, DISTRIB and PROOF respectively.
Ensure that ‘@set DISTRIB’ gets replaced after macro‐ex‐
pansion and before TeX.

1996‐11‐06 François Pinard <pinard@iro.umontreal.ca>

* Prerelease 1.11.13.

* getdate.texi: New file, from elsewhere. *
tar.texi: Replace a lot of text by an include of getdate.texi.
* Makefile.am: Adjusted.

1996‐08‐24 François Pinard <pinard@iro.umontreal.ca>

* Prerelease 1.11.12.

* Makefile.am (EXTRA_DIST): Remove texinfo.tex, now that
Automake handles it automatically.

1996‐07‐18 François Pinard <pinard@iro.umontreal.ca>

* Prerelease 1.11.11.

* Makefile.am (tar.info): Remove ‐I$(srcdir), which was
useless.

1996‐07‐17 François Pinard <pinard@iro.umontreal.ca>

* Makefile.am (EXTRA_DIST): Include texinfo.tex, until
Automake does it automatically.

1996‐07‐16 François Pinard <pinard@iro.umontreal.ca>

* Prerelease 1.11.10.

* Makefile.am (EXTRA_DIST): Distribute convtexi.pl, for
now.

1996‐04‐22 François Pinard <pinard@iro.umontreal.ca>

* Makefile.am: Implement rendering levels (QUALITY, DRAFT
or DEBUG).

1996‐04‐17 François Pinard <pinard@iro.umontreal.ca>

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

1996‐03‐03 François Pinard <pinard@iro.umontreal.ca>

* Makefile.am (tar.dvi): Comment about needed makeinfo
version. Reported by Jonathan Thornburg.

1996‐02‐12 François Pinard <pinard@iro.umontreal.ca>

* Makefile.am: Replace TEXINFO by info_TEXINFOS for Au‐
tomake 0.29.

1996‐01‐14 François Pinard <pinard@iro.umontreal.ca>

* Makefile.am (AUTOMAKE_OPTIONS): Select gnits.

1996‐01‐08 François Pinard <pinard@iro.umontreal.ca>

* Makefile.am: New file. * tar.texi: New name
for tar.texinfo.

1995‐12‐30 François Pinard <pinard@iro.umontreal.ca>

* Makefile.in (check): New goal, doing nothing.
Reported by Cesar Romani, Joachim Seelig, Mark Bynum and
Ulrich Drepper.

1995‐11‐29 François Pinard <pinard@iro.umontreal.ca>

* Makefile.in (clean): Remove tmp‐* files.

1995‐11‐27 François Pinard <pinard@iro.umontreal.ca>

* Makefile.in: Use ‐I$(srcdir) with makeinfo, and ‐otmp‐
tar.info so tar.info in build directory does not shadow
the real one. (tar.dvi): Depend on version.texi. Add
$(srcdir) to TEXINPUTS so texinfo.tex is found, as
texi2dvi gets no clue from the file name. (DISTFILES):
Also distribute tar.info‐8.

1995‐11‐22 François Pinard <pinard@iro.umontreal.ca>

* Makefile.in (DISTFILES): Distribute ChangeLog.
* ChangeLog: New file, extracted from top‐level
ChangeLog.

1995‐06‐22 François Pinard <pinard@iro.umontreal.ca>

* Makefile.in: Get rid of docwarn.texi, now replaced by
the @UNREVISED macro, right into tar.texinfo.

1995‐06‐18 François Pinard <pinard@iro.umontreal.ca>

* Makefile.in (tar.dvi): First macro‐expand tar.texinfo.

1995‐06‐07 François Pinard <pinard@iro.umontreal.ca>

* Makefile.in: Use subdir and distdir.

1995‐06‐03 François Pinard <pinard@iro.umontreal.ca>

* tar.texinfo: Use header.texi. * Makefile.in:
Prepare header.texi from src/tar.h. Distribute it.

1995‐05‐28 François Pinard <pinard@iro.umontreal.ca>

* Makefile.in (DISTFILES): Add tar.info‐3. Re‐
ported by Bruno Haible.

1995‐02‐22 François Pinard <pinard@iro.umontreal.ca>

* Makefile.in: Replace ‘date’ by ‘echo timestamp’.

1995‐02‐13 François Pinard <pinard@iro.umontreal.ca>

* Makefile.in: Use top_srcdir.

1995‐02‐05 François Pinard <pinard@iro.umontreal.ca>

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

1994‐12‐03 François Pinard <pinard@iro.umontreal.ca>

* Makefile.in (DISTFILES): Include docwarn.texi.

1994‐11‐07 François Pinard <pinard@iro.umontreal.ca>

* Makefile.in (stamp‐vti): Use new ‐r option to date.

1994‐11‐05 François Pinard <pinard@iro.umontreal.ca>

* Makefile.in (realclean): Also remove stamp‐vti.

1994‐09‐14 François Pinard <pinard@iro.umontreal.ca>

* Makefile.in: Cleanup... (texclean): Deleted,
merged into mostlyclean. (Makefile): Have ./config.sta‐
tus create this Makefile only.

1994‐08‐30 François Pinard <pinard@iro.umontreal.ca>

* Makefile.in (tar.info): Make the documentation in the
source directory only.

1994‐08‐21 François Pinard <pinard@iro.umontreal.ca>

* Makefile.in: Correct for when a different build direc‐
tory.

* docwarn.texi: New file. * Makefile.in: Dis‐
tribute it.

1994‐08‐17 François Pinard <pinard@iro.umontreal.ca>

* Makefile.in: New file. * tar.texinfo: New
file. * texinfo.tex: New, from elsewhere.


‐‐‐‐‐ lib/ChangeLog ‐‐‐‐‐

1997‐04‐25 François Pinard <pinard@iro.umontreal.ca>

* Release 1.12.

1997‐04‐16 François Pinard <pinard@iro.umontreal.ca>

* Prerelease 1.11p.

The distribution did not have getdate.c updated:
* Makefile.am (libtar_a_SOURCES): Use getdate.y, not get‐
date.c. (EXTRA_DIST): Do not include getdate.y anymore.
* getdate.c: Specify $(srcdir)/, to silence GNU make.
Reported by Bruno Haible.

1997‐04‐15 François Pinard <pinard@iro.umontreal.ca>

* Makefile.am (getdate.c): Announce 13 conflicts, not 10.
Reported by Bruno Haible, Bryant Fujimoto and Wolfram
Wagner.

1997‐04‐11 François Pinard <pinard@iro.umontreal.ca>

* Prerelease 1.11o.

* getdate.h: New file. * Makefile.am: Adjusted.

1997‐04‐10 François Pinard <pinard@iro.umontreal.ca>

* modechange.c, modechange.h: New files. * Make‐
file.am: Adjusted.

1997‐02‐25 François Pinard <pinard@iro.umontreal.ca>

* Makefile.am: Adapt library name to Automake 1.1l.

1996‐11‐09 François Pinard <pinard@iro.umontreal.ca>

* Prerelease 1.11.14.

* basename.c: New file.

1996‐11‐09 François Pinard <pinard@iro.umontreal.ca>

* Prerelease 1.11.13.

* Makefile.am: Use tar_DEPENDENCIES. Avoid
BUILT_SOURCES, put getdate.c instead of getdate.y in
tar_SOURCES and keep getdate.c in EXTRA_DIST.

1996‐11‐06 François Pinard <pinard@iro.umontreal.ca>

* argmatch.c, argmatch.h, backupfile.c, backupfile.h,
dirname.c, getversion.c: New files. * Make‐
file.am: Adjusted. Reported by Marty Leisner.

1996‐10‐31 François Pinard <pinard@iro.umontreal.ca>

* safe‐stat.h: Deleted. * Makefile.am
(noinst_HEADERS): Adjusted. Reported by Jim Meyering.

1996‐09‐20 François Pinard <pinard@iro.umontreal.ca>

* regex.c, regex.h, rx.c, rx.h: Deleted. * Make‐
file.am: Adjusted.

1996‐09‐19 François Pinard <pinard@iro.umontreal.ca>

* Prerelease 1.11.12.

* execlp.c: Include stdio.h, not only stdio!

1996‐09‐16 François Pinard <pinard@iro.umontreal.ca>

* open3.h: File deleted after being merged into system.h.
* open3.c: File deleted, moved back into src/. *
Makefile.am: Adjusted. Reported by Jim Meyering.

1996‐08‐24 François Pinard <pinard@iro.umontreal.ca>

* Makefile.am (EXTRA_DIST): $(BUILT_SOURCES) is no longer
necessary, as Automake now handles it automatically.

1996‐07‐16 François Pinard <pinard@iro.umontreal.ca>

* Prerelease 1.11.11.

* Makefile.am (EXTRA_DIST): Move stpcpy.c there, from
tar_SOURCES. Reported by Ulrich Drepper.

1996‐04‐17 François Pinard <pinard@iro.umontreal.ca>

* Prerelease 1.11.10.

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

1996‐02‐28 François Pinard <pinard@iro.umontreal.ca>

* msleep.c: New file, from elsewhere. * Make‐
file.am: Adjusted.

1996‐02‐12 François Pinard <pinard@iro.umontreal.ca>

* Makefile.am: Remove CONFIG_HEADER, not required by Au‐
tomake 0.29.

1996‐01‐14 François Pinard <pinard@iro.umontreal.ca>

* Makefile.am (AUTOMAKE_OPTIONS): Select gnits.

1996‐01‐07 François Pinard <pinard@iro.umontreal.ca>

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

1996‐01‐01 François Pinard <pinard@iro.umontreal.ca>

* error.h: New file, from elsewhere. * Make‐
file.am: Add error.h to HEADERS. Reported by Jim Meyer‐
ing.

1995‐12‐30 François Pinard <pinard@iro.umontreal.ca>

* Makefile.am (INCLUDES): Add ‐I../intl to get libintl.h.
Reported by Daniel S. Barclay, Göran Uddeborg, Jonathan
Thornburg and Minh Tran‐Le.

1995‐12‐29 François Pinard <pinard@iro.umontreal.ca>

* Prerelease 1.11.9.

* Makefile.am: New file.

1995‐11‐22 François Pinard <pinard@iro.umontreal.ca>

* Makefile.in (DISTFILES): Distribute ChangeLog.
* ChangeLog: New, extracted from the top‐level ChangeLog.

1995‐06‐18 François Pinard <pinard@iro.umontreal.ca>

* execlp.c (execlp): New, extracted from src/port.c.
* Makefile.in: Adjusted.

* open3.h: New, moved from src/. * open3.c: New,
extracted from src/port.c. * Makefile.in: Adjusted.
Clean out old NO_OPEN3 code.

* insremque.h, insremque.c: Deleted. * Make‐
file.in: Adjusted.

1995‐06‐17 François Pinard <pinard@iro.umontreal.ca>

* Makefile.in (DISTFILES): Remove COPYING.LIB. *
COPYING.LIB: Deleted.

1995‐06‐15 François Pinard <pinard@iro.umontreal.ca>

* Makefile.in (dist): Do not hide copying rule.

1995‐06‐07 François Pinard <pinard@iro.umontreal.ca>

* Makefile.in: Use subdir and distdir.

* stpcpy.c, xgetcwd.c: New functions needed by gettext.
* Makefile.in: Adjusted to always compile these.

1995‐05‐16 François Pinard <pinard@iro.umontreal.ca>

* insremque.h, insremque.c: New files, from GNU gettext.
* Makefile.in: Take care of insremque.[hc].

1995‐03‐19 François Pinard <pinard@iro.umontreal.ca>

* Makefile.in: Remove GLOCALE, add LINGUAS, use
fp_WITH_CATALOGS.

1995‐02‐19 François Pinard <pinard@iro.umontreal.ca>

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

1995‐02‐05 François Pinard <pinard@iro.umontreal.ca>

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

1994‐12‐18 François Pinard <pinard@iro.umontreal.ca>

* safe‐stat.h: New, from elsewhere. This solves the fact
that mkdir.c, rmdir.c and rename.c were needing it.
* Makefile.in (Makefile): Distribute it. Re‐
ported by Bruno Haible and Sherwood Botsford.

1994‐12‐11 François Pinard <pinard@iro.umontreal.ca>

* rx.c, rx.h: New, from elsewhere. * Make‐
file.in: Adjust accordingly.

1994‐12‐03 François Pinard <pinard@iro.umontreal.ca>

* Makefile.in: Localize, adapting from how it is done in
sharutils.

1994‐09‐14 François Pinard <pinard@iro.umontreal.ca>

* Makefile.in: Cleanup... (DISTFILES): Distrib‐
ute TAGS. (check): Deleted. (TAGS): Make TAGS
in $(srcdir) only. (distclean): Do not remove TAGS.
(realclean): Remove TAGS. (Makefile): Have
./config.status create this Makefile only.

1994‐08‐22 François Pinard <pinard@iro.umontreal.ca>

Little cleanup in installation: * Makefile.in
(install, check): Depend on all.

1994‐08‐21 François Pinard <pinard@iro.umontreal.ca>

* Makefile.in: Correct for when a different build direc‐
tory.

* rmdir.c: New, split out of mkdir.c. * Make‐
file.in: Distribute it. Reported by Greg Black.

1994‐08‐17 François Pinard <pinard@iro.umontreal.ca>

* ftruncate.c: Revised, because there is no ftruncate
capability whatsoever in Interactive Unix. Re‐
ported by Peder Chr. Norgaard.

1994‐08‐08 François Pinard <pinard@iro.umontreal.ca> *
memset.c, mkdir.c, rename.c, strstr.c and ftruncate.c:
New, from elsewhere. * Makefile.in: Distribute them.

1994‐08‐05 François Pinard <pinard@iro.umontreal.ca>

* Makefile.in (getdate.c): Tell the installer to expect
10 shift/reduce conflicts instead of 9. Reported
by Andreas Schwab.

* fileblocks.c: New, from elsewhere. * Make‐
file.in: Distribute it.

1994‐08‐02 François Pinard <pinard@iro.umontreal.ca>

* xstrdup.c: New, from elsewhere. * Makefile.in:
Adjusted.

1994‐07‐29 François Pinard <pinard@iro.umontreal.ca>

* error.c: Add error_print_progname virtual routine.

1994‐07‐24 François Pinard <pinard@iro.umontreal.ca>

* gmalloc.c: New, from elsewhere. This renames and up‐
dates what was previously malloc.c. This also solves
__const vs const. * Makefile.in: Distribute gmalloc.c.
Reported by Cliff Krumvieda, Francois Pinard, Henrik Bak‐
man, J.T. Conklin, Nelson H.F. Beebe and Tilman Schmidt.

1994‐07‐22 François Pinard <pinard@iro.umontreal.ca>

* Makefile.in (LIBOBJS): Get configured list of replace‐
ments. * fnmatch.h: Undefine FNM_PATHNAME and FNM_PE‐
RIOD, for HP‐UX defines them in <unistd.h>.

* getdate.y: Acknowledging here a few reports which are
likely solved by going to an updated version of get‐
date.y. Reported by Andrey A. Chernov, Bruce Evans, Dean
Gaudet, Ian T. Zimmerman, Jeff Prothero, Mike Nolan, Mi‐
lan Hodoscek, Peder Chr. Norgaard, Sarah Quady, Tarang
Kumar Patel and Thomas Koenig.

1994‐07‐02 François Pinard <pinard@iro.umontreal.ca>

* xmalloc.c: New file, from elsewhere. * er‐
ror.c: New, from elsewhere. * Makefile.in: Adjusted.

1994‐06‐30 François Pinard <pinard@iro.umontreal.ca>

* Makefile.in: New file.


‐‐‐‐‐ po/ChangeLog ‐‐‐‐‐

1997‐04‐25 François Pinard <pinard@iro.umontreal.ca>

* Release 1.12.

1997‐04‐18 François Pinard <pinard@iro.umontreal.ca>

* Prerelease 1.11p.

* fr.po: Updated file.

1997‐04‐11 François Pinard <pinard@iro.umontreal.ca>

* Prerelease 1.11o.

1997‐03‐26 François Pinard <pinard@iro.umontreal.ca>

* it.po: New file.

1997‐02‐14 François Pinard <pinard@iro.umontreal.ca>

* pl.po: Updated file.

1996‐11‐22 François Pinard <pinard@iro.umontreal.ca>

* POTFILES.in: Add src/common.h. Reported by
Christian Kirsch.

1996‐11‐18 François Pinard <pinard@iro.umontreal.ca>

* Prerelease 1.11.14.

* POTFILES.in: Adjust for changes in src/.

1996‐09‐05 François Pinard <pinard@iro.umontreal.ca>

* Prerelease 1.11.12.

* pl.po: New file. 1995‐06‐17 François Pinard
<pinard@iro.umontreal.ca>

* Release 1.11.8.

* Makefile.in (.po.gmo): Force moving the created .gmo
file to $(srcdir), in case it was not already found and
replaced there. (install‐data): Find files in $(srcdir)
if not in current dir, because .gmo files are taken
there, right out the distribution. * intl/Makefile.in
(DISTFILES): Ensure an all ready stamp‐cat‐id and cat‐id‐
tbl.c into the distribution. (stamp‐cat‐id): Rewrite
rule so it replaces files in $(srcdir), remove a useless
rm and cat.

* intl/cat‐compat.c, int/gettext.h, intl/po‐to‐tbl.sed,
Makefile.in: Last minutes additions, and glimpses to the
future gettext 0.6.1. Reported by Ulrich Drep‐
per.

* Makefile.in (install‐data, uninstall): Avoid using
basename.

1995‐06‐15 François Pinard <pinard@iro.umontreal.ca>

* Makefile.in (dist): Comment out tupdate action for now,
it needs more tweeking before being distributed active.

* intl/Makefile.in (dist), Makefile.in (dist): Correct
missing reference to $(srcdir) on cp call, also avoid
outputting clutter while doing the work.

* intl/Makefile.in: Use top_srcdir for referring to
$(PACKAGE).pot.

* Makefile.in (.po.gmo): Get around what seems to be an
msgfmt bug, which adds .mo even to FILE in ‘‐o FILE’.

* intl/Makefile.in, Makefile.in: Adjustments to NLS, so
.sed scripts may now all reside in intl/.

1995‐06‐07 François Pinard <pinard@iro.umontreal.ca>

* POTFILES: New file. * Makefile.in: Use POT‐
FILES instead of TRANSCSRCS, also use top_srcdir.

* intl/linux‐msg.sed, intl/po‐to‐tbl.sed, intl/xopen‐
msg.sed: New files, all taken from gettext 0.6.

1995‐06‐05 François Pinard <pinard@iro.umontreal.ca>

* intl/*: New from GNU gettext 0.6, replacing the previ‐
ous version of this directory. This change should solve
many problems.

Reported by Bruno Haible, Christopher Vickery, Jan Carl‐
son, Jean‐Philippe Martin‐Flatin, John David Anglin,
Joseph E. Sacco, Kaveh R. Ghazi, Kurt Jaeger, Mark W.
Eichin, Marty Leisner, Minh Tran‐Le, Stephen Saroff,
Thomas Koenig, Thomas Krebs and William Bader.

1995‐05‐16 François Pinard <pinard@iro.umontreal.ca>

* intl/Makefile.in, Makefile.in: Many adjustments for GNU
gettext.

1995‐05‐09 François Pinard <pinard@iro.umontreal.ca>

* Makefile.in: New file. * de.po, fr.po, pt.po,
sv.po: New files, adapted from the corresponding .tt
files in src/.

1995‐05‐08 François Pinard <pinard@iro.umontreal.ca>

* intl/*: New, from nlsutils.

1995‐01‐09 François Pinard <pinard@iro.umontreal.ca>

* src/de.tt: New file, for Swedish. Reported by
Jan Djarv.

1994‐12‐10 François Pinard <pinard@iro.umontreal.ca>

* de.tt: New file, for German. Reported by Ul‐
rich Drepper.


‐‐‐‐‐ scripts/ChangeLog ‐‐‐‐‐

1997‐04‐24 François Pinard <pinard@iro.umontreal.ca>

* Release 1.12.

* level‐1, level‐0: Replace ‐‐block‐size by ‐‐blocking.

1996‐04‐17 François Pinard <pinard@iro.umontreal.ca>

* Prerelease 1.11.10.

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

1996‐01‐14 François Pinard <pinard@iro.umontreal.ca>

* Makefile.am (AUTOMAKE_OPTIONS): Select gnits.

1996‐01‐08 François Pinard <pinard@iro.umontreal.ca>

* Makefile.am: New file.

1995‐12‐31 François Pinard <pinard@iro.umontreal.ca>

* Makefile.in (check, dvi): New goals, doing nothing.
Reported by Cesar Romani and Ulrich Drepper.

1995‐06‐21 François Pinard <pinard@iro.umontreal.ca>

* Prerelease 1.11.9.

* Makefile.in: Distribute the ChangeLog, now recovered!
Reported by Andreas Schwab. 1995‐06‐17 François
Pinard <pinard@iro.umontreal.ca>

* Release 1.11.8.

* WARNING: New file. * Makefile.in (DISTFILES):
Distribute it.

1995‐06‐15 François Pinard <pinard@iro.umontreal.ca>

* sripts/Makefile.in (dist): Do not hide copying rule.

1995‐06‐07 François Pinard <pinard@iro.umontreal.ca>

* Makefile.in: Use subdir and distdir.

1995‐02‐05 François Pinard <pinard@iro.umontreal.ca>

* Prerelease 1.11.7.

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

1994‐12‐03 François Pinard <pinard@iro.umontreal.ca>

* Prerelease 1.11.6.

* ChangeLog: Replaced by a warning for now. It has
seemingly been overwritten by the weekly script :‐(.

* Makefile.in (dist): Correct .../examples to
.../scripts.

1994‐09‐14 François Pinard <pinard@iro.umontreal.ca>

* Makefile.in: Cleanup... (check): Deleted.
(Makefile): Have ./config.status create this Makefile
only.

1994‐06‐30 François Pinard <pinard@iro.umontreal.ca>

* Prerelease 1.11.5.

* ChangeLog: Initialized by moving entries related to
scripts out of this ChangeLog.

1993‐11‐24 Noah Friedman <friedman@nutrimat.gnu.ai.mit.edu>

* dump‐remind: Send mail notification to the original re‐
cipients that the dump has been continued when that is
the case.

1993‐03‐31 Noah Friedman <friedman@nutrimat.gnu.ai.mit.edu>

* level‐0, level‐1 (LOGFILE): Put logfile in ‘log’ subdi‐
rectory.

1993‐03‐28 Noah Friedman <friedman@nutrimat.gnu.ai.mit.edu>

* dump‐remind (volno): Don’t increment by one.

1993‐03‐25 Noah Friedman <friedman@nutrimat.gnu.ai.mit.edu>

* level‐0, level‐1 (TAR_PART1): Use ‘‐‐block‐size’, not
just ‘‐‐block’, which is now ambiguous.

1993‐03‐24 Noah Friedman <friedman@nutrimat.gnu.ai.mit.edu>

* backup‐specs (TAR): New variable.

* level‐0, level‐1 (TAR_PART1): Get path of GNU tar from
‘TAR’ variable, don’t hardcode it.

1993‐03‐20 Noah Friedman <friedman@nutrimat.gnu.ai.mit.edu>

* backup‐specs (SLEEP_MESSAGE): put backslashes in front
of nested double quotes.

* level‐0, level‐1 (BACKUP_DIRS): Don’t put in quotes.
(LOGFILE): Use sed to construct name, not awk.

* dump‐remind (recipients): Replaced inefficient pipeline
with a single, simple sed script. (volno): Deal
with the possibility that VOLNO_FILE may not be created
yet.

1993‐03‐19 Michael I Bushnell <mib@geech.gnu.ai.mit.edu>

* backup‐specs (VOLNO_FILE): Removed abusive comment by
Noah.

1993‐03‐18 Noah Friedman <friedman@nutrimat.gnu.ai.mit.edu>

* Makefile.in (AUX): Include ‘dump‐remind’ in distribu‐
tion.

* backup‐specs (SLEEP_MESSAGE): New variable.
level‐0, level‐1: Use it instead of external ‘dont_touch’
file.

* level‐0, level‐1: Put most of the script in () and pipe
everything from the subshell through tee ‐a $LOGFILE.
Since you really want most of the output to go to the
logfile anyway, and since all those pipelines were pre‐
venting one from getting the exit status of most com‐
mands, this seems like the right idea.

* level‐0, level‐1 (LOGFILE): Use YYYY‐MM‐DD (all nu‐
meric) format for log file name, since that makes the
file names sortable in a coherent way. Suffix should al‐
ways be ‘level‐n’ where n is the dump level. level‐0
script was just using ‘‐full’ instead.

* level‐0, level‐1 (DUMP_LEVEL): New variable. Set to
‘0’ or ‘1’ in each script as appropriate.

* level‐0, level‐1 (HOST): Renamed to ‘localhost’ for
clarity. (host): renamed to ‘remotehost’ for clarity.

* level‐0, level‐1 (startdate): New variable. Use it in
Subject line of mailed report.

* level‐0, level‐1: Fixed all instances where sed is
called with a script on the command line to use ‘‐e’ op‐
tion.

* level‐0, level‐1: Don’t try to call logfile.sed to fil‐
ter LOGFILE. It’s not distributed with tar and was never
really used anyway.

* level‐0, level‐1: Put quotes around most variable names
(barring those that are known to intentionally contain
text that should be expanded into multiple words, like
‘TAR_PART1’).

* level‐0, level‐1: Got rid of annoying trailing back‐
slashes in awk scripts. They were gratuitous. Made them
a little more readable by adding some whitespace.

1992‐10‐21 Noah Friedman <friedman@nutrimat.gnu.ai.mit.edu>

* level‐0, level‐1: put curly braces around variables for
clarity.

* backup‐specs (DUMP_REMIND_SCRIPT): define it (but com‐
mented out so that distributed dump scripts won’t use it
by default). level‐0, level‐1 (TAR_PART1): use ‐‐info‐
script if DUMP_REMIND_SCRIPT is defined. dump‐
remind: new file (intended as an example).

1992‐10‐15 Noah Friedman <friedman@nutrimat.gnu.ai.mit.edu>

* level‐0, level‐1: remove $LOGFILE.tmp files before ex‐
iting.

1992‐09‐24 Michael I Bushnell <mib@churchy.gnu.ai.mit.edu>

* level‐0, level‐1 (TAR_PART1): remove ‐‐atime‐preserve
because of a total screw.

1992‐09‐10 Noah Friedman <friedman@nutrimat.gnu.ai.mit.edu>

* level‐0, level‐1 (TAR_PART1): put ‐‐atime‐preserve in‐
side quotes.

1992‐09‐09 Michael I Bushnell <mib@geech.gnu.ai.mit.edu>

* level‐0, level‐1 (TAR_PART1): Use ‐‐atime‐preserve.

1992‐07‐10 Michael I Bushnell <mib@geech.gnu.ai.mit.edu>

* level‐0, level‐1: Avoid silly Sun awk lossage.

1992‐04‐30 Noah Friedman <friedman@nutrimat.gnu.ai.mit.edu>

* level‐1: Added ‘$’ before VOLNO_FILE in definition of
TAR_PART1.
Added line to remove $VOLNO_FILE from any previous dump
before
starting.

* level‐0, level‐1: Change long options to use ‘‐‐’ in‐
stead of ‘+’
(support for ‘+’ will go away soon)

1991‐10‐17 Michael I Bushnell <mib@churchy.gnu.ai.mit.edu>

* level‐0: Repair damage from previous mod: stdin to rsh
must be the terminal or tar’s questions lose.

1991‐08‐31 Noah Friedman <friedman@nutrimat.gnu.ai.mit.edu>

* level‐0: Fixed several syntax errors associated with
stdout/stderr redirection. Made sure remote host
executes commands from sh where redirection is necessary,
since root’s shell might be csh in some places and the
redirect syntax differs.

1991‐07‐01 Michael I Bushnell <mib@geech.gnu.ai.mit.edu>

* Fix a misplaced quote in level‐0 and change some >&
into 2>&1.


‐‐‐‐‐ src/ChangeLog ‐‐‐‐‐

1997‐04‐25 François Pinard <pinard@iro.umontreal.ca>

* Release 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 François 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 François 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 François Pinard <pinard@iro.umontreal.ca>

* Prerelease 1.11q.

* extract.c (extract_archive): Check if directory extrac‐
tion was attempted over an existing directory before at‐
tempting 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 François Pinard <pinard@iro.umontreal.ca>

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

1997‐04‐19 François 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 impos‐
sible switch cases. Reported by Bruno Haible.

* names.c (name_gather): Explicitly declare allo‐
cated_length as an int, do not imply it. Re‐
ported by Bruno Haible.

1997‐04‐18 François Pinard <pinard@iro.umontreal.ca>

* Prerelease 1.11p.

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

1997‐04‐16 François Pinard <pinard@iro.umontreal.ca>

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

1997‐04‐15 François 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 sub‐
command_option and set_main_command_option by set_subcom‐
mand_option.

* create.c (dump_file): Remove badperror label, call WARN
explicitly at the two other needed places instead. Re‐
move 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‐12 François Pinard <pinard@iro.umontreal.ca>

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

1997‐04‐11 François Pinard <pinard@iro.umontreal.ca>

* Prerelease 1.11o.

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

1997‐04‐10 François Pinard <pinard@iro.umontreal.ca>

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

1997‐04‐09 François 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 UN‐
KNOWN_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, every‐
where. * tar.c (decode_options): Initialise main_com‐
mand_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_com‐
press_program_option): New function.

* buffer.c, names.c, tar.c, common.h: Have files_from_op‐
tion 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_la‐
bel 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_op‐
tion, 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 pre‐
set_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 François 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 François Pinard <pinard@iro.umontreal.ca>

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

1997‐04‐01 François Pinard <pinard@iro.umontreal.ca>

* arith.c [SUPERDIGIT] (zerop_tarlong, lessp_tarlong,
clear_tarlong, add_to_tarlong, add_to_tarlong, mult_tar‐
long, 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 tar‐
long 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, Nel‐
son H. F. Beebe, Scott J. Kramer and Torkel Hasle.

1997‐03‐29 François 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 François Pinard <pinard@iro.umontreal.ca>

* All: Rename head to current_header, hstat to cur‐
rent_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 num‐
bytes is already usable as a flag for the same thing.

1997‐03‐21 François 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 François 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. Car‐
penter and Tim Towers.

1997‐02‐25 François 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.

1996‐11‐26 François Pinard <pinard@iro.umontreal.ca>

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

1996‐11‐25 François 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 François Pinard <pinard@iro.umontreal.ca>

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

* incremen.c (get_directory_contents): Use stat_data in‐
stead of current_header for checking normal files. Oth‐
erwise, 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 up‐
date 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 de‐
stroying the archive. Reported by Akiko Matsushita, An‐
dreas Schwab, Eric Backus, Jeff Siegel, Saul Lubkin, Stu‐
art Kemp and Yasushi Suzudo.

1996‐11‐19 François 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 François Pinard <pinard@iro.umontreal.ca>

* Prerelease 1.11.14.

* 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 ex‐
ists, to avoid many warnings on BSD/OS. Reported
by Dan Reish.

1996‐11‐11 François 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 mov‐
ing them closer to the blocks where they are used.

A bit of reorganisation in the sources: * com‐
mon.h: New file, for holding all GNU 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 in‐
crem.c. * names.c: Moved over all name processing from
tar.c. * tar.c, common.h: Adjusted. * Make‐
file.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 François Pinard <pinard@iro.umontreal.ca>

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

* buffer.c (new_volume): Return nonzero/zero for suc‐
cess/failure, instead of zero/negative. Callers ad‐
justed. 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. Re‐
ported by Thomas König 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 redi‐
rect, order of arguments was not natural.

1996‐11‐09 François 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 vari‐
able. Adjust declaration of open_archive. *
buffer.c: (open_archive, new_volume): Use access instead of
reading. Callers adjusted for using enum access_mode ar‐
guments. (flush_archive, close_archive): Use ac‐
cess_mode, and cleanup. * diffarch.c (verify_volume):
Use access_mode.

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

1996‐11‐09 François Pinard <pinard@iro.umontreal.ca>

* Prerelease 1.11.13.

* 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 vari‐
ables 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 François Pinard <pinard@iro.umontreal.ca>

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

1996‐11‐06 François Pinard <pinard@iro.umontreal.ca>

* tar.h: Add OPTION_BACKUP, OPTION_SUFFIX, OPTION_VER‐
SION_CONTROL. Renumber options from 3 instead of from
10. Declare flag_backup. * tar.c: Include backup‐
file.h. Implement ‐‐backup, ‐‐suffix and ‐‐version‐con‐
trol decoding. Adjust usage documentation.

* misc.c (maybe_backup_file, un_backup_file): New func‐
tions. * tar.h: Adjusted. * buffer.c
(child_open_for_compress, open_archive, new_volume): Use
the new functions. * extract.c (extract_archive): Idem.
Reported by 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 François 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. * up‐
date.c: Rename prev_status to previous_status. * up‐
date.c (junk_archive): Delete found_stuff, use logical_status.

1996‐10‐15 François 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 François Pinard <pinard@iro.umontreal.ca>

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

1996‐09‐20 François Pinard <pinard@iro.umontreal.ca>

* tar.h: Delete label_pattern. * tar.c (main):
Do not compile anymore volume_label as a regexp. (us‐
age): 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 François Pinard <pinard@iro.umontreal.ca>

* Prerelease 1.11.12

* Makefile.am (EXTRA_PROGRAMS): Compile rmt properly, in‐
stead 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 GNU tar into spurious incremental
redumping. Reported by Frank Koenen, Giorgio Signorini,
Joachim Holzfuss, Konno Hiroharu, R. Kent Dybvig and Wol‐
fram 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 François 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 read‐
error and writeerror. * tar.c
(read_name_from_file): Rename c to character.

1996‐09‐17 François 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 François 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, er‐
rno.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: Ad‐
justed. * extract.c: Don’t call open3.h. Re‐
ported by Jim Meyering.

1996‐09‐09 François 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 François 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 François Pinard <pinard@iro.umontreal.ca>

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

1996‐08‐24 François Pinard <pinard@iro.umontreal.ca>

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

1996‐07‐18 François Pinard <pinard@iro.umontreal.ca>

* arith.h: Include tar.h, not arith.h, so FATAL_ERROR is
defined. [!SUPER_DIGIT]: Declare arguments to ..._tar‐
long routines as pointers to unsigned long and not ar‐
rays, 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 Wol‐
fram Wagner.

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

1996‐07‐17 François Pinard <pinard@iro.umontreal.ca>

* Prerelease 1.11.11.

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

1996‐07‐16 François Pinard <pinard@iro.umontreal.ca>

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

1996‐07‐15 François Pinard <pinard@iro.umontreal.ca>

* Prerelease 1.11.10.

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

1996‐07‐09 François 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 indi‐
cator 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 un‐
quote_string is always used, even if the quoting was im‐
proper. Reported by Johan Vromans.

1996‐05‐03 François Pinard <pinard@iro.umontreal.ca>

* tar.h: Define TTY_NAME as a macro, instead of an exter‐
nal 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 François Pinard <pinard@iro.umontreal.ca>

* misc.c (quote_copy_string): Ensure spaces are back‐
slash‐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_for‐
mat. Adjust decode_header prototype. * diffarch.c, ex‐
tract.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 comprehen‐
sive...) 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 François Pinard <pinard@iro.umontreal.ca>

* buffer.c (close_archive): If reading and the archive is
finished, read until end of archive, for avoiding an er‐
ror 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 Pier‐
carlo 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 François 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 François 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 ex‐
ists, use it instead of chown. Callers adjusted.
(extract_archive): Do call set_stat over restored sym‐
bolic 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 restric‐
tive at start of tar, nevertheless ensure we create in‐
termediate directories with such permissions that we can
at least add files into them. (extract_archive):
Same, but for final directory. Ensure directory attrib‐
utes 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 pre‐
set_mode. * create.c: Obey these variables. Re‐
ported 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 Is‐
bell, Fritz Elfert and Robert E. Brown.

* buffer.c (new_volume): Avoid calling closeout_vol‐
ume_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, Loïc Prylli, Loren J. Rittle, Marty Leisner, Neil
Faulks, Paul Mitchell, Rocky Giannini, Roy Marantz, Syl‐
vain Rougier, Timothy J. Lee and Werner Almesberger.

1996‐04‐22 François Pinard <pinard@iro.umontreal.ca>

* system.h (N_): Define marking macro for delayed trans‐
lations. * 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 François Pinard <pinard@iro.umontreal.ca>

Instead of ‐UU for removing directories, request a long
option. * tar.c: Implement ‐‐recursive‐unlink.
(usage): Document ‐‐recursive‐unlink. (de‐
code_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 François Pinard <pinard@iro.umontreal.ca>

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

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

1996‐03‐28 François Pinard <pinard@iro.umontreal.ca>

* create.c (dump_file): Cast %ld argument to (long).
Reported by Constantin Belous and Jörgen Hägg.

1996‐03‐21 François Pinard <pinard@iro.umontreal.ca>

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

1996‐02‐28 François Pinard <pinard@iro.umontreal.ca>

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

1996‐02‐12 François Pinard <pinard@iro.umontreal.ca>

* Makefile.am: Remove CONFIG_HEADER, not required by Au‐
tomake 0.29.

1996‐02‐03 François 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, Jörg Weule,
Jörgen Hägg, 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 tar‐
longs. Declare bytes_written outside flush_write.
(init_total_written): Zero out bytes_written as well.
Reported by Dave Barr.

1996‐01‐15 François Pinard <pinard@iro.umontreal.ca>

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

1996‐01‐14 François Pinard <pinard@iro.umontreal.ca>

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

1996‐01‐08 François Pinard <pinard@iro.umontreal.ca>

* create.c: Initialize linklist to NULL. Re‐
ported by Bradley A. Smith.

1996‐01‐07 François Pinard <pinard@iro.umontreal.ca>

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

1996‐01‐03 François 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 #de‐
fined. * create.c (start_header): Add missing DE‐
FAULT_FORMAT case. * gnu.c (read_dir_file): Use NULL in‐
stead 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‐02 François Pinard <pinard@iro.umontreal.ca>

* buffer.c (open_archive): Allocate real_s_name at run
time instead of statically, because PATH_MAX is not al‐
ways constant. Reported by Bruno Haible, John David An‐
glin, Jonathan Thornburg, Kaveh R. Ghazi, Martin Bellen‐
berg, Marty Leisner, Nelson H. F. Beebe, Roland McGrath
and Thomas König.

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

1996‐01‐01 François Pinard <pinard@iro.umontreal.ca>

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

1995‐12‐31 François Pinard <pinard@iro.umontreal.ca>

* Makefile.am: New file.

1995‐12‐30 François Pinard <pinard@iro.umontreal.ca>

* Makefile.in: Define LOCALEDIR in DEFS. * sys‐
tem.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 re‐
spect ANSI C. * rtapelib.c, rmt.h: Replace all __rmt*
symbols by rmt*__.

1995‐12‐28 François Pinard <pinard@iro.umontreal.ca>

* Prerelease 1.11.9.

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

1995‐12‐24 François Pinard <pinard@iro.umontreal.ca>

* extract.c (extract_archive): On systems not having sym‐
bolic 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 con‐
tiguous files, continue extracting them as regular files
as before, but emit a diagnostic on first occurrence.

1995‐12‐23 François Pinard <pinard@iro.umontreal.ca>

* tar.h: Declare remove_any_file. * gnu.c (re‐
move_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 re‐
move_any_file. * extract.c (maybe_recoverable): New rou‐
tine. (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 (de‐
code_options): Decode ‐‐unlink‐first (‐U). (usage): Doc‐
ument 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 François Pinard <pinard@iro.umontreal.ca>

* tar.c (name_close): Specify static. (main):
Call name_close after create_archive. * create.c (cre‐
ate_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 iden‐
tified at the beginning of it.

* tar.h (USAGE_ERROR): New macro. * tar.c: Use
USAGE_ERROR as far as possible. Cleanup and normaliza‐
tion 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 in‐
put file or list. Reported by Karl Berry and Robert
Bernstein.

1995‐12‐21 François 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: Ad‐
just 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 in‐
termediate directories. They used to be 0777 uncondi‐
tionally. Reported by Bruce Evans, Harald König and
James Crawford Ralston.

1995‐12‐20 François Pinard <pinard@iro.umontreal.ca>

* create.c (finish_header): Avoid printing the header for
long names or links, this avoids spurious ‘Visible long‐
name 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 François Pinard <pinard@iro.umontreal.ca>

* buffer.c: Have real_s_name able to hold PATH_MAX char‐
acters, 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 alter‐
ing 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 Ud‐
deborg, Grant McDorman, Joachim Seelig, Joe DeBattista,
Jonathan Thornburg, Joutsiniemi Tommi Il, Jürgen Lüters,
Keith Young, Kelly Stephens, Kevin Dalley, Konno Hiro‐
haru, Larry Creech, Martin Mares, Michael Dietrich,
Michael Giddings, Michael Meissner, Michael P Urban, Paul
Siddall, Pierce Cantrell, Peter Fox, Robert Frey, Roderich
Schupp, Sam Richards, Stephen J Bevan, Torsten Lull, Wol‐
fram 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/er‐
ror.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‐17 François Pinard <pinard@iro.umontreal.ca>

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

* create.c, diffarch.c, extract.c, gnu.c, list.c,
rtapelib.c, tar.c: Drop register specifications, useless
in GNU’s tar, as tar does not use longjmp, and GNU C has
‐O automagically set.

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

1995‐12‐04 François Pinard <pinard@iro.umontreal.ca>

* tar.h: Implement FATAL_ERROR, telling error is not re‐
coverable. * 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 ver‐
bose output, clearly list block numbers for NUL blocks
and end of file. Reported by Jörg Weule.

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

1995‐11‐30 François 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 König 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 François Pinard <pinard@iro.umontreal.ca>

* tar.c (decode_options): Diagnose ‐‐block‐compress prop‐
erly. 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, up‐
date.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 spuri‐
ous diagnostics. Reported by Jonathan Kamens.

1995‐11‐23 François Pinard <pinard@iro.umontreal.ca>

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

1995‐11‐22 François 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 imple‐
mented so far.

1995‐10‐27 François Pinard <pinard@iro.umontreal.ca>

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

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‐08‐26 François 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 François 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 François 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 François Pinard <pinard@iro.umontreal.ca>

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

1995‐06‐27 François 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_op‐
tions): 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. Re‐
ported by Chris G. Demetriou, Jamie Zawinski, Kimball
Collins, 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’Con‐
nor, 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‐26 François 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 OP‐
TION_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 pro‐
vide a warning for the old option.

1995‐06‐24 François 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, in‐
stead. 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 find‐
uname to uid_to_uname and findgname to gid_to_gname, ex‐
changing the order of arguments. Use uid_t and gid_t in‐
stead 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 cur‐
rent [ug]id by default. * tar.h, create.c, list.c: Ad‐
just prototypes and callers.

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

* tar.h, create.c, list.c, names.c, tar.c: Imple‐
ment ‐‐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 François 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_op‐
tions): 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 François 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 GNU format, and
what is extended header for sparse files. Use
xxx_FIELD_SIZE instead of NAMSIZ, TUNMLEN and TGNMLEN.
Dismangle some other names, on the way... * *.c: Ad‐
justed accordingly.

* tar.h: Do not declare baserec, declare cur‐
rent_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. * up‐
date.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. * dif‐
farch.c: Add temporary extern declaration for read‐
ing_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 end‐
ing_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 François Pinard <pinard@iro.umontreal.ca>

* rtapelib.c (__rmt_open): Avoid dereferencing re‐
mote_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 Mans‐
field, 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 Mu‐
nier, Marc Ewing, Matthew J. D’Errico, Martin Goik,
Maxime Taksar, maximum entropy, 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 Jan‐
hunen, 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 François 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): Re‐
place 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: Ad‐
justed.

* 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 un‐
quote, just pass it undisturbed. From Robert
Lipe.

* system.h: Replace many #ifdef by #if, #ifndef by #if !.
1995‐06‐17 François Pinard <pinard@iro.umontreal.ca>

* Release 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/libget‐
text.h instead of ../intl/libintl.h, which does not al‐
ways exist.

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

* tar.h: Use off_t instead of long for the second argu‐
ment in __rmt_lseek declaration. * system.h: Re‐
move 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 François Pinard <pinard@iro.umontreal.ca>

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

1995‐06‐11 François Pinard <pinard@iro.umontreal.ca>

* tar.h, tar.c (decode_options), extract.c (ex‐
tract_archive), diffarch.c (diff_archive), create.c
(dump_file, start_header), tar.c (decode_options): Re‐
place flag_absolute_paths by flag_absolute_names.
* tar.c (decode_options): Implement OBSOLETE_AB‐
SOLUTE_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 François Pinard <pinard@iro.umontreal.ca>

* tar.c (long_options): Use no_argument and require_argu‐
ment, 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 François Pinard <pinard@iro.umontreal.ca>

* Makefile.in: Use subdir and distdir.

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

1995‐06‐05 François Pinard <pinard@iro.umontreal.ca>

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

* tar.h: Delete COMMAND_VERSION. * tar.c: Re‐
place 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 François Pinard <pinard@iro.umontreal.ca>

* Makefile.in (check): New goal. * checktar.sh:
New script. * genfile.c: New file. * Make‐
file.in (all): Prepare genfile. * Makefile.in: Distrib‐
ute checktar.sh and genfile.c.

1995‐06‐03 François Pinard <pinard@iro.umontreal.ca>

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

1995‐05‐30 François 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 François 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 Dal‐
ley, Loren J. Rittle and Marty Leisner.

* rmt.c: Replace SSIZE by STRING_SIZE, avoiding a con‐
flict 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 François Pinard <pinard@iro.umontreal.ca>

* Prerelease 1.11.7.

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

* system.h: Many adjustements for GNU gettext.

1995‐05‐09 François Pinard <pinard@iro.umontreal.ca>

* Makefile.in: Clean glocale out.

1995‐05‐08 François 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 _() appropri‐
ately. * tar.c (main): Call textdomain.

1995‐05‐02 François Pinard <pinard@iro.umontreal.ca>

* system.h, gnu.c, list.c, port.c: Avoid super‐
fluous parentheses in macro definitions. * port.c: Capi‐
talize macro arguments. * buffer.c, create.c, dif‐
farch.c, tar.c: Use comma operator when assignment in
test.

1995‐04‐27 François Pinard <pinard@iro.umontreal.ca>

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

1995‐03‐19 François Pinard <pinard@iro.umontreal.ca>

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

1995‐03‐14 François 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 François Pinard <pinard@iro.umontreal.ca>

* Makefile.in: Replace ‘date’ by ‘echo timestamp’.

1995‐02‐19 François Pinard <pinard@iro.umontreal.ca>

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

1995‐02‐13 François Pinard <pinard@iro.umontreal.ca>

* Makefile.in: Use top_srcdir.

1995‐02‐11 François 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 François Pinard <pinard@iro.umontreal.ca>

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

1995‐01‐04 François 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 re‐
lated. (decode_options) [MSDOS]: Be blind to ‐N and re‐
lated. Reported by Jeffrey Goldberg.

* rmt.h (_remdev): A filename is not remote if the colon
is preceded 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 François 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 François 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, up‐
date.c: Include "system.h", and move the inclusion of
"tar.h" down after system dependent definitions. * Make‐
file.in: Distribute system.h.

* rmt.c: Include "system.h", and simplify accordingly.
* rtapelib.c: Include "system.h", and simplify accord‐
ingly. * 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/ioc‐
com.h then provides definitions. Reported by Joseph E.
Sacco.

1994‐12‐27 François Pinard <pinard@iro.umontreal.ca>

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

1994‐12‐18 François 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. Re‐
ported by Bruno Haible, Konno Hiroharu and Max Hailperin.

1994‐12‐11 François Pinard <pinard@iro.umontreal.ca>

* buffer.c, tar.c [WITH_REGEX]: Check it.

1994‐12‐03 François Pinard <pinard@iro.umontreal.ca>

* Prerelease 1.11.6.

* 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 François 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 François 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 de‐
clare strstr, which is not needed.

1994‐11‐01 François 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 François Pinard <pinard@iro.umontreal.ca>

* tar.h [__STDC__]: Use #if instead of #ifdef.

1994‐10‐27 François 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, up‐
date.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 François Pinard <pinard@iro.umontreal.ca>

* rmt.c, rtapelib.c, tar.h: Get rid of CONFIG_BROKETS.

1994‐10‐04 François Pinard <pinard@iro.umontreal.ca>

* diffarch.c (fill_in_sparse_array): Add a cast for Pyra‐
mid’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‐09‐27 François Pinard <pinard@iro.umontreal.ca>

* diffarch.c: Normalize capitalization in diagnostics.

1994‐09‐26 François 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 François 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 other‐
wise. Reported by James W. McKelvey, John L.
Chmielewski, Karl Vogel, Kaveh R. Ghazi an and Jim Meyer‐
ing and Tilman Schmidt.

1994‐09‐14 François Pinard <pinard@iro.umontreal.ca>

* Makefile.in: Cleanup... (DISTFILES): Distrib‐
ute 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 François Pinard <pinard@iro.umontreal.ca>

* buffer.c: Remove the presetting of stdlis, because std‐
out 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 argu‐
ment to wait, do not use NULL. Reported by
Thomas Bushnell n/BSG.

1994‐09‐05 François 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 François 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 ver‐
bose messages to msg_file, instead of stdout.
Reported by Piercarlo Grandi.

1994‐08‐23 François 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 de‐
fined. Otherwise, if the command argument has been spec‐
ified 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 re‐
mote shell was found at configure time, remote capabili‐
ties are always compiled. This also solve other problems
related to RTAPELIB. * Makefile.in: Always compile $Ur‐
tapelib.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 François Pinard <pinard@iro.umontreal.ca>

Little cleanup in installation: * Makefile.in:
Remove rule for ../lib/libtar.a.

1994‐08‐21 François Pinard <pinard@iro.umontreal.ca>

* Prerelease 1.11.5.

* Makefile.in: Correct for when a different build di‐
rectory.

* 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 François 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 François Pinard <pinard@iro.umontreal.ca>

Remove some shadowings. * update.c (up‐
date_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 cast‐
ing.

* mangle.c (extract_mangle): Remove unused argument.
* tar.h: Adjust prototype. * extract.c (ex‐
tract_archive): Caller changed.

* rtapelib.c (__rmt_open): Remove useless mode parameter.
* rmt.h, tar.h: Adjust prototype. * rmt.h: Ad‐
just 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]: In‐
stead 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 miss‐
ing 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 EOP‐
NOTSUPP instead of EINVAL. * rmt.h: Always provide a
prototype for __rmt_ioctl. Delete the RMTIOCTL machin‐
ery.

1994‐08‐16 François 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 Anders‐
son, Bruno Haible, Thomas Krebs and Thomas König.

* Makefile.in: Add $U’s to rtapelib and rmt specific
rules. Reported by Thomas König.

1994‐08‐15 François Pinard <pinard@iro.umontreal.ca>

* Prerelease 1.11.4.

* rmt.c (numeric_error): Renamed from error.
(string_error): New, to replace ERROR ((...)), unavail‐
able 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 (back‐
space_output): Idem. * diffarch.c (verify_volume): Idem.

* Makefile.in (rmt): Declare dependencies over rmt.h.

1994‐08‐14 François Pinard <pinard@iro.umontreal.ca>

* rtapelib.c: Use MTIO_CHECK_FIELD instead of mt_type.
Reported by Ben A. Mesander.

1994‐08‐13 François 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 François 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 François 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 König.

1994‐08‐09 François 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 suc‐
cess 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 François 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 com‐
piling. * rtapelib.c (__rmt_open): If command not given,
use REMOTE_SHELL, instead of cascading tries of file‐
names. 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 König.

* create.c (dump_file): Cast alloca results, for those
compilers not processing void * properly. Re‐
ported 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 François 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 de‐
clare getcwd if we do not have it. * tar.c: Do not in‐
clude <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/sys‐
tem.h" and textutils‐1.9’s "system.h". * cre‐
ate.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 König, Jim Meyering, Kai Petzke, Kaveh R. Ghazi
and Torkel Hasle.

1994‐08‐04 François 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 unprotoiza‐
tion. Reported by Kaveh R. Ghazi and Christian T. Dum.

* port.c: Remove many static specifiers. Re‐
ported 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 François Pinard <pinard@iro.umontreal.ca>

* Prerelease 1.11.3.

* tar.c (assign_string): New routines. * cre‐
ate.c (dump_file, start_header), extract.c (ex‐
tract_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 ad‐
vance 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 François 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 COM‐
MAND_*.

* 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 in‐
dex 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 rou‐
tine. 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 Bo‐
jsen.

* 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_in‐
dex. Replace namef by name_file, n_argv by names_argv
and n_argc by names_argc. (main): Make an ini‐
tial 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 François 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 com‐
pared. * diffarch.c (diff_archive): If multi‐volume, up‐
date save_name and save_totsize before calling wantbytes.
* buffer.c (wantbytes): If multi‐volume, update
save_sizeleft. Reported by Andreas Schwab, Denis Fortin,
François Pinard, Hiroyuki Bessho, Olaf Schlueter, Simon
Wright and Saul Lubkin.

1994‐07‐30 François Pinard <pinard@iro.umontreal.ca>

* tar.c (options): Implement DEVICE_PREFIX and DEN‐
SITY_LETTER. Reported by Danny R. Johnston.

* gnu.c (gnu_restore): Use CURRENT_FILE_NAME abbrevia‐
tion. * extract.c (extract_archive): Idem. Re‐
ported by Timothy Fossum.

1994‐07‐29 François Pinard <pinard@iro.umontreal.ca>

* create.c (dump_file): Abort if no memory for a possible
link, remove related bogus code, and the variable no‐
links. Reported by Andreas Schwab.

* create.c (dump_file): Detect file sparseness correctly
for Linux ext2 filesystem. Reported by Kai Pet‐
zke.

* 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_sta‐
tus. * 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. Re‐
ported by Tilman Schmidt.

* rmt.c: Define EXIT_FAILURE and EXIT_SUCCESS if not al‐
ready. * rtapelib.c: Define EXIT_ON_EXEC_ERROR to 128
and use it.

1994‐07‐27 François Pinard <pinard@iro.umontreal.ca>

* diffarch.c (sigh): Increment errors, so a difference
will yield a non‐zero exit status at end. Re‐
ported 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_sta‐
tus): 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 out‐
putting 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 François 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_com‐
mand 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 <fc‐
ntl.h> or <sys/file.h>, because they are indirectly in‐
cluded 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, Lau‐
rent Sainte‐Marthe, Noah Friedman, Reuben Sumner, Tom
Quinn and William Bader.

1994‐07‐24 François 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 François 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: In‐
clude <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 com‐
piled 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 op‐
tions. Accepts an exit status argument. Callers
adapted. Reported by Richard O’Neill.

1994‐07‐20 François Pinard <pinard@iro.umontreal.ca>

* port.c (rename): Constify the arguments. Re‐
ported by Elmar Heeb, Jeff Prothero and John Clark.

* tar.c (main): Declare version_string locally.
* version.c: Deleted. * Makefile.in: Adjusted.

1994‐07‐19 François 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 in‐
cluded 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 François 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 François Pinard <pinard@iro.umontreal.ca>

* tar.c: Replace DEF_AR_FILE with DEFAULT_ARCHIVE, re‐
place DEFBLOCKING with DEFAULT_BLOCKING.

* rtapelib.c: Replace "??’" by "?? ’" at two places in a
comment, so avoiding Pyramid’s DC/OSx compiler to com‐
plain 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 mat‐
ters.

* 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 François 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 lo‐
cal_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 specifi‐
cation 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 François 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 an‐
nihilation. * 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, re‐
move 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): Re‐
move a spurious repetition of program_name in error mes‐
sage.

1994‐07‐01 François 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 François 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, do‐
ing them along the way of other things in the future.

* Makefile.in: New file.

* Split distribution into a few subdirectories, for eas‐
ing maintainance.

* Taking over maintenance duties.

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‐19 David J. MacKenzie <djm@churchy.gnu.ai.mit.edu>

* Makefile.in (libdir): Use standard GNU value ‐‐
$(exec_prefix)/lib, not /etc.

1993‐07‐08 David J. MacKenzie <djm@goldman.gnu.ai.mit.edu>

* Makefile.in (installdirs, configure, config.status,
Makefile): New targets.

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‐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 Bush‐
nell <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 num‐
bers 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 op‐
tions 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 (de‐
code_header): Mask off potentially misleading high bits
from the mode when reading headers. Reported by Paul Eg‐
gert.

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 any‐
thing 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‐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‐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‐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_vol‐
ume_number), create.c (write_long): Declare as void, not
int, since they don’t return a value.

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 So‐
laris.

* Makefile.in: added target and rule for getdate.c: get‐
date.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: Add include of <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 sym‐
link 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 re‐
moved. * tar.c: Include fnmatch.h and use fnmatch in‐
stead 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 lib‐
dir 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‐09 Michael I Bush‐
nell <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 in‐
stead 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 long‐
name/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 cur‐
rent_link_name instead of fields directly from the cur‐
rent 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 speci‐
fied, 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 con‐
fused.

* create.c (dump_file): Check for toplevel had sense re‐
versed.

* 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 appro‐
priate 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‐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 avail‐
able. * rmt.h: Declare the external functions defined in
rtapelib.c.

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‐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 de‐
vices 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. cre‐
ate.c (dump_file): Implemented +remove‐files for every‐
thing 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‐05 David J. MacKenzie <djm@nutrimat.gnu.ai.mit.edu>

* tar.c (describe): Document long options as starting
with ‐‐.

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‐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. * cre‐
ate.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‐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 Make‐
file 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‐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_con‐
tents): Return NULL, not " ", 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 guar‐
antees 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 be‐
fore, 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 be‐
cause 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 MAX‐
NAMLEN. * 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 re‐
moved. 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‐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_MEM‐
ORY_H.

* create.c (dump_file) [AIX]: Fix typo, ‘allocate’ for
‘alloca’. * gnu.c (collect_and_sort_names): Move mis‐
placed brace out of #ifdef. Reported by Minh Tran‐Le.

* configure: Also look in sys/signal.h for signal decl.

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‐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 al‐
loca.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 std‐
out, 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 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‐06 David J. MacKenzie <djm@geech.gnu.ai.mit.edu>

* Replace Makefile with configure, Makefile.in, and make‐
file.pc. Update README with current compilation instruc‐
tions.

* port.c [WANT_RENAME] (rename): New function.

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 ex‐
tern. 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‐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. (in‐
stall): Don’t install tar.texinfo. There’s no standard
place for texinfo files, and /usr/local/man is inappro‐
priate. Add TAGS, distclean, and realclean targets and
SHELL= line.

* version.c: Move old change history to bottom of
ChangeLog.

1991‐06‐12 Michael I Bushnell <mib@geech.gnu.ai.mit.edu>

* rtape_lib.c (__rmt_write) [SIGNAL_VOID]: Instead of
USG.

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‐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 re‐
quire 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. Re‐
ported by Andrew Torda.

* rtape_server.c (main.c): For 386/AIX. I’m suspicious
about this one. * create.c (dump_file): For hid‐
den 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 de‐
manding 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‐10 Noah Friedman <friedman@nutrimat>

* tar.c: added " 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 prop‐
erly. )

* 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 au‐
tomatically. (_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‐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 rem‐
nant of a context diff, apparently).

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 simpli‐
fies 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 back‐
wards. 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_dump‐
file, 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 opera‐
tion, not an option. * Add +confirmation alias for +in‐
teractive.

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: Ac‐
cording changes.

* extract.c: Don’t complain when extracting an already
existing link. Don’t complain when extracting a direc‐
tory 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 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‐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‐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 ‘day‐
light’.

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 di‐
rectory 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‐16 Jay Fenlason <hack@ai.mit.edu>

* tar.c: rename ‐g ‐G +incremental, +listed‐imcremental,
etc.

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 speci‐
fied 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‐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 over‐
ride 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‐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‐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. * Make‐
file [Xenix]: Link with ‐ldir to get the dirent.h direc‐
tory library.

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 lower‐
case version is defined, and the uppercase one isn’t.

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 appro‐
priate.

* 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 docu‐
mented, but only the short form (‐S) was actually recog‐
nized.

1990‐04‐17 Jay Fenlason <hack@ai.mit.edu>

* create.c: Don’t access location 0 if ‐>dir_contents is
null.

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 (in‐
cluding Sun floppy disk, and HP streaming tape) return ‐1
after an IO error (or something like that.)

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 sta‐
tic.

* 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 abbrevi‐
ation 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. (com‐
pare_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‐han‐
dler 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 re‐
member that timezone is in seconds, but we want
timeb‐>timezone to be in minutes. Reported by Jörgen
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 sys‐
tems 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 af‐
ter 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_per‐
ror().

* 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 un‐
released, 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. * cre‐
ate.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‐19 Jim Kingdon <kingdon@pogo>

* port.c [BSD42]: Define DOPRNT_MSG. tar.h
[BSD42]: Do not prototype msg{,_perror}.

1989‐12‐08 Jay Fenlason <hack@gnu>

* create.c (dump_file): Remove typo in msg.

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 +con‐
catenate, and +local‐filesystem to +one‐file‐system (pre‐
ferred 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. De‐
fine 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 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 <hack@ai.mit.edu>

* tar.c (long_options[]): Add an option for blocked com‐
pression.

1989‐10‐19 <hack@ai.mit.edu>

* buffer.c (writeerror): Print a more useful error msg.

1989‐09‐27 <hack@ai.mit.edu>

* tar.c (main): Mention "tar ‐help" if the luser types a
non‐workable set of options.

1989‐09‐11 <hack@ai.mit.edu>

* tar.c (options): Have ‐F correctly set info_script.

1989‐08‐29 <hack@ai.mit.edu>

* Makefile Include ChangeLog in tar.tar and tar.tar.Z

1989‐08‐28 <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 pro‐
gram 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 sys‐
tem(), otherwise we do what we’ve always done.

1989‐08‐24 Joy Kendall <jak@spiff> (These changes
made over the course of 6/89 ‐ 8/89)

* 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 it‐
self. 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 de‐
tect 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 isex‐
tended ‐ 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 at rocky2.rockefeller.edu) (I’m
not completely sure all these have been integrated ‐‐ FP.)

* buffer.c [USG]: ifdef’d out #include <sys/file.h>.
(close_archive): SysV doesn’t have ftruncate, so substi‐
tuted 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: (ex‐
tract_archive): Only strip leading paths if f_rela‐
tive_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 in‐
stead 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_rela‐
tive_paths, to cause tar to strip leading ‘/’ characters
in pathnames during create and extract. * tar.texinfo:
Fixed a couple of typos, detected by texi2roff. * up‐
date.c: Simulate <sys/sysmacros.h> for Unos. Previous releases
by Jay Fenlason (hack@ai.mit.edu)

* Version 1.07 ‐‐‐ New version to go on beta tape with
GCC 1.35. Better USG support. Also support for
__builtin_alloca if we’re compiling with GCC.

* diffarch.c: Include the correct header files so MTIOC‐
TOP is defined. * tar.c: Don’t print the ver‐
bose list of options unless given ‐help. The list of op‐
tions is *way* too long.

* Version 1.06 ‐‐‐ [__STDC__]: Use STDC_MSG.
ENXIO meand end‐of‐volume in archive (for the UNIX PC)
Added break after volume‐header case (line 440) extract.c
Added patch to rtape_lib.c (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 per‐
ror("") instead of perror(0) patch so ‐X ‐ works
Fixed tar.c 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.

Added to port.c: mkdir() ftruncate(): Removed: lstat()
Fixed ‐G to work with ‐X Another fix to tar.tex‐
info Changed tar.c to say argv[0]":you must specify ex‐
actly ... 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 mes‐
sages create.c: fixed to make link_names non‐absolute

* Version 1.04 ‐‐‐ Added functions msg() and msg_per‐
ror(): Modified all the files to call them. Also checked
that all (I hope) calls to msg_perror() have a valid er‐
rno 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 added ftime() to getdate.y Fixed
un_quote_string() so it won’t wedge on dd (like 123, etc)
More fixes to tar.texinfo

* Version 1.03 ‐‐‐ Fixed buffer.c so ’tar tzf NON_EXIS‐
TENT_FILE’ returns an error message instead of hanging
forever. More fixes to tar.texinfo.

* Version 1.02 ‐‐‐ Fixed tar.c 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 ‐‐‐ Fixed typoes in tar.texinfo.
Fixed a bug in the #define for rmtcreat(). Fixed
the ‐X option to not call realloc() of 0.

* Version 1.00 ‐‐‐ version.c added. ‐version option
added. Installed new version of the remote‐tape library.
Added ‐help option.


‐‐‐‐‐ tests/ChangeLog ‐‐‐‐‐

1997‐04‐25 François Pinard <pinard@iro.umontreal.ca>

* Release 1.12.

* gzip.sh, ignfail.sh: Adjust to new delayed error exit
message.

* Makefile.am (BUILT_SOURCES): Define as preset, so pre‐
set is regenerated if configuration changes.

* Makefile.am (TESTS): Nevertheless include delete01.sh.
(POSTPONED_TESTS): Adjusted. Reported by Andreas
Schwab.

* delete02.sh: Mention f ‐ explicitly, do not assume it,
in case $TAPE is defined or the default archive has been
overridden. Reported by Andreas Schwab.

1997‐04‐24 François Pinard <pinard@iro.umontreal.ca>

* after: Unredirect stdout and stderr before removing the
files. If redirections are to NFS files, removing them
while they are still opened may have strange effects,
failing almost all tests. Reported by Kaveh R. Ghazi.

1997‐04‐22 François Pinard <pinard@iro.umontreal.ca>

* Prerelease 1.11q.

* extrac03.sh: New file. * Makefile.am (TESTS):
Adjusted. Reported by Marc Boucher.

* preset.in (LC_MESSAGES): Clear value before tests.
Reported by Sven Verdoolaege.

* Makefile.am (INCLUDES): Adjust so config.h gets found.

* genfile.c (usage): Corrected.

* delete01.sh: New name for delete.sh. *
delete02.sh: New file. * Makefile.am (TESTS): Adjusted.
Reported by Vince Del Vecchio.

* Makefile.am (POSTPONED_TESTS): To contain the ‐‐delete
tests. (TESTS): Adjusted. (EXTRA_DIST): Include
$(POSTPONED_TESTS). The purpose is getting the tests
distributed, but not executed. These flaky tests are to
be addressed only after 1.12 is released.

1997‐04‐19 François Pinard <pinard@iro.umontreal.ca>

* Makefile.am (AUTOMAKE_OPTIONS): Declare
../src/ansi2knr. * (DEFS): New, for defining LOCALEDIR.
* (genfile.o): Deleted, will be implied from DEFS above.
Reported by Bruno Haible and Kaveh R. Ghazi.

1997‐04‐17 François Pinard <pinard@iro.umontreal.ca>

* Prerelease 1.11p.

* genfile.c (usage): Add a program description.
(main): Output ‐‐version according to recent GNU stan‐
dards.

1997‐04‐15 François Pinard <pinard@iro.umontreal.ca>

* ignfail.sh: Ensure the test does not fail if run as su‐
per‐user. Reported by John David Anglin.

1997‐04‐12 François Pinard <pinard@iro.umontreal.ca>

* genfile.c (pattern): Remove trailing comma for last
enum item. Reported by Bruno Haible.

1997‐04‐11 François Pinard <pinard@iro.umontreal.ca>

* Prerelease 1.11o.

1997‐03‐29 François Pinard <pinard@iro.umontreal.ca>

* ignfail.sh: New file. * Makefile.am (TESTS):
Adjusted. Reported by Ralph Schleicher.

1997‐03‐24 François Pinard <pinard@iro.umontreal.ca>

* genfile.c: Implement ‐‐pattern=default/zeros.

1997‐02‐25 François Pinard <pinard@iro.umontreal.ca>

* old.sh: New file. * Makefile.am (TESTS): Ad‐
justed. Reported by Daniel Trinkle.

1997‐01‐21 François Pinard <pinard@iro.umontreal.ca>

* extrac01.sh: New name for extract.sh. * ex‐
trac02.sh: New file. * Makefile.am (TESTS): Adjusted.
Reported by Axel Boldt.

1996‐11‐25 François Pinard <pinard@iro.umontreal.ca>

* genfile.c (usage): Typo in message. Reported
by Christian Kirsch.

1996‐11‐22 François Pinard <pinard@iro.umontreal.ca>

* incremen.sh: New file. Reported by Wolfram
Wagner.

* append.sh, delete.sh: New files. * Makefile.am
(TESTS): Adjusted. Reported by Andreas Schwab.

* before: Ensure .. on PATH, so genfile may be found.
* Makefile.am ($(TESTS)): Depend on genfile, waiting for
Automake to be adjusted to do the proper thing for paral‐
lel make.

* gzip.sh: New name for childerr.sh. * ex‐
tract.sh: New name for direxist.sh. * volume.sh: New
name for volcheck.sh. * Makefile.am: Adjusted.

* All tests: Use set ‐e whenever appropriate. Use "" in‐
stead of ’’ for out and err, so allowing us to use es‐
caped newlines. In case of multiple output in a single
test, ensure separator lines.

1996‐11‐06 François Pinard <pinard@iro.umontreal.ca>

* Prerelease 1.11.13.

* childerr.sh, direxist.sh, volcheck.sh: Use sh, not
bash. Reported by John David Anglin.

1996‐09‐20 François Pinard <pinard@iro.umontreal.ca>

* volcheck.sh: New. * Makefile.am (TESTS): Ad‐
justed.

1996‐09‐19 François Pinard <pinard@iro.umontreal.ca>

* Prerelease 1.11.12.

* Makefile.am ($(TESTS)): Depend on preset. *
version.sh (PATH): Adjust for multi‐line ‐‐version output.
* preset.in (LANG, LANGUAGE): Export them, so gzip does
not localise its own output. (echo_n, echo_c):
Define from the result of echo configuration. * after:
Handle echo with newline suppressed.

1996‐09‐09 François Pinard <pinard@iro.umontreal.ca>

* childerr.sh, direxist.sh, before, after: New files.
* Makefile.am: Adjusted.

1996‐09‐04 François Pinard <pinard@iro.umontreal.ca>

* ChangeLog, Makefile.am, pretest.in, version.sh: New
files. * checktar.sh, genfile.c: New files, moved from
src/.

A regression test is an old dream for GNU tar.
Reported by Tom Tromey and Robert Bernstein.