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