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