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