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