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