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