b7c28d51605dd079890776808df29a0621587d60
[debian/tar] / ChangeLog
1 2006-12-08  Sergey Poznyakoff  <gray@gnu.org.ua>
2
3         * configure.ac: Raise version number to 1.16.1
4         * bootstrap (slurp): Create .(cvs|git)ignore if not present
5         * po/.cvsignore, m4/.cvsignore: Remove automatically generated
6         files.
7
8 2006-12-07  Sergey Poznyakoff  <gray@gnu.org.ua>
9
10         * NEWS: Update
11         * Makefile.am (distclean-local): Fixed
12         * doc/tar.texi: Update documentation of --exclude-tag
13         * src/create.c (dump_dir0): Move checks for exclude tags to
14         dump_file0.
15         (dump_dir): Move calls to ensure_slash to dump_file0
16         * src/extract.c (extract_file): Call skip_member if open fails.
17         Patch proposed by Jan-Benedict Glaw <jbglaw@lug-owl.de>
18         * tests/truncate.at: Use genfile instead of dd, because on some
19         systems /dev/zero is not available.
20         
21 2006-12-04  Paul Eggert  <eggert@cs.ucla.edu>
22
23         * NEWS: Fix some race conditions with tar -x --same-owner.
24         * src/extract.c (ARCHIVED_PERMSTATS): Add a comment saying that
25         S_IRWXG | S_IRWXO might be masked out.
26         (set_mode): Set the mode if some bits were masked out originally.
27         (set_stat): Don't chmod before chown, as that might temporarily
28         grant permissions that we don't want to grant.  The chmod was
29         there only to work around broken hosts, so add a comment advising
30         users not to use those broken hosts instead.
31         (repair_delayed_set_stat, extract_dir):
32         Remember to mask out current umask before inverting permissions.
33         (extract_dir): If the owner might change, or if the mode has
34         special bits, create the directory 700 at first, but restore it later.
35         (open_output_file): New arg mode; all uses changed.
36         (extract_file, extract_node, extract_fifo): If the owner might
37         change, omit group and other bits at first, but restore them after
38         changing the owner.
39
40 2006-12-04  Jim Meyering  <jim@meyering.net>
41
42         * doc/tar.texi (Long Options): Remove doubled word.
43
44 2006-11-30  Sergey Poznyakoff  <gray@gnu.org.ua>
45
46         * src/xheader.c (xheader_read): Remove unused variable
47
48         * po/POTFILES.in: Remove src/mangle.c
49
50         * bootstrap: Implement --update-po and .bootstrap
51
52         * src/create.c (dump_dir0): Implement --exclude-tag option
53         * src/tar.c: Likewise
54         * doc/tar.texi (exclude): Document --exclude-tag
55
56 2006-11-29  Paul Eggert  <eggert@cs.ucla.edu>
57
58         * NEWS: Remove support for mangled names.
59         * doc/tar.texi (verbose tutorial): Likewise.
60         * src/Makefile.am (tar_SOURCES): Remove mangle.c.
61         * src/common.h (extract_mangle): Remove decl.
62         * src/extract.c (extract_mangle_wrapper): Remove.
63         (prepare_to_extract): Remove support for mangled names.
64         * src/list.c (read_and, print_header): Likewise.
65         * src/mangle.c: Remove.
66         * src/tar.h (GNUTYPE_NAMES): Remove.
67
68         Port to latest gnulib.  There were a lot of changes, so the
69         simplest way to get this up and running was to switch to coreutils
70         bootstrap procedure.  I noticed one feature missing after this
71         merge: the ability to update a single .po file.  I can add that
72         later if need be.
73         * README-cvs, bootstrap.conf: New files.
74         * lib/.cvsignore: Remove Makefile.am, printf-parse.c, vasnprintf.c.
75         Add fstatat.c, gnulib.mk, openat-proc.c, same-inode.h, stat_.h,
76         tempname.c, tempname.h, uinttostr.c.
77         * lib/printf-parse.c, lib/vasnprintf.c: New files, from coreutils,
78         to override gnulib, so that we don't need xsize.h.
79         * bootstrap: Replace with coreutils bootstrap, except add support
80         for paxutils.
81         * configure.ac (gl_USE_SYSTEM_EXTENSIONS): Remove, as gl_EARLY now
82         does this.
83         (gl_EARLY, gl_INIT): Add.
84         (tar_GNULIB): Remove.
85         * gnulib.modules: Add configmake.
86         * lib/Makefile.tmpl: Remove, replacing with....
87         * lib/Makefile.am: New file.
88         * src/Makefile.am (tar.o): Remove dependency: Automake does this
89         for us.
90         * src/tar.c: Include <configmake.h> and <rmt-command.h>, not
91         <localedir.h>.
92
93 2006-11-13  Sergey Poznyakoff  <gray@gnu.org.ua>
94
95         * src/xheader.c (mtime_coder): Treat non-null data as a pointer to
96         struct timespec, overriding st->mtime
97         * src/create.c (start_header): Pass mtime as a call-specific data
98         to xheader_store.
99
100         * tests/truncate.at: Do not use 'k' modifier in dd options.
101         * tests/append02.at: Do not depend on command timing.
102
103 2006-11-01  Sergey Poznyakoff  <gray@gnu.org.ua>
104
105         * src/tar.c (enum read_file_list_state.file_list_skip): New value
106         (read_name_from_file): Skip zero-length entries
107
108         * tests/T-empty.at: New test case
109         * tests/T-null.at: New test case
110         * tests/extrac07.at: New test case
111         * tests/Makefile.am: Add new test cases.
112         * tests/testsuite.at: Add new test cases.
113         * tests/extrac02.at: Add more keywords
114         * tests/extrac04.at: Likewise
115         * tests/extrac06.at: Likewise
116         * tests/shortrec.at: Do not assume tar's default archive is stdout
117
118 2006-10-31  Sergey Poznyakoff  <gray@gnu.org.ua>
119
120         * src/extract.c, src/xheader.c: Call last_component instead of
121         base_name. The latter returns a malloced string since 2006-03-11.
122
123 2006-10-21  Sergey Poznyakoff  <gray@gnu.org.ua>
124
125         * NEWS, configure.ac: Version 1.16
126         * Makefile.am (distclean-local): New rule
127
128 2006-10-17  Sergey Poznyakoff  <gray@gnu.org.ua>
129
130         * src/tar.c: Fix help output formatting.  Thanks Benno
131         Schulenberg.
132
133 2006-10-16  Sergey Poznyakoff  <gray@gnu.org.ua>
134
135         * Makefile.am (dist-hook): Create a cpio archive.
136         * NEWS: Update
137
138 2006-10-14  Sergey Poznyakoff  <gray@gnu.org.ua>
139
140         * doc/tar.texi (Synopsis): Document tar exit codes.
141         * src/create.c (dump_regular_file,dump_file0): Set exit_status to
142         TAREXIT_DIFFERS if the file being dumped was truncated or
143         otherwise changed.
144         * src/tar.c: Do not attempt to close stderr after call to
145         close_stdout.
146         * tests/grow.at: New test case
147         * tests/Makefile.am: New test grow.at
148         * tests/testsuite.at: Likewise
149         * tests/truncate.at (AT_KEYWORDS): Keyword `filechange'
150         Test tar exit status.
151
152         * src/buffer.c (_open_archive): Make sure stdlis is set to stderr
153         when we are writing archive to stdout (unless --index-file is
154         used). Bug introduced on 2006-07-06.
155         * tests/Makefile.am: New test verbose.at
156         * tests/testsuite.at: Likewise
157         * tests/indexfile.at (AT_KEYWORDS): Add stdout keyword
158         * tests/verbose.at: New test case
159
160 2006-10-02  Sergey Poznyakoff  <gray@gnu.org.ua>
161
162         * THANKS: Add Joerg Weilbier
163         * src/buffer.c (new_volume): Initialize current_block
164         * src/xheader.c (xheader_string_end): Fix diagnostic message.
165         * tests/multiv05.at: New testcase.
166         * tests/Makefile.am, tests/testsuite.at: Add multiv05.at
167
168 2006-09-27  Sergey Poznyakoff  <gray@gnu.org.ua>
169
170         * bootstrap: Use ${package} instead of hardcoding package name
171         * doc/tar.texi: Minor fix
172         * src/tar.c (doc0, doc1, initialize_argp_doc): Removed.  Rely on
173         the new argp method instead.
174
175 2006-09-12  Sergey Poznyakoff  <gray@gnu.org.ua>
176
177         * README: Fix a typo
178
179 2006-09-08  Paul Eggert  <eggert@cs.ucla.edu>
180
181         Adjust to latest gnulib.
182         * lib/.cvsignore: Add at-func.c, configmake.h, fchmodat.c,
183         fcntl.h, fcntl_.h, inttypes_.h, lstat.c, lstat.h.
184         * tests/testsuite.at (AT_TAR_MKHIER): Use install-sh -d
185         rather than the no-longer-included mkinstalldirs.
186
187 2006-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>
188
189         * src/incremen.c (try_purge_directory): Initialize struct st.  Fix
190         condition for selecting candidates for removal.
191         * README-alpha: List texinfo among build prerequisites for the CVS
192         version.
193
194         * bootstrap (intl_files_to_remove): Do not remove m4/inttypes-h.m4
195         and m4/inttypes-pri.m4
196
197 2006-08-11  Paul Eggert  <eggert@cs.ucla.edu>
198
199         * bootstrap: Set XGETTEXT_OPTIONS to flag our printf-format functions,
200         so that translators are warned about strings that are formats but
201         don't look like formats.  This might help prevent core dumps.
202         * configure.ac (AM_GNU_GETTEXT): Upgrade to need-formatstring-macros.
203         Suggested by Eric Blake to avoid problems like
204         <http://lists.gnu.org/archive/html/bug-coreutils/2006-07/msg00087.html>.
205         (AM_GNU_GETTEXT_VERSION): Upgrade from 0.12.1 to 0.15.  The gettext
206         manual says we should use the version number normally expected of
207         maintainers, neither more nor less.
208
209         * bootstrap (get_translations):
210         Don't exclude ky.po; it is working again.
211
212 2006-08-09  Paul Eggert  <eggert@cs.ucla.edu>
213
214         * bootstrap (get_translations):
215         Don't exclude ja.po; it is working again.
216         Don't remove all old .po files if we're merely updating one.
217         * po/.cvsignore: Add Makevars.
218
219 2006-08-07  Paul Eggert  <eggert@cs.ucla.edu>
220
221         * src/tar.c: Work around limitation imposed by gettext 0.15
222         by concatenating strings with "\v" after translation.
223         (doc): Remove, splitting into:
224         (doc0, doc1): New constants.
225         (argp): Don't use doc; just initialize to NULL.
226         (initialize_argp_doc): New function.
227         (decode_options): Use it.
228
229         * bootstrap: Redo po file retrieval to match Bison's method,
230         since the translation project changed its index format.
231         Don't use --assume-autoconf; it's now replaced
232         by looking in configure.ac.
233         (m4/codeset.m4, m4/intdiv.m4, m4/inttypes-pri.m4, m4/isc-posix.m4):
234         (m4/lcmessage.m4, m4/onceonly_2_57.m4, m4/gettext.m4, m4/glibc21.m4):
235         (m4/inttypes_h.m4, m4/lib-ld.m4, m4/lib-prefix.m4, m4/po.m4):
236         (m4/stdint_h.m4, m4/uintmax_t.m4, m4/ulonglong.m4):
237         Don't rename to ..._gl.m4, as this is no longer needed.
238         (m4/geteext.m4): Patch to remove the need for intl/*.
239         Use autopoint manually, then remove the intl files,
240         then undo changes to gnulib files that autoreconf made,
241         and then run aclocal/autoconf/autoheader/automake.
242         This makes our bootstrap procedure closer to Bison's.
243         (po/Makevars): Generate automatically.
244         * configure.ac (AC_PREREQ): Update from 2.59 to 2.60.
245         (gl_AC_TYPE_INTMAX_T, jm_AC_TYPE_UINTMAX_T): Remove.
246         * gnulib.modules: Add inttypes, stdint.
247         * lib/.cvsignore: Add close-stream.c, close-stream.h,
248         stdint.h, stdint_.h.
249         * po/Makefile: Remove; now automatically generated.
250
251         * src/incremen.c (read_incr_db_01): Check input strings more
252         carefully.  Do not pass arbitrary char values to isspace, as
253         this has undefined behavior.  Likewise for assigning arbitrary
254         uintmax_t values to other types.
255         (read_negative_num, read_unsigned_num, read_timespec):
256         New functions, to check input values a bit more carefuly.
257         (read_num): Use read_unsigned_num.  New arg MAX_VAL;
258         all callers changed.
259         (read_incr_db_2): Use these new functions.
260         Use a consistent diagnostic for unexpected EOF.
261         (read_directory_file): Do not assign arbitrary uintmax_t value
262         to int.
263         (read_timespec, write_directory_file_entry, write_directory_file):
264         Handle negative time_t values correctly.  We don't bother to do
265         this with pre-2 formats, since presumably the time stamps were
266         output incorrectly.
267
268         * src/tar.c (doc): Don't use \v in an argument to gettext;
269         gettext 0.15 rejects this.
270
271 2006-07-24  Sergey Poznyakoff  <gray@gnu.org.ua>
272
273         * src/tar.c (decode_options): Do not require -L with -M -Hpax.
274         It could be needed in future, but currently it is not.
275         * src/create.c (to_chars_subst): Update comment regarding OLDGNU
276         vs. GNU format differences.
277         (mode_to_chars): Treat OLDGNU_FORMAT same as GNU_FORMAT. Fixes bug
278         reported by TAMUKI Shoichi <tamuki@linet.gr.jp>, which caused
279         equivalent `tar cf ...' and `tar rf ...' commands to produce
280         different archives.
281
282         * tests/append02.at: New test case
283         * tests/Makefile.am, tests/testsuite.at: Add append02.at
284
285 2006-07-20  Paul Eggert  <eggert@cs.ucla.edu>
286
287         * bootstrap: Adjust to today's change to gnulib-tool by invoking
288         it with --assume-autoconf='latest-stable'.
289
290 2006-07-16  Paul Eggert  <eggert@cs.ucla.edu>
291
292         Adjust to recent gnulib changes.
293         * lib/.cvsignore: Remove atexit.c, exit.c, getndelim2.c, getndelim2.h,
294         pathmax.h, paxconvert.c, paxerror.h, xstrdup.c.
295         Add inttypes.h, mktime.c, wcwidth.h, xstrndup.c, xstrndup.h.
296         * src/create.c (start_header): Adjust to API change to mode_adjust.
297
298 2006-07-09  Sergey Poznyakoff  <gray@gnu.org.ua>
299
300         * THANKS: Add Ralf Wildenhues
301         * NEWS: Update
302
303 2006-07-09  Ralf Wildenhues   <Ralf.Wildenhues@gmx.de>
304
305         * doc/dumpdir.texi, doc/snapshot.texi, doc/sparse.texi,
306         doc/tar.texi: Fix some typos.
307
308 2006-07-06  Sergey Poznyakoff  <gray@gnu.org.ua>
309
310         tar --index-file=FILE --file=- sent the archive to FILE, and
311         the listing to stderr. Bug reported by Marcin Gryszkalis
312         <mg@fork.pl>
313
314         * src/buffer.c (_open_archive): Remove stdlis initialization
315         * src/tar.c (decode_options): Initialize stdlis
316         * tests/indexfile.at: New test case
317         * tests/testsuite.at: Include indexfile.at
318         * tests/Makefile.am (TESTSUITE_AT): Add indexfile.at
319
320 2006-07-05  Sergey Poznyakoff  <gray@gnu.org.ua>
321
322         * doc/Makefile.am (manual): Fix TEXINPUTS
323         * doc/rendition.texi (FIXME): Do not use deprecated @quote-args.
324         Do not use @allow-recursion. In its current form the macro is not
325         recursive.
326
327 2006-07-03  Sergey Poznyakoff  <gray@gnu.org.ua>
328
329         * bootstrap (update_po): Fix single translation update
330
331 2006-07-03  Sergey Poznyakoff  <gray@gnu.org.ua>
332
333         * configure.ac (AC_CHECK_FUNCS): Check for getdtablesize
334         * src/common.h (closeopen): New function
335         * src/misc.c (chdir_arg): Use x2nrealloc to reallocate wd.
336         (get_max_open_files,closeopen): New functions
337         (chdir_do): Do not use save_cwd if it was already used more than
338         max_open_files-4 times to avoid running off the file
339         descriptors.
340         * src/tar.c (main): Call closeopen
341         * doc/tar.texi: Update --directory description
342         * NEWS: Update
343
344 2006-06-26  Sergey Poznyakoff  <gray@gnu.org.ua>
345
346         * doc/tar.texi: Update. Add cross-references.
347         * doc/sparse.texi: Add cross-references.
348
349 2006-06-25  Sergey Poznyakoff  <gray@gnu.org.ua>
350
351         * scripts/xsparse.c: A sample utility to expand sparse files
352         extracted by third-party tars. It is not meant to be installed nor
353         to be included in the distribution. It is here, so that it can be
354         obtained either from CVS or from the tar web site.
355         * doc/Makefile.am (tar_TEXINFOS): Sorted
356         * doc/tar.texi (Other Tars): New node describing how to extract
357         GNU-specific member formats using third-party tars.
358         * src/common.h (sparse_file_p): Remove
359         * src/sparse.c: Likewise
360         * src/create.c: Use ST_IS_SPARSE instead of sparse_file_p (update
361         paxutils first)
362         * src/tar.c: --sparse-version turns on --sparse
363
364 2006-06-24  Sergey Poznyakoff  <gray@gnu.org.ua>
365
366         * src/buffer.c (print_total_stats): Add default case.
367         * src/common.h (name_init): New prototype.
368         (xheader_string_end): Return bool.
369         * src/extract.c (extract_volhdr): Add missing return
370         * src/incremen.c: Remove not used variables
371         * src/sparse.c (pax_dump_header_0): Return false if
372         xheader_string_end fails (for 0.1 formats).
373         (pax_dump_header): Return meaningful value
374         * src/transform.c (segm_count): Change type to size_t
375         * src/xheader.c (xhdr_tab.decoder): pass keyword as a second
376         argument. All callers changed.
377         (decode_record): Check for numeric overflow
378         (xheader_string_end): Return boolean value. Check for possible
379         numeric overflow
380
381 2006-06-23  Sergey Poznyakoff  <gray@gnu.org.ua>
382
383         * doc/sparse.texi: New file
384         * doc/Makefile.am (tar_TEXINFOS): Add sparse.texi
385         * doc/intern.texi (Sparse Formats): New node
386         * doc/tar.texi: Update master menu
387
388         * src/common.h (tar_sparse_major,tar_sparse_minor): New globals.
389         * src/sparse.c: Implement sparse format versioning. Implement new
390         version (1.0) of PAX sparse format.
391         (pax_sparse_member_p): Fix condition
392         (pax_dump_header): A dispatcher function
393         (pax_dump_header_0,pax_dump_header_1): New functions.
394         (pax_optab): Update
395         (oldgnu_dump_header): Minor fix: make sure
396         sparse_header.isextended is set before calling
397         set_next_block_after
398         * src/tar.c: New option --sparse-version
399         * src/tar.h (struct tar_stat_info.sparse_major,sparse_minor): New
400         members.
401         * src/xheader.c: Implement new keywords: GNU.sparse.name,
402         GNU.sparse.major, GNU.sparse.minor, GNU.sparse.realsize
403
404         * tests/spmpv00.at, tests/spmvp01.at, tests/spmvp10.at: New
405         testcases.
406
407         * tests/Makefile.am: Add spmvp00.at, spmpv01.at, spmpv10.at
408         * tests/shortrec.at: Explicitely give `-f -' to the tar invocation
409         * tests/sparsemvp.at: Rewritten as an include file.
410         (TAR_MVP_TEST): New macro
411         * tests/testsuite.at: Include sparsemvp.at, spmvp00.at,
412         spmvp01.at, spmvp10.at
413
414 2006-06-21  Sergey Poznyakoff  <gray@gnu.org.ua>
415
416         * doc/tar.texi (Overriding File Metadata): New node
417         Document --mtime option.
418         * src/common.h (set_mtime_option,mtime_option): New globals
419         * src/create.c (start_header): Override mtime if requested
420         * src/tar.c: Implement new option, --mtime, allowing to set
421         modification times for all archive members during creation.
422         (struct tar_args): textual_date_option replaced with a linked list
423         textual_date. All references updated.
424         (get_date_or_file,report_textual_dates): New functions.
425         * configure.ac: Raise version number to 1.15.92
426         * NEWS: Update
427
428 2006-06-20  Sergey Poznyakoff  <gray@gnu.org.ua>
429
430         * src/common.h (struct name.explicit): Remove
431         Use variable names in all declarations
432         (name_scan): Remove second argument
433         * src/delete.c: Remove second argument from calls to name_scan
434         * src/update.c: Likewise
435         * src/incremen.c (procdir): Use is_individual_file to check for
436         files explicitely specified in the command line. Fixes bug
437         reported by Dat Head on 19 Jun 2006 (descending into mountpoints
438         with --one-file-system in use)
439         * src/misc.c (maybe_backup_file): Second argument is bool
440         * src/names.c (name_next_elt): Call register_individual_file
441         (namelist_match): Remove third argument
442         (name_match): Change return type to bool
443         (name_scan): Remove second argument
444         * src/sparse.c (pax_dump_header): Store original sparse file name
445         in GNU.sparse.name variable. The name field in the ustar header
446         now contains generated name (%d/GNUSparseFile.%p/%f), so that
447         non-pax-aware tars won't extract the file under the original
448         filename.
449         * src/xheader.c (GNU.sparse.name): New variable for storing sparse
450         file name.
451
452 2006-06-13  Sergey Poznyakoff  <gray@gnu.org.ua>
453
454         * doc/Makefile.am (check-options): Expand macros before grepping
455         in $(info_TEXINFOS)
456         * doc/rendition.texi (FIXME) [!PROOF_FOOTNOTED]: Enclose in a
457         cartouche
458         * doc/tar.texi: Define op as codeindex. Use special macros to
459         populate it
460         Consequently prefer @dfn{long options} over @dfn{mnemonic
461         options}.
462         Document --unquote, --no-unquote
463         (Short Option Summary): Build a table of cross-references to the
464         corresponding long options.
465         (Using Multiple Tapes,Multi-Volume Archives): Rewritten
466
467         * doc/value.texi (xopindex,opsummary): New macros
468
469         * doc/Makefile.am (check-options): New goal
470         * doc/tar.texi: Update
471         * src/tar.c: Implement --overwrite-dir option (long ago
472         documented).
473
474 2006-06-12  Sergey Poznyakoff  <gray@gnu.org.ua>
475
476         * doc/tar.texi: Document better the --totals option
477         * NEWS: Update
478         * src/buffer.c (total_blocks_deleted): New variable
479         (set_start_time): Set volume_start_time and last_stat_time as well
480         (set_volume_start_time): New function
481         (compute_duration): Do not call set_start_time, update
482         last_stat_time instead. Use it in calculation instead of
483         start_time, which is now set only once, upon startup.
484         (print_total_written): Removed.
485         (print_total_stats): New function for printing byte/speed statistics.
486         (_open_archive): Detect attempts to update compressed archives.
487         (_gnu_flush_write): Always update prev_written.
488         (open_archive): Call set_volume_start_time.
489         * src/common.h (volume_start_time,last_stat_time): New globals
490         (print_total_written): Replaced with:
491         (print_total_stats): New function
492         * src/delete.c (records_skipped): Remove static qualifier, the
493         variable is used by print_total_stats in buffer.c
494         * src/extract.c (check_time): Use volume_start_time when checking
495         for timestamp plausability.
496         * src/tar.c: (options, parse_opt): Allow for optional argument to
497         the --totals option, which specifies a signal upon delivery of which
498         the statistics must be output.
499         (main): Call print_total_stats if total_option is set.
500
501 2006-06-11  Sergey Poznyakoff  <gray@gnu.org.ua>
502
503         * src/xheader.c (xheader_set_single_keyword): Fix typo.
504         (decode_time): Avoid using gotos.
505
506         * doc/mastermenu.el: New file
507         * doc/Makefile.am (master-menu): New goal
508         * doc/tar.texi: Update master menu
509
510 2006-06-10  Sergey Poznyakoff  <gray@gnu.org.ua>
511
512         * doc/tar.texi: Remove leftover include
513
514 2006-06-09  Sergey Poznyakoff  <gray@gnu.org.ua>
515
516         * doc/Makefile.am (tar_TEXINFOS): Add intern.texi
517         (EXTRA_DIST): Remove convtexi.pl, add texify.sed
518         * doc/intern.texi: New file
519         * doc/convtexi.pl: Remove
520         * doc/texify.sed: Auxiliary script to convert ../src/tar.h to
521         header.texi
522         * doc/rendition.texi: Fix typo
523         * doc/tar.texi: Update
524         * src/tar.h: Fix indentation, introduce end-of-format marker for
525         texify.sed
526
527         * THANKS: Add Jason Armistead
528         * doc/tar.texi: Update
529         * NEWS: Update
530         * src/buffer.c: Implement more flexible checkpoint style
531         * src/common.h (checkpoint_option): Change type to unsigned
532         (checkpoint_style): New variable.
533         * src/tar.c: --checkpoint takes an optional argument specifying
534         number of records between two successive checkpoints (proposed
535         by Jason Armistead on 2004-06-22).  Optional dot starting the
536         argument means "print dots instead of textual checkpoints".
537         (tar_help): New function
538         * src/transform.c: Minor fixes.
539
540 2006-06-08  Sergey Poznyakoff  <gray@gnu.org.ua>
541
542         * gnulib.modules: Add mkdtemp
543         * doc/dumpdir.texi: New file
544         * doc/Makefile.am (tar_TEXINFOS): Add dumpdir.texi
545         * doc/tar.texi: Document dumpdir format
546         * src/incremen.c (dumpdir_locate,obstack_code_rename):
547         (purge_directory): Re-implement renaming. Introduce
548         'X' control code.
549         (make_tmp_dir_name): Remove
550
551         * src/transform.c (set_transform_expr,_transform_name_to_obstack):
552         Implement NUMBER flag.
553         (add_char_segment): Fix length assignement
554
555         * doc/tar.texi: Update
556
557 2006-06-07  Sergey Poznyakoff  <gray@gnu.org.ua>
558
559         * src/transform.c (transform_name_fp): Run fun even if
560         _transform_name_to_obstack returns false.
561         (_transform_name_to_obstack,set_transform_expr): Implement GNU
562         extension case conversion operations.
563
564         * doc/tar.texi (transform): Document the option.
565
566 2006-06-02  Sergey Poznyakoff  <gray@gnu.org.ua>
567
568         * NEWS: Update
569         * src/common.h (set_transform_expr): New function
570         * tests/Makefile.am: Add incr04.at
571         * tests/testsuite.at: Likewise
572         * tests/incr04.at: New test case
573         * tests/long01.at: Fix typo in the comment
574         * tests/multiv04.at: Use genfile --files-from
575
576         (Above changes need new genfile.c from paxutils)
577
578         * TODO: Update
579         * NEWS: Update
580         * doc/tar.texi: Update
581         * src/transform.c: New file
582         * src/Makefile.am (tar_SOURCES): New module transform.c
583         * src/common.h (transform_name, transform_name_fp): New functions
584         (show_stored_names_option): Renamed to
585         show_transformed_names_option. All uses changed
586         * src/create.c (dump_file0): Transform file name
587         * src/extract.c (extract_archive): safer_name_suffix and
588         stripped_prefix_len are now called by decode_header
589         * src/list.c (print_header): Update displayable name selection.
590         * src/tar.c: New option --transform
591         New option --show-transformed-names generalizes
592         --show-stored-names. The latter is retained as an alias.
593
594 2006-05-31  Sergey Poznyakoff  <gray@gnu.org.ua>
595
596         * src/incremen.c (make_directory): Fix initialization of struct
597         directory.
598
599 2006-05-25  Sergey Poznyakoff  <gray@gnu.org.ua>
600
601         * doc/tar.texi: Document use of globbing patterns.
602         * src/tar.c (parse_opt): Add comment before --preserve case.
603
604 2006-05-24  Sergey Poznyakoff  <gray@gnu.org.ua>
605
606         * NEWS: Update
607         * doc/tar.texi: Update
608         * configure.ac (AM_INIT_AUTOMAKE): Use tar-ustar option. Raise
609         version requirement to 1.9
610         * src/common.h (struct name): Refactured
611         (warn_regex_usage): New variable.
612         (dump_file): First argument is const char*.
613         (name_init,name_add): Removed
614         (name_add_name,name_add_dir): New functions
615         (name_next): Return const char*.
616         * src/create.c: (dump_file,dump_file0): First argument is const
617         char*. All callers updated.
618         * src/names.c: Rewritten handling of member names in the command
619         line. Tar no longer attempts to guess globbing patterns, instead
620         it relies on --wildcard option.
621         (init_names): Removed.
622         (struct name_elt): New structure.
623         (name_array): Change type to struct name_elt. All references updated
624         (name_add_name,name_add_dir): New functions
625         (name_next_elt): New function
626         (name_next): Rewritten using name_next_elt.
627         (namelist_match): Rewritten pattern matching using
628         exclude_fnmatch.
629         (names_notfound): Warn if globbing patterns were used without
630         --wildcards option
631         * src/tar.c (options): Move globbing-related options into a
632         separate group. Set -l as an alias to --check-links, as required
633         by UNIX98
634         (struct tar_args): New fields
635         wildcards,matching_flags,include_anchored
636         (MAKE_EXCL_OPTIONS,MAKE_INCL_OPTIONS): New macros
637         (parse_opt): Use x2nrealloc to grow archive_name_array.
638         Use MAKE_EXCL_OPTIONS,MAKE_INCL_OPTIONS to create appropriate
639         fnmatch options, and name_add_name,name_add_dir to handle member
640         name and -C arguments.
641         (decode_options): Likewise
642         (main): Remove call to init_names.
643
644         * tests/append.at, tests/append01.at, tests/extrac01.at,
645         tests/options.at, tests/options02.at, tests/same-order01.at,
646         tests/same-order02.at: Make AT_SETUP more readable.
647
648 2006-05-23  Sergey Poznyakoff  <gray@gnu.org.ua>
649
650         * src/buffer.c (change_tape_menu): Fix typo (uninitialized
651         variable) introduced yesterday.
652
653 2006-05-22  Sergey Poznyakoff  <gray@gnu.org.ua>
654
655         * doc/tar.texi: Use @var{file_name} instead of @var{file name}
656         * src/buffer.c (change_tape_menu): Break the loop after obtaining
657         new archive name. Check for empty input line.
658
659 2006-05-15  Sergey Poznyakoff  <gray@gnu.org.ua>
660
661         * tests/atlocal.in (XFAILFILE): New variable
662         * tests/version.at: Create $XFAILFILE on failure
663         * tests/testsuite.at (AT_TAR_CHECK): Declare expected failure if
664         $XFAILFILE exists.
665
666 2006-05-13  Sergey Poznyakoff  <gray@gnu.org.ua>
667
668         * THANKS: Update
669         * src/buffer.c (read_header0): Use read_header_primitive to avoid
670         clubbering current_tar_info. All callers updated.
671         * src/common.h (read_header_primitive): New function
672         * src/extract.c (extract_volhdr): New function
673         (prepare_to_extract): Use extract_volhdr as extractor for volume
674         names.
675         * src/list.c (read_header_primitive): New function
676         (read_header): Front end for read_header_primitive
677         * tests/chtype.at: New file
678         * tests/volsize.at: New file
679         * tests/Makefile.am (TESTSUITE_AT): Add chtype.at, volsize.at
680         (check-full): New target.
681         * tests/atlocal.in (TEST_DATA_URL,STAR_DATA_URL)
682         (STAR_TESTSCRIPTS): Provide default values.
683         (tarball_prereq): New function
684         * tests/testsuite.at (AT_TARBALL_PREREQ): New defun
685         (AT_STAR_PREREQ): Rewrite using tarball_prereq
686         Include chtype.at and volsize.at
687         * tests/volume.at: Add keywords.
688
689         * tests/star/gtarfail.at, tests/star/gtarfail2.at,
690         tests/star/multi-fail.at, tests/star/pax-big-10g.at,
691         tests/star/ustar-big-2g.at, tests/star/ustar-big-8g.at
692         (AT_STAR_PREREQ): Provide md5 sum.
693
694         * lib/.cvsignore: Update
695
696 2006-05-08  Sergey Poznyakoff  <gray@gnu.org.ua>
697
698         * tests/testsuite.at (AT_SORT_PREREQ, AT_UNPRIVILEGED_PREREQ): New
699         defines
700
701         * tests/extrac04.at, tests/incr03.at, tests/listed02.at,
702         tests/pipe.at, tests/rename01.at, tests/rename02.at,
703         tests/rename03.at, tests/same-order01.at: Call
704         AT_SORT_PREREQ. Remove fd 2 redirection after calls to sort
705         * ignfail.at: Call AT_UNPRIVILEGED_PREREQ
706
707 2006-05-08  Sergey Poznyakoff  <gray@gnu.org.ua>
708
709         Listed incremental backups: keep more information about
710         directories. Handle renamed directories more effectively
711         (initial implementation, more updates to follow).
712         Source tree before this point is tagged
713         alpha_1_15_90_incremental_1.
714
715         * NEWS: Update
716         * configure.ac: Raise version number to 1.15.91
717         * src/common.h (rename_directory,append_incremental_renames): New
718         functions.
719         * src/extract.c (rename_directory): New function
720         * src/incremen.c (struct directory.contents, flags): New members
721         (nfs,found,new): Remove. Replaced by appropriate bitmask values in
722         `flags' field. All uses updated.
723         (directory_meta_table): New table.
724         (hash_directory): Rename to hash_directory_name
725         (compare_directories): Rename to compare_directory_names
726         (hash_directory_meta,compare_directory_meta,find_directory_meta):
727         New functions
728         (compare_dirents): Removed
729         (note_directory): Get 7th argument: directory contents.
730         All callers updated
731         (dumpdir_locate,makedumpdir): New functions
732         (scan_directory): Rewritten. Use makedumpdir to create a sorted
733         dumpdir array. This makes the obstack argument unnecessary. Besides,
734         ALL_CHILDREN flag is set only for new directories.
735         (procdir): Change return type to struct directory. Return
736         immediately if the directory was already initialized. Discover
737         directory renames using directory_meta_table.
738         (append_incremental_renames): New function.
739         (read_directory_file, write_directory_file): Use new snapshot file
740         format.
741         * src/names.c (collect_and_sort_names): Update dir_contents of the
742         first non-fake name entry when in listed incremental mode.
743
744         * tests/incr03.at: New testcase
745         * tests/rename01.at: New testcase
746         * tests/rename02.at: New testcase
747         * tests/rename03.at: New testcase
748         * tests/Makefile.am: Add
749         incr03.at,rename01.at,rename02.at,rename03.at
750         * tests/testsuite.at: Likewise.
751         * tests/listed02.at: Update for the new behavior
752         * tests/multiv04.at (AT_KEYWORDS): Add missing incremental kw.
753
754 2006-05-02  Sergey Poznyakoff  <gray@gnu.org.ua>
755
756         * src/buffer.c (try_new_volume): Attempt to continue if the name
757         is apparently truncated in a GNU format volume.
758
759         * tests/comprec.at, tests/delete01.at, tests/delete02.at,
760         tests/delete04.at, tests/delete05.at, tests/extrac05.at,
761         tests/listed01.at, tests/multiv01.at, tests/multiv02.at,
762         tests/pipe.at, tests/same-order01.at, tests/same-order02.at,
763         tests/sparse01.at, tests/sparse03.at: Always use genfile --file,
764         this enables extra error checking.
765
766         * tests/multiv03.at: Attempt to extract a member with truncated
767         file name from the archive.
768
769         * src/buffer.c (_open_archive): Remove unnecessary argument to
770         check_compressed_archive.
771
772 2006-04-25  Sergey Poznyakoff  <gray@gnu.org.ua>
773
774         * tests/sparse01.at, tests/sparse02.at, tests/sparse03.at,
775         tests/sparsemv.at, tests/sparsemvp.at: Skip the test if the file
776         system does not support sparse files.
777         * doc/tar.texi (@copying): Remove the reference to not existing
778         invariant section.
779
780 2006-04-11  Sergey Poznyakoff  <gray@gnu.org.ua>
781
782         * src/extract.c (extract_dir): Fix toggling existing directory
783         permissions (Debian bug #361077). Use parts of patch provided by
784         Ian Jackson <iwj@ubuntu.com>.
785         * src/compare.c: Minor changes
786         * src/incremen.c (directory.new): New member
787         (note_directory,find_directory: Use make_directory to create
788         struct directory entries
789         (procdir): Avoid duplicating  directories in the incremental
790         backup map.
791         * tests/Makefile.am (TESTSUITE_AT): Add extrac06.at
792         * tests/testsuite.at: Include extrac06.at
793
794 2006-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de> (trivial change)
795
796         * tests/atlocal.in (PATH): Add build-aux from the source tree,
797         not the build tree.
798
799 2006-03-13  Sergey Poznyakoff  <gray@gnu.org.ua>
800
801         * THANKS: Add Benno Schulenberg
802
803 2006-03-13  Jim Meyering <jim@meyering.net>
804
805         * tests/listed02.at:  Sort the two lines of stderr from the
806         first `tar -v --listed-incremental'.  They would come out
807         reversed and provoke a test failure on a tmpfs
808         file system.
809
810 2006-03-13  Benno Schulenberg <benno@nietvergeten.nl>
811
812         * doc/tar.texi: Minor fixes.
813         * src/tar.c (options): Consistently begin help messages with a
814         lowercase letter.
815
816 2006-03-12  Sergey Poznyakoff  <gray@gnu.org.ua>
817
818         * tests/Makefile.am (AM_CPPFLAGS): Define LOCALEDIR
819
820 2006-03-07  Paul Eggert  <eggert@cs.ucla.edu>
821
822         * src/buffer.c (record_buffer_aligned): New var.
823         (init_buffer): Use it to ensure that the buffer is aligned.
824         This doesn't result in any measurable performance improvement
825         on my host (Debian GNU/Linux 3.1 stable, with default block size),
826         but I assume it does help on some hosts.
827
828         * lib/.cvsignore: Sort.
829
830 2006-03-04  Sergey Poznyakoff  <gray@gnu.org.ua>
831
832         * tests/shortrec.at: Use -f - to read from stdin.
833
834 2006-02-21  Sergey Poznyakoff  <gray@gnu.org.ua>
835
836         * doc/tar.texi: Fix typo: --to-command instead of --to-program
837
838 2006-02-20  Paul Eggert  <eggert@cs.ucla.edu>
839
840         * tests/multiv04.at (split directory members in a MV archive):
841         Don't use %X in an awk printf format; this doesn't work with
842         Solaris 10 /usr/bin/awk.  Use %x instead.
843
844 2006-02-20  Sergey Poznyakoff  <gray@gnu.org.ua>
845
846         * src/create.c (split_long_name): Fix maximum length estimation.
847         Patch by Jim Lowe.
848         * tests/Makefile.am (lustar01.at,lustar02.at,lustar03.at): New
849         tests.
850         * tests/atlocal.in: Add build-aux to the PATH
851         * tests/long01.at: Remove mkhier, use AT_TAR_MKHIER instead
852         * tests/longv7.at: Reword test title
853         * tests/lustar01.at: New test
854         * tests/lustar02.at: New test
855         * tests/lustar03.at: New test
856         * tests/testsuite.at (AT_TAR_MKHIER): New macro
857         (lustar01.at,lustar02.at,lustar03.at): New tests.
858
859 2006-02-20  Paul Eggert  <eggert@cs.ucla.edu>
860
861         * bootstrap: Don't claim lib/Makefile.am is generated automatically
862         from itself.
863
864         Avoid installation glitches on Solaris 8 with Sun C 5.4.
865         * lib/.cvsignore: Add system-ioctl.h.
866         * lib/Makefile.tmpl (noinst_HEADERS): Add system-ioctl.h.
867         * src/buffer.c: Include system-ioctl.h.
868         * src/compare.c: Likewise.
869         * src/delete.c: Likewise.
870         * src/system.c: Include <getline.h>, <setenv.h>.
871         * src/tar.c: Include <getline.h>.
872
873 2006-02-19  Sergey Poznyakoff  <gray@gnu.org.ua>
874
875         * src/buffer.c (add_chunk_header): Free st.orig_file_name after
876         calling finish_header().
877         (new_volume): Prompt the user for archive name if unable to open
878         next archive.
879
880         * src/create.c (dump_file0): Restore file_count_links,
881         accidentally removed on 2005-11-29.
882         * configure.ac: Raise version number to 1.15.90
883         * NEWS: Likewise.
884
885 2006-02-08  Sergey Poznyakoff  <gray@gnu.org.ua>
886
887         * src/tar.c (tar_set_quoting_style): Provide second argument to
888         the format spec: program_invocation_short_name. Reported by Jim
889         Meyering.
890
891 2006-02-07  Paul Eggert  <eggert@cs.ucla.edu>
892
893         * gnulib.modules: Add closeout, exitfial.
894         * lib/.cvsignore: Add __fpending.c, __fpending.h, closeout.c,
895         closeout.h.
896         * src/buffer.c: Incluse closeout.h.
897         (_open_archive): Use freopen rather than fopen, so
898         that stdlis is always either stdout or stderr.  Use
899         close_stdout_set_file_name to report its name.
900         * src/tar.c: Include closeout.h and exitfail.h.
901         (parse_opt, usage): Call close_stdout as appropriate, to check for
902         write errors.
903         (decode_options): Exit with status TAREXIT_FAILURE, not 1.
904         (main): Set exit_failure, to exit with proper status on memory
905         allocation failure and the like.
906         Use close_stdout rather than rolling our own test.
907
908         * NEWS: --version now outputs copyright etc., to conform to the
909         GNU coding standards.  Remove --license.
910         * gnulib.modules: Add version-etc-fsf.
911         * doc/tar.texi: Document the change.
912         * lib/.cvsignore: Add version-etc-fsf.c, version-etc.c, version-etc.h.
913         * scripts/Makefile.am (SED_CMD): Update PAKCAGE_NAME, not PACKAGE.
914         * scripts/backup.in: Remove --license.  Change --version to conform
915         to GCS.
916         * scripts/restore.in: Likewise.
917         * scripts/backup.sh.in (license): Output briefer license in the
918         style of coreutils, for consistency with other changes.
919         * src/tar.c: Include <version-etc.h>.
920         (LICENSE_OPTION): Remove.
921         (options): Remove --license.
922         (license): Remove.
923         (parse_opt): Use version_etc instead of rolling it ourselves.
924         Remove --license.
925         * tests/version.at (tar --version): Check only the first line of
926         output.
927
928         * ChangeLog, NEWS, src/common.h, src/extract.c, src/incremen.c:
929         * src/list.c, src/names.c, src/tar.h, src/xheader.c:
930         Update copyright year to 2006.
931
932 2006-02-07  Jim Meyering  <jim@meyering.net>
933
934         * src/xheader.c (sparse_map_decoder): Fix misleading diagnostic.
935
936 2006-01-31  Sergey Poznyakoff  <gray@gnu.org.ua>
937
938         * src/common.h (get_gnu_dumpdir): Remove prototype
939         (is_dumpdir): New function
940         * src/extract.c (prepare_to_extract): Use is_dumpdir member to
941         check for dumpdirs.
942         * src/incremen.c (get_gnu_dumpdir): Static
943         (is_dumpdir): New function
944         (purge_directory): Use is_dumpdir
945         * src/list.c (list_archive): Use is_dumpdir
946         Do not wrap skip_member in mv_begin/mv_end, the function itself
947         takes care of it.
948         (decode_header): Set stat_info->is_dumpdir
949         (skip_member): Do nothing if skipped is true
950         * src/tar.h (struct tar_stat_info): New members is_dumpdir and skipped.
951
952 2006-01-22  Sergey Poznyakoff  <gray@gnu.org.ua>
953
954         * src/tar.c (decode_options): Refuse using --delete with
955         compression options.
956
957 2006-01-18  Sergey Poznyakoff  <gray@gnu.org.ua>
958
959         * NEWS: Updated.
960         * configure.ac (DEFAULT_QUOTING_STYLE): New configuration variable
961         * doc/tar.texi: Initial documentation for --quoting-style,
962         --quote-chars and --no-quote-chars option.
963         * src/tar.c: Implement new options --quoting-style, --quote-chars
964         and --no-quote-chars.
965
966 2006-01-09  Paul Eggert  <eggert@cs.ucla.edu>
967
968         * bootstrap: Default to pserver, and switch to cvs.sv.gnu.org,
969         to accommodate recent changes to the GNU CVS server.
970         * lib/.cvsignore: Add argp-pin.c, mkdirat.c, openat-priv.h.
971
972 2005-12-14  Sergey Poznyakoff  <gray@gnu.org.ua>
973
974         * src/names.c (name_scan): Take an additional argument requesting
975         exact matching.
976         * src/common.h (name_scan): Change prototype.
977         * src/delete.c, src/incremen.c, src/update.c: Update invocations
978         of name_scan.
979
980 2005-12-13  Sergey Poznyakoff  <gray@gnu.org.ua>
981
982         * src/common.h (struct name): New member `explicit'. Remove unused
983         member `isdir'.
984         * src/incremen.c (procdir): If name_scan() returns something,
985         check if it was explicitely given in the command line
986         * src/names.c (addname,add_hierarchy_to_namelist): Initialize
987         explicit member appropriately.
988
989         * src/incremen.c (procdir): If --one-file-system is given and a
990         directory is found to be on another device, *and* this directory
991         is explicitely given in the command line, then do not omit it.
992
993 2005-12-11  Sergey Poznyakoff  <gray@gnu.org.ua>
994
995         * NEWS: Update
996         * doc/tar.texi: Document --delay-directory-restore option.
997         (Configuring Help Summary): Document usage of ARGP_HELP_FMT
998         variable to customize help output.
999         * src/common.h (delay_directory_restore_option): New global.
1000         * src/extract.c (directories_first): Replaced by
1001         delay_directory_restore_option. All uses changed.
1002         * src/tar.c (options,parse_opt): New options
1003         --delay-directory-restore and --no-delay-directory-restore
1004
1005 2005-12-09  Sergey Poznyakoff  <gray@gnu.org.ua>
1006
1007         * src/buffer.c (open_archive): Add default case to shut up gcc.
1008         * src/common.h (set_file_atime): Add prototype.
1009         * src/create.c (to_chars_subst): Remove unused variable
1010         Make sure useful result code is returned.
1011         * src/incremen.c (read_directory_file): Fix format string
1012         Thanks Eric Blake for reporting.
1013
1014 2005-12-08  Sergey Poznyakoff  <gray@gnu.org.ua>
1015
1016         * doc/tar.texi (Current status): Renamed to 'Changes' and moved to
1017         appendices.
1018         (Large or Negative Values): Rewritten
1019         * src/common.h (gid_to_chars, major_to_chars, minor_to_chars)
1020         (mode_to_chars, off_to_chars, size_to_chars, time_to_chars)
1021         (uid_to_chars, uintmax_to_chars): Return bool
1022         * src/create.c (gid_to_chars, major_to_chars, minor_to_chars)
1023         (mode_to_chars, off_to_chars, size_to_chars, time_to_chars)
1024         (uid_to_chars, uintmax_to_chars): Return bool
1025         (to_chars): Return bool
1026         (start_header): Check return values of convertion routines. Fail
1027         if unable to store data in the header.
1028
1029 2005-12-07  Sergey Poznyakoff  <gray@gnu.org.ua>
1030
1031         * doc/tar.texi: Following the discussion with Karl Berry,
1032         discontinue using @value{} substitutions for Texinfo commands.
1033         Properly index all long options. Print a
1034         separate long option index.
1035         * doc/value.texi: Remove @set's
1036
1037         * doc/tar.texi: Update --info-script documentation
1038         Resolve some more FIXMEs.
1039         * scripts/dump-remind.in: Use TAR_VOLUME instead of reading volno
1040         file.
1041         * src/buffer.c (new_volume): Update invocation
1042         (change_tape_menu): New function. Disable '!' command if given
1043         --restrict option.
1044         * src/common.h (sys_exec_info_script): Update declaration
1045         (restrict_option): New global
1046         * src/system.c (sys_exec_info_script): The script can supply new
1047         archive name to use by writing it to file descriptor 3.
1048         * src/tar.c (options): Add --restrict option. Use macros for
1049         option grouping.
1050         (license): Print full list of copyright years
1051         * NEWS: Update
1052
1053 2005-12-06  Eric Blake  <ebb9@byu.net> (trivial changes)
1054
1055         * configure.ac (DENSITY_LETTER): Fix m4 overquoting.
1056         * .cvsignore: Ignore .bootstrap.
1057
1058 2005-12-06  Sergey Poznyakoff  <gray@gnu.org.ua>
1059
1060         * doc/tar.texi: Document --to-command and --info-script
1061         options. Add missing xrefs.
1062         * src/buffer.c (new_volume): Use sys_exec_info_script() instead of
1063         system().
1064         * src/common.h (archive_format_string,subcommand_string)
1065         (sys_exec_info_script): New prototypes.
1066         * src/system.c (sys_exec_info_script): New function.
1067         * src/tar.c (archive_format_string): Remove static qualifier.
1068         (subcommand_string): New function.
1069
1070 2005-12-01  Sergey Poznyakoff  <gray@gnu.org.ua>
1071
1072         * src/extract.c: Fix restoring of directory timestamps from
1073         incremental archives.
1074         (directories_first): New variable.
1075         (prepare_to_extract): Set directories_first
1076         (extract_archive): Call apply_nonancestor_delayed_set_stat() only
1077         if not extracting from an incremental archive
1078         (extract_dir): Obtain root_device here, to make sure it works
1079         correctly with -C.
1080
1081         * src/incremen.c (purge_directory): Skip the member and return if
1082         the archive is not in incremental format.
1083         * tests/incr02.at: New testcase
1084         * tests/Makefile.am: Add incr02.at
1085         * tests/testsuite.at: Likewise
1086
1087         * THANKS: Add Guerkan Karaman.
1088         * NEWS: Update
1089
1090 2005-11-30  Paul Eggert  <eggert@cs.ucla.edu>
1091
1092         * doc/tar.texi (Option Summary): Rewrite the
1093         --atime-preserve=system description in response to Ian Turner's
1094         proposed patch.
1095
1096 2005-11-30  Ian Turner  <ian@zmanda.com>
1097
1098         * doc/tar.texi (Extracting Specific Files): Remove obsolescent
1099         FIXME.
1100
1101 2005-11-29  Paul Eggert  <eggert@cs.ucla.edu>
1102
1103         * NEWS: New option --atime-preserve=system, which uses O_NOATIME.
1104         * THANKS: Add Ian Turner.
1105
1106         * configure.ac: Prefer AC_CHECK_HEADERS_ONCE to AC_CHECK_HEADERS.
1107         Check for stropts.h and sys/filio.h too, for _FIOSATIME.
1108         * doc/tar.texi: Change "modification time" to "data modification
1109         time", "change time" to "status change time", and "filesystem" to
1110         "file system", so that we use terminology consistent with POSIX.
1111         Use American spacing rather than French for sentence ends.
1112         "non-dependable" -> "undependable".
1113         (Option Summary, Attributes): Explain better the pitfalls of the
1114         --atime-preserve option, and suggest read-only mounts,loopback
1115         mounts, and noatime mounts for older systems.
1116         * doc/value.texi (op-atime-preserve-system): Renamed from
1117         op-atime-preserver-system to fix a misspelling.
1118         * src/common.h (enum atime_preserve): Use lower case for enum values.
1119         * src/compare.c: Don't include utimens.h; no longer needed.
1120         (diff_file): Use set_file_atime rather than utimens; avoid closing
1121         diff_handle until after this, so that we can set the file time stamp
1122         via the file descriptor rather than via its name.
1123         * src/create.c: Don't include utimens.h; no longer needed.
1124         (dump_regular_finish): Remove.  All callers now do its work inline.
1125         (dump_dir): New arg FD.  All callers changed.
1126         Use fdsavedir rather than savedir.
1127         (unknown_file_error): Arg is a const pointer now.
1128         (dump_file0): 2nd arg is a const pointer now.
1129         Treat directories more like files, with respect to --atime-preserve.
1130         For example, also warn if a directory changes while we are dumping it.
1131         Prefer file descriptors to file names when retrieving/setting file
1132         attributes; this saves path-resolution time and allows us to avoid
1133         changing mtime/ctime on Solaris when restoring atime as root.
1134         Use O_DIRECTORY when opening directories, to avoid some race conditions.
1135         Do not reset atime if mtime has changed.  Report an error if
1136         we cannot reset atime.
1137
1138         * lib/.cvsignore: Add malloc.h, regcomp.c, regex.c, regex.h,
1139         regex_internal.c, regex_internal.h, regexc.c; used by rpmatch.
1140
1141 2005-11-29  Ian Turner  <ian@zmanda.com>
1142
1143         First cut at adding support for --atime-preserve=system.
1144         * doc/tar.texi (Option Summary): First cut at documenting it.
1145         All other uses of --atime-preserve changed to --atime-preserve=replace.
1146         * doc/value.texi (op-atime-preserve-replace, op-atime-preserver-system):
1147         New.
1148         (op-atime-preserve): Mention METHOD.
1149         * src/common.h (atime_preserve): New enum.
1150         (atime_preserve_option): Now of the enum type rather than bool.
1151         All uses changed.
1152         * src/compare.c (diff_file): Read with O_NOATIME if asked for.
1153         * src/create.c (dump_file0): Read regular and CTG files with O_NOATIME
1154         if asked for.
1155         * src/tar.c (usage): Mention new usage.
1156         (parse_opt): Parse new usage.
1157
1158 2005-11-29  Paul Eggert  <eggert@cs.ucla.edu>
1159
1160         * THANKS: Convert back to UTF-8, sort (using LC_ALL=C on Debian
1161         stable), and consistently use tabs rather than spaces.
1162
1163 2005-11-27  Sergey Poznyakoff  <gray@gnu.org.ua>
1164
1165         * src/xheader.c: Remove parts of code prematurely introduced
1166         yesterday. Thanks Eric Blake.
1167
1168 2005-11-26  Sergey Poznyakoff  <gray@gnu.org.ua>
1169
1170         * src/xheader.c (xheader_format_name): Fix memory leak.
1171
1172 2005-11-11  Sergey Poznyakoff  <gray@gnu.org.ua>
1173
1174         * gnulib.modules: Add rpmatch
1175         * lib/stdopen.h, lib/stdopen.c: New file. Imported from coreutils.
1176         * lib/Makefile.tmpl: Add stdopen.h, stdopen.c
1177         * po/POTFILES.in: Add rpmatch.c
1178         * src/tar.c (confirm): Rewritten using rpmatch.
1179         (decode_options): Minor optimizations
1180         (main): Call stdopen() to ensure the first three descriptors are
1181         open.
1182
1183         * tests/multiv01.at, tests/multiv02.at, tests/multiv03.at,
1184         tests/multiv04.at, tests/sparsemv.at, tests/sparsemvp.at,
1185         tests/star/multi-fail.at: Close stdin so that if something fails
1186         causing tar to ask for the next volume, it won't hang the
1187         testsuite.
1188
1189         * src/buffer.c (flush_write,flush_read): Change data type.
1190         (flush_archive): Compute actual buffer fill level before calling
1191         low level function.
1192         (close_archive): Call flush_archive again if the first call
1193         resulted in partially filled buffer.
1194         (try_new_volume): Rewritten handling of initial headers.
1195         (add_chunk_header): New function. Write an additional header
1196         before the continuation chunk. The purpose of the header is to
1197         allow third-party tars to extract the member.
1198         (simple_flush_write): Take an argument.
1199         (_gnu_flush_write): Correctly handle partially filled buffers.
1200         * src/common.h (flush_read,flush_write): Functions, again.
1201         (write_extended): Changed declaration
1202         (xheader_format_name): New declaration
1203         * src/create.c (write_extended): Change type and meaning of
1204         the first argument. All callers updated
1205         * src/xheader.c (xheader_format_name): Remove static
1206         qualifier. Change last argument.
1207         Correct buffer size calculation (allocated too much space).
1208         (xheader_write): Increase global_header_count here ...
1209         (xheader_write_global): ... instead of here
1210
1211         * tests/testsuite.at (AT_TAR_CHECK): Define TEST_TAR_FORMAT
1212         * tests/multiv01.at: Update
1213         * tests/multiv02.at: Update
1214         * tests/multiv03.at: Update
1215         * tests/sparsemvp.at: Update
1216         * tests/star/multi-fail.at: Update
1217
1218         * scripts/tarcat: Handle archives in pax format. Improve handling
1219         of traditional archives.
1220         * doc/tar.texi (Tarcat): New node
1221
1222 2005-11-10  Sergey Poznyakoff  <gray@gnu.org.ua>
1223
1224         Fix splitting of sparse files between the volumes.
1225
1226         * src/buffer.c (try_new_volume): Bugfix. Always check
1227         continued_file_name. If it is absent, the volume is out
1228         of sync.
1229         (add_multi_volume_header): Create GNU.volume.filename keyword in
1230         the extended header.
1231         * src/sparse.c (sparse_dump_region): Call mv_size_left.
1232         (sparse_dump_file): Enclose the loop in mv_begin/mv_end.
1233         * src/system.c: Do not pad compressed output if it goes to
1234         stdout.
1235         * src/xheader.c (xhdr_tab): New keyword GNU.volume.filename.
1236
1237         * tests/sparsemv.at: New testcase
1238         * tests/sparsemvp.at: New testcase
1239         * tests/Makefile.am: Add sparsemv.at and sparsemvp.at.
1240         * tests/testsuite.at: Likewise.
1241
1242 2005-11-09  Sergey Poznyakoff  <gray@gnu.org.ua>
1243
1244         * src/buffer.c: Rewritten in a more modular fashion to provide
1245         GNU extensions (multi-volume archives and archive labels) in
1246         pax format.
1247         NOTICE, that some of the aspects (e.g. splitting the archive
1248         on the extended header boundary) are still not solved, others
1249         (splitting a sparse file between the volume) require additional
1250         testing. Wait for the next commit.
1251
1252         (volume_label,continued_file_name,continued_file_size)
1253         (continued_file_offset): New globals.
1254         (save_name,save_totsize,save_sizeleft): Make static
1255         (mv_begin,mv_end,mv_total_size,mv_size_left): New functions
1256         (open_archive,flush_write,flush_read): Rewritten
1257
1258         * src/common.h (save_name,save_sizeleft,save_totsize): Remove
1259         globals.
1260         (volume_label,continued_file_name,continued_file_size): New
1261         variables.
1262         (flush_read,flush_write): Pointers to functions
1263         (mv_begin,mv_end,mv_total_size,mv_size_left): New functions
1264         (write_extended): New function.
1265
1266         * src/compare.c, src/create.c, src/extract.c, src/incremen.c,
1267         src/list.c: Use mv_.* functions uniformly instead of fiddling
1268         with the global variables.
1269         * src/sparse.c: Use mv_.* functions where necessary.
1270         * src/tar.c (decode_options): Allow to use --multi-volume and
1271         --label with pax archives.
1272         * src/xheader.c (xhdr_tab): Support for new GNU keywords.
1273
1274         * tests/delete01.at, tests/delete02.at, tests/delete03.at,
1275         tests/delete04.at, tests/delete05.at, tests/extrac01.at,
1276         tests/extrac02.at, tests/extrac03.at, tests/extrac04.at,
1277         tests/extrac05.at, tests/incr01.at, tests/incremental.at,
1278         tests/listed01.at, tests/listed02.at, tests/long01.at,
1279         tests/longv7.at, tests/multiv01.at, tests/multiv02.at,
1280         tests/multiv03.at, tests/multiv04.at, tests/options.at,
1281         tests/options02.at, tests/same-order01.at, tests/same-order02.at,
1282         tests/sparse01.at, tests/sparse02.at, tests/sparse03.at,
1283         tests/star/multi-fail.at (AT_KEYWORDS): Improve to allow execution
1284         of related tests in groups.
1285
1286         * doc/tar.texi: Update
1287
1288 2005-11-07  Paul Eggert  <eggert@cs.ucla.edu>
1289
1290         * src/xheader.c (struct xhdr_tab.coder): Last arg is void const *,
1291         not void *, to avoid create.c warning from GCC "passing argument 3
1292         of 'xheader_store' discards qualifiers from pointer target type".
1293         (dummy_coder, atime_coder, gid_coder, gname_coder, linkpath_coder):
1294         (ctime_coder, mtime_coder, path_coder, size_coder, uid_coder):
1295         (uname_coder, sparse_size_coder, sparse_numblocks_coder):
1296         (sparse_offset_coder, sparse_numbytes_coder, dumpdir_coder):
1297         (xheader_store): Likewise.
1298         * src/common.h (xheader_store): Likewise.
1299
1300 2005-11-07  Sergey Poznyakoff  <gray@gnu.org.ua>
1301        and  Paul Eggert  <eggert@cs.ucla.edu>
1302
1303         * src/tar.c (NS_PRECISION_FORMAT_MASK): New macro.
1304         (tar_timespec_cmp): New function. Wrapper over
1305         timespec_cmp using the timespec precision provided by the
1306         current archive format.
1307         * src/common.h (tar_timespec_cmp): New declaration.
1308         * src/compare.c (diff_file): Use tar_timespec_cmp.
1309         * src/extract.c (file_newer_p): Likewise.
1310         * src/update.c (update_archive): Likewise.
1311         * tests/truncate.at: Reverted changes
1312         * tests/update.at: Reverted changes
1313
1314 2005-11-07  Sergey Poznyakoff  <gray@gnu.org.ua>
1315
1316         Support for incremental formats in pax archives.
1317         Fixed POSIX compatibility of `sparse' extended header keywords.
1318
1319         * src/common.h (dumpdir_size,get_gnu_dumpdir)
1320         (xheader_string_begin,xheader_string_add)
1321         (xheader_string_end): New functions.
1322         * src/create.c (dump_dir0): Handle incremental backups in pax
1323         archives.
1324         * src/incremen.c (dumpdir_size, get_gnu_dumpdir): New functions.
1325         (purge_directory): Use stat_info.dumpdir instead of getting its
1326         value explicitely.
1327         * src/list.c (list_archive): Handle incremental backups in pax
1328         format.
1329         (decode_header): Initialize stat_info.dumpdir
1330         * src/sparse.c (sparse_diff_file): Bugfix: set seekable.
1331         (pax_dump_header): Store sparse map in GNU.sparse.map. If this
1332         variable has been explicitely deleted, use GNU.sparse.offset/
1333         GNU.sparse.numbytes variables.
1334         * src/tar.c (decode_options): Incremental options are allowed with
1335         --format=pax
1336         (tar_stat_destroy): Free dumpdir
1337         * src/tar.h (struct tar_stat_info.dumpdir): New member.
1338         * src/xheader.c (xheader_keyword_deleted_p): Remove static
1339         qualifier.
1340         (struct xhdr_tab.decoder): Change prototype. POSIX allows string
1341         values to contain embedded nulls, so take an extra argument
1342         specifying the length of the string.
1343         (decx,decg,dummy_decoder,atime_decoder,gid_decoder)
1344         (gname_decoder,linkpath_decoder,ctime_decoder,mtime_decoder)
1345         (path_decoder,size_decoder,uid_decoder,uname_decoder)
1346         (sparse_size_decoder,sparse_numblocks_decoder)
1347         (sparse_offset_decoder,sparse_numbytes_decoder): Likewise.
1348         (decode_record): Pass value length to the handler
1349         (run_override_list): Pass value length to the decoder
1350         (xheader_print_n): New function
1351         (xheader_print): Rewritten using xheader_print_n
1352         (xheader_finish): Do not rely om strlen to compute the length of
1353         the collected string: it can contain embedded nulls
1354         (xheader_string_begin,xheader_string_add,xheader_string_end): New
1355         functions.
1356         (sparse_map_decoder,dumpdir_coder,dumpdir_decoder): New
1357         functions. Handle GNU.sparse.map and GNU.dumpdir variables.
1358         (xhdr_tab): Add new variables.
1359
1360         * tests/incr01.at: Test gnu, oldgnu, and posix formats
1361         * tests/incremental.at: Likewise
1362
1363 2005-11-06  Paul Eggert  <eggert@cs.ucla.edu>
1364
1365         * NEWS: Minor language and white space fixes.
1366
1367         * tests/truncate.at: Create files whose time stamps must fall on
1368         1-second boundaries.  This prevents tests from failing on hosts
1369         like Solaris 8 that have nanosecond-resolution file time stamps.
1370         * tests/update.at: Likewise.
1371
1372         * src/xheader.c (strtoimax, strtoumax): Remove decls; now done
1373         in system.h.
1374
1375 2005-11-06  Sergey Poznyakoff  <gray@gnu.org.ua>
1376
1377         * doc/tar.texi: Properly document incremental dumps
1378         * doc/value.texi: Likewise.
1379         * doc/snapshot.texi: Likewise.
1380
1381 2005-11-05  Sergey Poznyakoff  <gray@gnu.org.ua>
1382
1383         Improve listed incremental format:
1384
1385         * src/common.h (update_parent_directory): New prototype.
1386         * src/create.c (dump_file): Call update_parent_directory.
1387         * src/incremen.c (struct directory.mtime): New member.
1388         (note_directory): Take additional arguments. All callers updated.
1389         (scan_directory): Updated to use more metadata. In particular,
1390         this allows to correctly detect renamed files.
1391         (read_directory_file,write_directory_file)
1392         (write_directory_file_entry): Support new directory file format.
1393         * tests/listed01.at: Sleep 1 sec before creating second file.
1394         * tests/listed02.at: Never skip the test. It should work on any
1395         filesystem.
1396
1397         * doc/snapshot.texi: New file
1398         * doc/tar.texi: Update.
1399         * doc/Makefile.am: Update.
1400
1401 2005-11-04  Paul Eggert  <eggert@cs.ucla.edu>
1402
1403         * src/extract.c (set_stat): Rewrite to avoid bug in Forte
1404         Developer 7 C 5.4 Patch 111708-09 (2004-02-19).
1405
1406 2005-11-04  Sergey Poznyakoff  <gray@gnu.org.ua>
1407
1408         * bootstrap: Fix quoting in help output.
1409         (update_po): Use backward-compatible wget option --cache instead
1410         of deprecated -C to accomodate for wget 1.10.
1411         Changes proposed by Eric Blake
1412         * THANKS: Add Eric Blake
1413
1414 2005-11-02  Paul Eggert  <eggert@cs.ucla.edu>
1415
1416         * doc/tar.texi: Consistently put two spaces after sentences,
1417         and put commas after "i.e." and "e.g.".  This is the usual GNU
1418         style in manuals.
1419
1420         * lib/.cvsignore: Add creat-safer.c, fcntl--.h, fcntl-safer.h,
1421         open-safer.c, openat-die.c, verify.h, to accommodate recent gnulib
1422         changes.
1423
1424 2005-10-27  Sergey Poznyakoff  <gray@gnu.org.ua>
1425
1426         * src/compare.c (diff_dumpdir): Pass a valid device number to
1427         get_directory_contents.
1428
1429         * THANKS: Add John Thomas McDole
1430
1431         * bootstrap: If file `.bootstrap' exists in the cwd and is
1432         readable, prepend its contents to the command line
1433
1434 2005-10-21  Sergey Poznyakoff  <gray@gnu.org.ua>
1435
1436         * tests/link01.at: Skip test if ln fails (suppose the OS does
1437         not support hard links).
1438
1439 2005-10-04  Sergey Poznyakoff  <gray@gnu.org.ua>
1440
1441         * src/tar.c (decode_options): Report error if -A or -r is used
1442         together with compression option.
1443
1444 2005-09-29  Sergey Poznyakoff  <gray@gnu.org.ua>
1445
1446         * doc/tar.texi: Use @option and @kbd consistently.
1447         Document new options.
1448
1449 2005-09-28  Sergey Poznyakoff  <gray@gnu.org.ua>
1450
1451         * NEWS: Updated
1452         * src/common.h (show_stored_names_option): New variable
1453         * src/list.c (print_header): If show_stored_names_option is given,
1454         list member names as stored in the archive. Patch proposed by Erik
1455         Cumps <erik.cumps@icos.be>
1456         * src/tar.c: Implement --show-stored-names option
1457
1458         * src/common.h (test_label_option): New variable;
1459         * src/list.c (print_header): Special handling if test_label_option
1460         is set.
1461         * src/names.c (all_names_found): If test_label_option is set
1462         return true.
1463         * src/tar.c: New option --test-label tests the archive volume
1464         label. The option proposed by Wouter Verhelst <wouter@nixsys.be>
1465
1466 2005-09-21  Paul Eggert  <eggert@cs.ucla.edu>
1467
1468         * tests/Makefile.am (clean-local): Don't attempt to run
1469         $(TESTSUITE) if it doesn't exist.  Problem reported by
1470         Eric Blake.
1471
1472 2005-09-16  Paul Eggert  <eggert@cs.ucla.edu>
1473
1474         Don't filter time stamps through the resolution supported
1475         by struct stat; keep them to full nanosecond resolution.
1476         This affects behavior only on older hosts or file systems
1477         that have lower-resolution time stamps.
1478         * src/common.h (OLDER_STAT_TIME): Parenthesize arg.
1479         (OLDER_TAR_STAT_TIME): New macro.
1480         (code_timespec): New function.
1481         (BILLION, LOG10_BILLION, TIMESPEC_STRSIZE_BOUND): New constants.
1482         * src/compare.c (diff_file): Use full time stamp resolution.
1483         * src/create.c (start_header, dump_file0): Likewise.
1484         (start_header, dump_file0): Adjust to new structure layout.
1485         (dump_regular_finish): Simplify by using timespec_cmp.
1486         * src/extract.c (struct delayed_set_stat): Don't store stat info
1487         that we don't need, to save space.  All uses changed.
1488         (struct delayed_set_stat, struct delayed_link, file_newer_p):
1489         (create_placeholder_file, extract_link, apply_delayed_links):
1490         Use full time stamp resolution.
1491         (check_time): Use code_timespec rather than rolling our own code.
1492         (set_stat, delay_set_stat): Arg now points to tar_stat_info to
1493         avoid losing time information.  All callers changed.
1494         * src/list.c (read_and, decode_header, print_heaeder):
1495         Use full time stamp resolution.
1496         * src/misc.c (code_timespec): New function.
1497         * src/tar.h (struct tar_stat_info): Record atime, mtime, ctime
1498         separately, for benefit of hosts with lower resolution.
1499         * src/update.c (update_archive): Use full time stamp resolution.
1500         * src/xheader.c (code_time): Use new code_timespec function
1501         to simplify code.
1502         (atime_coder, atime_decoder, ctime_coder, ctime_decoder):
1503         (mtime_coder, mtime_decoder): Use full time stamp resolution.
1504
1505         Report time stamps to full resolution in environment.
1506         Report memory allocation failures rather than ignoring them.
1507         * src/system.c (time_to_env): New function.
1508         (oct_to_env, str_to_env, chr_to_env): Report memory allocation failures.
1509         (stat_to_env): Report full resolution in time stamps.
1510
1511 2005-09-16  Paul Eggert  <eggert@cs.ucla.edu>
1512
1513         Merge changes from gnulib for file system sub-second time stamps.
1514         * configure.ac: Remove checks for struct stat.st_spare1, struct
1515         stat.st_atim.tv_nsec, struct stat.st_atimespec.tv_nsec, struct
1516         stat.st_atimensec, as gnulib now does this for us.
1517         Similarly for LIB_CLOCK_GETTIME.
1518         * gnulib.modules: Add stat-time.
1519         * lib/.cvsignore: Add stat-time.h.
1520         * src/common.h: Include stat-time.h.
1521         (timespec_lt): Remove.  All callers changed to use timespec_cmp.
1522         (get_stat_atime, get_stat_ctime, get_stat_mtime):
1523         (set_stat_atime, set_stat_ctime, set_stat_mtime):
1524         Remove; now defined by stat-time.h.
1525
1526 2005-09-14  Sergey Poznyakoff  <gray@gnu.org.ua>
1527
1528         * src/incremen.c (list_dumpdir): New function. Used to dump
1529         contents of GNUTYPE_DUMPDIR blocks.
1530         * src/common.h (list_dumpdir): Likewise.
1531         * src/list.c (list_archive): Use list_dumpdir() to display
1532         GNUTYPE_DUMPDIR blocks. Do that only if two or more -v options are
1533         given.
1534
1535 2005-09-12  Paul Eggert  <eggert@cs.ucla.edu>
1536
1537         * lib/.cvsignore: Adjust to current gnulib and modules used.
1538         Add getdelim.c, getdelim.h, mbchar.c, mbchar.h, mbuiter.h, memchr.c,
1539         pipe-safer.c, size_max.h, strdup.c, strdup.h, strnlen.h, strnlen1.c,
1540         strnlen1.h, unistd--.h.
1541         Remove getndelim2.c, getndelim2.h, pathmax.h, sysexits.h, xstrdup.c.
1542
1543         Treat fishy-looking hard links like fishy-looking symlinks.
1544         * src/extract.c (struct delayed_set_stat): Rename after_symlinks
1545         member to after_links.  All uses changed.
1546         (struct delayed_link): Renamed from struct delayed_symlink.
1547         All uses changed.  New member is_symlink.
1548         (delayed_link_head): Renamed from delayed_symlink_head.  All uses
1549         changed.
1550         (create_placeholder_file): New function, taken from extract_symlink.
1551         (extract_link): Create placeholders for fishy-looking hard links.
1552         (extract_symlink): Move code into create_placeholder_file.
1553         (apply_delayed_links): Renamed from apply_delayed_symlinks.
1554         All uses changed.  Create both hard links and symlinks.
1555
1556 2005-09-03  Paul Eggert  <eggert@cs.ucla.edu>
1557
1558         * README-alpha: Modernize description of software required for
1559         developers.
1560
1561 2005-09-03  Sergey Poznyakoff  <gray@gnu.org.ua>
1562
1563         * gnulib.modules: Add strdup
1564         * src/incremen.c (purge_directory): Do not dereference symbolic
1565         links. Bug reported by Ralph Corderoy <ralph@inputplus.co.uk> and
1566         David Brown <davidb@davidb.org>
1567         * tests/incr01.at: New test.
1568         * tests/Makefile.am: Add incr01.at
1569         * tests/testsuite.at: Likewise
1570         * THANKS: Updated
1571
1572 2005-08-17  Sergey Poznyakoff  <gray@gnu.org.ua>
1573
1574         * src/incremen.c (read_directory_file): Use strtoumax to read
1575         snapshot file contents.
1576         (write_directory_file_entry): Use umaxtostr().
1577
1578 2005-07-31  Sergey Poznyakoff  <gray@gnu.org.ua>
1579
1580         * src/create.c (file_dumpable_p,dump_file0): Fix handling of
1581         sparse files to /dev/null with --totals option.
1582         * tests/update.at: Remove dependency on file order.
1583
1584 2005-07-08  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
1585
1586         * doc/tar.texi: Fix typo.
1587
1588 2005-07-07  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
1589
1590         * tests/pipe.at: Pipe the output from `tar xfv' through sort.
1591
1592 2005-06-25  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
1593
1594         * src/sparse.c (tar_sparse_init): Fill structure with zeros. Call
1595         sparse_select_optab(). All callers updated.
1596         (sparse_member_p, sparse_fixup_header): Use tar_sparse_init().
1597
1598 2005-06-23  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
1599
1600         * src/sparse.c (pax_sparse_member_p): Checking member size
1601         vs. file size is not reliable enough. Use sparse_map_avail.
1602
1603         * tests/star/gtarfail.at: Adapt to the new output format
1604         * tests/star/gtarfail2.at: Likewise
1605         * tests/star/multi-fail.at: Likewise
1606         * tests/star/pax-big-10g.at: Likewise
1607         * tests/star/ustar-big-2g.at: Likewise
1608         * tests/star/ustar-big-8g.at: Likewise
1609
1610         * tests/sparse03.at: New test.
1611         * tests/Makefile.am: Add sparse03.at
1612         * tests/testsuite.at: Likewise
1613
1614         * src/xheader.c (size_decoder): Do not set archive_file_size.
1615
1616         Fix bugs introduced yesterday:
1617
1618         * src/sparse.c (tar_sparse_init):  Initialize
1619         dimped_size to 0.
1620         (sparse_scan_file): Initialize archive_file_size to 0. The
1621         variable keeps size of the file *as stored in the archive*, not
1622         the size reported by stat.
1623
1624 2005-06-22  Paul Eggert  <eggert@cs.ucla.edu>
1625
1626         A sweep of the sparse code prompted by a bug report by Jim Meyering.
1627         * src/sparse.c: Include <inttostr.h>.
1628         (struct tar_sparse_file): offset and dumped_size are off_t, not
1629         size_t.  optab is now const *.
1630         (dump_zeros): Return bool success flag, not off_t.
1631         All callers changed.
1632         Use a constant-zero buffer rather than clearing a buffer each time.
1633         Don't mess up if write fails.
1634         (dump_zeros, check_sparse_region):
1635         Don't assume off_t is no wider than size_t.
1636         (tar_sparse_init): Don't bother clearing a field that is already clear.
1637         (zero_block_p): First arg is const *, not *.
1638         (clear_block, SPARSES_INIT_COUNT): Remove.
1639         (sparse_add_map): First arg is now struct start_stat_info *, not
1640         struct tar_sparse_file *.  All callers changed.
1641         Use x2nrealloc to check for size_t overflow.
1642         (parse_scan_file): Cache commonly-used parts of file.
1643         Use an auto buffer, not a static one.
1644         Don't bother clearing the buffer; not needed.
1645         Don't bother clearing items that are already clear.
1646         (oldgnu_optab, star_optab, pax_optab): Now const.
1647         (sparse_dump_region): Don't bother clearing the buffer before
1648         reading into it; just clear the parts that aren't read into.
1649         (sparse_dump_file): Clear the whole local variable 'file'.
1650         (diff_buffer): Remove; now a local var.
1651         (check_sparse_region): Don't bother clearing buffer before
1652         reading into it.  Don't assume off_t is promoted to long.
1653         (oldgnu_get_sparse_info, star_get_sparse_info):
1654         Use an auto status, not static.
1655         * src/tar.h (struct tar_stat_info): had_trailing_slash is
1656         now bool, not int.
1657         * src/xheader.c (sparse_offset_coder, sparse_numbytes_coder):
1658         Rewrite to avoid cast.
1659         (sparse_offset_decoder, sparse_numbytes_decoder):
1660         Diagnose excess entries rather than crashing.
1661
1662 2005-06-22  Jim Meyering  <jim@meyering.net>
1663
1664         * src/common.h (timespec_lt): Add a return type: bool.
1665
1666 2005-06-21  Paul Eggert  <eggert@cs.ucla.edu>
1667
1668         Further improvements inspired by Jim Meyering's fixes.
1669
1670         * NEWS: Better support for full-resolution time stamps.
1671         The -v option now prints time stamps only to 1-minute resolution.
1672         * gnulib.modules: Add utimens.
1673         * lib/.cvsignore: Add imaxtostr.c, inttostr.c, inttostr.h,
1674         offtostr.c, umaxtostr.c, utimens.c, utimens.h.  Remove paxconvert.c.
1675         * lib/Makefile.tmpl (libtar_a_SOURCES): Remove paxconvert.c.
1676         * lib/paxconvert.c: Remove; superseded by umaxtostr.c.
1677         * po/POTFILES.in: Remove lib/paxconvert.c.  Add lib/xalloc-die.c,
1678         lib/obstack.c.
1679         * src/buffer.c (set_start_time, compute_duration, start_time):
1680         Use gettime rather than rolling our own code.
1681         * src/common.h (OLDGNU_NAME_FIELD_SIZE, MAXOCTAL11, MAXOCTAL7): Remove.
1682         (newer_ctime_option): Remove.
1683         (timespec_lt): New function.
1684         (OLDER_STAT_TIME): Use it.
1685         (string_to_chars): First arg is char const *, not char *.
1686         (tartime): Time arg is now struct timespec.  New bool arg.
1687         All callers changed.
1688         (code_ns_fraction): New decl.
1689         (sys_stat_nanoseconds): Remove decl.
1690         (get_stat_atime, get_stat_ctime, get_stat_mtime): New functions.
1691         (set_stat_atime, set_stat_ctime, set_stat_mtime): New functions.
1692         * src/compare.c: Include utimens.h rather than rolling our own.
1693         (diff_dir, diff_file, diff_link, diff_symlink, diff_special):
1694         Prototype.
1695         (diff_dumpdir, diff_multivol): Prototype.
1696         (diff_file): Support higher-resolution time stamps.
1697         * src/create.c: Include utimens.h rather than rolling our own.
1698         (MAX_OCTAL_VAL): New macro.
1699         (tar_copy_str, string_to_chars): Don't bother to zero-fill;
1700         the destination is already zeroed.
1701         (string_to_chars): First arg is char const *.
1702         (start_private_header): Use MINOR_TO_CHARS, not MAJOR_TO_CHARS,
1703         for minor device number.
1704         (write_header_name, dump_hard_link, dump_file0):
1705         Simplify test for old GNU format.
1706         (start_header): Put in placeholders for uid, etc., even when
1707         using extended headers, for benefit of older "tar" implementations.
1708         Don't assume uintmax_t is wider than 32 bits.
1709         Output extended header for mtime if needed.
1710         (dump_regular_finish, dump_file0):
1711         Support extended time stamp resolution.
1712         * src/extract.c: Include utimens.h rather than rolling our own.
1713         (check_time): Support extended time stamp resolution.
1714         * src/list.c: Include <inttostr.h>.
1715         (tartime): Use umaxtostr rather than stringify_uintmax_t_backwards.
1716         * src/xheader.c: Include <inttostr.h>.
1717         Do not include <xstrtol.h>.
1718         (strtoimax) [!HAVE_DECL_STRTOIMAX && !defined strtoimax]: New decl.
1719         (strtoumax) [!HAVE_DECL_STRTOUMAX && !defined strtoumax]: New decl.
1720         (BILLION, LOG10_BILLION): New constants.
1721         (to_decimal): Remove; superseded by inttostr.  All callers changed
1722         to use umaxtostr.
1723         (xheader_format_name): Don't assume pids and uintmax_t values
1724         fit in 63 bytes (!) when printed.
1725         (decode_record): Don't bother to check for ERANGE; an out of range
1726         value must be treater than len_max anyway.
1727         If the length is out of range, output it in the diagnostic.
1728         (format_uintmax): Remove; all callers changed to use umaxtostr.
1729         (xheader_print): Don't assume sizes can be printed in 99 bytes (!).
1730         (out_of_range_header): New function.
1731         (decode_time): Use it.
1732         (code_time): Accept struct timespec, not time_t and unsigned long.
1733         All callers changed.  Size sbuf properly, and remove unnecessary check.
1734         Don't assume time stamps can fit in 199 bytes.
1735         Handle negative time stamps.  Handle fractional time stamps
1736         more consistently.  Don't output unnecessary trailing zeros.
1737         (decode_time): Yield struct timespec, not time_t and unsigned long.
1738         All callers changed.
1739         Handle negative time stamps.  Truncate towards minus infinity
1740         consistently.  Improve overflow checks, and output a better
1741         diagnostic on overflow.
1742         (code_num): Don't assume uintmax_t can be printed in 99 bytes (!).
1743         (decode_num): New function, for better diagnostics.
1744         (atime_coder, atime_decoder, gid_decoder, ctime_coder):
1745         (ctime_decoder, mtime_coder, mtime_decoder, size_decoder):
1746         (uid_decoder, sparse_size_decoder, sparse_numblocks_decoder):
1747         (sparse_offset_decoder, sparse_numbytes_decoder):
1748         Use decode_num, etc., instead of xstrtoumax, etc.
1749
1750 2005-06-21  Jim Meyering  <jim@meyering.net>
1751
1752         Carefully crafted invalid headers can cause buffer overrun.
1753         Invalid header fields go undiagnosed.
1754         Some valid time strings are ignored.
1755
1756         * src/xheader.c (sparse_numblocks_decoder): Remove unchecked use
1757         of `calloc'.  Use xcalloc instead.
1758         (decode_time, gid_decoder, size_decoder, uid_decoder):
1759         (sparse_size_decoder, sparse_offset_decoder, sparse_numblocks_decoder):
1760         Ensure that the result of calling xstrtoumax is no larger than
1761         the maximum value for the target type.  Upon any failure, exit with
1762         a diagnostic.
1763         (sparse_numblocks_decoder): Avoid buffer overrun/heap corruption:
1764         use x2nrealloc, rather than `n *= 2' and xrealloc(p, n,....
1765         (decode_time): Rewrite to accept time strings like
1766         1119018481.000000000.  Before, such strings were always ignored.
1767
1768 2005-06-13  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
1769
1770         * src/create.c (dump_file0): Check for is_avoided_name()
1771         first. Fixes bug reported by Martin Lohmeier
1772         <martin@mein-horde.de>
1773         * tests/update.at: New file
1774         * tests/Makefile.am (TESTSUITE_AT): Add update.at
1775         * tests/testsuite.at: Likewise
1776
1777 2005-06-13  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
1778
1779         * configure.ac (AC_STRUCT_ST_BLKSIZE)
1780         (AC_STRUCT_ST_BLOCKS): Removed. Handled by system.m4.
1781
1782 2005-06-02  Paul Eggert  <eggert@cs.ucla.edu>
1783
1784         * src/names.c (excluded_name): excluded_filename ->
1785         excluded_file_name, because the name was changed in gnulib.
1786
1787 2005-05-30  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
1788
1789         * src/tar.c (read_name_from_file,update_argv): Automatically
1790         detect nul-terminated list files.
1791         * NEWS: Updated
1792
1793 2005-05-27  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
1794
1795         * scripts/backup.sh.in: Bugfixes.
1796
1797 2005-05-26  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
1798
1799         * scripts/backup.in: Minor fixes
1800         * scripts/backup.sh.in (mt_begin,mt_rewind)
1801         (mt_offline,mt_status): Use $MT to invoke mt
1802         (init_common): Set --rsh-command option for mt if TAPE_FILE is a
1803         remote archive.
1804         * doc/tar.texi: Document new backup scripts behavior
1805
1806 2005-05-22  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
1807
1808         * lib/.cvsignore: Updated
1809         * lib/Makefile.tmpl: Add new paxutils files
1810         * po/POTFILES.in: Likewise
1811         * src/buffer.c: Update invocations of safer_name_suffix()
1812         * src/create.c: Likewise
1813         * src/extract.c: Likewise
1814         * src/xheader.c: Likewise
1815         * src/common.h: Include paxlib.h instead of paxerror.h
1816         (safer_name_suffix,removed_prefixes_p): Removed. The functions are
1817         imported from paxutils
1818         * src/names.c (hash_string_hasher,hash_string_compare)
1819         (hash_string_insert,hash_string_lookup,removed_prefixes_p)
1820         (safer_name_suffix): Moved to paxutils
1821
1822 2005-05-19  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
1823
1824         * bootstrap (copy_files): Accept optional third argument: a prefix
1825         to be appended to destination file names.
1826         Import paxutils/paxlib files.
1827         * configure.ac: Remove checking for LIB_SETSOCKOPT, it is handled
1828         by paxutils.
1829         * lib/Makefile.tmpl (libtar_a_SOURCES): Add paxerror.c paxexit.c
1830         paxconvert.c
1831         * po/POTFILES.in: Likewise.
1832         * src/common.h: Remove defines and declarations imported from
1833         paxutils
1834         * src/misc.c: Likewise
1835         * src/list.c (stringify_uintmax_t_backwards): Moved to paxutils
1836
1837 2005-05-17  Paul Eggert  <eggert@cs.ucla.edu>
1838
1839         * src/misc.c (remove_any_file): Fix typo in previous change.
1840
1841 2005-05-14  Paul Eggert  <eggert@cs.ucla.edu>
1842
1843         Port to Solaris 10's treatment of unlinking directories.
1844         * gnulib-modules: Add unlinkdir.
1845         * lib/.cvsignore: Add unlinkdir.h, unlinkdir.c.
1846         * src/common.h (we_are_root): Remove extern decl; it's now static.
1847         * src/extract.c (we_are_root): Now static.
1848         * src/misc.c: Include <unlinkdir.h>.
1849         (remove_any_file): Use cannot_unlink_dir () rather than we_are_root.
1850
1851         * ChangeLog, ChangeLog.1, Makefile.am, NEWS, PORTS, README,
1852         README-alpha, TODO, bootstrap, configure.ac, doc/Makefile.am,
1853         doc/convtexi.pl, doc/fdl.texi, doc/gendocs_template,
1854         lib/Makefile.tmpl, lib/prepargs.c, lib/waitpid.c, po/POTFILES.in,
1855         scripts/Makefile.am, scripts/backup-specs, scripts/backup.in,
1856         scripts/backup.sh.in, scripts/restore.in, src/Makefile.am,
1857         src/arith.h, src/buffer.c, src/common.h, src/compare.c,
1858         src/create.c, src/delete.c, src/extract.c, src/incremen.c,
1859         src/list.c, src/mangle.c, src/misc.c, src/names.c, src/sparse.c,
1860         src/system.c, src/tar.c, src/tar.h, src/update.c, src/utf8.c,
1861         src/xheader.c, tests/Makefile.am, tests/append.at,
1862         tests/append01.at, tests/comprec.at, tests/delete01.at,
1863         tests/delete02.at, tests/delete03.at, tests/delete04.at,
1864         tests/delete05.at, tests/extrac01.at, tests/extrac02.at,
1865         tests/extrac03.at, tests/extrac04.at, tests/extrac05.at,
1866         tests/gzip.at, tests/ignfail.at, tests/incremental.at,
1867         tests/link01.at, tests/listed01.at, tests/listed02.at,
1868         tests/long01.at, tests/longv7.at, tests/multiv01.at,
1869         tests/multiv02.at, tests/multiv03.at, tests/multiv04.at,
1870         tests/old.at, tests/options.at, tests/options02.at, tests/pipe.at,
1871         tests/recurse.at, tests/same-order01.at, tests/same-order02.at,
1872         tests/shortrec.at, tests/sparse01.at, tests/sparse02.at,
1873         tests/testsuite.at, tests/truncate.at, tests/version.at,
1874         tests/volume.at, tests/star/gtarfail.at, tests/star/gtarfail2.at,
1875         tests/star/multi-fail.at, tests/star/pax-big-10g.at,
1876         tests/star/quicktest.sh, tests/star/ustar-big-2g.at,
1877         tests/star/ustar-big-8g.at:
1878         Update FSF postal mail address.
1879
1880 2005-05-12  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
1881
1882         * NEWS: Updated
1883         * THANKS: Updated
1884         * bootstrap: Install files from paxutils/doc
1885         * doc/Makefile.am (tar_TEXINFOS): Add genfile.texi
1886         * doc/tar.texi (Genfile): New appendix
1887         * src/compare.c (diff_file): diff_handle was not initialized
1888         * src/create.c (dump_regular_file): Correctly pad archive members
1889         that shrunk during archiving. Repored by Frank Heckenbach.
1890         * src/extract.c (file_newer_p): Return false if file does not
1891         exist
1892         (prepare_to_extract): Correct warning wording.
1893         * tests/truncate.at: New test case
1894         * tests/Makefile.am: Add truncate.at
1895         * tests/testsuite.at: Likewise.
1896
1897         * doc/.cvsignore: Updated
1898         * lib/.cvsignore: Updated
1899         * tests/.cvsignore: Updated
1900
1901 2005-05-02  Paul Eggert  <eggert@cs.ucla.edu>
1902
1903         * tests/multivol04.at: Tell awk to read from /dev/null.
1904
1905         Adjust to recent gnulib changes.
1906         * lib/.cvsignore: Add dup-safer.c, fd-safer.c, unistd-safer.h.
1907         * src/common.h (initial_umask): New var.
1908         * src/create.c (start_ueader): Use it, and adjust to new modechange
1909         API.
1910         (hash_link): unsigned -> size_t parameters and result.
1911         * src/incremen.c (hash_directory): Likewise.
1912         * src/names.c (hash_string_hasher): Likewise.
1913         * src/tar.c (parse_opt): Set it, and adjust to new modechange API.
1914
1915 2005-04-19  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
1916
1917         * tests/Makefile.am: Add shortrec.at.
1918
1919 2005-04-18  Paul Eggert  <eggert@cs.ucla.edu>
1920
1921         * src/buffer.c (reading_from_pipe): Remove.  All uses removed.
1922         (short_read): Don't warn about short reads; they're normal.
1923         * tests/shortrec.at: New file.
1924         * tests/testsuite.at: Include it.
1925
1926         * bootstrap (gnulib_modules): Don't create a file modlist.tmp, as
1927         it is sometimes left behind as a garbage file (maybe due to the
1928         multiple traps?).
1929
1930 2005-04-14  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
1931
1932         * src/list.c: Handle Solaris 'X' type flag
1933         * src/tar.h (SOLARIS_XHDTYPE): New define
1934
1935 2005-04-06  Sergey Poznyakoff  <gray@mirddin.farlep.net>
1936
1937         * src/tar.c: Minor fixes to text messages. Proposed by Benno
1938         Schulenberg.
1939         * src/extract.c: Likewise
1940         (extract_file): Assign orig_file_name
1941         to save_name uniformly over the program. This fixes matching
1942         directory names at the start of an archive volume.
1943         * src/buffer.c (flush_write): Warn when the name of the archive
1944         straddling volume boundary is longer than 100 characters. Earlier
1945         behavior was to issue a fatal error.
1946         (struct zip_magic): Reverted part of changes from 2005-04-04.
1947         They make the maintenance too costly. Removing `unsigned'
1948         qualifier from `magic' member should be enough.
1949         * src/compare.c (diff_init): Read directory file if in listed
1950         incremental. This prevents spurious 'Contents differ' diagnostics.
1951         (diff_archive): Minor fixes to text messages
1952         (diff_file,diff_dumpdir,diff_multivol): Assign orig_file_name
1953         to save_name uniformly over the program. This fixes matching
1954         directory names at the start of an archive volume.
1955         * src/create.c: Assign orig_file_name
1956         to save_name uniformly over the program. This fixes matching
1957         directory names at the start of an archive volume.
1958         * src/list.c: Likewise
1959
1960         * tests/multiv03.at: Modified to match the new behavior
1961         * tests/multiv04.at: New file. Test splittind directory members between
1962         the archive volumes.
1963         * tests/Makefile.am: Add multiv04.at
1964         * tests/testsuite.at: Likewise.
1965
1966 2005-04-04  Paul Eggert  <eggert@cs.ucla.edu>
1967
1968         * configure.ac (AC_CONFIG_AUX_DIR): Rename from config to build-aux,
1969         for reasons discussed in the thread beginning at
1970         <http://lists.gnu.org/archive/html/bug-gnulib/2005-03/msg00119.html>.
1971         * .cvsignore: Remove config; add build-aux.
1972
1973         * src/buffer.c (struct zip_magic): Use char arrays, not pointers.
1974         The unsigned char * pointer ran afoul of pedantic C compilers, and
1975         we didn't need pointers anyway.  Put the size field before the
1976         data to avoid unnecessary padding.  All uses changed.
1977         (magic) Make it const, since it doesn't change.  All uses changed.
1978
1979 2005-04-02  Paul Eggert  <eggert@cs.ucla.edu>
1980
1981         * src/xheader.c (decode_record): Don't dump core when given
1982         a corrupted extended header.  Problem reported by Jim Meyering.
1983         Also, check for other ways that the header might be invalid,
1984         e.g., missing newline at end.  Do not allow keys with nulls.
1985         Allow blanks before and after length, as POSIX requires.
1986         Do not allow leading "-" in length.  Check for length overflow.
1987         (xheader_decode, xheader_decode_global): Let decode_record
1988         check for exhaustion of record.
1989         (xheader_read): Null-terminate the extended record;
1990         decode_record relies on this.
1991
1992 2005-03-21  Paul Eggert  <eggert@cs.ucla.edu>
1993
1994         * bootstrap (TP_URL): Change from
1995         <http://www2.iro.umontreal.ca/~gnutra/po/maint/tar/> to
1996         <http://www.iro.umontreal.ca/translation/maint/tar/> to avoid
1997         some redirection glitches.
1998         Use "trap - 0" rather than "trap 0" to fix a POSIX-conformance bug.
1999         * doc/.cvsignore: Change "tar.info" to "tar.info*".  Sort.
2000         * lib/.cvsignore: Add intprops.h (new gnulib file).
2001
2002 2005-03-04  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2003
2004         * src/list.c (print_header): Print UID/GID in case of
2005         empty user/group name. This could occur when dumping
2006         files belonging to non-existing users and when listing
2007         broken archives.
2008         Reported by Igor Lautar.
2009
2010         * src/create.c: Correctly parse empty uname/gname
2011         * src/sparse.c (sparse_scan_file): Bugfix. offset had
2012         incorrect type.
2013
2014         * scripts/backup.in: Use `head -n 1'. Provide missing
2015         argument to ${MT_STATUS}. Proposed by Jan Merka.
2016         * scripts/backup.sh.in: Likewise. Fixed typo in
2017         MT_OFFLINE assignment.
2018         * scripts/restore.in (restore_fs): Use root_fs
2019
2020 2005-02-15  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2021
2022         * src/create.c: Replace strdup with xstrdup
2023         * src/names.c: Likewise
2024         * src/tar.c: Likewise
2025
2026         * tests/append01.at: Added reference to bug-tar archive
2027         * tests/listed02.at: Use -print with find.
2028
2029 2005-02-11  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2030
2031         * THANKS: Added Tim Adye. Fixed UTF.
2032         * src/list.c (read_header): Removed assignment to
2033         oldgnu_header.isextended. It was breaking append mode.
2034
2035         * tests/append01.at: New test.
2036         * tests/Makefile.am: Added append01.at
2037         * tests/testsuite.at: Likewise
2038
2039 2005-02-06  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2040
2041         * gnulib.modules: New file. List of required gnulib
2042         modules.
2043         * bootstrap: Merge list of required modules from
2044         paxutils with that from tar proper.
2045         * src/tar.c: Various fixes in help and diagnostic messages.
2046
2047 2005-02-05  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2048
2049         * src/common.h (EXTRACT_OVER_PIPE): New macro
2050         * src/compare.c: Code clean up.
2051         * src/extract.c (extract_archive): Do not check for
2052         EXTRACT_OVER_PIPE, decode_options() does this.
2053         * src/misc.c (exec_error,fork_error,dup2_error)
2054         (pipe_error): Removed unneeded functions.
2055         * src/system.c (sys_exec_command): Use xclose, xpipe,
2056         xfork, xdup2 and exec_fatal.
2057         * src/tar.c (options): Improved sorting. Document --backup=off.
2058         (decode_options): Clear backup_option if necessary.
2059
2060 2005-02-05  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2061
2062         Initial implementation of --to-command option proposed
2063         by Hansjoerg Lipp.
2064
2065         * bootstrap: Get setenv module from gnulib
2066         * src/buffer.c: Do not use 8-bit chars in comments
2067         * src/common.h (to_command_option)
2068         (ignore_command_error_option): New globals
2069         (sys_exec_command,sys_wait_command): New commands
2070         * src/extract.c (extract_file): Handle to_command_option
2071         Fix error recovery: decrease `size' by `written', not
2072         by `count', otherwise tar misses the next header
2073         Do not diagnose write error if to_command_option
2074         is set, since the command may have exited prematurely.
2075         It would be better to check for sigpipe, though.
2076         (prepare_to_extract): Handle to_command_option
2077         * src/misc.c (exec_error, fork_error, dup_error)
2078         (pipe_error): New functions
2079         * src/system.c (sys_exec_command)
2080         (sys_wait_command): New functions
2081         * src/tar.c: Handle new options --to-command,
2082         --ignore-command-error
2083         * THANKS: Added Hansjoerg Lipp
2084
2085 2005-02-03  Paul Eggert  <eggert@cs.ucla.edu>
2086
2087         * src/list.c (from_header): New arg OCTAL_ONLY, normally false.
2088         All uses changed.  Fix typo that sometimes suppressed all "Archive
2089         contains obsolescent base-64 headers" warnings, not just the first
2090         one.
2091         (tar_checksum): Accept only octal checksums, since they aren't
2092         supposed to overflow into weird formats.
2093
2094         Adjust to gnulib changes.
2095         * lib/.cvsignore: Add chdir-long.c, chdir-long.h, memrchr.c,
2096         memrchr.h, openat.c, openat.h.  Remove pathmax.h (added by
2097         mistake, perhaps?), sysexit.h (my typo), xstrdup.c (gnulib removed
2098         this file).  Sort entries.
2099
2100 2005-02-04  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2101
2102         * src/extract.c: Further rewrite.
2103         * src/buffer.c: Removed unused variables.
2104         * src/list.c: Likewise
2105         * src/tar.c (update_argv): Changed type to void
2106
2107         * src/common.h (OLDGNU_NAME_FIELD_SIZE): New constant
2108         * src/create.c (start_private_header,write_header_name)
2109         (dump_hard_link): Restore compatibility with 1.13.25
2110         * src/extract.c (extract_archive): Rewritten
2111         * src/list.c: Add translators' comments
2112         * src/tar.c (options) Minor spelling fix
2113         * tests/star/quicktest.sh: Determine path to the tar executable.
2114
2115 2005-02-03  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2116
2117         * po/POTFILES.in: Added tests/genfile.c
2118         * src/buffer.c (short_read): Use ngettext()
2119         (new_volume): use quote().
2120         * src/create.c: Use quote()
2121         * src/extract.c: Likewise
2122         * src/xheader.c: Likewise
2123         * src/misc.c: Add comments to translators
2124
2125         * tests/same-order01.at: sort ls output
2126         * tests/sparse01.at (RE_CHECK): Added missing space
2127
2128         * tests/sparse02.at: Test extracting sparse files over a pipe.
2129         * tests/Makefile.am: Added sparse02.at
2130         * tests/testsuite.at: Likewise
2131         * tests/listed02.at: Skip the test on filesystems that do not
2132         update ctime of a file when renaming it. To be reverted when
2133         the new incremental mode is ready.
2134         * tests/sparse01.at: Extract and compare sparse file
2135
2136 2005-02-02  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2137
2138         * src/sparse.c: Extract sparse files even if the output
2139         fd is not seekable.
2140
2141 2005-02-01  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2142
2143         * bootstrap: Add a comment to lib/Makefile.am saying that this
2144         is an autogenerated file.
2145         Exit with code 1 if any of autotools fails.
2146         * lib/Makefile.tmpl: Insert Emacs magic to the first line.
2147         * tests/Makefile.am: Add append.at
2148
2149         * m4/.cvsignore: Ignore all *.m4 files
2150
2151 2005-01-18  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2152
2153         Rewritten handling of -T (--files-from) option. Now it
2154         inserts the file names immediately into argv array which allows
2155         for:
2156         1) any valid tar options (including another -T) to be used in the file
2157         2) any number of -T options to be given in command line
2158
2159         * configure.ac: Raised version number to 1.15.2
2160         * src/common.h: Include obstack.h
2161         (files_from_option): Removed
2162         (unquote_option): New variable
2163         (stat_fatal): New function
2164         (name_close): Removed function.
2165         * src/incremen.c: Remove inclusion of obstack.h
2166         * src/xheader.c: Likewise.
2167         * src/misc.c (stat_fatal): New function
2168         * src/names.c (name_file): Removed variable.
2169         (read_name_from_file): Removed function. All callers changed.
2170         (name_close): Removed function. All callers changed.
2171         * src/tar.c: New options --unquote (--no-unquote) and
2172         --add-file
2173         (add_file_id,read_name_from_file,update_argv): New functions
2174         (parse_opt): Rewritten handling of -T option. Handle hidden
2175         --HANG option for debugging purposes.
2176         (decode_options): Init unquote_option to true. Init argv_stk.
2177         Remove unneeded references to files_from_option
2178
2179         * doc/tar.texi: Document new options.
2180         Moved rendition macros and option value definitions into
2181         separate files
2182         * doc/rendition.texi: New file
2183         * doc/value.texi: New file
2184         * doc/Makefile.am: Updated
2185
2186 2005-01-13  Paul Eggert  <eggert@cs.ucla.edu>
2187
2188         * tests/testsuite.at (RE_CHECK): Use "join - file", not
2189         "join file -", to work around a bug in Solaris 8 join.
2190         Problem reported by Tomohiro Suzuki.
2191
2192 2005-01-13  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2193
2194         * src/list.c (read_header): Fixed calculation of the
2195         size for GNU long name/link. Tar was reading one block
2196         more if name_size was divisible by 512. Thanks Josef
2197         Bauer.
2198         * tests/long01.at: New file. Test listing of GNU long names
2199         divisible by 512.
2200         * tests/pipe.at: Sort tar output.
2201         * tests/Makefile.am: Added long01.at
2202         * tests/testsuite.at: Likewise.
2203         * THANKS: Added Josef Bauer
2204         * lib/.cvsignore: Updated
2205         * m4/.cvsignore: Updated
2206         * NEWS: Updated
2207
2208 2005-01-11  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2209
2210         * directory: Updated for 1.15.1
2211         * doc/Makefile.am: Use gendocs.sh to generate web documentation
2212         * doc/gendocs_template: Template file for gendocs.sh
2213         * doc/tar.texi: Updated docs for --[no-]same-permissions
2214         * src/tar.c: Reworded docstrings for --[no-]same-permissions
2215
2216 2005-01-06  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2217
2218         * bootstrap: Create m4/paxutils.m4
2219         * configure.ac: Call tar_PAXUTILS
2220         * tests/options02.at: Test that tar correctly handles non-option
2221         arguments interspersed with options.
2222         * tests/Makefile.am: Add options02.at
2223         * tests/testsuite.at: Likewise
2224         * tests/listed02.at: Do not create useless directory
2225
2226 2005-01-05  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2227
2228         * src/tar.c (parse_opt): Bugfix: Use ARGP_KEY_ARG. Thanks
2229         Mike Frysinger <vapier@gentoo.org> for reporting.
2230
2231 2005-01-04  Paul Eggert  <eggert@cs.ucla.edu>
2232
2233         * lib/Makefile.tmpl (localedir.h): Omit needless quotes and a
2234         needless sed command.  Problem reported by Paul Jarc.
2235
2236 2004-12-23  Paul Eggert  <eggert@cs.ucla.edu>
2237
2238         Accommodate latest gnulib.
2239         * doc/.cvsignore: Add getdate.texi.
2240         * bootstrap: Do not treat alloca-opt specially; this is no
2241         longer needed (and breaks builds) with latest gnulib.
2242
2243 2004-12-22  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2244
2245         * src/tar.c (main): Reverted recent changes (#ifdef).
2246
2247 2004-12-21  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2248
2249         * configure.ac: Raise version number to 1.15.1
2250         Check for locale.h
2251         * NEWS: Entry for 1.15.1
2252         * src/buffer.c: Bugfix. Changes introduced 2004-11-26
2253         broke extraction from stdin.
2254         * src/list.c (from_header, tar_checksum): Changed declaration.
2255         All callers updated.
2256         * src/common.h: Likewise
2257         * src/tar.c (main): Protect invocation of setlocale by
2258         ifdef.
2259
2260         * tests/comprec.at: New test
2261         * tests/pipe.at: New test
2262         * tests/Makefile.am (comprec.at,pipe.at): New tests
2263         * tests/testsuite.at: Likewise
2264         * tests/gzip.at: Use AT_GZIP_PREREQ
2265         * tests/star/pax-big-10g.at: Likewise
2266         * tests/star/ustar-big-2g.at: Likewise
2267         * tests/star/ustar-big-8g.at: Likewise
2268
2269         * tests/extrac04.at: Discard stderr from sort, on some
2270         systems it spits out lots of irrelevant info.
2271         * tests/listed02.at: Likewise
2272
2273         * doc/index.html.in: Rewritten in xhtml to follow recent
2274         GNU site standards.
2275         * THANKS: Updated
2276
2277 2004-12-20  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2278
2279         Released version 1.15. Sources up to this point are
2280         tagged release_1_15.
2281
2282         * configure.ac: Raised version number to 1.15
2283         * NEWS: Likewise
2284         * directory: Updated
2285         * bootstrap (update_po): Give -r to wget. Always remove index.html
2286         Ignore alloca-opt module (it duplicates alloca)
2287
2288         * tests/Makefile.am: Distribute star/quicktest.sh
2289         * tests/star/README: Document quicktest.sh
2290         * tests/star/qucktest.sh: Removed.
2291         * tests/star/quicktest.sh: New file.
2292
2293 2004-12-18  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2294
2295         * NEWS: Updated
2296         * doc/tar.texi: Document auto-detection of compressed archive
2297         formats.
2298         * src/tar.c (decode_options): Ignore --seek if used with --delete.
2299         Delete.c is based on the assumption that the archive is being
2300         actually read, not lseeked.
2301
2302         * tests/delete05.at: New file
2303         * tests/extrac02.at: Fixed typo in AT_SETUP
2304         * tests/Makefile.am: Added delete05.at
2305         * tests/testsuite.at: Likewise.
2306
2307 2004-12-17  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2308
2309         * src/delete.c (delete_archive_members): Bugfix: when
2310         attempting to delete an nonexistent member, the last
2311         blocking_factor blocks were zeroed.
2312
2313 2004-12-14  Paul Eggert  <eggert@cs.ucla.edu>
2314
2315         * TODO: Mention sub-second resolution, lutimes, lchmod.
2316
2317 2004-11-27  Paul Eggert  <eggert@cs.ucla.edu>
2318
2319         Adjust to recent gnulib changes.
2320         * doc/getdate.texi: Remove, since bootstrap gets it from gnulib now.
2321         * .cvsignore: Add rmt, rmt/*, rmt/*/*.
2322         * lib/.cvsignore: Add allocsa.c, allocsa.h, allocsa.valgrind,
2323         charset.alias, config.charset, getcwd.c, getcwd.h, localcharset.c,
2324         localcharset.h, ref-add.sed, ref-add.sin, ref-del.sed,
2325         ref-del.sin, setenv.c, setenv.h, unsetenv.c.  Remove pathmax.h,
2326         xstrdup.c.
2327         * m4/.cvsignore: Add allocsa.m4, eealloc.m4, getcwd-path-max.m4,
2328         localcharset.m4, realloc.m4, setenv.m4.  Remove malloc.m4,
2329         pathmax.m4, realloc.m4.
2330
2331 2004-11-26  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2332
2333         * configure.ac: Raised version number to 1.14.91
2334         * scripts/tarcat: New file
2335         * scripts/Makefile.am: Added tarcat
2336         * src/buffer.c (hit_eof): Changed type to boolean
2337         (read_full_records,reading_from_pipe): New variables
2338         (check_compressed_archive,open_compressed_archive): New functions
2339         (open_archive): Autodetect compressed archives and act accordingly.
2340         Set reading_from_pipe. This fixes controversial set of changes
2341         introduced 2004-05-11,2004-03-22.
2342         * src/list.c (tar_checksum): New function
2343         (read_header): Use tar_checksum().
2344         * src/common.h (tar_checksum): New function
2345
2346         * tests/star/README: Updated
2347         * NEWS: Updated
2348         * PORTS: Updated
2349
2350 2004-11-16  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2351
2352         * src/tar.c (decode_options): Fixed -o semantics. Thanks
2353         Jean Delvare <khali@linux-fr.org>
2354
2355 2004-10-25  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2356
2357         * bootstrap: Add localcharset
2358         * lib/Makefile.tmpl: Initialize SUFFIXES and CLEANFILES since the
2359         makefile snippet from localcharset uses '+=' on them.
2360         * src/Makefile.am (LDADD): Add LIBICONV
2361         * src/list.c (decode_header): Set uname/gname to NULL if their
2362         header counterparts are empty
2363         * src/tar.c (options): Use OPTION_NO_TRANS
2364         * src/utf8.c: Use locale_charset() from gnulib
2365
2366         * tests/star/README: Updated
2367
2368         * NEWS: Updated
2369         * TODO: Minor fix
2370
2371 2004-10-04  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2372
2373         * THANKS: Added Bryan Ford
2374         * doc/Makefile.am (.text): Fixed rule
2375         * po/POTFILES.in: Added argp-help.c
2376
2377 2004-10-04  Bryan Ford  <baford@mit.edu>
2378
2379         * src/tar.c: New option --exclude-caches, to exclude
2380         cache directories automatically on archive creation.
2381         Cache directories are directories containing a
2382         standardized tag file, as specified at:
2383                 http://www.brynosaurus.com/cachedir/spec.html
2384         * src/common.h: New variable exclude_caches_option.
2385         * src/create.c: New function check_cache_directory(),
2386         called from dump_dir0() if exclude_caches_option is set,
2387         to check for a cache directory tag and exclude the directory
2388         if such a tag is found.
2389         * doc/tar.texi: Updated accordingly.
2390
2391 2004-09-16  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2392
2393         * doc/tar.texi: Minor fix
2394         * src/tar.c (options): Minor fix
2395
2396 2004-09-12  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2397
2398         * TODO: Updated
2399         * lib/Makefile.tmpl: Added 'rtapelib.o: localedir.h' dependency
2400         * src/common.h: Comment WANT_DIRECTORY_REMOVE_OPTION.
2401         * src/extract.c: Normalized use of remove_any_file().
2402         * src/misc.c: Likewise.
2403         * src/tar.c (parse_opt): Emit warning if -l option is used.
2404         (show_default_settings): REMOTE_SHELL may be undefined
2405
2406 2004-09-07  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2407
2408         Test suite rewritten in autotest.
2409
2410         * configure.ac: Updated for autotest
2411         * src/tar.c (argp_program_version): Modified.
2412         * tests/Makefile.am: Rewritten for autotest.
2413
2414         * tests/.cvsignore: Updated
2415         * tests/append.at: New file
2416         * tests/atlocal.in: New file
2417         * tests/delete01.at: New file
2418         * tests/delete02.at: New file
2419         * tests/delete03.at: New file
2420         * tests/delete04.at: New file
2421         * tests/extrac01.at: New file
2422         * tests/extrac02.at: New file
2423         * tests/extrac03.at: New file
2424         * tests/extrac04.at: New file
2425         * tests/extrac05.at: New file
2426         * tests/gzip.at: New file
2427         * tests/ignfail.at: New file
2428         * tests/incremental.at: New file
2429         * tests/link01.at: New file
2430         * tests/listed01.at: New file
2431         * tests/listed02.at: New file
2432         * tests/longv7.at: New file
2433         * tests/multiv01.at: New file
2434         * tests/multiv02.at: New file
2435         * tests/multiv03.at: New file
2436         * tests/old.at: New file
2437         * tests/options.at: New file
2438         * tests/recurse.at: New file
2439         * tests/same-order01.at: New file
2440         * tests/same-order02.at: New file
2441         * tests/sparse01.at: New file
2442         * tests/testsuite.at: New file
2443         * tests/version.at: New file
2444         * tests/volume.at: New file
2445         * tests/star/gtarfail.at: New file
2446         * tests/star/gtarfail2.at: New file
2447         * tests/star/multi-fail.at: New file
2448         * tests/star/pax-big-10g.at: New file
2449         * tests/star/ustar-big-2g.at: New file
2450         * tests/star/ustar-big-8g.at: New file
2451
2452         * tests/preset.in: Removed
2453         * tests/before: Removed
2454         * tests/after: Removed
2455         * tests/version.sh: Removed.
2456         * tests/append.sh: Removed.
2457         * tests/delete01.sh: Removed.
2458         * tests/delete02.sh: Removed.
2459         * tests/delete03.sh: Removed.
2460         * tests/delete04.sh: Removed.
2461         * tests/extrac01.sh: Removed.
2462         * tests/extrac02.sh: Removed.
2463         * tests/extrac03.sh: Removed.
2464         * tests/extrac04.sh: Removed.
2465         * tests/extrac05.sh: Removed.
2466         * tests/gzip.sh: Removed.
2467         * tests/incremen.sh: Removed.
2468         * tests/ignfail.sh: Removed.
2469         * tests/link01.sh: Removed.
2470         * tests/listed01.sh: Removed.
2471         * tests/listed02.sh: Removed.
2472         * tests/longv7.sh: Removed.
2473         * tests/multiv01.sh: Removed.
2474         * tests/multiv02.sh: Removed.
2475         * tests/multiv03.sh: Removed.
2476         * tests/old.sh: Removed.
2477         * tests/options.sh: Removed.
2478         * tests/same-order01.sh: Removed.
2479         * tests/same-order02.sh: Removed.
2480         * tests/volume.sh: Removed.
2481         * tests/recurse.sh: Removed.
2482         * tests/sparse01.sh: Removed.
2483         * tests/star/gtarfail.sh: Removed.
2484         * tests/star/gtarfail2.sh: Removed.
2485         * tests/star/multi-fail.sh: Removed.
2486         * tests/star/ustar-big-2g.sh: Removed.
2487         * tests/star/ustar-big-8g.sh: Removed.
2488         * tests/star/pax-big-10g.sh: Removed.
2489
2490 2004-09-07  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2491
2492         * bootstrap: Install genfile.c from paxutils
2493         * tests/genfile.c: Removed. Integrated into
2494         paxutils.
2495         * tests/mksparse.c: Removed. Integrated into
2496         (paxutils) genfile.c
2497         * tests/Makefile.am: Removed mksparse
2498         * tests/sparse01.sh: Use genfile instead of mksparse
2499
2500 2004-09-06  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2501
2502         Started merging with cpio into paxutils. Sources before
2503         this point are tagged alpha-1_14_90
2504
2505         * Makefile.am: Updated for use with paxutils
2506         * README-alpha: Likewise
2507         * bootstrap: Likewise
2508         * configure.ac: Likewise
2509         * lib/Makefile.tmpl: Likewise
2510         * po/POTFILES.in: Likewise
2511         * src/Makefile.am: Likewise
2512         * src/buffer.c: Likewise
2513         * src/common.h: Likewise
2514         * src/compare.c: Likewise
2515         * src/create.c: Likewise
2516         * src/delete.c: Likewise
2517         * src/extract.c: Likewise
2518         * src/incremen.c: Likewise
2519         * src/list.c: Likewise
2520         * src/mangle.c: Likewise
2521         * src/misc.c: Likewise
2522         * src/names.c: Likewise
2523         * src/sparse.c: Likewise
2524         * src/system.c: Likewise
2525         * src/tar.c: Likewise
2526         * src/update.c: Likewise
2527         * src/utf8.c: Likewise
2528         * src/xheader.c: Likewise
2529
2530         * src/system.h: Removed
2531         * src/rmt.c: Removed
2532         * src/rmt.h: Removed
2533         * src/rtapelib.c: Removed
2534
2535 2004-09-03  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2536
2537         * tests/listed02.sh: Do not depend on any particular ordering
2538         of output.
2539
2540 2004-09-02  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2541
2542         * doc/tar.texi: Document the use of -C option in
2543         file lists. Document --seek option.
2544         * configure.ac: New option --with-rmt. New configuration variable
2545         DEFAULT_RMT_DIR. Removed DEFAULT_RMT_COMMAND.
2546         * src/Makefile.am: Install rmt into rmtdir
2547         * src/tar.c (usage): Minor fix.
2548         * NEWS: Updated.
2549         * README: Updated.
2550
2551 2004-09-01  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2552
2553         * configure.ac: Raised version number to 1.14.90
2554         * src/common.h (is_individual_file): New prototype
2555         * src/create.c (dump_file0): Fix bug introduced
2556         2004-02-21.
2557         * src/names.c (register_individual_file)
2558         (is_individual_file): New functions.
2559         * tests/listed01.sh: Use genfile instead of dd.
2560         * tests/listed02.sh: New file.
2561         * tests/Makefile.am: Added listed02.sh
2562
2563         * NEWS: Updated
2564
2565 2004-08-31  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2566
2567         * src/sparse.c (sparse_add_map): Fixed improper initializations
2568         of sparse_map_size. We assume that whatever number it contains
2569         describes adequately the current size of sparse_map. The only
2570         number we need to reset is sparse_map_avail.
2571         * src/compare.c (verify_volume): Call set_next_block_after
2572         if read_header returns HEADER_FAILURE
2573         Destroy and reinitialize content of current_stat_info and
2574         extended_header after each iteration (bug reported by
2575         John L. Males <jlmales@yahoo.com>).
2576         Issue a warning if the created archive contains some members
2577         whose file names were stripped off their leading prefixes.
2578         This is a temporary fix of the issue reported by Bdale Garbee
2579         <bdale@gag.com> (Refs: Debian bug 230064, Message-Id
2580         <87n07kyzhi.fsf@rover.gag.com>, Sun, 15 Feb 2004 11:22:17 -0700)
2581
2582         * src/names.c (removed_prefixes_p): New function.
2583
2584         * src/buffer.c: When computing write rate do not take
2585         into account the time needed to verify the archive(s).
2586         The bug reported by John L. Males <jlmales@yahoo.com>
2587         (set_start_time,compute_duration): New functions.
2588         (print_total_written): Use the result of compute_duration().
2589         (close_archive): Call compute_duration.
2590         * src/common.h (set_start_time, removed_prefixes_p): New prototypes.
2591         * src/list.c (decode_header): Fixed initialization
2592         of stat_info->is_sparse
2593         * src/tar.c (main): Call set_start_time().
2594
2595         * src/misc.c (unquote_string): Unquote '\a' and '\v'.
2596         Reported by Helmut Waitzmann <helmut.waitzmann@web.de>.
2597
2598         * NEWS: Updated
2599         * THANKS: Updated
2600
2601 2004-08-30  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2602
2603         * src/tar.c: Fix copy-n-paste errors in the license
2604
2605 2004-08-19  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2606
2607         * scripts/backup.in: Renamed LIBPATH to LIBDIR.
2608         Use ROOT_FS with -C option. Do not send mail
2609         if ADMINISTRATOR is set to NONE.
2610         * scripts/backup.sh.in (test_root): Append / to
2611         ROOT_FS if it does not already end in it.
2612         * scripts/restore.in: Renamed LIBPATH to LIBDIR.
2613         New option -a (--all). Do not start restore unless
2614         -a or patterns are given.
2615         (restore_fs,restore_files): Fixed use of --listed option.
2616         * doc/tar.texi: Updated
2617         * NEWS: Updated
2618
2619 2004-08-17  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2620
2621         * src/tar.c (find_argp_option): Fixed typo
2622
2623 2004-08-12  Paul Eggert  <eggert@cs.ucla.edu>
2624
2625         Merge argp, getopt, xalloc changes from gnulib.
2626         * bootstrap (gnulib_modules): Add xalloc-die.
2627         Remove code to test for patches; we don't have patches now.
2628         Set LC_ALL=C so that file names sort consistently.
2629         Prefer the gnulib copies of gettext.m4, glibc21.m4,
2630         lib-ld.m4, lib-prefix.m4, po.m4 too.
2631
2632         * patches/getopt.diff: Remove; gnulib now works unpatched.
2633         * configure.ac (_getopt_long_only_r): Remove check.
2634         gl_ARGP now does this for us.
2635         * lib/.cvsignore: Add fnmatch.h, getopt_.h, sysexit.h,
2636         xalloc-die.c.
2637         * src/extract.c: Adjust to changes to gnulib xalloc module.
2638         (extr_init): Remove assignment to xalloc_fail_func; no longer needed.
2639         (xalloc_die): New function.
2640
2641 2004-08-10  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2642
2643         * NEWS: Updated
2644
2645         * src/buffer.c (flush_write): Limit filenames
2646         of the members that straddle multivolume archive
2647         boundary to 100 characters.
2648         (flush_read): Use strncmp when comparing multivolume member
2649         names.
2650         * tests/multiv03.sh: New file
2651         * tests/Makefile.am: Added multiv03.sh
2652
2653 2004-08-09  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2654
2655         * src/list.c (read_and): Call decode_header before
2656         calling skip_member()
2657         (skip_member): Use is_sparse field to determine if the
2658         member is a sparse file.
2659
2660         * tests/Makefile.am: Added extrac05.sh
2661         * tests/extrac05.sh: New file
2662         * tests/append.sh: Rearranged leading comments. Added explicit
2663         references to report messages wherever available.
2664         * tests/delete01.sh: Likewise
2665         * tests/delete02.sh: Likewise
2666         * tests/delete03.sh: Likewise
2667         * tests/delete04.sh: Likewise
2668         * tests/extrac01.sh: Likewise
2669         * tests/extrac02.sh: Likewise
2670         * tests/extrac03.sh: Likewise
2671         * tests/extrac04.sh: Likewise
2672         * tests/gzip.sh: Likewise
2673         * tests/ignfail.sh: Likewise
2674         * tests/incremen.sh: Likewise
2675         * tests/link01.sh: Likewise
2676         * tests/listed01.sh: Likewise
2677         * tests/longv7.sh: Likewise
2678         * tests/multiv01.sh: Likewise
2679         * tests/multiv02.sh: Likewise
2680         * tests/old.sh: Likewise
2681         * tests/options.sh: Likewise
2682         * tests/recurse.sh: Likewise
2683         * tests/same-order01.sh: Likewise
2684         * tests/same-order02.sh: Likewise
2685         * tests/sparse01.sh: Likewise
2686         * tests/version.sh: Likewise
2687         * tests/volume.sh: Likewise
2688
2689 2004-08-08  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2690
2691         * bootstrap: Extended --update-po option to take an
2692         optional argument specifying the po file to update.
2693         * src/create.c: Improved compatibility with 1.13.25
2694         * tests/link01.sh: New file.
2695         * tests/Makefile.am: Added link01.sh
2696
2697 2004-08-06  Paul Eggert  <eggert@cs.ucla.edu>
2698
2699         Merge from gnulib.
2700
2701         * patches/argp.diff: Remove; no longer needed.
2702
2703         * lib/.cvsignore: Add stat-macros.h.
2704         Remove addext.c, malloc.c, realloc.c.
2705
2706         * src/extract.c: Include <getcwd.h>.
2707         (extract_archive): Rewrite with new macro IS_ABSOLUTE_FILE_NAME.
2708         * src/extract.c (make_directories):
2709         FILESYSTEM_PREFIX_LEN -> FILE_SYSTEM_PREFIX_LEN.
2710         * src/misc.c (must_be_dot_or_slash): Likewise.
2711         * src/names.c (excluded_name, safer_name_suffix, stripped_prefix_len):
2712         Likewise.
2713         * src/tar.c (parse_opt): Likewise.
2714         * src/incremen.c (purge_directory): Fix format buffer typos in warning
2715         strings.
2716         * src/tar.c (options): Add missing initializers to pacify gcc.
2717         (decode_options): Remove unused var.
2718
2719 2004-08-02  Paul Eggert  <eggert@cs.ucla.edu>
2720
2721         * bootstrap (gnulib_modules): Add getpagesize.
2722         * configure.ac (valloc): Remove check; valloc no longer used.
2723         * lib/.cvsignore: Add getpagesize.h.
2724         * m4/.cvsignore: Add getpagesize.m4.
2725         * src/buffer.c (record_buffer): New var.
2726         (open_archive): Don't use valloc; on older or buggy hosts, you can't
2727         free the result.  Use page_aligned_alloc instead.
2728         * src/compare.c (diff_init): Likewise.
2729         * src/buffer.c (open_archive): Record the pointer to be freed
2730         into record_buffer.
2731         (close_archive): Free record_buffer.
2732         * src/common.h (page_aligned_alloc): New decl.
2733         * src/misc.c (quote_n, quote): Remove these redundant functions.
2734         (ptr_align): New function, from coreutils/src/system.h.
2735         (page_aligned_alloc): New function.
2736         * src/system.h (valloc): Remove.
2737
2738 2004-07-09  Paul Eggert  <eggert@cs.ucla.edu>
2739
2740         * src/extract.c (extract_archive): Do not report an error
2741         when hard-linking X to X when X exists.  Problem reported by
2742         Toby Peterson.
2743         * lib/.cvsignore: Add fchown-stub.c.
2744
2745 2004-06-29  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2746
2747         * NEWS: Updated
2748         * src/common.h (root_device): New global.
2749         (gnu_restore): Renamed to purge_directory().
2750         * src/extract.c (extr_init): Save the device number
2751         of the root device.
2752         (extract_archive): Renamed gnu_restore() to purge_directory().
2753         * src/incremen.c (gnu_restore): Renamed to purge_directory().
2754         Do not attempt to purge the directory if it is on a different
2755         device and one_file_system_option is set.
2756
2757 2004-06-25  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2758
2759         * doc/tar.texi: The actual default for exclude patterns
2760         is --no-anchored. Fixed.
2761         * src/tar.c (options): Likewise.
2762         Thanks "Felix Natter" <felix.natter@ldc.de> for noticing.
2763
2764 2004-06-22  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2765
2766         * doc/tar.texi: Fixed several inconsistencies.
2767         * src/tar.c: Fixed docstring for --checkpoint option.
2768
2769 2004-05-19  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2770
2771         * src/buffer.c (seek_archive): New function
2772         * src/common.h (seek_archive): New function
2773         (seekable_archive): New global.
2774         * src/list.c (skip_file): Use seek_archive() if
2775         possible.
2776         * src/tar.c (struct fmttab): Accept 'pax' as alias
2777         for 'posix'
2778         (options): New option -n (--seek).
2779         * src/update.c: Determine type of the archive before
2780         appending to it.
2781
2782         * TODO: Updated.
2783
2784 2004-05-19  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2785
2786         * bootstrap: New option --update-po
2787         * src/tar.c: New option -H (short alias to --format)
2788         * doc/tar.texi: Document -H option
2789         * src/names.c (safer_name_suffix): Fixed bug introduced
2790         2004-05-11.
2791
2792 2004-05-16  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2793
2794         * bootstrap: Apply patches from patch subdirectory
2795         * patches: New dir
2796         * patches/argp.diff: New file
2797         * patches/getopt.diff: New file
2798         * configure.ac: Check for _getopt_long_only_r and
2799         force using included version of getopt if the function
2800         is not available.
2801         * src/tar.c: Use argp for command line parsing.
2802         * src/system.h: Minor formatting fix
2803         * m4/.cvsignore: Updated
2804         * lib/.cvsignore: Updated
2805         * doc/tar.texi: Minor fix.
2806         * src/extract.c: Fix improper use of 'path' term
2807         * src/incremen.c: Likewise
2808         * src/list.c: Likewise
2809         * src/misc.c: Likewise
2810         * src/names.c: Likewise
2811         * src/rmt.h: Likewise
2812         * src/rtapelib.c: Likewise
2813         * src/update.c: Likewise
2814         * src/xheader.c: Likewise
2815         * tests/star/README: Minor fix
2816
2817 2004-05-13  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2818
2819         * configure.ac: Raised version number to 1.14.1
2820         * src/tar.c: Renamed --strip-path to --strip-components
2821         Changed improper use of _() to ngettext().
2822         * src/extract.c: Renamed strip_path_option to strip_components_option
2823         * src/common.h: Likewise.
2824         * NEWS: Updated.
2825         * doc/tar.texi: Updated
2826
2827 2004-05-11  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2828
2829         * src/system.c (sys_child_open_for_uncompress): Do not
2830         set read_full_records_option: the compressed archive is
2831         likely not to contain integer number of records. Should
2832         the user wish to use reblocking, he may always give tar
2833         -B option. This is a minor improvement over the change
2834         dated 2004-03-22.
2835         * src/buffer.c (open_archive): Removed assignment to
2836         read_full_records_option.
2837
2838         * src/names.c (safer_name_suffix): (safer_name_suffix): Use "%s"
2839         as the format argument, rather than a possibly-translated variable
2840         string. Patch provided by Jim Meyering  <jim@meyering.net>
2841         * src/tar.c (decode_options): Fixed typo in the comment.
2842         * tests/star/README: Minor correction
2843
2844 2004-05-11  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2845
2846         * directory: New file. GNU directory entry for tar.
2847         * doc/Makefile.am: Rewritten. Added rules for generating
2848         documentation for the project's website.
2849         * doc/.cvsignore: Updated
2850         * doc/index.html.in: New file.
2851
2852 2004-05-11  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2853
2854         * configure.ac: Raised version number to 1.14
2855         * NEWS: Updated.
2856         * tests/after: Added copyleft statement
2857         * tests/before: Added copyleft statement
2858         * tests/preset.in: Added copyleft statement
2859
2860         Tar 1.14 is released. Sources up to this point are tagged
2861         release_1_14
2862
2863 2004-05-10  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2864
2865         * configure.ac: Fixed prerequisite headers for sys/buf.h
2866         (needed on FreeBSD)
2867         * src/system.h: Likewise.
2868         * tests/after (compare): Fixed argument quoting under eval
2869         * tests/before: Quote TAR_ARCHIVE_FORMATS
2870
2871 2004-05-10  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2872
2873         * NEWS: Updated
2874         * README: Updated
2875         * PORTS: Updated
2876         * configure.ac: Call gl_AC_TYPE_INTMAX_T. Document
2877         DEFAULT_.* variables. Use DEFAULT_RMT_COMMAND to set
2878         the pathname of the rmt utility.
2879         New option --enable-backup-scripts.
2880         * doc/tar.texi: Updated
2881         * scripts/Makefile.am: Install the scripts only if requested
2882         by the configure.
2883         * scripts/backup.in: Fixed --version output.
2884         Fixed initialization of the listing files and printing
2885         the time of the last previous level dump.
2886         * scripts/restore.in: Fixed --version output.
2887         * src/Makefile.am (localedir.h rule): Generate correct
2888         DEFAULT_RMT_COMMAND variable.
2889         * src/common.h (rmt_command_option): New variable.
2890         * src/list.c (read_and): Print block number before
2891         issuing 'Skipping to next header' diagnostics, if
2892         requested by block_number_option.
2893         * src/rtapelib.c: Use rmt_command_option instead of
2894         hardcoded "/etc/rmt".
2895         * src/tar.c: New option --rmt-command.
2896         (decode_options): Handle --rmt-command. Initialize
2897         rmt_command_option to DEFAULT_RMT_COMMAND.
2898
2899 2004-05-09  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2900
2901         * doc/tar.texi: Further update.
2902
2903 2004-05-08  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2904
2905         * configure.ac: Minor fix
2906         * scripts/Makefile.am: Updated
2907         * scripts/backup-specs: Updated
2908         * scripts/backup.in: Minor fixes
2909         * scripts/backup.sh: Removed
2910         * scripts/backup.sh.in: New file. Source for backup.sh
2911         * scripts/restore.in: New file
2912         * scripts/.cvsignore: Updated
2913         * scripts/WARNING: Removed
2914         * doc/tar.texi: Updated
2915         * NEWS: Updated
2916
2917 2004-05-07  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2918
2919         * src/names.c (name_gather): Bugfix: Honor single -C with
2920         --same-order.
2921         * tests/same-order01.sh: New file
2922         * tests/same-order02.sh: New file
2923         * tests/Makefile.am: Updated
2924
2925         * tests/append.sh: Added copyleft header
2926         * tests/delete01.sh: Likewise
2927         * tests/delete02.sh: Likewise
2928         * tests/delete04.sh: Likewise
2929         * tests/extrac01.sh: Likewise
2930         * tests/extrac02.sh: Likewise
2931         * tests/extrac03.sh: Likewise
2932         * tests/extrac04.sh: Likewise
2933         * tests/gzip.sh: Likewise
2934         * tests/ignfail.sh: Likewise
2935         * tests/incremen.sh: Likewise
2936         * tests/multiv01.sh: Likewise
2937         * tests/old.sh: Likewise
2938         * tests/options.sh: Likewise
2939         * tests/recurse.sh: Likewise
2940         * tests/version.sh: Likewise
2941         * tests/volume.sh: Likewise
2942         * tests/star/gtarfail.sh: Likewise
2943         * tests/star/gtarfail2.sh: Likewise
2944         * tests/star/multi-fail.sh: Likewise
2945         * tests/star/pax-big-10g.sh: Likewise
2946         * tests/star/qucktest.sh: Likewise
2947         * tests/star/ustar-big-2g.sh: Likewise
2948         * tests/star/ustar-big-8g.sh: Likewise
2949
2950         * doc/.cvsignore: Updated
2951
2952 2004-05-06  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2953
2954         * configure.ac: Check whether date accepts +format argument
2955         (for backup scripts).
2956         * scripts/level-0: Removed
2957         * scripts/level-1: Removed
2958         * scripts/weekly.new: Removed
2959         * scripts/dump-remind: Removed
2960         * scripts/backup.in: New file
2961         * scripts/backup.sh: New file
2962         * scripts/dump-remind.in: New file
2963         * scripts/backup-specs: Updated
2964         * scripts/Makefile.am: Updated for new directory contents.
2965         * scripts/.cvsignore: Updated
2966
2967 2004-05-05  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2968
2969         * TODO: Updated
2970         * doc/tar.texi: Updated
2971         * src/tar.c: --utc implies -vv
2972
2973 2004-04-28  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2974
2975         * src/utf8.c: Make sure ICONV_CONST is defined. AM_ICONV
2976         does not define it if it fails to find iconv.h.
2977
2978 2004-04-26  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2979
2980         * bootstrap: Use gnulib-tool to generate lib/Makefile.am
2981         and parts of configure.ac
2982         * configure.ac: Invoke tar_GNULIB to configure gnulib stuff.
2983         * lib/Makefile.am: Removed
2984         * lib/Makefile.tmpl: New file.
2985         * lib/.cvsignore: Updated
2986         * m4/.cvsignore: Updated
2987         * src/xheader.c: Include stpcpy.h
2988
2989         * src/create.c: Produce an error, not warning, if the
2990         filename is too long.
2991         * tests/longv7.sh: Synchronized with the recent changes.
2992
2993 2004-04-20  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
2994
2995         * configure.ac: Fixed test for iconv_t
2996         * src/rmt.h: Bugfix by Jürgen Weigert
2997         * THANKS: Add Jürgen Weigert
2998         * tests/star/README: Fixed typo
2999
3000 2004-04-04  Paul Eggert  <eggert@twinsun.com>
3001
3002         Merge getdate documentation changes from coreutils.
3003
3004         * doc/getdate.texi: Update from coreutils CVS.
3005         * doc/tar.texi: Fix getdate menu to match getdate.texi's.
3006
3007         Merge recent gnulib changes, and remove some lint.
3008
3009         Improve support for nanosecond-resolution time stamps.
3010         * bootstrap: Add gettime, timespec modules.
3011         * configure.ac (gl_GETTIME, gl_TIMESPEC): Add.
3012         * lib/.cvsignore (getopt_int.h, gettime.c, gettimeofday.c,
3013         timespec.h): Add.
3014         * lib/Makefile.am (libtar_a_SOURCES): Add gettime.c, timespec.h.
3015         * m4/.cvsignore: Add clock_time.m4, gettime.m4, gettimeofday.m4,
3016         st_mtim.m4, timespec.m4.  Remove malloc.m4, realloc.m4.
3017         * src/common.h (newer_mtime_option): Now a struct timespec, not
3018         time_t.  All uses changed.
3019         (NEWER_OPTION_INITIALIZED, OLDER_STAT_MTIME): New macros.
3020         * src/create.c (dump_file0): Use OLDER_STAT_TIME to compare times.
3021         * src/incremen.c (scan_path): Likewise.
3022         * src/list.c (read_and): Likewise.
3023         * src/list.c (read_and): Use NEWER_OPTION_INITIALIZED to decide
3024         whether newer_mtime_option is initialized.
3025         * src/tar.c (decode_options): Likewise.
3026         * src/tar.c (decode_options): Adjust to new signature for get_date.
3027
3028         * src/buffer.c (short_read, flush_read): Use size_t, not ssize_t, for
3029         result of safe_read, full_write, and similar functions.
3030         Detect safe_read error by comparing to SAFE_READ_ERROR;
3031         detect full_write error by comparing to 0.
3032         All uses changed.
3033         * src/common.h (write_error_details, sys_write_archive_buffer):
3034         Likewise.
3035         * src/misc.c (write_error_details): Likewise.
3036         * src/rmt.c (main): Likewise.
3037         * src/rmt.h (rmt_read__, rmt_write__): Likewise.
3038         * src/rtapelib.c (rmt_read__, rmt_write__, rmt_ioctl__): Likewise.
3039         * src/sparse.c (sparse_scan_file, sparse_dump_region,
3040         check_sparse_region, check_data_region): Likewise.
3041         * src/system.c (sys_write_archive_buffer, sys_drain_input_pipe,
3042         sys_child_open_for_compress, sys_child_open_for_uncompress): Likewise.
3043         * src/update.c (append_file): Likewise.
3044
3045         * src/buffer.c (clear_read_error_count): Use explicit (void)
3046         to indicate a function with no arguments.
3047         * src/create.c (check_links): Likewise.
3048         * src/system.c (sys_get_archive_stat, sys_save_archive_dev_ino,
3049         sys_detect_dev_null_output, sys_drain_input_pipe, sys_spawn_shell,
3050         sys_reset_uid_gid, sys_get_archive_stat, sys_save_archive_dev_ino,
3051         sys_detect_dev_null_output, sys_drain_input_pipe, sys_spawn_shell):
3052         Likewise.
3053         * src/utf8.c (get_input_charset): Likewise.
3054         * src/xheader.c (xheader_ghdr_name, xheader_write_global,
3055         xheader_decode_global, extended_header_init): Likewise.
3056         * tests/mksparse.c (usage): Likewise.
3057
3058         * src/buffer.c (new_volume): Rename local variables to avoid
3059         shadowing warnings.
3060         * src/common.h (file_dumpable_p, sys_stat_nanoseconds,
3061         sparse_file_p, sparse_member_p, sparse_fixup_header,
3062         sparse_dump_file, sparce_extract_file, sparse_skip_file,
3063         sparse_diff_file): Likewise.
3064         * src/compare.c (diff_archive): Likewise.
3065         * src/create.c (file_dumpable_p, dump_regular_file, dump_dir0,
3066         dump_dir, dump_hard_link, file_count_links, dump_file0, dump_file):
3067         Likewise.
3068         * src/extract.c (repair_delayed_set_stat): Likewise.
3069         * src/misc.c (maybe_backup_file, add_hierarchy_to_namelist):
3070         Likewise.
3071         * src/sparse.c (struct tar_sparse_optab, tar_sparse_dump_region,
3072         tar_sparse_extract_region, sparse_dump_region, sparse_extract_region,
3073         sparse_dump_file, sparse_file_p, sparse_member_p,
3074         sparse_fixup_header, sparse_extract_file, sparse_skip_file,
3075         check_data_region, sparse_diff_file): Likewise.
3076         * src/system.c (sys_stat_nanoseconds): Likewise.
3077         * src/xheader.c (xheader_format_name): Likewise.
3078
3079         * src/common.h (enum old_files): Remove comma before }; not portable.
3080
3081         * src/common.h (read_fatal_details): Add __attribute__ ((noreturn)).
3082         * src/rmt.c (usage): Likewise.
3083         * src/xheader.c (xheader_set_single_keyword): Likewise.
3084         * tests/genfile.c (usage): Likewise.
3085         * tests/mksparse.c (die, usage): Likewise.  Also add printf attribute
3086         to die.
3087
3088         * src/common.h (gname_to_gid, uname_to_uid): Add const to avoid
3089         some gcc warnings.
3090         * src/names.c (uname_to_uid, gname_to_gid): Likewise.
3091         * src/utf8.c (struct langtab.lang, struct langtab.terr, struct
3092         langtab.charset, charset_lookup): Likewise.
3093
3094         * src/common.h (name_init): Remove unused args.  All callers changed.
3095         * src/names.c (name_init): Likewise.
3096
3097         * src/common.h (usage, xheader_write, xheader_write_global,
3098         sys_reset_uid_gid): New decls.
3099
3100         * src/compare.c (report_difference, process_noop): Add
3101         __attribute__ ((unused)) for unused attributes.
3102         * src/sparse.c (oldgnu_sparse_member_p, star_sparse_member_p):
3103         Likewise.
3104         * src/xheader.c (dummy_coder, dummy_decoder, atime_coder,
3105         gid_coder, gname_coder, linkpath_coder, ctime_coder, mtime_coder,
3106         path_coder, size_coder, uid_coder, uname_coder,
3107         sparse_numblocks_coder): Likewise.
3108
3109         * src/create.c (dump_regular_finish, dump_dir0, dump_dir,
3110         dump_file0): Now static.
3111         * src/utf8.c (charset_lookup): Likewise.
3112         * src/xheader.c (xheader_protected_pattern_p,
3113         xheader_protected_keyword_p, xheader_set_single_keyword,
3114         xheader_keyword_deleted_p, xheader_keyword_override_p,
3115         xheader_list_append, xheader_list_destroy, xheader_set_keyword_equal):
3116         Likewise.
3117         * tests/genfile.c (usage): Likewise.
3118         * tests/mksparse.c (die, mkhole, mksparse, usage, xlat_suffix):
3119         Likewise.
3120
3121         * src/create.c (hash_link): Rewrite to avoid cast.
3122
3123         * src/extract.c (file_newer_p): Use parameter, not global var.
3124         * src/misc.c (write_error_details): Likewise.
3125
3126         * src/extract.c (prepare_to_extract): Remove directory arg; not
3127         used.  All callers changed.
3128
3129         * src/misc.c (close_fatal): Remove; not used.
3130         * src/system.c (sys_utimes): Likewise.
3131
3132         * src/rmt.c (get_string): Avoid buffer overrun (off by 1 error).
3133
3134         * src/rmt.c (main): Update copyright date to 2004.
3135         * src/tar.c (decode_options): Likewise.
3136
3137         * src/rtapelib.c (get_status_string): Don't lose errno when
3138         skipping the error messages.
3139         (get_status): Report an error if atol returns a negative number.
3140
3141         * src/utf8.c (struct langtab, langtab, charset_lookup,
3142         get_input_charset) [!defined HAVE_LIBCONV]: Omit unused
3143         definitions.
3144         (iconv_open, iconv, iconv_close) [!defined HAVE_LIBCONV]:
3145         Use macros, not definitions, to avoid type clashes with system
3146         headers.
3147         (charset_lookup): Local var is now auto, not static.
3148         (utf8_convert): Use ICONV_CONST instead of const, to avoid
3149         type clashes.
3150
3151         * src/utf8.c (langtab): Initialize all elements of struct, to
3152         avoid gcc warning.
3153         * src/xheader.c (xhdr_tab): Likewise.
3154
3155         * src/xheader.c: Include fnmatch.h, since we use fnmatch.
3156
3157         * tests/mksparse.c (mkhole): Fix typo: bool was assigned to off_t.
3158
3159 2004-04-04  Sergey Poznyakoff  <gray@Noldor.runasimi.org>
3160
3161         * NEWS: Updated
3162         * configure.ac: Raised version number to 1.13.94
3163         * src/system.h: Protect inclusion of <sys/time.h>
3164         by ifdef.
3165         Declare time() if HAVE_DECL_TIME is 0
3166         * tests/.cvsignore: Added mksparse
3167
3168         * tests/sparse01.sh: New file
3169         * tests/multiv02.sh: New file
3170         * tests/Makefile.am: Add sparse01.sh and multiv02.sh
3171         * tests/longv7.sh: Added missing call to 'after'
3172
3173         * src/common.h: Added missing prototypes
3174         * src/compare.c (diff_archive): Use is_sparse member
3175         instead of GNUTYPE_SPARSE.
3176         * src/create.c: Removed unused variables
3177         * src/extract.c (extract_archive): Use sparse_member_p instead
3178         of GNUTYPE_SPARSE.
3179         Removed unused variables
3180         * src/list.c (decode_header): Use sparse_fixup_header to correct
3181         the st_size value.
3182         (print_header): Do not rely on GNUTYPE_SPARSE type.
3183         Use st->stat.st_size to print real file size.
3184         (skip_member): Assign stat_info.file_name to save_name. This fixes
3185         bug reported by Mads Martin Joergensen <mmj@suse.de>
3186         Use sparse_skip_file() to skip sparse members.
3187         * src/rtapelib.c: include "common.h"
3188         * src/sparse.c (struct tar_sparse_optab.sparse_member_p)
3189         (struct tar_sparse_optab.fixup_header): New member
3190         (tar_sparse_member_p): New function.
3191         (tar_sparse_init): Return true if decode_header is not provided
3192         (tar_sparse_fixup_header)
3193         (sparse_member_p,sparse_fixup_header)
3194         (sparse_skip_file)
3195         (oldgnu_sparse_member_p,oldgnu_fixup_header,star_sparse_member_p)
3196         (star_fixup_header, pax_sparse_member_p): New function
3197         (pax_decode_header): Remove
3198         * src/system.h: Include <sys/time.h> and <utime.h> when available
3199         * src/tar.c (usage): Prototype moved to common.h
3200         * src/tar.h (struct tar_stat_info.is_sparse): New member
3201         * src/utf8.c (utf8_convert): Changed prototype
3202         (get_input_charset): Removed unused variable
3203         * src/xheader.c: include <fnmatch.h>
3204         (size_decoder): Assign to both st->archive_file_size and
3205         st->stat.st_size.
3206         (st->stat.st_size): Assign to st->stat.st_size
3207         (sparse_numbytes_decoder): Removed unused variable
3208         * src/.cvsignore: Added .gdbinit
3209         * THANKS: Added Mads Martin Joergensen
3210
3211 2004-03-26  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
3212
3213         * src/create.c (write_long_name): Do not allow more than
3214         NAME_FIELD_SIZE-1 characters in a file name for V7 format
3215         archives.
3216         * tests/longv7.sh: New file.
3217         * tests/Makefile.am: Add longv7.sh
3218
3219 2004-03-22  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
3220
3221         * src/buffer.c (open_archive): Clear read_full_records_option
3222         if reading from a pipe.
3223         (short_read): Display warning about the deduced record size
3224         if version > 1
3225         * tests/star/pax-big-10g.sh: Updated to match the above changes.
3226         * tests/star/ustar-big-2g.sh: Likewise.
3227         * tests/star/ustar-big-8g.sh: Likewise.
3228
3229         * configure.ac: Added gl_FUNC_STRTOULL
3230         * src/create.c (start_header): Check for GNU_FORMAT
3231         if incremental_option is set.
3232         * src/xheader.c (to_decimal): New function.
3233         (xheader_format_name): Use to_decimal() instead of snprintf.
3234         * tests/listed01.sh: Use genfile instead of dd
3235         * tests/multiv01.sh: Likewise.
3236
3237 2004-03-12  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
3238
3239         * src/list.c (read_and): Stop processing the archive after
3240         encountering a single zero record. Many old archives contain
3241         arbitrary garbage after it.
3242         The warning is issued anyway.
3243
3244 2004-03-02  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
3245
3246         * src/rtapelib.c (rmt_lseek__,rmt_ioctl__): Bugfix. The
3247         conversion buffer was not null terminated. Fix provided
3248         by Leland Lucius <llucius@tiny.net>
3249         * THANKS: Added Leland Lucius
3250         * src/utf8.c (utf8_convert): Indentation fix.
3251
3252 2004-02-29  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
3253
3254         * src/buffer.c (flush_read): Bugfix: the
3255         condition at line 714 included
3256
3257               || (status > 0 && !read_full_records_option)
3258
3259         which is grossly wrong, since even if new_volume() below succeeds,
3260         the subsequent call to rmtread will overwrite the chunk of data
3261         already read in the buffer and thus spoil everything.
3262         * src/system.c (sys_child_open_for_uncompress): Minor stylistic
3263         fix.
3264         * tests/star/multi-fail.sh: New test.
3265         * tests/Makefile.am: Added multi-fail.sh
3266         * tests/star/README: Updated
3267
3268 2004-02-29  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
3269
3270         * NEWS: Updated
3271         * configure.ac: Removed spurious AC_CHECK_LIB(iconv)
3272         * src/common.h (utc_option): new global
3273         (enum old_files.KEEP_NEWER_FILES): New element
3274         * src/extract.c: Handle --keep-newer-files option
3275         * src/list.c (tartime): Print UTC if --utc was given.
3276         * src/tar.c: New options: --utc and keep-newer-files
3277
3278         * tests/Makefile.am: Added new tests
3279         * tests/after: Rewritten
3280         * tests/before: Rewritten
3281         * tests/preset.in: Rewritten
3282         * tests/delete03.sh: Accommodate for the new testsuite logic
3283         * tests/gzip.sh: Likewise
3284         * tests/incremen.sh: Likewise
3285         * tests/listed01.sh: Likewise
3286         * tests/multiv01.sh: Likewise
3287         * tests/old.sh: Likewise
3288         * tests/options.sh: Likewise
3289         * tests/version.sh: Likewise
3290         * tests/volume.sh: Likewise
3291
3292         * tests/star: New directory
3293         * tests/star/README: New file
3294         * tests/star/gtarfail.sh: New file
3295         * tests/star/gtarfail2.sh: New file
3296         * tests/star/pax-big-10g.sh: New file
3297         * tests/star/qucktest.sh: New file
3298         * tests/star/ustar-big-2g.sh: New file
3299         * tests/star/ustar-big-8g.sh: New file
3300
3301 2004-02-26  Paul Eggert  <eggert@twinsun.com>
3302
3303         * doc/tar.texi (dircategory Individual utilities): Append period,
3304         as suggested by Karl Berry.
3305
3306 2004-02-24  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
3307
3308         * src/list.c (decode_header): Call xheader_decode before
3309         the assignment to current_stat_info.archive_file_size.
3310
3311 2004-02-23  Paul Eggert  <eggert@twinsun.com>
3312
3313         * configure.ac: Invoke AM_ICONV, to define ICONV_CONST if needed.
3314
3315 2004-02-23  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
3316
3317         1.13.93 released.
3318
3319         * NEWS: Updated
3320         * tests/before: Move testing of the prerequisite archive formats
3321         to the separate function 'prereq'. Do not expect any arguments
3322         * tests/delete03.sh: Use prereq() instead of passing arguments
3323         to 'before'.
3324         * tests/incremen.sh: Likewise.
3325         * tests/listed01.sh: Likewise.
3326         * tests/multiv01.sh: Likewise.
3327
3328 2004-02-22  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
3329
3330         Added UTF-8 support. Finished global extended header
3331         support.
3332
3333         * NEWS: Minor fix
3334         * configure.ac: Detect libiconv
3335         * src/utf8.c: New file. Conversions to and from utf-8.
3336         * src/Makefile.am: Added utf8.c
3337         * src/create.c (write_header_name) In pax format, use
3338         "path" keyword if the file name is not ASCII
3339         (start_header): Likewise for uname and gname.
3340         * src/list.c: Decode encountered global headers.
3341         * src/xheader.c: Use keywords from the global
3342         headers.
3343         Correctly handle UTF-8 conversions.
3344         (xheader_list_destroy): New function.
3345         (xheader_set_single_keyword,xheader_set_keyword_equal): Added
3346         missing gettext markers
3347         (decode_record): Rewritten using caller-provided handler and
3348         data closure.
3349         * tests/listed01.sh: Give credit to Andreas Schuldei.
3350
3351 2004-02-21  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
3352
3353         * src/create.c (dump_file0): The conditional at line
3354         1296 prevented incremental backups on individual files
3355         from working, as reported by Andreas Schuldei
3356         <andreas@schuldei.org>.
3357
3358         This is due to the condition
3359
3360           (0 < top_level || !incremental_option)
3361
3362         Removing it makes incremental backups work for individual
3363         files as well as for directories. On the other hand, it does
3364         not affect other functionality, as shown by the reasoning below:
3365
3366         To begin with, the two parts of this condition are mutually
3367         superfluous, because
3368
3369           1) when top_level < 0, incremental_option == 1
3370           so the condition yields false
3371           2) when top_level >= 0, incremental_option == 0
3372           so the condition yields true.
3373
3374         In other words, it is completely equivalent to
3375
3376               (!incremental_option)
3377
3378         Now, let's consider the effect of its removal. There are two cases:
3379
3380         1) when incremental_option==1
3381         This means incremental backup in progress. In this case dump_file
3382         is invoked only for directories or for files marked with 'Y' by
3383         get_directory_contents. The latter are those that did not meet the
3384         condition in incremen.c:242, which is exactly the same condition
3385         as this at create.c:1296. So, for these files the check
3386         (!incremental_option) is useless, since the rest of the
3387         conditional will yield false anyway. On the other hand, if
3388         dump_file is invoked on a directory, the conditional will yield
3389         false due to !S_ISDIR assertion, so these will be processed as usual.
3390
3391         Thus, for this case the extra condition (!incremental_option) is
3392         irrelevant, and its removal won't alter the behavior of tar,
3393         *except* that it will enable incremental backups on individual
3394         files, which is the wanted effect.
3395
3396         2) when incremental_option==0
3397         In this case the condition yields true and its removal does not
3398         affect the functionality.
3399
3400         * THANKS: Updated
3401         * configure.ac: Raised patchlevel to 93
3402         * src/incremen.c: Minor stylistic fixes.
3403         * tests/listed01.sh: New test. Check listed incremental
3404         backups on individual files.
3405         * tests/Makefile.am: Added listed01.sh
3406
3407 2004-02-20  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
3408
3409         * src/common.h (simple_finish_header,start_private_header): New
3410         declarations
3411         (xheader_ghdr_name): Changed declaration
3412         * src/create.c (start_private_header): Removed static qualifier.
3413         (write_extended): Removed superfluous last argument. Use
3414         xheader_write()
3415         (simple_finish_header): New function.
3416         (finish_header): Use simple_finish_header() to break recursive
3417         dependency between this function and write_extended().
3418         * src/tar.c (assert_format): Do not bail out if several
3419         --format arguments are given. This is a common case when
3420         TAR_OPTIONS are used.
3421         (decode_options): New option --show-defaults displays the
3422         compiled-in defaults.
3423         Use POSIX format if no --format option was given and
3424         --pax-option was specified.
3425         Do not allow to use --pax-option unless the archive format is
3426         set to POSIX (or reading subcommand is requested).
3427
3428         * src/update.c (update_archive): Write global extended header if
3429         constructed.
3430         * src/xheader.c (xheader_format_name): Bugfix.
3431         (xheader_xhdr_name): Changed the default extended header name
3432         to '%d/PaxHeaders.%p/%f', as POSIX requires.
3433         (xheader_ghdr_name): Removed unused argument.
3434         (xheader_write,xheader_write_global): New function.
3435         (xheader_decode): Modified to honor overrides whatever
3436         the current archive format is.
3437
3438         * src/delete.c (delete_archive_members): Call xheader_decode
3439         unconditionally.
3440         * src/list.c (decode_header): Likewise.
3441         * src/incremen.c (sort_obstack): Fixed typo in the comment
3442
3443         * doc/tar.texi: Document new default for extended
3444         header names.
3445
3446         * tests/before: Accept an optional list of allowed archive
3447         formats. Exit with the status 77 if the current archive
3448         format does not match any of them.
3449         * tests/delete03.sh: Require gnu, oldgnu or posix format
3450         * tests/incremen.sh: Require gnu or oldgnu format
3451         * tests/multiv01.sh: Likewise
3452
3453 2004-02-20  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
3454
3455         * doc/tar.texi (Option Summary): Documented --pax-option
3456         * src/tar.c: Likewise.
3457         * NEWS: Likewise.
3458         * src/create.c (to_chars): Added a comment.
3459         * src/tar.h: Comment to GNU_FORMAT
3460
3461 2004-02-18  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
3462
3463         * README: Updated
3464         * configure.ac: Added stpcpy
3465         * bootstrap: Likewise
3466         * lib/Makefile.am: Likewise
3467         * src/common.h (xheader_xhdr_name,xheader_ghdr_name): New
3468         functions
3469         * src/create.c (write_extended): Call xheader_xhdr_name
3470         instead of using hardcoded "././@PaxHeader" name.
3471         * src/tar.c: New option --pax-option (equivalent to -o option
3472         of pax).
3473         * src/xheader.c: Implement pax -o option. Fixed misleading
3474         heading comment (introduced 2003-09-02).
3475         * src/incremen.c: Minor fixes
3476         * m4/.cvsignore: Updated
3477
3478 2004-02-17  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
3479
3480         * src/incremen.c: Removed accumulator stuff in favor of obstack.
3481         (get_directory_contents): Split into two functions
3482         * src/update.c: Minor changes
3483         * doc/tar.texi: Fixed typo
3484
3485 2004-02-15  Paul Eggert  <eggert@twinsun.com>
3486
3487         Fix Debian bug 230872, originally reported by Jeff King in
3488         <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=230872>.
3489
3490         * doc/tar.texi (posix compliance): Remove.  The whole section
3491         was a misunderstanding of what POSIXLY_CORRECT is supposed to
3492         mean.  The GNU Coding Standards says that POSIXLY_CORRECT
3493         is for disabling extensions that are incompatible with POSIX:
3494         it is not for disabling compatible extensions.  All references
3495         to this section removed.
3496         (posix): This format is created only if the posix format is
3497         specified; it is no longer created if gnu format is specified
3498         and POSIXLY_CORRECT is set.
3499         * src/tar.c (decode_options): Ignore POSIXLY_CORRECT.
3500         POSIX does not specify the behavior of tar, so we should
3501         not worry about POSIXLY_CORRECT here.
3502
3503 2004-01-21  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
3504
3505         * Makefile.am: Removed m4
3506         * configure.ac: Require automake-1.8/autoconf-2.59. Removed
3507         m4/Makefile.
3508         * README-alpha: Updated
3509         * bootstrap: Updated TP URL, improved help output. Default
3510         to :ext:anoncvs and set CVS_RSH, unless already set.
3511         * m4/Makefile.am: Removed
3512
3513 2004-01-21  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
3514
3515         * bootstrap: Bugfix by Marco Gerards <metgerards@student.han.nl>:
3516         Use $option instead of $1 so all options will be parsed.
3517
3518 2004-01-04  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
3519
3520         Started rewriting buffer.c ...
3521
3522         * bootstrap: New option --no-po
3523         * src/buffer.c (new_volume,check_label_pattern): Changed return type.
3524         (time_to_start_writing): Changed data type
3525         (file_to_switch_to): Removed. Variable never assigned to.
3526         (open_archive) Moved option compatibility checks to tar.c
3527         Other minor changes.
3528         * src/common.h (maybe_backup_file): Changed return type
3529         * src/misc.c: Likewise.
3530         * src/create.c: Updated invocations of safer_name_suffix
3531         * src/extract.c: Likewise
3532         * src/delete.c: Updated assignment to write_archive_to_stdout
3533         * src/tar.c (decode_options): More option compatibility checks
3534         (moved from buffer.c)
3535         * src/update.c (time_to_start_writing): Changed data type.
3536         * tests/recurse.sh: New test case.
3537         * tests/mksparse.c: New file.
3538         * tests/Makefile.am: Added recurse.sh and mksparse.c
3539
3540 2004-01-02  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
3541
3542         * src/sparse.c (sparse_diff_file): Bugfix. Thanks
3543         Martin Simmons for the patch.
3544         * src/create.c (dump_dir0): Bugfix. Thanks Piotr Czerwinski
3545         <pius@pld-linux.org> for the patch.
3546
3547 2003-12-26  Paul Eggert  <eggert@twinsun.com>
3548
3549         Synchronize with Gettext 0.13.1, Automake 1.8, Autoconf 2.59,
3550         and translation website.
3551
3552         * bootstrap: Don't bother skipping codeset.m4, glibc21.m4,
3553         intdiv0.m4, inttypes_h.m4, inttypes.m4, inttypes-pri.m4,
3554         isc-posix.m4, and lcmessage.m4 from gnulib.  This list of files is
3555         a bit obsolete anyway, now that gettext 0.13.1 is out.  Also, the
3556         files are replaced by autoreconf.  Also, there seems to be a bug
3557         in gettext/autoconf/automake if we try to omit these files after
3558         autoreconf has replaced them, even though the gettext manual says
3559         they're optional.  So give up and just include them for now, even
3560         though they make 'configure' longer and slower.
3561
3562         Change translation URL from
3563         <http://www.iro.umontreal.ca/contrib/po/maint/tar/> to
3564         <http://www2.iro.umontreal.ca/~gnutra/po/maint/tar/> to
3565         accommodate translator website revamp.
3566
3567         Fail if autoreconf fails.
3568
3569         * m4/.cvsignore: Add intmax.m4, longdouble.m4, printf-posix.m4,
3570         signed.m4, size_max.m4, wchar_t.m4, wint_t.m4, xsize.m4, to
3571         ignore files now supplied by gettext 0.13.1.
3572
3573 2003-12-25  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
3574
3575         Synchronized with the backup repository on Mirddin
3576
3577 2003-12-19  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
3578
3579         * configure.ac: Check for varios members of struct stat
3580         that may represent file modification times with a subsecond
3581         precision.
3582         Check for utimes (for future use)
3583         * src/buffer.c (short_read): Issue a warning on short reads.
3584         * src/common.h (sys_stat_nanoseconds): New function
3585         * src/create.c (dump_file0): Use sys_stat_nanoseconds().
3586         * src/list.c (read_and): Treat only two successive zero
3587         filled blocks as an EOF indicator. Issue a warning if
3588         a single one is encountered.
3589         * src/system.c (sys_stat_nanoseconds): New function
3590         * src/tar.h (tar_stat_info.atime_nsec,mtime_nsec,ctime_nsec): New
3591         members.
3592         * src/xheader.c (code_time,decode_time): Support for subsecond
3593         precision.
3594         (atime_coder,atime_decoder,ctime_coder,ctime_decoder)
3595         (mtime_coder,mtime_decoder): Update invocations of code_time and
3596         decode_time.
3597         (gid_decoder,size_decoder,uid_decoder,sparse_size_decoder)
3598         (sparse_numblocks_decoder,sparse_offset_decoder)
3599         (sparse_numbytes_decoder): Updated
3600
3601 2003-12-18  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
3602
3603         * src/names.c (safer_name_suffix): Reverted change made
3604         2003-11-14. Reason: Discussion with Paul Eggert and
3605         Jean-Louis Martineau. See also ChangeLog entry from
3606         1999-08-14.
3607         * tests/delete03.sh: Likewise.
3608         * tests/extrac04.sh: Likewise.
3609         * tests/multiv01.sh: Likewise.
3610
3611 2003-12-12  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
3612
3613         * src/incremen.c (write_directory_file): Use sys_truncate
3614         * src/list.c (print_header): Use archive_file_size member
3615         when printing real file size.
3616         * src/sparse.c (sparse_scan_file): Correctly handle files with
3617         a hole at the end.
3618         (sparse_dump_region,sparse_extract_region): Allow for zero size
3619         trailing blocks
3620
3621 2003-12-12  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
3622
3623         * configure.ac: Raised version number to 1.13.92
3624         * src/list.c (decode_header): Discern between pax and ustar
3625         formats
3626         Initialize current_stat_info.archive_file_size.
3627
3628         NOTE: Modifications from this date on are temporarily
3629         stored on local CVS on mirddin. This repository will
3630         be synchronized with Savannah as soon as the latter
3631         becomes operational again.
3632
3633 2003-12-01  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
3634
3635         * TODO: Updated
3636         * src/sparse.c: Initial implementation of GNU/pax sparse
3637         file format.
3638         * src/common.h (xheader_store): Changed prototype.
3639         * src/create.c: Update calls to xheader_store
3640         * src/extract.c (extract_archive): Check reported size vs.
3641         archive file size to determine if we have to do with a
3642         sparse file.
3643         * src/tar.c (usage): Cleaned up the sample argument to --newer
3644         option.
3645         (decode_options): Allow --sparse for POSIX_FORMAT archives.
3646         * src/xheader.c (struct xhdr_tab.coder; all coder function): Added
3647         extra argument
3648         Implemented GNU.sparse.* keywords.
3649
3650 2003-11-30  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
3651
3652         * configure.ac: Check for setlocale. Thanks Bruno Haible for
3653         reporting.
3654
3655 2003-11-25  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
3656
3657         * src/create.c (write_gnu_long_link): Use oldgnu
3658         magic with @LongLink blocks.
3659
3660 2003-11-17  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
3661
3662         * src/tar.h: Support for star sparse format.
3663         * src/sparse.c: Likewise.
3664
3665 2003-11-17  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
3666
3667         * src/sparse.c (sparse_diff_file): New function
3668         * src/common.h (sys_compare_uid,sys_compare_gid): New functions
3669         (sys_compare_uid_gid): Removed.
3670         (sys_compare_links,report_difference): Changed prototype
3671         (sparse_diff_file): New function
3672         * src/system.c (sys_compare_uid,sys_compare_gid): New functions
3673         (sys_compare_uid_gid): Removed.
3674         (sys_compare_links): Changed declaration
3675         * src/compare.c (diff_archive): Use sparse_diff_file.
3676
3677 2003-11-16  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
3678
3679         Rewritten sparse file handling.
3680
3681         * src/sparse.c: New file. Provides a universal framework
3682         for various methods for sparse files handling.
3683         * src/Makefile.am: Added sparse.c
3684         * src/common.h (struct sp_array,sparsearray,sp_array_size)
3685         (init_sparsearray,fill_in_sparse_array): Removed
3686         (enum dump_status): New data type
3687         (pad_archive,close_diag,open_diag,read_diag_details)
3688         (readlink_diag,savedir_diag,seek_diag_details,stat_diag): New
3689         functions.
3690         (sparse_file_p,sparse_dump_file,sparse_extract_file): New
3691         functions.
3692         (print_header): Changed prototype declaration.
3693         * src/tar.h (struct sp_array): Declaration from common.h
3694         (struct tar_stat_info): New members archive_file_size,
3695         sparse_map_avail,sparse_map.
3696         * src/create.c: Major rewrite.
3697         * src/extract.c: Use new sparse file interface.
3698         * src/compare.c (diff_sparse_files): Temporary placeholder.
3699
3700         * src/buffer.c: Minor changes
3701         * src/tar.c: Likewise.
3702         * src/list.c: Likewise.
3703         * src/misc.c (close_diag,open_diag,read_diag_details)
3704         (readlink_diag,savedir_diag,seek_diag_details,stat_diag): New
3705         diagnostics functions.
3706         * src/incremen.c: Use new diagnostics functions.
3707         * src/names.c: Likewise.
3708
3709 2003-11-14  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
3710
3711         * configure.ac: Fixed check for setsockopt
3712
3713         * src/create.c: Do not zero-terminate name field if
3714         the name is exactly 100 characters long.
3715         (write_ustar_long_name): Fixed cheking for unsplittable
3716         names.
3717
3718 2003-11-14  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
3719
3720         * src/create.c (start_header): Removed debugging hook
3721         (dump_file): Fixed handling of linkname field.
3722         * src/names.c (safer_name_suffix): If the input
3723         file name ends with a slash, output one should do so
3724         as well.
3725         * doc/tar.texi: Documented --format=ustar
3726
3727 2003-11-14  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
3728
3729         * src/tar.h (archive_format): USTAR_FORMAT: New type.
3730         * src/create.c: Added POSIX.1-1988 support.
3731         * src/names.c (safer_name_suffix): Skip leading ./
3732         * src/tar.c: New option --format=ustar forces
3733         POSIX.1-1988 archive format.
3734         * tests/delete03.sh: Updated.
3735         * tests/extrac04.sh: Updated.
3736         * tests/multiv01.sh: Updated.
3737
3738 2003-11-13  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
3739
3740         * src/list.c (read_and): Initialize current_stat_info
3741         and extended_header at the start of the loop.
3742         * src/names.c (all_names_found): Check if the argument
3743         contains valid filename. Fixes coredump on `not_a_tar_file'
3744         * src/xheader.c (atime_decoder,gid_decoder,ctime_decoder)
3745         (mtime_decoder,size_decoder,uid_decoder): Use xstrtoumax.
3746         Fixes `pax-big-10g' bug.
3747
3748 2003-11-12  Paul Eggert  <eggert@twinsun.com>
3749
3750         Fix some C compatibility bugs reported by Joerg Schilling.
3751
3752         * src/common.h (stripped_prefix_len): Fix misspelling
3753         "stripped_path_len" in declaration.
3754         * src/rmt.c (main): Use "return FOO;" rather than
3755         "exit (FOO);"; we no longer have to worry about
3756         pre-ANSI hosts that mishandled returned values from "main".
3757         * src/tar.c (main): Likewise.  This avoids warnings on some
3758         compilers.
3759         * src/system.c: Include signal.h, for 'kill'.
3760         * src/system.h (DEV_BSIZE): Remove.
3761         (DEFAULT_ST_BLKSIZE): New macro.
3762         (ST_BLKSIZE): Use it, instead of DEV_BSIZE.
3763         * src/tar.c (enum): Remove comma just before }.
3764
3765 2003-11-12  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
3766
3767         * src/list.c (decode_header): Initialize st_atime and
3768         st_ctime.
3769
3770 2003-11-11  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
3771
3772         * configure.ac (tar_save_LIBS): Bugfix. Thanks Adrian
3773         Bunk <bunk@fs.tum.de> for reporting.
3774         * doc/tar.texi: Fixed spelling. Thanks Martin Buchholz
3775         <martin@xemacs.org> for spotting.
3776
3777 2003-11-04  Paul Eggert  <eggert@twinsun.com>
3778
3779         * src/xheader.c (xhdr_tab): Make it extern, not static, as C89 and
3780         C99 require this.
3781
3782 2003-10-26  Paul Eggert  <eggert@twinsun.com>
3783
3784         * src/system.c (sys_spawn_shell): Cast trailing null to (char *).
3785         Bug reported by Christian Weisgerber.
3786
3787 2003-10-19  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
3788
3789         * AUTHORS: Updated
3790         * NEWS: Updated
3791         * src/tar.c (decode_options): Removed superfluous archive format
3792         check
3793         * doc/tar.texi: Documented new features.
3794
3795 2003-10-08  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
3796
3797         * NEWS: Updated
3798         * THANKS: Added Wojciech Polak
3799         * configure.ac: Added checks for missing functions. Raised
3800         version number to indicate alpha release.
3801         * lib/Makefile.am: Added missing headers
3802         * lib/waitpid.c: Added missing includes.
3803         * src/extract.c: Likewise.
3804         * src/names.c: Removed spurious includes.
3805         * src/xheader.c: Likewise.
3806         * src/system.h [MSDOS]: Fixed spelling of EACCES. Added
3807         macro overriding broken mkdir prototypes.
3808
3809 2003-10-04  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
3810
3811         * configure.ac: Check for dev_t and ino_t.
3812         * m4/Makefile.am: Added missing files.
3813         * src/system.c: New file.
3814         * src/Makefile.am: Added system.c
3815         * src/common.h: Prototypes for functions from system.c
3816         * src/system.h (SET_BINARY_MODE, ERRNO_IS_EACCESS): New defines
3817         * src/buffer.c: Moved system dependencies to system.c
3818         * src/compare.c: Likewise.
3819         * src/create.c: Likewise.
3820         * src/delete.c: Likewise.
3821         * src/extract.c: Likewise.
3822         * src/rtapelib.c: Likewise.
3823
3824 2003-10-04  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
3825
3826         Implemented --occurrence option.
3827
3828         * NEWS: Updated.
3829         * src/tar.c: New option --occurrence.
3830         * src/common.h (occurrence_option): New global
3831         (struct name): Changed `found' member to `uintmax_t
3832         found_count'.
3833         (names_done): Removed
3834         (all_names_found): Changed prototype.
3835         (ISFOUND,WASFOUND): New macros
3836         * src/delete.c (delete_archive_members): Honor --occurrence
3837         option.
3838         * src/list.c (read_and): Likewise.
3839         * src/names.c: Count number of occurrences of each name in the
3840         archive.
3841         (name_match): Honor --occurrence option.
3842         (names_done): Removed
3843         (all_names_found,names_notfound): Rewritten.
3844
3845 2003-10-02  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
3846
3847         * src/tar.c: Removed extra precaution regarding
3848         subcommand_option == CAT_SUBCOMMAND
3849         * lib/Makefile.am: Updated
3850
3851 2003-10-02  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
3852
3853         * src/common.h (names_done): New function.
3854         * src/names.c: Likewise.
3855         * src/list.c (read_and): Use all_names_found() as `while'
3856         condition.
3857         * src/tar.c: New option --first-copy
3858         * NEWS: Updated
3859
3860 2003-09-24  Paul Eggert  <eggert@twinsun.com>
3861
3862         * src/rmt.c (main): Don't translate Copyright string; international
3863         law says the word "Copyright" should be in English.
3864         * src/tar.c (decode_options): Likewise.
3865
3866 2003-09-22  Paul Eggert  <eggert@twinsun.com>
3867
3868         * doc/tar.texi (extracting untrusted archives): New section.
3869
3870         * src/common.h (stripped_path_len): Renamed from cut_path_elements.
3871         Return size_t, not pointer, so that we don't have to worry about
3872         violating the C standard by converting char const * to char *.
3873         All callers changed.
3874         * src/names.c (stripped_path_len): Likewise.  Strip file system
3875         prefix, too.  Count adjacent slashes as if they were one slash;
3876         that is the POSIX standard.
3877
3878 2003-09-17  Paul Eggert  <eggert@twinsun.com>
3879
3880         * README-alpha: Document maintainer tool assumptions a bit.  GNU
3881         'sed' is no longer required.  For GNU m4 1.4, suggest the patch in
3882         Debian bug 211447.  Fix minor misspellings/whitespace nits.
3883
3884         * configure.ac (AC_AIX, AC_MINIX): Remove; subsumed by
3885         gl_USE_SYSTEM_EXTENSIONS.
3886
3887         * lib/.cvsignore: Add exit.h, time_r.c, time_r.h.
3888         * m4/.cvsignore: Add restrict.m4, time_r.m4.
3889
3890 2003-09-17  Paul Eggert  <eggert@twinsun.com>
3891
3892         * bootstrap: Don't use "for option; do";
3893         Solaris 8 /bin/sh doesn't like that.
3894
3895 2003-09-17  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
3896
3897         * README-alpha: Updated
3898         * bootstrap: Updated
3899
3900 2003-09-17  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
3901
3902         * README-alpha: Updated
3903         * bootstrap: Updated
3904         * po/POTFILES.in: Added src/xheader.c
3905         * src/common.h (cut_path_elements): Added proto.
3906
3907 2003-09-05  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
3908
3909         * src/buffer.c: Use ngettext where appropriate.
3910         * src/compare.c: Likewise.
3911         * src/create.c: Likewise.
3912         * src/misc.c: Likewise.
3913         * src/tar.c: Likewise.
3914         * src/update.c: Likewise.
3915
3916 2003-09-04  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
3917
3918         * .cvsignore: Added *.shar.gz
3919         * NEWS: Updated
3920         * TODO: Updated
3921         * src/common.h (strip_path_elements): New variable.
3922         * src/extract.c (extract_archive): Implemented --strip-path
3923         * src/names.c (cut_path_elements): New function.
3924         * src/tar.c: New option --strip-path=NUM.
3925         (decode_options) Assign boolean values to bool variables.
3926
3927 2003-09-04  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
3928
3929         * src/delete.c: Fixed deletion from the POSIX archives.
3930         * src/list.c (read_header): Minor change.
3931         * src/tar.c (main): Do not check for volume_label_option
3932         if subcommand_option is not CREATE_SUBCOMMAND.
3933         * src/xheader.c (xheader_decode): Store the header as
3934         well (for eventual delete).
3935
3936         * tests/incremen.sh: Explicitly request GNU format. This will
3937         disappear when GNU extended header keywords are working.
3938         * tests/multiv01.sh: Likewise
3939         * tests/volume.sh: Likewise
3940
3941 2003-09-04  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
3942
3943         * src/create.c: Support for "linkpath" extended keyword.
3944         * src/xheader.c (decode_record): Reversed the return
3945         condition.
3946
3947 2003-09-03  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
3948
3949         * configure.ac: Allow to redefine the default output format.
3950         * src/tar.c: Use DEFAULT_ARCHIVE_FORMAT macro
3951         (archive_format_string): New function.
3952         (usage): Updated help output.
3953         * README: Updated.
3954         * NEWS: Updated.
3955         * TODO: Updated.
3956
3957 2003-09-02  Paul Eggert  <eggert@twinsun.com>
3958
3959         * src/common.h (destroy_stat, xheader_decode, xheader_store,
3960         xheader_read, xheader_finish, xheader_destroy): Add decls;
3961         C99 requires this.
3962
3963         * src/create.c (write_extended): Remove unused local 'bufsize'.
3964
3965         * src/delete.c (delete_archive_members): Handle case of
3966         HEADER_SUCCESS_EXTENDED followed by HEADER_FAILURE.
3967         * src/list.c (read_and): Abort if HEADER_SUCCESS_EXTENDED
3968         occurs, as it's not possible.
3969         * src/update.c (update_archive): Likewise.
3970
3971         Use "const" when possible in new code.
3972         * src/tar.c (struct fmttab.name): Now char const *.  All uses changed.
3973         (fmttab): Now const.  All uses changed.
3974         * src/xheader.c (struct xhdr_tab.keyword): Now pointer to const.
3975         (struct xhdr_tab.coder, struct xhdr_tab.decoder, locate_handler,
3976         decode_record, xheader_store, xheader_print, code_string, code_time,
3977         code_num, dummy_coder, dummy_decoder, atime_coder, atime_decoder,
3978         gid_coder, gid_decoder, gname_coder, gname_decoder, linkpath_coder,
3979         linkpath_decoder, ctime_coder, ctime_decoder, mtime_coder,
3980         mtime_decoder, path_coder, path_decoder, size_coder, size_decoder,
3981         uid_coder, uid_decoder, uname_coder, uname_decoder):
3982         Use pointers to const when possible.
3983         (xhdr_tab): Now const.
3984
3985         * src/tar.c (fmttab): Avoid GCC warning by not eliding initializers.
3986         (set_archive_format): Report an error if no format name matches,
3987         instead of returning an undefined value.
3988
3989         * src/xheader.c (struct xhdr_tab.decoder, dummy_decoder,
3990         atime_decoder, gid_decoder, gname_decoder, linkpath_decoder,
3991         ctime_decoder, mtime_decoder, path_decoder, size_decoder,
3992         uid_decoder, uname_decoder): Remove unused keyword arg.
3993         All uses changed.
3994
3995         * src/tar.c (set_archive_format): Now static.
3996         * src/xheader.c (xhdr_tab, format_uintmax): Now static.
3997
3998         * src/xheader.c (dummy_coder, dummy_decoder, atime_coder,
3999         atime_decoder, gid_coder, gid_decoder, gname_coder, gname_decoder,
4000         linkpath_coder, linkpath_decoder, mtime_coder, mtime_decoder,
4001         ctime_coder, ctime_decoder, path_coder, path_decoder, size_coder,
4002         size_decoder, uid_coder, uid_decoder, uname_coder, uname_decoder):
4003         Remove forward decls; no longer needed.
4004         (xhdr_tab): Move to end, so that the forward decls aren't needed.
4005         Add a forward declaration.
4006
4007         Use 'bool' in new code, when appropriate.
4008         * src/xheader.c (decode_record): Return bool, not int.
4009         * src/common.h (read_header): Since it accepts bool, change
4010         all callers to use false and true rather than 0 and 1.
4011
4012         * src/xheader.c (decode_record): Fix misspelling in diagnostic
4013         "extended headed" -> "extended header".
4014
4015         GNU coding style fixes.
4016         * src/xheader.c (decode_record, xheader_decode):
4017         Do not use decls like "char *p, *q;".
4018
4019         Minor style fixes.
4020         (xheader_store): Avoid parentheses around object operand of sizeof.
4021
4022 2003-09-03  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
4023
4024         * src/create.c (start_header): Store long file names
4025         in "path" keyword of an extended header if in POSIX
4026         mode.
4027         (finish_header): print header before calling write_extended().
4028         * src/list.c (list_archive): Always decode the header. This
4029         is necessary so the extended header is processed and the correct
4030         filename is printed no matter what the state of verbose_option.
4031         * src/xheader.c (xhdr_tab): Reserved GNU keywords (commented out
4032         for the time being).
4033
4034 2003-09-01  Paul Eggert  <eggert@twinsun.com>
4035
4036         Update from gnulib, and correct fnmatch to fnmatch-gnu.
4037         * bootstrap (gnulib_modules): Change fnmatch to fnmatch-gnu.
4038         Sort.
4039         * configure.ac (gl_USE_SYSTEM_EXTENSIONS): Use this instead
4040         of AC_GNU_SOURCE.
4041         * lib/.cvsignore: Add alloca.h, stdbool.h.  Sort.  Append newline.
4042         * lib/Makefile.am (lib_OBJECTS): New macro, for convenience when
4043         copying rules from gnulib module descriptions.
4044         (BUILT_SOURCES, EXTRA_DIST, all-local, alloca.h):
4045         Update from gnulib modules alloca, fnmatch, getline, stdbool.
4046         * m4/.cvsignore: Add utimes-null.m4.  Sort.
4047
4048 2003-09-01  Sergey Poznyakoff
4049
4050         Added initial support for creating POSIX headers.
4051
4052         * src/common.h (MAXOCTAL11,MAXOCTAL7): New defines
4053         (string_to_chars): New functions
4054         (struct xheader): Changed structure
4055         (gid_to_gname,gname_to_gid,uid_to_uname,uname_to_uid): Changed
4056         prototypes.
4057         * src/create.c (string_to_chars): New function.
4058         (write_extended): New function
4059         (start_header): Create extended POSIX headers if necessary.
4060         (finish_header): Likewise.
4061         * src/list.c (print_header): Take user/group from
4062         current_stat_info.
4063         * src/names.c (gid_to_gname,gname_to_gid)
4064         (uid_to_uname,uname_to_uid): Changed prototypes.
4065         * src/tar.c: New option --format.
4066         * src/tar.h (OLDGNU_COMPATIBILITY): Removed
4067         (struct extra_header): Removed unused structure.
4068         (union block.extra_header): Removed unused member.
4069         * src/xheader.c: Implemented coder functions.
4070         * bootstrap: Added obstack.
4071         * lib/.cvsignore: Likewise.
4072         * configure.ac: Added 'gl_OBSTACK'
4073         * m4/Makefile.am: Added new files.
4074         * m4/.cvsignore: Likewise.
4075         * TODO: Minor formatting change
4076
4077 2003-08-31  Sergey Poznyakoff
4078
4079         Added initial support for POSIX extended and STAR headers
4080         (only for listing/extracting).
4081
4082         * src/xheader.c: New file.
4083         * src/Makefile.am: Added xheader.c
4084         * src/tar.h (struct star_header): New datatype
4085         (XHDTYPE,XGLTYPE): New defines
4086         (enum archive_format:STAR_FORMAT): New member
4087         (struct tar_stat_info): New datatype.
4088         (union block.star_header): New member.
4089         * src/common.h (orig_file_name,current_file_name)
4090         (current_trailing_slash,current_link_name): Removed variables.
4091         (current_stat_info): New variable
4092         (current_stat): Removed
4093         (extended_header): New variable
4094         (decode_header): Changed prototype.
4095         * src/list.c (decode_header): Added initial support for POSIX extended
4096         and STAR headers.
4097         (skip_member): Check oldgnu_header only if current_format is set
4098         to OLDGNU_FORMAT.
4099         * src/buffer.c: Use current_stat_info
4100         * src/compare.c: Likewise.
4101         * src/create.c: Likewise.
4102         * src/delete.c: Likewise.
4103         * src/incremen.c: Likewise.
4104         * src/mangle.c: Likewise.
4105         * src/update.c: Likewise.
4106         * src/extract.c: Likewise.
4107         (make_directories): Improved check for the existence of the directory
4108         * src/tar.c (destroy_stat): New function.
4109
4110 2003-08-29  Paul Eggert  <eggert@twinsun.com>
4111
4112         * NEWS, bootstrap: Drop en_GB locale; it was more trouble than it
4113         was worth (e.g., different users in en_GB disagree about -ize
4114         versus -ise).
4115         * po/en_GB.po: Remove.
4116
4117 2003-07-28  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
4118
4119         * TODO: Updated
4120         * NEWS: Updated
4121         * src/tar.c: Removed support for the obsolete command line
4122         options.
4123         * doc/tar.texi: Removed references to the obsolete command
4124         line options.
4125
4126 2003-07-27  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
4127
4128         * TODO: Updated
4129         * NEWS: Updated
4130         * doc/tar.texi: Updated
4131         * src/common.h (check_links_option): New variable
4132         (orig_file_name): New variable
4133         (check_links): New proto.
4134         * src/create.c (struct link.nlink): New member
4135         (link_table): Static for the module.
4136         (dump_file): Update `link' member when adding new links
4137         to the link_table.
4138         (check_links): New function.
4139         * src/list.c (print_header): Use orig_file_name.
4140         * src/tar.c: New option --check-links. Changed semantics of
4141         -o to comply to UNIX98 when extracting and to its previous
4142         semantics otherwise.
4143         (main): Call check_links if --check-links. was given.
4144
4145 2003-07-25  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
4146
4147         * src/list.c (print_header): Revised
4148         * NEWS: Started the entry for 1.13.26
4149         * doc/Makefile.am (tar.dvi): Fixed TEXINPUTS value.
4150
4151 2003-07-24  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
4152
4153         * .cvsignore: Added to the repository.
4154         * doc/.cvsignore: Likewise.
4155         * lib/.cvsignore: Likewise.
4156         * m4/.cvsignore: Likewise.
4157         * po/.cvsignore: Likewise.
4158         * scripts/.cvsignore: Likewise.
4159         * src/.cvsignore: Likewise.
4160         * tests/.cvsignore: Likewise.
4161
4162         * lib/Makefile.am: Added exitfail.[hc]
4163         * src/misc.c (chdir_do): Fixed call to restore_cwd
4164         * src/buffer.c (flush_read): Fixed behavior on short
4165         reads right after opening the new archive (multiv01.sh test).
4166         (new_volume): Special handling for "-".
4167         * src/list.c (print_header): Print trailing slash if
4168         current_trailing_slash was set (extrac03.sh,extrac04.sh tests).
4169         * tests/multiv01.sh: Minor changes.
4170         * m4/Makefile.am: Added missing files.
4171
4172 2003-07-05  Paul Eggert  <eggert@twinsun.com>
4173
4174         Finish the checkin begin yesterday.
4175
4176         * NEWS: Document the user-visible changes installed in the last
4177         two days.
4178
4179         * TODO: New file (actually, resurrected; but with new contents).
4180
4181         * src/list.c (read_and): Give full type for procedure arg.
4182         (read_header): Strip trailing slashes, setting current_trailing_slash.
4183         (tartime): Avoid int overflow when printing year (!).
4184         (print_header): New arg specifying block ordinal.  All uses changed.
4185         Print link as 'h' type.  Give labels for long links and names.
4186
4187         * src/misc.c (contains_dot_dot): Moved to names.c
4188         (must_be_dot_or_slash): New function.
4189         (safer_rmdir): Use it.
4190         (remove_any_file): Now takes enum as option, not boolean.
4191         Check for (Linux) EISDIR as well as (POSIX) EPERM when attempting
4192         to unlink a directory.
4193         (deref_stat): Accept bool, not int.
4194
4195         * src/names.c (namelist_match): Allow partial matches only if
4196         recursive.
4197         (hash_string_hasher): Renamed from hash_avoided_name.
4198         (hash_string_compare): Renamed from compare_avoided_anames.
4199         (hash_string_insert, hash_string_lookup): New functions.
4200         (add_avoided_name, is_avoided_name): Use them.
4201         (safer_name_suffix): New function.
4202         (contains_dot_dot): Moved here from misc.c.  Now returns bool, not int.
4203
4204         * src/rmt.c: Don't include print-copyr.h.
4205         (prepare_input_buffer): New arg FD.
4206         Do not read more than INT_MAX bytes at once,
4207         since it breaks on some brain damaged Tru64 hosts.
4208         Divide size by two
4209         when retrying instead of subtracting 1024; for speed.
4210         (main): Use gettext to translate (C), not print_copyright.
4211
4212         * src/system.h: Include <alloca.h> and <stdbool.h> unconditionally,
4213         now that gnulib handles this.
4214         Include <stddef.h> and <limits.h> unconditionally, now that we assume
4215         C89 or better.
4216         Assume that offsetof is defined in stddef.h.
4217         Do not include <sys/param.h>.
4218         (realloc, lseek): Do not declare.
4219         (HAVE_DECL_VALLOC): Renamed from HAVE_VALLOC.
4220         (CHAR_BIT, CHAR_MAX, UCHAR_MAX, LONG_MAX): Remove
4221         declarations, since we now assume C89 or better.
4222         (PARAMS): Remove, as we now assume C89.  All uses changed.
4223         (bindtextdomain, textdomain): Include <gettext.h> to define.
4224         Include <unlocked-io.h>.
4225         (valloc): Define if not defined, and if valloc is not declared.
4226         (xstrdup): Remove decl.
4227
4228         * src/tar.c: Do not include <print-copyr.h>.
4229         Include <getdate.h>.
4230         (get_date): Remove decl.
4231         (ATIME_PRESERVE_OPTION, CHECKPOINT_OPTION, FORCE_LOCAL_OPTION,
4232         IGNORE_FAILED_READ_OPTION, INDEX_FILE_OPTION, NO_OVERWRITE_DIR_OPTION,
4233         NUMERIC_OWNER_OPTION, RECURSIVE_UNLINK_OPTION, REMOVE_FILES_OPTION,
4234         SHOW_OMITTED_DIRS_OPTION, TOTALS_OPTION): New constants.
4235         (long_options, decode_options): Use them.
4236         (OVERWRITE_DIR_OPTION): Remove.
4237         (long_options): New options --index-file, --no-overwrite-dir.
4238         Remove --overwrite-dir option.
4239         (usage): Use PACKAGE_BUGREPORT.
4240         (decode_options): Terminate new argv properly.
4241         Use PACKAGE_NAME, PACKAGE_VERSION.
4242         If verbose, report how we grokked any textual date option.
4243         (main): Add support for index-file.
4244
4245         * tests/Makefile.am: Convert to UTF-8.
4246         (AUTOMAKE_OPTIONS): Remove.
4247         (TESTS): Add delete04.sh, multiv01.sh, options.sh.
4248         (INCLUDES): Remove ../intl.
4249         (LDADD): Don't link libtar.a twice.
4250
4251         * tests/genfile.c: Convert to UTF-8.
4252         Don't include <print-copyr.h>.
4253         (DEFAULT_PATTERN): Renamed from DEFAULT.
4254         (ZEROS_PATTERN): Renamed from ZEROS.
4255         (main): Use gettext to translate (C), not print_copyright.
4256
4257 2003-07-04  Paul Eggert  <eggert@twinsun.com>
4258
4259         Revamp to meet current standards of autoconf, automake,
4260         gettext, and gnulib, and incorporate new translations.
4261
4262         * config/config.guess, config/config.sub, config/depcomp,
4263         config/install-sh, config/mdate-sh, config/missing,
4264         config/mkinstalldirs, config/texinfo.texi:
4265         Moved here from parent directory, or from doc.
4266         * config.hin: Renamed from config.h.in.
4267         * config/config.rpath: New file.
4268
4269         * intl: Remove this subdirectory.
4270
4271         * lib/fnmatch_.h: Renamed from lib/fnmatch.hin.
4272
4273         * lib/getstr.c, lib/getstr.h, lib/msleep.c, lib/print-copyr.c,
4274         lib/print-copyr.h, lib/readutmp.c, lib/rename.c, lib/stpcpy.c,
4275         lib/strstr.c, lib/strtoimax.c, lib/strtoll.c, lib/strtoull.c,
4276         lib/strtoumax.c, lib/unicodeio.c, lib/unicodeio.h,
4277         lib/xstrtoimax.c, m4/c-bs-a.m4, m4/ccstdc.m4, m4/check-decl.m4,
4278         m4/decl.m4, m4/jm-mktime.m4, m4/prereq.m4, m4/xstrtoimax.m4,
4279         stamp-h.in: Remove.
4280
4281         * lib/alloca_.h, lib/fnmatch_loop.c, lib/gettext.h, lib/pathmax.h,
4282         lib/safe-write.c, lib/safe-write.h, lib/stdbool_.h, lib/strcase.h,
4283         lib/stripslash.c, lib/unlocked-io.h, lib/xgetcwd.h, m4/alloca.m4,
4284         m4/backupfile.m4, m4/bison.m4, m4/chown.m4, m4/dirname.m4,
4285         m4/dos.m4, m4/exclude.m4, m4/fileblocks.m4, m4/ftruncate.m4,
4286         m4/getdate.m4, m4/getopt.m4, m4/hash.m4, m4/human.m4,
4287         m4/intdiv0.m4, m4/intmax_t.m4, m4/inttypes-pri.m4,
4288         m4/inttypes_h.m4, m4/isc-posix.m4, m4/lchown.m4, m4/lib-ld.m4,
4289         m4/lib-link.m4, m4/lib-prefix.m4, m4/memset.m4, m4/mktime.m4,
4290         m4/modechange.m4, m4/nls.m4, m4/onceonly.m4, m4/pathmax.m4,
4291         m4/po.m4, m4/quote.m4, m4/quotearg.m4, m4/rmdir.m4,
4292         m4/safe-read.m4, m4/safe-write.m4, m4/save-cwd.m4, m4/savedir.m4,
4293         m4/ssize_t.m4, m4/stdbool.m4, m4/stdint_h.m4, m4/strcase.m4,
4294         m4/strtoimax.m4, m4/strtol.m4, m4/strtoll.m4, m4/strtoul.m4,
4295         m4/strtoull.m4, m4/strtoumax.m4, m4/tm_gmtoff.m4, m4/uintmax_t.m4,
4296         m4/unlocked-io.m4, m4/xalloc.m4, m4/xgetcwd.m4, m4/xstrtol.m4,
4297         po/LINGUAS, po/Makevars, po/Rules-quot, po/boldquot.sed,
4298         po/en@boldquot.header, po/en@quot.header, po/en_GB.po,
4299         po/insert-header.sin, po/remove-potcdate.sin, po/stamp-po: New files.
4300
4301         * ABOUT-NLS, INSTALL, lib/addext.c, lib/alloca.c, lib/argmatch.c,
4302         lib/argmatch.h, lib/backupfile.c, lib/backupfile.h, lib/dirname.c,
4303         lib/dirname.h, lib/error.c, lib/exclude.c, lib/exclude.h,
4304         lib/fnmatch.h, lib/full-write.c, lib/full-write.h, lib/getdate.h,
4305         lib/getdate.y, lib/getline.c, lib/getline.h, lib/getopt.c,
4306         lib/getopt.h, lib/getopt1.c, lib/hash.c, lib/hash.h, lib/human.c,
4307         lib/human.h, lib/lchown.c, lib/malloc.c, lib/mktime.c,
4308         lib/modechange.c, lib/modechange.h, lib/quote.c, lib/quote.h,
4309         lib/quotearg.c, lib/quotearg.h, lib/realloc.c, lib/safe-read.c,
4310         lib/safe-read.h, lib/save-cwd.c, lib/save-cwd.h, lib/savedir.c,
4311         lib/savedir.h, lib/strcasecmp.c, lib/utime.c, lib/xalloc.h,
4312         lib/xgetcwd.c, lib/xmalloc.c, lib/xstrdup.c, lib/xstrtol.c,
4313         lib/xstrtol.h, lib/xstrtoumax.c, m4/codeset.m4, m4/d-ino.m4,
4314         m4/error.m4, m4/fnmatch.m4, m4/getcwd.m4, m4/getline.m4, m4/gettext.m4,
4315         m4/glibc21.m4, m4/iconv.m4, m4/inttypes.m4, m4/lcmessage.m4,
4316         m4/longlong.m4, m4/malloc.m4, m4/mbrtowc.m4, m4/mbstate_t.m4,
4317         m4/progtest.m4, m4/realloc.m4, m4/strerror_r.m4, m4/ulonglong.m4,
4318         m4/utimbuf.m4, m4/utime.m4, m4/utimes.m4, m4/xstrtoumax.m4,
4319         po/Makefile.in.in:
4320         Upgrade to latest version from external source.  The file "bootstrap"
4321         now grabs these automatically, so we needn't keep track of them
4322         in this change long any longer.
4323
4324         * Makefile.am (AUTOMAKE_OPTIONS): Remove.  Now done by configure.ac.
4325         (SUBDIRS): Remove intl.
4326         * PORTS: Update for star, Macintosh.
4327         * README, README-alpha: Suggest Autoconf 2.57, Automake 1.7.5,
4328         Bison 1.875, gettext 0.12.1.
4329         * THANKS: Add Bernhard Rosenkraenzer, Solar Designer.
4330         * configure.ac (AC_INIT, AM_INIT_AUTOMAKE): Convert to modern form.
4331         (AC_CONFIG_AUX_DIR): New.
4332         (AC_CONFIG_HEADERS): Rename config.h.in to config.hin, to be more
4333         like coreutils.
4334         (AC_PREREQ): Bump from 2.52 to 2.57.
4335         (AC_GNU_SOURCE): New.
4336         (AC_PROG_GCC_TRADITIONAL, AM_C_PROTOTYPES, AC_C_CONST): Remove;
4337         we no longer support K&R C.
4338         (YACC): Remove.
4339         (AC_CHECK_HEADERS): Remove limits.h, poll.h, stdbool.h, stropts.h,
4340         sys/ioccom.h, sys/param.h, sys/time.h, sys/timeb.h, wchar.h, wctype.h.
4341         (AC_MBSTATE_T): Remove.
4342         (HAVE_UTIME_H, HAVE_DECL_FREE, HAVE_DECL_GETGRGID, HAVE_DECL_GETPWUID,
4343         HAVE_DECL_GETENV, HAVE_DECL_MALLOC, HAVE_DECL_STRTOUL,
4344         HAVE_DECL_STRTOULL, HAVE_MKNOD): Remove our special code.
4345         (AM_STDBOOL_H): Add.
4346         (AC_HEADER_TIME, AC_STRUCT_TIMEZONE,
4347         jm_CHECK_TYPE_STRUCT_DIRENT_D_INO): Remove.
4348         (AC_CHECK_TYPE): Remove ssize_t.
4349         (gt_TYPE_SSIZE_T): Add.
4350         (jm_AC_PREREQ_XSTRTOUMAX, jm_PREREQ_ADDEXT, jm_PREREQ_ERROR,
4351         jm_PREREQ_HUMAN, jm_PREREQ_QUOTEARG, jm_PREREQ_XGETCWD,
4352         AC_FUNC_ALLOCA, AC_FUNC_CLOSEDIR_VOID, AC_FUNC_STRERROR_R,
4353         AC_FUNC_FNMATCH, AC_FUNC_VPRINTF, AM_FUNC_GETLINE, jm_FUNC_MALLOC,
4354         jm_FUNC_MKTIME, jm_FUNC_REALLOC):
4355         Remove.  Switch to gnulib macros like gl_BACKUPFILE instead.
4356         (tar_LDADD): Rename to LIB_CLOCK_GETTIME.  All uses changed.
4357         (rmt_LDADD): Rename to LIB_SETSOCKOPT.  All uses changed.
4358         (AC_CHECK_FUNCS): Remove fchdir, ftime, getcwd, isascii, nap,
4359         napms, poll, select, strstr, usleep.
4360         (AC_REPLACE_FUNCS): Remove ftruncate, lchown, memset, rename,
4361         rmdir, strcasecmp, strncasecmp, strtol, strtoul.
4362         (AM_GNU_GETTEXT): Use external and need-ngettext options.
4363         (AM_GNU_GETTEXT_VERSION): New.
4364         (AC_OUTPUT): Remove intl/Makefile.
4365
4366         * doc/Makefile.am (AUTOMAKE_OPTIONS): Remove.
4367         ($(srcdir)/tar.info, tar.dvi): Remove obsolete warnings.
4368         * doc/fdl.texi: Update to current GNU version.
4369         * doc/gettext.texi: Update to current coreutils version,
4370         plus a copyright notice.
4371         * doc/tar.texi: Switch to new method for doing copyright notices.
4372         Use @acronym instead of @sc where appropriate.
4373         Remove empty examples.  Give a few more examples.
4374
4375         * lib/Makefile.am (AUTOMAKE_OPTIONS): Remove.
4376         (EXTRA_DIST, libtar_a_SOURCES): Switch to gnulib, so that they
4377         are built up in pieces with +=.
4378         (noinst_HEADERS, INCLUDES): Remove.
4379         (BUILT_SOURCES, MAINTAINERCLEANFILES, MOSTLYCLEANFILES): New.
4380         (libtar_a_LIBADD): Use $ rather than @.
4381         (all-local, alloca.h, fnmatch.h, stdbool.h): New rules, from gnulib.
4382
4383         * m4/Makefile.am (EXTRA_DIST): Add alloca.m4, backupfile.m4,
4384         bison.m4, chown.m4, dirname.m4, dos.m4, exclude.m4, fileblocks.m4,
4385         ftruncate.m4, getdate.m4, getopt.m4, hash.m4, human.m4,
4386         intdiv0.m4, intmax_t.m4, inttypes_h.m4, inttypes-pri.m4,
4387         isc-posix.m4, lcown.m4, lib-ld.m4, lib-link.m4, lib-prefix.m4,
4388         memset.m4, mktime.m4, modechange.m4, nls.m4, onceonly.m4,
4389         pathmax.m4, po.m4, quotearg.m4, quote.m4, rmdir.m4, safe-read.m4,
4390         safe-write.m4, save-cwd.m4, savedir.m4, ssize_t.m4, stdbool.m4,
4391         stdint_h.m4, strcase.m4, strtoimax.m4, strtoll.m4, strtol.m4,
4392         strtoull.m4, strtoul.m4, strtoumax.m4, tm_gmtoff.m4, uintmax_t.m4,
4393         unlocked-io.m4, xalloc.m4, xgetcwd.m4, xstrtol.m4.
4394         Remove c-bs-a.m4, ccstdc.m4, check-decl.m4, decl.m4, jm-mktime.m4,
4395         prereq.m4, xstrtoimax.m4.
4396
4397         * po/POTFILES.in: Remove tests/genfile.c; it doesn't need to
4398         be translated, since it's not a user-visible tool.
4399
4400         * scripts/Makefile.am (AUTOMAKE_OPTIONS): Remove.
4401
4402         * src/Makefile.am (AUTOMAKE_OPTIONS): Remove.
4403         (INCLUDES): Remove ../intl.  Put top-srcdir before ., for
4404         consistency with coreutils.
4405         (LDADD): Link LIBINTL after libtar.a, since
4406         it's now external and should stand by itself.
4407
4408         * src/buffer.c (print_total_written): Adjust to new human.h
4409         interface.
4410         (child_open_for_compress): Do not increase size to BLOCKSIZE.
4411         (open_archive): Open index file name.
4412         Strip trailing slahes from file names.
4413         (flush_write): Set size to 0 if not saving names.
4414         (flush_write, flush_read): Use safer_name_suffix rather than
4415         inline code.
4416
4417         * src/common.h: Include <quote.h>.
4418         (absolute_names_option, atime_preserve_option, backup_option,
4419         block_number_option, checkpoint_option, dereference_option,
4420         force_local_option, ignore_failed_read_option, ignore_zeros_option,
4421         incremental_option, interactive_option, multi_volume_option,
4422         numeric_owner_option, one_file_system_option, recursive_unlink_option,
4423         read_full_records_option, remove_files_option, same_order_option,
4424         show_omitted_dirs_option, sparse_option, starting_file_option,
4425         to_stdout_option, totals_option, touch_option, verify_option,
4426         dev_null_output, now_verifying, we_are_root): Now bool, not int.
4427         (current_trailing_slash, index_file_name, recent_long_name_blocks,
4428         recent_long_link_blocks): New vars.
4429         (NO_OVERWRITE_DIR_OLD_FILES): New constant.
4430         (OVERWRITE_OLD_DIRS): Remove.
4431         (enum remove_option): New enum.
4432         (remove_any_file): Use it as option arg, not int.
4433         (is_avoided_name, contains_dot_dot): Return bool, not int.
4434         (safer_name_suffix): New decl.
4435
4436         * src/compare.c (now_verifying): Now bool, not int.
4437         (fill_in_sparse_array): Move to extract.c.  Now returns bool;
4438         all callers changed to test for failure.
4439         (diff_sparse_files): Take size from current_stat, not from param.
4440         (diff_archive): Do not count trailing slashes in archives.
4441         (verify_volume): Test for header failure after loop, not before.
4442
4443         * src/create.c (relativize): Remove; replaced by safer_name_suffix.
4444         All callers changed.
4445         (start_header): Clear devmajor and devminor fields, too.
4446         (finish_header): New arg block_ordinal.
4447         (init_sparsearray): Now extern.  Set sp_array_size to
4448         SPARSES_IN_OLDGNU_HEADER if it is zero.
4449         (dump_file): Keep link table as a hash.
4450         Do not count "file changed as we read it" as a failure.
4451
4452         * src/delete.c (recent_long_name_blocks, recent_long_link_blocks):
4453         Move extern decl to common.h.
4454
4455         * src/extract.c (we_are_root): Now bool, not int.
4456         (check_time): Warn about implausibly old time stamps.
4457         (set_stat): Use utimbuf, not stat_info.
4458         (prepare_to_extract): New arg DIRECTORY.
4459         (fill_in_sparse_array): Moved here from compare.c.
4460         (extract_sparse_file): Now returns off_t, giving size left.
4461         Truncate file at end.
4462         (extract_archive): Use safer_name_suffix rather than rolling our own.
4463         Use fill_in_sparse_array rather than rolling our own.
4464         Strip trailing slashes more effectively.
4465         Check for unsafe names.
4466
4467         * src/incremen.c (struct directory): nfs and found are now of type
4468         bool, not int.
4469         (gnu_restore): Now takes directory name as argument, not offset
4470         of directory name in a global.  All uses changed.
4471         (CURRENT_FILE_NAME): Remove.
4472
4473         New tests.
4474         * tests/delete04.sh, tests/multiv01.sh, tests/options.sh: New
4475         files.
4476
4477 2002-09-30  Paul Eggert  <eggert@twinsun.com>
4478
4479         * src/rmt.c (prepare_input_buffer): Renamed form
4480         prepare_record_buffer.  All uses changed.  Do not assume that
4481         size_t is the same width as int.
4482
4483 2002-03-29  Paul Eggert  <eggert@twinsun.com>
4484
4485         * src/incremen.c (get_directory_contents):
4486         If ignore_failed_read_option, only warn about
4487         get_directory_contents failures.  Fix suggested by
4488         Mark Costlow.
4489
4490 2002-01-31  Mark W. Eichin  <eichin@thok.org>
4491
4492         * src/buffer.c (child_open_for_compress): Don't try to read
4493         past the end of the buffer.
4494
4495 2001-10-11  Jim Meyering  <meyering@lucent.com>
4496
4497         * argmatch.c (argmatch_invalid): Use quotearg_n_style (0, ...
4498         and quote_n (1, ... to avoid clobbering a buffer.
4499
4500 2001-09-26  Paul Eggert  <eggert@twinsun.com>
4501
4502         * NEWS, configure.ac (AM_INIT_AUTOMAKE): Version 1.13.25.
4503
4504         * src/buffer.c (flush_read): Don't diagnose partial blocks before
4505         end of file; just ignore them silently.
4506
4507         * src/list.c (read_header): Don't keep around extended name
4508         and link info indefinitely; keep it only for the next file.
4509         This fixes a bug introduced in 1.13.24, and removes the need
4510         for some static variables.  Set recent_long_name and
4511         recent_long_link to zero if there were no long links; this
4512         avoids a violation of ANSI C rules for pointers in delete.c.
4513         * THANKS: Add Christian Laubscher.
4514
4515 2001-09-26  Jim Meyering  <meyering@lucent.com>
4516
4517         * doc/tar.texi (Remote Tape Server): is know -> is known
4518
4519 2001-09-25  Paul Eggert  <eggert@twinsun.com>
4520
4521         * lib/unicodeio.c (EILSEQ): Include <iconv.h> first, since
4522         <iconv.h> may define EILSEQ (e.g. libiconv).  Define a
4523         replacement EILSEQ to be ENOENT, not EINVAL, since callers may
4524         want to distinguish EINVAL and EILSEQ.
4525
4526 2001-09-24  Christophe Kalt  <Christophe.Kalt@kbcfp.com>
4527
4528         * src/extract.c (maybe_recoverable):
4529         Treat OVERWRITE_OLD_DIRS like DEFAULT_OLD_FILES.
4530
4531 2001-09-22  Paul Eggert  <eggert@twinsun.com>
4532
4533         * NEWS, configure.ac (AM_INIT_AUTOMAKE): Version 1.13.24.
4534
4535         * ABOUT-NLS, intl/*: Update to gettext-0.10.40, replacing LGPL
4536         with GPL.
4537
4538         * INSTALL, mkinstalldirs: Update to autoconf 2.52 version.
4539         * PORTS: Add copyright notice, 'star' reference.
4540         * README-alpha: Add copyright notice, autoconf 2.52 patch.
4541         * THANKS: Add Christophe Kalt.
4542         * config.sub: Upgrade to 2001-09-14 version.
4543
4544         * configure.ac (ALL_LINGUAS): Add ko.
4545         * po/ko.po: Resurrected file.
4546
4547         * doc/convtexi.pl: Add coding advice for Emacs.
4548
4549         * doc/getdate.texi: Add copyright notice.
4550
4551         * doc/mdate-sh: Upgrade to automake 1.5 version.
4552
4553         * doc/tar.texi (extracting files): Mention --to-stdout.
4554         (Option Summary, Dealing with Old Files): New option --overwrite-dir.
4555         (Overwrite Old Files): Likewise.
4556
4557         * lib/Makefile.am (noinst_HEADERS):
4558         Remove copysym.h.  Add print-copyr.h, unicodeio.h.
4559         (libtar_a_SOURCES): Remove copysym.c, Add print-copyr.c, unicodeio.c.
4560
4561         * lib/copysym.c, lib/copysym.h: Remove.
4562         * lib/print-copyr.c, lib/print-copyr.h, lib/unicodeio.c,
4563         lib/unicodeio.h: New files.
4564
4565         * lib/error.c, lib/getopt.c, lib/getopt.h, lib/getopt1.c,
4566         lib/mktime.c, lib/strtoll.c: Switch from LGPL to GPL.
4567
4568         * lib/quotearg.c (HAVE_MBSINIT): Undef if !HAVE_MBRTOWC.
4569         (mbsinit): Define to 1 if !defined mbsinit && !HAVE_MBSINIT.
4570
4571         * m4/Makefile.am (EXTRA_DIST): Remove isc-posix.m4.
4572         * m4/isc-posix.m4: Remove.
4573
4574         * m4/prereq.m4 (jm_PREREQ_QUOTEARG): Check for mbsinit.
4575
4576         * po/POTFILES.in: Add copyright notice.
4577
4578         * src/Makefile.am (LDADD): Like libtar.a before @INTLLIBS@ as
4579         well as after.
4580         * tests/Makefile.am (LDADD): Likewise.
4581
4582         * src/buffer.c (write_archive_buffer, close_archive):
4583         If an archive is a socket, treat it like a FIFO.
4584         (records_read, records_written): New vars.
4585         (write_archive_to_stdout): Now bool, not int.
4586         (open_archive, flush_write, flush_read): Keep records_read and
4587         records_written up to date.
4588
4589         * src/common.h (enum old_files): New value OVERWRITE_OLD_DIRS.
4590         (write_archive_to_stdout): Now bool, not int.
4591         (enum read_header): New value HEADER_SUCCESS_EXTENDED.
4592         (read_header): Now takes bool arg.  Existing callers modified
4593         to pass 0, unless otherwise specified.
4594
4595         * src/delete.c (records_read): Remove; now a global.
4596         (acting_as_filter): Now bool, not int.
4597         (recent_long_name, recent_long_link, recent_long_name_blocks,
4598         recent_long_link_blocks, records_read, records_written): New decls.
4599         (records_skipped): New var.
4600         (move_archive): Don't divide by zero if arg is 0.
4601         Use the above vars to compute how far to move.
4602         (write_recent_blocks): New function.
4603         (delete_archive_member): Pass 1 to read_header, so that it doesn't
4604         read more than 1 block.  Handle resulting HEADER_SUCCESS_EXTENDED code.
4605         Keep track of how many records have been skipped.
4606         Let the buffer code count records.
4607         When copying a header, copy any extended headers that came before it.
4608
4609         * src/extract.c (extract_archive): When marking a directory to be
4610         updated after symlinks, stat all directories after it in the
4611         delayed-set-stat list too, since they will be checked after
4612         symlinks.  Add support for --overwrite-dir.
4613
4614         * src/list.c (recent_long_name, recent_long_link,
4615         recent_long_name_blocks, recent_long_link_blocks): New vars.
4616         (read_and): Pass 0 to read_header.
4617         (read_header): New arg RAW_EXTENDED_HEADERS.  Store away extended
4618         headers into new vars.  Null-terminate incoming symbolic links.
4619
4620         * src/rmt.c: Include print-copyr.h, not copysym.h.
4621         (main): Use print_copyright, not copyright_symbol.
4622         * src/tar.c (decode_options): Likewise.
4623         (OVERWRITE_DIR_OPTION): New constant.
4624         (long_options, usage, decode_options): Add --overwrite-dir.
4625
4626         * src/tar.h: Put copyright notice into documentation.
4627
4628         * tests/Makefile.am (TESTS): Add delete03.sh.
4629         * tests/delete03.sh: New file.
4630
4631         * tests/genfile.c: Include print-copyr.h, not copysym.h.
4632         (main): Use print_copyright, not copyright_symbol.
4633         Include <argmatch.h>.
4634         (pattern_strings): Remove.
4635         (pattern_args, pattern_types): New constants.
4636         (main): Use XARGMATCH, not argmatch.
4637
4638 2001-09-20  Jim Meyering  <meyering@lucent.com>
4639
4640         * lib/xstrtol.c (strtoimax): Guard declaration with
4641         `#if !HAVE_DECL_STRTOIMAX', rather than just `#ifndef strtoimax'.
4642         The latter fails because some systems (at least rs6000-ibm-aix4.3.3.0)
4643         have their own, conflicting declaration of strtoimax in sys/inttypes.h.
4644         (strtoumax): Likewise, for completeness (it wasn't necessary).
4645         * m4/xstrtoimax.m4 (jm_AC_PREREQ_XSTRTOIMAX):
4646         Check for declaration of strtoimax.
4647         * m4/xstrtoumax.m4 (jm_AC_PREREQ_XSTRTOUMAX):
4648         Check for declaration of strtoumax.
4649
4650 2001-09-16  Paul Eggert  <eggert@twinsun.com>
4651
4652         * fnmatch.m4 (jm_FUNC_FNMATCH): Fix typo in previous patch: yes -> no.
4653
4654 2001-09-14  Paul Eggert  <eggert@twinsun.com>
4655
4656         * NEWS, configure.ac (AC_INIT_AUTOMAKE): Version 1.13.23.
4657
4658         * README-alpha: Describe automake patch.
4659
4660         * configure.ac (LIBOBJS):
4661         Remove automake 1.4 workaround, as we're using 1.5 now.
4662         (USE_INCLUDED_LIBINTL): New AC_DEFINE.
4663
4664         * lib/copysym.c: Include stddef.h, for size_t.
4665         Include langinfo.h if needed.
4666         Use locale_charset only if USE_INCLUDED_LIBINTL;
4667         if not, use nl_langinfo (CODESET) if available.
4668
4669 2001-09-13  Paul Eggert  <eggert@twinsun.com>
4670
4671         * config.guess, config.sub: Sync with canonical versions.
4672
4673         * configure.ac (jm_PREREQ_XGETCWD): Add.
4674
4675         * lib/Makefile.am (noinst_HEADERS): Add copysym.h.
4676         (libtar_a_SOURCES): Add copysym.c.
4677         * copysym.c, copysym.h: New files.
4678
4679         * lib/error.c: Sync with fileutils version.
4680
4681         * m4/Makefile.am (EXTRA_DIST): Add getcwd.m4; remove uintmax_t.m4.
4682         * m4/getcwd.m4: New file.
4683         * m4/uintmax_t.m4: Remove.
4684
4685         * m4/gettext.m4 (AM_WITH_NLS):
4686         Fix bug with calculating version of Bison 1.29.
4687         Reported by Karl Berry.
4688
4689         * src/Makefile.am (datadir): Remove.
4690
4691         * src/rmt.c: Include copysym.h.
4692         (main): Use copyright_symbol to translate copyright notice,
4693         instead of gettext.
4694         * src/tar.c: Likewise.
4695         * tests/genfile.c: Likewise.
4696
4697         * src/system.h (MB_LEN_MAX): New symbol.
4698
4699 2001-09-11  Paul Eggert  <eggert@twinsun.com>
4700
4701         * src/extract.c (struct delayed_set_stat): New member
4702         'after_symlinks'.
4703         (delay_set_stat): Initialize it to 0.
4704         (set_mode): New arg current_stat_info.  Use it (if nonnull) to avoid
4705         taking an extra stat ourselves.  All callers changed.
4706         (set_stat): Likewise.
4707         (apply_nonancestor_delayed_set_stat): New arg 'after_symlinks'.
4708         If false, stop when encountering a struct whose 'after_symlinks'
4709         member is true.  Otherwise, go through all structures but check
4710         them more carefully.  All callers changed.
4711         (extract_archive): When extracting a deferred symlink, if its parent
4712         directory's status needs fixing, then mark the directory as needing
4713         to be fixed after symlinks.
4714         (extract_finish): Fix status of ordinary directories, then apply
4715         delayed symlinks, then fix the status of directories that are
4716         ancestors of delayed symlinks.
4717
4718         * src/rtapelib.c (rexec):
4719         Remove declaration; it ran afoul of prototypes on Crays.
4720         Reported by Wendy Palm of Cray.
4721
4722 2001-09-06  Paul Eggert  <eggert@twinsun.com>
4723
4724         * lib/strtoimax.c (HAVE_LONG_LONG):
4725         Redefine to HAVE_UNSIGNED_LONG_LONG if unsigned.
4726         (strtoimax): Use sizeof (long), not
4727         sizeof strtol (ptr, endptr, base),
4728         to work around bug in IBM C compiler.
4729
4730 2001-09-04  Paul Eggert  <eggert@twinsun.com>
4731
4732         * lib/xgetcwd.c: Include "xalloc.h".
4733         (xgetcwd): Do not return NULL when memory is exhausted; instead,
4734         report an error and exit.
4735
4736         * m4/prereq.m4 (jm_PREREQ_XREADLINK): New macro.
4737         (jm_PREREQ): Use it.
4738
4739 2001-09-03  Paul Eggert  <eggert@twinsun.com>
4740
4741         * m4/prereq.m4 (jm_PREREQ): Add jm_PREREQ_XGETCWD.
4742         (jm_PREREQ_XGETCWD): New macro.
4743
4744         * lib/exclude.c (fnmatch_no_wildcards):
4745         Fix typo that caused us to do case-folding
4746         search even when that was not desired.  This occurred only in the
4747         no-wildcard case.
4748
4749         * lib/xgetcwd.c: Include pathmax.h if not HAVE_GETCWD.
4750         Do not include xalloc.h.
4751         (INITIAL_BUFFER_SIZE): New symbol.
4752         Do not use xmalloc / xrealloc, since the caller is responsible for
4753         handling errors.  Preserve errno around `free' during failure.
4754         Do not overrun buffer when using getwd.
4755
4756         * lib/xgetcwd.c (xgetcwd):
4757         Use HAVE_GETCWD_NULL, not defined __GLIBC__ && __GLIBC__ >= 2,
4758         to decide whether to use getcwd (NULL, 0).
4759
4760 2001-09-02  Paul Eggert  <eggert@twinsun.com>
4761
4762         * lib/xgetcwd.c: Fix typo in local var; from Jim Meyering.
4763
4764 2001-09-01  Jim Meyering  <meyering@lucent.com>
4765
4766         * exclude.c: Use `""', not `<>' to #include non-system header files.
4767         (fnmatch_no_wildcards): Rewrite not to use function names, strcasecmp
4768         and strncasecmp as r-values.  Unixware didn't have declarations.
4769
4770 2001-08-31  Jim Meyering  <meyering@lucent.com>
4771
4772         * lib/xgetcwd.c (xgetcwd): Reorganize to avoid some duplication.
4773         Use an initial, malloc'd, buffer of length 128 rather than
4774         a statically allocated one of length 1024.
4775
4776 2001-08-30  Paul Eggert  <eggert@twinsun.com>
4777
4778         * lib/utime.c: Include full-write.h.
4779         * lib/xstrtol.c (strtoimax): New decl.
4780
4781 2001-08-29  Paul Eggert  <eggert@twinsun.com>
4782
4783         * NEWS, configure.ac (AC_INIT_AUTOMAKE): Version 1.13.22.
4784
4785         * src/create.c (dump_file): Relativize link names before dumping.
4786         This fixes a bug reported by Jose Pedro Oliveira.
4787
4788         * src/create.c (dump_file): Use offsetof when computing sizes for
4789         struct hack; this avoids wasted space in some cases.
4790         * src/incremen.c (note_directory, find_directory): Likewise.
4791         * src/names.c (name_gather, addname): Likewise.
4792
4793         * src/extract.c (extract_archive): Use strcpy, not memcpy,
4794         for consistency with other code that does similar things.
4795         * src/names.c (name_gather): Likewise.
4796
4797         * src/names.c (read_name_from_file, name_next, name_gather,
4798         add_hierarchy_to_namelist): Avoid quadratic behavior when
4799         reallocating buffers.  Check for buffer size overflow.
4800         (addname): Avoid unnecessary clearing of memory.
4801
4802 2001-08-29  "Jan D."  <Jan.Djarv@mbox200.swipnet.se>
4803
4804         * src/extract.c (delay_set_stat): Fix off-by-one error in file
4805         name size allocation that caused core dumps.
4806
4807 2001-08-28  Paul Eggert  <eggert@twinsun.com>
4808
4809         * NEWS, configure.ac (AC_INIT_AUTOMAKE): Version 1.13.21.
4810
4811         * configure.ac (GNU_SOURCE): Define to 1, not /**/.
4812         (major_t, minor_t, ssize_t): Use new-style AC_CHECK_TYPE.
4813         (daddr_t): Remove; no longer used.
4814         (jm_PREREQ_HUMAN): Add.
4815
4816         * acconfig.h: Remove; no longer needed.
4817
4818         * config.guess, config.sub:
4819         New files, from automake 1.5.  Gettext 0.10.39 needs them.
4820         * depcomp, missing, mkinstalldirs: Upgrade to automake 1.5.
4821
4822         * Makefile.am (AUTOMAKE_OPTIONS): Add dist-bzip2.
4823         (SUBDIRS): Put intl before lib, as gettext requires.
4824
4825         * ABOUT-NLS: Upgrade to gettext 0.10.39.
4826         * intl: Upgrade entire directory to gettext 0.10.39.
4827         * m4/codeset.m4, m4/glibc21.m4, m4/iconv.m4:
4828         New files, from gettext 0.10.39.
4829         * m4/gettext.m4, m4/isc-posix.m4, m4/lcmessage.m4, m4/progtest.m4,
4830         Upgrade to gettext 0.10.39,
4831         * po/Makefile.in.in: Likewise, except fix a typo in its copying
4832         permissions.
4833         * po/cat-id-tbl.c, po/stamp-cat-id:
4834         Remove; no longer used by gettext 0.10.39.
4835         * po/ChangeLog: New file.
4836
4837         * doc/Makefile.am (EXTRA_DIST): Add freemanuals.texi.
4838         $(srcdir)/tar.texi: Likewise.
4839         * doc/freemanuals.texi: New file.
4840         * doc/tar.texi (Free Software Needs Free Documentation): New appendix.
4841         `fileds' -> `fields'
4842         * doc/texinfo.tex: Upgrade to version 2001-07-25.07.
4843
4844         * lib/Makefile.am (EXTRA_DIST): Add strtoll.c, strtoimax.c.
4845         (noinst_HEADERS): Add quote.h.
4846         (libtar_a_SOURCES): Add quote.c, xstrtoimax.c.
4847
4848         * lib/exclude.c: Fix typo in '#include <stdint.h>' directive.
4849
4850         * lib/full-write.c, lib/savedir.c: Comment fix.
4851
4852         * lib/pathmax.h: Remove.
4853
4854         * lib/quote.c, lib/quote.h: New files.
4855
4856         * lib/xgetcwd.c: Don't include pathmax.h.
4857         Include stdlib.h and unistd.h if available.
4858         Include xalloc.h.
4859         (xmalloc, xstrdup, free): Remove decls.
4860         (xgetcwd): Don't assume sizes fit in unsigned.
4861         Check for overflow when computing sizes.
4862         Simplify reallocation code.
4863
4864         * lib/xmalloc.c: Quote failure tests.
4865
4866         * lib/strtoumax.c, lib/xstrtoimax.c: New files.
4867
4868         * lib/strtoimax.c: Renamed from strtouxmax.c.  Make it more
4869         similar to strtol.c.
4870         (UNSIGNED): Renamed from STRTOUXMAX_UNSIGNED.
4871         (verify): New macro.
4872         (strtoumax, uintmax_t, strtoull, strtol): Remove.
4873         (intmax_t, strtoimax, strtol, strtoll): New macros, if UNSIGNED.
4874         (strtoimax): Renamed from strtoumax.  All uses of unsigned values
4875         changed to signed values.  Check sizes at compile-time, not
4876         run-time.  Prefer strtol to strtoll if both work.
4877         (main): Remove.
4878
4879         * lib/xstrtol.h (xstrtoimax): New decl.
4880
4881         * m4/Makefile.am (EXTRA_DIST):
4882         Add codeset.m4, glibc21.m4, iconv.m4, inttypes.m4,
4883         longlong.m4, xstrtoimax.m4.
4884
4885         * m4/inttypes.m4 (jm_AC_HEADER_INTTYPES_H):
4886         Remove; now done by autoconf.
4887         (jm_AC_TYPE_INTMAX_T, jm_AC_TYPE_UINTMAX_T): Replace with
4888         Use AC_CHECK_TYPE instead of merely looking for the header.
4889
4890         * m4/uintmax_t.m4: Use shorter comment.
4891
4892         * m4/xstrtoumax.m4 (jm_AC_PREREQ_XSTRTOUMAX):
4893         Quote first arg of AC_DEFUN.
4894         Require jm_AC_TYPE_INTMAX_T and jm_AC_TYPE_LONG_LONG since they
4895         is needed to parse the include file.
4896         Simplify logic behind the args to AC_REPLACE.
4897
4898         * src/Makefile.am (OMIT_DEPENDENCIES): Remove.
4899
4900         * src/ansi2knr.1, src/ansi2knr.c: Remove; wasn't being used.
4901
4902         * src/rmt.c (main):
4903         Use "Copyright %d" to simplify the translator's job in the future.
4904         Advise translator about circle-C.
4905         * src/tar.c: (decode_options): Likewise.
4906         * tests/genfile.c (main): Likewise.
4907
4908 2001-08-28  Jim Meyering  <meyering@lucent.com>
4909
4910         * lib/argmatch.c: Include "quote.h".
4911         (argmatch_invalid): Quote the context.
4912
4913         * lib/dirname.c (dir_name): Fix typo on PC platforms.
4914
4915         * lib/backupfile.c, lib/basename.c, lib/dirname.c, lib/strtoul.c:
4916         Use single-quote for local .h files.
4917
4918         * lib/error.h (__attribute__): Don't depend on __STRICT_ANSI__.
4919
4920         * lib/getopt.c, lib/getopt.h, lib/getopt1.c: Upgrade to recent
4921         glibc versions.
4922
4923         * lib/getdate.y (get_date): Initialize tm_isdst to -1 before
4924         invoking mktime the last time.
4925
4926         * lib/pathmax.h: Use #if rather than #ifdef for HAVE_UNISTD_H.
4927
4928         * lib/rename.c: Major rewrite by Volker Borchert to use system
4929         rename function, but to work around problems with trailing
4930         slashes.
4931
4932         * lib/strtoll.c: New file, from glibc.
4933         * lib/strtoul.c: Update from glibc.
4934
4935         * lib/strtouxmax.c: Renamed from lib/strtoumax.c.
4936         Add support for signed numbers, too.
4937         (strtoul, strtoull): Do not declare if STRTOUXMAX_UNSIGNED
4938         is not defined.
4939         (strtol, strtoll): Declare as needed, if STRTOUXMAX_UNSIGNED is
4940         not defined.
4941         (strtoumax, uintmax_t, strtoull, strtoul): New macros.
4942         (main): Use generic names in debugging output.
4943         * lib/strtoimax.c: Plus add the following changes of my own:
4944         (main): Use accurate names in debugging output.
4945
4946         * lib/xgetcwd.c (xgetcwd): Use getcwd if glibc 2 or later.
4947         Don't use PATH_MAX.
4948
4949         * m4/c-bs-a.m4, m4/check-decl.m4, m4/d-ino.m4, m4/error.m4,
4950         m4/getline.m4, m4/jm-mktime.m4, m4/malloc.m4, m4/mbrtowc.m4,
4951         m4/mbstate_t.m4, m4/realloc.m4, m4/uintmax_t.m4, m4/utimbuf.m4,
4952         m4/utime.m4, m4/utimes.m4:
4953         Quote the first argument in each use of AC_DEFUN.
4954
4955         * m4/getline.m4: Don't use string.h.
4956
4957         * m4/inttypes.m4, m4/longlong.m4, m4/xstrtoimax.m4: New files.
4958
4959         * m4/mbrtowc.m4 (jm_FUNC_MBRTOWC): @%:@ -> #.
4960
4961 2001-08-27  Paul Eggert  <eggert@twinsun.com>
4962
4963         * NEWS, configure.ac (AC_INIT_AUTOMAKE): Version 1.13.20.
4964
4965         The biggest change is the new --exclude semantics and options.
4966         The basic idea was suggested by Gerhard Poul; thanks!
4967
4968         * NEWS: Describe new --exclude semantics and options, and bug fixes.
4969         * README: ignfail.sh fails on some NFS hosts.
4970         * NEWS, README, lib/xstrtol.h: Add copyright notice.
4971
4972         * Makefile.am (ACLOCAL_AMFLAGS): Add -I m4.
4973         (M4DIR, ACINCLUDE_INPUTS, $(srcdir)/acinclude.m4):
4974         Remove; the automake bug has been fixed.
4975         * acinclude.m4: Remove.
4976
4977         * configure.ac: Renamed from configure.in.
4978         (AC_PREREQ): Bump from 2.13 to 2.52.
4979         (ALL_LINGUAS): Add id, tr.  Remove ko, as po/ko.po (dated
4980         1997-05-30) has an encoding error.
4981         (jm_AC_HEADER_INTTYPES_H): Remove; now done by autoconf.
4982         (AC_FUNC_FNMATCH): Use AC_CONFIG_LINKS, not AC_LINK_FILES.
4983
4984         * doc/fdl.texi: Update to current GNU version.
4985
4986         * doc/tar.texi: Put leading '*' in direntry.
4987         Accommodate new gfdl sectioning.
4988         New option --recursion (the default) that is the inverse of
4989         --no-recursion.
4990
4991         New options --anchored, --ignore-case, --wildcards,
4992         --wildcards-match-slash, and their negations (e.g., --no-anchored).
4993         Along with --recursion and --no-recursion, these control how exclude
4994         patterns are interpreted.  The default interpretation of exclude
4995         patterns is now --no-anchored --no-ignore-case --recursion
4996         --wildcards --wildcards-match-slash.
4997
4998         * lib/Makefile.am (OMIT_DEPENDENCIES): Remove.
4999
5000         * lib/exclude.c (bool): Declare, perhaps by including stdbool.h.
5001         (<sys/types.h>): Include only if HAVE_SYS_TYPES_H.
5002         (<stdlib.h>, <string.h>, <strings.h>, <inttypes.h>, <stdint.h>):
5003         Include if available.
5004         (<xalloc.h>): Include
5005         (SIZE_MAX): Define if <stdint.h> or <inttypes.h> doesn't.
5006         (verify): New macro.  Use it to verify that EXCLUDE macros do not
5007         collide with FNM macros.
5008         (struct patopts): New struct.
5009         (struct exclude): Use it, as exclude patterns now come with options.
5010         (new_exclude): Support above changes.
5011         (new_exclude, add_exclude_file):
5012         Initial size must now be a power of two to simplify overflow checking.
5013         (free_exclude, fnmatch_no_wildcards): New function.
5014         (excluded_filename): No longer requires options arg, as the options
5015         are determined by add_exclude.  Now returns bool, not int.
5016         (excluded_filename, add_exclude):
5017         Add support for the fancy new exclusion options.
5018         (add_exclude, add_exclude_file): Now takes int options arg.
5019         Check for arithmetic overflow when computing sizes.
5020         (add_exclude_file): xrealloc might modify errno, so don't
5021         realloc until after errno might be used.
5022
5023         * lib/exclude.h (EXCLUDE_ANCHORED, EXCLUDE_INCLUDE,EXCLUDE_WILDCARDS):
5024         New macros.
5025         (free_exclude): New decl.
5026         (add_exclude, add_exclude_file): Now takes int options arg.
5027         (excluded_filename): No longer requires options arg, as the options
5028         are determined by add_exclude.  Now returns bool, not int.
5029
5030         * lib/prepargs.c: Include <string.h>; required for C99 since
5031         we use strlen.
5032
5033         * lib/quotearg.c:
5034         BSD/OS 4.1 wchar.h requires FILE and struct tm to be declared.
5035
5036         * lib/xstrtol.h (_DECLARE_XSTRTOL): Improve quality of
5037         diagnostic for LONGINT_INVALID_SUFFIX_CHAR.
5038
5039         * m4/Makefile.am (EXTRA_DIST): Add check-decl.m4, mbrtowc.m4.
5040         Remove inttypes_h.m4, largefile.m4, mktime.m4.
5041
5042         * m4/inttypes_h.m4, m4/largefile.m4, m4/mktime.m4: Remove;
5043         subsumed by Autoconf 2.50.
5044
5045         * m4/error.m4: Upgrade to serial 2.
5046
5047         * m4/fnmatch.m4 (jm_FUNC_FNMATCH): Upgrade to serial 4, but
5048         remove test for GNU C library.  It's not correct, as some
5049         older glibcs are buggy.
5050
5051         * m4/getline.m4, m4/malloc.m4: Upgrade to serial 4.
5052
5053         * m4/prereq.m4: Upgrade to serial 20, but then:
5054         (jm_PREREQ): Add jm_PREREQ_EXCLUDE.
5055         (jm_PREREQ_EXCLUDE): New macro.
5056         (jm_PREREQ_HUMAN): Remove jm_AC_HEADER_INTTYPES_H, as it is subsumed
5057         by autoconf 2.5x.
5058
5059         * m4/realloc.m4: Upgrade to serial 4.
5060
5061         * m4/strerror_r.m4: Revert to serial 1002.
5062
5063         * m4/uintmax_t.m4: Upgrade to autoconf 2.5x.
5064
5065         * m4/utimes.m4: Upgrade to latest version (still "serial 3").
5066
5067         * m4/xstrtoumax.m4: Upgrade to serial 3, but then:
5068         (jm_AC_PREREQ_XSTRTOUMAX): Remove jm_AC_HEADER_INTTYPES_H, as
5069         it is now subsumed by autoconf.  Add inttypes.h.
5070
5071         * po/cs.po, po/da.po, po/de.po, po/es.po, po/et.po, po/fr.po,
5072         po/it.po, po/pl.po, po/sl.po, po/sv.po: Sync with translation project.
5073
5074         * src/buffer.c (new_volume): Stop if the script exits with an error.
5075
5076         * src/common.h (excluded_with_slash, excluded_without_slash):
5077         Remove, replacing by:
5078         (excluded): New decl.
5079         (link_error): New decl.
5080         (excluded_name): Now returns bool.
5081
5082         * src/extract.c:
5083         (struct delayed_symlinks, extract_archive, apply_delayed_symlinks):
5084         Support hard links to symbolic links.
5085
5086         (struct delayed_symlink): Remove 'names' member, replacing it with
5087         'sources' and 'target' member.  All uses changed.
5088
5089         (struct string_list): New type.
5090
5091         (delayed_set_stat, extract_archive): Use offsetof when computing sizes
5092         for struct hack; this avoids wasted space in some cases.
5093
5094         (extract_archive): Fix test for absolute pathnames and/or "..".
5095         Use link_error to report errors for links.
5096         Remove redundant trailing '/' at "really_dir", for all uses, not
5097         just before invoking mkdir.
5098         If overwriting old files, do not worry so much about existing
5099         directories.
5100         Fix mode computation in the case where the directory exists.
5101
5102         (apply_delayed_symlinks): If we can't make a hard link to a symbolic
5103         link, make a copy of the symbolic link.
5104
5105         * src/incremen.c (get_directory_contents):
5106         If ignore_failed_read_option, only warn about
5107         stat failures.
5108
5109         * src/list.c (from_header): Do not issue a diagnostic if TYPE is zero.
5110         However, check for error even for '-' or '+' case.
5111
5112         (print_header): Try parsing uids and gids as unsigned integers first,
5113         and as a uid_t or gid_t only if that fails.  This adds support for
5114         listing positive uids and gids that are greater than UID_MAX and
5115         GID_MAX.
5116
5117         * src/misc.c (link_error): New function.
5118
5119         * src/names.c (collect_and_sort_names):
5120         If ignore_failed_read_option, only warn about
5121         stat errors.
5122
5123         (excluded_name): Now returns bool.  Simplify, as the fancy
5124         features are now all in excluded_filename.
5125
5126         * src/rtapelib.c (base_name): Remove decl, as system.h now
5127         declares it.
5128
5129         * src/system.h: Include stddef.h if available.
5130         (offsetof): Declare if stddef.h doesn't.
5131
5132         Include <dirname.h>.
5133         (FILESYSTEM_PREFIX_LEN, ISSLASH): Remove; now defined by dirname.h.
5134
5135         * src/tar.c (ANCHORED_OPTION, IGNORE_CASE_OPTION,
5136         NO_ANCHORED_OPTION, NO_IGNORE_CASE_OPTION, NO_WILDCARDS_OPTION,
5137         NO_WILDCARDS_MATCH_SLASH_OPTION, WILDCARDS_OPTION,
5138         WILDCARDS_MATCH_SLASH_OPTION):
5139         New enum values.
5140
5141         (long_options, usage, decode_options): Add support for --anchored,
5142         --ignore-case, --no-anchored, --no-ignore-case, --no-wildcards,
5143         --no-wildcards-match-slash, --recursion, --wildcards,
5144         --wildcards-match-slash.
5145
5146         (decode_options): Implement the new way of interpreting exclude
5147         patterns.
5148
5149         (usage): --newer-mtime takes a DATE operand.  DATE may be a file name.
5150
5151         (OPTION_STRING, decode_options): Add -I, -y.  Currently these options
5152         just print error messages suggesting alternatives.
5153
5154         (add_filtered_exclude): Remove.
5155
5156         * tests/Makefile.am (TESTS): Alphabetize, except put version.sh first.
5157
5158         * tests/extrac04.sh (out): Remove
5159         directory/subdirectory/file1, as the new semantics for
5160         --exclude exclude it.
5161
5162         * tests/genfile.c (main): Don't use non-ASCII char in msgid.
5163
5164 2001-08-12  Paul Eggert  <eggert@twinsun.com>
5165
5166         * lib/addext.c (<errno.h>): Include.
5167         (errno): Declare if not defined.
5168         (addext): Work correctly on the Hurd, where pathconf returns -1 and
5169         leaves errno alone, because there is no limit.  Also, work even if
5170         size_t is narrower than long.
5171
5172 2001-07-08  Paul Eggert  <eggert@twinsun.com>
5173
5174         * lib/alloca.c (alloca): Arg is of type size_t, not unsigned.
5175
5176 2001-05-10  Paul Eggert  <eggert@twinsun.com>
5177
5178         * lib/addext.c (ISSLASH, base_name): Remove decls; now in dirname.h.
5179         Include <backupfile.h> and <dirname.h> after size_t is defined.
5180         (addext): Use base_len to trim redundant trailing slashes instead of
5181         doing it ourselves.
5182
5183         * lib/backupfile.c (ISSLASH, base_name):
5184         Remove decls; now in dirname.h.
5185         Include <argmatch.h>, <backupfile.h>, <dirname.h> after size_t
5186         is defined.
5187         (find_backup_file_name): Rename locals to avoid new functions.
5188         Use base_len instead of rolling it ourselves.
5189         Work even if dirlen is 0.
5190         Use a dir of '.' if given the empty string.
5191
5192         * lib/basename.c:
5193         Do not include <stdio.h>, <assert.h>; no longer needed.
5194         (FILESYSTEM_PREFIX_LEN, PARAMS, ISSLASH): Remove; now in dirname.h.
5195         Include <string.h>, <dirname.h>.
5196         (base_name): Allow file names ending in slashes, other than names
5197         that are all slashes.  In this case, return the basename followed
5198         by the slashes.
5199
5200         * lib/dirname.c: Include <string.h> instead of <stdlib.h>.
5201         (FILESYSTEM_PREFIX_LEN, ISSLASH): Remove; now in dirname.h.
5202         (dir_len): Renamed from dirlen.
5203         All callers changed.
5204
5205         * lib/dirname.h (DIRECTORY_SEPARATOR, ISSLASH, FILESYSTEM_PREFIX_LEN):
5206         New macros.
5207         (base_name, base_len, dir_len, strip_trailing_slashes): New decls.
5208
5209 2001-02-16  Paul Eggert  <eggert@twinsun.com>
5210
5211         * lib/quotearg.c (mbrtowc, mbrtowc, mbsinit):
5212         Do not declare or define if HAVE_MBRTOWC,
5213         since the test for HAVE_MBRTOWC now requires proper declarations.
5214
5215         * lib/alloca.c (malloc): Undef before defining.
5216
5217 2001-02-13  Paul Eggert  <eggert@twinsun.com>
5218
5219         * src/compare.c (read_and_process): Use off_t for size.
5220         From Maciej W. Rozycki.
5221
5222 2001-01-26  Paul Eggert  <eggert@twinsun.com>
5223
5224         * lib/quotearg.c: Include stddef.h.  From Jim Meyering.
5225
5226 2001-01-12  Paul Eggert  <eggert@twinsun.com>
5227
5228         * NEWS, configure.in (AC_INIT_AUTOMAKE): Version 1.13.19.
5229
5230         * lib/savedir.h (savedir): Remove size arg.
5231
5232         * doc/tar.texi: Add @setchapternewpage odd.
5233         Remove -I as an alias for -T, for now.
5234         Add @dircategory.
5235         Update copyright.  Remove "Published by".
5236         Dates beginning with / or . are taken to be file names.
5237
5238         * src/tar.c (<time.h>): Do not include;
5239         (time): Do not declare.
5240         (usage): Remove -I as an alias for -T.
5241         (OPTION_STRING): Remove -I.
5242         (decode_options): Dates that look like an absolute path name,
5243         or that start with '.', are presumed to be file names whose
5244         dates are taken.
5245         Remove 'I' as an aliase for 'T'.
5246         Update copyright.
5247
5248         * src/extract.c (<time.h>): Do not include; system.h now does this.
5249         (make_directories): Skip filesystem prefixes.
5250         Don't assume '/' is the only separator.
5251         (extract_sparse_file): Use new full_write semantics.
5252         On write error, return instead of invoking skip_file.
5253         Do not free sparsearray; caller does this now.
5254         (apply_nonancestor_delayed_set_stat): Do not assume '/' is the only
5255         separator.
5256         (extract_archive): Don't assume file name lengths fit in int.
5257         Report what got stripped from member name; it might be more than '/'.
5258         Use new full_write semantics.
5259         Do not pass redundant trailing "/" to mkdir, as POSIX does not allow
5260         mkdir to ignore it.
5261         Do not report mkdir error if old_files_option == KEEP_OLD_FILES.
5262
5263         * src/buffer.c (<time.h>): Do not include; system.h now does this.
5264         (time): Remove decl; likewise.
5265         (child_open_for_uncompress): Use new full_write semantics.
5266         (flush_write): Use ISSLASH instead of testing for '/'.
5267         (flush_read): Likewise.
5268
5269         * src/rmt.h (_remdev): Look for / anywhere in Path.
5270
5271         * src/misc.c (contains_dot_dot): Skip filesystem prefix.
5272         Don't assume '/' is the only separator.
5273         (safer_rmdir): Don't assume '/' is the only separator.
5274
5275         * src/compare.c (diff_archive): Don't assume '/' is the only separator.
5276
5277         * lib/dirname.h (dirlen): New decl.
5278
5279         * src/incremen.c (get_directory_contents):
5280         Remove path_size arg; all callers changed.
5281         Don't assume '/' is the only directory separator.
5282         (gnu_restore): Work even if file name length doesn't fit in int.
5283
5284         * lib/addext.c (ISSLASH): New macro.
5285         (addext): Trim any redundant trailing slashes.
5286
5287         * src/names.c (name_next):
5288         Don't assume '/' is the only directory separator.
5289         (namelist_match): Likewise.
5290         (add_hierarchy_to_namelist): Remove dirsize arg.
5291         Do not assume '/' is the only directory separator.
5292         (new_name): Likewise.
5293
5294         * lib/Makefile.am (noinst_HEADERS): Add dirname.h, full-write.h.
5295         (libtar_a_SOURCES): Add dirname.c.
5296
5297         * src/create.c (relativize):
5298         New function, with much of old start_header's guts.
5299         Handle filesystem prefixes.
5300         (start_header): Use this new function.
5301         (init_sparsearray): Don't bother to zero out the new array;
5302         it's not needed.
5303         (deal_with_sparse): Fix array allocation bug.
5304         (create_archive): Don't assume '/' is the only separator.
5305         (dump_file): Likewise.
5306         Don't worry about leading / in symlink targets.
5307
5308         * lib/savedir.c (savedir):
5309         Remove size arg; it wasn't portable.  All callers changed.
5310
5311         * lib/utime.c (utime_null): Adjust to new full_write convention.
5312
5313         * configure.in (YACC): Avoid portability problem with Ultrix sh.
5314
5315         * lib/backupfile.c: Include <dirname.h>.
5316         (ISSLASH): New macro.
5317         (find_backup_file_name): Use dirlen to calculate directory lengths.
5318         (max_backup_version): Strip redundant trailing slashes.
5319
5320         * src/common.h: Include <full-write.h>.
5321         (get_directory_contents): No longer has size arg.
5322         (gnu_restore): Arg is size_t, not int.
5323
5324         * src/system.h: Include <time.h>.
5325         (time): Declare if not defined.
5326
5327         * lib/full-write.c: Include full-write.h, not safe-read.h.
5328         full_write returns size_t, with short writes meaning failure.
5329         All callers changed.
5330
5331         * src/rtapelib.c: Include full-write.h.
5332
5333         * src/rmt.c: Include full-write.h.
5334         (main): Update copyright.
5335
5336         * doc/getdate.texi: Mention that only English is supported.
5337         Show how to use "date" so that the output is acceptable to getdate.
5338         Mention Z as an abbreviation for UTC.
5339
5340         * lib/full-write.h: New file.
5341
5342         * src/list.c: system.h now does time.h stuff.
5343
5344         * lib/dirname.c:
5345         Use HAVE_STDLIB_H, not STDC_HEADERS, to decide whether to include
5346         stdlib.h.
5347         Do not include string.h, strings.h, or assert.h; no longer needed.
5348         (strrchr, memrchr, malloc): Remove decls; no longer needed.
5349         Include <xalloc.h>.
5350         (base_name): New decl.
5351         (BACKSLASH_IS_PATH_SEPARATOR): Remove.
5352         (dir_name_r): Remove.
5353         (dirlen): New function.
5354         (dir_name): Use dirlen instead of dir_name_r.
5355         (<string.h>, <strings.h>): Include only if test program.
5356         (main): Use "return 0", not "exit (0)".
5357
5358 2000-12-08  Paul Eggert  <eggert@twinsun.com>
5359
5360         * lib/dirname.h: New file.
5361
5362 2000-11-02  Vesselin Atanasov  <vesselin@bgnet.bg>
5363
5364         * lib/fnmatch.c: Do not comment out all the code if we are using
5365         the GNU C library, because in some cases we are replacing buggy
5366         code in the GNU C library itself.
5367
5368 2000-10-30  Paul Eggert  <eggert@twinsun.com>
5369
5370         * lib/fnmatch.c (FOLD): Do not assume that characters are unsigned.
5371
5372 2000-10-29  Paul Eggert  <eggert@twinsun.com>
5373
5374         * NEWS, configure.in (AC_INIT_AUTOMAKE): Version 1.13.18.
5375
5376         * src/tar.c: Include <fnmatch.h>, for FNM_LEADING_DIR.
5377
5378 2000-10-28  Paul Eggert  <eggert@twinsun.com>
5379
5380         * doc/tar.texi: --no-recursion now applies to extraction, too.
5381         * src/create.c (dump_file): no_recurse_option -> ! recursion_option
5382         * src/names.c (namelist_match, excluded_name):
5383         Do not match subfiles of a directory
5384         if --no-recursion is specified.
5385         * src/tar.c (NO_RECURSE_OPTION): Remove.
5386         (long_options): Have getopt set the --no-recursion flag.
5387         (decode_options): Initialize recursion_option to FNM_LEADING_DIR.
5388         Remove case for NO_RECURSE_OPTION.
5389         * src/common.h (recursion_option):
5390         Renamed from no_recurse_option, with sense
5391         negated, and with FNM_LEADING_DIR being the nonzero value.
5392
5393         * names.c (namelist_match): New function.
5394         (name_match, name_scan): Use it to eliminate duplicate code.
5395         (names_notfound): Remove special case for Amiga.
5396
5397 2000-10-27  Paul Eggert  <eggert@twinsun.com>
5398
5399         * src/misc.c (read_error_details, read_warn_details,
5400         read_fatal_details): Don't assume size_t is unsigned long.
5401
5402         * src/buffer.c (flush_read): If read_full_records_option, try to
5403         fill the input buffer, as --delete -f - needs this.
5404
5405 2000-10-24  Paul Eggert  <eggert@twinsun.com>
5406
5407         * m4/strerror_r.m4 (AC_FUNC_STRERROR_R): Port to autoconf 2.13.
5408
5409         * src/buffer.c (check_label_pattern):
5410         Make sure header name is a string before
5411         passing it to fnmatch.
5412         (init_volume_number): Check for global_volno overflow.
5413         (new_volume): Check for global_volno overflow.
5414
5415         * src/tar.c (decode_options):
5416         Check that volume label is not too long to overflow
5417         name in tar header block.
5418
5419         * Makefile.am (EXTRA_DIST): Remove rebox.el.
5420
5421         * configure.in (HAVE_DECL_STRERROR_R): Remove our handwritten code.
5422         (AC_FUNC_STRERROR_R): Use this instead.
5423
5424 2000-10-23  Paul Eggert  <eggert@twinsun.com>
5425
5426         * src/extract.c: Include <time.h>, since we invoke "time".
5427
5428         * lib/prepargs.c (prepend_default_options):
5429         Don't use NULL, for portability.
5430
5431         * m4/fnmatch.m4: Add "working" to message.
5432
5433         * src/names.c: (_GNU_SOURCE): Remove; autoconf now does this.
5434         Include <hash.h>.
5435         (getpwuid, getgrgid): Declare only if system headers don't.
5436         (gid_to_gname): Don't invoke setgrent.
5437         (namelist): Now static, not global.
5438         (nametail): New var.  All uses of namelast changed to use
5439         nametail, with one extra level of indirection.
5440         (name_gather): Use memcpy instead of strncpy + assignment of NUL.
5441         (name_match): Set nametail too, when setting namelist to null.
5442         (add_hierarchy_to_namelist): Change type of dir arg from char * to
5443         struct name *, so that we don't have to look up the name again
5444         here.  Get change_dir from dir rather than as a separate arg.  Add
5445         dirsize arg, and pass it along to get_directory_contents.  Remove
5446         unnecessary check of directory type.
5447         (new_name): Do not append a slash if PATH already ends in one.
5448         (avoided_names, struct avoided_name): Remove.
5449         (avoided_name_table): New var, replacing avoided_names.
5450         (hash_avoided_name, compare_avoided_names): New function.
5451         (add_avoided_name, is_avoided_name): Use hash table rather than
5452         linked list.
5453
5454         * src/buffer.c (_GNU_SOURCE): Remove; autoconf now does this.
5455         (child_open_for_compress, child_open_for_uncompress,
5456         close_archive): Propagate any failure of the compression process
5457         back to "tar".
5458         (open_archive, flush_write, flush_read, close_archive): Do not
5459         allocate an array of size PATH_MAX, as PATH_MAX might be (size_t)
5460         -1.  Instead, allocate an array with the size that's needed.
5461         (open_archive): Don't bother checking S_ISCHR of /dev/null.
5462         (backspace_output): Don't try to backspace past start of archive.
5463         (close_archive): Remove special case for DELETE_SUBCOMMAND.
5464
5465         * acconfig.h (_GNU_SOURCE, DEFAULT_ARCHIVE, DEFAULT_BLOCKING,
5466         DENSITY_LETTER, DEVICE_PREFIX, EMUL_OPEN3, HAVE_GETGRGID,
5467         HAVE_GETPWUID, HAVE_MKNOD, HAVE_RTAPELIB, HAVE_ST_FSTYPE_STRING,
5468         HAVE_UNION_WAIT, HAVE_UTIME_H, HAVE_VALLOC, MTIO_CHECK_FIELD, PACKAGE,
5469         PROTOTYPES, REMOTE_SHELL, STD_INC_PATH, VERSION, WITH_CATALOGS,
5470         WITH_DMALLOC, WITH_REGEX):
5471         Remove; now generated automatically.
5472
5473         * configure.in (_GNU_SOURCE): Define to empty, not 1, for
5474         compatibility for glibc fragments.
5475         (_GNU_SOURCE, HAVE_UTIME_H, MTIO_CHECK_FIELD,
5476         HAVE_ST_FSTYPE_STRING, HAVE_MKNOD, REMOTE_SHELL, DENSITY_LETTER,
5477         DEVICE_PREFIX, DEFAULT_ARCHIVE, DEFAULT_BLOCKING): Add comment so
5478         that we needn't put an entry into acconfig.h.
5479         (ALL_LINGUAS): Add da.
5480         (AC_C_BACKSLASH_A): Remove; jm_PREREQ_QUOTEARG now does this.
5481         (AC_CHECK_HEADERS): Add stdbool.h (for hash.h users), wctype.h
5482         (for strtol.c).
5483         (AC_MBSTATE_T): Add.
5484         (RMT): Append $(EXEEXT).
5485         (HAVE_GETGRGID, HAVE_GETPWUID, pe_AC_TYPE_SIGNED_CHAR): Remove.
5486         (HAVE_DECL_FREE, HAVE_DECL_GETGRGID, HAVE_DECL_GETPWUID,
5487         HAVE_DECL_GETENV, HAVE_DECL_MALLOC, HAVE_DECL_STRTOUL,
5488         HAVE_DECL_STRTOULL, HAVE_DECL_STRERROR_R): New macros.
5489         (jm_PREREQ_ADDEXT, jm_PREREQ_ERROR, jm_PREREQ_QUOTEARG): Add.
5490         (AC_REPLACE_FUNCS): Remove execlp; no longer needed.
5491         (AC_CHECK_FUNCS): Add clock_gettime; AC_SEARCH_LIBS wasn't enough.
5492         Remove mbrtowc; jm_PREREQ_QUOTEARG now does this.
5493         (EMUL_OPEN3): Remove; no longer needed.
5494         (DENSITY_LETTER, DEVICE_PREFIX): Simplify m4 quoting.
5495
5496         * m4/fnmatch.m4 (AC_FUNC_FNMATCH): Detect d*/*1 vs d/s/1 bug.
5497
5498         * src/common.h: Do not include basename.h.
5499         * src/rtapelib.c (base_name): Do not include basename.h;
5500         declare base_name instead.
5501
5502         * lib/basename.h, lib/execlp.c, lib/getpagesize.h, lib/mkdir.c:
5503         Remove these files.
5504         * lib/getstr.c, lib/getstr.h, lib/hash.h, lib/hash.h, lib/prepargs.c,
5505         lib/prepargs.h, lib/savedir.c, lib/savedir.h: New files.
5506         * lib/Makefile.am (EXTRA_DIST, noinst_HEADERS, libtar_a_SOURCES):
5507         Adjust to the above changes.
5508
5509         * lib/Makefile.am (AUTOMAKE_OPTIONS): Remove ../src/ansi2knr.
5510
5511         * src/open3.c: Remove.
5512
5513         * src/Makefile.am (AUTOMAKE_OPTIONS): Remove ansi2knr.
5514         (tar_SOURCES): Remove open3.c.
5515         (INCLUDES): Remove -I.., as automake does that.
5516         (OMIT_DEPENDENCIES): ../lib/fnmatch.h -> fnmatch.h.  Add localedir.h.
5517
5518         The following changes are to put LOCALEDIR into localedir.h instead
5519         of passing it on the command line.
5520         (DEFS): Remove.
5521         (DISTCLEANFILES): New macro.
5522         (localedir.h): New rule.
5523         (rmt.o tar.o): Now depend on localedir.h.
5524
5525         * tests/delete02.sh, tests/extrac04.sh: New files.
5526
5527         * tests/Makefile.am (AUTOMAKE_OPTIONS): Remove ansi2knr.
5528         (TESTS): Add extrac04.sh, and restore delete02.sh.
5529         (DEFS): Remove; LOCALEDIR is now done via localedir.h.
5530         (INCLUDES): Remove -I.. as automake does this now.
5531
5532         * src/rtapelib.c (rexec): Don't declare unless using it.
5533         (do_command): Simplify signal-handling code slightly.
5534
5535         * src/delete.c (blocks_needed): Remove.  All uses changed to use
5536         blocking_factor - new_blocks.
5537         (acting_as_filter): New var.
5538         (write_record, delete_archive_members): Use acting_as_filter
5539         rather than archive == STDIN_FILENO to detect whether we're acting
5540         as a filter, as open can return STDIN_FILENO in some cases.
5541         (delete_archive_members): Ignore zero blocks if
5542         ignore_zeros_option is nonzero.  Fix bug that messed up last
5543         output block: write_eot can't be used here, as it gets confused
5544         when the input is at end of file.
5545
5546         * src/compare.c (diff_archive): Do not impose an arbitrary limit on
5547         symbolic link contents length.  Pass directory size to
5548         get_directory_contents.
5549
5550         * m4/decl.m4, m4/error.m4, m4/mbstate_t.m4, m4/prereq.m4,
5551         m4/strerror_r.m4: New files.
5552         * m4/signedchar.m4: Remove this file.
5553         * Makefile.am (ACINCLUDE_INPUTS): Adjust to above changes.
5554         * m4/Makefile.am (EXTRA_DIST): Likewise.
5555
5556         * Makefile.am (DISTCLEANFILES): Add intl/libintl.h.
5557
5558         * po/da.po: New translation file.
5559
5560         * src/mangle.c (extract_mangle):
5561         Fix diagnostic with wrong number of %s'es.
5562
5563         * lib/fnmatch.c (fnmatch):
5564         Fix some FNM_FILE_NAME and FNM_LEADING_DIR bugs,
5565         e.g. fnmatch("d*/*1", "d/s/1", FNM_FILE_NAME) incorrectly yielded zero.
5566
5567         * lib/full-write.c (full_write): Some buggy drivers return 0 when you
5568         fall off a device's end.  Detect this.
5569
5570         * src/system.h (IN_CTYPE_DOMAIN): Renamed from CTYPE_DOMAIN.  All
5571         uses changed.
5572         (open): Remove macro; we no longer support EMUL_OPEN3.  Do not
5573         include <pathmax.h> and directory include files like <dirent.h>;
5574         no longer used.  Include <savedir.h> instead.
5575         (closedir, signed_char): remove macro; no longer used.
5576         (bool, false, true): Include <stdbool.h> if you have the include
5577         file, otherwise define.
5578
5579         * src/misc.c:
5580         (is_dot_or_dotdot, closedir_error, closedir_warn, opendir_error,
5581         opendir_warn, readdir_error): Remove; no longer needed.
5582         (safer_rmdir): Strip leading ./ (or .// or ./// or ././ or etc.)
5583         before deciding whether we're trying to remove ".".
5584         (remove_any_file): Try unlink first if we are not root.  Use
5585         savedir when recursively removing directories, to avoid exhausting
5586         file descriptors.
5587         (savedir_error, savedir_warn, symlink_error): New functions.
5588
5589         * src/list.c: (read_and): Do not invoke
5590         apply_nonancestor_delayed_set_stat; DO_SOMETHING is now
5591         responsible for that.  Do not invoke apply_delayed_set_stat; our
5592         caller is now responsible for that.
5593         (read_header): Use signed char instead of signed_char.  Prevent
5594         later references to current_header from mistakenly treating it as
5595         an old GNU header.
5596         (from_header): Quote invalid base-64 strings in diagnostics.
5597         (time_from_header): Do not warn about future timestamps in
5598         archive; check_time now does that.
5599         (print_header): Quote unknown file types.
5600         (skip_member): New function, replacing skip_extended_headers and
5601         now skipping the whole member instead of just the extended
5602         headers.  All callers changed.  This makes the code handle
5603         extended headers uniformly, and fixes some bugs.
5604
5605         * src/update.c (update_archive): Use skip_member.
5606
5607         * src/extract.c (we_are_root): Now global.
5608         (struct delayed_symlink): New type.
5609         (delayed_symlink_head): New var.
5610         (extr_init, fatal_exit): Invoke extract_finish on fatal errors,
5611         not apply_delayed_set_stat.
5612         (set_mode, set_stat): Pointer args are now const pointers.
5613         (check_time): New function.
5614         (set_stat): Warn if setting a file's timestamp to be the future.
5615         (make_directories): Do not save and restore errno.
5616         (maybe_recoverable): Set errno to ENOENT if we cannot make missing
5617         intermediate directories.
5618         (extract_archive): Invoke apply_nonancestor_delayed_set_stat here,
5619         not in caller.  Extract potentially dangerous symbolic links more
5620         carefully, deferring their creation until the end, and using a
5621         regular file placeholder in the meantime.  Do not remove trailing
5622         / and /. from file names.  Do not bother checking for ".." when
5623         checking whether a directory loops back on itself, as loopbacks
5624         can occur with symlinks too.  Also, in that case, do not bother
5625         saving and restoring errno; just set it to EEXIST.
5626         (apply_nonancestor_delayed_set_stat): A prefix is a potential
5627         ancestor if it ends in slash too (as well as ending in a char just
5628         before slash).
5629         (apply_delayed_set_stat): Remove.
5630         (apply_delayed_symlinks, extract_finish): New functions.
5631
5632         * doc/fdl.texi: New file.
5633         * doc/Makefile.am (EXTRA_DIST): Add fdl.texi.
5634         ($(srcdir)/tar.info): Add fdl.texi.  Invoke makeinfo with --no-split.
5635         * doc/tar.texi: Add Free Documentation License.  New section
5636         "Overwrite Old Files", and revamp that section to make it easier to
5637         follow.  "tar" -> "GNU tar" where appropriate.  Migrate getdate
5638         documentation into getdate.texi.  Fix several minor typos.  Describe
5639         TAR_OPTIONS.  Describe incompatibility between incremental backups and
5640         --atime-preserve.  Describe incompatibility between --verify and other
5641         options.  Mention that tar normally removes symbolic links rather than
5642         following them, when extracting a file of the same name.
5643
5644         * THANKS: Add gpoul.  Change skip's address.
5645
5646         * po/POTFILES.in: Add lib/human.c.
5647
5648         * src/common.h (namelist, namelast): Remove decls.
5649         (we_are_root, extract_finish, skip_member, savedir_error,
5650         savedir_warn, symlink_error, gnu_list_name): New decls.
5651         (apply_delayed_set_stat, apply_nonancestor_delayed_set_stat,
5652         skip_extended_headers, is_dot_or_dotdot, closedir_error,
5653         closedir_warn, opendir_error, opendir_warn, readdir_error,
5654         readdir_warn): Remove decls.
5655         (get_directory_contents): New off_t arg.
5656         (addname): Now returns struct name *.
5657
5658         * src/tar.h, tests/genfile.c: Fix comments.
5659
5660         * src/create.c: Include hash.h.
5661         (gnu_list_name): Remove decl.
5662         (struct link): Remove "next" member.
5663         (linklist): Remove.
5664         (start_header): Say "leading `FOO'" rather than "`FOO' prefix" for
5665         consistency with other diagnostics.
5666         (deal_with_sparse): Check for I/O error when closing the file.
5667         (create_archive): Do not allocate an array of size PATH_MAX, as
5668         PATH_MAX might be (size_t) -1.  Instead, allocate an array with
5669         the size that's needed.
5670         (hash_link, compare_links): New functions.
5671         (dump_file): Do not exhaust open file descriptors when descending
5672         deeply into a directory, by using savedir rather than
5673         opendir/readdir.  Do not zero-fill the name buffer unnecessarily.
5674         Hash the set of links already created, instead of using a linked
5675         list.  Fix some bugs in outputting sparse files which caused the
5676         sparse tables to be incorrect.  When a file unexpectedly shrinks,
5677         output zeros rather than garbage.  Do not allocate an array of
5678         size PATH_MAX, as PATH_MAX might be (size_t) -1.  Instead,
5679         allocate an array with the size that's needed.
5680
5681         * src/incremen.c: Include hash.h.
5682         (struct directory): Remove "next", "dir_text".  Change "name" to
5683         be char[1] with struct hack, not const char *.  Add "found".
5684         (directory_list): Remove.  Replaced by directory_table.
5685         (directory_table): New var.
5686         (nfs_string): Renamed from nfs.
5687         (hash_directory, compare_directories): New functions.
5688         (note_directory): Now returns struct directory *.  First arg is
5689         now const pointer.  struct stat arg is now dev_t, ino_t, nfs.
5690         Remove text arg.  New "found" arg, basically corresponding to the
5691         old text arg not being null.  All callers changed.
5692         (note_directory, find_directory): Use hash table rather than
5693         linked list.
5694         (get_directory_contents): New arg "device".  Use savedir to do the
5695         hard work.  Save the nfs-ness of stat_data, since it might change
5696         under us.  Use note_directory instead of find_directory to save
5697         some work.  When adding an "A" record, do it with
5698         add_to_accumulator instead of cheating with strcat.
5699         (read_directory_file): Use "+" flag before device to indicate
5700         whether it was NFS.  Fix typo in checking for strtoul error.
5701         (write_directory_file_entry): New function.
5702         (write_directory_file): Use it, and use the hash routines to
5703         traverse the directory table.
5704         (gnu_restore): Use savedir rather than opendir/readdir.
5705
5706         * src/tar.c: Include localedir.h, prepargs.h.
5707         (long_options): Now static.
5708         (long_options, usage, decode_options): -j is now short for
5709         --bzip2, and -I is now an alias for -T.
5710         (decode_options, main): argv is not const pointer now.
5711         (decode_options): Invoke prepend_default_options to support
5712         TAR_OPTIONS.  In diagnostic, mention the string that was the
5713         invalid blocking factor, tape length, group, owner, or record
5714         size.  --delete is no longer incompatible with -f -, undoing
5715         2000-01-07 change.
5716         (main): Invoke extract_finish at end of extraction.
5717
5718         * src/rmt.c: Include localedir.h.
5719         (main): Update copyright date to 2000.
5720
5721         * doc/getdate.texi: New file, taken from fileutils 4.0.27, with the
5722         following changes: Use @sc where appropriate.  Document the ranges of
5723         supported times more precisely.  Add Eggert to getdate authors.
5724         Document old Latin 12m/12pm tradition.  Remove list of alphabetic time
5725         zone names, as it wasn't correct and people shouldn't be relying on it
5726         anyway.  Relative items also account for non-DST adjustments.  Fix
5727         some misspellings.
5728
5729         * lib/prepargs.c, lib/prepargs.h, tests/extrac04.sh: New file.
5730
5731         * tests/ignfail.sh: opendir -> savedir in diagnostics.
5732
5733         * tests/preset.in: Set LANGUAGE to the empty string, for some
5734         brain damaged host.
5735
5736 2000-10-20  Paul Eggert  <eggert@twinsun.com>
5737
5738         * m4/fnmatch.m4: Mention the GNU C library.
5739
5740 2000-10-19  Paul Eggert  <eggert@twinsun.com>
5741
5742         * m4/fnmatch.m4: Add a couple more test cases to catch bugs in
5743         glibc 2.1.95.
5744
5745 2000-10-17  Paul Eggert  <eggert@twinsun.com>
5746
5747         * lib/human.c (<limits.h>): Do not include; human.h does it if needed.
5748         (CHAR_BIT): Remove.
5749
5750         * lib/human.h (<limits.h>): Include if HAVE_LIMITS_H.
5751         (CHAR_BIT): Define if not defined.
5752
5753 2000-09-09  Paul Eggert  <eggert@twinsun.com>
5754
5755         * lib/quotearg.c: From fileutils: rename ISASCII to IN_CTYPE_DOMAIN.
5756
5757 2000-08-07  Paul Eggert  <eggert@twinsun.com>
5758
5759         * lib/xmalloc.c: Memory exhausted -> memory exhausted
5760
5761         * lib/xalloc.h (xalloc_msg_memory_exhausted):
5762         change to array from char *.
5763
5764 2000-08-06  Paul Eggert  <eggert@twinsun.com>
5765
5766         * m4/mbstate_t.m4: Define mbstate_t to be int, not char, for
5767         compatibility with glibc 2.1.3 strftime.c.
5768
5769 2000-07-31  Paul Eggert  <eggert@twinsun.com>
5770
5771         * lib/quotearg.c (quotearg_n_options):
5772         Don't make the initial slot vector a constant,
5773         since it might get modified.
5774
5775         * lib/quotearg.c: Add support for more than one preallocated slot.
5776
5777 2000-07-30  Paul Eggert  <eggert@twinsun.com>
5778
5779         * lib/quotearg.c (quotearg_n_options):
5780         Preallocate a slot 0 buffer, so that the caller
5781         can always quote one small component of a "memory exhausted" message
5782         in slot 0.
5783
5784 2000-07-23  Paul Eggert  <eggert@twinsun.com>
5785
5786         * lib/quotearg.c:
5787         Include <wchar.h> even if ! (HAVE_MBRTOWC && 1 < MB_LEN_MAX), so that
5788         mbstate_t is always defined.
5789
5790         Do not inspect MB_LEN_MAX, since it's incorrectly defined to be 1 in
5791         some GCC installations, and this configuration error is likely to be
5792         common.
5793
5794 2000-07-22  Paul Eggert  <eggert@twinsun.com>
5795
5796         * lib/quotearg.c:
5797         When the system forces us to redefine mbstate_t, shadow its mbsinit
5798         function.  From Bruno Haible.
5799
5800 2000-07-14  Paul Eggert  <eggert@twinsun.com>
5801
5802         * lib/xmalloc.c: Simplify exhausted message.
5803
5804         * lib/quotearg.h: Update copyright date; from Jim Meyering.
5805
5806 2000-07-13  Paul Eggert  <eggert@twinsun.com>
5807
5808         * lib/quotearg.h (enum quoting style):
5809         New constant clocale_quoting_style.
5810
5811         * lib/quotearg.c:
5812         (quoting_style_args, quoting_style_vals, quotearg_buffer_restyled):
5813         Add support for clocale_quoting_style, undoing previous change to
5814         locale_quoting_style.
5815
5816 2000-07-10  Paul Eggert  <eggert@twinsun.com>
5817
5818         * lib/quotearg.c:
5819         <wchar.h>: Include only if HAVE_MBRTOWC && 1 < MB_LEN_MAX,
5820         since otherwise we don't need it.
5821         (MB_CUR_MAX): Redefine to 1 if ! (HAVE_MBRTOWC && 1 < MB_LEN_MAX),
5822         since we don't do multibytes in that case.
5823         (quotearg_buffer_restyled): If a unibyte locale, don't bother to
5824         invoke multibyte primitives.
5825
5826         * m4/mbstate_t.m4 (AC_MBSTATE_T):
5827         Renamed from AC_MBSTATE_T_OBJECT.  All uses changed.
5828         Change from a two-part test, which defines both HAVE_MBSTATE_T_OBJECT
5829         and mbstate_t, to a single-part test that simply defines mbstate_t.
5830
5831         * lib/quotearg.c (mbrtowc): Do not use HAVE_WCHAR_H in the definition.
5832         Use defined mbstate_t, not HAVE_MBSTATE_T_OBJECT,
5833         to decide whether to define the BeOS workaround macro;
5834         this adjusts to the change to AC_MBSTATE_T.
5835
5836         * m4/strerror_r.m4: New file.
5837
5838 2000-07-05  Paul Eggert  <eggert@twinsun.com>
5839
5840         * lib/quotearg.c: Use double-quote to quote.
5841
5842         * lib/quotearg.c (N_): New macro.
5843         (gettext_default): New function.
5844         (quotearg_buffer_restyled): Use gettext_default ("{LEFT QUOTATION MARK}",
5845         "\"") for left quote, and gettext_default ("{RIGHT QUOTATION MARK}", "\"")
5846         for right quote.
5847
5848         * lib/quotearg.c (struct quoting_options):
5849         Simplify quote_these_too dimension.
5850         From Bruno Haible  <haible@clisp.cons.org>.
5851
5852         * m4/mbstate_t.m4 (AC_MBSTATE_T_OBJECT):
5853         Test for mbstate_t only if the test
5854         for an object-type mbstate_t fails.
5855
5856         * lib/quotearg.c (mbrtowc): Declare returned type, since BeOS doesn't.
5857
5858 2000-07-03  Paul Eggert  <eggert@twinsun.com>
5859
5860         * m4/mbstate_t.m4 (AC_MBSTATE_T_OBJECT): Port to autoconf 2.13.
5861         Add AC_CHECK_HEADERS(stdlib.h), since we use HAVE_STDLIB_H.
5862
5863         * lib/quotearg.c (mbrtowc):
5864         Assign to *pwc, and return 1 only if result is nonzero.
5865         (iswprint): Define to ISPRINT if we are substituting our own mbrtowc.
5866
5867 2000-07-02  Paul Eggert  <eggert@twinsun.com>
5868
5869         * lib/quotearg.c (mbstate_t):
5870         Do not define; it should be defined with AC_CHECK_TYPE.
5871
5872 2000-06-26  Paul Eggert  <eggert@twinsun.com>
5873
5874         * m4/mbstate_t.m4: Include stdio.h before wchar.h, to work around
5875         a bug in glibc 2.1.3.
5876
5877         * lib/xmalloc.c: Fix inaccurate comment for xrealloc.
5878
5879 2000-06-19  Paul Eggert  <eggert@twinsun.com>
5880
5881         * lib/quotearg.c (ISASCII): Add #undef and move definition to follow
5882         inclusion of wctype.h to work around solaris2.6 namespace pollution.
5883         (ISPRINT): Likewise.
5884         Reported by Tom Tromey.
5885
5886 2000-06-15  Paul Eggert  <eggert@twinsun.com>
5887
5888         * lib/human.c (adjust_value): New function.
5889         (human_readable_inexact): Apply rounding style even when printing
5890         approximate values.
5891
5892         * lib/human.c: Avoid shadowing warnings.
5893         From Jim Meyering.
5894
5895 2000-06-14  Paul Eggert  <eggert@twinsun.com>
5896
5897         * lib/human.c (human_readable_inexact): Allow an input block size
5898         that is not a multiple of the output block size, and vice versa.
5899
5900         * lib/getdate.y (get_date): Apply relative times after time zone
5901         indicator, not before.
5902
5903 2000-05-31  Paul Eggert  <eggert@twinsun.com>
5904
5905         * m4/largefile.m4: Rewrite so that we don't need to run getconf,
5906         and thus don't need AC_CANONICAL_HOST.
5907
5908         (AC_SYS_LARGEFILE_FLAGS, AC_SYS_LARGEFILE_SPACE_APPEND): Remove.
5909         (AC_SYS_LARGEFILE_TEST_INCLUDES): New macro.
5910         (AC_SYS_LARGEFILE_MACRO_VALUE): Change arguments from
5911         CODE-TO-SET-DEFAULT to VALUE, INCLUDES, FUNCTION-BODY.  All uses
5912         changed.  Instead of inspecting the output of getconf, try to
5913         compile the test program without and with the macro definition.
5914         (AC_SYS_LARGEFILE): Do not require AC_CANONICAL_HOST or check for
5915         getconf.  Instead, check for the needed flags by compiling test
5916         programs.
5917
5918         * configure.in (AC_CANONICAL_HOST): Remove; the largefile stuff no
5919         longer needs it.
5920         * config.guess, config.sub: Remove these files, for similar reasons.
5921
5922 2000-05-03  Paul Eggert  <eggert@twinsun.com>
5923
5924         * m4/largefile.m4 (AC_SYS_LARGEFILE): Define _XOPEN_SOURCE to be
5925         500, instead of _GNU_SOURCE to be 1, to work around glibc 2.1.3
5926         bug.  This avoids a clash when files like regex.c that define
5927         _GNU_SOURCE.
5928
5929 2000-05-02  Paul Eggert  <eggert@twinsun.com>
5930
5931         * m4/largefile.m4 (AC_SYS_LARGEFILE):
5932         Define _GNU_SOURCE if this is needed to make
5933         ftello visible (e.g. glibc 2.1.3).  Use compile-time test, rather than
5934         inspecting host and OS, to decide whether to define _LARGEFILE_SOURCE.
5935
5936         * lib/quotearg.c (mbrtowc, mbstat_t):
5937         Add definitions if !HAVE_MBSTATE_T_OBJECT.
5938         (<wctype.h>): Include if HAVE_WCTYPE_H.
5939         (iswprint): Define to 1 if we lack it
5940
5941 2000-04-18  Paul Eggert  <eggert@twinsun.com>
5942
5943         * m4/mbstate_t.m4: New file.
5944
5945 2000-04-17  Bruno Haible  <haible@clisp.cons.org>
5946
5947         * tests/ignfail.sh: Test for uid 0 along with user "root".
5948
5949 2000-04-05  Paul Eggert  <eggert@twinsun.com>
5950
5951         * m4/largefile.m4 (AC_SYS_LARGEFILE_FLAGS):
5952         Don't use -n32 on IRIX if the installer said
5953         otherwise.
5954
5955 2000-02-28  Paul Eggert  <eggert@twinsun.com>
5956
5957         * lib/quotearg.c (ALERT_CHAR): New macro.
5958         (quotearg_buffer_restyled): Use it.
5959
5960 2000-02-23  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
5961
5962         * src/list.c (tartime): Fix off-by-one error when copying year if
5963         OLD_CTIME.
5964
5965 2000-02-18  Paul Eggert  <eggert@twinsun.com>
5966
5967         * lib/getdate.y: Handle two-digit years with leading zeros correctly.
5968         (textint): New typedef.
5969         (parser_control): Changed from struct parser_control to typedef
5970         (for consistency).  Member year changed from int to textint.  All
5971         uses changed.
5972         (YYSTYPE): Removed; replaced by %union with int and textint
5973         members.
5974         (tID): Removed; not used.
5975         (tDAY, tDAY_UNIT, tDAYZONE, tHOUR_UNIT, tID, tLOCAL_ZONE,
5976         tMERIDIAN, tMINUTE_UNIT, tMONTH, tMONTH_UNIT tSEC_UNIT, tSNUMBER,
5977         tUNUMBER, tYEAR_UNIT, tZONE, o_merid): Now of type <intval>.
5978         (tSNUMBER, tUNUMBER): Now of type <textintval>.
5979         (date, number, to_year): Use width of number in digits, not its
5980         value, to determine whether it's a 2-digit year, or a 2-digit
5981         time.
5982         (yylex): Store number of digits of numeric tokens.  Return '?' for
5983         unknown identifiers, rather than (unused) tID.
5984
5985 2000-01-16  Paul Eggert  <eggert@twinsun.com>
5986
5987         * lib/quotearg.c (quotearg_buffer_restyled):
5988         Do not quote alert, backslash, formfeed,
5989         and vertical tab unnecessarily in shell quoting style.
5990
5991 2000-01-15  Paul Eggert  <eggert@twinsun.com>
5992
5993         * m4/c-bs-a.m4:
5994         Change quoting to be compatible with future autoconf versions.
5995
5996 2000-01-11  Paul Eggert  <eggert@twinsun.com>
5997
5998         * lib/exclude.c (FILESYSTEM_PREFIX_LEN, ISSLASH): Remove unused macros.
5999
6000 2000-01-07  Paul Eggert  <eggert@twinsun.com>
6001
6002         * NEWS, configure.in (AC_INIT_AUTOMAKE): Version 1.13.17.
6003
6004         Fix bug with fnmatch.h dependency, as follows:
6005         * src/Makefile.am (OMIT_DEPENDENCIES): New macro.
6006         * lib/Makefile.am (OMIT_DEPENDENCIES): New macro.
6007
6008         * src/common.h (apply_nonancestor_delayed_set_stat):
6009         Renamed from apply_delayed_set_stat.
6010         (apply_delayed_set_stat, decode_mode, chmod_error_details,
6011         chown_error_details, close_warn, closedir_warn, mkdir_error,
6012         read_error_details, read_fatal_details, read_warn_details,
6013         seek_error_details, seek_warn_details, utime_error,
6014         write_error_details, write_fatal_details): New decls.
6015
6016         Make diagnostic messages more regular.
6017         * src/create.c (dump_file): Quote file names with colons if possible.
6018         * src/compare.c (diff_archive): Likewise.
6019         * src/extract.c (repair_delayed_set_stat, extract_archive): Likewise.
6020         * src/incremen.c (get_directory_contents, gnu_restore): Likewise.
6021         * src/mangle.c (extract_mangle): Likewise.
6022         * src/misc.c (call_arg_error, call_arg_fatal, call_arg_warn):
6023         Likewise.
6024         * src/buffer.c (archive_write_error, flush_archive, close_archive,
6025         new_volume, xclose):
6026         Use error message functions to report errors consistently.
6027         * src/compare.c (diff_sparse_files, diff_archive): Likewise.
6028         * src/create.c (finish_sparse_file, dump_file): Likewise.
6029         * src/extract.c (set_mode, set_stat, extract_sparse_file,
6030         extract_archive): Likewise.
6031         * src/list.c (list_archive): Likewise.
6032         * src/update.c (append_file): Likewise.
6033         * src/compare.c (diff_init, diff_sparse_files):
6034         Use xalloc_die to report memory exhaustion.
6035         * src/incremen.c (gnu_restore): Likewise.
6036         * src/list.c (read_header): Likewise.
6037         * src/mangle.c (extract_mangle): Likewise.
6038         * src/misc.c (maybe_backup_file): Likewise.
6039         * src/tar.c (decode_options): Likewise.
6040         * src/compare.c (read_and_process, fill_in_sparse_array,
6041         diff_sparse_files):
6042         Use consistent terminology for unexpected-EOF message.
6043         * src/extract.c (extract_sparse_file, extract_archive): Likewise.
6044         * src/list.c (list_archive, read_header, skip_file,
6045         skip_extended_headers): Likewise.
6046         * src/buffer.c (archive_write_error): Add noreturn attribute to decl.
6047         (xdup2): Regularize messages with rest of tar.
6048
6049         * src/buffer.c (flush_read): Don't read past EOF.
6050
6051         * src/extract.c (extr_init):
6052         If we run out of memory, invoke apply_delayed_set_stat.
6053         (prepare_to_extract): Don't complain if we can't remove ".".
6054         (apply_delayed_set_stat): New function.
6055         (apply_nonancestor_delayed_set_stat):
6056         Renamed from apply_delayed_set_stat.  All uses changed.
6057         Don't remove head if it doesn't apply.
6058
6059         * src/create.c (find_new_file_size):
6060         Return size instead of storing through pointer.
6061         All callers changed.
6062         (deal_with_sparse): Don't keep reading after read errors.
6063         (finish_sparse_file): Just abort if there is an internal error.
6064         (dump_file): Fix typo: stat_warn and stat_error were interchanged.
6065         Don't restore access times on directories during incremental dumps
6066         until after dealing with the directory.
6067         If ignoring failed reads, count closedir, read, and unknown
6068         file errors as warnings, not errors.
6069         Fix buffer overrun problem when dumping sparse files.
6070
6071         * src/list.c (read_and):
6072         Invoke apply_nonancestor_delayed_set_stat on file names
6073         after handling them.
6074         (decode_mode): Remove; moved to misc.c.
6075
6076         * src/misc.c (safer_rmdir): New function.
6077         (remove_any_file): Use it to avoid problems with rmdir(".").
6078         (maybe_backup_file): Regularize diagnostics.
6079         (undo_backup_file): Likewise.
6080         (decode_mode): Moved here from list.c.
6081         (chmod_error_details, chown_error_details, close_fatal,
6082         close_warn, closedir_warn, mkdir_error, read_error_details,
6083         read_warn_details, read_fatal_details, seek_error_details,
6084         seek_warn_details, utime_error, write_error_details,
6085         write_fatal_details): New functions.
6086
6087         * src/delete.c (save_record): Remove static variable (now local).
6088         (move_archive): Don't position before start of archive.
6089         (write_record): Abort if count is zero at inopportune time.
6090         Plug memory leak.
6091
6092         * src/tar.c (decode_options): --delete and -f - are now
6093         incompatible, since we didn't have time to fix their bugs.
6094
6095         * tests/Makefile.am (TESTS): Remove delete02.sh.
6096         * tests/ignfail.sh: Adjust to new quoting scheme again.
6097
6098 2000-01-06  Paul Eggert  <eggert@twinsun.com>
6099
6100         * lib/getdate.y: Sync tm_diff with the GNU C Library.
6101         (TM_YEAR_BASE): Renamed from TM_YEAR_ORIGIN.  All uses changed.
6102         (tm_diff): Renamed from difftm.  All uses changed.
6103         Replace body with that taken from GNU C Library 2.1.3pre1.
6104         (get_date): Prefer tm_gmtoff to tm_diff if available.
6105
6106 1999-12-29  "Melissa O'Neill"  <oneill@cs.sfu.ca>
6107
6108         * tests/incremen.sh: Invoke stat on newly created file so that its
6109         ctime is updated on Nextstep.
6110
6111 1999-12-21  Machael Stone  <mstone@cs.loyola.edu>
6112
6113         * lib/getdate.y (get_date):
6114         Fix typo when checking for time_t overflow in time zone calculations.
6115
6116 1999-12-13  Paul Eggert  <eggert@twinsun.com>
6117
6118         * NEWS, configure.in (AC_INIT_AUTOMAKE): Version 1.13.16.
6119
6120         * README-alpha: New file.
6121         * README: New sections for gzip and bzip2, Solaris.
6122         Remove mention of BACKLOG.
6123
6124         * configure.in (AC_C_BACKSLASH_A): Add.
6125         (AC_CHECK_HEADERS): Add wchar.h.
6126         (AC_CHECK_FUNCS): Add mbrtowc.
6127         (AC_FUNC_CLOSEDIR_VOID): Add.
6128
6129         * tests/Makefile.am (TESTS): Add delete02.sh.
6130         (POSTPONED_TESTS): Remove.
6131         (EXTRA_DIST): Remove $(POSTPONED_TESTS).
6132
6133         * tests/preset.in:
6134         Set LC_ALL rather than LANGUAGE, LANG, and LC_MESSAGES.
6135
6136         * tests/ignfail.sh (err): Adjust to new quoting scheme.
6137
6138         * tests/delete02.sh: Fix typo: need to list archive2, not archive.
6139
6140         * tests/extrac03.sh: Use -P option, so that .. doesn't get diagnosed.
6141
6142         * src/tar.c ("quotearg.h"): New include.
6143         (usage): Now has __attribute__ ((noreturn)).
6144         (confirm): Report errno if we can't open tty.
6145         (confirm, decode_options):
6146         Quote arbitrary strings in diagnostics.
6147         (OVERWRITE_OPTION): New constant.
6148         (long_options, usage, decode_options): New --overwrite option.
6149         (decode_options): --keep-old-files, --overwrite, and --unlink-first
6150         are now mutually exclusive.
6151         Don't assume that gettext preserves errno.
6152         (main): Set default quoting style to escape_quoting_style.
6153
6154         * src/update.c (<quotearg.h>): New include.
6155         (append_file):
6156         Don't assume that gettext preserves errno.
6157         Quote arbitrary strings in diagnostics.
6158         Check for close error.
6159
6160         * src/names.c (<quotearg.h>): New include.
6161         (name_init, name_next, name_close, names_notfound,
6162         collect_and_sort_names): Don't assume that gettext preserves
6163         errno.  Quote arbitrary strings in diagnostics.
6164         (excluded_name): Fix typo that caused empty patterns to be
6165         mishandled.
6166
6167         * src/misc.c (<quotearg.h>): New include.
6168         (quote_copy_string): Quote only newline and backslash; the output is no
6169         longer meant for humans, and is locale-independent.
6170         (contains_dot_dot): New function.
6171         (remove_any_file): Don't use lstat; just rmdir the file and then use
6172         unlink if the rmdir fails because the file isn't a directory.
6173         Check for readdir and closedir errors.
6174         (maybe_backup_file): Report "stat" for stat errors.
6175         (maybe_backup_file, chdir_do):
6176         Quote arbitrary strings in diagnostics.
6177         (maybe_backup_file, undo_last_backup):
6178         Don't assume that gettext preserves errno.
6179         (call_arg_error, call_arg_fatal, call_arg_warn,
6180         chdir_fatal, close_error, closedir_error, exec_fatal, mkfifo_error,
6181         mknod_error, open_error, open_fatal, open_warn, opendir_error,
6182         opendir_warn, read_error, read_fatal, readdir_error, readdir_warn,
6183         readlink_error, readlink_warn, seek_error, seek_warn, stat_error,
6184         stat_warn, truncate_error, truncate_warn, unlink_error, waitpid_error,
6185         write_error, write_fatal, xfork, xpipe, quote_n, quote): New functions.
6186
6187         * src/system.h (__attribute__): New macro.
6188         (O_NDELAY, O_NONBLOCK, O_APPEND): Remove.
6189         (S_ISDOOR): New macro.
6190         (closedir): New macro, if CLOSEDIR_VOID.
6191
6192         * src/rmt.c, src/rtapelib.c (decode_oflag):
6193         O_APPEND might not be defined.
6194
6195         * src/list.c: (read_and, list_archive):
6196         Quote arbitrary strings in diagnostics.
6197         (from_header): Use locale_quoting_style to quote diagnostics.
6198         (print_header, print_for_mkdir): Quote with quotearg, not quote_copy_string.
6199
6200         * src/rmt.h (REM_BIAS): Increase from 128 to (1 << 30).
6201
6202         * src/Makefile.am: Use ## for copyright comments.
6203
6204         * src/extract.c (<quotearg.h>): New include.
6205         (enum permstatus): New enum.
6206         (struct delayed_set_stat): file_name is now at end of buffer, to avoid
6207         two mallocs.  New members file_name_len, invert_permissions, permstatus.
6208         (extr_init): Remove hack that silently adjusted newdir_umask.
6209         (set_mode, set_stat): New args invert_permissions, permstatus, typeflag.
6210         Use these args to decide whether and how to set modes.
6211         (set_mode, set_stat, prepare_to_extract, extract_sparse_file, extract_archive):
6212         Don't assume that gettext preserves errno.
6213         (set_stat): Remove arg symlink_flag; subsumed by typeflag.
6214         (delay_set_stat, repair_delayed_set_stat): New functions.
6215         (make_directories): Avoid mkdir where last part of path is "..".
6216         Create a struct delayed_set_stat for each directory made.
6217         (prepare_to_extract): Renamed from unlink_destination, and
6218         return 0 immediately if to_stdout_option; all callers changed.
6219         (maybe_recoverable): New parameter interdir_made.
6220         Add support for --overwrite.
6221         (extract_sparse_file, extract_archive):
6222         Quote arbitrary strings in diagnostics.
6223         (extract_archive): By default, warn about ".." in member names, and skip them.
6224         Don't open files with O_NONBLOCK or O_APPEND.
6225         Open with O_TRUNC only if --overwrite; otherwise, use O_EXCL to avoid
6226         overwriting them.  Pass only rwxrwxrwx permissions to `open' and `mkdir',
6227         minus the current umask.  Keep track of intermediate directories made,
6228         to avoid looping when making x/../x when x doesn't exist; the
6229         earlier code solved this in a different way that didn't fit well
6230         into the new scheme.  Don't extract permissions onto existing
6231         directories unless --overwrite is given.  Do not add -wx------
6232         permissions to new directories permanently; just do it temporarily.
6233         Remove no-longer-needed hack with MSDOS and directory time stamps.
6234         (apply_delayed_set_stat): New argument specifies which directories to
6235         fix statuses of.  Do not wait until the end of extraction to fix
6236         statuses; instead, fix a directory's status once we exit that directory.
6237         This requires less memory and does the right thing in some cases
6238         where the old method didn't.
6239         (fatal_exit): New function.
6240
6241         * src/incremen.c (<quotearg.h>): New include.
6242         (get_directory_contents, gnu_restore):
6243         Check for readdir and closedir errors.
6244         (get_directory_contents, read_directory_file, gnu_restore):
6245         Quote arbitrary strings in diagnostics.
6246         (get_directory_contents, read_directory_file, write_directory_file):
6247         Don't assume that gettext preserves errno.
6248
6249         * src/create.c (<quotearg.h>): New include.
6250         (start_header): Use `member names' to refer to archive member names, not
6251         `archive names'.  Warn about `..' in member names.
6252         (finish_sparse_file, dump_file):
6253         Quote arbitrary strings in diagnostics.
6254         (finish_sparse_file, dump_file):
6255         Don't assume that gettext preserves errno.
6256         (dump_file): Don't use `access' to determine whether a directory is readable;
6257         this isn't reliable if tar is setuid.  Use `opendir' instead.
6258         Check for readdir and closedir failures.
6259         Don't dump sockets as if they were fifos; just warn and skip.
6260
6261         * src/delete.c (move_archive):
6262         Don't report fatal error merely because sizes don't fit
6263         into struct mtop values; fall back on lseek instead.
6264         Say `Cannot' uniformly, instead of `Could not' sometimes and `Cannot' others.
6265         Say `reposition' instead of `re-position'.
6266         (delete_archive_members):
6267         Set archive to STDOUT_FILENO before outputting trailing buffer.
6268
6269         * src/compare.c (<quotearg.h>): New include.
6270         (diff_init): Use `Cannot' uniformly, instead of `Could not' sometimes
6271         and `Cannot' others.
6272         (report_difference, diff_archive):
6273         Quote arbitrary strings in diagnostics.
6274         (process_rawdata, diff_sparse_files, get_stat_data, diff_archive, seek_warn):
6275         Don't assume that gettext preserves errno.
6276         (diff_archive): Don't open regular files with O_NONBLOCK.
6277         Preserve access times of files if --atime.
6278
6279         * src/common.h (FATAL_ERROR): Use new fatal_exit function to exit.
6280         (FATAL_ERROR, USAGE): Don't return 0.
6281         (enum old files): New enum.
6282         (old_files_option): New variable, replacing keep_old_files_option and
6283         unlink_first_option.
6284         (apply_delayed_set_stat): Now takes char const * param.
6285         (fatal_exit, contains_dot_dot, chdir_fatal, close_error,
6286         closedir_error, exec_fatal, mkfifo_error, mknod_error, open_error,
6287         open_fatal, open_warn, opendir_error, opendir_warn, read_error,
6288         read_fatal, readdir_error, readdir_warn, readlink_error,
6289         readlink_warn, seek_error, seek_warn, stat_error, stat_warn,
6290         truncate_error, truncate_warn, unlink_error, waitpid_error,
6291         write_error, write_fatal, xfork, xpipe, quote, quote_n): New decls.
6292
6293         * src/buffer.c:
6294         (xclose, xdup2, child_open_for_compress, child_open_for_uncompress,
6295         archive_write_error, archive_read_error, flush_archive, close_archive,
6296         init_volume_number, new_volume):
6297         Don't assume that gettext preserves errno.
6298
6299         (xdup2): Don't report errno if dup returns an unexpected nonnegative value.
6300         (open_archive): Reject multivolume verify attempts a bit earlier.
6301         Rename local variable `access', in case it's defined by system header.
6302
6303         (open_archive, backspace_output): Use `Cannot' uniformly, instead of
6304         `Could not' sometimes and `Cannot' others.
6305
6306         (open_archive, flush_read, flush_archive, close_archive, new_volume):
6307         Quote arbitrary strings in diagnostics.
6308
6309         (read_error): Set archive to STDOUT_FILENO temporarily when writing
6310         archive buffer.
6311
6312         (init_volume_number): Check for input and output errors in volno_file.
6313
6314         (new_volume): Use new fatal_exit function to exit, and new xfork
6315         function to fork.
6316
6317         * m4/Makefile.am (EXTRA_DIST): Add c-bs-a.m4.
6318
6319         * Makefile.am (ACINCLUDE_INPUTS): Add $(M4DIR)/c-bs-a.m4.
6320
6321         * doc/tar.texi: Add --overwrite.
6322         --absolute-names rejects ".." in names.
6323
6324         * lib/quotearg.c: Add support for multibyte characters.
6325         (ISGRAPH): Remove.
6326         (ISPRINT): New macro.
6327         (<wchar.h>): Include if HAVE_MBRTOWC && HAVE_WCHAR_H.
6328         (isprint, mbrtowc, mbsinit, mbstate_t): New macros,
6329         defined if ! (HAVE_MBRTOWC && HAVE_WCHAR_H).
6330         (quotearg_buffer_restyled): New function, with most of the old
6331         quotearg_buffer's contents.
6332         Major rewrite to support multibyte characters.
6333         (quotearg_buffer): Now just calls quotearg_buffer_restyled.
6334
6335         * m4/c-bs-a.m4: New file.
6336
6337         * lib/Makefile.am: Use ## for copyright notice.
6338
6339         * scripts/Makefile.am: Use ## on copyright notice.
6340
6341         * doc/Makefile.am:
6342         ($(srcdir)/tar.info, tar.dvi): We now use texinfo 4.0.
6343
6344 1999-12-05  Paul Eggert  <eggert@twinsun.com>
6345
6346         * doc/ChangeLog, lib/ChangeLog, scripts/ChangeLog,
6347         src/ChangeLog, tests/ChangeLog: Remove these files.
6348         * ChangeLog.1: New file, incorporating the above files, plus old
6349         ChangeLog entries.
6350         * Makefile.am (EXTRA_DIST): Add ChangeLog.1.
6351
6352 1999-12-05  Dale Worley  <worley@ariadne.com>
6353
6354         * src/compare.c (<utime.h>, struct utimbuf): Add.
6355         (diff_archive): Restore access times if --atime.
6356         * doc/tar.texi: Explain that --atime also preserves modification time.
6357
6358 1999-12-04  Gerhard Poul  <gpoul@gnu.org>
6359
6360         * ABOUT-NLS: Update to latest version from ftp.gnu.org.
6361         * BACKLOG, TODO: Remove.
6362         * Makefile.am (all-local, BABYL, dist-zoo, id, ID): Remove.
6363         * README: Bring up to date.
6364
6365 1999-12-03  Paul Eggert  <eggert@twinsun.com>
6366
6367         * NEWS, configure.in (AM_INIT_AUTOMAKE): Version 1.13.15.
6368
6369         * src/compare.c (diff_archive):
6370         Do not set errno to EPIPE; we no longer use perror.
6371
6372         * src/create.c (dump_file):
6373         If a parent directory said that a file should be there but it is
6374         absent, diagnose it as being removed in the meantime.
6375         Do not pass meaningless errno to ERROR when reporting that the
6376         file changed as we read it.
6377         Report that a file changed if its ctime changes; this is more
6378         sensitive than mtime+size, and more accurate.
6379
6380         * src/incremen.c (enum children): New type.
6381         (struct directory): Change old char allnew member to new enum children
6382         children member.
6383         All uses changed.
6384         (get_directory_contents): When doing an incremental dump that does
6385         not cross filesystem boundaries, dump the mount points, even though
6386         they are in a different filesystem.  This is for convenience when
6387         restoring, and for consistency with non-incremental dumps.
6388         This requires a 3-way flag for keeping track of which children we want,
6389         so we use enum children rather than boolean.
6390
6391         * src/open3.c (modes): Remove.
6392         (open3): Remove unportable assumptions about flag encodings.
6393         Use `stat' instead of `access' for testing file existence,
6394         to avoid problems with setuid programs.
6395
6396         * src/names.c (name_next): If file names are given both in the
6397         command line (e.g. via -C) and in a file (via -T), do not
6398         ignore the command-line names.
6399
6400         * m4/uintmax_t.m4: Backport to autoconf 2.13.
6401
6402         * doc/tar.texi: Clarify getdate authorship.
6403
6404 1999-11-23  Paul Eggert  <eggert@twinsun.com>
6405
6406         * lib/Makefile.am (DISTCLEANFILES): New macro.
6407
6408         * configure.in (tar_fnmatch_hin):
6409         Remove; it runs afoul of a bug in autoconf 2.13.
6410         Instead, always link fnmatch.h to some file, even if it's a throwaway.
6411
6412 1999-11-19  Paul Eggert  <eggert@twinsun.com>
6413
6414         * m4/largefile.m4: Update serial.
6415
6416 1999-11-18  Paul Eggert  <eggert@twinsun.com>
6417
6418         * m4/largefile.m4 (AC_SYS_LARGEFILE_FLAGS): Work around a bug in
6419         the QNX shell, which doesn't propagate exit status of failed
6420         commands inside shell assignments.
6421
6422 1999-11-07  Paul Eggert  <eggert@twinsun.com>
6423
6424         * NEWS, configure.in (AM_INIT_AUTOMAKE): Version 1.13.14.
6425
6426         * configure.in (AC_PREREQ): Bump to 2.13.
6427         (ALL_LINGUAS): Add pt_BR, ja.
6428         (AC_FUNC_FNMATCH): Remove lib/funmatch.h before invoking, not after.
6429         (tar_cv_path_RSH): Prefer a non-symlink rsh to a symlink one,
6430         for AIX crossbuilds.
6431
6432         * doc/tar.texi: New node create options for --ignore-failed-read.
6433         Remove unused version control symbols.
6434         Modernize texinfo usage.
6435
6436         * src/tar.c (usage): Add examples.
6437
6438         * m4/fnmatch.m4 (AC_FUNC_FNMATCH):
6439         Include fnmatch.h when testing fnmatch.
6440
6441         * src/common.h (collect_and_sort_names): New decl.
6442
6443         * src/list.c (from_header):
6444         Handle 32-bit two's complement negative time stamps
6445         even if the leading octal digit is 2 or 3.
6446
6447         * src/extract.c (set_stat): Remove duplicate code.
6448
6449         * src/create.c (to_chars): Remove trailing newline from warning.
6450         (dump_file): Ignore doors.
6451         (finish_header): Report block numbers with origin 0, not origin 1.
6452
6453         * src/rmt.c: Include getopt.h.
6454         (long_opts): New constant.
6455         (usage): New function.
6456         (main): Implement --help and --version.
6457         Output usage message if arguments are bad.
6458
6459 1999-10-10  Paul Eggert  <eggert@twinsun.com>
6460
6461         * NEWS, configure.in (AM_INIT_AUTOMAKE): Version 1.13.13.
6462
6463         * README: Remove --with-dmalloc.
6464         Add --disable-largefile.
6465         Remove old NeXT dirent problems, or AIX valloc problems.
6466         Remove old union wait advice, and old %lld advice.
6467         Remove advice about FreeBSD 2.1.7, ISC 4.1mu, Ultrix `make'.
6468
6469         * doc/tar.texi: Clarify documentation for portable file names.
6470
6471         * configure.in (AM_WITH_DMALLOC): Remove.
6472         (ALL_LINGUAS): Add ja.
6473
6474         * src/tar.c (decode_options):
6475         Invalid dates are now treated as (time_t) -1.
6476         Redo version message to conform to GNU standards.
6477
6478         * src/create.c (dump_file):
6479         Fix typo: last two args to dump_file were interchanged.
6480         * src/update.c (update_archive): Likewise.
6481
6482         * src/common.h (tartime): New decl.
6483
6484         * src/list.c (tartime): Now extern.
6485         (read_and): Invalid headers cause errors, not warnings.
6486
6487 1999-10-03  Paul Eggert  <eggert@twinsun.com>
6488
6489         * lib/getdate.y (__attribute__):
6490         Don't use if GCC claims to be before 2.8; this is
6491         needed for OPENStep 4.2 cc.  Also, don't use if strict ANSI.
6492
6493 1999-09-25  Paul Eggert  <eggert@twinsun.com>
6494
6495         * lib/fnmatch.c, lib/fnmatch.hin: Merge changes from latest glibc.
6496         * lib/getopt.c, lib/getopt.h, lib/getopt1.c: Likewise.
6497
6498         * tests/incremen.sh: Add yet another sleep.
6499
6500 1999-09-24  Paul Eggert  <eggert@twinsun.com>
6501
6502         * NEWS: A read error now causes a nonzero exit status.
6503
6504         * src/create.c (to_chars): Fix base-256 output.
6505
6506         * src/buffer.c (write_error):
6507         Read error is an error, not just a warning.
6508
6509 1999-09-24  Paul Eggert  <eggert@twinsun.com>
6510
6511         * NEWS, configure.in (AM_INIT_AUTOMAKE): Version 1.13.12.
6512
6513         * src/tar.c (<time.h>): Include.
6514         (time): Declare if not defined.
6515         (confirm): Don't read past EOF.
6516         (long_options, usage): Add --no-same-owner, --no-same-permissions.
6517         (main): Use clock_gettime if available.
6518
6519         * tests/Makefile.am (TESTS): Add incremen.sh
6520         (INCLUDES): Add -I../lib, for fnmatch.h.
6521
6522         * src/update.c (update_archive):
6523         Remove call to name_expand; had no effect.
6524         Use chdir_do to change into directory.
6525         Use deref_stat instead of stat.
6526         Use add_avoided_name to mark names to be avoided; the old method of
6527         setting a bit with the name caused all descendants of that name to
6528         be avoided, in some circumstances.
6529
6530         * tests/incremen.sh: Remove unnecessary sleeps.
6531
6532         * src/names.c (name_next): Go back to using plain chdir.
6533         (name_gather): Use chdir_arg to keep track of arguments to chdir.
6534         (addname): Likewise.
6535         (name_match): Use chdir_do to act on chdir args.
6536         (merge_sort): Moved here from incremen.c.
6537         (compare_names, add_hierarchy_to_namelist, collect_and_sort_names):
6538         Likewise.
6539         (name_expand): Remove.
6540         (name_from_list): Skip fake names.
6541         Use chdir_do to act on chdir args.
6542         (struct avoided_name): New struct.
6543         (avoided_names): New var.
6544         (add_avoided_name, is_avoided_name): New functions.
6545
6546         * src/system.h (stat, lstat): Define in terms of statx on
6547         STX_HIDDEN && !_LARGE_FILES /* AIX */ hosts.
6548         (UCHAR_MAX): New macro.
6549         (TYPE_MAXIMUM): Cast to arg type, for types narrow than int.
6550
6551         * m4/largefile.m4: Work around GCC 2.95.1 bug with HP-UX 10.20.
6552
6553         * src/incremen.c (<time.h>): Remove include; no longer used.
6554         (time): Remove decl.
6555         (time_now): Remove.
6556         (get_directory_contents): Use deref_stat.
6557         Consider a subdirectory to be all new only if
6558         listed_incremental_option or if it its timestamp is newer than the
6559         cutoff.
6560         (add_hierarchy_to_namelist, merge_sort): Move to names.c.
6561         (read_directory_file): Now extern.  Do not set time_now.
6562         (write_directory_file): Renamed from write_dir_file.
6563         Use start_time instead of time_now.
6564         (compare_names, collect_and_sort_names): Move to names.c.
6565
6566         * src/mangle.c (<time.h>): Remove; not used.
6567         (time): Do not declare.
6568
6569         * src/misc.c (chdir_from_initial_wd): Remove.
6570         (deref_stat): New function.
6571         (struct wd): New struct.
6572         (wd, wds, wd_alloc): New variables.
6573         (chdir_arg, chdir_do): New function.
6574
6575         * src/compare.c (get_stat_data): Use deref_stat.
6576
6577         * src/common.h (name_expand): Remove.
6578
6579         * src/list.c (time): Declare if not defined.
6580         (base_64_digits): Moved here from create.c.
6581         (base64_map): Use UCHAR_MAX for size, not less-clear (unsigned char)
6582         -1.
6583         (read_and): Don't get time from header unless we need it now;
6584         as getting time can cause duplicate diagnostics if bogus.
6585         Remove "Hmm, " from diagnostic.
6586         Use "Skipping to next header" uniformly.
6587         (from_header): Renamed from from_chars.  All uses changed.
6588         Allow different forms for unportable 2's complement numbers.
6589         Don't check for extended forms when parsing checksums.
6590         Parse base-256 output.
6591         (gid_from_header): Renamed from gid_from_chars.  All uses changed.
6592         (major_from_header): Renamed from major_from_chars.  All uses changed.
6593         (minor_from_header): Renamed from minor_from_chars.  All uses changed.
6594         (mode_from_header): Renamed from mode_from_chars.  All uses changed.
6595         (off_from_header): Renamed from off_from_chars.  All uses changed.
6596         (size_from_header): Renamed from size_from_chars.  All uses changed.
6597         (time_from_header): Renamed from time_from_chars.  All uses changed.
6598         Warn about future timestamps.
6599         (uid_from_header): Renamed from uid_from_chars.  All uses changed.
6600         (uintmax_from_header): Renamed from uintmax_from_chars.
6601         All uses changed.
6602         (tartime): New function, incorporating isotime.
6603         (isotime): Delete.
6604         (print_header): Use tartime.
6605
6606         * src/create.c (to_chars): Fix typo in decl.
6607         Don't assign through char const *.
6608         Rename name_expand back to collect_and_sort_names.
6609
6610         * src/extract.c (<time.h>): No need to include.
6611         (time): No need to declare.
6612         (now): Remove variable.
6613         (extr_init): Don't initialize `now'.
6614         Increment same_permissions_option and same_owner_option if we_are_root
6615         is nonzero; this supports the new --no-same-owner option.
6616         (set_stat): Use start_time instead of `now'.
6617
6618         * src/create.c (struct link): Remove unused linkcount member.
6619         (base_64_digits): Move to list.c.
6620         (base_8_digits): Remove.
6621         (to_octal): New function, with some of old contents of to_base.
6622         (to_base): Remove.
6623         (to_base256): New function.
6624         (to_chars): Use base 256, not base 64, for huge values.
6625         (mode_to_chars): Don't use two's complement in GNU format or POSIX
6626         format.
6627         (dump_file): Interchange last two arguments. If TOP_LEVEL is negative,
6628         it means we have an incremental dump where we don't know whether this
6629         is a top-level call.
6630         Use deref_stat instead of statx / stat / lstat.
6631         Cast result of alloca.
6632         Check for dates if 0 < top_level, not if listed_incremental_option.
6633         Move multiple-link check after directory check.
6634         Do not dump avoided names.
6635         Dump hard links to symbolic names as links, not as separate
6636         symbolic links.
6637         start_header cannot return a null pointer, so don't test for it.
6638         Likewise for find_next_block.
6639
6640         * src/buffer.c, src/common.h (<human.h>): Include.
6641         (read_error): Read error is an error, not just a warning.
6642         (print_total_written): Also print human-readable byte count, and
6643         bytes/s.
6644         (open_archive, flush_write): Use start_time, not current time.
6645         (flush_read): Report about garbage bytes ignored at end of archive,
6646         but act on non-garbage bytes (instead of ignoring them).
6647         (new_volume): Use WARN for warnings.
6648
6649         * doc/Makefile.am:
6650         ($(srcdir)/tar.info): Add -I$(srcdir) so that subdir builds work.
6651
6652         * Makefile.am (ACINCLUDE_INPUTS): Add $(M4DIR)/fnmatch.m4.
6653
6654         * m4/Makefile.am (EXTRA_DIST): Add fnmatch.m4.
6655
6656         * lib/Makefile.am (noinst_HEADERS):
6657         Rename fnmatch.h to fnmatch.hin; add human.h.
6658         (libtar_a_SOURCES): Add human.c, xstrtoul.c.
6659         (INCLUDES): Remove -I.. -I$(srcdir) -- automake adds this for us.
6660
6661         * src/Makefile.am (rmt_LDADD, tar_LDADD): New macros.
6662
6663         * lib/fnmatch.c (strchrnul):
6664         Define to __strchrnul if _LIBC, to our own replacement otherwise.
6665         Do not define if !_LIBC and if it already exists.
6666         (internal_fnmatch): Use it.
6667
6668         * configure.in (tar_LDADD): New variable, used only when linking tar.
6669         (rmt_LDADD): Similarly, for rmt.
6670         (AC_FUNC_FNMATCH): Link fnnmatch.hin to fnmatch.h if we're using our
6671         fnmatch.c; otherwise, use the system fnmatch.h.
6672
6673         * doc/tar.texi: Add --no-same-owner, --no-same-permissions.
6674         Modernize sample backup script.
6675
6676         * THANKS: Martin Goik's email address has changed.
6677
6678         * m4/fnmatch.m4: New file.
6679
6680 1999-09-03  Paul Eggert  <eggert@twinsun.com>
6681
6682         * lib/lchown.h (ENOSYS): Don't use ENOMSG; it's not in NeXTStep3.3.
6683         Use EINVAL instead.
6684
6685 1999-08-29  Paul Eggert  <eggert@twinsun.com>
6686
6687         * lib/getdate.y (get_date):
6688         Rename outermost local `probe' to `quarter'.
6689         Rename latter local `tm' to probe_tm.
6690         From: Jim Meyering <meyering@ascend.com>
6691         Message-ID: <uryn1vafyyc.fsf@ixi.eng.ascend.com>
6692
6693 1999-08-28  Paul Eggert  <eggert@twinsun.com>
6694
6695         * lib/getdate.y (PC): New macro; use it when possible.
6696         (number): Handle `Nov 11 1996' example correctly.
6697         See Risks Digest 20.55 (1999-08-27)
6698         http://catless.ncl.ac.uk/Risks/20.55.html#subj18
6699
6700 1999-08-23  Paul Eggert  <eggert@twinsun.com>
6701
6702         * NEWS, configure.in (AM_INIT_AUTOMAKE): Version 1.13.11.
6703
6704         Remove minor cases of lint from many source files: this includes
6705         unnecessary casts, uses of NULL, etc.
6706
6707         * configure.in (AC_PROG_YACC): Remove.
6708         (YACC): Always use bison.
6709         (AC_STRUCT_TIMEZONE): Add.
6710         (AC_REPLACE_FUNCS): Add strcasecmp, strncasecmp.
6711
6712         * doc/tar.texi: --bzip2 is now -I.  Remove obsolete time zone info.
6713         Fix spelling.
6714
6715         * lib/Makefile.am (EXTRA_DIST): Add strcasecmp.c, strncasecmp.c.
6716         ($(srcdir)/getdate.c): Rename y.tab.c to getdate.c only if successful.
6717
6718         * lib/strcasecmp.c, lib/strncasecmp.c: New files.
6719
6720         * src/common.h (merge_sort): Remove decl; no longer exported.
6721
6722         * src/system.h (voidstar): Remove.
6723         (memcpy, memcmp): Cast args.
6724         ("xalloc.h"): Add include.
6725         (xmalloc, xrealloc): Remove decl.
6726
6727         * src/mangle.c (time): Do not declare if defined.
6728         (first_mangle, mangled_num): Remove.
6729
6730         * src/list.c (from_chars): Report out-of-range values more precisely.
6731         (off_from_chars): Do not allow negative offsets.
6732         (uid_from_chars): Allow negative uids.
6733
6734         * src/create.c (linklist): Now static.
6735         (to_chars): Fix wording of message to match from_chars.
6736
6737         * src/misc.c (merge_sort): Move to incremen.c.
6738         * src/incremen.c (merge_sort): Move here from misc.c; now static.
6739         It's too painful to make it both generic and portable.
6740         (read_directory_file): "timestamp" -> "time stamp" in messages.
6741
6742         * src/tar.c (long_options, usage, main): -y is now -I (for --bzip).
6743         (usage): Fix misspelling.
6744         (OPTION_STRING): -y is now -I.
6745         (decode_options): Use -1, not EOF, for getopt_long result.
6746         Fix typo when invoking xstrtoumax: look for LONGINT_OK, not LONG_MAX.
6747         Handle operands after any "--" argument.
6748         (main): Report any output errors.
6749
6750         * src/rmt.c (main): status is ssize_t, not long.
6751
6752         * src/names.c (name_gather): Handle trailing -C option correctly.
6753         (addname): use memcpy, not strncpy, to copy a string of known length.
6754         (name_match): Handle trailing -C option correctly.
6755         Propagate -C option to following files.
6756         (name_match, name_scan): Remove redundant matching code.
6757
6758         * src/buffer.c (open_archive): Use American spelling in diagnostic.
6759
6760         * lib/getdate.y: Major rewrite.  Add copyright notice.
6761         (<stdio.h>): Include only if testing.
6762         (ISUPPER): Remove.
6763         (ISLOWER): New macro.
6764         (<string.h>): Include if HAVE_STRING_H, not USG.
6765         (bcopy): Remove.
6766         (yymaxdepth, ..., yycheck): Don't bother to redefine, since we assume
6767         bison.
6768         (EPOCH_YEAR): Renamed from EPOCH.
6769         (table): Renamed from TABLE.
6770         (meridian): Now an anonymous enum.
6771         (struct parser_control): New type.
6772         (YYLEX_PARAM, YYPARSE_PARAM, YYSTYPE): New macros.
6773         (yyInput, ..., yyRelYear): Migrated into struct parser_control.
6774         (%pure_parser): Added, so that the parser is pure.
6775         (%union): Removed; the type is now just plain int.
6776         All %type directives removed.
6777         (tLOCAL_ZONE): New %token.
6778         (month_day_table): Renamed from MonthDayTable.
6779         (gmtime, localtime, mktime, time): Declare only if not defined.
6780         (meridian_table): New table.
6781         (dst_table): New table.
6782         (units_table): renamed from UnitsTable.
6783         (relative_time_table): Renamed from OtherTable.
6784         (time_zone_table): Renamed from TimezoneTable.  Modernized.
6785         (military_table): Renamed from MilitaryTable.
6786         (to_hour): Renamed from ToHour.
6787         (to_year): Renamed from ToYear.
6788         (lookup_zone): New function.
6789         (LookupWord): Renamed from lookup_word.  Use lookup_zone for time
6790         zones.
6791         (yylex): Now reentrant.  All callers changed.
6792         (get_date): Add support for local time zone abbreviations.
6793         Make it reentrant.
6794
6795 1999-08-20  Paul Eggert  <eggert@twinsun.com>
6796
6797         * NEWS, configure.in (AM_INIT_AUTOMAKE): Version 1.13.10.
6798
6799         * src/create.c (to_chars): Generate GNU base-64 representation
6800         if we are generating an old or new GNU format tar file for a
6801         number that can't be represented with the POSIX format.
6802
6803         * configure.in (AC_CHECK_FUNCS): Add fchdir.
6804         (AM_FUNC_GETLINE): Add.
6805         (LIBOBJS): Add getline.o to workaround comment.
6806         * Makefile.am (ACINCLUDE_INPUTS): Add $(M4DIR)/getline.m4.
6807         * m4/Makefile.am (EXTRA_DIST): Add getline.m4.
6808         * lib/Makefile.am (noinst_HEADERS): Add getline.h, save-cwd.h.
6809         (libtar_a_SOURCES): Add save-cwd.c, xgetcwd.c.
6810         * lib/getline.c, lib/getline.h, lib/save-cwd.c,
6811         lib/save-cwd.h, m4/getline.m4: New files.
6812
6813         * src/misc.c (<save-cwd.h>): Include.
6814         (chdir_from_initial_wd): New function.
6815
6816         * src/names.c (name_next): Use chdir_from_initial_wd, not chdir.
6817         (name_gather): Handle `-C x -C y' correctly.
6818         Do not rely on addname to handle -C.
6819         (addname): New CHANGE_DIR parameter.  All callers changed.
6820         Remove ugly calls to getcwd; no longer needed.
6821         (name_match, name_from_list): Use chdir_from_initial_wd, not chdir.
6822
6823         * src/incremen.c (listed_incremental_stream): New var.
6824         (read_directory_file): Remove arbitrary limits on file name length.
6825         Do not attempt to get the working directory; we can bypass this
6826         on fchdir hosts.  Open the listed_incremental_option file for both
6827         read and write instead of opening it twice.  Check for I/O errors
6828         when doing I/O to this file.  Check for invalid data in the file,
6829         and report line numbers of invalid data.
6830         (write_dir_file): Likewise.
6831         (collect_and_sort_names): Use chdir_from_initial_wd, not chdir.
6832         Do not invoke write_dir_file; that's our caller's responsibility.
6833
6834         * src/list.c (max): New macro.
6835         (isotime): Now takes time_t, not time_t *.  Report the decimal values
6836         of times that can't be broken down.
6837         (print_header): Don't assume that major and minor device numbers can
6838         fit into uintmax_t.
6839
6840         * src/common.h (struct name): change_dir is now char const *.
6841         (write_directory_file): Remove unused decl.
6842         (STRINGIFY_BIGINT): Assume b always points to UINTMAX_STRSIZE_BOUND
6843         chars; the old `sizeof (b)' broke when b was a pointer not an array.
6844         (chdir_from_initial_wd): New decl.
6845         (addname): New 2nd arg.
6846
6847         * THANKS: Torsten Lull -> Catrin Urbanneck
6848
6849 1999-08-18  Paul Eggert  <eggert@twinsun.com>
6850
6851         * configure.in (HAVE_GETHOSTENT, HAVE_SETSOCKOPT):
6852         Don't depend on ac_cv_func variables.
6853         From Albert Chin-A-Young <china@thewrittenword.com>.
6854
6855 1999-08-18  Paul Eggert  <eggert@twinsun.com>
6856
6857         * NEWS, configure.in (AM_INIT_AUTOMAKE): Version 1.13.9
6858
6859         * m4/signedchar.m4: New file.
6860         * configure.in (pe_AC_TYPE_SIGNED_CHAR): Add.
6861         * src/system.h (signed_char): New macro.
6862         * Makefile.am (ACINCLUDE_INPUTS): Add $(M4DIR)/signedchar.m4.
6863         * m4/Makefile.am (EXTRA_DIST): Add signedchar.m4.
6864
6865         * src/create.c (write_eot): Write at least two zero blocks.
6866
6867         * src/extract.c (extract_archive): Fix sparse array bug:
6868         we did not find end of array correctly.
6869
6870         * src/compare.c: (fill_in_sparse_array, diff_sparse_files):
6871         Don't assume find_next_block yields nonnull.
6872         * src/extract.c (extract_sparse_file, extract_archive): Likewise.
6873         * src/list.c (skip_extended_headers): Likewise.
6874
6875         * src/list.c (read_and, list_archive): Simplify code.
6876         (read_header): Fix computation of signed checksums on machines where
6877         char is unsigned.
6878         Do not consider a block to be zero unless all its bytes are zero,
6879         even the checksum bytes.  Do not attempt to parse the checksum of
6880         a zero block.  Fix memory leak with long names and links.
6881         (from_chars): Accommodate a buggy tar that outputs leading NUL
6882         if the previous field overflows.
6883
6884         * src/misc.c (quote_copy_string): Generate \177 for '\177', not
6885         \?, for portability to non-ASCII hosts.
6886
6887 1999-08-16  Paul Eggert  <eggert@twinsun.com>
6888
6889         * configure.in (AM_INIT_AUTOMAKE), NEWS: Version 1.13.8.
6890
6891         * src/extract.c (make_directories): Do not chown intermediate
6892         directories, even if we are root.
6893
6894         * src/list.c (read_header): Fix bugs when interpreting
6895         POSIX-compliant headers that do not contain null bytes in the
6896         header or link names.
6897
6898 1999-08-14  Paul Eggert  <eggert@twinsun.com>
6899
6900         * configure.in (AM_INIT_AUTOMAKE), NEWS: Version 1.13.7.
6901
6902         * configure.in (AC_CHECK_HEADERS): Remove sys/wait.h.
6903         (AC_HEADER_SYS_WAIT): Add.
6904         (AC_REPLACE_FUNCS): Add waitpid.
6905         (tar_cv_header_union_wait, HAVE_UNION_WAIT): Remove.
6906         * lib/waitpid.c: New file.
6907         * lib/Makefile.am (EXTRA_DIST): Add waitpid.c.
6908         * src/system.h (WCOREDUMP): Remove; no longer used.
6909         (WIFSTOPPED): Likewise.
6910         (WEXITSTATUS, WIFSIGNALED): Default to Solaris 7 versions.
6911         * src/buffer.c (child_open_for_compress): Undo previous change.
6912         (close_archive): Use waitpid, POSIX-style, instead of old BSD style.
6913         (new_volume): Likewise.
6914
6915         * src/buffer.c, src/extract.c, src/incremen.c (time):
6916         Don't declare if defined.
6917         * src/extract.c (extr_init): Remove unneeded cast around 0 arg to time.
6918         * src/incremen.c (read_directory_file):
6919         Invoke `time' the same way everyone else does.
6920         Check validity of --listed-incremental file contents a bit better.
6921         Do not worry about --after-date-option; tar.c now checks this.
6922         * src/list.c (isotime): Report ??? if localtime returns null.
6923         Don't assume years fit into four digits.
6924         Don't append trailing newline.
6925         (print_header): Report ??? if localtime returns null;
6926         Don't assume years fit into four digits.
6927
6928         * src/compare.c (diff_archive): Do not fall back on absolute name
6929         when --absolute-names is not specified.
6930
6931         * src/create.c (start_header):
6932         Include text of ignored filesystem prefix in warning.
6933         (create_archive): Check for excluded names when doing incremental
6934         pass through directory.
6935         (dump_file): Do not dump old files explicitly given on command line
6936         when using --listed-incremental.  Do not strip ./ prefix from names.
6937
6938         * src/tar.c: -g now implies after_date_option = 1.
6939         -g and -N are now incompatible options.
6940
6941         * doc/tar.texi: Explain --exclude better.  Don't strip leading `./'.
6942
6943 1999-08-11  Jeff Dairiki  <dairiki@dairiki.org>
6944
6945         * src/list.c (read_header): Don't parse OLDGNU_FORMAT
6946         incremental headers as POSIX prefixes.
6947
6948 1999-08-11  Paul Eggert  <eggert@twinsun.com>
6949
6950         * NEWS, configure.in: Version 1.13.6.
6951
6952         * configure.in (ALL_LINGUAS): Add pt_BR.
6953         * po/pt_BR.po: New file.
6954
6955         * doc/Makefile.am ($(srcdir)/tar.info, $(srcdir)/header.texi):
6956         Renamed from tar.info and header.texi; adjust actions so that
6957         they work in other directories.
6958
6959         * doc/tar.texi: Add -y and --bzip2.
6960         Patterns containing / now exclude only file names whose prefix match.
6961
6962         * lib/exclude.h (excluded_filename): New option parameter.
6963         (add_exclude_file): New ADD_FUNC parameter.
6964         (excluded_pathname): Remove decl.
6965         * lib/exclude.c (_GNU_SOURCE):
6966         Remove; no longer needed since we don't use FNM_ macros.
6967         (excluded_filename): Renamed from excluded_filename_opts.
6968         (excluded_filename, excluded_pathname): Remove.
6969         (add_exclude_file): New ADD_FUNC parameter.
6970
6971         * po/POTFILES.in: Add lib/quotearg.c.
6972
6973         * src/buffer.c (_GNU_SOURCE): Define.
6974         (<fnmatch.h>): Include unconditionally.
6975         (child_open_for_compress): Dup after closing, to avoid possible file
6976         descriptor exhaustion.
6977         (flush_write): Use FILESYSTEM_PREFIX_LEN instead of MSDOS ifdef.
6978         (flush_read): Likewise.
6979
6980         * src/common.h (LG_8, LG_64): New macros.
6981         (excluded_with_slash, excluded_without_slash): New vars.
6982         (excluded): Remove.
6983         (base_64_digits): New decl.
6984         (gid_to_chars, major_to_chars, minor_to_chars, mode_to_chars,
6985         off_to_chars, size_to_chars, time_to_chars, uid_to_chars,
6986         uintmax_to_chars,
6987         GID_TO_CHARS, MAJOR_TO_CHARS, MINOR_TO_CHARS, MODE_TO_CHARS,
6988         OFF_TO_CHARS, SIZE_TO_CHARS, TIME_TO_CHARS, UID_TO_CHARS,
6989         UINTMAX_TO_CHARS):
6990         Renamed from gid_to_oct, major_to_oct, minor_to_oct, mode_to_oct,
6991         off_to_oct, size_to_oct, time_to_oct, uid_to_oct, uintmax_to_oct,
6992         GID_TO_OCT, MAJOR_TO_OCT, MINOR_TO_OCT, MODE_TO_OCT, OFF_TO_OCT,
6993         SIZE_TO_OCT, TIME_TO_OCT, UID_TO_OCT, UINTMAX_TO_OCT,
6994         respectively.  All definitions and uses changed.
6995         (excluded_name): New decl.
6996
6997         * src/compare.c (diff_archive):
6998         Open files with O_NONBLOCK instead of O_NDELAY.
6999
7000         * src/create.c (base_64_digits): New constant.
7001         (base_8_digits): New macro.
7002         (MAX_VAL_WITH_DIGITS): New macro.
7003         (to_base): First half of old to_oct.  Support base 64 too.
7004         (to_chars): Other half of old to_oct, for 64-bit support.
7005         (GID_NOBODY, UID_NOBODY): Don't define if the headers don't.
7006         (gid_substitute, uid_substitute): Look up names dynamically if
7007         GID_NOBODY and UID_NOBODY aren't defined; use -2 if all else fails.
7008         (mode_to_chars): Renamed from mode_to_oct.
7009         Support negative values in all the _to_chars functions.
7010         (start_header): Use FILESYSTEM_PREFIX_LEN instead of MSDOS ifdef.
7011         Abort if archive format is DEFAULT_FORMAT when it shouldn't be.
7012         (dump_file): Inspect entire pathname, not just new file name
7013         component, when deciding whether to exclude it.
7014
7015         * src/extract.c (extract_archive):
7016         Open files with O_NONBLOCK instead of O_NDELAY.
7017
7018         * src/incremen.c (get_directory_contents):
7019         Inspect entire pathname, not just new file name
7020         component, when deciding whether to exclude it.
7021
7022         * src/list.c (<fnmatch.h>): Do not include.
7023         (from_chars): Renamed from from_oct.  New parameter specifying
7024         the negative of the minimum allowed value.  Support negative
7025         and base-64 values.
7026         (base64_map): New var.
7027         (base64_init): New function.
7028         (print_header): Output numeric uids and gids if numeric_owner_option.
7029
7030         * src/misc.c (quote_copy_string): Use LG_8 instead of constants.
7031
7032         * src/names.c (_GNU_SOURCE): Define.
7033         (<fnmatch.h>): Include unconditionally.
7034         (excluded_name): New function, taking over duties of excluded_pathname.
7035         All uses changed.
7036
7037         * src/rmt.c (decode_oflag): New function.
7038         (main): Use it to support symbolic open flags.
7039
7040         * src/rtapelib.c (encode_oflag): New function.
7041         (rmt_open__): Do not allow newlines in the path.
7042         Propagate errno correctly.
7043         Decode symbolic open flags, if present.
7044
7045         * src/system.h (FILESYSTEM_PREFIX_LEN, ISSLASH, O_ACCMODE, O_NONBLOCK):
7046         New macros.
7047
7048         * src/tar.c: (long_options, usage, OPTION_STRING, decode_options):
7049         New -y or --bzip2 option.
7050         (add_filtered_exclude): New function.
7051         (decode_options): Put excluded patterns with / into
7052         excluded_with_slash, and without / into excluded_without_slash.
7053         Compare newer_mtime_option to its new initial value
7054         TYPE_MINIMUM (time_t) when deciding whether more than one
7055         threshold date was specified.
7056
7057 1999-07-20  Paul Eggert  <eggert@twinsun.com>
7058
7059         * NEWS, configure.in: Version 1.13.5.
7060
7061         * src/common.h (FATAL_ERROR): Invoke apply_delayed_set_stat
7062         before exiting.
7063         * src/buffer.c (new_volume): Likewise.
7064         * src/incremen.c (read_directory_file): Likewise.
7065         * src/tar.c (decode_options):
7066         ERROR ((TAREXIT_FAILURE, ... -> FATAL_ERROR ((0,
7067         for consistency.
7068
7069         * NEWS, configure.in (AM_INIT_AUTOMAKE): Version 1.13.4.
7070         * configure.in (AC_CHECK_FUNCS): Add lstat, readlink, symlink.
7071
7072         * src/system.h (lstat): Define only if !HAVE_LSTAT && !defined lstat.
7073         (S_ISMPB, S_ISMPC, S_ISNWK): Remove unused macros.
7074         (S_ISBLK, S_ISCHR, S_ISCTG, S_ISFIFO, S_ISLNK, S_ISSOCK):
7075         Define to 0 if the corresponding S_IF* macro is not defined.
7076         (mkfifo): Do not define if already defined, or if S_IFIFO
7077         is not defined.
7078
7079         * src/compare.c (diff_archive): Use HAVE_READLINK, not
7080         S_ISLNK, to determine whether to invoke readlink.
7081         * src/create.c (dump_file): Likewise.
7082
7083         * src/extract.c (set_mode):
7084         Do not chmod unless we are root or the -p option was given;
7085         this matches historical practice.
7086         (unlink_destination): New function, which checks for unlink failures.
7087         (maybe_recoverable): Stay quiet if -U.
7088         (extract_archive): Use O_EXCL if unlink_first_option.
7089         Report unlink failures.
7090         Use HAVE_SYMLINK, not S_ISLNK, to determine whether symlink exists.
7091         Use HAVE_MKFIFO || defined mkfifo, not S_ISFIFO, to determine whether
7092         mkfifo exists.
7093
7094         * src/incremen.c (get_directory_contents): Depend on
7095         S_ISHIDDEN, not AIX, to determine whether to invoke S_ISHIDDEN.
7096
7097         * src/list.c: Remove S_IS* ifdefs.
7098         * src/misc.c (maybe_backup_file): Likewise.
7099
7100         * src/misc.c (maybe_backup_file):
7101         "Virtual memory exhausted" -> "Memory exhausted",
7102         to conform to the other places this message is issued.
7103
7104         * src/mangle.c (extract_mangle):
7105         Replace #ifdef S_ISLNK with #ifdef HAVE_SYMLINK.
7106
7107         * src/rtapelib.c (rmt_open__):
7108         Remove typo that caused us to omit the first char
7109         of the basename.
7110
7111 1999-07-16  Paul Eggert  <eggert@twinsun.com>
7112
7113         * NEWS, configure.in (AM_INIT_AUTOMAKE): version 1.13.3.
7114
7115         * doc/tar.texi: A path name is excluded if any of its file name
7116         components matches an excluded pattern, even if the path name was
7117         specified on the command line.
7118         * src/create.c (create_archive): Likewise.
7119         * src/list.c (read_and): Likewise.
7120         * src/update.c (update_archive): Likewise.
7121         * lib/exclude.h (excluded_pathname): New decl.
7122         * lib/exclude.c (_GNU_SOURCE): Define.
7123         (FILESYSTEM_PREFIX_LEN, ISSLASH): New macros.
7124         (excluded_filename_opts): New function.
7125         (excluded_pathname): New function.
7126
7127         * lib/Makefile.am (EXTRA_DIST):
7128         xstrtol.c moved here from libtar_a_SOURCES.
7129         (libtar_a_SOURCES): Move xstrtol.c to EXTRA_DIST.
7130         Remove xstrtoul.c; no longer needed.
7131         * lib/xstrtol.c: Remove.
7132
7133         * src/tar.c (decode_options):
7134         Set newer_time_option to TYPE_MINIMUM, so that
7135         negative timestamps are handled correctly.
7136         Replace invocations of xstrtol and xstrtoul with xstrtoumax, for
7137         uniformity (and so that we don't need to have the other fns).
7138         (main): Remove call to init_total_written; no longer needed.
7139
7140         * configure.in (AC_CHECK_SIZEOF): Remove no-longer-needed
7141         checks for unsigned long and long long.
7142         * src/arith.c: Remove.
7143         * src/Makefile.am (tar_SOURCES): Remove arith.c.
7144         * po/POTFILES.in: Remove src/arith.c.
7145         * src/arith.h: Use double, to simplify configuration gotchas.
7146         (tarlong): Now double.
7147         (TARLONG_FORMAT): New macro.
7148         (BITS_PER_BYTE, BITS_PER_TARLONG, SUPERDIGIT, BITS_PER_SUPERDIGIT,
7149         LONGS_PER_TARLONG, SIZEOF_TARLONG, struct tarlong,
7150         zerop_tarlong_helper, lessp_tarlong_helper, clear_tarlong_helper,
7151         add_to_tarlong_helper, mult_tarlong_helper, print_tarlong_helper,
7152         zerop_tarlong, lessp_tarlong, clear_tarlong, add_to_tarlong,
7153         mult_tarlong, print_tarlong): Remove.  All callers replaced with
7154         arithmetic ops.
7155
7156         * src/common.h (init_total_written): Remove decl.
7157
7158         * src/buffer.c (total_written):
7159         Remove; replaced with prev_written + bytes_written.
7160         (prev_written): New var.
7161         (init_total_written): Remove.
7162         (print_total_written): Use TARLONG_FORMAT instead of print_tarlong.
7163
7164         * m4/ulonglong.m4 (jm_AC_TYPE_UNSIGNED_LONG_LONG):
7165         Make sure that we can shift, multiply
7166         and divide unsigned long long values; Ultrix cc can't do it.
7167
7168         * lib/modechange.c (mode_compile): Use uintmax_t, not unsigned long.
7169         Check for any unknown bits, not just unknown bits left of the leftmost
7170         known bit.
7171
7172         * lib/quotearg.c (quotearg_buffer):
7173         Don't quote spaces if C quoting style.
7174         * src/list.c (from_oct):
7175         Use C quoting style for error; omit trailing NULs.
7176
7177 1999-07-14  Paul Eggert  <eggert@twinsun.com>
7178
7179         * configure.in (AM_INIT_AUTOMAKE), NEWS: Version 1.13.2.
7180
7181         * m4/xstrtoumax.m4 (jm_AC_PREREQ_XSTRTOUMAX): Check whether
7182         <inttypes.h> defines strtoumax as a macro (and not as a function).
7183         HP-UX 10.20 does this.
7184
7185         * src/tar.c (usage): tar-bugs@gnu.org -> bug-tar@gnu.org
7186         * PORTS, README, TODO, doc/tar.texi: Likewise.
7187
7188 1999-07-12  Paul Eggert  <eggert@twinsun.com>
7189
7190         * configure.in (AM_INIT_AUTOMAKE): Version 1.13.1.
7191         (LIBOBJS): Add mktime.o to automake 1.4 bug workaround.
7192
7193         * src/list.c (decode_header):
7194         Do not assume that S_IFBLK and S_IFCHR are defined.
7195
7196         * src/create.c (start_header): Do not assume S_IFMT is defined.
7197         (dump_file): Remove unnecessary check for screwy apollo lossage.
7198         Do not assume S_IFBLK and S_IFCHR are defined.
7199
7200         * src/extract.c (extract_archive):
7201         Test whether S_IFCHR and S_IFBLK are nonzero,
7202         not whether they are defined, for consistency with other tests.
7203
7204         * src/buffer.c (is_regular_file):
7205         Don't succeed on files that we can't access due to
7206         permissions problems.
7207         (open_archive): Fix wording on fatal error message.
7208         Don't bother to stat /dev/null if the archive is not a character
7209         special device.
7210
7211         * src/compare.c (process_rawdata, diff_sparse_files, diff_archive):
7212         Report an error, not a warning, for I/O errors.
7213         (process_rawdata, process_dumpdir, diff_sparse_files):
7214         Change ungrammatical "Data differs" to "Contents differ".
7215         (get_stat_data): Find hidden files on AIX.
7216         Accept file name as argument; all uses changed.
7217         (get_stat_data, diff_archive): Use system error message for
7218         nonexistent files rather than rolling our own.
7219         (diff_archive): Unknown file types are errors, not warnings.
7220         Normalize spelling of message to "File type differs".
7221         Use get_stat_data to get link status, for consistency.
7222         Do not inspect st_rdev for fifos.
7223         Do not assume st_mode values contain only file types and mode bits.
7224         Check for mode changes and device number changes separately.
7225
7226         * src/update.c (append_file):
7227         Open the file before statting it, to avoid a race.
7228         Complain about file shrinkage only when we reach EOF.
7229
7230 1999-07-08  Paul Eggert  <eggert@twinsun.com>
7231
7232         * NEWS, configure.in (AM_INIT_AUTOMAKE): Version 1.13 released.
7233
7234         * configure.in (AC_EXEEXT): Add.
7235
7236         * lib/Makefile.am (noinst_HEADERS):
7237         Add basename.h, exclude.h.  Remove full-write.h.
7238         (libtar_a_SOURCES): Add exclude.c.
7239
7240         * lib/basename.h, lib/exclude.c, lib/exclude.h, lib/safe-read.h:
7241         New files.
7242         * lib/full-write.c: Include safe-read.h instead of full-write.h.
7243         * lib/safe-read.h (safe_read): New decl.
7244         * src/rmt.c: Include safe-read.h.
7245         * src/rtapelib.c: Include basename.h, save-read.h.
7246         (rmt_open__): Use base_name to compute base name.
7247
7248         * src/common.h:
7249         Include basename.h, exclude.h; don't include full-write.h.
7250         (exclude_option): Remove decl.
7251         (excluded): New decl.
7252         (add_exclude, add_exclude_file, check_exclude): Remove decls.
7253
7254         * src/list.c (read_and):
7255         Use excluded_filename instead of check_exclude.
7256         Check base name of incoming file name, not entire file name, when
7257         deciding whether to exclude it.
7258
7259         * src/create.c (finish_sparse_file):
7260         Use excluded_filename instead of check_exclude.
7261         Don't bother to stat excluded file names.
7262         * src/incremen.c (get_directory_contents): Likewise.
7263
7264         * src/names.c (exclude_pool, exclude_pool_size,
7265         allocated_exclude_pool_size, simple_exclude_array,
7266         simple_excludes, allocated_simple_excludes,
7267         pattern_exclude_array, pattern_excludes,
7268         allocated_pattern_excludes, add_exclude, add_exclude_file,
7269         check_exclude):
7270         Remove; now done in ../lib/exclude.c.
7271
7272         * src/tar.c (decode_options): Initialize `excluded'.
7273         Use new add_exclude_file and add_exclude functions.
7274
7275 1999-07-05  Paul Eggert  <eggert@twinsun.com>
7276
7277         * m4/gettext.m4: Use changequote rather than [[ ]].
7278
7279         * lib/safe-read.c: Renamed from lib/full-read.c.
7280         (safe_read): Renamed from full_read.  All uses changed.
7281         * lib/safe-read.h, lib/full-write.h: New files.
7282         * lib/Makefile.am (noinst_HEADERS): Add full-write.h, safe-read.h.
7283         (libtar_a_SOURCES): Rename full-read.c to safe-read.c.
7284         * lib/full-write.c: Include full-write.h.
7285         * src/common.h: Include full-write.h, safe-read.h.
7286         * src/system.h: (full_read, full_write): Remove decls.
7287
7288         * src/Makefile.am (datadir): New var; needed for Solaris gettext.
7289
7290         * src/system.h (bindtextdomain, textdomain): undef before
7291         defining, to avoid preprocessor warnings with --disable-nls
7292         on hosts whose locale.h includes libintl.h.
7293
7294         * lib/xstrtol.c (__strtol): Remove decl; it doesn't work if __strtol
7295         expands to a macro, which occurs in HP-UX 10.20 with strtoumax.
7296         (strtol, strtoul): New decls (for pre-ANSI hosts), to replace
7297         the above decl.
7298
7299 1999-07-02  Paul Eggert  <eggert@twinsun.com>
7300
7301         * Makefile.am (ACINCLUDE_INPUTS): Add $(M4DIR)/mktime.m4.
7302         * m4/mktime.m4: New file.
7303         * m4/Makefile.am.in, m4/README: Remove these files.
7304         * m4/Makefile.am (EXTRA_DIST): Add mktime.m4;
7305         remove README, Makefile.am.in.
7306         (Makefile.am): Remove rule; it didn't work in BSD/OS 4.0.
7307         * m4/jm-mktime.m4 (jm_FUNC_MKTIME): Invoke AC_FUNC_MKTIME,
7308         not AM_FUNC_MKTIME.
7309
7310         * src/tar.c: Include signal.h.
7311         (SIGCHLD): Define to SIGCLD if SIGCLD is defined but SIGCHLD is not.
7312         (main): Ensure SIGCHLD is not ignored.
7313
7314         (BACKUP_OPTION, DELETE_OPTION, EXCLUDE_OPTION, GROUP_OPTION,
7315         MODE_OPTION, NEWER_MTIME_OPTION, NO_RECURSE_OPTION, NULL_OPTION,
7316         OWNER_OPTION, POSIX_OPTION, PRESERVE_OPTION, RECORD_SIZE_OPTION,
7317         RSH_COMMAND_OPTION, SUFFIX_OPTION, USE_COMPRESS_PROGRAM_OPTION,
7318         VOLNO_FILE_OPTION, OBSOLETE_ABSOLUTE_NAMES,
7319         OBSOLETE_BLOCK_COMPRESS, OBSOLETE_BLOCKING_FACTOR,
7320         OBSOLETE_BLOCK_NUMBER, OBSOLETE_READ_FULL_RECORDS, OBSOLETE_TOUCH,
7321         OBSOLETE_VERSION_CONTROL): Make sure they can't be valid chars, so
7322         they don't overlap with char codes.  Use an enum instead of a lot
7323         of #defines.
7324
7325         * src/system.h (ISASCII): Remove.
7326         (CTYPE_DOMAIN, ISDIGIT, ISODIGIT, ISPRINT, ISSPACE, S_ISUID,
7327         S_ISGID, S_IRUSR, S_IWUSR, S_IXUSR, S_IRGRP, S_IWGRP, S_IXGRP,
7328         S_IROTH, S_IWOTH, S_IXOTH, MODE_WXUSR, MODE_R, MODE_RW,
7329         MODE_RWX, MODE_ALL, SEEK_SET, SEEK_CUR, SEEK_END, CHAR_MAX,
7330         LONG_MAX): New macros.
7331
7332         * src/incremen.c (ISDIGIT, ISSPACE): Remove; now in system.h.
7333         (read_directory_file): Cast ISSPACE arg to unsigned char.
7334         * src/misc.c (ISPRINT): Remove; now in system.h.
7335         (remove_any_file): Add brackets to pacify gcc -Wall.
7336         * src/list.c: Don't include <ctype.h>; system.h already does this.
7337         (ISODIGIT, ISSPACE): Remove; now in system.h.
7338         (decode_header): No need to AND mode with 07777; MODE_FROM_OCT
7339         does this now.
7340         (from_oct): Cast ISSPACE arg to unsigned char.
7341
7342         * src/create.c (mode_to_oct): Translate modes from internal to
7343         external form.
7344         * src/list.c (mode_from_oct): Translate modes from external to
7345         internal form.  Do not complain about unrecognized mode bits.
7346         * src/common.h (TSUID, TSGID, TSVTX, TUREAD, TUWRITE, TUEXEC,
7347         TGREAD, TGWRITE, TGEXEC, TOREAD, TOWRITE, TOEXEC): Remove undefs.
7348
7349         * src/extract.c: (extr_init, make_directories, extract_archive):
7350         Do not assume mode bits have traditional Unix values.
7351         * src/list.c (decode_mode): Likewise.
7352         * src/create.c (start_header, dump_file): Likewise.
7353         * src/buffer.c (child_open_for_compress,
7354         child_open_for_uncompress, open_archive, (close_archive): Likewise.
7355         * src/compare.c (diff_archive): Likewise.
7356
7357         * src/extract.c (set_mode): Use %04 not %0.4 format.
7358         (extract_sparse_file): Do not use data_block uninitialized.
7359         Check for lseek failures.
7360
7361         * src/rtapelib.c (rmt_lseek__):
7362         Convert lseek whence values to portable integers on the wire.
7363         * src/rmt.c (main): Likewise.  Check for whence values out of range.
7364
7365         * src/create.c (finish_sparse_file): Use lseek whence macros
7366         instead of integers.
7367         * src/buffer.c (backspace_output): Likewise.
7368         * src/compare.c (diff_archive, verify_volume): Likewise.
7369         * src/delete.c (move_archive): Likewise.
7370         * src/extract.c (extract_sparse_file): Likewise.
7371
7372         * src/create.c (dump_file): Do not invoke finish_sparse_file
7373         on a negative file descriptor.
7374
7375         * src/buffer.c: Add braces to pacify gcc -Wall.
7376
7377         * src/compare.c (diff_sparse_files): Report lseek errors.
7378
7379         * configure.in (ALL_LINGUAS): Add cs, es, ru.
7380
7381         * PORTS, TODO: gnu.ai.mit.edu -> gnu.org
7382
7383         * src/arith.c, src/buffer.c (new_volume): Don't put ^G in
7384         message to be internationalized; \a doesn't work with msgfmt.
7385
7386         * src/tar.c (long_options, main, usage, OPTION_STRING):
7387         Remove -E or --ending-file.
7388         * src/list.c (read_and): Likewise.
7389         * src/common.h (ending_file_option): Likewise.
7390         * src/buffer.c (close_archive): Likewise.
7391
7392         * tests/after: Don't run two commands together in a pipeline,
7393         as some old shells mishandle pipeline exit status.
7394
7395 1999-06-28  Paul Eggert  <eggert@twinsun.com>
7396
7397         * configure.in (AM_INIT_AUTOMAKE): version 1.12.64015.
7398         * NEWS: Describe changes since 1.12.
7399         * README: Update bug reporting address; move paxutils ref to NEWS.
7400
7401         Handle EINTR correctly.
7402         * lib/Makefile.am (libtar_a_SOURCES): Add full-read.c, full-write.c.
7403         * lib/full-read.c, lib/full-write.c: New files.
7404         * src/buffer.c (child_open_for_compress, child_open_for_uncompress):
7405         Prefer full_read to read and full_write to write.
7406         * src/compare.c (process_rawdata, diff_sparse_files): Likewise.
7407         * src/create.c (deal_with_sparse, finish_sparse_file, dump_file):
7408         Likewise.
7409         * src/extract.c (extract_sparse_file): Likewise.
7410         * src/rmt.c (get_string, main, report_error_message,
7411         report_numbered_error): Likewise.
7412         * src/rmt.h (rmtread, rmtwrite): Likewise.
7413         * src/rtapelib.c (do_command, get_status_string, rmt_read__,
7414         rmt_write__, rmt_ioctl__): Likewise.
7415         * src/update.c (append_file): Likewise.
7416         * src/system.h (full_read, full_write): New decls.
7417
7418         * po/POTFILES.in: Add lib/argmatch.c, lib/error.c lib/getopt.c,
7419         lib/xmalloc.c, src/arith.c, src/misc.c.
7420
7421         * src/system.h (STDIN_FILENO, STDOUT_FILENO, STDERR_FILENO):
7422         New macros.  All uses of STDIN and STDOUT changed.
7423         * src/rmt.c (prepare_record_buffer, main): Use STDIN_FILENO
7424         instead of 0 and STDOUT_FILENO instead of 1.
7425         * src/rtapelib.c (_rmt_rexec): Use STDIN_FILENO and STDOUT_FILENO
7426         instead of fileno (stdin) and fileno (stdout) or 0 and 1.
7427
7428         * src/rmt.c (private_strerror): Avoid const.  Translate results.
7429
7430         * tests/Makefile.am (TESTS): Remove incremen.sh; it doesn't work
7431         in the presence of NFS clock skew.
7432
7433 1999-06-25  Paul Eggert  <eggert@twinsun.com>
7434
7435         * configure.in (AM_INIT_AUTOMAKE): version 1.12.64014.
7436
7437         * src/buffer.c (write_archive_buffer): New function.
7438         (child_open_for_compress, flush_write, flush_read): Use it to write
7439         buffers.
7440         (open_archive): Report error if fstat of archive fails.
7441         Improve efficiency of check for /dev/null.
7442         Also, fix some corner cases with remote archives and /dev/null checking.
7443         (close_archive): Test for input fifo only if not remote.
7444         Truncate output archive only if it's not remote.
7445
7446         * src/misc.c (remove_any_file):
7447         Don't terminate if you see . or ..; just skip them.
7448
7449 1999-06-18  Paul Eggert  <eggert@twinsun.com>
7450
7451         * configure.in (AM_INIT_AUTOMAKE): version 1.12.64013.
7452
7453         Output sizes using a format that's more compatible with
7454         traditional tar (and with GNU Emacs).
7455         * src/common.h (GID_TO_OCT, MAJOR_TO_OCT, MINOR_TO_OCT,
7456         MODE_TO_OCT, SIZE_TO_OCT, UID_TO_OCT, UINTMAX_TO_OCT):
7457         Don't subtract 1 from size.
7458         * src/create.c (to_oct): Prepend leading zeros, not spaces.
7459         Output a trailing NUL unless the value won't fit without it.
7460         (finish_header): No need to append NUL to chksum, now that
7461         to_oct is doing it.
7462
7463 1999-06-16  Paul Eggert  <eggert@twinsun.com>
7464
7465         * NEWS, configure.in (AM_INIT_AUTOMAKE): version 1.12.64012.
7466
7467         * src/Makefile.am (LDADD): Link libtar.a after @INTLLIBS@, since
7468         @INTLLIBS@ might invoke rpl_realloc.
7469
7470         * src/tar.c (backup_type): Remove decl; backupfile.h now has it.
7471         (intconv): Remove; use xstrto* fns instead.
7472         ("xstrtol.h"): Include.
7473         (check_decimal): Remove.
7474         (long_options, usage, OPTION_STRING, decode_options):
7475         Remove -y, --bzip2, --unbzip2.
7476         (decode_options): Use xget_version instead of get_version.
7477         Check for overflow with -b and -L and RECORD_SIZE_OPTION.
7478         Replace invocations of check_decimal  with xstrtoumax.
7479
7480         * tests/preset.in (echo_n, echo_c): Remove.
7481
7482         * tests/after: Don't rely on $echo_c and $echo_n.
7483
7484         * lib/addext.c, lib/dirname.c, lib/lchown.c, lib/lchown.h,
7485         lib/malloc.c, lib/mktime.c, lib/realloc.c, lib/strtol.c, lib/strtoul.c,
7486         lib/strtoull.c, lib/strtoumax.c, lib/utime.c, lib/xstrtol.c,
7487         lib/xstrtol.h, lib/xstrtoul.c, lib/xstrtoumax.c,
7488         m4/Makefile.am.in, m4/README, m4/ccstdc.m4, m4/d-ino.m4,
7489         m4/gettext.m4, m4/inttypes_h.m4, m4/isc-posix.m4,
7490         m4/jm-mktime.m4, m4/largefile.m4, m4/lcmessage.m4,
7491         m4/malloc.m4, m4/progtest.m4, m4/realloc.m4, m4/uintmax_t.m4,
7492         m4/ulonglong.m4, m4/utimbuf.m4, m4/utime.m4, m4/utimes.m4,
7493         m4/xstrtoumax.m4: New files.
7494
7495         * configure.in(fp_PROG_ECHO): Remove; no longer needed.
7496         (AC_SYS_LARGEFILE): Renamed from AC_LFS.
7497         (jm_AC_HEADER_INTTYPES_H): Replaces inline code.
7498         (jm_STRUCT_DIRENT_D_INO, jm_AC_TYPE_UINTMAX_T, jm_AC_PREREQ_XSTRTOUMAX): Add.
7499         (AC_CHECK_FUNCS): Remove lchown.
7500         (AC_REPLACE_FUNCS): Remove basename, dirname.
7501         Add lchown, strtol, strtoul.
7502         (jm_FUNC_MKTIME): Add.
7503         (LIBOBJS): Replace .o with $U.o, so that the .o files in LIBOBJS
7504         are also built via the ANSI2KNR-filtering rules.
7505         Use a no-op line to work around bug in automake 1.4 with malloc and
7506         realloc.
7507         (AC_OUTPUT): Add m4/Makefile.
7508
7509         * lib/Makefile.am (EXTRA_DIST):
7510         Add lchown.c, malloc.c, mktime.c, realloc.c,
7511         strtol.c, strtoul.c, strtoull.c, strtoumax.c, utime.c.
7512         (noinst_HEADERS): Add lchown.h, modechange.h, xstrtol.h.
7513         (libtar_a_SOURCES): Add addext.c, basename.c, xstrtol.c,
7514         xstrtoul.c, xstrtoumax.c.  Remove getversion.c.
7515         ($(srcdir)/getdate.c:): Remove `expect conflicts' line.
7516
7517         * src/system.h (uintmax_t): Don't declare; configure now does this.
7518
7519         * src/common.h (backup_type): New decl.
7520         * src/common.h, src/misc.c, src/tar.c:
7521         Move include of backupfile.h to common.h.
7522
7523         * src/misc.c (maybe_backup_file):
7524         Pass backup_type to find_backup_file_name.
7525
7526         * src/list.c (print_header): Change sizes of uform and gform from 11 to
7527         UINTMAX_STRSIZE_BOUND.
7528
7529         * doc/tar.texi: Remove --bzip2.
7530         Fix @xref typos reported by latest makeinfo.
7531
7532         * Makefile.am (ACLOCAL_AMFLAGS): New macro.
7533         (SUBDIRS): Add m4.
7534         (M4DIR, ACINCLUDE_INPUTS): New macros.
7535         ($(srcdir)/acinclude.m4): New rule.
7536
7537         * acconfig.h (ENABLE_NLS, HAVE_CATGETS, HAVE_GETTEXT,
7538         HAVE_INTTYPES_H, HAVE_LC_MESSAGES, HAVE_STPCPY): Remve #undefs;
7539         now generated automatically by autoconf.
7540
7541 1999-05-15  Paul Eggert  <eggert@twinsun.com>
7542
7543         * doc/tar.texi: Remove -y.
7544
7545 1999-04-09  Paul Eggert  <eggert@twinsun.com>
7546
7547         * src/system.h (INT_STRLEN_BOUND): Fix off-by-factor-of-10 typo
7548         (we were allocating too much storage).
7549         (uintmax_t): Don't declare; configure now does this.
7550
7551         * ABOUT-NLS: Update to gettext 0.10.35 edition.
7552
7553 1999-03-22  Paul Eggert  <eggert@twinsun.com>
7554
7555         * NEWS, configure.in (AM_INIT_AUTOMAKE): version 1.12.64010
7556
7557         * acinclude.m4 (AC_LFS_FLAGS):
7558         Don't use -mabi=n32 with GCC on IRIX 6.2; it's the default.
7559         (AC_LFS): -n32, -o32, and -n64 are CPPFLAGS, not CFLAGS.
7560         (jm_FUNC_MALLOC, jm_FUNC_REALLOC): New macros.
7561
7562         * configure.in (jm_FUNC_MALLOC, jm_FUNC_REALLOC):
7563         New macros; needed for latest GNU xmalloc.c.
7564
7565         * Makefile.am (noinst_HEADERS): Add quotearg.h, xalloc.h.
7566         (libtar_a_SOURCES): Add quotearg.c.
7567         * list.c: Include <quotearg.h>.
7568         (from_oct): Add forward decl.
7569         (read_header): Return HEADER_FAILURE if we can't parse the checksum.
7570         (from_oct): Report an error only if TYPE is nonzero.
7571         Quote any funny characters in bad header.
7572
7573 1999-03-20  Paul Eggert  <eggert@twinsun.com>
7574
7575         * NEWS, configure.in (AM_INIT_AUTOMAKE): version 1.12.64009
7576
7577         * acinclude.m4 (AC_LFS_FLAGS): Add support for IRIX 6.2 and later.
7578         (AC_LFS_SPACE_APPEND): Assume $2 is quoted properly; all callers
7579         changed.
7580         (AC_LFS): Simplify AIX revision number test.
7581
7582 1999-03-17  Paul Eggert  <eggert@twinsun.com>
7583
7584         * NEWS, configure.in (AM_INIT_AUTOMAKE): version 1.12.64008
7585
7586         * configure.in (AC_VALIDATE_CACHED_SYSTEM_TUPLE):
7587         Remove; it doesn't work that well
7588         with AC_CANONICAL_HOST.
7589         (fp_WITH_INCLUDED_MALLOC): Remove; we'll just use the system malloc.
7590
7591         * Makefile.am (EXTRA_DIST): Remove AC-PATCHES, AM-PATCHES, BI-PATCHES.
7592
7593         * Makefile.am (EXTRA_DIST): Remove gmalloc.c.
7594
7595         * acinclude.m4 (fp_WITH_INCLUDED_MALLOC): Remove.
7596
7597         * tar.texi: Fix bug-report addr.
7598
7599         * README: Remove --with-included-malloc.
7600         Upgrade version numbers of build software.
7601
7602 1999-03-07  Paul Eggert  <eggert@twinsun.com>
7603
7604         * NEWS, configure.in (AM_INIT_AUTOMAKE): Version 1.12.64007.
7605
7606         * acinclude.m4 (AM_WITH_NLS): Port to Solaris 2.5.1,
7607         where bindtextdomain and gettext require -lintl.
7608         (AC_LFS_FLAGS): Simplify so that it only gets the flags;
7609         `no' means it failed.
7610         (AC_LFS_SPACE_APPEND, AC_LFS_MACRO_VALUE): New macros.
7611         (AC_LFS): Use them.  Set _FILE_OFFSET_BITS, _LARGEFILE_SOURCE, and
7612         _LARGE_FILES from LFS_CFLAGS, so that in the normal case we don't need
7613         to add anything to the command line (it's all in config.h).
7614         Put any extra -D and -I options into CPPFLAGS, the rest into CFLAGS.
7615
7616 1999-03-01  Paul Eggert  <eggert@twinsun.com>
7617
7618         * NEWS, configure.in (AM_INIT_AUTOMAKE): Version 1.12.64006.
7619
7620         * acinclude.m4 (AC_LFS_FLAGS): Port to AIX 4.2.
7621
7622         * src/list.c: (gid_from_oct, major_from_oct, minor_from_oct,
7623         mode_from_oct, off_from_oct, size_from_oct, time_from_oct,
7624         uid_from_oct, uintmax_from_oct): Use TYPE_MAXIMUM instead of macros
7625         like OFF_MAX, which are not reliable
7626         (e.g. OFF_MAX in AIX 4.2 is incorrect).
7627         * src/system.h (GID_MAX, MAJOR_MAX, MINOR_MAX, MODE_MAX, OFF_MAX,
7628         SIZE_MAX, TIME_MAX,UID_MAX, UINTMAX_MAX):  Remove; no longer used.
7629
7630         * src/incremen.c (get_directory_contents):
7631         Don't use statx if _LARGE_FILES; it doesn't work under AIX 4.2.
7632         Have statx depend on STX_HIDDEN, not AIX.
7633
7634         * src/create.c (to_oct):
7635         New parameter substitute, giving a substitute value to use
7636         when the original value is out of range.  Do not append a space to the
7637         output; modern tars don't.  When a value is out of range, specify the
7638         maximum value, not the number of bits.
7639         (GID_NOBODY, UID_NOBODY): New macros.
7640         (gid_to_oct, uid_to_oct): Use them as substitutes.
7641         (finish_header): Do not assume that UINTMAX_TO_OCT appends a space.
7642         (dump_file): Check whether the file changed as we read it.
7643
7644         * src/rmt.c (main): Remove suspicious AIX/386 code.
7645
7646 1999-02-19  Paul Eggert  <eggert@twinsun.com>
7647
7648         * intl/localealias.c (read_alias_file): Don't assume that memcpy
7649         returns a type compatible with char *; it doesn't on SunOS
7650         4.1.4 with Sun cc, since <string.h> doesn't declare memcpy.
7651
7652         * NEWS, configure.in (AM_INIT_AUTOMAKE): Version 1.12.64005.
7653
7654         * src/tar.c (long_options, usage): Prefer --unbzip2 to --bunzip2.
7655         * doc/tar.texi: Add --bzip2, --unbzip2 options.
7656
7657         * configure.in (AC_CANONICAL_HOST, AC_VALIDATE_CACHED_SYSTEM_TUPLE):
7658         Add.
7659         (AC_LINK_FILES): Omit; AM_GNU_GETTEXT now does this.
7660         (AC_OUTPUT): Omit munging of po/Makefile; AM_GNU_GETTEXT now does this.
7661         * acinclude.m4 (AM_WITH_NLS):
7662         Update to latest gettext version (serial 5).
7663         (AC_LFS_FLAGS): New macro
7664         (AC_LFS): Use it.  Append to CFLAGS, LDFLAGS, LDLIBS instead of
7665         working only with unset variables.  Append to CFLAGS, not CPPFLAGS.
7666         Work properly in cross-compilation scenario, by checking for getconf
7667         with AC_CHECK_TOOL and by ditching uname in favor of
7668         AC_CANONICAL_HOST and $host_os.  Add --disable-lfs option.
7669
7670         * lib/getdate.y: Update to fileutils 4.0 getdate.y, with one patch:
7671         replace FORCE_ALLOCA_H with HAVE_ALLOCA_H.
7672         * lib/Makefile.am (AUTOMAKE_OPTIONS): Append ../src/ansi2knr,
7673         since getdate.y now uses ANSI code.
7674
7675         * config.guess, config.sub: New files; taken from automake 1.4.
7676
7677         * intl/Makefile.in, intl/VERSION, intl/bindtextdom.c,
7678         intl/cat-compat.c, intl/dcgettext.c, intl/dgettext.c,
7679         intl/explodename.c, intl/finddomain.c, intl/gettext.c,
7680         intl/gettext.h, intl/gettextP.h, intl/hash-string.h,
7681         intl/l10nflist.c, intl/libgettext.h, intl/loadinfo.h,
7682         intl/loadmsgcat.c, intl/localealias.c, intl/textdomain.c:
7683         Update to GNU gettext 0.10.35, with patches as per GCC snapshot 990109.
7684
7685 1999-02-01  Paul Eggert  <eggert@twinsun.com>
7686
7687         * src/tar.c: Update copyright.
7688
7689         * NEWS: 1.12.64004
7690
7691 1999-02-01  Paul Eggert  <eggert@twinsun.com>
7692
7693         * NEWS, configure.in: Version 1.12.64004
7694
7695         * configure.in (AC_LFS): Use this macro, instead of open-coding it.
7696
7697         * acinclude.m4 (AC_LFS, AM_PROG_CC_STDC): New macros.
7698
7699         * src/extract.c (extract_archive): Fix bug when extracting sparse
7700         files: they were trashing the tar file header.
7701
7702         * src/tar.c: (long_options, usage, OPTION_STRING, decode_options):
7703         Add -y or --bzip2 or --bunzip2 option.
7704
7705 1999-01-30  Paul Eggert  <eggert@twinsun.com>
7706
7707         * src/names.c (cached_no_such_uname, cached_no_such_gname,
7708         cached_no_such_uid, cached_no_such_gid): New vars.
7709         (uid_to_uname, gid_to_gname, uname_to_uid, gname_to_gid):
7710         Cache failures, too.
7711
7712         * src/tar.c (decode_options):
7713         Don't pass names longer than UNAME_FIELD_SIZE to
7714         uname_to_uid, as it messes up the cache.  Similarly for gname_to_uid.
7715
7716 1999-01-27  Paul Eggert  <eggert@twinsun.com>
7717
7718         * NEWS, configure.in: Version 1.12.64003
7719
7720         * src/buffer.c (backspace_output, close_archive):  Cast
7721         rmtlseek position arg to off_t, for benefit of K&R compilers
7722         with long long.
7723         * src/compare.c (verify_volume): Likewise.
7724
7725         * NEWS, configure.in: Version 1.12.64002
7726
7727         * src/create.c (gid_to_oct, major_to_oct, minor_to_oct, mode_to_oct,
7728         off_to_oct, size_to_oct, time_to_oct, uid_to_oct):
7729         Cast arg to uintmax_t for benefit of pre-ANSI compilers with long long.
7730         * src/list.c: (gid_from_oct, major_from_oct, minor_from_oct,
7731         mode_from_oct, off_from_oct, size_from_oct, time_from_oct,
7732         uid_from_oct): Likewise.
7733
7734 1999-01-25  Paul Eggert  <eggert@twinsun.com>
7735
7736         * incremen.sh: Fix timing bug in regression test.
7737
7738 1999-01-22  Paul Eggert  <eggert@twinsun.com>
7739
7740         * NEWS, configure.in: Update version
7741
7742         * Makefile.am (localedir): Change to $(datadir)/locale.
7743         (DEFS): New macro, defining LOCALEDIR.
7744         (tar.o, tar._o, rmt.o, rmt._o): Remove.
7745         (INCLUDES): Add -I..
7746
7747         * Makefile.am (localedir): Change to $(datadir)/locale.
7748
7749 1999-01-21  Paul Eggert  <eggert@twinsun.com>
7750
7751         * NEWS, README, configure.in: Unofficial version 1.12.64001.
7752
7753         * tests/Makefile.am (localedir): Change to $(datadir)/locale.
7754         * src/Makefile.am (localedir): Likewise.
7755         (DEFS): New macro, defining LOCALEDIR.
7756         (tar.o, tar._o, rmt.o, rmt._o): Remove.
7757         (INCLUDES): Add `-I..'.
7758
7759         * tests/incremen.sh: Fix timing bug.
7760
7761 1999-01-20  Paul Eggert  <eggert@twinsun.com>
7762
7763         * NEWS, README, configure.in: Unofficial version 1.12.64000.
7764         `lfs.7' changed to `64000' in version number
7765         to conform to gnits standards.
7766
7767         * COPYING, INSTALL, doc/texinfo.tex, install-sh, missing,
7768         mkinstalldirs, ansi2knr.c: Update to latest public versions.
7769
7770         Rebuild with automake 1.4 and autoconf 2.13, to work around some
7771         porting problems.
7772
7773 1998-12-07  Paul Eggert  <eggert@twinsun.com>
7774
7775         * NEWS, README, configure.in: Unofficial version 1.12.lfs.6.
7776
7777         * src/list.c (read_header):
7778         Accept file names as specified by POSIX.1-1996 section 10.1.1.
7779
7780 1998-11-30  Paul Eggert  <eggert@twinsun.com>
7781
7782         * configure.in: Quote the output of uname.
7783
7784         * src/extract.c (set_stat): chmod after chown even when not root;
7785         if we are using --same-owner this is needed e.g. on Solaris 2.5.1.
7786
7787 1998-11-15  Paul Eggert  <eggert@twinsun.com>
7788
7789         * NEWS, README, configure.in: Unofficial version 1.12.lfs.5.
7790
7791         * configure.in (ac_test_CPPFLAGS, ac_test_LDFLAGS, ac_test_LIBS,
7792         ac_getconfs, ac_result): Special case for HP-UX 10.20 or later.
7793
7794 1998-10-28  Paul Eggert  <eggert@twinsun.com>
7795
7796         * NEWS, README, configure.in: Unofficial version 1.12.lfs.4.
7797
7798         * src/system.h (voidstar): Use void * if __STDC__ is defined,
7799         not merely nonzero.
7800
7801         * src/rtapelib.c: Don't use rexec code unless compiled with WITH_REXEC.
7802         On many installations, rexec is disabled.
7803
7804 1998-08-07  Paul Eggert  <eggert@twinsun.com>
7805
7806         * NEWS, README, configure.in: Unofficial version 1.12.lfs.3.
7807
7808         * src/names.c (uid_to_uname, gid_to_gname): Don't used cached name
7809         for nameless users and groups.
7810
7811 1998-02-17  Paul Eggert  <eggert@twinsun.com>
7812
7813         * NEWS, README, configure.in: Unofficial version 1.12.lfs.2.
7814         * NEWS, README: Add explanation of why this isn't an official version.
7815
7816 1998-02-02  Paul Eggert  <eggert@twinsun.com>
7817
7818         * NEWS, README, configure.in: Unofficial version 1.12.lfs.1.
7819         This is an unofficial version.
7820
7821 1997-12-17  Paul Eggert  <eggert@twinsun.com>
7822
7823         * src/incremen.c (ST_DEV_MSB): New macro.
7824         (NFS_FILE_STAT): Use most significant bit of st_dev,
7825         even if it's unsigned.
7826
7827 1997-12-08  Paul Eggert  <eggert@twinsun.com>
7828
7829         * src/system.h (ST_NBLOCKS): Fix typo in definition.
7830
7831 1997-11-19  Paul Eggert  <eggert@twinsun.com>
7832
7833         * configure.in (HAVE_INTTYPES_H):
7834         Don't ignore cache variable if it's already set.
7835
7836 1997-11-10  Paul Eggert  <eggert@twinsun.com>
7837
7838         * src/rmt.c (main): Don't assume mt_count is of type daddr_t.
7839         * src/delete.c (records_read): Now off_t.
7840         (move_archive): Don't assume mt_count is of type daddr_t.
7841
7842 1997-10-30  Paul Eggert  <eggert@twinsun.com>
7843
7844         * configure.in (CPPFLAGS, LDFLAGS, LIBS):
7845         Set to appropriate values if large file support
7846         needs explicit enabling.
7847         (HAVE_INTTYPES_H, HAVE_ST_FSTYPE_STRING, daddr_t, major_t, minor_t,
7848         ssize_t):
7849         New macros to configure.
7850         (AC_TYPE_MODE_T, AC_TYPE_PID_T, AC_TYPE_OFF_T): Add.
7851
7852         * acconfig.h (daddr_t, HAVE_INTTYPES_H, HAVE_ST_FSTYPE_STRING,
7853         major_t, minor_t, ssize_t): New macros.
7854
7855         * src/arith.h (TARLONG_FORMAT):
7856         Fix typo: %uld -> %lu.  Use unsigned when long long
7857         (%lld -> %llu).
7858         (add_to_tarlong_helper, mult_tarlong_helper): 2nd arg is now unsigned long.
7859         (add_to_tarlong, mult_tarlong): Cast 2nd arg to unsigned long.
7860
7861         * src/arith.c (add_to_tarlong_helper, mult_tarlong_helper):
7862         2nd arg is now unsigned long.
7863
7864         * src/rmt.c (allocated_size): Now size_t, and now initialized to 0.
7865         (prepare_record_buffer): Arg is now size_t.
7866         Remove now-useless casts.
7867
7868         (main): Use `long' for status, so that it can store ssize_t.
7869         Use daddr_t, mode_t, size_t, off_t when appropriate.
7870         Convert daddr_t and off_t values ourselves, since they might be longer
7871         than long.  Convert other types using `long' primitives.
7872         When processing MTIOCTOP, do not try to pass resulting
7873         count back, since it won't work (it could be too large) and it's
7874         not expected anyway.
7875
7876         * src/update.c:
7877         (append_file) Use off_t, size_t, ssize_t when appropriate.  Remove
7878         now-useless casts.  Use unsigned long to print *_t types, except use
7879         STRINGIFY_BIGINT for off_t.
7880         (update_archive): Cast -1 to dev_t when necessary.
7881
7882         * src/tar.c (check_decimal):
7883         Now returns 1 if successful, 0 otherwise, and returns
7884         uintmax_t value into new arg.  Check for arithmetic overflow.
7885         (decode_options): Avoid overflow if record_size fits in size_t but not int.
7886         Check for overflow on user or group ids.
7887
7888         * src/compare.c (diff_init, process_rawdata, read_and_process,
7889         diff_sparse_files, diff_archive):
7890         Use off_t, pid_t, size_t, ssize_t when appropriate.
7891         Remove now-useless casts.  Use unsigned long to print *_t types,
7892         except use STRINGIFY_BIGINT for off_t.
7893
7894         (process_noop, process_rawdata, process_dumpdir, read_and_process):
7895         Size arg is now size_t.
7896
7897         (diff_sparse_files): Arg is now off_t.  Check for size_t overflow
7898         when allocating buffer.
7899
7900         * src/rtapelib.c:
7901         (do_command, rmt_open__, rmt_read__, rmt_lseek__, rmt_ioctl__):
7902         Use pid_t, size_t, ssize_t when appropriate.  Remove now-useless casts.
7903         Use unsigned long to print *_t types, except use STRINGIFY_BIGINT for
7904         off_t.
7905
7906         (get_status_string, get_status_off): New function.
7907         (get_status): Now returns long, so that it can store ssize_t.
7908         Invoke get_status_string to do the real work.
7909         (rmt_read__, rmt_write__): Now returns ssize_t. Size arg is now size_t.
7910         (rmt_lseek__): Now returns off_t, using new get_status_off function.
7911         (rmt_ioctl__): Convert mt_count by hand,
7912         since it might be longer than long.
7913
7914         * src/mangle.c (extract_mangle):
7915         Check for overflow when converting off_t to size_t.
7916         Use off_t, size_t when appropriate.  Remove now-useless casts.
7917
7918         * src/system.h (mode_t): Remove; now done by autoconf.
7919         (ST_NBLOCKS): Do not overflow if st_size is near maximum.
7920         Return number of ST_NBLOCKSIZE-byte blocks,
7921         not number of 512-byte blocks;
7922         this also helps to avoid overflow.
7923         (st_blocks): Declare if needed.
7924         (ST_NBLOCKSIZE): New macro.
7925         (<limits.h>, <inttypes.h>): Include if available.
7926         (CHAR_BIT): New macro.
7927         (uintmax_t): New typedef.
7928         (TYPE_SIGNED, TYPE_MINIMUM, TYPE_MAXIMUM, INT_STRLEN_BOUND,
7929         UINTMAX_STRSIZE_BOUND, GID_MAX, MAJOR_MAX, MINOR_MAX, MODE_MAX,
7930         OFF_MAX, SIZE_MAX, TIME_MAX, UID_MAX, UINTMAX_MAX): New macros.
7931
7932         * src/names.c (name_init):
7933         Fix typo in error message: FILE* was passed, but char*
7934         was wanted.
7935
7936         (read_name_from_file, name_gather, addname, name_match, name_scan,
7937         add_exclude): Use size_t when appropriate.  Remove now-useless casts.
7938
7939         (exclude_pool_size, allocated_exclude_pool_size): Now size_t.
7940
7941         * src/extract.c (newdir_umask, current_umask): Now mode_t.
7942         (extract_sparse_file): Args now use off_t.
7943
7944         (set_mode, set_stat, make_directories, extract_sparse_file,
7945         extract_archive): Use off_t, size_t, ssize_t when appropriate.  Remove
7946         now-useless casts.  Use unsigned long to print *_t types, except use
7947         STRINGIFY_BIGINT for off_t.
7948
7949         * src/misc.c (quote_copy_string):
7950         Use size_t when appropriate.  Remove now-useless casts.
7951
7952         * src/list.c (read_and, list_archive, read_header, decode_mode,
7953         print_header, print_for_mkdir):
7954         Use mode_t, off_t, size_t when appropriate.  Remove
7955         now-useless casts.  Use unsigned long to print *_t types, except use
7956         STRINGIFY_BIGINT for off_t.
7957
7958         (read_header): Check for overflow when converting header size.
7959
7960         (from_oct): Now static.  Now returns uintmax_t.  `where' arg is now
7961         const char *.  Size arg is now size_t.  Now takes new type and maxval
7962         args.  Compute result using uintmax_t, not long.  Report error if
7963         field does not contain octal number in range.
7964         (gid_from_oct, major_from_oct, minor_from_oct, mode_from_oct,
7965         off_from_oct, size_from_oct, time_from_oct, uid_from_oct,
7966         uintmax_from_oct): New functions.
7967
7968         (stringify_uintmax_t_backwards): New function.
7969
7970         (decode_mode, print_for_mkdir): Mode arg is now mode_t.
7971         (skip_file): Offset arg is now off_t.
7972
7973         * src/buffer.c (record_start_block, save_totsize, save_sizeleft,
7974         real_s_totsize, real_s_sizeleft, current_block_ordinal):
7975         Now off_t.
7976         (write_error): Arg is now ssize_t.
7977         (child_pid): Now pid_t.
7978         (available_space_after): Now size_t.
7979
7980         (child_open_for_compress, child_open_for_uncompress, flush_write,
7981         open_archive, flush_write, write_error, flush_read, close_archive):
7982         Use pid_t, ssize_t, size_t when appropriate.  Remove now-useless
7983         casts.  Use unsigned long to print *_t types, except use
7984         STRINGIFY_BIGINT for off_t.
7985
7986         * src/delete.c (records_read): Now daddr_t.
7987         (move_archive): Arg is now daddr_t.  Check for overflow when
7988         computing offset.
7989         (move_archive, delete_archive_members): Use daddr_t, off_t when
7990         appropriate.  Remove now-useless casts.
7991
7992         * src/rmt.h (rmt_read__, rmt_write__): Now returns ssize_t.
7993         (rmt_lseek): Now returns off_t.
7994
7995         * src/create.c (to_oct):
7996         Now static.  Value arg is now uintmax_t.  Accept new args
7997         giving name of type of octal field, for error messages.  Report an
7998         error if the value is too large to fit in the field.
7999         (gid_to_oct, major_to_oct, minor_to_oct, mode_to_oct, off_to_oct,
8000         size_to_oct, time_to_oct, uid_to_oct, uintmax_to_oct): New functions.
8001
8002         (write_eot, write_long, finish_header, deal_with_sparse,
8003         finish_sparse_file, dump_file): Use dev_t, off_t, ssize_t, size_t when
8004         appropriate.  Remove now-useless casts.  Use unsigned long to print
8005         *_t types, except use STRINGIFY_BIGINT for off_t.
8006
8007         (find_new_file_size): 1st arg is now off_t*.
8008         (finish_sparse_file): Args now use off_t, not long.
8009         Check for lseek error.
8010         (create_archive, dump_file): Cast -1 to dev_t when necessary.
8011         (dump_file): Device arg is now dev_t.
8012         Avoid overflow when testing whether file has holes
8013         by using the new ST_NBLOCKSIZE macro.
8014
8015         * src/incremen.c (struct accumulator, add_to_accumulator,
8016         get_directory_contents, add_hierarchy_to_namelist, gnu_restore):
8017         Use size_t for sizes.
8018         (struct directory, get_directory_contents, add_hierarchy_to_namelist):
8019         Use dev_t, ino_t for devices and inodes.
8020         (gnu_restore): Use off_t for file offsets.
8021         (struct directory): Use char for flags.  Add new flag `nfs'.
8022         (nfs): New constant
8023         (NFS_FILE_STAT): New macro.
8024         (note_directory): Accept struct stat * instead of
8025         device and inode number.  All callers changed.
8026         (note_directory, get_directory_contents):
8027         Use NFS_FILE_STAT to determine whether directory is an NFS directory.
8028         (write_dir_file): Cast time_t to unsigned long before printing as %lu.
8029
8030         * src/common.h (record_size, struct name, struct sp_array,
8031         available_space_after):
8032         Use size_t for sizes.
8033         (save_sizeleft, save_totsize, current_block_ordinal, skip_file):
8034         Use off_t for file offsets.
8035         (struct name): dir_contents is now const char *, not char *.
8036         (dump_file, get_directory_contents): Use dev_t for devices.
8037         (to_oct): Remove decl.
8038         (GID_TO_OCT, MAJOR_TO_OCT, MINOR_TO_OCT, MODE_TO_OCT, SIZE_TO_OCT,
8039         UID_TO_OCT, UINTMAX_TO_OCT, OFF_TO_OCT, TIME_TO_OCT, STRINGIFY_BIGINT,
8040         GID_FROM_OCT, MAJOR_FROM_OCT, MINOR_FROM_OCT, MODE_FROM_OCT,
8041         OFF_FROM_OCT, SIZE_FROM_OCT, TIME_FROM_OCT, UID_FROM_OCT,
8042         UINTMAX_FROM_OCT): New macros.
8043         (gid_to_oct, major_to_oct, minor_to_oct, mode_to_oct, off_to_oct,
8044         size_to_oct, time_to_oct, uid_to_oct, uintmax_to_oct,
8045         stringify_uintmax_t_backwards, gid_from_oct, major_from_oct,
8046         minor_from_oct, mode_from_oct, off_from_oct, size_from_oct,
8047         time_from_oct, uid_from_oct, uintmax_from_oct): New decls.
8048         (print_for_mkdir): 2nd arg is now mode_t.
8049
8050 See ChangeLog.1 for earlier changes.
8051
8052
8053 \f
8054 Copyright (C) 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006
8055 Free Software Foundation, Inc.
8056
8057 This file is part of GNU tar.
8058
8059 GNU tar is free software; you can redistribute it and/or modify
8060 it under the terms of the GNU General Public License as published by
8061 the Free Software Foundation; either version 2, or (at your option)
8062 any later version.
8063
8064 GNU tar is distributed in the hope that it will be useful,
8065 but WITHOUT ANY WARRANTY; without even the implied warranty of
8066 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
8067 GNU General Public License for more details.
8068
8069 You should have received a copy of the GNU General Public License
8070 along with GNU tar; see the file COPYING.  If not, write to
8071 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
8072 Boston, MA 02110-1301, USA.
8073 \f
8074 Local Variables:
8075 mode: change-log
8076 version-control: never
8077 End: