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