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