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