]> Dogcows Code - chaz/tar/blob - ChangeLog
Updated
[chaz/tar] / ChangeLog
1 2003-11-25 Sergey Poznyakoff <gray@Mirddin.farlep.net>
2
3 * src/create.c (write_gnu_long_link): Use oldgnu
4 magic with @LongLink blocks.
5
6 2003-11-17 Sergey Poznyakoff <gray@Mirddin.farlep.net>
7
8 * src/tar.h: Support for star sparse format.
9 * src/sparse.c: Likewise.
10
11 2003-11-17 Sergey Poznyakoff <gray@Mirddin.farlep.net>
12
13 * src/sparse.c (sparse_diff_file): New function
14 * src/common.h (sys_compare_uid,sys_compare_gid): New functions
15 (sys_compare_uid_gid): Removed.
16 (sys_compare_links,report_difference): Changed prototype
17 (sparse_diff_file): New function
18 * src/system.c (sys_compare_uid,sys_compare_gid): New functions
19 (sys_compare_uid_gid): Removed.
20 (sys_compare_links): Changed declaration
21 * src/compare.c (diff_archive): Use sparse_diff_file.
22
23 2003-11-16 Sergey Poznyakoff <gray@Mirddin.farlep.net>
24
25 Rewritten sparse file handling.
26
27 * src/sparse.c: New file. Provides a universal framework
28 for various methods for sparse files handling.
29 * src/Makefile.am: Added sparse.c
30 * src/common.h (struct sp_array,sparsearray,sp_array_size)
31 (init_sparsearray,fill_in_sparse_array): Removed
32 (enum dump_status): New data type
33 (pad_archive,close_diag,open_diag,read_diag_details)
34 (readlink_diag,savedir_diag,seek_diag_details,stat_diag): New
35 functions.
36 (sparse_file_p,sparse_dump_file,sparse_extract_file): New
37 functions.
38 (print_header): Changed prototype declaration.
39 * src/tar.h (struct sp_array): Declaration from common.h
40 (struct tar_stat_info): New members archive_file_size,
41 sparse_map_avail,sparse_map.
42 * src/create.c: Major rewrite.
43 * src/extract.c: Use new sparse file interface.
44 * src/compare.c (diff_sparse_files): Temporary placeholder.
45
46 * src/buffer.c: Minor changes
47 * src/tar.c: Likewise.
48 * src/list.c: Likewise.
49 * src/misc.c (close_diag,open_diag,read_diag_details)
50 (readlink_diag,savedir_diag,seek_diag_details,stat_diag): New
51 diagnostics functions.
52 * src/incremen.c: Use new diagnostics functions.
53 * src/names.c: Likewise.
54
55 2003-11-14 Sergey Poznyakoff <gray@Mirddin.farlep.net>
56
57 * configure.ac: Fixed check for setsockopt
58
59 * src/create.c: Do not zero-terminate name field if
60 the name is exactly 100 characters long.
61 (write_ustar_long_name): Fixed cheking for unsplittable
62 names.
63
64 2003-11-14 Sergey Poznyakoff <gray@Mirddin.farlep.net>
65
66 * src/create.c (start_header): Removed debugging hook
67 (dump_file): Fixed handling of linkname field.
68 * src/names.c (safer_name_suffix): If the input
69 file name ends with a slash, output one should do so
70 as well.
71 * doc/tar.texi: Documented --format=ustar
72
73 2003-11-14 Sergey Poznyakoff <gray@Mirddin.farlep.net>
74
75 * src/tar.h (archive_format): USTAR_FORMAT: New type.
76 * src/create.c: Added POSIX.1-1988 support.
77 * src/names.c (safer_name_suffix): Skip leading ./
78 * src/tar.c: New option --format=ustar forces
79 POSIX.1-1988 archive format.
80 * tests/delete03.sh: Updated.
81 * tests/extrac04.sh: Updated.
82 * tests/multiv01.sh: Updated.
83
84 2003-11-13 Sergey Poznyakoff <gray@Mirddin.farlep.net>
85
86 * src/list.c (read_and): Initialize current_stat_info
87 and extended_header at the start of the loop.
88 * src/names.c (all_names_found): Check if the argument
89 contains valid filename. Fixes coredump on `not_a_tar_file'
90 * src/xheader.c (atime_decoder,gid_decoder,ctime_decoder)
91 (mtime_decoder,size_decoder,uid_decoder): Use xstrtoumax.
92 Fixes `pax-big-10g' bug.
93
94 2003-11-12 Paul Eggert <eggert@twinsun.com>
95
96 Fix some C compatibility bugs reported by Joerg Schilling.
97
98 * src/common.h (stripped_prefix_len): Fix misspelling
99 "stripped_path_len" in declaration.
100 * src/rmt.c (main): Use "return FOO;" rather than
101 "exit (FOO);"; we no longer have to worry about
102 pre-ANSI hosts that mishandled returned values from "main".
103 * src/tar.c (main): Likewise. This avoids warnings on some
104 compilers.
105 * src/system.c: Include signal.h, for 'kill'.
106 * src/system.h (DEV_BSIZE): Remove.
107 (DEFAULT_ST_BLKSIZE): New macro.
108 (ST_BLKSIZE): Use it, instead of DEV_BSIZE.
109 * src/tar.c (enum): Remove comma just before }.
110
111 2003-11-12 Sergey Poznyakoff <gray@Mirddin.farlep.net>
112
113 * src/list.c (decode_header): Initialize st_atime and
114 st_ctime.
115
116 2003-11-11 Sergey Poznyakoff <gray@Mirddin.farlep.net>
117
118 * configure.ac (tar_save_LIBS): Bugfix. Thanks Adrian
119 Bunk <bunk@fs.tum.de> for reporting.
120 * doc/tar.texi: Fixed spelling. Thanks Martin Buchholz
121 <martin@xemacs.org> for spotting.
122
123 2003-11-04 Paul Eggert <eggert@twinsun.com>
124
125 * src/xheader.c (xhdr_tab): Make it extern, not static, as C89 and
126 C99 require this.
127
128 2003-10-26 Paul Eggert <eggert@twinsun.com>
129
130 * src/system.c (sys_spawn_shell): Cast trailing null to (char *).
131 Bug reported by Christian Weisgerber.
132
133 2003-10-19 Sergey Poznyakoff <gray@Mirddin.farlep.net>
134
135 * AUTHORS: Updated
136 * NEWS: Updated
137 * src/tar.c (decode_options): Removed superfluous archive format
138 check
139 * doc/tar.texi: Documented new features.
140
141 2003-10-08 Sergey Poznyakoff <gray@Mirddin.farlep.net>
142
143 * NEWS: Updated
144 * THANKS: Added Wojciech Polak
145 * configure.ac: Added checks for missing functions. Raised
146 version number to indicate alpha release.
147 * lib/Makefile.am: Added missing headers
148 * lib/waitpid.c: Added missing includes.
149 * src/extract.c: Likewise.
150 * src/names.c: Removed spurious includes.
151 * src/xheader.c: Likewise.
152 * src/system.h [MSDOS]: Fixed spelling of EACCES. Added
153 macro overriding broken mkdir prototypes.
154
155 2003-10-04 Sergey Poznyakoff <gray@Mirddin.farlep.net>
156
157 * configure.ac: Check for dev_t and ino_t.
158 * m4/Makefile.am: Added missing files.
159 * src/system.c: New file.
160 * src/Makefile.am: Added system.c
161 * src/common.h: Prototypes for functions from system.c
162 * src/system.h (SET_BINARY_MODE, ERRNO_IS_EACCESS): New defines
163 * src/buffer.c: Moved system dependencies to system.c
164 * src/compare.c: Likewise.
165 * src/create.c: Likewise.
166 * src/delete.c: Likewise.
167 * src/extract.c: Likewise.
168 * src/rtapelib.c: Likewise.
169
170 2003-10-04 Sergey Poznyakoff <gray@Mirddin.farlep.net>
171
172 Implemented --occurrence option.
173
174 * NEWS: Updated.
175 * src/tar.c: New option --occurrence.
176 * src/common.h (occurrence_option): New global
177 (struct name): Changed `found' member to `uintmax_t
178 found_count'.
179 (names_done): Removed
180 (all_names_found): Changed prototype.
181 (ISFOUND,WASFOUND): New macros
182 * src/delete.c (delete_archive_members): Honor --occurrence
183 option.
184 * src/list.c (read_and): Likewise.
185 * src/names.c: Count number of occurrences of each name in the
186 archive.
187 (name_match): Honor --occurrence option.
188 (names_done): Removed
189 (all_names_found,names_notfound): Rewritten.
190
191 2003-10-02 Sergey Poznyakoff <gray@Mirddin.farlep.net>
192
193 * src/tar.c: Removed extra precaution regarding
194 subcommand_option == CAT_SUBCOMMAND
195 * lib/Makefile.am: Updated
196
197 2003-10-02 Sergey Poznyakoff <gray@Mirddin.farlep.net>
198
199 * src/common.h (names_done): New function.
200 * src/names.c: Likewise.
201 * src/list.c (read_and): Use all_names_found() as `while'
202 condition.
203 * src/tar.c: New option --first-copy
204 * NEWS: Updated
205
206 2003-09-24 Paul Eggert <eggert@twinsun.com>
207
208 * src/rmt.c (main): Don't translate Copyright string; international
209 law says the word "Copyright" should be in English.
210 * src/tar.c (decode_options): Likewise.
211
212 2003-09-22 Paul Eggert <eggert@twinsun.com>
213
214 * doc/tar.texi (extracting untrusted archives): New section.
215
216 * src/common.h (stripped_path_len): Renamed from cut_path_elements.
217 Return size_t, not pointer, so that we don't have to worry about
218 violating the C standard by converting char const * to char *.
219 All callers changed.
220 * src/names.c (stripped_path_len): Likewise. Strip file system
221 prefix, too. Count adjacent slashes as if they were one slash;
222 that is the POSIX standard.
223
224 2003-09-17 Paul Eggert <eggert@twinsun.com>
225
226 * README-alpha: Document maintainer tool assumptions a bit. GNU
227 'sed' is no longer required. For GNU m4 1.4, suggest the patch in
228 Debian bug 211447. Fix minor misspellings/whitespace nits.
229
230 * configure.ac (AC_AIX, AC_MINIX): Remove; subsumed by
231 gl_USE_SYSTEM_EXTENSIONS.
232
233 * lib/.cvsignore: Add exit.h, time_r.c, time_r.h.
234 * m4/.cvsignore: Add restrict.m4, time_r.m4.
235
236 2003-09-17 Paul Eggert <eggert@twinsun.com>
237
238 * bootstrap: Don't use "for option; do";
239 Solaris 8 /bin/sh doesn't like that.
240
241 2003-09-17 Sergey Poznyakoff <gray@Mirddin.farlep.net>
242
243 * README-alpha: Updated
244 * bootstrap: Updated
245
246 2003-09-17 Sergey Poznyakoff <gray@Mirddin.farlep.net>
247
248 * README-alpha: Updated
249 * bootstrap: Updated
250 * po/POTFILES.in: Added src/xheader.c
251 * src/common.h (cut_path_elements): Added proto.
252
253 2003-09-05 Sergey Poznyakoff <gray@Mirddin.farlep.net>
254
255 * src/buffer.c: Use ngettext where appropriate.
256 * src/compare.c: Likewise.
257 * src/create.c: Likewise.
258 * src/misc.c: Likewise.
259 * src/tar.c: Likewise.
260 * src/update.c: Likewise.
261
262 2003-09-04 Sergey Poznyakoff <gray@Mirddin.farlep.net>
263
264 * .cvsignore: Added *.shar.gz
265 * NEWS: Updated
266 * TODO: Updated
267 * src/common.h (strip_path_elements): New variable.
268 * src/extract.c (extract_archive): Implemented --strip-path
269 * src/names.c (cut_path_elements): New functon.
270 * src/tar.c: New option --strip-path=NUM.
271 (decode_options) Assign boolean values to bool variables.
272
273 2003-09-04 Sergey Poznyakoff <gray@Mirddin.farlep.net>
274
275 * src/delete.c: Fixed deletion from the POSIX archives.
276 * src/list.c (read_header): Minor change.
277 * src/tar.c (main): Do not check for volume_label_option
278 if subcommand_option is not CREATE_SUBCOMMAND.
279 * src/xheader.c (xheader_decode): Store the header as
280 well (for eventual delete).
281
282 * tests/incremen.sh: Explicitly request GNU format. This will
283 disappear when GNU extended header keywords are working.
284 * tests/multiv01.sh: Likewise
285 * tests/volume.sh: Likewise
286
287 2003-09-04 Sergey Poznyakoff <gray@Mirddin.farlep.net>
288
289 * src/create.c: Support for "linkpath" extended keyword.
290 * src/xheader.c (decode_record): Reversed the return
291 condition.
292
293 2003-09-03 Sergey Poznyakoff <gray@Mirddin.farlep.net>
294
295 * configure.ac: Allow to redefine the default output format.
296 * src/tar.c: Use DEFAULT_ARCHIVE_FORMAT macro
297 (archive_format_string): New function.
298 (usage): Updated help output.
299 * README: Updated.
300 * NEWS: Updated.
301 * TODO: Updated.
302
303 2003-09-02 Paul Eggert <eggert@twinsun.com>
304
305 * src/common.h (destroy_stat, xheader_decode, xheader_store,
306 xheader_read, xheader_finish, xheader_destroy): Add decls;
307 C99 requires this.
308
309 * src/create.c (write_extended): Remove unused local 'bufsize'.
310
311 * src/delete.c (delete_archive_members): Handle case of
312 HEADER_SUCCESS_EXTENDED followed by HEADER_FAILURE.
313 * src/list.c (read_and): Abort if HEADER_SUCCESS_EXTENDED
314 occurs, as it's not possible.
315 * src/update.c (update_archive): Likewise.
316
317 Use "const" when possible in new code.
318 * src/tar.c (struct fmttab.name): Now char const *. All uses changed.
319 (fmttab): Now const. All uses changed.
320 * src/xheader.c (struct xhdr_tab.keyword): Now pointer to const.
321 (struct xhdr_tab.coder, struct xhdr_tab.decoder, locate_handler,
322 decode_record, xheader_store, xheader_print, code_string, code_time,
323 code_num, dummy_coder, dummy_decoder, atime_coder, atime_decoder,
324 gid_coder, gid_decoder, gname_coder, gname_decoder, linkpath_coder,
325 linkpath_decoder, ctime_coder, ctime_decoder, mtime_coder,
326 mtime_decoder, path_coder, path_decoder, size_coder, size_decoder,
327 uid_coder, uid_decoder, uname_coder, uname_decoder):
328 Use pointers to const when possible.
329 (xhdr_tab): Now const.
330
331 * src/tar.c (fmttab): Avoid GCC warning by not eliding initializers.
332 (set_archive_format): Report an error if no format name matches,
333 instead of returning an undefined value.
334
335 * src/xheader.c (struct xhdr_tab.decoder, dummy_decoder,
336 atime_decoder, gid_decoder, gname_decoder, linkpath_decoder,
337 ctime_decoder, mtime_decoder, path_decoder, size_decoder,
338 uid_decoder, uname_decoder): Remove unused keyword arg.
339 All uses changed.
340
341 * src/tar.c (set_archive_format): Now static.
342 * src/xheader.c (xhdr_tab, format_uintmax): Now static.
343
344 * src/xheader.c (dummy_coder, dummy_decoder, atime_coder,
345 atime_decoder, gid_coder, gid_decoder, gname_coder, gname_decoder,
346 linkpath_coder, linkpath_decoder, mtime_coder, mtime_decoder,
347 ctime_coder, ctime_decoder, path_coder, path_decoder, size_coder,
348 size_decoder, uid_coder, uid_decoder, uname_coder, uname_decoder):
349 Remove forward decls; no longer needed.
350 (xhdr_tab): Move to end, so that the forward decls aren't needed.
351 Add a forward declaration.
352
353 Use 'bool' in new code, when appropriate.
354 * src/xheader.c (decode_record): Return bool, not int.
355 * src/common.h (read_header): Since it accepts bool, change
356 all callers to use false and true rather than 0 and 1.
357
358 * src/xheader.c (decode_record): Fix misspelling in diagnostic
359 "extended headed" -> "extended header".
360
361 GNU coding style fixes.
362 * src/xheader.c (decode_record, xheader_decode):
363 Do not use decls like "char *p, *q;".
364
365 Minor style fixes.
366 (xheader_store): Avoid parentheses around object operand of sizeof.
367
368 2003-09-03 Sergey Poznyakoff <gray@Mirddin.farlep.net>
369
370 * src/create.c (start_header): Store long file names
371 in "path" keyword of an extended header if in POSIX
372 mode.
373 (finish_header): print header before calling write_extended().
374 * src/list.c (list_archive): Always decode the header. This
375 is necessary so the extended header is processed and the correct
376 filename is printed no matter what the state of verbose_option.
377 * src/xheader.c (xhdr_tab): Reserved GNU keywords (commented out
378 for the time being).
379
380 2003-09-01 Paul Eggert <eggert@twinsun.com>
381
382 Update from gnulib, and correct fnmatch to fnmatch-gnu.
383 * bootstrap (gnulib_modules): Change fnmatch to fnmatch-gnu.
384 Sort.
385 * configure.ac (gl_USE_SYSTEM_EXTENSIONS): Use this instead
386 of AC_GNU_SOURCE.
387 * lib/.cvsignore: Add alloca.h, stdbool.h. Sort. Append newline.
388 * lib/Makefile.am (lib_OBJECTS): New macro, for convenience when
389 copying rules from gnulib module descriptions.
390 (BUILT_SOURCES, EXTRA_DIST, all-local, alloca.h):
391 Update from gnulib modules alloca, fnmatch, getline, stdbool.
392 * m4/.cvsignore: Add utimes-null.m4. Sort.
393
394 2003-09-01 Sergey Poznyakoff
395
396 Added initial support for creating POSIX headers.
397
398 * src/common.h (MAXOCTAL11,MAXOCTAL7): New defines
399 (string_to_chars): New functions
400 (struct xheader): Changed structure
401 (gid_to_gname,gname_to_gid,uid_to_uname,uname_to_uid): Changed
402 prototypes.
403 * src/create.c (string_to_chars): New function.
404 (write_extended): New function
405 (start_header): Create extended POSIX headers if necessary.
406 (finish_header): Likewise.
407 * src/list.c (print_header): Take user/group from
408 current_stat_info.
409 * src/names.c (gid_to_gname,gname_to_gid)
410 (uid_to_uname,uname_to_uid): Changed prototypes.
411 * src/tar.c: New option --format.
412 * src/tar.h (OLDGNU_COMPATIBILITY): Removed
413 (struct extra_header): Removed unused structure.
414 (union block.extra_header): Removed unused member.
415 * src/xheader.c: Implemented coder functions.
416 * bootstrap: Added obstack.
417 * lib/.cvsignore: Likewise.
418 * configure.ac: Added 'gl_OBSTACK'
419 * m4/Makefile.am: Added new files.
420 * m4/.cvsignore: Likewise.
421 * TODO: Minor formatting change
422
423 2003-08-31 Sergey Poznyakoff
424
425 Added initial support for POSIX extended and STAR headers
426 (only for listing/extracting).
427
428 * src/xheader.c: New file.
429 * src/Makefile.am: Added xheader.c
430 * src/tar.h (struct star_header): New datatype
431 (XHDTYPE,XGLTYPE): New defines
432 (enum archive_format:STAR_FORMAT): New member
433 (struct tar_stat_info): New datatype.
434 (union block.star_header): New member.
435 * src/common.h (orig_file_name,current_file_name)
436 (current_trailing_slash,current_link_name): Removed variables.
437 (current_stat_info): New variable
438 (current_stat): Removed
439 (extended_header): New variable
440 (decode_header): Changed prototype.
441 * src/list.c (decode_header): Added initial support for POSIX extended
442 and STAR headers.
443 (skip_member): Check oldgnu_header only if current_format is set
444 to OLDGNU_FORMAT.
445 * src/buffer.c: Use current_stat_info
446 * src/compare.c: Likewise.
447 * src/create.c: Likewise.
448 * src/delete.c: Likewise.
449 * src/incremen.c: Likewise.
450 * src/mangle.c: Likewise.
451 * src/update.c: Likewise.
452 * src/extract.c: Likewise.
453 (make_directories): Improved check for the existence of the directory
454 * src/tar.c (destroy_stat): New function.
455
456 2003-08-29 Paul Eggert <eggert@twinsun.com>
457
458 * NEWS, bootstrap: Drop en_GB locale; it was more trouble than it
459 was worth (e.g., different users in en_GB disagree about -ize
460 versus -ise).
461 * po/en_GB.po: Remove.
462
463 2003-07-28 Sergey Poznyakoff <gray@Mirddin.farlep.net>
464
465 * TODO: Updated
466 * NEWS: Updated
467 * src/tar.c: Removed support for the obsolete command line
468 options.
469 * doc/tar.texi: Removed references to the obsolete command
470 line options.
471
472 2003-07-27 Sergey Poznyakoff <gray@Mirddin.farlep.net>
473
474 * TODO: Updated
475 * NEWS: Updated
476 * doc/tar.texi: Updated
477 * src/common.h (check_links_option): New variable
478 (orig_file_name): New variable
479 (check_links): New proto.
480 * src/create.c (struct link.nlink): New member
481 (link_table): Static for the module.
482 (dump_file): Update `link' member when adding new links
483 to the link_table.
484 (check_links): New function.
485 * src/list.c (print_header): Use orig_file_name.
486 * src/tar.c: New option --check-links. Changed semantics of
487 -o to comply to UNIX98 when extracting and to its previous
488 semantics otherwise.
489 (main): Call check_links if --check-links. was given.
490
491 2003-07-25 Sergey Poznyakoff <gray@Mirddin.farlep.net>
492
493 * src/list.c (print_header): Revised
494 * NEWS: Started the entry for 1.13.26
495 * doc/Makefile.am (tar.dvi): Fixed TEXINPUTS value.
496
497 2003-07-24 Sergey Poznyakoff <gray@Mirddin.farlep.net>
498
499 * .cvsignore: Added to the repository.
500 * doc/.cvsignore: Likewise.
501 * lib/.cvsignore: Likewise.
502 * m4/.cvsignore: Likewise.
503 * po/.cvsignore: Likewise.
504 * scripts/.cvsignore: Likewise.
505 * src/.cvsignore: Likewise.
506 * tests/.cvsignore: Likewise.
507
508 * lib/Makefile.am: Added exitfail.[hc]
509 * src/misc.c (chdir_do): Fixed call to restore_cwd
510 * src/buffer.c (flush_read): Fixed behavior on short
511 reads right after opening the new archive (multiv01.sh test).
512 (new_volume): Special handling for "-".
513 * src/list.c (print_header): Print trailing slash if
514 current_trailing_slash was set (extrac03.sh,extrac04.sh tests).
515 * tests/multiv01.sh: Minor changes.
516 * m4/Makefile.am: Added missing files.
517
518 2003-07-05 Paul Eggert <eggert@twinsun.com>
519
520 Finish the checkin begin yesterday.
521
522 * NEWS: Document the user-visible changes installed in the last
523 two days.
524
525 * TODO: New file (actually, resurrected; but with new contents).
526
527 * src/list.c (read_and): Give full type for procedure arg.
528 (read_header): Strip trailing slashes, setting current_trailing_slash.
529 (tartime): Avoid int overflow when printing year (!).
530 (print_header): New arg specifying block ordinal. All uses changed.
531 Print link as 'h' type. Give labels for long links and names.
532
533 * src/misc.c (contains_dot_dot): Moved to names.c
534 (must_be_dot_or_slash): New function.
535 (safer_rmdir): Use it.
536 (remove_any_file): Now takes enum as option, not boolean.
537 Check for (Linux) EISDIR as well as (POSIX) EPERM when attempting
538 to unlink a directory.
539 (deref_stat): Accept bool, not int.
540
541 * src/names.c (namelist_match): Allow partial matches only if
542 recursive.
543 (hash_string_hasher): Renamed from hash_avoided_name.
544 (hash_string_compare): Renamed from compare_avoided_anames.
545 (hash_string_insert, hash_string_lookup): New functions.
546 (add_avoided_name, is_avoided_name): Use them.
547 (safer_name_suffix): New function.
548 (contains_dot_dot): Moved here from misc.c. Now returns bool, not int.
549
550 * src/rmt.c: Don't include print-copyr.h.
551 (prepare_input_buffer): New arg FD.
552 Do not read more than INT_MAX bytes at once,
553 since it breaks on some brain damaged Tru64 hosts.
554 Divide size by two
555 when retrying instead of subtracting 1024; for speed.
556 (main): Use gettext to translate (C), not print_copyright.
557
558 * src/system.h: Include <alloca.h> and <stdbool.h> unconditionally,
559 now that gnulib handles this.
560 Include <stddef.h> and <limits.h> unconditionally, now that we assume
561 C89 or better.
562 Assume that offsetof is defined in stddef.h.
563 Do not include <sys/param.h>.
564 (realloc, lseek): Do not declare.
565 (HAVE_DECL_VALLOC): Renamed from HAVE_VALLOC.
566 (CHAR_BIT, CHAR_MAX, UCHAR_MAX, LONG_MAX): Remove
567 declarations, since we now assume C89 or better.
568 (PARAMS): Remove, as we now assume C89. All uses changed.
569 (bindtextdomain, textdomain): Include <gettext.h> to define.
570 Include <unlocked-io.h>.
571 (valloc): Define if not defined, and if valloc is not declared.
572 (xstrdup): Remove decl.
573
574 * src/tar.c: Do not include <print-copyr.h>.
575 Include <getdate.h>.
576 (get_date): Remove decl.
577 (ATIME_PRESERVE_OPTION, CHECKPOINT_OPTION, FORCE_LOCAL_OPTION,
578 IGNORE_FAILED_READ_OPTION, INDEX_FILE_OPTION, NO_OVERWRITE_DIR_OPTION,
579 NUMERIC_OWNER_OPTION, RECURSIVE_UNLINK_OPTION, REMOVE_FILES_OPTION,
580 SHOW_OMITTED_DIRS_OPTION, TOTALS_OPTION): New constants.
581 (long_options, decode_options): Use them.
582 (OVERWRITE_DIR_OPTION): Remove.
583 (long_options): New options --index-file, --no-overwrite-dir.
584 Remove --overwrite-dir option.
585 (usage): Use PACKAGE_BUGREPORT.
586 (decode_options): Terminate new argv properly.
587 Use PACKAGE_NAME, PACKAGE_VERSION.
588 If verbose, report how we grokked any textual date option.
589 (main): Add support for index-file.
590
591 * tests/Makefile.am: Convert to UTF-8.
592 (AUTOMAKE_OPTIONS): Remove.
593 (TESTS): Add delete04.sh, multiv01.sh, options.sh.
594 (INCLUDES): Remove ../intl.
595 (LDADD): Don't link libtar.a twice.
596
597 * tests/genfile.c: Convert to UTF-8.
598 Don't include <print-copyr.h>.
599 (DEFAULT_PATTERN): Renamed from DEFAULT.
600 (ZEROS_PATTERN): Renamed from ZEROS.
601 (main): Use gettext to translate (C), not print_copyright.
602
603 2003-07-04 Paul Eggert <eggert@twinsun.com>
604
605 Revamp to meet current standards of autoconf, automake,
606 gettext, and gnulib, and incorporate new translations.
607
608 * config/config.guess, config/config.sub, config/depcomp,
609 config/install-sh, config/mdate-sh, config/missing,
610 config/mkinstalldirs, config/texinfo.texi:
611 Moved here from parent directory, or from doc.
612 * config.hin: Renamed from config.h.in.
613 * config/config.rpath: New file.
614
615 * intl: Remove this subdirectory.
616
617 * lib/fnmatch_.h: Renamed from lib/fnmatch.hin.
618
619 * lib/getstr.c, lib/getstr.h, lib/msleep.c, lib/print-copyr.c,
620 lib/print-copyr.h, lib/readutmp.c, lib/rename.c, lib/stpcpy.c,
621 lib/strstr.c, lib/strtoimax.c, lib/strtoll.c, lib/strtoull.c,
622 lib/strtoumax.c, lib/unicodeio.c, lib/unicodeio.h,
623 lib/xstrtoimax.c, m4/c-bs-a.m4, m4/ccstdc.m4, m4/check-decl.m4,
624 m4/decl.m4, m4/jm-mktime.m4, m4/prereq.m4, m4/xstrtoimax.m4,
625 stamp-h.in: Remove.
626
627 * lib/alloca_.h, lib/fnmatch_loop.c, lib/gettext.h, lib/pathmax.h,
628 lib/safe-write.c, lib/safe-write.h, lib/stdbool_.h, lib/strcase.h,
629 lib/stripslash.c, lib/unlocked-io.h, lib/xgetcwd.h, m4/alloca.m4,
630 m4/backupfile.m4, m4/bison.m4, m4/chown.m4, m4/dirname.m4,
631 m4/dos.m4, m4/exclude.m4, m4/fileblocks.m4, m4/ftruncate.m4,
632 m4/getdate.m4, m4/getopt.m4, m4/hash.m4, m4/human.m4,
633 m4/intdiv0.m4, m4/intmax_t.m4, m4/inttypes-pri.m4,
634 m4/inttypes_h.m4, m4/isc-posix.m4, m4/lchown.m4, m4/lib-ld.m4,
635 m4/lib-link.m4, m4/lib-prefix.m4, m4/memset.m4, m4/mktime.m4,
636 m4/modechange.m4, m4/nls.m4, m4/onceonly.m4, m4/pathmax.m4,
637 m4/po.m4, m4/quote.m4, m4/quotearg.m4, m4/rmdir.m4,
638 m4/safe-read.m4, m4/safe-write.m4, m4/save-cwd.m4, m4/savedir.m4,
639 m4/ssize_t.m4, m4/stdbool.m4, m4/stdint_h.m4, m4/strcase.m4,
640 m4/strtoimax.m4, m4/strtol.m4, m4/strtoll.m4, m4/strtoul.m4,
641 m4/strtoull.m4, m4/strtoumax.m4, m4/tm_gmtoff.m4, m4/uintmax_t.m4,
642 m4/unlocked-io.m4, m4/xalloc.m4, m4/xgetcwd.m4, m4/xstrtol.m4,
643 po/LINGUAS, po/Makevars, po/Rules-quot, po/boldquot.sed,
644 po/en@boldquot.header, po/en@quot.header, po/en_GB.po,
645 po/insert-header.sin, po/remove-potcdate.sin, po/stamp-po: New files.
646
647 * ABOUT-NLS, INSTALL, lib/addext.c, lib/alloca.c, lib/argmatch.c,
648 lib/argmatch.h, lib/backupfile.c, lib/backupfile.h, lib/dirname.c,
649 lib/dirname.h, lib/error.c, lib/exclude.c, lib/exclude.h,
650 lib/fnmatch.h, lib/full-write.c, lib/full-write.h, lib/getdate.h,
651 lib/getdate.y, lib/getline.c, lib/getline.h, lib/getopt.c,
652 lib/getopt.h, lib/getopt1.c, lib/hash.c, lib/hash.h, lib/human.c,
653 lib/human.h, lib/lchown.c, lib/malloc.c, lib/mktime.c,
654 lib/modechange.c, lib/modechange.h, lib/quote.c, lib/quote.h,
655 lib/quotearg.c, lib/quotearg.h, lib/realloc.c, lib/safe-read.c,
656 lib/safe-read.h, lib/save-cwd.c, lib/save-cwd.h, lib/savedir.c,
657 lib/savedir.h, lib/strcasecmp.c, lib/utime.c, lib/xalloc.h,
658 lib/xgetcwd.c, lib/xmalloc.c, lib/xstrdup.c, lib/xstrtol.c,
659 lib/xstrtol.h, lib/xstrtoumax.c, m4/codeset.m4, m4/d-ino.m4,
660 m4/error.m4, m4/fnmatch.m4, m4/getcwd.m4, m4/getline.m4, m4/gettext.m4,
661 m4/glibc21.m4, m4/iconv.m4, m4/inttypes.m4, m4/lcmessage.m4,
662 m4/longlong.m4, m4/malloc.m4, m4/mbrtowc.m4, m4/mbstate_t.m4,
663 m4/progtest.m4, m4/realloc.m4, m4/strerror_r.m4, m4/ulonglong.m4,
664 m4/utimbuf.m4, m4/utime.m4, m4/utimes.m4, m4/xstrtoumax.m4,
665 po/Makefile.in.in:
666 Upgrade to latest version from external source. The file "bootstrap"
667 now grabs these automatically, so we needn't keep track of them
668 in this change long any longer.
669
670 * Makefile.am (AUTOMAKE_OPTIONS): Remove. Now done by configure.ac.
671 (SUBDIRS): Remove intl.
672 * PORTS: Update for star, Macintosh.
673 * README, README-alpha: Suggest Autoconf 2.57, Automake 1.7.5,
674 Bison 1.875, gettext 0.12.1.
675 * THANKS: Add Bernhard Rosenkraenzer, Solar Designer.
676 * configure.ac (AC_INIT, AM_INIT_AUTOMAKE): Convert to modern form.
677 (AC_CONFIG_AUX_DIR): New.
678 (AC_CONFIG_HEADERS): Rename config.h.in to config.hin, to be more
679 like coreutils.
680 (AC_PREREQ): Bump from 2.52 to 2.57.
681 (AC_GNU_SOURCE): New.
682 (AC_PROG_GCC_TRADITIONAL, AM_C_PROTOTYPES, AC_C_CONST): Remove;
683 we no longer support K&R C.
684 (YACC): Remove.
685 (AC_CHECK_HEADERS): Remove limits.h, poll.h, stdbool.h, stropts.h,
686 sys/ioccom.h, sys/param.h, sys/time.h, sys/timeb.h, wchar.h, wctype.h.
687 (AC_MBSTATE_T): Remove.
688 (HAVE_UTIME_H, HAVE_DECL_FREE, HAVE_DECL_GETGRGID, HAVE_DECL_GETPWUID,
689 HAVE_DECL_GETENV, HAVE_DECL_MALLOC, HAVE_DECL_STRTOUL,
690 HAVE_DECL_STRTOULL, HAVE_MKNOD): Remove our special code.
691 (AM_STDBOOL_H): Add.
692 (AC_HEADER_TIME, AC_STRUCT_TIMEZONE,
693 jm_CHECK_TYPE_STRUCT_DIRENT_D_INO): Remove.
694 (AC_CHECK_TYPE): Remove ssize_t.
695 (gt_TYPE_SSIZE_T): Add.
696 (jm_AC_PREREQ_XSTRTOUMAX, jm_PREREQ_ADDEXT, jm_PREREQ_ERROR,
697 jm_PREREQ_HUMAN, jm_PREREQ_QUOTEARG, jm_PREREQ_XGETCWD,
698 AC_FUNC_ALLOCA, AC_FUNC_CLOSEDIR_VOID, AC_FUNC_STRERROR_R,
699 AC_FUNC_FNMATCH, AC_FUNC_VPRINTF, AM_FUNC_GETLINE, jm_FUNC_MALLOC,
700 jm_FUNC_MKTIME, jm_FUNC_REALLOC):
701 Remove. Switch to gnulib macros like gl_BACKUPFILE instead.
702 (tar_LDADD): Rename to LIB_CLOCK_GETTIME. All uses changed.
703 (rmt_LDADD): Rename to LIB_SETSOCKOPT. All uses changed.
704 (AC_CHECK_FUNCS): Remove fchdir, ftime, getcwd, isascii, nap,
705 napms, poll, select, strstr, usleep.
706 (AC_REPLACE_FUNCS): Remove ftruncate, lchown, memset, rename,
707 rmdir, strcasecmp, strncasecmp, strtol, strtoul.
708 (AM_GNU_GETTEXT): Use external and need-ngettext options.
709 (AM_GNU_GETTEXT_VERSION): New.
710 (AC_OUTPUT): Remove intl/Makefile.
711
712 * doc/Makefile.am (AUTOMAKE_OPTIONS): Remove.
713 ($(srcdir)/tar.info, tar.dvi): Remove obsolete warnings.
714 * doc/fdl.texi: Update to current GNU version.
715 * doc/gettext.texi: Update to current coreutils version,
716 plus a copyright notice.
717 * doc/tar.texi: Switch to new method for doing copyright notices.
718 Use @acronym instead of @sc where appropriate.
719 Remove empty examples. Give a few more examples.
720
721 * lib/Makefile.am (AUTOMAKE_OPTIONS): Remove.
722 (EXTRA_DIST, libtar_a_SOURCES): Switch to gnulib, so that they
723 are built up in pieces with +=.
724 (noinst_HEADERS, INCLUDES): Remove.
725 (BUILT_SOURCES, MAINTAINERCLEANFILES, MOSTLYCLEANFILES): New.
726 (libtar_a_LIBADD): Use $ rather than @.
727 (all-local, alloca.h, fnmatch.h, stdbool.h): New rules, from gnulib.
728
729 * m4/Makefile.am (EXTRA_DIST): Add alloca.m4, backupfile.m4,
730 bison.m4, chown.m4, dirname.m4, dos.m4, exclude.m4, fileblocks.m4,
731 ftruncate.m4, getdate.m4, getopt.m4, hash.m4, human.m4,
732 intdiv0.m4, intmax_t.m4, inttypes_h.m4, inttypes-pri.m4,
733 isc-posix.m4, lcown.m4, lib-ld.m4, lib-link.m4, lib-prefix.m4,
734 memset.m4, mktime.m4, modechange.m4, nls.m4, onceonly.m4,
735 pathmax.m4, po.m4, quotearg.m4, quote.m4, rmdir.m4, safe-read.m4,
736 safe-write.m4, save-cwd.m4, savedir.m4, ssize_t.m4, stdbool.m4,
737 stdint_h.m4, strcase.m4, strtoimax.m4, strtoll.m4, strtol.m4,
738 strtoull.m4, strtoul.m4, strtoumax.m4, tm_gmtoff.m4, uintmax_t.m4,
739 unlocked-io.m4, xalloc.m4, xgetcwd.m4, xstrtol.m4.
740 Remove c-bs-a.m4, ccstdc.m4, check-decl.m4, decl.m4, jm-mktime.m4,
741 prereq.m4, xstrtoimax.m4.
742
743 * po/POTFILES.in: Remove tests/genfile.c; it doesn't need to
744 be translated, since it's not a user-visible tool.
745
746 * scripts/Makefile.am (AUTOMAKE_OPTIONS): Remove.
747
748 * src/Makefile.am (AUTOMAKE_OPTIONS): Remove.
749 (INCLUDES): Remove ../intl. Put top-srcdir before ., for
750 consistency with coreutils.
751 (LDADD): Link LIBINTL after libtar.a, since
752 it's now external and should stand by itself.
753
754 * src/buffer.c (print_total_written): Adjust to new human.h
755 interface.
756 (child_open_for_compress): Do not increase size to BLOCKSIZE.
757 (open_archive): Open index file name.
758 Strip trailing slahes from file names.
759 (flush_write): Set size to 0 if not saving names.
760 (flush_write, flush_read): Use safer_name_suffix rather than
761 inline code.
762
763 * src/common.h: Include <quote.h>.
764 (absolute_names_option, atime_preserve_option, backup_option,
765 block_number_option, checkpoint_option, dereference_option,
766 force_local_option, ignore_failed_read_option, ignore_zeros_option,
767 incremental_option, interactive_option, multi_volume_option,
768 numeric_owner_option, one_file_system_option, recursive_unlink_option,
769 read_full_records_option, remove_files_option, same_order_option,
770 show_omitted_dirs_option, sparse_option, starting_file_option,
771 to_stdout_option, totals_option, touch_option, verify_option,
772 dev_null_output, now_verifying, we_are_root): Now bool, not int.
773 (current_trailing_slash, index_file_name, recent_long_name_blocks,
774 recent_long_link_blocks): New vars.
775 (NO_OVERWRITE_DIR_OLD_FILES): New constant.
776 (OVERWRITE_OLD_DIRS): Remove.
777 (enum remove_option): New enum.
778 (remove_any_file): Use it as option arg, not int.
779 (is_avoided_name, contains_dot_dot): Return bool, not int.
780 (safer_name_suffix): New decl.
781
782 * src/compare.c (now_verifying): Now bool, not int.
783 (fill_in_sparse_array): Move to extract.c. Now returns bool;
784 all callers changed to test for failure.
785 (diff_sparse_files): Take size from current_stat, not from param.
786 (diff_archive): Do not count trailing slashes in archives.
787 (verify_volume): Test for header failure after loop, not before.
788
789 * src/create.c (relativize): Remove; replaced by safer_name_suffix.
790 All callers changed.
791 (start_header): Clear devmajor and devminor fields, too.
792 (finish_header): New arg block_ordinal.
793 (init_sparsearray): Now extern. Set sp_array_size to
794 SPARSES_IN_OLDGNU_HEADER if it is zero.
795 (dump_file): Keep link table as a hash.
796 Do not count "file changed as we read it" as a failure.
797
798 * src/delete.c (recent_long_name_blocks, recent_long_link_blocks):
799 Move extern decl to common.h.
800
801 * src/extract.c (we_are_root): Now bool, not int.
802 (check_time): Warn about implausibly old time stamps.
803 (set_stat): Use utimbuf, not stat_info.
804 (prepare_to_extract): New arg DIRECTORY.
805 (fill_in_sparse_array): Moved here from compare.c.
806 (extract_sparse_file): Now returns off_t, giving size left.
807 Truncate file at end.
808 (extract_archive): Use safer_name_suffix rather than rolling our own.
809 Use fill_in_sparse_array rather than rolling our own.
810 Strip trailing slashes more effectively.
811 Check for unsafe names.
812
813 * src/incremen.c (struct directory): nfs and found are now of type
814 bool, not int.
815 (gnu_restore): Now takes directory name as argument, not offset
816 of directory name in a global. All uses changed.
817 (CURRENT_FILE_NAME): Remove.
818
819 New tests.
820 * tests/delete04.sh, tests/multiv01.sh, tests/options.sh: New
821 files.
822
823 2002-09-30 Paul Eggert <eggert@twinsun.com>
824
825 * src/rmt.c (prepare_input_buffer): Renamed form
826 prepare_record_buffer. All uses changed. Do not assume that
827 size_t is the same width as int.
828
829 2002-03-29 Paul Eggert <eggert@twinsun.com>
830
831 * src/incremen.c (get_directory_contents):
832 If ignore_failed_read_option, only warn about
833 get_directory_contents failures. Fix suggested by
834 Mark Costlow.
835
836 2002-01-31 Mark W. Eichin <eichin@thok.org>
837
838 * src/buffer.c (child_open_for_compress): Don't try to read
839 past the end of the buffer.
840
841 2001-10-11 Jim Meyering <meyering@lucent.com>
842
843 * argmatch.c (argmatch_invalid): Use quotearg_n_style (0, ...
844 and quote_n (1, ... to avoid clobbering a buffer.
845
846 2001-09-26 Paul Eggert <eggert@twinsun.com>
847
848 * NEWS, configure.ac (AM_INIT_AUTOMAKE): Version 1.13.25.
849
850 * src/buffer.c (flush_read): Don't diagnose partial blocks before
851 end of file; just ignore them silently.
852
853 * src/list.c (read_header): Don't keep around extended name
854 and link info indefinitely; keep it only for the next file.
855 This fixes a bug introduced in 1.13.24, and removes the need
856 for some static variables. Set recent_long_name and
857 recent_long_link to zero if there were no long links; this
858 avoids a violation of ANSI C rules for pointers in delete.c.
859 * THANKS: Add Christian Laubscher.
860
861 2001-09-26 Jim Meyering <meyering@lucent.com>
862
863 * doc/tar.texi (Remote Tape Server): is know -> is known
864
865 2001-09-25 Paul Eggert <eggert@twinsun.com>
866
867 * lib/unicodeio.c (EILSEQ): Include <iconv.h> first, since
868 <iconv.h> may define EILSEQ (e.g. libiconv). Define a
869 replacement EILSEQ to be ENOENT, not EINVAL, since callers may
870 want to distinguish EINVAL and EILSEQ.
871
872 2001-09-24 Christophe Kalt <Christophe.Kalt@kbcfp.com>
873
874 * src/extract.c (maybe_recoverable):
875 Treat OVERWRITE_OLD_DIRS like DEFAULT_OLD_FILES.
876
877 2001-09-22 Paul Eggert <eggert@twinsun.com>
878
879 * NEWS, configure.ac (AM_INIT_AUTOMAKE): Version 1.13.24.
880
881 * ABOUT-NLS, intl/*: Update to gettext-0.10.40, replacing LGPL
882 with GPL.
883
884 * INSTALL, mkinstalldirs: Update to autoconf 2.52 version.
885 * PORTS: Add copyright notice, 'star' reference.
886 * README-alpha: Add copyright notice, autoconf 2.52 patch.
887 * THANKS: Add Christophe Kalt.
888 * config.sub: Upgrade to 2001-09-14 version.
889
890 * configure.ac (ALL_LINGUAS): Add ko.
891 * po/ko.po: Resurrected file.
892
893 * doc/convtexi.pl: Add coding advice for Emacs.
894
895 * doc/getdate.texi: Add copyright notice.
896
897 * doc/mdate-sh: Upgrade to automake 1.5 version.
898
899 * doc/tar.texi (extracting files): Mention --to-stdout.
900 (Option Summary, Dealing with Old Files): New option --overwrite-dir.
901 (Overwrite Old Files): Likewise.
902
903 * lib/Makefile.am (noinst_HEADERS):
904 Remove copysym.h. Add print-copyr.h, unicodeio.h.
905 (libtar_a_SOURCES): Remove copysym.c, Add print-copyr.c, unicodeio.c.
906
907 * lib/copysym.c, lib/copysym.h: Remove.
908 * lib/print-copyr.c, lib/print-copyr.h, lib/unicodeio.c,
909 lib/unicodeio.h: New files.
910
911 * lib/error.c, lib/getopt.c, lib/getopt.h, lib/getopt1.c,
912 lib/mktime.c, lib/strtoll.c: Switch from LGPL to GPL.
913
914 * lib/quotearg.c (HAVE_MBSINIT): Undef if !HAVE_MBRTOWC.
915 (mbsinit): Define to 1 if !defined mbsinit && !HAVE_MBSINIT.
916
917 * m4/Makefile.am (EXTRA_DIST): Remove isc-posix.m4.
918 * m4/isc-posix.m4: Remove.
919
920 * m4/prereq.m4 (jm_PREREQ_QUOTEARG): Check for mbsinit.
921
922 * po/POTFILES.in: Add copyright notice.
923
924 * src/Makefile.am (LDADD): Like libtar.a before @INTLLIBS@ as
925 well as after.
926 * tests/Makefile.am (LDADD): Likewise.
927
928 * src/buffer.c (write_archive_buffer, close_archive):
929 If an archive is a socket, treat it like a FIFO.
930 (records_read, records_written): New vars.
931 (write_archive_to_stdout): Now bool, not int.
932 (open_archive, flush_write, flush_read): Keep records_read and
933 records_written up to date.
934
935 * src/common.h (enum old_files): New value OVERWRITE_OLD_DIRS.
936 (write_archive_to_stdout): Now bool, not int.
937 (enum read_header): New value HEADER_SUCCESS_EXTENDED.
938 (read_header): Now takes bool arg. Existing callers modified
939 to pass 0, unless otherwise specified.
940
941 * src/delete.c (records_read): Remove; now a global.
942 (acting_as_filter): Now bool, not int.
943 (recent_long_name, recent_long_link, recent_long_name_blocks,
944 recent_long_link_blocks, records_read, records_written): New decls.
945 (records_skipped): New var.
946 (move_archive): Don't divide by zero if arg is 0.
947 Use the above vars to compute how far to move.
948 (write_recent_blocks): New function.
949 (delete_archive_member): Pass 1 to read_header, so that it doesn't
950 read more than 1 block. Handle resulting HEADER_SUCCESS_EXTENDED code.
951 Keep track of how many records have been skipped.
952 Let the buffer code count records.
953 When copying a header, copy any extended headers that came before it.
954
955 * src/extract.c (extract_archive): When marking a directory to be
956 updated after symlinks, stat all directories after it in the
957 delayed-set-stat list too, since they will be checked after
958 symlinks. Add support for --overwrite-dir.
959
960 * src/list.c (recent_long_name, recent_long_link,
961 recent_long_name_blocks, recent_long_link_blocks): New vars.
962 (read_and): Pass 0 to read_header.
963 (read_header): New arg RAW_EXTENDED_HEADERS. Store away extended
964 headers into new vars. Null-terminate incoming symbolic links.
965
966 * src/rmt.c: Include print-copyr.h, not copysym.h.
967 (main): Use print_copyright, not copyright_symbol.
968 * src/tar.c (decode_options): Likewise.
969 (OVERWRITE_DIR_OPTION): New constant.
970 (long_options, usage, decode_options): Add --overwrite-dir.
971
972 * src/tar.h: Put copyright notice into documentation.
973
974 * tests/Makefile.am (TESTS): Add delete03.sh.
975 * tests/delete03.sh: New file.
976
977 * tests/genfile.c: Include print-copyr.h, not copysym.h.
978 (main): Use print_copyright, not copyright_symbol.
979 Include <argmatch.h>.
980 (pattern_strings): Remove.
981 (pattern_args, pattern_types): New constants.
982 (main): Use XARGMATCH, not argmatch.
983
984 2001-09-20 Jim Meyering <meyering@lucent.com>
985
986 * lib/xstrtol.c (strtoimax): Guard declaration with
987 `#if !HAVE_DECL_STRTOIMAX', rather than just `#ifndef strtoimax'.
988 The latter fails because some systems (at least rs6000-ibm-aix4.3.3.0)
989 have their own, conflicting declaration of strtoimax in sys/inttypes.h.
990 (strtoumax): Likewise, for completeness (it wasn't necessary).
991 * m4/xstrtoimax.m4 (jm_AC_PREREQ_XSTRTOIMAX):
992 Check for declaration of strtoimax.
993 * m4/xstrtoumax.m4 (jm_AC_PREREQ_XSTRTOUMAX):
994 Check for declaration of strtoumax.
995
996 2001-09-16 Paul Eggert <eggert@twinsun.com>
997
998 * fnmatch.m4 (jm_FUNC_FNMATCH): Fix typo in previous patch: yes -> no.
999
1000 2001-09-14 Paul Eggert <eggert@twinsun.com>
1001
1002 * NEWS, configure.ac (AC_INIT_AUTOMAKE): Version 1.13.23.
1003
1004 * README-alpha: Describe automake patch.
1005
1006 * configure.ac (LIBOBJS):
1007 Remove automake 1.4 workaround, as we're using 1.5 now.
1008 (USE_INCLUDED_LIBINTL): New AC_DEFINE.
1009
1010 * lib/copysym.c: Include stddef.h, for size_t.
1011 Include langinfo.h if needed.
1012 Use locale_charset only if USE_INCLUDED_LIBINTL;
1013 if not, use nl_langinfo (CODESET) if available.
1014
1015 2001-09-13 Paul Eggert <eggert@twinsun.com>
1016
1017 * config.guess, config.sub: Sync with canonical versions.
1018
1019 * configure.ac (jm_PREREQ_XGETCWD): Add.
1020
1021 * lib/Makefile.am (noinst_HEADERS): Add copysym.h.
1022 (libtar_a_SOURCES): Add copysym.c.
1023 * copysym.c, copysym.h: New files.
1024
1025 * lib/error.c: Sync with fileutils version.
1026
1027 * m4/Makefile.am (EXTRA_DIST): Add getcwd.m4; remove uintmax_t.m4.
1028 * m4/getcwd.m4: New file.
1029 * m4/uintmax_t.m4: Remove.
1030
1031 * m4/gettext.m4 (AM_WITH_NLS):
1032 Fix bug with calculating version of Bison 1.29.
1033 Reported by Karl Berry.
1034
1035 * src/Makefile.am (datadir): Remove.
1036
1037 * src/rmt.c: Include copysym.h.
1038 (main): Use copyright_symbol to translate copyright notice,
1039 instead of gettext.
1040 * src/tar.c: Likewise.
1041 * tests/genfile.c: Likewise.
1042
1043 * src/system.h (MB_LEN_MAX): New symbol.
1044
1045 2001-09-11 Paul Eggert <eggert@twinsun.com>
1046
1047 * src/extract.c (struct delayed_set_stat): New member
1048 'after_symlinks'.
1049 (delay_set_stat): Initialize it to 0.
1050 (set_mode): New arg current_stat_info. Use it (if nonnull) to avoid
1051 taking an extra stat ourselves. All callers changed.
1052 (set_stat): Likewise.
1053 (apply_nonancestor_delayed_set_stat): New arg 'after_symlinks'.
1054 If false, stop when encountering a struct whose 'after_symlinks'
1055 member is true. Otherwise, go through all structures but check
1056 them more carefully. All callers changed.
1057 (extract_archive): When extracting a deferred symlink, if its parent
1058 directory's status needs fixing, then mark the directory as needing
1059 to be fixed after symlinks.
1060 (extract_finish): Fix status of ordinary directories, then apply
1061 delayed symlinks, then fix the status of directories that are
1062 ancestors of delayed symlinks.
1063
1064 * src/rtapelib.c (rexec):
1065 Remove declaration; it ran afoul of prototypes on Crays.
1066 Reported by Wendy Palm of Cray.
1067
1068 2001-09-06 Paul Eggert <eggert@twinsun.com>
1069
1070 * lib/strtoimax.c (HAVE_LONG_LONG):
1071 Redefine to HAVE_UNSIGNED_LONG_LONG if unsigned.
1072 (strtoimax): Use sizeof (long), not
1073 sizeof strtol (ptr, endptr, base),
1074 to work around bug in IBM C compiler.
1075
1076 2001-09-04 Paul Eggert <eggert@twinsun.com>
1077
1078 * lib/xgetcwd.c: Include "xalloc.h".
1079 (xgetcwd): Do not return NULL when memory is exhausted; instead,
1080 report an error and exit.
1081
1082 * m4/prereq.m4 (jm_PREREQ_XREADLINK): New macro.
1083 (jm_PREREQ): Use it.
1084
1085 2001-09-03 Paul Eggert <eggert@twinsun.com>
1086
1087 * m4/prereq.m4 (jm_PREREQ): Add jm_PREREQ_XGETCWD.
1088 (jm_PREREQ_XGETCWD): New macro.
1089
1090 * lib/exclude.c (fnmatch_no_wildcards):
1091 Fix typo that caused us to do case-folding
1092 search even when that was not desired. This occurred only in the
1093 no-wildcard case.
1094
1095 * lib/xgetcwd.c: Include pathmax.h if not HAVE_GETCWD.
1096 Do not include xalloc.h.
1097 (INITIAL_BUFFER_SIZE): New symbol.
1098 Do not use xmalloc / xrealloc, since the caller is responsible for
1099 handling errors. Preserve errno around `free' during failure.
1100 Do not overrun buffer when using getwd.
1101
1102 * lib/xgetcwd.c (xgetcwd):
1103 Use HAVE_GETCWD_NULL, not defined __GLIBC__ && __GLIBC__ >= 2,
1104 to decide whether to use getcwd (NULL, 0).
1105
1106 2001-09-02 Paul Eggert <eggert@twinsun.com>
1107
1108 * lib/xgetcwd.c: Fix typo in local var; from Jim Meyering.
1109
1110 2001-09-01 Jim Meyering <meyering@lucent.com>
1111
1112 * exclude.c: Use `""', not `<>' to #include non-system header files.
1113 (fnmatch_no_wildcards): Rewrite not to use function names, strcasecmp
1114 and strncasecmp as r-values. Unixware didn't have declarations.
1115
1116 2001-08-31 Jim Meyering <meyering@lucent.com>
1117
1118 * lib/xgetcwd.c (xgetcwd): Reorganize to avoid some duplication.
1119 Use an initial, malloc'd, buffer of length 128 rather than
1120 a statically allocated one of length 1024.
1121
1122 2001-08-30 Paul Eggert <eggert@twinsun.com>
1123
1124 * lib/utime.c: Include full-write.h.
1125 * lib/xstrtol.c (strtoimax): New decl.
1126
1127 2001-08-29 Paul Eggert <eggert@twinsun.com>
1128
1129 * NEWS, configure.ac (AC_INIT_AUTOMAKE): Version 1.13.22.
1130
1131 * src/create.c (dump_file): Relativize link names before dumping.
1132 This fixes a bug reported by Jose Pedro Oliveira.
1133
1134 * src/create.c (dump_file): Use offsetof when computing sizes for
1135 struct hack; this avoids wasted space in some cases.
1136 * src/incremen.c (note_directory, find_directory): Likewise.
1137 * src/names.c (name_gather, addname): Likewise.
1138
1139 * src/extract.c (extract_archive): Use strcpy, not memcpy,
1140 for consistency with other code that does similar things.
1141 * src/names.c (name_gather): Likewise.
1142
1143 * src/names.c (read_name_from_file, name_next, name_gather,
1144 add_hierarchy_to_namelist): Avoid quadratic behavior when
1145 reallocating buffers. Check for buffer size overflow.
1146 (addname): Avoid unnecessary clearing of memory.
1147
1148 2001-08-29 "Jan D." <Jan.Djarv@mbox200.swipnet.se>
1149
1150 * src/extract.c (delay_set_stat): Fix off-by-one error in file
1151 name size allocation that caused core dumps.
1152
1153 2001-08-28 Paul Eggert <eggert@twinsun.com>
1154
1155 * NEWS, configure.ac (AC_INIT_AUTOMAKE): Version 1.13.21.
1156
1157 * configure.ac (GNU_SOURCE): Define to 1, not /**/.
1158 (major_t, minor_t, ssize_t): Use new-style AC_CHECK_TYPE.
1159 (daddr_t): Remove; no longer used.
1160 (jm_PREREQ_HUMAN): Add.
1161
1162 * acconfig.h: Remove; no longer needed.
1163
1164 * config.guess, config.sub:
1165 New files, from automake 1.5. Gettext 0.10.39 needs them.
1166 * depcomp, missing, mkinstalldirs: Upgrade to automake 1.5.
1167
1168 * Makefile.am (AUTOMAKE_OPTIONS): Add dist-bzip2.
1169 (SUBDIRS): Put intl before lib, as gettext requires.
1170
1171 * ABOUT-NLS: Upgrade to gettext 0.10.39.
1172 * intl: Upgrade entire directory to gettext 0.10.39.
1173 * m4/codeset.m4, m4/glibc21.m4, m4/iconv.m4:
1174 New files, from gettext 0.10.39.
1175 * m4/gettext.m4, m4/isc-posix.m4, m4/lcmessage.m4, m4/progtest.m4,
1176 Upgrade to gettext 0.10.39,
1177 * po/Makefile.in.in: Likewise, except fix a typo in its copying
1178 permissions.
1179 * po/cat-id-tbl.c, po/stamp-cat-id:
1180 Remove; no longer used by gettext 0.10.39.
1181 * po/ChangeLog: New file.
1182
1183 * doc/Makefile.am (EXTRA_DIST): Add freemanuals.texi.
1184 $(srcdir)/tar.texi: Likewise.
1185 * doc/freemanuals.texi: New file.
1186 * doc/tar.texi (Free Software Needs Free Documentation): New appendix.
1187 `fileds' -> `fields'
1188 * doc/texinfo.tex: Upgrade to version 2001-07-25.07.
1189
1190 * lib/Makefile.am (EXTRA_DIST): Add strtoll.c, strtoimax.c.
1191 (noinst_HEADERS): Add quote.h.
1192 (libtar_a_SOURCES): Add quote.c, xstrtoimax.c.
1193
1194 * lib/exclude.c: Fix typo in '#include <stdint.h>' directive.
1195
1196 * lib/full-write.c, lib/savedir.c: Comment fix.
1197
1198 * lib/pathmax.h: Remove.
1199
1200 * lib/quote.c, lib/quote.h: New files.
1201
1202 * lib/xgetcwd.c: Don't include pathmax.h.
1203 Include stdlib.h and unistd.h if available.
1204 Include xalloc.h.
1205 (xmalloc, xstrdup, free): Remove decls.
1206 (xgetcwd): Don't assume sizes fit in unsigned.
1207 Check for overflow when computing sizes.
1208 Simplify reallocation code.
1209
1210 * lib/xmalloc.c: Quote failure tests.
1211
1212 * lib/strtoumax.c, lib/xstrtoimax.c: New files.
1213
1214 * lib/strtoimax.c: Renamed from strtouxmax.c. Make it more
1215 similar to strtol.c.
1216 (UNSIGNED): Renamed from STRTOUXMAX_UNSIGNED.
1217 (verify): New macro.
1218 (strtoumax, uintmax_t, strtoull, strtol): Remove.
1219 (intmax_t, strtoimax, strtol, strtoll): New macros, if UNSIGNED.
1220 (strtoimax): Renamed from strtoumax. All uses of unsigned values
1221 changed to signed values. Check sizes at compile-time, not
1222 run-time. Prefer strtol to strtoll if both work.
1223 (main): Remove.
1224
1225 * lib/xstrtol.h (xstrtoimax): New decl.
1226
1227 * m4/Makefile.am (EXTRA_DIST):
1228 Add codeset.m4, glibc21.m4, iconv.m4, inttypes.m4,
1229 longlong.m4, xstrtoimax.m4.
1230
1231 * m4/inttypes.m4 (jm_AC_HEADER_INTTYPES_H):
1232 Remove; now done by autoconf.
1233 (jm_AC_TYPE_INTMAX_T, jm_AC_TYPE_UINTMAX_T): Replace with
1234 Use AC_CHECK_TYPE instead of merely looking for the header.
1235
1236 * m4/uintmax_t.m4: Use shorter comment.
1237
1238 * m4/xstrtoumax.m4 (jm_AC_PREREQ_XSTRTOUMAX):
1239 Quote first arg of AC_DEFUN.
1240 Require jm_AC_TYPE_INTMAX_T and jm_AC_TYPE_LONG_LONG since they
1241 is needed to parse the include file.
1242 Simplify logic behind the args to AC_REPLACE.
1243
1244 * src/Makefile.am (OMIT_DEPENDENCIES): Remove.
1245
1246 * src/ansi2knr.1, src/ansi2knr.c: Remove; wasn't being used.
1247
1248 * src/rmt.c (main):
1249 Use "Copyright %d" to simplify the translator's job in the future.
1250 Advise translator about circle-C.
1251 * src/tar.c: (decode_options): Likewise.
1252 * tests/genfile.c (main): Likewise.
1253
1254 2001-08-28 Jim Meyering <meyering@lucent.com>
1255
1256 * lib/argmatch.c: Include "quote.h".
1257 (argmatch_invalid): Quote the context.
1258
1259 * lib/dirname.c (dir_name): Fix typo on PC platforms.
1260
1261 * lib/backupfile.c, lib/basename.c, lib/dirname.c, lib/strtoul.c:
1262 Use single-quote for local .h files.
1263
1264 * lib/error.h (__attribute__): Don't depend on __STRICT_ANSI__.
1265
1266 * lib/getopt.c, lib/getopt.h, lib/getopt1.c: Upgrade to recent
1267 glibc versions.
1268
1269 * lib/getdate.y (get_date): Initialize tm_isdst to -1 before
1270 invoking mktime the last time.
1271
1272 * lib/pathmax.h: Use #if rather than #ifdef for HAVE_UNISTD_H.
1273
1274 * lib/rename.c: Major rewrite by Volker Borchert to use system
1275 rename function, but to work around problems with trailing
1276 slashes.
1277
1278 * lib/strtoll.c: New file, from glibc.
1279 * lib/strtoul.c: Update from glibc.
1280
1281 * lib/strtouxmax.c: Renamed from lib/strtoumax.c.
1282 Add support for signed numbers, too.
1283 (strtoul, strtoull): Do not declare if STRTOUXMAX_UNSIGNED
1284 is not defined.
1285 (strtol, strtoll): Declare as needed, if STRTOUXMAX_UNSIGNED is
1286 not defined.
1287 (strtoumax, uintmax_t, strtoull, strtoul): New macros.
1288 (main): Use generic names in debugging output.
1289 * lib/strtoimax.c: Plus add the following changes of my own:
1290 (main): Use accurate names in debugging output.
1291
1292 * lib/xgetcwd.c (xgetcwd): Use getcwd if glibc 2 or later.
1293 Don't use PATH_MAX.
1294
1295 * m4/c-bs-a.m4, m4/check-decl.m4, m4/d-ino.m4, m4/error.m4,
1296 m4/getline.m4, m4/jm-mktime.m4, m4/malloc.m4, m4/mbrtowc.m4,
1297 m4/mbstate_t.m4, m4/realloc.m4, m4/uintmax_t.m4, m4/utimbuf.m4,
1298 m4/utime.m4, m4/utimes.m4:
1299 Quote the first argument in each use of AC_DEFUN.
1300
1301 * m4/getline.m4: Don't use string.h.
1302
1303 * m4/inttypes.m4, m4/longlong.m4, m4/xstrtoimax.m4: New files.
1304
1305 * m4/mbrtowc.m4 (jm_FUNC_MBRTOWC): @%:@ -> #.
1306
1307 2001-08-27 Paul Eggert <eggert@twinsun.com>
1308
1309 * NEWS, configure.ac (AC_INIT_AUTOMAKE): Version 1.13.20.
1310
1311 The biggest change is the new --exclude semantics and options.
1312 The basic idea was suggested by Gerhard Poul; thanks!
1313
1314 * NEWS: Describe new --exclude semantics and options, and bug fixes.
1315 * README: ignfail.sh fails on some NFS hosts.
1316 * NEWS, README, lib/xstrtol.h: Add copyright notice.
1317
1318 * Makefile.am (ACLOCAL_AMFLAGS): Add -I m4.
1319 (M4DIR, ACINCLUDE_INPUTS, $(srcdir)/acinclude.m4):
1320 Remove; the automake bug has been fixed.
1321 * acinclude.m4: Remove.
1322
1323 * configure.ac: Renamed from configure.in.
1324 (AC_PREREQ): Bump from 2.13 to 2.52.
1325 (ALL_LINGUAS): Add id, tr. Remove ko, as po/ko.po (dated
1326 1997-05-30) has an encoding error.
1327 (jm_AC_HEADER_INTTYPES_H): Remove; now done by autoconf.
1328 (AC_FUNC_FNMATCH): Use AC_CONFIG_LINKS, not AC_LINK_FILES.
1329
1330 * doc/fdl.texi: Update to current GNU version.
1331
1332 * doc/tar.texi: Put leading '*' in direntry.
1333 Accommodate new gfdl sectioning.
1334 New option --recursion (the default) that is the inverse of
1335 --no-recursion.
1336
1337 New options --anchored, --ignore-case, --wildcards,
1338 --wildcards-match-slash, and their negations (e.g., --no-anchored).
1339 Along with --recursion and --no-recursion, these control how exclude
1340 patterns are interpreted. The default interpretation of exclude
1341 patterns is now --no-anchored --no-ignore-case --recursion
1342 --wildcards --wildcards-match-slash.
1343
1344 * lib/Makefile.am (OMIT_DEPENDENCIES): Remove.
1345
1346 * lib/exclude.c (bool): Declare, perhaps by including stdbool.h.
1347 (<sys/types.h>): Include only if HAVE_SYS_TYPES_H.
1348 (<stdlib.h>, <string.h>, <strings.h>, <inttypes.h>, <stdint.h>):
1349 Include if available.
1350 (<xalloc.h>): Include
1351 (SIZE_MAX): Define if <stdint.h> or <inttypes.h> doesn't.
1352 (verify): New macro. Use it to verify that EXCLUDE macros do not
1353 collide with FNM macros.
1354 (struct patopts): New struct.
1355 (struct exclude): Use it, as exclude patterns now come with options.
1356 (new_exclude): Support above changes.
1357 (new_exclude, add_exclude_file):
1358 Initial size must now be a power of two to simplify overflow checking.
1359 (free_exclude, fnmatch_no_wildcards): New function.
1360 (excluded_filename): No longer requires options arg, as the options
1361 are determined by add_exclude. Now returns bool, not int.
1362 (excluded_filename, add_exclude):
1363 Add support for the fancy new exclusion options.
1364 (add_exclude, add_exclude_file): Now takes int options arg.
1365 Check for arithmetic overflow when computing sizes.
1366 (add_exclude_file): xrealloc might modify errno, so don't
1367 realloc until after errno might be used.
1368
1369 * lib/exclude.h (EXCLUDE_ANCHORED, EXCLUDE_INCLUDE,EXCLUDE_WILDCARDS):
1370 New macros.
1371 (free_exclude): New decl.
1372 (add_exclude, add_exclude_file): Now takes int options arg.
1373 (excluded_filename): No longer requires options arg, as the options
1374 are determined by add_exclude. Now returns bool, not int.
1375
1376 * lib/prepargs.c: Include <string.h>; required for C99 since
1377 we use strlen.
1378
1379 * lib/quotearg.c:
1380 BSD/OS 4.1 wchar.h requires FILE and struct tm to be declared.
1381
1382 * lib/xstrtol.h (_DECLARE_XSTRTOL): Improve quality of
1383 diagnostic for LONGINT_INVALID_SUFFIX_CHAR.
1384
1385 * m4/Makefile.am (EXTRA_DIST): Add check-decl.m4, mbrtowc.m4.
1386 Remove inttypes_h.m4, largefile.m4, mktime.m4.
1387
1388 * m4/inttypes_h.m4, m4/largefile.m4, m4/mktime.m4: Remove;
1389 subsumed by Autoconf 2.50.
1390
1391 * m4/error.m4: Upgrade to serial 2.
1392
1393 * m4/fnmatch.m4 (jm_FUNC_FNMATCH): Upgrade to serial 4, but
1394 remove test for GNU C library. It's not correct, as some
1395 older glibcs are buggy.
1396
1397 * m4/getline.m4, m4/malloc.m4: Upgrade to serial 4.
1398
1399 * m4/prereq.m4: Upgrade to serial 20, but then:
1400 (jm_PREREQ): Add jm_PREREQ_EXCLUDE.
1401 (jm_PREREQ_EXCLUDE): New macro.
1402 (jm_PREREQ_HUMAN): Remove jm_AC_HEADER_INTTYPES_H, as it is subsumed
1403 by autoconf 2.5x.
1404
1405 * m4/realloc.m4: Upgrade to serial 4.
1406
1407 * m4/strerror_r.m4: Revert to serial 1002.
1408
1409 * m4/uintmax_t.m4: Upgrade to autoconf 2.5x.
1410
1411 * m4/utimes.m4: Upgrade to latest version (still "serial 3").
1412
1413 * m4/xstrtoumax.m4: Upgrade to serial 3, but then:
1414 (jm_AC_PREREQ_XSTRTOUMAX): Remove jm_AC_HEADER_INTTYPES_H, as
1415 it is now subsumed by autoconf. Add inttypes.h.
1416
1417 * po/cs.po, po/da.po, po/de.po, po/es.po, po/et.po, po/fr.po,
1418 po/it.po, po/pl.po, po/sl.po, po/sv.po: Sync with translation project.
1419
1420 * src/buffer.c (new_volume): Stop if the script exits with an error.
1421
1422 * src/common.h (excluded_with_slash, excluded_without_slash):
1423 Remove, replacing by:
1424 (excluded): New decl.
1425 (link_error): New decl.
1426 (excluded_name): Now returns bool.
1427
1428 * src/extract.c:
1429 (struct delayed_symlinks, extract_archive, apply_delayed_symlinks):
1430 Support hard links to symbolic links.
1431
1432 (struct delayed_symlink): Remove 'names' member, replacing it with
1433 'sources' and 'target' member. All uses changed.
1434
1435 (struct string_list): New type.
1436
1437 (delayed_set_stat, extract_archive): Use offsetof when computing sizes
1438 for struct hack; this avoids wasted space in some cases.
1439
1440 (extract_archive): Fix test for absolute pathnames and/or "..".
1441 Use link_error to report errors for links.
1442 Remove redundant trailing '/' at "really_dir", for all uses, not
1443 just before invoking mkdir.
1444 If overwriting old files, do not worry so much about existing
1445 directories.
1446 Fix mode computation in the case where the directory exists.
1447
1448 (apply_delayed_symlinks): If we can't make a hard link to a symbolic
1449 link, make a copy of the symbolic link.
1450
1451 * src/incremen.c (get_directory_contents):
1452 If ignore_failed_read_option, only warn about
1453 stat failures.
1454
1455 * src/list.c (from_header): Do not issue a diagnostic if TYPE is zero.
1456 However, check for error even for '-' or '+' case.
1457
1458 (print_header): Try parsing uids and gids as unsigned integers first,
1459 and as a uid_t or gid_t only if that fails. This adds support for
1460 listing positive uids and gids that are greater than UID_MAX and
1461 GID_MAX.
1462
1463 * src/misc.c (link_error): New function.
1464
1465 * src/names.c (collect_and_sort_names):
1466 If ignore_failed_read_option, only warn about
1467 stat errors.
1468
1469 (excluded_name): Now returns bool. Simplify, as the fancy
1470 features are now all in excluded_filename.
1471
1472 * src/rtapelib.c (base_name): Remove decl, as system.h now
1473 declares it.
1474
1475 * src/system.h: Include stddef.h if available.
1476 (offsetof): Declare if stddef.h doesn't.
1477
1478 Include <dirname.h>.
1479 (FILESYSTEM_PREFIX_LEN, ISSLASH): Remove; now defined by dirname.h.
1480
1481 * src/tar.c (ANCHORED_OPTION, IGNORE_CASE_OPTION,
1482 NO_ANCHORED_OPTION, NO_IGNORE_CASE_OPTION, NO_WILDCARDS_OPTION,
1483 NO_WILDCARDS_MATCH_SLASH_OPTION, WILDCARDS_OPTION,
1484 WILDCARDS_MATCH_SLASH_OPTION):
1485 New enum values.
1486
1487 (long_options, usage, decode_options): Add support for --anchored,
1488 --ignore-case, --no-anchored, --no-ignore-case, --no-wildcards,
1489 --no-wildcards-match-slash, --recursion, --wildcards,
1490 --wildcards-match-slash.
1491
1492 (decode_options): Implement the new way of interpreting exclude
1493 patterns.
1494
1495 (usage): --newer-mtime takes a DATE operand. DATE may be a file name.
1496
1497 (OPTION_STRING, decode_options): Add -I, -y. Currently these options
1498 just print error messages suggesting alternatives.
1499
1500 (add_filtered_exclude): Remove.
1501
1502 * tests/Makefile.am (TESTS): Alphabetize, except put version.sh first.
1503
1504 * tests/extrac04.sh (out): Remove
1505 directory/subdirectory/file1, as the new semantics for
1506 --exclude exclude it.
1507
1508 * tests/genfile.c (main): Don't use non-ASCII char in msgid.
1509
1510 2001-08-12 Paul Eggert <eggert@twinsun.com>
1511
1512 * lib/addext.c (<errno.h>): Include.
1513 (errno): Declare if not defined.
1514 (addext): Work correctly on the Hurd, where pathconf returns -1 and
1515 leaves errno alone, because there is no limit. Also, work even if
1516 size_t is narrower than long.
1517
1518 2001-07-08 Paul Eggert <eggert@twinsun.com>
1519
1520 * lib/alloca.c (alloca): Arg is of type size_t, not unsigned.
1521
1522 2001-05-10 Paul Eggert <eggert@twinsun.com>
1523
1524 * lib/addext.c (ISSLASH, base_name): Remove decls; now in dirname.h.
1525 Include <backupfile.h> and <dirname.h> after size_t is defined.
1526 (addext): Use base_len to trim redundant trailing slashes instead of
1527 doing it ourselves.
1528
1529 * lib/backupfile.c (ISSLASH, base_name):
1530 Remove decls; now in dirname.h.
1531 Include <argmatch.h>, <backupfile.h>, <dirname.h> after size_t
1532 is defined.
1533 (find_backup_file_name): Rename locals to avoid new functions.
1534 Use base_len instead of rolling it ourselves.
1535 Work even if dirlen is 0.
1536 Use a dir of '.' if given the empty string.
1537
1538 * lib/basename.c:
1539 Do not include <stdio.h>, <assert.h>; no longer needed.
1540 (FILESYSTEM_PREFIX_LEN, PARAMS, ISSLASH): Remove; now in dirname.h.
1541 Include <string.h>, <dirname.h>.
1542 (base_name): Allow file names ending in slashes, other than names
1543 that are all slashes. In this case, return the basename followed
1544 by the slashes.
1545
1546 * lib/dirname.c: Include <string.h> instead of <stdlib.h>.
1547 (FILESYSTEM_PREFIX_LEN, ISSLASH): Remove; now in dirname.h.
1548 (dir_len): Renamed from dirlen.
1549 All callers changed.
1550
1551 * lib/dirname.h (DIRECTORY_SEPARATOR, ISSLASH, FILESYSTEM_PREFIX_LEN):
1552 New macros.
1553 (base_name, base_len, dir_len, strip_trailing_slashes): New decls.
1554
1555 2001-02-16 Paul Eggert <eggert@twinsun.com>
1556
1557 * lib/quotearg.c (mbrtowc, mbrtowc, mbsinit):
1558 Do not declare or define if HAVE_MBRTOWC,
1559 since the test for HAVE_MBRTOWC now requires proper declarations.
1560
1561 * lib/alloca.c (malloc): Undef before defining.
1562
1563 2001-02-13 Paul Eggert <eggert@twinsun.com>
1564
1565 * src/compare.c (read_and_process): Use off_t for size.
1566 From Maciej W. Rozycki.
1567
1568 2001-01-26 Paul Eggert <eggert@twinsun.com>
1569
1570 * lib/quotearg.c: Include stddef.h. From Jim Meyering.
1571
1572 2001-01-12 Paul Eggert <eggert@twinsun.com>
1573
1574 * NEWS, configure.in (AC_INIT_AUTOMAKE): Version 1.13.19.
1575
1576 * lib/savedir.h (savedir): Remove size arg.
1577
1578 * doc/tar.texi: Add @setchapternewpage odd.
1579 Remove -I as an alias for -T, for now.
1580 Add @dircategory.
1581 Update copyright. Remove "Published by".
1582 Dates beginning with / or . are taken to be file names.
1583
1584 * src/tar.c (<time.h>): Do not include;
1585 (time): Do not declare.
1586 (usage): Remove -I as an alias for -T.
1587 (OPTION_STRING): Remove -I.
1588 (decode_options): Dates that look like an absolute path name,
1589 or that start with '.', are presumed to be file names whose
1590 dates are taken.
1591 Remove 'I' as an aliase for 'T'.
1592 Update copyright.
1593
1594 * src/extract.c (<time.h>): Do not include; system.h now does this.
1595 (make_directories): Skip filesystem prefixes.
1596 Don't assume '/' is the only separator.
1597 (extract_sparse_file): Use new full_write semantics.
1598 On write error, return instead of invoking skip_file.
1599 Do not free sparsearray; caller does this now.
1600 (apply_nonancestor_delayed_set_stat): Do not assume '/' is the only
1601 separator.
1602 (extract_archive): Don't assume file name lengths fit in int.
1603 Report what got stripped from member name; it might be more than '/'.
1604 Use new full_write semantics.
1605 Do not pass redundant trailing "/" to mkdir, as POSIX does not allow
1606 mkdir to ignore it.
1607 Do not report mkdir error if old_files_option == KEEP_OLD_FILES.
1608
1609 * src/buffer.c (<time.h>): Do not include; system.h now does this.
1610 (time): Remove decl; likewise.
1611 (child_open_for_uncompress): Use new full_write semantics.
1612 (flush_write): Use ISSLASH instead of testing for '/'.
1613 (flush_read): Likewise.
1614
1615 * src/rmt.h (_remdev): Look for / anywhere in Path.
1616
1617 * src/misc.c (contains_dot_dot): Skip filesystem prefix.
1618 Don't assume '/' is the only separator.
1619 (safer_rmdir): Don't assume '/' is the only separator.
1620
1621 * src/compare.c (diff_archive): Don't assume '/' is the only separator.
1622
1623 * lib/dirname.h (dirlen): New decl.
1624
1625 * src/incremen.c (get_directory_contents):
1626 Remove path_size arg; all callers changed.
1627 Don't assume '/' is the only directory separator.
1628 (gnu_restore): Work even if file name length doesn't fit in int.
1629
1630 * lib/addext.c (ISSLASH): New macro.
1631 (addext): Trim any redundant trailing slashes.
1632
1633 * src/names.c (name_next):
1634 Don't assume '/' is the only directory separator.
1635 (namelist_match): Likewise.
1636 (add_hierarchy_to_namelist): Remove dirsize arg.
1637 Do not assume '/' is the only directory separator.
1638 (new_name): Likewise.
1639
1640 * lib/Makefile.am (noinst_HEADERS): Add dirname.h, full-write.h.
1641 (libtar_a_SOURCES): Add dirname.c.
1642
1643 * src/create.c (relativize):
1644 New function, with much of old start_header's guts.
1645 Handle filesystem prefixes.
1646 (start_header): Use this new function.
1647 (init_sparsearray): Don't bother to zero out the new array;
1648 it's not needed.
1649 (deal_with_sparse): Fix array allocation bug.
1650 (create_archive): Don't assume '/' is the only separator.
1651 (dump_file): Likewise.
1652 Don't worry about leading / in symlink targets.
1653
1654 * lib/savedir.c (savedir):
1655 Remove size arg; it wasn't portable. All callers changed.
1656
1657 * lib/utime.c (utime_null): Adjust to new full_write convention.
1658
1659 * configure.in (YACC): Avoid portability problem with Ultrix sh.
1660
1661 * lib/backupfile.c: Include <dirname.h>.
1662 (ISSLASH): New macro.
1663 (find_backup_file_name): Use dirlen to calculate directory lengths.
1664 (max_backup_version): Strip redundant trailing slashes.
1665
1666 * src/common.h: Include <full-write.h>.
1667 (get_directory_contents): No longer has size arg.
1668 (gnu_restore): Arg is size_t, not int.
1669
1670 * src/system.h: Include <time.h>.
1671 (time): Declare if not defined.
1672
1673 * lib/full-write.c: Include full-write.h, not safe-read.h.
1674 full_write returns size_t, with short writes meaning failure.
1675 All callers changed.
1676
1677 * src/rtapelib.c: Include full-write.h.
1678
1679 * src/rmt.c: Include full-write.h.
1680 (main): Update copyright.
1681
1682 * doc/getdate.texi: Mention that only English is supported.
1683 Show how to use "date" so that the output is acceptable to getdate.
1684 Mention Z as an abbreviation for UTC.
1685
1686 * lib/full-write.h: New file.
1687
1688 * src/list.c: system.h now does time.h stuff.
1689
1690 * lib/dirname.c:
1691 Use HAVE_STDLIB_H, not STDC_HEADERS, to decide whether to include
1692 stdlib.h.
1693 Do not include string.h, strings.h, or assert.h; no longer needed.
1694 (strrchr, memrchr, malloc): Remove decls; no longer needed.
1695 Include <xalloc.h>.
1696 (base_name): New decl.
1697 (BACKSLASH_IS_PATH_SEPARATOR): Remove.
1698 (dir_name_r): Remove.
1699 (dirlen): New function.
1700 (dir_name): Use dirlen instead of dir_name_r.
1701 (<string.h>, <strings.h>): Include only if test program.
1702 (main): Use "return 0", not "exit (0)".
1703
1704 2000-12-08 Paul Eggert <eggert@twinsun.com>
1705
1706 * lib/dirname.h: New file.
1707
1708 2000-11-02 Vesselin Atanasov <vesselin@bgnet.bg>
1709
1710 * lib/fnmatch.c: Do not comment out all the code if we are using
1711 the GNU C library, because in some cases we are replacing buggy
1712 code in the GNU C library itself.
1713
1714 2000-10-30 Paul Eggert <eggert@twinsun.com>
1715
1716 * lib/fnmatch.c (FOLD): Do not assume that characters are unsigned.
1717
1718 2000-10-29 Paul Eggert <eggert@twinsun.com>
1719
1720 * NEWS, configure.in (AC_INIT_AUTOMAKE): Version 1.13.18.
1721
1722 * src/tar.c: Include <fnmatch.h>, for FNM_LEADING_DIR.
1723
1724 2000-10-28 Paul Eggert <eggert@twinsun.com>
1725
1726 * doc/tar.texi: --no-recursion now applies to extraction, too.
1727 * src/create.c (dump_file): no_recurse_option -> ! recursion_option
1728 * src/names.c (namelist_match, excluded_name):
1729 Do not match subfiles of a directory
1730 if --no-recursion is specified.
1731 * src/tar.c (NO_RECURSE_OPTION): Remove.
1732 (long_options): Have getopt set the --no-recursion flag.
1733 (decode_options): Initialize recursion_option to FNM_LEADING_DIR.
1734 Remove case for NO_RECURSE_OPTION.
1735 * src/common.h (recursion_option):
1736 Renamed from no_recurse_option, with sense
1737 negated, and with FNM_LEADING_DIR being the nonzero value.
1738
1739 * names.c (namelist_match): New function.
1740 (name_match, name_scan): Use it to eliminate duplicate code.
1741 (names_notfound): Remove special case for Amiga.
1742
1743 2000-10-27 Paul Eggert <eggert@twinsun.com>
1744
1745 * src/misc.c (read_error_details, read_warn_details,
1746 read_fatal_details): Don't assume size_t is unsigned long.
1747
1748 * src/buffer.c (flush_read): If read_full_records_option, try to
1749 fill the input buffer, as --delete -f - needs this.
1750
1751 2000-10-24 Paul Eggert <eggert@twinsun.com>
1752
1753 * m4/strerror_r.m4 (AC_FUNC_STRERROR_R): Port to autoconf 2.13.
1754
1755 * src/buffer.c (check_label_pattern):
1756 Make sure header name is a string before
1757 passing it to fnmatch.
1758 (init_volume_number): Check for global_volno overflow.
1759 (new_volume): Check for global_volno overflow.
1760
1761 * src/tar.c (decode_options):
1762 Check that volume label is not too long to overflow
1763 name in tar header block.
1764
1765 * Makefile.am (EXTRA_DIST): Remove rebox.el.
1766
1767 * configure.in (HAVE_DECL_STRERROR_R): Remove our handwritten code.
1768 (AC_FUNC_STRERROR_R): Use this instead.
1769
1770 2000-10-23 Paul Eggert <eggert@twinsun.com>
1771
1772 * src/extract.c: Include <time.h>, since we invoke "time".
1773
1774 * lib/prepargs.c (prepend_default_options):
1775 Don't use NULL, for portability.
1776
1777 * m4/fnmatch.m4: Add "working" to message.
1778
1779 * src/names.c: (_GNU_SOURCE): Remove; autoconf now does this.
1780 Include <hash.h>.
1781 (getpwuid, getgrgid): Declare only if system headers don't.
1782 (gid_to_gname): Don't invoke setgrent.
1783 (namelist): Now static, not global.
1784 (nametail): New var. All uses of namelast changed to use
1785 nametail, with one extra level of indirection.
1786 (name_gather): Use memcpy instead of strncpy + assignment of NUL.
1787 (name_match): Set nametail too, when setting namelist to null.
1788 (add_hierarchy_to_namelist): Change type of dir arg from char * to
1789 struct name *, so that we don't have to look up the name again
1790 here. Get change_dir from dir rather than as a separate arg. Add
1791 dirsize arg, and pass it along to get_directory_contents. Remove
1792 unnecessary check of directory type.
1793 (new_name): Do not append a slash if PATH already ends in one.
1794 (avoided_names, struct avoided_name): Remove.
1795 (avoided_name_table): New var, replacing avoided_names.
1796 (hash_avoided_name, compare_avoided_names): New function.
1797 (add_avoided_name, is_avoided_name): Use hash table rather than
1798 linked list.
1799
1800 * src/buffer.c (_GNU_SOURCE): Remove; autoconf now does this.
1801 (child_open_for_compress, child_open_for_uncompress,
1802 close_archive): Propagate any failure of the compression process
1803 back to "tar".
1804 (open_archive, flush_write, flush_read, close_archive): Do not
1805 allocate an array of size PATH_MAX, as PATH_MAX might be (size_t)
1806 -1. Instead, allocate an array with the size that's needed.
1807 (open_archive): Don't bother checking S_ISCHR of /dev/null.
1808 (backspace_output): Don't try to backspace past start of archive.
1809 (close_archive): Remove special case for DELETE_SUBCOMMAND.
1810
1811 * acconfig.h (_GNU_SOURCE, DEFAULT_ARCHIVE, DEFAULT_BLOCKING,
1812 DENSITY_LETTER, DEVICE_PREFIX, EMUL_OPEN3, HAVE_GETGRGID,
1813 HAVE_GETPWUID, HAVE_MKNOD, HAVE_RTAPELIB, HAVE_ST_FSTYPE_STRING,
1814 HAVE_UNION_WAIT, HAVE_UTIME_H, HAVE_VALLOC, MTIO_CHECK_FIELD, PACKAGE,
1815 PROTOTYPES, REMOTE_SHELL, STD_INC_PATH, VERSION, WITH_CATALOGS,
1816 WITH_DMALLOC, WITH_REGEX):
1817 Remove; now generated automatically.
1818
1819 * configure.in (_GNU_SOURCE): Define to empty, not 1, for
1820 compatibility for glibc fragments.
1821 (_GNU_SOURCE, HAVE_UTIME_H, MTIO_CHECK_FIELD,
1822 HAVE_ST_FSTYPE_STRING, HAVE_MKNOD, REMOTE_SHELL, DENSITY_LETTER,
1823 DEVICE_PREFIX, DEFAULT_ARCHIVE, DEFAULT_BLOCKING): Add comment so
1824 that we needn't put an entry into acconfig.h.
1825 (ALL_LINGUAS): Add da.
1826 (AC_C_BACKSLASH_A): Remove; jm_PREREQ_QUOTEARG now does this.
1827 (AC_CHECK_HEADERS): Add stdbool.h (for hash.h users), wctype.h
1828 (for strtol.c).
1829 (AC_MBSTATE_T): Add.
1830 (RMT): Append $(EXEEXT).
1831 (HAVE_GETGRGID, HAVE_GETPWUID, pe_AC_TYPE_SIGNED_CHAR): Remove.
1832 (HAVE_DECL_FREE, HAVE_DECL_GETGRGID, HAVE_DECL_GETPWUID,
1833 HAVE_DECL_GETENV, HAVE_DECL_MALLOC, HAVE_DECL_STRTOUL,
1834 HAVE_DECL_STRTOULL, HAVE_DECL_STRERROR_R): New macros.
1835 (jm_PREREQ_ADDEXT, jm_PREREQ_ERROR, jm_PREREQ_QUOTEARG): Add.
1836 (AC_REPLACE_FUNCS): Remove execlp; no longer needed.
1837 (AC_CHECK_FUNCS): Add clock_gettime; AC_SEARCH_LIBS wasn't enough.
1838 Remove mbrtowc; jm_PREREQ_QUOTEARG now does this.
1839 (EMUL_OPEN3): Remove; no longer needed.
1840 (DENSITY_LETTER, DEVICE_PREFIX): Simplify m4 quoting.
1841
1842 * m4/fnmatch.m4 (AC_FUNC_FNMATCH): Detect d*/*1 vs d/s/1 bug.
1843
1844 * src/common.h: Do not include basename.h.
1845 * src/rtapelib.c (base_name): Do not include basename.h;
1846 declare base_name instead.
1847
1848 * lib/basename.h, lib/execlp.c, lib/getpagesize.h, lib/mkdir.c:
1849 Remove these files.
1850 * lib/getstr.c, lib/getstr.h, lib/hash.h, lib/hash.h, lib/prepargs.c,
1851 lib/prepargs.h, lib/savedir.c, lib/savedir.h: New files.
1852 * lib/Makefile.am (EXTRA_DIST, noinst_HEADERS, libtar_a_SOURCES):
1853 Adjust to the above changes.
1854
1855 * lib/Makefile.am (AUTOMAKE_OPTIONS): Remove ../src/ansi2knr.
1856
1857 * src/open3.c: Remove.
1858
1859 * src/Makefile.am (AUTOMAKE_OPTIONS): Remove ansi2knr.
1860 (tar_SOURCES): Remove open3.c.
1861 (INCLUDES): Remove -I.., as automake does that.
1862 (OMIT_DEPENDENCIES): ../lib/fnmatch.h -> fnmatch.h. Add localedir.h.
1863
1864 The following changes are to put LOCALEDIR into localedir.h instead
1865 of passing it on the command line.
1866 (DEFS): Remove.
1867 (DISTCLEANFILES): New macro.
1868 (localedir.h): New rule.
1869 (rmt.o tar.o): Now depend on localedir.h.
1870
1871 * tests/delete02.sh, tests/extrac04.sh: New files.
1872
1873 * tests/Makefile.am (AUTOMAKE_OPTIONS): Remove ansi2knr.
1874 (TESTS): Add extrac04.sh, and restore delete02.sh.
1875 (DEFS): Remove; LOCALEDIR is now done via localedir.h.
1876 (INCLUDES): Remove -I.. as automake does this now.
1877
1878 * src/rtapelib.c (rexec): Don't declare unless using it.
1879 (do_command): Simplify signal-handling code slightly.
1880
1881 * src/delete.c (blocks_needed): Remove. All uses changed to use
1882 blocking_factor - new_blocks.
1883 (acting_as_filter): New var.
1884 (write_record, delete_archive_members): Use acting_as_filter
1885 rather than archive == STDIN_FILENO to detect whether we're acting
1886 as a filter, as open can return STDIN_FILENO in some cases.
1887 (delete_archive_members): Ignore zero blocks if
1888 ignore_zeros_option is nonzero. Fix bug that messed up last
1889 output block: write_eot can't be used here, as it gets confused
1890 when the input is at end of file.
1891
1892 * src/compare.c (diff_archive): Do not impose an arbitrary limit on
1893 symbolic link contents length. Pass directory size to
1894 get_directory_contents.
1895
1896 * m4/decl.m4, m4/error.m4, m4/mbstate_t.m4, m4/prereq.m4,
1897 m4/strerror_r.m4: New files.
1898 * m4/signedchar.m4: Remove this file.
1899 * Makefile.am (ACINCLUDE_INPUTS): Adjust to above changes.
1900 * m4/Makefile.am (EXTRA_DIST): Likewise.
1901
1902 * Makefile.am (DISTCLEANFILES): Add intl/libintl.h.
1903
1904 * po/da.po: New translation file.
1905
1906 * src/mangle.c (extract_mangle):
1907 Fix diagnostic with wrong number of %s'es.
1908
1909 * lib/fnmatch.c (fnmatch):
1910 Fix some FNM_FILE_NAME and FNM_LEADING_DIR bugs,
1911 e.g. fnmatch("d*/*1", "d/s/1", FNM_FILE_NAME) incorrectly yielded zero.
1912
1913 * lib/full-write.c (full_write): Some buggy drivers return 0 when you
1914 fall off a device's end. Detect this.
1915
1916 * src/system.h (IN_CTYPE_DOMAIN): Renamed from CTYPE_DOMAIN. All
1917 uses changed.
1918 (open): Remove macro; we no longer support EMUL_OPEN3. Do not
1919 include <pathmax.h> and directory include files like <dirent.h>;
1920 no longer used. Include <savedir.h> instead.
1921 (closedir, signed_char): remove macro; no longer used.
1922 (bool, false, true): Include <stdbool.h> if you have the include
1923 file, otherwise define.
1924
1925 * src/misc.c:
1926 (is_dot_or_dotdot, closedir_error, closedir_warn, opendir_error,
1927 opendir_warn, readdir_error): Remove; no longer needed.
1928 (safer_rmdir): Strip leading ./ (or .// or ./// or ././ or etc.)
1929 before deciding whether we're trying to remove ".".
1930 (remove_any_file): Try unlink first if we are not root. Use
1931 savedir when recursively removing directories, to avoid exhausting
1932 file descriptors.
1933 (savedir_error, savedir_warn, symlink_error): New functions.
1934
1935 * src/list.c: (read_and): Do not invoke
1936 apply_nonancestor_delayed_set_stat; DO_SOMETHING is now
1937 responsible for that. Do not invoke apply_delayed_set_stat; our
1938 caller is now responsible for that.
1939 (read_header): Use signed char instead of signed_char. Prevent
1940 later references to current_header from mistakenly treating it as
1941 an old GNU header.
1942 (from_header): Quote invalid base-64 strings in diagnostics.
1943 (time_from_header): Do not warn about future timestamps in
1944 archive; check_time now does that.
1945 (print_header): Quote unknown file types.
1946 (skip_member): New function, replacing skip_extended_headers and
1947 now skipping the whole member instead of just the extended
1948 headers. All callers changed. This makes the code handle
1949 extended headers uniformly, and fixes some bugs.
1950
1951 * src/update.c (update_archive): Use skip_member.
1952
1953 * src/extract.c (we_are_root): Now global.
1954 (struct delayed_symlink): New type.
1955 (delayed_symlink_head): New var.
1956 (extr_init, fatal_exit): Invoke extract_finish on fatal errors,
1957 not apply_delayed_set_stat.
1958 (set_mode, set_stat): Pointer args are now const pointers.
1959 (check_time): New function.
1960 (set_stat): Warn if setting a file's timestamp to be the future.
1961 (make_directories): Do not save and restore errno.
1962 (maybe_recoverable): Set errno to ENOENT if we cannot make missing
1963 intermediate directories.
1964 (extract_archive): Invoke apply_nonancestor_delayed_set_stat here,
1965 not in caller. Extract potentially dangerous symbolic links more
1966 carefully, deferring their creation until the end, and using a
1967 regular file placeholder in the meantime. Do not remove trailing
1968 / and /. from file names. Do not bother checking for ".." when
1969 checking whether a directory loops back on itself, as loopbacks
1970 can occur with symlinks too. Also, in that case, do not bother
1971 saving and restoring errno; just set it to EEXIST.
1972 (apply_nonancestor_delayed_set_stat): A prefix is a potential
1973 ancestor if it ends in slash too (as well as ending in a char just
1974 before slash).
1975 (apply_delayed_set_stat): Remove.
1976 (apply_delayed_symlinks, extract_finish): New functions.
1977
1978 * doc/fdl.texi: New file.
1979 * doc/Makefile.am (EXTRA_DIST): Add fdl.texi.
1980 ($(srcdir)/tar.info): Add fdl.texi. Invoke makeinfo with --no-split.
1981 * doc/tar.texi: Add Free Documentation License. New section
1982 "Overwrite Old Files", and revamp that section to make it easier to
1983 follow. "tar" -> "GNU tar" where appropriate. Migrate getdate
1984 documentation into getdate.texi. Fix several minor typos. Describe
1985 TAR_OPTIONS. Describe incompatibility between incremental backups and
1986 --atime-preserve. Describe incompatibility between --verify and other
1987 options. Mention that tar normally removes symbolic links rather than
1988 following them, when extracting a file of the same name.
1989
1990 * THANKS: Add gpoul. Change skip's address.
1991
1992 * po/POTFILES.in: Add lib/human.c.
1993
1994 * src/common.h (namelist, namelast): Remove decls.
1995 (we_are_root, extract_finish, skip_member, savedir_error,
1996 savedir_warn, symlink_error, gnu_list_name): New decls.
1997 (apply_delayed_set_stat, apply_nonancestor_delayed_set_stat,
1998 skip_extended_headers, is_dot_or_dotdot, closedir_error,
1999 closedir_warn, opendir_error, opendir_warn, readdir_error,
2000 readdir_warn): Remove decls.
2001 (get_directory_contents): New off_t arg.
2002 (addname): Now returns struct name *.
2003
2004 * src/tar.h, tests/genfile.c: Fix comments.
2005
2006 * src/create.c: Include hash.h.
2007 (gnu_list_name): Remove decl.
2008 (struct link): Remove "next" member.
2009 (linklist): Remove.
2010 (start_header): Say "leading `FOO'" rather than "`FOO' prefix" for
2011 consistency with other diagnostics.
2012 (deal_with_sparse): Check for I/O error when closing the file.
2013 (create_archive): Do not allocate an array of size PATH_MAX, as
2014 PATH_MAX might be (size_t) -1. Instead, allocate an array with
2015 the size that's needed.
2016 (hash_link, compare_links): New functions.
2017 (dump_file): Do not exhaust open file descriptors when descending
2018 deeply into a directory, by using savedir rather than
2019 opendir/readdir. Do not zero-fill the name buffer unnecessarily.
2020 Hash the set of links already created, instead of using a linked
2021 list. Fix some bugs in outputting sparse files which caused the
2022 sparse tables to be incorrect. When a file unexpectedly shrinks,
2023 output zeros rather than garbage. Do not allocate an array of
2024 size PATH_MAX, as PATH_MAX might be (size_t) -1. Instead,
2025 allocate an array with the size that's needed.
2026
2027 * src/incremen.c: Include hash.h.
2028 (struct directory): Remove "next", "dir_text". Change "name" to
2029 be char[1] with struct hack, not const char *. Add "found".
2030 (directory_list): Remove. Replaced by directory_table.
2031 (directory_table): New var.
2032 (nfs_string): Renamed from nfs.
2033 (hash_directory, compare_directories): New functions.
2034 (note_directory): Now returns struct directory *. First arg is
2035 now const pointer. struct stat arg is now dev_t, ino_t, nfs.
2036 Remove text arg. New "found" arg, basically corresponding to the
2037 old text arg not being null. All callers changed.
2038 (note_directory, find_directory): Use hash table rather than
2039 linked list.
2040 (get_directory_contents): New arg "device". Use savedir to do the
2041 hard work. Save the nfs-ness of stat_data, since it might change
2042 under us. Use note_directory instead of find_directory to save
2043 some work. When adding an "A" record, do it with
2044 add_to_accumulator instead of cheating with strcat.
2045 (read_directory_file): Use "+" flag before device to indicate
2046 whether it was NFS. Fix typo in checking for strtoul error.
2047 (write_directory_file_entry): New function.
2048 (write_directory_file): Use it, and use the hash routines to
2049 traverse the directory table.
2050 (gnu_restore): Use savedir rather than opendir/readdir.
2051
2052 * src/tar.c: Include localedir.h, prepargs.h.
2053 (long_options): Now static.
2054 (long_options, usage, decode_options): -j is now short for
2055 --bzip2, and -I is now an alias for -T.
2056 (decode_options, main): argv is not const pointer now.
2057 (decode_options): Invoke prepend_default_options to support
2058 TAR_OPTIONS. In diagnostic, mention the string that was the
2059 invalid blocking factor, tape length, group, owner, or record
2060 size. --delete is no longer incompatible with -f -, undoing
2061 2000-01-07 change.
2062 (main): Invoke extract_finish at end of extraction.
2063
2064 * src/rmt.c: Include localedir.h.
2065 (main): Update copyright date to 2000.
2066
2067 * doc/getdate.texi: New file, taken from fileutils 4.0.27, with the
2068 following changes: Use @sc where appropriate. Document the ranges of
2069 supported times more precisely. Add Eggert to getdate authors.
2070 Document old Latin 12m/12pm tradition. Remove list of alphabetic time
2071 zone names, as it wasn't correct and people shouldn't be relying on it
2072 anyway. Relative items also account for non-DST adjustments. Fix
2073 some misspellings.
2074
2075 * lib/prepargs.c, lib/prepargs.h, tests/extrac04.sh: New file.
2076
2077 * tests/ignfail.sh: opendir -> savedir in diagnostics.
2078
2079 * tests/preset.in: Set LANGUAGE to the empty string, for some
2080 brain damaged host.
2081
2082 2000-10-20 Paul Eggert <eggert@twinsun.com>
2083
2084 * m4/fnmatch.m4: Mention the GNU C library.
2085
2086 2000-10-19 Paul Eggert <eggert@twinsun.com>
2087
2088 * m4/fnmatch.m4: Add a couple more test cases to catch bugs in
2089 glibc 2.1.95.
2090
2091 2000-10-17 Paul Eggert <eggert@twinsun.com>
2092
2093 * lib/human.c (<limits.h>): Do not include; human.h does it if needed.
2094 (CHAR_BIT): Remove.
2095
2096 * lib/human.h (<limits.h>): Include if HAVE_LIMITS_H.
2097 (CHAR_BIT): Define if not defined.
2098
2099 2000-09-09 Paul Eggert <eggert@twinsun.com>
2100
2101 * lib/quotearg.c: From fileutils: rename ISASCII to IN_CTYPE_DOMAIN.
2102
2103 2000-08-07 Paul Eggert <eggert@twinsun.com>
2104
2105 * lib/xmalloc.c: Memory exhausted -> memory exhausted
2106
2107 * lib/xalloc.h (xalloc_msg_memory_exhausted):
2108 change to array from char *.
2109
2110 2000-08-06 Paul Eggert <eggert@twinsun.com>
2111
2112 * m4/mbstate_t.m4: Define mbstate_t to be int, not char, for
2113 compatibility with glibc 2.1.3 strftime.c.
2114
2115 2000-07-31 Paul Eggert <eggert@twinsun.com>
2116
2117 * lib/quotearg.c (quotearg_n_options):
2118 Don't make the initial slot vector a constant,
2119 since it might get modified.
2120
2121 * lib/quotearg.c: Add support for more than one preallocated slot.
2122
2123 2000-07-30 Paul Eggert <eggert@twinsun.com>
2124
2125 * lib/quotearg.c (quotearg_n_options):
2126 Preallocate a slot 0 buffer, so that the caller
2127 can always quote one small component of a "memory exhausted" message
2128 in slot 0.
2129
2130 2000-07-23 Paul Eggert <eggert@twinsun.com>
2131
2132 * lib/quotearg.c:
2133 Include <wchar.h> even if ! (HAVE_MBRTOWC && 1 < MB_LEN_MAX), so that
2134 mbstate_t is always defined.
2135
2136 Do not inspect MB_LEN_MAX, since it's incorrectly defined to be 1 in
2137 some GCC installations, and this configuration error is likely to be
2138 common.
2139
2140 2000-07-22 Paul Eggert <eggert@twinsun.com>
2141
2142 * lib/quotearg.c:
2143 When the system forces us to redefine mbstate_t, shadow its mbsinit
2144 function. From Bruno Haible.
2145
2146 2000-07-14 Paul Eggert <eggert@twinsun.com>
2147
2148 * lib/xmalloc.c: Simplify exhausted message.
2149
2150 * lib/quotearg.h: Update copyright date; from Jim Meyering.
2151
2152 2000-07-13 Paul Eggert <eggert@twinsun.com>
2153
2154 * lib/quotearg.h (enum quoting style):
2155 New constant clocale_quoting_style.
2156
2157 * lib/quotearg.c:
2158 (quoting_style_args, quoting_style_vals, quotearg_buffer_restyled):
2159 Add support for clocale_quoting_style, undoing previous change to
2160 locale_quoting_style.
2161
2162 2000-07-10 Paul Eggert <eggert@twinsun.com>
2163
2164 * lib/quotearg.c:
2165 <wchar.h>: Include only if HAVE_MBRTOWC && 1 < MB_LEN_MAX,
2166 since otherwise we don't need it.
2167 (MB_CUR_MAX): Redefine to 1 if ! (HAVE_MBRTOWC && 1 < MB_LEN_MAX),
2168 since we don't do multibytes in that case.
2169 (quotearg_buffer_restyled): If a unibyte locale, don't bother to
2170 invoke multibyte primitives.
2171
2172 * m4/mbstate_t.m4 (AC_MBSTATE_T):
2173 Renamed from AC_MBSTATE_T_OBJECT. All uses changed.
2174 Change from a two-part test, which defines both HAVE_MBSTATE_T_OBJECT
2175 and mbstate_t, to a single-part test that simply defines mbstate_t.
2176
2177 * lib/quotearg.c (mbrtowc): Do not use HAVE_WCHAR_H in the definition.
2178 Use defined mbstate_t, not HAVE_MBSTATE_T_OBJECT,
2179 to decide whether to define the BeOS workaround macro;
2180 this adjusts to the change to AC_MBSTATE_T.
2181
2182 * m4/strerror_r.m4: New file.
2183
2184 2000-07-05 Paul Eggert <eggert@twinsun.com>
2185
2186 * lib/quotearg.c: Use double-quote to quote.
2187
2188 * lib/quotearg.c (N_): New macro.
2189 (gettext_default): New function.
2190 (quotearg_buffer_restyled): Use gettext_default ("{LEFT QUOTATION MARK}",
2191 "\"") for left quote, and gettext_default ("{RIGHT QUOTATION MARK}", "\"")
2192 for right quote.
2193
2194 * lib/quotearg.c (struct quoting_options):
2195 Simplify quote_these_too dimension.
2196 From Bruno Haible <haible@clisp.cons.org>.
2197
2198 * m4/mbstate_t.m4 (AC_MBSTATE_T_OBJECT):
2199 Test for mbstate_t only if the test
2200 for an object-type mbstate_t fails.
2201
2202 * lib/quotearg.c (mbrtowc): Declare returned type, since BeOS doesn't.
2203
2204 2000-07-03 Paul Eggert <eggert@twinsun.com>
2205
2206 * m4/mbstate_t.m4 (AC_MBSTATE_T_OBJECT): Port to autoconf 2.13.
2207 Add AC_CHECK_HEADERS(stdlib.h), since we use HAVE_STDLIB_H.
2208
2209 * lib/quotearg.c (mbrtowc):
2210 Assign to *pwc, and return 1 only if result is nonzero.
2211 (iswprint): Define to ISPRINT if we are substituting our own mbrtowc.
2212
2213 2000-07-02 Paul Eggert <eggert@twinsun.com>
2214
2215 * lib/quotearg.c (mbstate_t):
2216 Do not define; it should be defined with AC_CHECK_TYPE.
2217
2218 2000-06-26 Paul Eggert <eggert@twinsun.com>
2219
2220 * m4/mbstate_t.m4: Include stdio.h before wchar.h, to work around
2221 a bug in glibc 2.1.3.
2222
2223 * lib/xmalloc.c: Fix inaccorate comment for xrealloc.
2224
2225 2000-06-19 Paul Eggert <eggert@twinsun.com>
2226
2227 * lib/quotearg.c (ISASCII): Add #undef and move definition to follow
2228 inclusion of wctype.h to work around solaris2.6 namespace pollution.
2229 (ISPRINT): Likewise.
2230 Reported by Tom Tromey.
2231
2232 2000-06-15 Paul Eggert <eggert@twinsun.com>
2233
2234 * lib/human.c (adjust_value): New function.
2235 (human_readable_inexact): Apply rounding style even when printing
2236 approximate values.
2237
2238 * lib/human.c: Avoid shadowing warnings.
2239 From Jim Meyering.
2240
2241 2000-06-14 Paul Eggert <eggert@twinsun.com>
2242
2243 * lib/human.c (human_readable_inexact): Allow an input block size
2244 that is not a multiple of the output block size, and vice versa.
2245
2246 * lib/getdate.y (get_date): Apply relative times after time zone
2247 indicator, not before.
2248
2249 2000-05-31 Paul Eggert <eggert@twinsun.com>
2250
2251 * m4/largefile.m4: Rewrite so that we don't need to run getconf,
2252 and thus don't need AC_CANONICAL_HOST.
2253
2254 (AC_SYS_LARGEFILE_FLAGS, AC_SYS_LARGEFILE_SPACE_APPEND): Remove.
2255 (AC_SYS_LARGEFILE_TEST_INCLUDES): New macro.
2256 (AC_SYS_LARGEFILE_MACRO_VALUE): Change arguments from
2257 CODE-TO-SET-DEFAULT to VALUE, INCLUDES, FUNCTION-BODY. All uses
2258 changed. Instead of inspecting the output of getconf, try to
2259 compile the test program without and with the macro definition.
2260 (AC_SYS_LARGEFILE): Do not require AC_CANONICAL_HOST or check for
2261 getconf. Instead, check for the needed flags by compiling test
2262 programs.
2263
2264 * configure.in (AC_CANONICAL_HOST): Remove; the largefile stuff no
2265 longer needs it.
2266 * config.guess, config.sub: Remove these files, for similar reasons.
2267
2268 2000-05-03 Paul Eggert <eggert@twinsun.com>
2269
2270 * m4/largefile.m4 (AC_SYS_LARGEFILE): Define _XOPEN_SOURCE to be
2271 500, instead of _GNU_SOURCE to be 1, to work around glibc 2.1.3
2272 bug. This avoids a clash when files like regex.c that define
2273 _GNU_SOURCE.
2274
2275 2000-05-02 Paul Eggert <eggert@twinsun.com>
2276
2277 * m4/largefile.m4 (AC_SYS_LARGEFILE):
2278 Define _GNU_SOURCE if this is needed to make
2279 ftello visible (e.g. glibc 2.1.3). Use compile-time test, rather than
2280 inspecting host and OS, to decide whether to define _LARGEFILE_SOURCE.
2281
2282 * lib/quotearg.c (mbrtowc, mbstat_t):
2283 Add definitions if !HAVE_MBSTATE_T_OBJECT.
2284 (<wctype.h>): Include if HAVE_WCTYPE_H.
2285 (iswprint): Define to 1 if we lack it
2286
2287 2000-04-18 Paul Eggert <eggert@twinsun.com>
2288
2289 * m4/mbstate_t.m4: New file.
2290
2291 2000-04-17 Bruno Haible <haible@clisp.cons.org>
2292
2293 * tests/ignfail.sh: Test for uid 0 along with user "root".
2294
2295 2000-04-05 Paul Eggert <eggert@twinsun.com>
2296
2297 * m4/largefile.m4 (AC_SYS_LARGEFILE_FLAGS):
2298 Don't use -n32 on IRIX if the installer said
2299 otherwise.
2300
2301 2000-02-28 Paul Eggert <eggert@twinsun.com>
2302
2303 * lib/quotearg.c (ALERT_CHAR): New macro.
2304 (quotearg_buffer_restyled): Use it.
2305
2306 2000-02-23 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
2307
2308 * src/list.c (tartime): Fix off-by-one error when copying year if
2309 OLD_CTIME.
2310
2311 2000-02-18 Paul Eggert <eggert@twinsun.com>
2312
2313 * lib/getdate.y: Handle two-digit years with leading zeros correctly.
2314 (textint): New typedef.
2315 (parser_control): Changed from struct parser_control to typedef
2316 (for consistency). Member year changed from int to textint. All
2317 uses changed.
2318 (YYSTYPE): Removed; replaced by %union with int and textint
2319 members.
2320 (tID): Removed; not used.
2321 (tDAY, tDAY_UNIT, tDAYZONE, tHOUR_UNIT, tID, tLOCAL_ZONE,
2322 tMERIDIAN, tMINUTE_UNIT, tMONTH, tMONTH_UNIT tSEC_UNIT, tSNUMBER,
2323 tUNUMBER, tYEAR_UNIT, tZONE, o_merid): Now of type <intval>.
2324 (tSNUMBER, tUNUMBER): Now of type <textintval>.
2325 (date, number, to_year): Use width of number in digits, not its
2326 value, to determine whether it's a 2-digit year, or a 2-digit
2327 time.
2328 (yylex): Store number of digits of numeric tokens. Return '?' for
2329 unknown identifiers, rather than (unused) tID.
2330
2331 2000-01-16 Paul Eggert <eggert@twinsun.com>
2332
2333 * lib/quotearg.c (quotearg_buffer_restyled):
2334 Do not quote alert, backslash, formfeed,
2335 and vertical tab unnecessarily in shell quoting style.
2336
2337 2000-01-15 Paul Eggert <eggert@twinsun.com>
2338
2339 * m4/c-bs-a.m4:
2340 Change quoting to be compatible with future autoconf versions.
2341
2342 2000-01-11 Paul Eggert <eggert@twinsun.com>
2343
2344 * lib/exclude.c (FILESYSTEM_PREFIX_LEN, ISSLASH): Remove unused macros.
2345
2346 2000-01-07 Paul Eggert <eggert@twinsun.com>
2347
2348 * NEWS, configure.in (AC_INIT_AUTOMAKE): Version 1.13.17.
2349
2350 Fix bug with fnmatch.h dependency, as follows:
2351 * src/Makefile.am (OMIT_DEPENDENCIES): New macro.
2352 * lib/Makefile.am (OMIT_DEPENDENCIES): New macro.
2353
2354 * src/common.h (apply_nonancestor_delayed_set_stat):
2355 Renamed from apply_delayed_set_stat.
2356 (apply_delayed_set_stat, decode_mode, chmod_error_details,
2357 chown_error_details, close_warn, closedir_warn, mkdir_error,
2358 read_error_details, read_fatal_details, read_warn_details,
2359 seek_error_details, seek_warn_details, utime_error,
2360 write_error_details, write_fatal_details): New decls.
2361
2362 Make diagnostic messages more regular.
2363 * src/create.c (dump_file): Quote file names with colons if possible.
2364 * src/compare.c (diff_archive): Likewise.
2365 * src/extract.c (repair_delayed_set_stat, extract_archive): Likewise.
2366 * src/incremen.c (get_directory_contents, gnu_restore): Likewise.
2367 * src/mangle.c (extract_mangle): Likewise.
2368 * src/misc.c (call_arg_error, call_arg_fatal, call_arg_warn):
2369 Likewise.
2370 * src/buffer.c (archive_write_error, flush_archive, close_archive,
2371 new_volume, xclose):
2372 Use error message functions to report errors consistently.
2373 * src/compare.c (diff_sparse_files, diff_archive): Likewise.
2374 * src/create.c (finish_sparse_file, dump_file): Likewise.
2375 * src/extract.c (set_mode, set_stat, extract_sparse_file,
2376 extract_archive): Likewise.
2377 * src/list.c (list_archive): Likewise.
2378 * src/update.c (append_file): Likewise.
2379 * src/compare.c (diff_init, diff_sparse_files):
2380 Use xalloc_die to report memory exhaustion.
2381 * src/incremen.c (gnu_restore): Likewise.
2382 * src/list.c (read_header): Likewise.
2383 * src/mangle.c (extract_mangle): Likewise.
2384 * src/misc.c (maybe_backup_file): Likewise.
2385 * src/tar.c (decode_options): Likewise.
2386 * src/compare.c (read_and_process, fill_in_sparse_array,
2387 diff_sparse_files):
2388 Use consistent terminology for unexpected-EOF message.
2389 * src/extract.c (extract_sparse_file, extract_archive): Likewise.
2390 * src/list.c (list_archive, read_header, skip_file,
2391 skip_extended_headers): Likewise.
2392 * src/buffer.c (archive_write_error): Add noreturn attribute to decl.
2393 (xdup2): Regularize messages with rest of tar.
2394
2395 * src/buffer.c (flush_read): Don't read past EOF.
2396
2397 * src/extract.c (extr_init):
2398 If we run out of memory, invoke apply_delayed_set_stat.
2399 (prepare_to_extract): Don't complain if we can't remove ".".
2400 (apply_delayed_set_stat): New function.
2401 (apply_nonancestor_delayed_set_stat):
2402 Renamed from apply_delayed_set_stat. All uses changed.
2403 Don't remove head if it doesn't apply.
2404
2405 * src/create.c (find_new_file_size):
2406 Return size instead of storing through pointer.
2407 All callers changed.
2408 (deal_with_sparse): Don't keep reading after read errors.
2409 (finish_sparse_file): Just abort if there is an internal error.
2410 (dump_file): Fix typo: stat_warn and stat_error were interchanged.
2411 Don't restore access times on directories during incremental dumps
2412 until after dealing with the directory.
2413 If ignoring failed reads, count closedir, read, and unknown
2414 file errors as warnings, not errors.
2415 Fix buffer overrun problem when dumping sparse files.
2416
2417 * src/list.c (read_and):
2418 Invoke apply_nonancestor_delayed_set_stat on file names
2419 after handling them.
2420 (decode_mode): Remove; moved to misc.c.
2421
2422 * src/misc.c (safer_rmdir): New function.
2423 (remove_any_file): Use it to avoid problems with rmdir(".").
2424 (maybe_backup_file): Regularize diagnostics.
2425 (undo_backup_file): Likewise.
2426 (decode_mode): Moved here from list.c.
2427 (chmod_error_details, chown_error_details, close_fatal,
2428 close_warn, closedir_warn, mkdir_error, read_error_details,
2429 read_warn_details, read_fatal_details, seek_error_details,
2430 seek_warn_details, utime_error, write_error_details,
2431 write_fatal_details): New functions.
2432
2433 * src/delete.c (save_record): Remove static variable (now local).
2434 (move_archive): Don't position before start of archive.
2435 (write_record): Abort if count is zero at inopportune time.
2436 Plug memory leak.
2437
2438 * src/tar.c (decode_options): --delete and -f - are now
2439 incompatible, since we didn't have time to fix their bugs.
2440
2441 * tests/Makefile.am (TESTS): Remove delete02.sh.
2442 * tests/ignfail.sh: Adjust to new quoting scheme again.
2443
2444 2000-01-06 Paul Eggert <eggert@twinsun.com>
2445
2446 * lib/getdate.y: Sync tm_diff with the GNU C Library.
2447 (TM_YEAR_BASE): Renamed from TM_YEAR_ORIGIN. All uses changed.
2448 (tm_diff): Renamed from difftm. All uses changed.
2449 Replace body with that taken from GNU C Library 2.1.3pre1.
2450 (get_date): Prefer tm_gmtoff to tm_diff if available.
2451
2452 1999-12-29 "Melissa O'Neill" <oneill@cs.sfu.ca>
2453
2454 * tests/incremen.sh: Invoke stat on newly created file so that its
2455 ctime is updated on Nextstep.
2456
2457 1999-12-21 Machael Stone <mstone@cs.loyola.edu>
2458
2459 * lib/getdate.y (get_date):
2460 Fix typo when checking for time_t overflow in time zone calculations.
2461
2462 1999-12-13 Paul Eggert <eggert@twinsun.com>
2463
2464 * NEWS, configure.in (AC_INIT_AUTOMAKE): Version 1.13.16.
2465
2466 * README-alpha: New file.
2467 * README: New sections for gzip and bzip2, Solaris.
2468 Remove mention of BACKLOG.
2469
2470 * configure.in (AC_C_BACKSLASH_A): Add.
2471 (AC_CHECK_HEADERS): Add wchar.h.
2472 (AC_CHECK_FUNCS): Add mbrtowc.
2473 (AC_FUNC_CLOSEDIR_VOID): Add.
2474
2475 * tests/Makefile.am (TESTS): Add delete02.sh.
2476 (POSTPONED_TESTS): Remove.
2477 (EXTRA_DIST): Remove $(POSTPONED_TESTS).
2478
2479 * tests/preset.in:
2480 Set LC_ALL rather than LANGUAGE, LANG, and LC_MESSAGES.
2481
2482 * tests/ignfail.sh (err): Adjust to new quoting scheme.
2483
2484 * tests/delete02.sh: Fix typo: need to list archive2, not archive.
2485
2486 * tests/extrac03.sh: Use -P option, so that .. doesn't get diagnosed.
2487
2488 * src/tar.c ("quotearg.h"): New include.
2489 (usage): Now has __attribute__ ((noreturn)).
2490 (confirm): Report errno if we can't open tty.
2491 (confirm, decode_options):
2492 Quote arbitrary strings in diagnostics.
2493 (OVERWRITE_OPTION): New constant.
2494 (long_options, usage, decode_options): New --overwrite option.
2495 (decode_options): --keep-old-files, --overwrite, and --unlink-first
2496 are now mutually exclusive.
2497 Don't assume that gettext preserves errno.
2498 (main): Set default quoting style to escape_quoting_style.
2499
2500 * src/update.c (<quotearg.h>): New include.
2501 (append_file):
2502 Don't assume that gettext preserves errno.
2503 Quote arbitrary strings in diagnostics.
2504 Check for close error.
2505
2506 * src/names.c (<quotearg.h>): New include.
2507 (name_init, name_next, name_close, names_notfound,
2508 collect_and_sort_names): Don't assume that gettext preserves
2509 errno. Quote arbitrary strings in diagnostics.
2510 (excluded_name): Fix typo that caused empty patterns to be
2511 mishandled.
2512
2513 * src/misc.c (<quotearg.h>): New include.
2514 (quote_copy_string): Quote only newline and backslash; the output is no
2515 longer meant for humans, and is locale-independent.
2516 (contains_dot_dot): New function.
2517 (remove_any_file): Don't use lstat; just rmdir the file and then use
2518 unlink if the rmdir fails because the file isn't a directory.
2519 Check for readdir and closedir errors.
2520 (maybe_backup_file): Report "stat" for stat errors.
2521 (maybe_backup_file, chdir_do):
2522 Quote arbitrary strings in diagnostics.
2523 (maybe_backup_file, undo_last_backup):
2524 Don't assume that gettext preserves errno.
2525 (call_arg_error, call_arg_fatal, call_arg_warn,
2526 chdir_fatal, close_error, closedir_error, exec_fatal, mkfifo_error,
2527 mknod_error, open_error, open_fatal, open_warn, opendir_error,
2528 opendir_warn, read_error, read_fatal, readdir_error, readdir_warn,
2529 readlink_error, readlink_warn, seek_error, seek_warn, stat_error,
2530 stat_warn, truncate_error, truncate_warn, unlink_error, waitpid_error,
2531 write_error, write_fatal, xfork, xpipe, quote_n, quote): New functions.
2532
2533 * src/system.h (__attribute__): New macro.
2534 (O_NDELAY, O_NONBLOCK, O_APPEND): Remove.
2535 (S_ISDOOR): New macro.
2536 (closedir): New macro, if CLOSEDIR_VOID.
2537
2538 * src/rmt.c, src/rtapelib.c (decode_oflag):
2539 O_APPEND might not be defined.
2540
2541 * src/list.c: (read_and, list_archive):
2542 Quote arbitrary strings in diagnostics.
2543 (from_header): Use locale_quoting_style to quote diagnostics.
2544 (print_header, print_for_mkdir): Quote with quotearg, not quote_copy_string.
2545
2546 * src/rmt.h (REM_BIAS): Increase from 128 to (1 << 30).
2547
2548 * src/Makefile.am: Use ## for copyright comments.
2549
2550 * src/extract.c (<quotearg.h>): New include.
2551 (enum permstatus): New enum.
2552 (struct delayed_set_stat): file_name is now at end of buffer, to avoid
2553 two mallocs. New members file_name_len, invert_permissions, permstatus.
2554 (extr_init): Remove hack that silently adjusted newdir_umask.
2555 (set_mode, set_stat): New args invert_permissions, permstatus, typeflag.
2556 Use these args to decide whether and how to set modes.
2557 (set_mode, set_stat, prepare_to_extract, extract_sparse_file, extract_archive):
2558 Don't assume that gettext preserves errno.
2559 (set_stat): Remove arg symlink_flag; subsumed by typeflag.
2560 (delay_set_stat, repair_delayed_set_stat): New functions.
2561 (make_directories): Avoid mkdir where last part of path is "..".
2562 Create a struct delayed_set_stat for each directory made.
2563 (prepare_to_extract): Renamed from unlink_destination, and
2564 return 0 immediately if to_stdout_option; all callers changed.
2565 (maybe_recoverable): New parameter interdir_made.
2566 Add support for --overwrite.
2567 (extract_sparse_file, extract_archive):
2568 Quote arbitrary strings in diagnostics.
2569 (extract_archive): By default, warn about ".." in member names, and skip them.
2570 Don't open files with O_NONBLOCK or O_APPEND.
2571 Open with O_TRUNC only if --overwrite; otherwise, use O_EXCL to avoid
2572 overwriting them. Pass only rwxrwxrwx permissions to `open' and `mkdir',
2573 minus the current umask. Keep track of intermediate directories made,
2574 to avoid looping when making x/../x when x doesn't exist; the
2575 earlier code solved this in a different way that didn't fit well
2576 into the new scheme. Don't extract permissions onto existing
2577 directories unless --overwrite is given. Do not add -wx------
2578 permissions to new directories permanently; just do it temporarily.
2579 Remove no-longer-needed hack with MSDOS and directory time stamps.
2580 (apply_delayed_set_stat): New argument specifies which directories to
2581 fix statuses of. Do not wait until the end of extraction to fix
2582 statuses; instead, fix a directory's status once we exit that directory.
2583 This requires less memory and does the right thing in some cases
2584 where the old method didn't.
2585 (fatal_exit): New function.
2586
2587 * src/incremen.c (<quotearg.h>): New include.
2588 (get_directory_contents, gnu_restore):
2589 Check for readdir and closedir errors.
2590 (get_directory_contents, read_directory_file, gnu_restore):
2591 Quote arbitrary strings in diagnostics.
2592 (get_directory_contents, read_directory_file, write_directory_file):
2593 Don't assume that gettext preserves errno.
2594
2595 * src/create.c (<quotearg.h>): New include.
2596 (start_header): Use `member names' to refer to archive member names, not
2597 `archive names'. Warn about `..' in member names.
2598 (finish_sparse_file, dump_file):
2599 Quote arbitrary strings in diagnostics.
2600 (finish_sparse_file, dump_file):
2601 Don't assume that gettext preserves errno.
2602 (dump_file): Don't use `access' to determine whether a directory is readable;
2603 this isn't reliable if tar is setuid. Use `opendir' instead.
2604 Check for readdir and closedir failures.
2605 Don't dump sockets as if they were fifos; just warn and skip.
2606
2607 * src/delete.c (move_archive):
2608 Don't report fatal error merely because sizes don't fit
2609 into struct mtop values; fall back on lseek instead.
2610 Say `Cannot' uniformly, instead of `Could not' sometimes and `Cannot' others.
2611 Say `reposition' instead of `re-position'.
2612 (delete_archive_members):
2613 Set archive to STDOUT_FILENO before outputting trailing buffer.
2614
2615 * src/compare.c (<quotearg.h>): New include.
2616 (diff_init): Use `Cannot' uniformly, instead of `Could not' sometimes
2617 and `Cannot' others.
2618 (report_difference, diff_archive):
2619 Quote arbitrary strings in diagnostics.
2620 (process_rawdata, diff_sparse_files, get_stat_data, diff_archive, seek_warn):
2621 Don't assume that gettext preserves errno.
2622 (diff_archive): Don't open regular files with O_NONBLOCK.
2623 Preserve access times of files if --atime.
2624
2625 * src/common.h (FATAL_ERROR): Use new fatal_exit function to exit.
2626 (FATAL_ERROR, USAGE): Don't return 0.
2627 (enum old files): New enum.
2628 (old_files_option): New variable, replacing keep_old_files_option and
2629 unlink_first_option.
2630 (apply_delayed_set_stat): Now takes char const * param.
2631 (fatal_exit, contains_dot_dot, chdir_fatal, close_error,
2632 closedir_error, exec_fatal, mkfifo_error, mknod_error, open_error,
2633 open_fatal, open_warn, opendir_error, opendir_warn, read_error,
2634 read_fatal, readdir_error, readdir_warn, readlink_error,
2635 readlink_warn, seek_error, seek_warn, stat_error, stat_warn,
2636 truncate_error, truncate_warn, unlink_error, waitpid_error,
2637 write_error, write_fatal, xfork, xpipe, quote, quote_n): New decls.
2638
2639 * src/buffer.c:
2640 (xclose, xdup2, child_open_for_compress, child_open_for_uncompress,
2641 archive_write_error, archive_read_error, flush_archive, close_archive,
2642 init_volume_number, new_volume):
2643 Don't assume that gettext preserves errno.
2644
2645 (xdup2): Don't report errno if dup returns an unexpected nonnegative value.
2646 (open_archive): Reject multivolume verify attempts a bit earlier.
2647 Rename local variable `access', in case it's defined by system header.
2648
2649 (open_archive, backspace_output): Use `Cannot' uniformly, instead of
2650 `Could not' sometimes and `Cannot' others.
2651
2652 (open_archive, flush_read, flush_archive, close_archive, new_volume):
2653 Quote arbitrary strings in diagnostics.
2654
2655 (read_error): Set archive to STDOUT_FILENO temporarily when writing
2656 archive buffer.
2657
2658 (init_volume_number): Check for input and output errors in volno_file.
2659
2660 (new_volume): Use new fatal_exit function to exit, and new xfork
2661 function to fork.
2662
2663 * m4/Makefile.am (EXTRA_DIST): Add c-bs-a.m4.
2664
2665 * Makefile.am (ACINCLUDE_INPUTS): Add $(M4DIR)/c-bs-a.m4.
2666
2667 * doc/tar.texi: Add --overwrite.
2668 --absolute-names rejects ".." in names.
2669
2670 * lib/quotearg.c: Add support for multibyte characters.
2671 (ISGRAPH): Remove.
2672 (ISPRINT): New macro.
2673 (<wchar.h>): Include if HAVE_MBRTOWC && HAVE_WCHAR_H.
2674 (isprint, mbrtowc, mbsinit, mbstate_t): New macros,
2675 defined if ! (HAVE_MBRTOWC && HAVE_WCHAR_H).
2676 (quotearg_buffer_restyled): New function, with most of the old
2677 quotearg_buffer's contents.
2678 Major rewrite to support multibyte characters.
2679 (quotearg_buffer): Now just calls quotearg_buffer_restyled.
2680
2681 * m4/c-bs-a.m4: New file.
2682
2683 * lib/Makefile.am: Use ## for copyright notice.
2684
2685 * scripts/Makefile.am: Use ## on copyright notice.
2686
2687 * doc/Makefile.am:
2688 ($(srcdir)/tar.info, tar.dvi): We now use texinfo 4.0.
2689
2690 1999-12-05 Paul Eggert <eggert@twinsun.com>
2691
2692 * doc/ChangeLog, lib/ChangeLog, scripts/ChangeLog,
2693 src/ChangeLog, tests/ChangeLog: Remove these files.
2694 * ChangeLog.1: New file, incorporating the above files, plus old
2695 ChangeLog entries.
2696 * Makefile.am (EXTRA_DIST): Add ChangeLog.1.
2697
2698 1999-12-05 Dale Worley <worley@ariadne.com>
2699
2700 * src/compare.c (<utime.h>, struct utimbuf): Add.
2701 (diff_archive): Restore access times if --atime.
2702 * doc/tar.texi: Explain that --atime also preserves modification time.
2703
2704 1999-12-04 Gerhard Poul <gpoul@gnu.org>
2705
2706 * ABOUT-NLS: Update to latest version from ftp.gnu.org.
2707 * BACKLOG, TODO: Remove.
2708 * Makefile.am (all-local, BABYL, dist-zoo, id, ID): Remove.
2709 * README: Bring up to date.
2710
2711 1999-12-03 Paul Eggert <eggert@twinsun.com>
2712
2713 * NEWS, configure.in (AM_INIT_AUTOMAKE): Version 1.13.15.
2714
2715 * src/compare.c (diff_archive):
2716 Do not set errno to EPIPE; we no longer use perror.
2717
2718 * src/create.c (dump_file):
2719 If a parent directory said that a file should be there but it is
2720 absent, diagnose it as being removed in the meantime.
2721 Do not pass meaningless errno to ERROR when reporting that the
2722 file changed as we read it.
2723 Report that a file changed if its ctime changes; this is more
2724 sensitive than mtime+size, and more accurate.
2725
2726 * src/incremen.c (enum children): New type.
2727 (struct directory): Change old char allnew member to new enum children
2728 children member.
2729 All uses changed.
2730 (get_directory_contents): When doing an incremental dump that does
2731 not cross filesystem boundaries, dump the mount points, even though
2732 they are in a different filesystem. This is for convenience when
2733 restoring, and for consistency with non-incremental dumps.
2734 This requires a 3-way flag for keeping track of which children we want,
2735 so we use enum children rather than boolean.
2736
2737 * src/open3.c (modes): Remove.
2738 (open3): Remove unportable assumptions about flag encodings.
2739 Use `stat' instead of `access' for testing file existence,
2740 to avoid problems with setuid programs.
2741
2742 * src/names.c (name_next): If file names are given both in the
2743 command line (e.g. via -C) and in a file (via -T), do not
2744 ignore the command-line names.
2745
2746 * m4/uintmax_t.m4: Backport to autoconf 2.13.
2747
2748 * doc/tar.texi: Clarify getdate authorship.
2749
2750 1999-11-23 Paul Eggert <eggert@twinsun.com>
2751
2752 * lib/Makefile.am (DISTCLEANFILES): New macro.
2753
2754 * configure.in (tar_fnmatch_hin):
2755 Remove; it runs afoul of a bug in autoconf 2.13.
2756 Instead, always link fnmatch.h to some file, even if it's a throwaway.
2757
2758 1999-11-19 Paul Eggert <eggert@twinsun.com>
2759
2760 * m4/largefile.m4: Update serial.
2761
2762 1999-11-18 Paul Eggert <eggert@twinsun.com>
2763
2764 * m4/largefile.m4 (AC_SYS_LARGEFILE_FLAGS): Work around a bug in
2765 the QNX shell, which doesn't propagate exit status of failed
2766 commands inside shell assignments.
2767
2768 1999-11-07 Paul Eggert <eggert@twinsun.com>
2769
2770 * NEWS, configure.in (AM_INIT_AUTOMAKE): Version 1.13.14.
2771
2772 * configure.in (AC_PREREQ): Bump to 2.13.
2773 (ALL_LINGUAS): Add pt_BR, ja.
2774 (AC_FUNC_FNMATCH): Remove lib/funmatch.h before invoking, not after.
2775 (tar_cv_path_RSH): Prefer a non-symlink rsh to a symlink one,
2776 for AIX crossbuilds.
2777
2778 * doc/tar.texi: New node create options for --ignore-failed-read.
2779 Remove unused version control symbols.
2780 Modernize texinfo usage.
2781
2782 * src/tar.c (usage): Add examples.
2783
2784 * m4/fnmatch.m4 (AC_FUNC_FNMATCH):
2785 Include fnmatch.h when testing fnmatch.
2786
2787 * src/common.h (collect_and_sort_names): New decl.
2788
2789 * src/list.c (from_header):
2790 Handle 32-bit two's complement negative time stamps
2791 even if the leading octal digit is 2 or 3.
2792
2793 * src/extract.c (set_stat): Remove duplicate code.
2794
2795 * src/create.c (to_chars): Remove trailing newline from warning.
2796 (dump_file): Ignore doors.
2797 (finish_header): Report block numbers with origin 0, not origin 1.
2798
2799 * src/rmt.c: Include getopt.h.
2800 (long_opts): New constant.
2801 (usage): New function.
2802 (main): Implement --help and --version.
2803 Output usage message if arguments are bad.
2804
2805 1999-10-10 Paul Eggert <eggert@twinsun.com>
2806
2807 * NEWS, configure.in (AM_INIT_AUTOMAKE): Version 1.13.13.
2808
2809 * README: Remove --with-dmalloc.
2810 Add --disable-largefile.
2811 Remove old NeXT dirent problems, or AIX valloc problems.
2812 Remove old union wait advice, and old %lld advice.
2813 Remove advice about FreeBSD 2.1.7, ISC 4.1mu, Ultrix `make'.
2814
2815 * doc/tar.texi: Clarify documentation for portable file names.
2816
2817 * configure.in (AM_WITH_DMALLOC): Remove.
2818 (ALL_LINGUAS): Add ja.
2819
2820 * src/tar.c (decode_options):
2821 Invalid dates are now treated as (time_t) -1.
2822 Redo version message to conform to GNU standards.
2823
2824 * src/create.c (dump_file):
2825 Fix typo: last two args to dump_file were interchanged.
2826 * src/update.c (update_archive): Likewise.
2827
2828 * src/common.h (tartime): New decl.
2829
2830 * src/list.c (tartime): Now extern.
2831 (read_and): Invalid headers cause errors, not warnings.
2832
2833 1999-10-03 Paul Eggert <eggert@twinsun.com>
2834
2835 * lib/getdate.y (__attribute__):
2836 Don't use if GCC claims to be before 2.8; this is
2837 needed for OPENStep 4.2 cc. Also, don't use if strict ANSI.
2838
2839 1999-09-25 Paul Eggert <eggert@twinsun.com>
2840
2841 * lib/fnmatch.c, lib/fnmatch.hin: Merge changes from latest glibc.
2842 * lib/getopt.c, lib/getopt.h, lib/getopt1.c: Likewise.
2843
2844 * tests/incremen.sh: Add yet another sleep.
2845
2846 1999-09-24 Paul Eggert <eggert@twinsun.com>
2847
2848 * NEWS: A read error now causes a nonzero exit status.
2849
2850 * src/create.c (to_chars): Fix base-256 output.
2851
2852 * src/buffer.c (write_error):
2853 Read error is an error, not just a warning.
2854
2855 1999-09-24 Paul Eggert <eggert@twinsun.com>
2856
2857 * NEWS, configure.in (AM_INIT_AUTOMAKE): Version 1.13.12.
2858
2859 * src/tar.c (<time.h>): Include.
2860 (time): Declare if not defined.
2861 (confirm): Don't read past EOF.
2862 (long_options, usage): Add --no-same-owner, --no-same-permissions.
2863 (main): Use clock_gettime if available.
2864
2865 * tests/Makefile.am (TESTS): Add incremen.sh
2866 (INCLUDES): Add -I../lib, for fnmatch.h.
2867
2868 * src/update.c (update_archive):
2869 Remove call to name_expand; had no effect.
2870 Use chdir_do to change into directory.
2871 Use deref_stat instead of stat.
2872 Use add_avoided_name to mark names to be avoided; the old method of
2873 setting a bit with the name caused all descendants of that name to
2874 be avoided, in some circumstances.
2875
2876 * tests/incremen.sh: Remove unnecessary sleeps.
2877
2878 * src/names.c (name_next): Go back to using plain chdir.
2879 (name_gather): Use chdir_arg to keep track of arguments to chdir.
2880 (addname): Likewise.
2881 (name_match): Use chdir_do to act on chdir args.
2882 (merge_sort): Moved here from incremen.c.
2883 (compare_names, add_hierarchy_to_namelist, collect_and_sort_names):
2884 Likewise.
2885 (name_expand): Remove.
2886 (name_from_list): Skip fake names.
2887 Use chdir_do to act on chdir args.
2888 (struct avoided_name): New struct.
2889 (avoided_names): New var.
2890 (add_avoided_name, is_avoided_name): New functions.
2891
2892 * src/system.h (stat, lstat): Define in terms of statx on
2893 STX_HIDDEN && !_LARGE_FILES /* AIX */ hosts.
2894 (UCHAR_MAX): New macro.
2895 (TYPE_MAXIMUM): Cast to arg type, for types narrow than int.
2896
2897 * m4/largefile.m4: Work around GCC 2.95.1 bug with HP-UX 10.20.
2898
2899 * src/incremen.c (<time.h>): Remove include; no longer used.
2900 (time): Remove decl.
2901 (time_now): Remove.
2902 (get_directory_contents): Use deref_stat.
2903 Consider a subdirectory to be all new only if
2904 listed_incremental_option or if it its timestamp is newer than the
2905 cutoff.
2906 (add_hierarchy_to_namelist, merge_sort): Move to names.c.
2907 (read_directory_file): Now extern. Do not set time_now.
2908 (write_directory_file): Renamed from write_dir_file.
2909 Use start_time instead of time_now.
2910 (compare_names, collect_and_sort_names): Move to names.c.
2911
2912 * src/mangle.c (<time.h>): Remove; not used.
2913 (time): Do not declare.
2914
2915 * src/misc.c (chdir_from_initial_wd): Remove.
2916 (deref_stat): New function.
2917 (struct wd): New struct.
2918 (wd, wds, wd_alloc): New variables.
2919 (chdir_arg, chdir_do): New function.
2920
2921 * src/compare.c (get_stat_data): Use deref_stat.
2922
2923 * src/common.h (name_expand): Remove.
2924
2925 * src/list.c (time): Declare if not defined.
2926 (base_64_digits): Moved here from create.c.
2927 (base64_map): Use UCHAR_MAX for size, not less-clear (unsigned char)
2928 -1.
2929 (read_and): Don't get time from header unless we need it now;
2930 as getting time can cause duplicate diagnostics if bogus.
2931 Remove "Hmm, " from diagnostic.
2932 Use "Skipping to next header" uniformly.
2933 (from_header): Renamed from from_chars. All uses changed.
2934 Allow different forms for unportable 2's complement numbers.
2935 Don't check for extended forms when parsing checksums.
2936 Parse base-256 output.
2937 (gid_from_header): Renamed from gid_from_chars. All uses changed.
2938 (major_from_header): Renamed from major_from_chars. All uses changed.
2939 (minor_from_header): Renamed from minor_from_chars. All uses changed.
2940 (mode_from_header): Renamed from mode_from_chars. All uses changed.
2941 (off_from_header): Renamed from off_from_chars. All uses changed.
2942 (size_from_header): Renamed from size_from_chars. All uses changed.
2943 (time_from_header): Renamed from time_from_chars. All uses changed.
2944 Warn about future timestamps.
2945 (uid_from_header): Renamed from uid_from_chars. All uses changed.
2946 (uintmax_from_header): Renamed from uintmax_from_chars.
2947 All uses changed.
2948 (tartime): New function, incorporating isotime.
2949 (isotime): Delete.
2950 (print_header): Use tartime.
2951
2952 * src/create.c (to_chars): Fix typo in decl.
2953 Don't assign through char const *.
2954 Rename name_expand back to collect_and_sort_names.
2955
2956 * src/extract.c (<time.h>): No need to include.
2957 (time): No need to declare.
2958 (now): Remove variable.
2959 (extr_init): Don't initialize `now'.
2960 Increment same_permissions_option and same_owner_option if we_are_root
2961 is nonzero; this supports the new --no-same-owner option.
2962 (set_stat): Use start_time instead of `now'.
2963
2964 * src/create.c (struct link): Remove unused linkcount member.
2965 (base_64_digits): Move to list.c.
2966 (base_8_digits): Remove.
2967 (to_octal): New function, with some of old contents of to_base.
2968 (to_base): Remove.
2969 (to_base256): New function.
2970 (to_chars): Use base 256, not base 64, for huge values.
2971 (mode_to_chars): Don't use two's complement in GNU format or POSIX
2972 format.
2973 (dump_file): Interchange last two arguments. If TOP_LEVEL is negative,
2974 it means we have an incremental dump where we don't know whether this
2975 is a top-level call.
2976 Use deref_stat instead of statx / stat / lstat.
2977 Cast result of alloca.
2978 Check for dates if 0 < top_level, not if listed_incremental_option.
2979 Move multiple-link check after directory check.
2980 Do not dump avoided names.
2981 Dump hard links to symbolic names as links, not as separate
2982 symbolic links.
2983 start_header cannot return a null pointer, so don't test for it.
2984 Likewise for find_next_block.
2985
2986 * src/buffer.c, src/common.h (<human.h>): Include.
2987 (read_error): Read error is an error, not just a warning.
2988 (print_total_written): Also print human-readable byte count, and
2989 bytes/s.
2990 (open_archive, flush_write): Use start_time, not current time.
2991 (flush_read): Report about garbage bytes ignored at end of archive,
2992 but act on non-garbage bytes (instead of ignoring them).
2993 (new_volume): Use WARN for warnings.
2994
2995 * doc/Makefile.am:
2996 ($(srcdir)/tar.info): Add -I$(srcdir) so that subdir builds work.
2997
2998 * Makefile.am (ACINCLUDE_INPUTS): Add $(M4DIR)/fnmatch.m4.
2999
3000 * m4/Makefile.am (EXTRA_DIST): Add fnmatch.m4.
3001
3002 * lib/Makefile.am (noinst_HEADERS):
3003 Rename fnmatch.h to fnmatch.hin; add human.h.
3004 (libtar_a_SOURCES): Add human.c, xstrtoul.c.
3005 (INCLUDES): Remove -I.. -I$(srcdir) -- automake adds this for us.
3006
3007 * src/Makefile.am (rmt_LDADD, tar_LDADD): New macros.
3008
3009 * lib/fnmatch.c (strchrnul):
3010 Define to __strchrnul if _LIBC, to our own replacement otherwise.
3011 Do not define if !_LIBC and if it already exists.
3012 (internal_fnmatch): Use it.
3013
3014 * configure.in (tar_LDADD): New variable, used only when linking tar.
3015 (rmt_LDADD): Similarly, for rmt.
3016 (AC_FUNC_FNMATCH): Link fnnmatch.hin to fnmatch.h if we're using our
3017 fnmatch.c; otherwise, use the system fnmatch.h.
3018
3019 * doc/tar.texi: Add --no-same-owner, --no-same-permissions.
3020 Modernize sample backup script.
3021
3022 * THANKS: Martin Goik's email address has changed.
3023
3024 * m4/fnmatch.m4: New file.
3025
3026 1999-09-03 Paul Eggert <eggert@twinsun.com>
3027
3028 * lib/lchown.h (ENOSYS): Don't use ENOMSG; it's not in NeXTStep3.3.
3029 Use EINVAL instead.
3030
3031 1999-08-29 Paul Eggert <eggert@twinsun.com>
3032
3033 * lib/getdate.y (get_date):
3034 Rename outermost local `probe' to `quarter'.
3035 Rename latter local `tm' to probe_tm.
3036 From: Jim Meyering <meyering@ascend.com>
3037 Message-ID: <uryn1vafyyc.fsf@ixi.eng.ascend.com>
3038
3039 1999-08-28 Paul Eggert <eggert@twinsun.com>
3040
3041 * lib/getdate.y (PC): New macro; use it when possible.
3042 (number): Handle `Nov 11 1996' example correctly.
3043 See Risks Digest 20.55 (1999-08-27)
3044 http://catless.ncl.ac.uk/Risks/20.55.html#subj18
3045
3046 1999-08-23 Paul Eggert <eggert@twinsun.com>
3047
3048 * NEWS, configure.in (AM_INIT_AUTOMAKE): Version 1.13.11.
3049
3050 Remove minor cases of lint from many source files: this includes
3051 unnecessary casts, uses of NULL, etc.
3052
3053 * configure.in (AC_PROG_YACC): Remove.
3054 (YACC): Always use bison.
3055 (AC_STRUCT_TIMEZONE): Add.
3056 (AC_REPLACE_FUNCS): Add strcasecmp, strncasecmp.
3057
3058 * doc/tar.texi: --bzip2 is now -I. Remove obsolete time zone info.
3059 Fix spelling.
3060
3061 * lib/Makefile.am (EXTRA_DIST): Add strcasecmp.c, strncasecmp.c.
3062 ($(srcdir)/getdate.c): Rename y.tab.c to getdate.c only if successful.
3063
3064 * lib/strcasecmp.c, lib/strncasecmp.c: New files.
3065
3066 * src/common.h (merge_sort): Remove decl; no longer exported.
3067
3068 * src/system.h (voidstar): Remove.
3069 (memcpy, memcmp): Cast args.
3070 ("xalloc.h"): Add include.
3071 (xmalloc, xrealloc): Remove decl.
3072
3073 * src/mangle.c (time): Do not declare if defined.
3074 (first_mangle, mangled_num): Remove.
3075
3076 * src/list.c (from_chars): Report out-of-range values more precisely.
3077 (off_from_chars): Do not allow negative offsets.
3078 (uid_from_chars): Allow negative uids.
3079
3080 * src/create.c (linklist): Now static.
3081 (to_chars): Fix wording of message to match from_chars.
3082
3083 * src/misc.c (merge_sort): Move to incremen.c.
3084 * src/incremen.c (merge_sort): Move here from misc.c; now static.
3085 It's too painful to make it both generic and portable.
3086 (read_directory_file): "timestamp" -> "time stamp" in messages.
3087
3088 * src/tar.c (long_options, usage, main): -y is now -I (for --bzip).
3089 (usage): Fix misspelling.
3090 (OPTION_STRING): -y is now -I.
3091 (decode_options): Use -1, not EOF, for getopt_long result.
3092 Fix typo when invoking xstrtoumax: look for LONGINT_OK, not LONG_MAX.
3093 Handle operands after any "--" argument.
3094 (main): Report any output errors.
3095
3096 * src/rmt.c (main): status is ssize_t, not long.
3097
3098 * src/names.c (name_gather): Handle trailing -C option correctly.
3099 (addname): use memcpy, not strncpy, to copy a string of known length.
3100 (name_match): Handle trailing -C option correctly.
3101 Propagate -C option to following files.
3102 (name_match, name_scan): Remove redundant matching code.
3103
3104 * src/buffer.c (open_archive): Use American spelling in diagnostic.
3105
3106 * lib/getdate.y: Major rewrite. Add copyright notice.
3107 (<stdio.h>): Include only if testing.
3108 (ISUPPER): Remove.
3109 (ISLOWER): New macro.
3110 (<string.h>): Include if HAVE_STRING_H, not USG.
3111 (bcopy): Remove.
3112 (yymaxdepth, ..., yycheck): Don't bother to redefine, since we assume
3113 bison.
3114 (EPOCH_YEAR): Renamed from EPOCH.
3115 (table): Renamed from TABLE.
3116 (meridian): Now an anonymous enum.
3117 (struct parser_control): New type.
3118 (YYLEX_PARAM, YYPARSE_PARAM, YYSTYPE): New macros.
3119 (yyInput, ..., yyRelYear): Migrated into struct parser_control.
3120 (%pure_parser): Added, so that the parser is pure.
3121 (%union): Removed; the type is now just plain int.
3122 All %type directives removed.
3123 (tLOCAL_ZONE): New %token.
3124 (month_day_table): Renamed from MonthDayTable.
3125 (gmtime, localtime, mktime, time): Declare only if not defined.
3126 (meridian_table): New table.
3127 (dst_table): New table.
3128 (units_table): renamed from UnitsTable.
3129 (relative_time_table): Renamed from OtherTable.
3130 (time_zone_table): Renamed from TimezoneTable. Modernized.
3131 (military_table): Renamed from MilitaryTable.
3132 (to_hour): Renamed from ToHour.
3133 (to_year): Renamed from ToYear.
3134 (lookup_zone): New function.
3135 (LookupWord): Renamed from lookup_word. Use lookup_zone for time
3136 zones.
3137 (yylex): Now reentrant. All callers changed.
3138 (get_date): Add support for local time zone abbreviations.
3139 Make it reentrant.
3140
3141 1999-08-20 Paul Eggert <eggert@twinsun.com>
3142
3143 * NEWS, configure.in (AM_INIT_AUTOMAKE): Version 1.13.10.
3144
3145 * src/create.c (to_chars): Generate GNU base-64 representation
3146 if we are generating an old or new GNU format tar file for a
3147 number that can't be represented with the POSIX format.
3148
3149 * configure.in (AC_CHECK_FUNCS): Add fchdir.
3150 (AM_FUNC_GETLINE): Add.
3151 (LIBOBJS): Add getline.o to workaround comment.
3152 * Makefile.am (ACINCLUDE_INPUTS): Add $(M4DIR)/getline.m4.
3153 * m4/Makefile.am (EXTRA_DIST): Add getline.m4.
3154 * lib/Makefile.am (noinst_HEADERS): Add getline.h, save-cwd.h.
3155 (libtar_a_SOURCES): Add save-cwd.c, xgetcwd.c.
3156 * lib/getline.c, lib/getline.h, lib/save-cwd.c,
3157 lib/save-cwd.h, m4/getline.m4: New files.
3158
3159 * src/misc.c (<save-cwd.h>): Include.
3160 (chdir_from_initial_wd): New function.
3161
3162 * src/names.c (name_next): Use chdir_from_initial_wd, not chdir.
3163 (name_gather): Handle `-C x -C y' correctly.
3164 Do not rely on addname to handle -C.
3165 (addname): New CHANGE_DIR parameter. All callers changed.
3166 Remove ugly calls to getcwd; no longer needed.
3167 (name_match, name_from_list): Use chdir_from_initial_wd, not chdir.
3168
3169 * src/incremen.c (listed_incremental_stream): New var.
3170 (read_directory_file): Remove arbitrary limits on file name length.
3171 Do not attempt to get the working directory; we can bypass this
3172 on fchdir hosts. Open the listed_incremental_option file for both
3173 read and write instead of opening it twice. Check for I/O errors
3174 when doing I/O to this file. Check for invalid data in the file,
3175 and report line numbers of invalid data.
3176 (write_dir_file): Likewise.
3177 (collect_and_sort_names): Use chdir_from_initial_wd, not chdir.
3178 Do not invoke write_dir_file; that's our caller's responsibility.
3179
3180 * src/list.c (max): New macro.
3181 (isotime): Now takes time_t, not time_t *. Report the decimal values
3182 of times that can't be broken down.
3183 (print_header): Don't assume that major and minor device numbers can
3184 fit into uintmax_t.
3185
3186 * src/common.h (struct name): change_dir is now char const *.
3187 (write_directory_file): Remove unused decl.
3188 (STRINGIFY_BIGINT): Assume b always points to UINTMAX_STRSIZE_BOUND
3189 chars; the old `sizeof (b)' broke when b was a pointer not an array.
3190 (chdir_from_initial_wd): New decl.
3191 (addname): New 2nd arg.
3192
3193 * THANKS: Torsten Lull -> Catrin Urbanneck
3194
3195 1999-08-18 Paul Eggert <eggert@twinsun.com>
3196
3197 * configure.in (HAVE_GETHOSTENT, HAVE_SETSOCKOPT):
3198 Don't depend on ac_cv_func variables.
3199 From Albert Chin-A-Young <china@thewrittenword.com>.
3200
3201 1999-08-18 Paul Eggert <eggert@twinsun.com>
3202
3203 * NEWS, configure.in (AM_INIT_AUTOMAKE): Version 1.13.9
3204
3205 * m4/signedchar.m4: New file.
3206 * configure.in (pe_AC_TYPE_SIGNED_CHAR): Add.
3207 * src/system.h (signed_char): New macro.
3208 * Makefile.am (ACINCLUDE_INPUTS): Add $(M4DIR)/signedchar.m4.
3209 * m4/Makefile.am (EXTRA_DIST): Add signedchar.m4.
3210
3211 * src/create.c (write_eot): Write at least two zero blocks.
3212
3213 * src/extract.c (extract_archive): Fix sparse array bug:
3214 we did not find end of array correctly.
3215
3216 * src/compare.c: (fill_in_sparse_array, diff_sparse_files):
3217 Don't assume find_next_block yields nonnull.
3218 * src/extract.c (extract_sparse_file, extract_archive): Likewise.
3219 * src/list.c (skip_extended_headers): Likewise.
3220
3221 * src/list.c (read_and, list_archive): Simplify code.
3222 (read_header): Fix computation of signed checksums on machines where
3223 char is unsigned.
3224 Do not consider a block to be zero unless all its bytes are zero,
3225 even the checksum bytes. Do not attempt to parse the checksum of
3226 a zero block. Fix memory leak with long names and links.
3227 (from_chars): Accommodate a buggy tar that outputs leading NUL
3228 if the previous field overflows.
3229
3230 * src/misc.c (quote_copy_string): Generate \177 for '\177', not
3231 \?, for portability to non-ASCII hosts.
3232
3233 1999-08-16 Paul Eggert <eggert@twinsun.com>
3234
3235 * configure.in (AM_INIT_AUTOMAKE), NEWS: Version 1.13.8.
3236
3237 * src/extract.c (make_directories): Do not chown intermediate
3238 directories, even if we are root.
3239
3240 * src/list.c (read_header): Fix bugs when interpreting
3241 POSIX-compliant headers that do not contain null bytes in the
3242 header or link names.
3243
3244 1999-08-14 Paul Eggert <eggert@twinsun.com>
3245
3246 * configure.in (AM_INIT_AUTOMAKE), NEWS: Version 1.13.7.
3247
3248 * configure.in (AC_CHECK_HEADERS): Remove sys/wait.h.
3249 (AC_HEADER_SYS_WAIT): Add.
3250 (AC_REPLACE_FUNCS): Add waitpid.
3251 (tar_cv_header_union_wait, HAVE_UNION_WAIT): Remove.
3252 * lib/waitpid.c: New file.
3253 * lib/Makefile.am (EXTRA_DIST): Add waitpid.c.
3254 * src/system.h (WCOREDUMP): Remove; no longer used.
3255 (WIFSTOPPED): Likewise.
3256 (WEXITSTATUS, WIFSIGNALED): Default to Solaris 7 versions.
3257 * src/buffer.c (child_open_for_compress): Undo previous change.
3258 (close_archive): Use waitpid, POSIX-style, instead of old BSD style.
3259 (new_volume): Likewise.
3260
3261 * src/buffer.c, src/extract.c, src/incremen.c (time):
3262 Don't declare if defined.
3263 * src/extract.c (extr_init): Remove unneeded cast around 0 arg to time.
3264 * src/incremen.c (read_directory_file):
3265 Invoke `time' the same way everyone else does.
3266 Check validity of --listed-incremental file contents a bit better.
3267 Do not worry about --after-date-option; tar.c now checks this.
3268 * src/list.c (isotime): Report ??? if localtime returns null.
3269 Don't assume years fit into four digits.
3270 Don't append trailing newline.
3271 (print_header): Report ??? if localtime returns null;
3272 Don't assume years fit into four digits.
3273
3274 * src/compare.c (diff_archive): Do not fall back on absolute name
3275 when --absolute-names is not specified.
3276
3277 * src/create.c (start_header):
3278 Include text of ignored filesystem prefix in warning.
3279 (create_archive): Check for excluded names when doing incremental
3280 pass through directory.
3281 (dump_file): Do not dump old files explicitly given on command line
3282 when using --listed-incremental. Do not strip ./ prefix from names.
3283
3284 * src/tar.c: -g now implies after_date_option = 1.
3285 -g and -N are now incompatible options.
3286
3287 * doc/tar.texi: Explain --exclude better. Don't strip leading `./'.
3288
3289 1999-08-11 Jeff Dairiki <dairiki@dairiki.org>
3290
3291 * src/list.c (read_header): Don't parse OLDGNU_FORMAT
3292 incremental headers as POSIX prefixes.
3293
3294 1999-08-11 Paul Eggert <eggert@twinsun.com>
3295
3296 * NEWS, configure.in: Version 1.13.6.
3297
3298 * configure.in (ALL_LINGUAS): Add pt_BR.
3299 * po/pt_BR.po: New file.
3300
3301 * doc/Makefile.am ($(srcdir)/tar.info, $(srcdir)/header.texi):
3302 Renamed from tar.info and header.texi; adjust actions so that
3303 they work in other directories.
3304
3305 * doc/tar.texi: Add -y and --bzip2.
3306 Patterns containing / now exclude only file names whose prefix match.
3307
3308 * lib/exclude.h (excluded_filename): New option parameter.
3309 (add_exclude_file): New ADD_FUNC parameter.
3310 (excluded_pathname): Remove decl.
3311 * lib/exclude.c (_GNU_SOURCE):
3312 Remove; no longer needed since we don't use FNM_ macros.
3313 (excluded_filename): Renamed from excluded_filename_opts.
3314 (excluded_filename, excluded_pathname): Remove.
3315 (add_exclude_file): New ADD_FUNC parameter.
3316
3317 * po/POTFILES.in: Add lib/quotearg.c.
3318
3319 * src/buffer.c (_GNU_SOURCE): Define.
3320 (<fnmatch.h>): Include unconditionally.
3321 (child_open_for_compress): Dup after closing, to avoid possible file
3322 descriptor exhaustion.
3323 (flush_write): Use FILESYSTEM_PREFIX_LEN instead of MSDOS ifdef.
3324 (flush_read): Likewise.
3325
3326 * src/common.h (LG_8, LG_64): New macros.
3327 (excluded_with_slash, excluded_without_slash): New vars.
3328 (excluded): Remove.
3329 (base_64_digits): New decl.
3330 (gid_to_chars, major_to_chars, minor_to_chars, mode_to_chars,
3331 off_to_chars, size_to_chars, time_to_chars, uid_to_chars,
3332 uintmax_to_chars,
3333 GID_TO_CHARS, MAJOR_TO_CHARS, MINOR_TO_CHARS, MODE_TO_CHARS,
3334 OFF_TO_CHARS, SIZE_TO_CHARS, TIME_TO_CHARS, UID_TO_CHARS,
3335 UINTMAX_TO_CHARS):
3336 Renamed from gid_to_oct, major_to_oct, minor_to_oct, mode_to_oct,
3337 off_to_oct, size_to_oct, time_to_oct, uid_to_oct, uintmax_to_oct,
3338 GID_TO_OCT, MAJOR_TO_OCT, MINOR_TO_OCT, MODE_TO_OCT, OFF_TO_OCT,
3339 SIZE_TO_OCT, TIME_TO_OCT, UID_TO_OCT, UINTMAX_TO_OCT,
3340 respectively. All definitions and uses changed.
3341 (excluded_name): New decl.
3342
3343 * src/compare.c (diff_archive):
3344 Open files with O_NONBLOCK instead of O_NDELAY.
3345
3346 * src/create.c (base_64_digits): New constant.
3347 (base_8_digits): New macro.
3348 (MAX_VAL_WITH_DIGITS): New macro.
3349 (to_base): First half of old to_oct. Support base 64 too.
3350 (to_chars): Other half of old to_oct, for 64-bit support.
3351 (GID_NOBODY, UID_NOBODY): Don't define if the headers don't.
3352 (gid_substitute, uid_substitute): Look up names dynamically if
3353 GID_NOBODY and UID_NOBODY aren't defined; use -2 if all else fails.
3354 (mode_to_chars): Renamed from mode_to_oct.
3355 Support negative values in all the _to_chars functions.
3356 (start_header): Use FILESYSTEM_PREFIX_LEN instead of MSDOS ifdef.
3357 Abort if archive format is DEFAULT_FORMAT when it shouldn't be.
3358 (dump_file): Inspect entire pathname, not just new file name
3359 component, when deciding whether to exclude it.
3360
3361 * src/extract.c (extract_archive):
3362 Open files with O_NONBLOCK instead of O_NDELAY.
3363
3364 * src/incremen.c (get_directory_contents):
3365 Inspect entire pathname, not just new file name
3366 component, when deciding whether to exclude it.
3367
3368 * src/list.c (<fnmatch.h>): Do not include.
3369 (from_chars): Renamed from from_oct. New parameter specifying
3370 the negative of the minimum allowed value. Support negative
3371 and base-64 values.
3372 (base64_map): New var.
3373 (base64_init): New function.
3374 (print_header): Output numeric uids and gids if numeric_owner_option.
3375
3376 * src/misc.c (quote_copy_string): Use LG_8 instead of constants.
3377
3378 * src/names.c (_GNU_SOURCE): Define.
3379 (<fnmatch.h>): Include unconditionally.
3380 (excluded_name): New function, taking over duties of excluded_pathname.
3381 All uses changed.
3382
3383 * src/rmt.c (decode_oflag): New function.
3384 (main): Use it to support symbolic open flags.
3385
3386 * src/rtapelib.c (encode_oflag): New function.
3387 (rmt_open__): Do not allow newlines in the path.
3388 Propagate errno correctly.
3389 Decode symbolic open flags, if present.
3390
3391 * src/system.h (FILESYSTEM_PREFIX_LEN, ISSLASH, O_ACCMODE, O_NONBLOCK):
3392 New macros.
3393
3394 * src/tar.c: (long_options, usage, OPTION_STRING, decode_options):
3395 New -y or --bzip2 option.
3396 (add_filtered_exclude): New function.
3397 (decode_options): Put excluded patterns with / into
3398 excluded_with_slash, and without / into excluded_without_slash.
3399 Compare newer_mtime_option to its new initial value
3400 TYPE_MINIMUM (time_t) when deciding whether more than one
3401 threshold date was specified.
3402
3403 1999-07-20 Paul Eggert <eggert@twinsun.com>
3404
3405 * NEWS, configure.in: Version 1.13.5.
3406
3407 * src/common.h (FATAL_ERROR): Invoke apply_delayed_set_stat
3408 before exiting.
3409 * src/buffer.c (new_volume): Likewise.
3410 * src/incremen.c (read_directory_file): Likewise.
3411 * src/tar.c (decode_options):
3412 ERROR ((TAREXIT_FAILURE, ... -> FATAL_ERROR ((0,
3413 for consistency.
3414
3415 * NEWS, configure.in (AM_INIT_AUTOMAKE): Version 1.13.4.
3416 * configure.in (AC_CHECK_FUNCS): Add lstat, readlink, symlink.
3417
3418 * src/system.h (lstat): Define only if !HAVE_LSTAT && !defined lstat.
3419 (S_ISMPB, S_ISMPC, S_ISNWK): Remove unused macros.
3420 (S_ISBLK, S_ISCHR, S_ISCTG, S_ISFIFO, S_ISLNK, S_ISSOCK):
3421 Define to 0 if the corresponding S_IF* macro is not defined.
3422 (mkfifo): Do not define if already defined, or if S_IFIFO
3423 is not defined.
3424
3425 * src/compare.c (diff_archive): Use HAVE_READLINK, not
3426 S_ISLNK, to determine whether to invoke readlink.
3427 * src/create.c (dump_file): Likewise.
3428
3429 * src/extract.c (set_mode):
3430 Do not chmod unless we are root or the -p option was given;
3431 this matches historical practice.
3432 (unlink_destination): New function, which checks for unlink failures.
3433 (maybe_recoverable): Stay quiet if -U.
3434 (extract_archive): Use O_EXCL if unlink_first_option.
3435 Report unlink failures.
3436 Use HAVE_SYMLINK, not S_ISLNK, to determine whether symlink exists.
3437 Use HAVE_MKFIFO || defined mkfifo, not S_ISFIFO, to determine whether
3438 mkfifo exists.
3439
3440 * src/incremen.c (get_directory_contents): Depend on
3441 S_ISHIDDEN, not AIX, to determine whether to invoke S_ISHIDDEN.
3442
3443 * src/list.c: Remove S_IS* ifdefs.
3444 * src/misc.c (maybe_backup_file): Likewise.
3445
3446 * src/misc.c (maybe_backup_file):
3447 "Virtual memory exhausted" -> "Memory exhausted",
3448 to conform to the other places this message is issued.
3449
3450 * src/mangle.c (extract_mangle):
3451 Replace #ifdef S_ISLNK with #ifdef HAVE_SYMLINK.
3452
3453 * src/rtapelib.c (rmt_open__):
3454 Remove typo that caused us to omit the first char
3455 of the basename.
3456
3457 1999-07-16 Paul Eggert <eggert@twinsun.com>
3458
3459 * NEWS, configure.in (AM_INIT_AUTOMAKE): version 1.13.3.
3460
3461 * doc/tar.texi: A path name is excluded if any of its file name
3462 components matches an excluded pattern, even if the path name was
3463 specified on the command line.
3464 * src/create.c (create_archive): Likewise.
3465 * src/list.c (read_and): Likewise.
3466 * src/update.c (update_archive): Likewise.
3467 * lib/exclude.h (excluded_pathname): New decl.
3468 * lib/exclude.c (_GNU_SOURCE): Define.
3469 (FILESYSTEM_PREFIX_LEN, ISSLASH): New macros.
3470 (excluded_filename_opts): New function.
3471 (excluded_pathname): New function.
3472
3473 * lib/Makefile.am (EXTRA_DIST):
3474 xstrtol.c moved here from libtar_a_SOURCES.
3475 (libtar_a_SOURCES): Move xstrtol.c to EXTRA_DIST.
3476 Remove xstrtoul.c; no longer needed.
3477 * lib/xstrtol.c: Remove.
3478
3479 * src/tar.c (decode_options):
3480 Set newer_time_option to TYPE_MINIMUM, so that
3481 negative timestamps are handled correctly.
3482 Replace invocations of xstrtol and xstrtoul with xstrtoumax, for
3483 uniformity (and so that we don't need to have the other fns).
3484 (main): Remove call to init_total_written; no longer needed.
3485
3486 * configure.in (AC_CHECK_SIZEOF): Remove no-longer-needed
3487 checks for unsigned long and long long.
3488 * src/arith.c: Remove.
3489 * src/Makefile.am (tar_SOURCES): Remove arith.c.
3490 * po/POTFILES.in: Remove src/arith.c.
3491 * src/arith.h: Use double, to simplify configuration gotchas.
3492 (tarlong): Now double.
3493 (TARLONG_FORMAT): New macro.
3494 (BITS_PER_BYTE, BITS_PER_TARLONG, SUPERDIGIT, BITS_PER_SUPERDIGIT,
3495 LONGS_PER_TARLONG, SIZEOF_TARLONG, struct tarlong,
3496 zerop_tarlong_helper, lessp_tarlong_helper, clear_tarlong_helper,
3497 add_to_tarlong_helper, mult_tarlong_helper, print_tarlong_helper,
3498 zerop_tarlong, lessp_tarlong, clear_tarlong, add_to_tarlong,
3499 mult_tarlong, print_tarlong): Remove. All callers replaced with
3500 arithmetic ops.
3501
3502 * src/common.h (init_total_written): Remove decl.
3503
3504 * src/buffer.c (total_written):
3505 Remove; replaced with prev_written + bytes_written.
3506 (prev_written): New var.
3507 (init_total_written): Remove.
3508 (print_total_written): Use TARLONG_FORMAT instead of print_tarlong.
3509
3510 * m4/ulonglong.m4 (jm_AC_TYPE_UNSIGNED_LONG_LONG):
3511 Make sure that we can shift, multiply
3512 and divide unsigned long long values; Ultrix cc can't do it.
3513
3514 * lib/modechange.c (mode_compile): Use uintmax_t, not unsigned long.
3515 Check for any unknown bits, not just unknown bits left of the leftmost
3516 known bit.
3517
3518 * lib/quotearg.c (quotearg_buffer):
3519 Don't quote spaces if C quoting style.
3520 * src/list.c (from_oct):
3521 Use C quoting style for error; omit trailing NULs.
3522
3523 1999-07-14 Paul Eggert <eggert@twinsun.com>
3524
3525 * configure.in (AM_INIT_AUTOMAKE), NEWS: Version 1.13.2.
3526
3527 * m4/xstrtoumax.m4 (jm_AC_PREREQ_XSTRTOUMAX): Check whether
3528 <inttypes.h> defines strtoumax as a macro (and not as a function).
3529 HP-UX 10.20 does this.
3530
3531 * src/tar.c (usage): tar-bugs@gnu.org -> bug-tar@gnu.org
3532 * PORTS, README, TODO, doc/tar.texi: Likewise.
3533
3534 1999-07-12 Paul Eggert <eggert@twinsun.com>
3535
3536 * configure.in (AM_INIT_AUTOMAKE): Version 1.13.1.
3537 (LIBOBJS): Add mktime.o to automake 1.4 bug workaround.
3538
3539 * src/list.c (decode_header):
3540 Do not assume that S_IFBLK and S_IFCHR are defined.
3541
3542 * src/create.c (start_header): Do not assume S_IFMT is defined.
3543 (dump_file): Remove unnecessary check for screwy apollo lossage.
3544 Do not assume S_IFBLK and S_IFCHR are defined.
3545
3546 * src/extract.c (extract_archive):
3547 Test whether S_IFCHR and S_IFBLK are nonzero,
3548 not whether they are defined, for consistency with other tests.
3549
3550 * src/buffer.c (is_regular_file):
3551 Don't succeed on files that we can't access due to
3552 permissions problems.
3553 (open_archive): Fix wording on fatal error message.
3554 Don't bother to stat /dev/null if the archive is not a character
3555 special device.
3556
3557 * src/compare.c (process_rawdata, diff_sparse_files, diff_archive):
3558 Report an error, not a warning, for I/O errors.
3559 (process_rawdata, process_dumpdir, diff_sparse_files):
3560 Change ungrammatical "Data differs" to "Contents differ".
3561 (get_stat_data): Find hidden files on AIX.
3562 Accept file name as argument; all uses changed.
3563 (get_stat_data, diff_archive): Use system error message for
3564 nonexistent files rather than rolling our own.
3565 (diff_archive): Unknown file types are errors, not warnings.
3566 Normalize spelling of message to "File type differs".
3567 Use get_stat_data to get link status, for consistency.
3568 Do not inspect st_rdev for fifos.
3569 Do not assume st_mode values contain only file types and mode bits.
3570 Check for mode changes and device number changes separately.
3571
3572 * src/update.c (append_file):
3573 Open the file before statting it, to avoid a race.
3574 Complain about file shrinkage only when we reach EOF.
3575
3576 1999-07-08 Paul Eggert <eggert@twinsun.com>
3577
3578 * NEWS, configure.in (AM_INIT_AUTOMAKE): Version 1.13 released.
3579
3580 * configure.in (AC_EXEEXT): Add.
3581
3582 * lib/Makefile.am (noinst_HEADERS):
3583 Add basename.h, exclude.h. Remove full-write.h.
3584 (libtar_a_SOURCES): Add exclude.c.
3585
3586 * lib/basename.h, lib/exclude.c, lib/exclude.h, lib/safe-read.h:
3587 New files.
3588 * lib/full-write.c: Include safe-read.h instead of full-write.h.
3589 * lib/safe-read.h (safe_read): New decl.
3590 * src/rmt.c: Include safe-read.h.
3591 * src/rtapelib.c: Include basename.h, save-read.h.
3592 (rmt_open__): Use base_name to compute base name.
3593
3594 * src/common.h:
3595 Include basename.h, exclude.h; don't include full-write.h.
3596 (exclude_option): Remove decl.
3597 (excluded): New decl.
3598 (add_exclude, add_exclude_file, check_exclude): Remove decls.
3599
3600 * src/list.c (read_and):
3601 Use excluded_filename instead of check_exclude.
3602 Check base name of incoming file name, not entire file name, when
3603 deciding whether to exclude it.
3604
3605 * src/create.c (finish_sparse_file):
3606 Use excluded_filename instead of check_exclude.
3607 Don't bother to stat excluded file names.
3608 * src/incremen.c (get_directory_contents): Likewise.
3609
3610 * src/names.c (exclude_pool, exclude_pool_size,
3611 allocated_exclude_pool_size, simple_exclude_array,
3612 simple_excludes, allocated_simple_excludes,
3613 pattern_exclude_array, pattern_excludes,
3614 allocated_pattern_excludes, add_exclude, add_exclude_file,
3615 check_exclude):
3616 Remove; now done in ../lib/exclude.c.
3617
3618 * src/tar.c (decode_options): Initialize `excluded'.
3619 Use new add_exclude_file and add_exclude functions.
3620
3621 1999-07-05 Paul Eggert <eggert@twinsun.com>
3622
3623 * m4/gettext.m4: Use changequote rather than [[ ]].
3624
3625 * lib/safe-read.c: Renamed from lib/full-read.c.
3626 (safe_read): Renamed from full_read. All uses changed.
3627 * lib/safe-read.h, lib/full-write.h: New files.
3628 * lib/Makefile.am (noinst_HEADERS): Add full-write.h, safe-read.h.
3629 (libtar_a_SOURCES): Rename full-read.c to safe-read.c.
3630 * lib/full-write.c: Include full-write.h.
3631 * src/common.h: Include full-write.h, safe-read.h.
3632 * src/system.h: (full_read, full_write): Remove decls.
3633
3634 * src/Makefile.am (datadir): New var; needed for Solaris gettext.
3635
3636 * src/system.h (bindtextdomain, textdomain): undef before
3637 defining, to avoid preprocessor warnings with --disable-nls
3638 on hosts whose locale.h includes libintl.h.
3639
3640 * lib/xstrtol.c (__strtol): Remove decl; it doesn't work if __strtol
3641 expands to a macro, which occurs in HP-UX 10.20 with strtoumax.
3642 (strtol, strtoul): New decls (for pre-ANSI hosts), to replace
3643 the above decl.
3644
3645 1999-07-02 Paul Eggert <eggert@twinsun.com>
3646
3647 * Makefile.am (ACINCLUDE_INPUTS): Add $(M4DIR)/mktime.m4.
3648 * m4/mktime.m4: New file.
3649 * m4/Makefile.am.in, m4/README: Remove these files.
3650 * m4/Makefile.am (EXTRA_DIST): Add mktime.m4;
3651 remove README, Makefile.am.in.
3652 (Makefile.am): Remove rule; it didn't work in BSD/OS 4.0.
3653 * m4/jm-mktime.m4 (jm_FUNC_MKTIME): Invoke AC_FUNC_MKTIME,
3654 not AM_FUNC_MKTIME.
3655
3656 * src/tar.c: Include signal.h.
3657 (SIGCHLD): Define to SIGCLD if SIGCLD is defined but SIGCHLD is not.
3658 (main): Ensure SIGCHLD is not ignored.
3659
3660 (BACKUP_OPTION, DELETE_OPTION, EXCLUDE_OPTION, GROUP_OPTION,
3661 MODE_OPTION, NEWER_MTIME_OPTION, NO_RECURSE_OPTION, NULL_OPTION,
3662 OWNER_OPTION, POSIX_OPTION, PRESERVE_OPTION, RECORD_SIZE_OPTION,
3663 RSH_COMMAND_OPTION, SUFFIX_OPTION, USE_COMPRESS_PROGRAM_OPTION,
3664 VOLNO_FILE_OPTION, OBSOLETE_ABSOLUTE_NAMES,
3665 OBSOLETE_BLOCK_COMPRESS, OBSOLETE_BLOCKING_FACTOR,
3666 OBSOLETE_BLOCK_NUMBER, OBSOLETE_READ_FULL_RECORDS, OBSOLETE_TOUCH,
3667 OBSOLETE_VERSION_CONTROL): Make sure they can't be valid chars, so
3668 they don't overlap with char codes. Use an enum instead of a lot
3669 of #defines.
3670
3671 * src/system.h (ISASCII): Remove.
3672 (CTYPE_DOMAIN, ISDIGIT, ISODIGIT, ISPRINT, ISSPACE, S_ISUID,
3673 S_ISGID, S_IRUSR, S_IWUSR, S_IXUSR, S_IRGRP, S_IWGRP, S_IXGRP,
3674 S_IROTH, S_IWOTH, S_IXOTH, MODE_WXUSR, MODE_R, MODE_RW,
3675 MODE_RWX, MODE_ALL, SEEK_SET, SEEK_CUR, SEEK_END, CHAR_MAX,
3676 LONG_MAX): New macros.
3677
3678 * src/incremen.c (ISDIGIT, ISSPACE): Remove; now in system.h.
3679 (read_directory_file): Cast ISSPACE arg to unsigned char.
3680 * src/misc.c (ISPRINT): Remove; now in system.h.
3681 (remove_any_file): Add brackets to pacify gcc -Wall.
3682 * src/list.c: Don't include <ctype.h>; system.h already does this.
3683 (ISODIGIT, ISSPACE): Remove; now in system.h.
3684 (decode_header): No need to AND mode with 07777; MODE_FROM_OCT
3685 does this now.
3686 (from_oct): Cast ISSPACE arg to unsigned char.
3687
3688 * src/create.c (mode_to_oct): Translate modes from internal to
3689 external form.
3690 * src/list.c (mode_from_oct): Translate modes from external to
3691 internal form. Do not complain about unrecognized mode bits.
3692 * src/common.h (TSUID, TSGID, TSVTX, TUREAD, TUWRITE, TUEXEC,
3693 TGREAD, TGWRITE, TGEXEC, TOREAD, TOWRITE, TOEXEC): Remove undefs.
3694
3695 * src/extract.c: (extr_init, make_directories, extract_archive):
3696 Do not assume mode bits have traditional Unix values.
3697 * src/list.c (decode_mode): Likewise.
3698 * src/create.c (start_header, dump_file): Likewise.
3699 * src/buffer.c (child_open_for_compress,
3700 child_open_for_uncompress, open_archive, (close_archive): Likewise.
3701 * src/compare.c (diff_archive): Likewise.
3702
3703 * src/extract.c (set_mode): Use %04 not %0.4 format.
3704 (extract_sparse_file): Do not use data_block uninitialized.
3705 Check for lseek failures.
3706
3707 * src/rtapelib.c (rmt_lseek__):
3708 Convert lseek whence values to portable integers on the wire.
3709 * src/rmt.c (main): Likewise. Check for whence values out of range.
3710
3711 * src/create.c (finish_sparse_file): Use lseek whence macros
3712 instead of integers.
3713 * src/buffer.c (backspace_output): Likewise.
3714 * src/compare.c (diff_archive, verify_volume): Likewise.
3715 * src/delete.c (move_archive): Likewise.
3716 * src/extract.c (extract_sparse_file): Likewise.
3717
3718 * src/create.c (dump_file): Do not invoke finish_sparse_file
3719 on a negative file descriptor.
3720
3721 * src/buffer.c: Add braces to pacify gcc -Wall.
3722
3723 * src/compare.c (diff_sparse_files): Report lseek errors.
3724
3725 * configure.in (ALL_LINGUAS): Add cs, es, ru.
3726
3727 * PORTS, TODO: gnu.ai.mit.edu -> gnu.org
3728
3729 * src/arith.c, src/buffer.c (new_volume): Don't put ^G in
3730 message to be internationalized; \a doesn't work with msgfmt.
3731
3732 * src/tar.c (long_options, main, usage, OPTION_STRING):
3733 Remove -E or --ending-file.
3734 * src/list.c (read_and): Likewise.
3735 * src/common.h (ending_file_option): Likewise.
3736 * src/buffer.c (close_archive): Likewise.
3737
3738 * tests/after: Don't run two commands together in a pipeline,
3739 as some old shells mishandle pipeline exit status.
3740
3741 1999-06-28 Paul Eggert <eggert@twinsun.com>
3742
3743 * configure.in (AM_INIT_AUTOMAKE): version 1.12.64015.
3744 * NEWS: Describe changes since 1.12.
3745 * README: Update bug reporting address; move paxutils ref to NEWS.
3746
3747 Handle EINTR correctly.
3748 * lib/Makefile.am (libtar_a_SOURCES): Add full-read.c, full-write.c.
3749 * lib/full-read.c, lib/full-write.c: New files.
3750 * src/buffer.c (child_open_for_compress, child_open_for_uncompress):
3751 Prefer full_read to read and full_write to write.
3752 * src/compare.c (process_rawdata, diff_sparse_files): Likewise.
3753 * src/create.c (deal_with_sparse, finish_sparse_file, dump_file):
3754 Likewise.
3755 * src/extract.c (extract_sparse_file): Likewise.
3756 * src/rmt.c (get_string, main, report_error_message,
3757 report_numbered_error): Likewise.
3758 * src/rmt.h (rmtread, rmtwrite): Likewise.
3759 * src/rtapelib.c (do_command, get_status_string, rmt_read__,
3760 rmt_write__, rmt_ioctl__): Likewise.
3761 * src/update.c (append_file): Likewise.
3762 * src/system.h (full_read, full_write): New decls.
3763
3764 * po/POTFILES.in: Add lib/argmatch.c, lib/error.c lib/getopt.c,
3765 lib/xmalloc.c, src/arith.c, src/misc.c.
3766
3767 * src/system.h (STDIN_FILENO, STDOUT_FILENO, STDERR_FILENO):
3768 New macros. All uses of STDIN and STDOUT changed.
3769 * src/rmt.c (prepare_record_buffer, main): Use STDIN_FILENO
3770 instead of 0 and STDOUT_FILENO instead of 1.
3771 * src/rtapelib.c (_rmt_rexec): Use STDIN_FILENO and STDOUT_FILENO
3772 instead of fileno (stdin) and fileno (stdout) or 0 and 1.
3773
3774 * src/rmt.c (private_strerror): Avoid const. Translate results.
3775
3776 * tests/Makefile.am (TESTS): Remove incremen.sh; it doesn't work
3777 in the presence of NFS clock skew.
3778
3779 1999-06-25 Paul Eggert <eggert@twinsun.com>
3780
3781 * configure.in (AM_INIT_AUTOMAKE): version 1.12.64014.
3782
3783 * src/buffer.c (write_archive_buffer): New function.
3784 (child_open_for_compress, flush_write, flush_read): Use it to write
3785 buffers.
3786 (open_archive): Report error if fstat of archive fails.
3787 Improve efficiency of check for /dev/null.
3788 Also, fix some corner cases with remote archives and /dev/null checking.
3789 (close_archive): Test for input fifo only if not remote.
3790 Truncate output archive only if it's not remote.
3791
3792 * src/misc.c (remove_any_file):
3793 Don't terminate if you see . or ..; just skip them.
3794
3795 1999-06-18 Paul Eggert <eggert@twinsun.com>
3796
3797 * configure.in (AM_INIT_AUTOMAKE): version 1.12.64013.
3798
3799 Output sizes using a format that's more compatible with
3800 traditional tar (and with GNU Emacs).
3801 * src/common.h (GID_TO_OCT, MAJOR_TO_OCT, MINOR_TO_OCT,
3802 MODE_TO_OCT, SIZE_TO_OCT, UID_TO_OCT, UINTMAX_TO_OCT):
3803 Don't subtract 1 from size.
3804 * src/create.c (to_oct): Prepend leading zeros, not spaces.
3805 Output a trailing NUL unless the value won't fit without it.
3806 (finish_header): No need to append NUL to chksum, now that
3807 to_oct is doing it.
3808
3809 1999-06-16 Paul Eggert <eggert@twinsun.com>
3810
3811 * NEWS, configure.in (AM_INIT_AUTOMAKE): version 1.12.64012.
3812
3813 * src/Makefile.am (LDADD): Link libtar.a after @INTLLIBS@, since
3814 @INTLLIBS@ might invoke rpl_realloc.
3815
3816 * src/tar.c (backup_type): Remove decl; backupfile.h now has it.
3817 (intconv): Remove; use xstrto* fns instead.
3818 ("xstrtol.h"): Include.
3819 (check_decimal): Remove.
3820 (long_options, usage, OPTION_STRING, decode_options):
3821 Remove -y, --bzip2, --unbzip2.
3822 (decode_options): Use xget_version instead of get_version.
3823 Check for overflow with -b and -L and RECORD_SIZE_OPTION.
3824 Replace invocations of check_decimal with xstrtoumax.
3825
3826 * tests/preset.in (echo_n, echo_c): Remove.
3827
3828 * tests/after: Don't rely on $echo_c and $echo_n.
3829
3830 * lib/addext.c, lib/dirname.c, lib/lchown.c, lib/lchown.h,
3831 lib/malloc.c, lib/mktime.c, lib/realloc.c, lib/strtol.c, lib/strtoul.c,
3832 lib/strtoull.c, lib/strtoumax.c, lib/utime.c, lib/xstrtol.c,
3833 lib/xstrtol.h, lib/xstrtoul.c, lib/xstrtoumax.c,
3834 m4/Makefile.am.in, m4/README, m4/ccstdc.m4, m4/d-ino.m4,
3835 m4/gettext.m4, m4/inttypes_h.m4, m4/isc-posix.m4,
3836 m4/jm-mktime.m4, m4/largefile.m4, m4/lcmessage.m4,
3837 m4/malloc.m4, m4/progtest.m4, m4/realloc.m4, m4/uintmax_t.m4,
3838 m4/ulonglong.m4, m4/utimbuf.m4, m4/utime.m4, m4/utimes.m4,
3839 m4/xstrtoumax.m4: New files.
3840
3841 * configure.in(fp_PROG_ECHO): Remove; no longer needed.
3842 (AC_SYS_LARGEFILE): Renamed from AC_LFS.
3843 (jm_AC_HEADER_INTTYPES_H): Replaces inline code.
3844 (jm_STRUCT_DIRENT_D_INO, jm_AC_TYPE_UINTMAX_T, jm_AC_PREREQ_XSTRTOUMAX): Add.
3845 (AC_CHECK_FUNCS): Remove lchown.
3846 (AC_REPLACE_FUNCS): Remove basename, dirname.
3847 Add lchown, strtol, strtoul.
3848 (jm_FUNC_MKTIME): Add.
3849 (LIBOBJS): Replace .o with $U.o, so that the .o files in LIBOBJS
3850 are also built via the ANSI2KNR-filtering rules.
3851 Use a no-op line to work around bug in automake 1.4 with malloc and
3852 realloc.
3853 (AC_OUTPUT): Add m4/Makefile.
3854
3855 * lib/Makefile.am (EXTRA_DIST):
3856 Add lchown.c, malloc.c, mktime.c, realloc.c,
3857 strtol.c, strtoul.c, strtoull.c, strtoumax.c, utime.c.
3858 (noinst_HEADERS): Add lchown.h, modechange.h, xstrtol.h.
3859 (libtar_a_SOURCES): Add addext.c, basename.c, xstrtol.c,
3860 xstrtoul.c, xstrtoumax.c. Remove getversion.c.
3861 ($(srcdir)/getdate.c:): Remove `expect conflicts' line.
3862
3863 * src/system.h (uintmax_t): Don't declare; configure now does this.
3864
3865 * src/common.h (backup_type): New decl.
3866 * src/common.h, src/misc.c, src/tar.c:
3867 Move include of backupfile.h to common.h.
3868
3869 * src/misc.c (maybe_backup_file):
3870 Pass backup_type to find_backup_file_name.
3871
3872 * src/list.c (print_header): Change sizes of uform and gform from 11 to
3873 UINTMAX_STRSIZE_BOUND.
3874
3875 * doc/tar.texi: Remove --bzip2.
3876 Fix @xref typos reported by latest makeinfo.
3877
3878 * Makefile.am (ACLOCAL_AMFLAGS): New macro.
3879 (SUBDIRS): Add m4.
3880 (M4DIR, ACINCLUDE_INPUTS): New macros.
3881 ($(srcdir)/acinclude.m4): New rule.
3882
3883 * acconfig.h (ENABLE_NLS, HAVE_CATGETS, HAVE_GETTEXT,
3884 HAVE_INTTYPES_H, HAVE_LC_MESSAGES, HAVE_STPCPY): Remve #undefs;
3885 now generated automatically by autoconf.
3886
3887 1999-05-15 Paul Eggert <eggert@twinsun.com>
3888
3889 * doc/tar.texi: Remove -y.
3890
3891 1999-04-09 Paul Eggert <eggert@twinsun.com>
3892
3893 * src/system.h (INT_STRLEN_BOUND): Fix off-by-factor-of-10 typo
3894 (we were allocating too much storage).
3895 (uintmax_t): Don't declare; configure now does this.
3896
3897 * ABOUT-NLS: Update to gettext 0.10.35 edition.
3898
3899 1999-03-22 Paul Eggert <eggert@twinsun.com>
3900
3901 * NEWS, configure.in (AM_INIT_AUTOMAKE): version 1.12.64010
3902
3903 * acinclude.m4 (AC_LFS_FLAGS):
3904 Don't use -mabi=n32 with GCC on IRIX 6.2; it's the default.
3905 (AC_LFS): -n32, -o32, and -n64 are CPPFLAGS, not CFLAGS.
3906 (jm_FUNC_MALLOC, jm_FUNC_REALLOC): New macros.
3907
3908 * configure.in (jm_FUNC_MALLOC, jm_FUNC_REALLOC):
3909 New macros; needed for latest GNU xmalloc.c.
3910
3911 * Makefile.am (noinst_HEADERS): Add quotearg.h, xalloc.h.
3912 (libtar_a_SOURCES): Add quotearg.c.
3913 * list.c: Include <quotearg.h>.
3914 (from_oct): Add forward decl.
3915 (read_header): Return HEADER_FAILURE if we can't parse the checksum.
3916 (from_oct): Report an error only if TYPE is nonzero.
3917 Quote any funny characters in bad header.
3918
3919 1999-03-20 Paul Eggert <eggert@twinsun.com>
3920
3921 * NEWS, configure.in (AM_INIT_AUTOMAKE): version 1.12.64009
3922
3923 * acinclude.m4 (AC_LFS_FLAGS): Add support for IRIX 6.2 and later.
3924 (AC_LFS_SPACE_APPEND): Assume $2 is quoted properly; all callers
3925 changed.
3926 (AC_LFS): Simplify AIX revision number test.
3927
3928 1999-03-17 Paul Eggert <eggert@twinsun.com>
3929
3930 * NEWS, configure.in (AM_INIT_AUTOMAKE): version 1.12.64008
3931
3932 * configure.in (AC_VALIDATE_CACHED_SYSTEM_TUPLE):
3933 Remove; it doesn't work that well
3934 with AC_CANONICAL_HOST.
3935 (fp_WITH_INCLUDED_MALLOC): Remove; we'll just use the system malloc.
3936
3937 * Makefile.am (EXTRA_DIST): Remove AC-PATCHES, AM-PATCHES, BI-PATCHES.
3938
3939 * Makefile.am (EXTRA_DIST): Remove gmalloc.c.
3940
3941 * acinclude.m4 (fp_WITH_INCLUDED_MALLOC): Remove.
3942
3943 * tar.texi: Fix bug-report addr.
3944
3945 * README: Remove --with-included-malloc.
3946 Upgrade version numbers of build software.
3947
3948 1999-03-07 Paul Eggert <eggert@twinsun.com>
3949
3950 * NEWS, configure.in (AM_INIT_AUTOMAKE): Version 1.12.64007.
3951
3952 * acinclude.m4 (AM_WITH_NLS): Port to Solaris 2.5.1,
3953 where bindtextdomain and gettext require -lintl.
3954 (AC_LFS_FLAGS): Simplify so that it only gets the flags;
3955 `no' means it failed.
3956 (AC_LFS_SPACE_APPEND, AC_LFS_MACRO_VALUE): New macros.
3957 (AC_LFS): Use them. Set _FILE_OFFSET_BITS, _LARGEFILE_SOURCE, and
3958 _LARGE_FILES from LFS_CFLAGS, so that in the normal case we don't need
3959 to add anything to the command line (it's all in config.h).
3960 Put any extra -D and -I options into CPPFLAGS, the rest into CFLAGS.
3961
3962 1999-03-01 Paul Eggert <eggert@twinsun.com>
3963
3964 * NEWS, configure.in (AM_INIT_AUTOMAKE): Version 1.12.64006.
3965
3966 * acinclude.m4 (AC_LFS_FLAGS): Port to AIX 4.2.
3967
3968 * src/list.c: (gid_from_oct, major_from_oct, minor_from_oct,
3969 mode_from_oct, off_from_oct, size_from_oct, time_from_oct,
3970 uid_from_oct, uintmax_from_oct): Use TYPE_MAXIMUM instead of macros
3971 like OFF_MAX, which are not reliable
3972 (e.g. OFF_MAX in AIX 4.2 is incorrect).
3973 * src/system.h (GID_MAX, MAJOR_MAX, MINOR_MAX, MODE_MAX, OFF_MAX,
3974 SIZE_MAX, TIME_MAX,UID_MAX, UINTMAX_MAX): Remove; no longer used.
3975
3976 * src/incremen.c (get_directory_contents):
3977 Don't use statx if _LARGE_FILES; it doesn't work under AIX 4.2.
3978 Have statx depend on STX_HIDDEN, not AIX.
3979
3980 * src/create.c (to_oct):
3981 New parameter substitute, giving a substitute value to use
3982 when the original value is out of range. Do not append a space to the
3983 output; modern tars don't. When a value is out of range, specify the
3984 maximum value, not the number of bits.
3985 (GID_NOBODY, UID_NOBODY): New macros.
3986 (gid_to_oct, uid_to_oct): Use them as substitutes.
3987 (finish_header): Do not assume that UINTMAX_TO_OCT appends a space.
3988 (dump_file): Check whether the file changed as we read it.
3989
3990 * src/rmt.c (main): Remove suspicious AIX/386 code.
3991
3992 1999-02-19 Paul Eggert <eggert@twinsun.com>
3993
3994 * intl/localealias.c (read_alias_file): Don't assume that memcpy
3995 returns a type compatible with char *; it doesn't on SunOS
3996 4.1.4 with Sun cc, since <string.h> doesn't declare memcpy.
3997
3998 * NEWS, configure.in (AM_INIT_AUTOMAKE): Version 1.12.64005.
3999
4000 * src/tar.c (long_options, usage): Prefer --unbzip2 to --bunzip2.
4001 * doc/tar.texi: Add --bzip2, --unbzip2 options.
4002
4003 * configure.in (AC_CANONICAL_HOST, AC_VALIDATE_CACHED_SYSTEM_TUPLE):
4004 Add.
4005 (AC_LINK_FILES): Omit; AM_GNU_GETTEXT now does this.
4006 (AC_OUTPUT): Omit munging of po/Makefile; AM_GNU_GETTEXT now does this.
4007 * acinclude.m4 (AM_WITH_NLS):
4008 Update to latest gettext version (serial 5).
4009 (AC_LFS_FLAGS): New macro
4010 (AC_LFS): Use it. Append to CFLAGS, LDFLAGS, LDLIBS instead of
4011 working only with unset variables. Append to CFLAGS, not CPPFLAGS.
4012 Work properly in cross-compilation scenario, by checking for getconf
4013 with AC_CHECK_TOOL and by ditching uname in favor of
4014 AC_CANONICAL_HOST and $host_os. Add --disable-lfs option.
4015
4016 * lib/getdate.y: Update to fileutils 4.0 getdate.y, with one patch:
4017 replace FORCE_ALLOCA_H with HAVE_ALLOCA_H.
4018 * lib/Makefile.am (AUTOMAKE_OPTIONS): Append ../src/ansi2knr,
4019 since getdate.y now uses ANSI code.
4020
4021 * config.guess, config.sub: New files; taken from automake 1.4.
4022
4023 * intl/Makefile.in, intl/VERSION, intl/bindtextdom.c,
4024 intl/cat-compat.c, intl/dcgettext.c, intl/dgettext.c,
4025 intl/explodename.c, intl/finddomain.c, intl/gettext.c,
4026 intl/gettext.h, intl/gettextP.h, intl/hash-string.h,
4027 intl/l10nflist.c, intl/libgettext.h, intl/loadinfo.h,
4028 intl/loadmsgcat.c, intl/localealias.c, intl/textdomain.c:
4029 Update to GNU gettext 0.10.35, with patches as per GCC snapshot 990109.
4030
4031 1999-02-01 Paul Eggert <eggert@twinsun.com>
4032
4033 * src/tar.c: Update copyright.
4034
4035 * NEWS: 1.12.64004
4036
4037 1999-02-01 Paul Eggert <eggert@twinsun.com>
4038
4039 * NEWS, configure.in: Version 1.12.64004
4040
4041 * configure.in (AC_LFS): Use this macro, instead of open-coding it.
4042
4043 * acinclude.m4 (AC_LFS, AM_PROG_CC_STDC): New macros.
4044
4045 * src/extract.c (extract_archive): Fix bug when extracting sparse
4046 files: they were trashing the tar file header.
4047
4048 * src/tar.c: (long_options, usage, OPTION_STRING, decode_options):
4049 Add -y or --bzip2 or --bunzip2 option.
4050
4051 1999-01-30 Paul Eggert <eggert@twinsun.com>
4052
4053 * src/names.c (cached_no_such_uname, cached_no_such_gname,
4054 cached_no_such_uid, cached_no_such_gid): New vars.
4055 (uid_to_uname, gid_to_gname, uname_to_uid, gname_to_gid):
4056 Cache failures, too.
4057
4058 * src/tar.c (decode_options):
4059 Don't pass names longer than UNAME_FIELD_SIZE to
4060 uname_to_uid, as it messes up the cache. Similarly for gname_to_uid.
4061
4062 1999-01-27 Paul Eggert <eggert@twinsun.com>
4063
4064 * NEWS, configure.in: Version 1.12.64003
4065
4066 * src/buffer.c (backspace_output, close_archive): Cast
4067 rmtlseek position arg to off_t, for benefit of K&R compilers
4068 with long long.
4069 * src/compare.c (verify_volume): Likewise.
4070
4071 * NEWS, configure.in: Version 1.12.64002
4072
4073 * src/create.c (gid_to_oct, major_to_oct, minor_to_oct, mode_to_oct,
4074 off_to_oct, size_to_oct, time_to_oct, uid_to_oct):
4075 Cast arg to uintmax_t for benefit of pre-ANSI compilers with long long.
4076 * src/list.c: (gid_from_oct, major_from_oct, minor_from_oct,
4077 mode_from_oct, off_from_oct, size_from_oct, time_from_oct,
4078 uid_from_oct): Likewise.
4079
4080 1999-01-25 Paul Eggert <eggert@twinsun.com>
4081
4082 * incremen.sh: Fix timing bug in regression test.
4083
4084 1999-01-22 Paul Eggert <eggert@twinsun.com>
4085
4086 * NEWS, configure.in: Update version
4087
4088 * Makefile.am (localedir): Change to $(datadir)/locale.
4089 (DEFS): New macro, defining LOCALEDIR.
4090 (tar.o, tar._o, rmt.o, rmt._o): Remove.
4091 (INCLUDES): Add -I..
4092
4093 * Makefile.am (localedir): Change to $(datadir)/locale.
4094
4095 1999-01-21 Paul Eggert <eggert@twinsun.com>
4096
4097 * NEWS, README, configure.in: Unofficial version 1.12.64001.
4098
4099 * tests/Makefile.am (localedir): Change to $(datadir)/locale.
4100 * src/Makefile.am (localedir): Likewise.
4101 (DEFS): New macro, defining LOCALEDIR.
4102 (tar.o, tar._o, rmt.o, rmt._o): Remove.
4103 (INCLUDES): Add `-I..'.
4104
4105 * tests/incremen.sh: Fix timing bug.
4106
4107 1999-01-20 Paul Eggert <eggert@twinsun.com>
4108
4109 * NEWS, README, configure.in: Unofficial version 1.12.64000.
4110 `lfs.7' changed to `64000' in version number
4111 to conform to gnits standards.
4112
4113 * COPYING, INSTALL, doc/texinfo.tex, install-sh, missing,
4114 mkinstalldirs, ansi2knr.c: Update to latest public versions.
4115
4116 Rebuild with automake 1.4 and autoconf 2.13, to work around some
4117 porting problems.
4118
4119 1998-12-07 Paul Eggert <eggert@twinsun.com>
4120
4121 * NEWS, README, configure.in: Unofficial version 1.12.lfs.6.
4122
4123 * src/list.c (read_header):
4124 Accept file names as specified by POSIX.1-1996 section 10.1.1.
4125
4126 1998-11-30 Paul Eggert <eggert@twinsun.com>
4127
4128 * configure.in: Quote the output of uname.
4129
4130 * src/extract.c (set_stat): chmod after chown even when not root;
4131 if we are using --same-owner this is needed e.g. on Solaris 2.5.1.
4132
4133 1998-11-15 Paul Eggert <eggert@twinsun.com>
4134
4135 * NEWS, README, configure.in: Unofficial version 1.12.lfs.5.
4136
4137 * configure.in (ac_test_CPPFLAGS, ac_test_LDFLAGS, ac_test_LIBS,
4138 ac_getconfs, ac_result): Special case for HP-UX 10.20 or later.
4139
4140 1998-10-28 Paul Eggert <eggert@twinsun.com>
4141
4142 * NEWS, README, configure.in: Unofficial version 1.12.lfs.4.
4143
4144 * src/system.h (voidstar): Use void * if __STDC__ is defined,
4145 not merely nonzero.
4146
4147 * src/rtapelib.c: Don't use rexec code unless compiled with WITH_REXEC.
4148 On many installations, rexec is disabled.
4149
4150 1998-08-07 Paul Eggert <eggert@twinsun.com>
4151
4152 * NEWS, README, configure.in: Unofficial version 1.12.lfs.3.
4153
4154 * src/names.c (uid_to_uname, gid_to_gname): Don't used cached name
4155 for nameless users and groups.
4156
4157 1998-02-17 Paul Eggert <eggert@twinsun.com>
4158
4159 * NEWS, README, configure.in: Unofficial version 1.12.lfs.2.
4160 * NEWS, README: Add explanation of why this isn't an official version.
4161
4162 1998-02-02 Paul Eggert <eggert@twinsun.com>
4163
4164 * NEWS, README, configure.in: Unofficial version 1.12.lfs.1.
4165 This is an unofficial version.
4166
4167 1997-12-17 Paul Eggert <eggert@twinsun.com>
4168
4169 * src/incremen.c (ST_DEV_MSB): New macro.
4170 (NFS_FILE_STAT): Use most significant bit of st_dev,
4171 even if it's unsigned.
4172
4173 1997-12-08 Paul Eggert <eggert@twinsun.com>
4174
4175 * src/system.h (ST_NBLOCKS): Fix typo in definition.
4176
4177 1997-11-19 Paul Eggert <eggert@twinsun.com>
4178
4179 * configure.in (HAVE_INTTYPES_H):
4180 Don't ignore cache variable if it's already set.
4181
4182 1997-11-10 Paul Eggert <eggert@twinsun.com>
4183
4184 * src/rmt.c (main): Don't assume mt_count is of type daddr_t.
4185 * src/delete.c (records_read): Now off_t.
4186 (move_archive): Don't assume mt_count is of type daddr_t.
4187
4188 1997-10-30 Paul Eggert <eggert@twinsun.com>
4189
4190 * configure.in (CPPFLAGS, LDFLAGS, LIBS):
4191 Set to appropriate values if large file support
4192 needs explicit enabling.
4193 (HAVE_INTTYPES_H, HAVE_ST_FSTYPE_STRING, daddr_t, major_t, minor_t,
4194 ssize_t):
4195 New macros to configure.
4196 (AC_TYPE_MODE_T, AC_TYPE_PID_T, AC_TYPE_OFF_T): Add.
4197
4198 * acconfig.h (daddr_t, HAVE_INTTYPES_H, HAVE_ST_FSTYPE_STRING,
4199 major_t, minor_t, ssize_t): New macros.
4200
4201 * src/arith.h (TARLONG_FORMAT):
4202 Fix typo: %uld -> %lu. Use unsigned when long long
4203 (%lld -> %llu).
4204 (add_to_tarlong_helper, mult_tarlong_helper): 2nd arg is now unsigned long.
4205 (add_to_tarlong, mult_tarlong): Cast 2nd arg to unsigned long.
4206
4207 * src/arith.c (add_to_tarlong_helper, mult_tarlong_helper):
4208 2nd arg is now unsigned long.
4209
4210 * src/rmt.c (allocated_size): Now size_t, and now initialized to 0.
4211 (prepare_record_buffer): Arg is now size_t.
4212 Remove now-useless casts.
4213
4214 (main): Use `long' for status, so that it can store ssize_t.
4215 Use daddr_t, mode_t, size_t, off_t when appropriate.
4216 Convert daddr_t and off_t values ourselves, since they might be longer
4217 than long. Convert other types using `long' primitives.
4218 When processing MTIOCTOP, do not try to pass resulting
4219 count back, since it won't work (it could be too large) and it's
4220 not expected anyway.
4221
4222 * src/update.c:
4223 (append_file) Use off_t, size_t, ssize_t when appropriate. Remove
4224 now-useless casts. Use unsigned long to print *_t types, except use
4225 STRINGIFY_BIGINT for off_t.
4226 (update_archive): Cast -1 to dev_t when necessary.
4227
4228 * src/tar.c (check_decimal):
4229 Now returns 1 if successful, 0 otherwise, and returns
4230 uintmax_t value into new arg. Check for arithmetic overflow.
4231 (decode_options): Avoid overflow if record_size fits in size_t but not int.
4232 Check for overflow on user or group ids.
4233
4234 * src/compare.c (diff_init, process_rawdata, read_and_process,
4235 diff_sparse_files, diff_archive):
4236 Use off_t, pid_t, size_t, ssize_t when appropriate.
4237 Remove now-useless casts. Use unsigned long to print *_t types,
4238 except use STRINGIFY_BIGINT for off_t.
4239
4240 (process_noop, process_rawdata, process_dumpdir, read_and_process):
4241 Size arg is now size_t.
4242
4243 (diff_sparse_files): Arg is now off_t. Check for size_t overflow
4244 when allocating buffer.
4245
4246 * src/rtapelib.c:
4247 (do_command, rmt_open__, rmt_read__, rmt_lseek__, rmt_ioctl__):
4248 Use pid_t, size_t, ssize_t when appropriate. Remove now-useless casts.
4249 Use unsigned long to print *_t types, except use STRINGIFY_BIGINT for
4250 off_t.
4251
4252 (get_status_string, get_status_off): New function.
4253 (get_status): Now returns long, so that it can store ssize_t.
4254 Invoke get_status_string to do the real work.
4255 (rmt_read__, rmt_write__): Now returns ssize_t. Size arg is now size_t.
4256 (rmt_lseek__): Now returns off_t, using new get_status_off function.
4257 (rmt_ioctl__): Convert mt_count by hand,
4258 since it might be longer than long.
4259
4260 * src/mangle.c (extract_mangle):
4261 Check for overflow when converting off_t to size_t.
4262 Use off_t, size_t when appropriate. Remove now-useless casts.
4263
4264 * src/system.h (mode_t): Remove; now done by autoconf.
4265 (ST_NBLOCKS): Do not overflow if st_size is near maximum.
4266 Return number of ST_NBLOCKSIZE-byte blocks,
4267 not number of 512-byte blocks;
4268 this also helps to avoid overflow.
4269 (st_blocks): Declare if needed.
4270 (ST_NBLOCKSIZE): New macro.
4271 (<limits.h>, <inttypes.h>): Include if available.
4272 (CHAR_BIT): New macro.
4273 (uintmax_t): New typedef.
4274 (TYPE_SIGNED, TYPE_MINIMUM, TYPE_MAXIMUM, INT_STRLEN_BOUND,
4275 UINTMAX_STRSIZE_BOUND, GID_MAX, MAJOR_MAX, MINOR_MAX, MODE_MAX,
4276 OFF_MAX, SIZE_MAX, TIME_MAX, UID_MAX, UINTMAX_MAX): New macros.
4277
4278 * src/names.c (name_init):
4279 Fix typo in error message: FILE* was passed, but char*
4280 was wanted.
4281
4282 (read_name_from_file, name_gather, addname, name_match, name_scan,
4283 add_exclude): Use size_t when appropriate. Remove now-useless casts.
4284
4285 (exclude_pool_size, allocated_exclude_pool_size): Now size_t.
4286
4287 * src/extract.c (newdir_umask, current_umask): Now mode_t.
4288 (extract_sparse_file): Args now use off_t.
4289
4290 (set_mode, set_stat, make_directories, extract_sparse_file,
4291 extract_archive): Use off_t, size_t, ssize_t when appropriate. Remove
4292 now-useless casts. Use unsigned long to print *_t types, except use
4293 STRINGIFY_BIGINT for off_t.
4294
4295 * src/misc.c (quote_copy_string):
4296 Use size_t when appropriate. Remove now-useless casts.
4297
4298 * src/list.c (read_and, list_archive, read_header, decode_mode,
4299 print_header, print_for_mkdir):
4300 Use mode_t, off_t, size_t when appropriate. Remove
4301 now-useless casts. Use unsigned long to print *_t types, except use
4302 STRINGIFY_BIGINT for off_t.
4303
4304 (read_header): Check for overflow when converting header size.
4305
4306 (from_oct): Now static. Now returns uintmax_t. `where' arg is now
4307 const char *. Size arg is now size_t. Now takes new type and maxval
4308 args. Compute result using uintmax_t, not long. Report error if
4309 field does not contain octal number in range.
4310 (gid_from_oct, major_from_oct, minor_from_oct, mode_from_oct,
4311 off_from_oct, size_from_oct, time_from_oct, uid_from_oct,
4312 uintmax_from_oct): New functions.
4313
4314 (stringify_uintmax_t_backwards): New function.
4315
4316 (decode_mode, print_for_mkdir): Mode arg is now mode_t.
4317 (skip_file): Offset arg is now off_t.
4318
4319 * src/buffer.c (record_start_block, save_totsize, save_sizeleft,
4320 real_s_totsize, real_s_sizeleft, current_block_ordinal):
4321 Now off_t.
4322 (write_error): Arg is now ssize_t.
4323 (child_pid): Now pid_t.
4324 (available_space_after): Now size_t.
4325
4326 (child_open_for_compress, child_open_for_uncompress, flush_write,
4327 open_archive, flush_write, write_error, flush_read, close_archive):
4328 Use pid_t, ssize_t, size_t when appropriate. Remove now-useless
4329 casts. Use unsigned long to print *_t types, except use
4330 STRINGIFY_BIGINT for off_t.
4331
4332 * src/delete.c (records_read): Now daddr_t.
4333 (move_archive): Arg is now daddr_t. Check for overflow when
4334 computing offset.
4335 (move_archive, delete_archive_members): Use daddr_t, off_t when
4336 appropriate. Remove now-useless casts.
4337
4338 * src/rmt.h (rmt_read__, rmt_write__): Now returns ssize_t.
4339 (rmt_lseek): Now returns off_t.
4340
4341 * src/create.c (to_oct):
4342 Now static. Value arg is now uintmax_t. Accept new args
4343 giving name of type of octal field, for error messages. Report an
4344 error if the value is too large to fit in the field.
4345 (gid_to_oct, major_to_oct, minor_to_oct, mode_to_oct, off_to_oct,
4346 size_to_oct, time_to_oct, uid_to_oct, uintmax_to_oct): New functions.
4347
4348 (write_eot, write_long, finish_header, deal_with_sparse,
4349 finish_sparse_file, dump_file): Use dev_t, off_t, ssize_t, size_t when
4350 appropriate. Remove now-useless casts. Use unsigned long to print
4351 *_t types, except use STRINGIFY_BIGINT for off_t.
4352
4353 (find_new_file_size): 1st arg is now off_t*.
4354 (finish_sparse_file): Args now use off_t, not long.
4355 Check for lseek error.
4356 (create_archive, dump_file): Cast -1 to dev_t when necessary.
4357 (dump_file): Device arg is now dev_t.
4358 Avoid overflow when testing whether file has holes
4359 by using the new ST_NBLOCKSIZE macro.
4360
4361 * src/incremen.c (struct accumulator, add_to_accumulator,
4362 get_directory_contents, add_hierarchy_to_namelist, gnu_restore):
4363 Use size_t for sizes.
4364 (struct directory, get_directory_contents, add_hierarchy_to_namelist):
4365 Use dev_t, ino_t for devices and inodes.
4366 (gnu_restore): Use off_t for file offsets.
4367 (struct directory): Use char for flags. Add new flag `nfs'.
4368 (nfs): New constant
4369 (NFS_FILE_STAT): New macro.
4370 (note_directory): Accept struct stat * instead of
4371 device and inode number. All callers changed.
4372 (note_directory, get_directory_contents):
4373 Use NFS_FILE_STAT to determine whether directory is an NFS directory.
4374 (write_dir_file): Cast time_t to unsigned long before printing as %lu.
4375
4376 * src/common.h (record_size, struct name, struct sp_array,
4377 available_space_after):
4378 Use size_t for sizes.
4379 (save_sizeleft, save_totsize, current_block_ordinal, skip_file):
4380 Use off_t for file offsets.
4381 (struct name): dir_contents is now const char *, not char *.
4382 (dump_file, get_directory_contents): Use dev_t for devices.
4383 (to_oct): Remove decl.
4384 (GID_TO_OCT, MAJOR_TO_OCT, MINOR_TO_OCT, MODE_TO_OCT, SIZE_TO_OCT,
4385 UID_TO_OCT, UINTMAX_TO_OCT, OFF_TO_OCT, TIME_TO_OCT, STRINGIFY_BIGINT,
4386 GID_FROM_OCT, MAJOR_FROM_OCT, MINOR_FROM_OCT, MODE_FROM_OCT,
4387 OFF_FROM_OCT, SIZE_FROM_OCT, TIME_FROM_OCT, UID_FROM_OCT,
4388 UINTMAX_FROM_OCT): New macros.
4389 (gid_to_oct, major_to_oct, minor_to_oct, mode_to_oct, off_to_oct,
4390 size_to_oct, time_to_oct, uid_to_oct, uintmax_to_oct,
4391 stringify_uintmax_t_backwards, gid_from_oct, major_from_oct,
4392 minor_from_oct, mode_from_oct, off_from_oct, size_from_oct,
4393 time_from_oct, uid_from_oct, uintmax_from_oct): New decls.
4394 (print_for_mkdir): 2nd arg is now mode_t.
4395
4396 See ChangeLog.1 for earlier changes.
4397
4398
4399 Copyright (C) 1997, 1998, 1999, 2000, 2001, 2003 Free Software Foundation,
4400 Inc.
4401
4402 This file is part of GNU tar.
4403
4404 GNU tar is free software; you can redistribute it and/or modify
4405 it under the terms of the GNU General Public License as published by
4406 the Free Software Foundation; either version 2, or (at your option)
4407 any later version.
4408
4409 GNU tar is distributed in the hope that it will be useful,
4410 but WITHOUT ANY WARRANTY; without even the implied warranty of
4411 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4412 GNU General Public License for more details.
4413
4414 You should have received a copy of the GNU General Public License
4415 along with GNU tar; see the file COPYING. If not, write to
4416 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
4417 Boston, MA 02111-1307, USA.
This page took 0.228239 seconds and 5 git commands to generate.