From: Sergey Poznyakoff Date: Sat, 7 Mar 2009 14:30:44 +0000 (+0200) Subject: Migrate to Git X-Git-Tag: release_1_22~1 X-Git-Url: https://git.gag.com/?a=commitdiff_plain;h=ac6caa71bc6077d75ff5073f76f97d53225e78ae;p=debian%2Ftar Migrate to Git --- diff --git a/.cvsignore b/.cvsignore deleted file mode 100644 index 24b7c5f9..00000000 --- a/.cvsignore +++ /dev/null @@ -1,18 +0,0 @@ -*.bz2 -*.gz -*.tar -.bootstrap -ABOUT-NLS -INSTALL -Makefile -Makefile.in -aclocal.m4 -autom4te.cache -build-aux -config.* -configure -gnulib -m4 -rmt -stamp-h1 -tar-[0-9]* diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..896f7aaf --- /dev/null +++ b/.gitignore @@ -0,0 +1,31 @@ +*.a +*.la +*.lo +*.o +*.so +*~ +.bootstrap +.deps +.emacs* +.libs +ABOUT-NLS +ChangeLog +INSTALL +Makefile +Makefile.in +Make.rules +aclocal.m4 +autom4te.cache +config.h +config.h.in +config.log +config.status +configure +gnulib +libtool +m4 +paxutils +stamp-h1 +build-aux/ +gnu + diff --git a/ChangeLog b/ChangeLog deleted file mode 100644 index 41227f59..00000000 --- a/ChangeLog +++ /dev/null @@ -1,8833 +0,0 @@ -2009-03-05 Sergey Poznyakoff - - * src/incremen.c: --no-recursive works with --incremental. - -2009-03-04 Sergey Poznyakoff - - Add xz support. - - * src/buffer.c, src/suffix.c: Add support for xz compression. - * src/tar.c: New option --xz, for compression/decompression using xz. - Re-assign -J as a short equivalent of --xz. - -2009-01-19 Sergey Poznyakoff - - * doc/tar.texi: Fix typo. - -2008-12-29 Sergey Poznyakoff - - * bootstrap.conf: Include size_max. - * gnulib.modules: Remove memset, rmdir. Replace strdup with - strdup-posix. Patch by Eric Blake. - * src/tar.c: Implement -I as a shorthand for --use-compress-program. - * doc/tar.texi: Document -I. - * tests/pipe.at, tests/shortrec.at: Account for eventual 'Record - size' output. - * tests/testsuite.at (AT_TAR_CHECK_HOOK): New define - (AT_TAR_WITH_HOOK, TAR_IGNREC_HOOK): New macros. - -2008-11-30 Sergey Poznyakoff - - * src/xheader.c: Remove duplicate inclusion of fnmatch.h. Reported - by Jim Meyering. - -2008-11-25 Sergey Poznyakoff - - Do not try to drain the input pipe before closing the - archive. - - * src/buffer.c (close_archive): Remove call to - sys_drain_input_pipe. Pass hit_eof as the second - argument to sys_wait_for_child. - * src/common.h (sys_drain_input_pipe): Remove - (sys_wait_for_child): Declare second argument. - * src/system.c (sys_drain_input_pipe): Remove. - (sys_wait_for_child): Take two arguments. The second one helps to - decide whether to tolerate child termination on SIGPIPE. - -2008-11-03 Sergey Poznyakoff - - * src/buffer.c (_write_volume_label): Fix typo, which prevented - `-V label -M' from working. - -2008-10-30 Sergey Poznyakoff - - * NEWS, configure.ac: Version 1.20.91 - * doc/tar.texi: Document transformation scope flags. - * src/common.h (transform_symlinks_option): Remove in favor of - transformation scope flags. - (XFORM_REGFILE, XFORM_LINK, XFORM_SYMLINK, XFORM_ALL): New macros. - (transform_name, transform_member_name, transform_name_fp): Take - an additional argument, specifying scope flags. - * src/create.c: Reflect changes to transform_name. - * src/extract.c (extract_link, extract_symlink): Remove calls to - transform_member_name. It is done in read_header. - * src/list.c (decode_xform): Reflect change in data type of 2nd - argument. - (transform_member_name): 2nd arg is int. - (decode_header): Transform file name and link target names. - * src/tar.c: Remove --transform-symlinks. - * src/transform.c (struct transform): New member `flags'. - (transform_flags): New variable. - (parse_transform_expr): Parse transformation scope flags. Allow to - set global flags using `flags=' syntax. - (_transform_name_to_obstack, transform_name_fp) - (transform_name): Take an additional argument, specifying scope - flags. - -2008-10-19 Sergey Poznyakoff - - * THANKS: Add Ed Leaver. - * src/buffer.c (short_read): Remove !read_full_records condition, - which was always false on a first record and thus disabled record - size autodetection. Thanks Ed Leaver for the patch. - (_gnu_flush_read): Handle blocking_factor == 1. - * tests/sparsemv.at: Reflect changes to buffer.c. - * tests/sparsemvp.at: Likewise. - * tests/volsize.at: Likewise. - * NEWS: Update. - -2008-10-16 Sergey Poznyakoff - - * src/common.h (transform_symlinks_option): New global. - * src/create.c (dump_file0): Transform symlink targets only if - explicitly required. Thanks Cyril Strejc for reporting the - problem. - * src/tar.c (parse_opt): New options --transform-symlinks and - --no-transform-symlinks. New alias --xform to the --transform - option. - * doc/tar.texi: Document --transform-symlinks - * NEWS: Update. - * THANKS: Update. - - * src/names.c (name_gather): Use xzalloc. - * src/buffer.c (short_read): Move record size detection before - the loop. - -2008-10-07 Sergey Poznyakoff - - * src/tar.c (options): Add --lzop option. - -2008-10-05 Xavier Hienne (tiny change) - - * src/checkpoint.c (checkpoint_compile_action): Add missing - `else'. - -2008-09-24 Sergey Poznyakoff - - * NEWS: Update. - * doc/tar.texi: Update. - * src/tar.c: New option --no-null. - -2008-09-23 Sergey Poznyakoff - - * src/common.h (filename_terminator): Remove global. - * src/tar.c (filename_terminator): New static. - * src/names.c (name_next_elt): Do not depend on - filename_terminator, this was a leftover from 1.13. - -2008-09-18 Sergey Poznyakoff - - * doc/tar.texi: Remove incorrect example. - -2008-09-07 Sergey Poznyakoff - - * src/incremen.c (dumpdir_create0): Eliminate gcc warning. - (attach_directory): Bugfix - add missing return statement. - * THANKS: Add Enric Hernandez - -2008-07-31 Sergey Poznyakoff - - * src/incremen.c (struct directory): New member `next'. Change - type of `name'. - (dirhead, dirtail): New statics. - (make_directory): Reflect changes to struct directory. - (free_directory, attach_directory): New functions. - (dirlist_replace_prefix): New function. - (note_directory): Use attach_directory, instead of make_directory, - (find_directory, find_directory_meta): Use free_directory. - (procdir): Replace directory prefixes in directory list to avoid - marking subdirectories as renamed after renaming their parent - directory. - (append_incremental_renames): Iterate over directory list, not - hash table, to preserve logical ordering of renames. - * tests/rename04.at, tests/rename05.at: New test cases. - * tests/Makefile.am, tests/testsuite.at: Add rename04.at and - rename05.at. - * tests/atlocal.in (decho): New function. - * tests/multiv06.at: Use decho instead of echo2. - * tests/incremental.at: Raise wait interval to 2 seconds. - -2008-07-24 Sergey Poznyakoff - - * src/tar.c (decode_options): Do not allow volume length less - than record size. - * src/buffer.c (_gnu_flush_write): Compensate for the effect - of eventual flush_archive occurring in the middle of buffer - move. - Increment records_written only if _flush_write was able to write - something. - * tests/multiv06.at: New testcase. - * tests/Makefile.am, test/testsuite.at: Add tests/multiv06.at - -2008-06-26 Sergey Poznyakoff - - * configure.ac, NEWS: Version 1.20.90 - * doc/tar.texi: Document -J, --no-auto-compress, etc. - * src/buffer.c (ct_tar): New constant. - (magic): Add lzop support. Proposed by Kevin Day - . - (check_compressed_archive): Do not use autodetect if the - compression program was specified explicitly. - Fall back to analyzing archive name, if the autodetection fails. - * src/suffix.c: Add .lzo - * src/tar.c: New options --lzop and --no-auto-compress. - New short option -J (alias for --lzma). - - * src/buffer.c (try_new_volume): Print more information with error - diagnostics. - (_gnu_flush_write): Improve error checking. Adjust - real_s_sizeleft before calling new_volume to avoid creating - malformed multivolume headers. - * tests/delete05.at, tests/gzip.at, tests/ignfail.at, - tests/longv7.at, tests/lustar01.at, tests/lustar02.at, - tests/shortfile.at: Update to match new diagnostic wording - (see 2008-05-06). - - * NEWS: Update. - -2008-06-14 Sergey Poznyakoff - - * doc/tar.texi (exclude): Document support for new VCS. - * THANKS: Update. - * NEWS: Update. - * tests/multiv05.at: Fix typos. - * tests/volsize.at: Remove a TZ dependency. - -2008-06-14 Dan Drake (tiny change) - - * src/tar.c (exclude_vcs_files): Support for Bazaar, Mercurial and - Darcs. - -2008-05-06 Sergey Poznyakoff - - * src/tar.c (main): Reword the "delayed error" message. New - wording proposed by Karl Berry. - -2008-02-20 Sergey Poznyakoff - - * configure.ac: Raise version number to 1.20 - * src/compare.c (diff_dumpdir): const. - * src/common.h (dumpdir_t,dumpdir_iter_t): New data types. - (dumpdir_create0,dumpdir_create,dumpdir_free,dumpdir_locate) - (dumpdir_first,dumpdir_next): New functions. - * src/incremen.c (dumpdir_create0,dumpdir_create,dumpdir_free) - (dumpdir_first,dumpdir_next): New functions. - (dumpdir_locate): Rewrite using binary search. - (struct directory): Change members char *contents, *icontents to - struct dumpdir *dump, *idump. All references updated. - (note_directory): Last arg is const. - * src/names.c (add_hierarchy_to_namelist): buffer is const. - * tests/incr03.at, tests/incr04.at, tests/rename02.at, - tests/rename03.at: Insert calls to sleep between creation of files - and adding them to the archive. - -2008-03-31 Sergey Poznyakoff - - * src/create.c (dump_file0): Count links only for actually dumped - files. - -2008-03-27 Sergey Poznyakoff - - * NEWS: Document --no-check-device and --check-device. - * doc/rendition.texi: Change the way FIXME-*refs are handled in - !PROOF. - * doc/intern.texi, doc/tar.texi: Update. - * doc/untabify.el: New file. - * doc/Makefile.am (EXTRA_DIST): Add untabify.el - (untabify, final, check-format, check-refs, check-fixmes) - (check-unrevised, all-check-docs, check-docs): New rules. - - * src/common.h (check_device_option): New global. - * src/incremen.c (procdir): Use boolean and instead of bitwise - one. Patch by Jean-Louis Martineau. - Compare device numbers only if check_device_option is set. - * src/tar.c: New command line options --no-check-device and - --check-device. Proposed by Jean-Louis Martineau. - (parse_opt): Hanlde new options. - (decode_options): Initialize check_device_option to true. - - * THANKS: Update - -2008-03-06 Sergey Poznyakoff - - * bootstrap: Use rsync to get translations. - * doc/tar.texi: Minor change. - * lib/.cvsignore: Update - * po/.cvsignore: Update - * src/system.c: Remove include setenv.h. - * tests/atlocal.in (STAR_DATA_URL): Update. - * tests/star/README: Update URL. - -2008-02-09 Sergey Poznyakoff - - * doc/tar.texi: Fix a typo. Reported by Denis Excoffier. - -2008-02-08 Sergey Poznyakoff - - * NEWS: Update. - * configure.ac: Version 1.19.90 - * po/POTFILES.in: Add missing files. - * src/compare.c (verify_volume): Honor --ignore-zeros. - Proposed by Jan-Benedict Glaw. - * tests/shortfile.at (AT_KEYWORDS): Add shortfile0. - -2008-02-07 Sergey Poznyakoff - - * NEWS: Update. - * src/create.c (dump_file0): Apply transform_name to symlink - targets. - -2008-02-04 Sergey Poznyakoff - - * src/transform.c: Support multiple --transform options. Support - semicolon-separated lists of replace expressions. - * NEWS, tar.texi: Document changes to the --transform option. - -2008-01-30 Paul Eggert - - * doc/tar.texi: Update Back-Cover text to reflect new GNU wording. - -2007-12-17 Paul Eggert - - Exit with nonzero status if a close fails on an archive. - Problem (and initial trivial fix) - * src/buffer.c (close_archive, new_volume): close_error, not - close_warn. - -2007-12-05 Sergey Poznyakoff - - * src/buffer.c (check_compressed_archive): Do not bail out if the - file is too short, set boolean flag, passed as an argument - instead. This fixes a bug introduced on 2007-08-24. See also - tests/shortupd.at. - - * tests/Makefile.am, tests/testsuite.at: Add shortupd.at. - * tests/shortupd.at: New test. - -2007-11-12 Jim Meyering - - Don't read from name[-1]. - * src/incremen.c (make_directory): Handle namelen == 0, since - find_directory_meta calls make_directory (""). - -2007-11-07 Sergey Poznyakoff - - * bootstrap (checkout): Use URL of the gnulib CVS mirror. - * gnulib.modules: Add fseeko and snprintf. - -2007-10-31 Sergey Poznyakoff - - * src/checkpoint.c: New actions: bell and ttyout - * src/system.c (sys_exec_info_script) - (sys_exec_checkpoint_script): pass the current blocking factor in - TAR_BLOCKING_FACTOR environment variable. - * doc/tar.texi: Update - * NEWS: Update - -2007-10-30 Sergey Poznyakoff - - * doc/Makefile.am: Use texi2html and the CVS version of gendocs.sh - to create HTML versions of the manual. - * doc/gendocs_template: Likewise. - * doc/tar.texi: Document --hard-dereference and - --checkpoint-action options. Improve documentation of - --check-links. - -2007-10-29 Sergey Poznyakoff - - * NEWS: Update - * configure.ac: Version 1.19.1 - * po/POTFILES.in: Add src/checkpoint.c - * src/Makefile.am (tar_SOURCES): add checkpoint.c - * src/checkpoint.c: New file - checkpoint handling. - * src/buffer.c (checkpoint, do_checkpoint): Remove. - (_flush_write, simple_flush_read, _gnu_flush_read): Use - checkpoint_run. - * src/common.h (enum checkpoint_style): Remove. - (checkpoint_style): Remove. - (DEFAULT_CHECKPOINT): New define. - (hard_dereference_option): New variable. - (sys_exec_checkpoint_script): New declaration. - * src/create.c (file_count_links): do nothing if - hard_dereference_option is set. - * src/system.c (sys_exec_checkpoint_script): New function. - (sys_exec_info_script): Restore SIGPIPE handler. - * src/tar.c: (parse_opt): New options --hard-dereference, - --checkpoint-action. - (decode_options): Call checkpoint_finish_compile. - - * src/system.c (sys_exec_info_script): Initialize buf. Problem - reported by Bengt-Arne Fjellner. - -2007-10-18 Jim Meyering - - Avoid compiler warnings. - * src/list.c (read_header_primitive): Define two locals, to - avoid incorrect "may be used uninitialized" warnings. - * src/incremen.c (procdir): Remove decl of unused local, "len". - -2007-10-18 Sergey Poznyakoff - - * doc/tar.texi (gzip): Remove compression patent - warning. According to Brett Smith, the patent is - expired. - -2007-10-17 Sergey Poznyakoff - - * src/suffix.c: New file. Compress format detection by archive - suffix (when creating). Suggested by Jean-Pierre Demailly. - * src/Makefile.am: Add suffix.c - * src/buffer.c (magic): Add an entry for new lzma format. Proposed - by Lasse Collin. - * src/common.h (set_comression_program_by_suffix): New prototype. - * src/tar.c: New options --auto-compress (-a) and --lzma - * THANKS: Add Lasse Collin and Jean-Pierre Demailly. - * NEWS: Update - * doc/tar.texi: Update - -2007-10-12 Paul Eggert - - * src/utf8.c (string_ascii_p): Recode to avoid bogus GCC 4.2.1 - warning about "comparison is always true due to limited range of - data type" when char is unsigned. - -2007-10-11 Paul Eggert - - Adjust to recent gnulib changes. - * configure.ac: Dont' check for strerror, since gnulib now does this. - * .cvsignore: Add m4, tar-[0-9]*. - * lib/.cvsignore: Adjust to various gnulib file name changes. - Add .deps, rmt-command.h. - -2007-10-10 Sergey Poznyakoff - - * configure.ac, NEWS: Raise version number to 1.19 - * tests/star/README: Update - -2007-10-05 Sergey Poznyakoff - - * src/create.c (dump_regular_file): Fix file padding in case of - truncation to zero size. - * NEWS: Update - -2007-10-04 Sergey Poznyakoff - - * tests/T-null.at: Use AT_DATA for sample output. - -2007-10-03 Sergey Poznyakoff - - * src/incremen.c (try_purge_directory): Ensure that arguments to T - and R are safe. - -2007-09-29 Sergey Poznyakoff - - * src/incremen.c (obstack_code_rename): Apply safer_name_suffix to - name arguments before storing them in T and R records. Reported by - Nicholas Cole. - -2007-09-27 Sergey Poznyakoff - - * configure.ac: Raise version number to 1.18.90 - * NEWS: Likewise - - * doc/snapshot.texi: Document version 2. - * doc/dumpdir.texi: Update. - - Implement --exclude-tag* and --exclude-cache* options for listed - incremental archives. - New option --exclude-vcs to exclude VCS-specific files and - directories. - - * NEWS: Update - * doc/tar.texi: Document --exclude-vcs option - * src/common.h (exclusion_tag_warning, check_exclusion_tags): New - prototypes. - * src/create.c (exclusion_tag_warning, check_exclusion_tags): - Remove static qualifier. - (check_exclusion_tags): account for dirname without terminating - slash. - (dump_dir0): exclusion_tag_all is handled elsewhere. - * src/incremen.c (struct directory): New member tagfile - (make_directory): Initialize tagfile to NULL - (procdir): New argument: entry - Hanlde exclusion tags. - (makedumpdir): Take into account directory->tagfile. - (scan_directory): Hanlde exclusion tags. - * src/tar.c: New option --exclude-vcs - (exclude_vcs_files): New function - -2007-09-14 Paul Eggert - - * AUTHORS: Remove unnecessary information. Just list the - principal authors. - * THANKS: Remove info duplicated from AUTHORS. - -2007-08-25 Jim Meyering - - Don't include . No longer needed. - * src/incremen.c: Don't include . No longer needed. - * src/buffer.c: Likewise. - * src/system.c: Likewise. - * src/tar.c: Likewise. - - Avoid shadowing and unused-variable warnings. - * src/create.c (check_exclusion_tags): Remove declaration of unused - local, "ret". - * src/compare.c (diff_dumpdir): Rename stat->stat_data to avoid - shadowing the syscall. - * src/buffer.c (do_checkpoint): Don't shadow the write syscall. - (try_new_volume): Avoid shadowing "access". - * src/tar.c (decode_options): Rename index->idx to avoid shadowing. - (find_argp_option): Rename option->o to avoid shadowing. - * src/incremen.c (scan_directory): Rename local, dir_name->dir, - to avoid shadowing the function. - (get_directory_contents): Likewise. - * src/system.c (global_pid): Rename from "pid", to avoid being - shadowed by locals. - * src/extract.c (apply_nonancestor_delayed_set_stat): - Rename st->sb to avoid shadowing another local. - -2007-08-24 Sergey Poznyakoff - - * configure.ac, NEWS: Raise version number to 1.18.1 - - * src/buffer.c (check_compressed_archive): Detect files smaller - than 512 bytes. - * tests/shortfile.at: New test case for the above change. - * tests/testsuite.at, tests/Makefile.am: Add shortfile.at - -2007-08-19 Sergey Poznyakoff - - * bootstrap: Gnulib initialization destroyed paxutils m4 files. - Initialize paxutils structure after that of gnulib. - -2007-08-12 Sergey Poznyakoff - - * src/names.c (contains_dot_dot): Fix double-dot recognition in - case of duplicate /. Patch by Dmitry V. Levin. - - * bootstrap (symlink_to_gnulib): Make sure the target directory - exists and create it if it does not. - - * doc/tar.texi: Fix a typo. - -2007-06-28 Sergey Poznyakoff - - * bootstrap: Update for the change of the TP URL - -2007-06-27 Sergey Poznyakoff - - Relicense under GPLv3 - -2007-06-21 Sergey Poznyakoff - - * tests/testsuite.at (AT_TAR_MKHIER): Skip test if genfile is - unable to create the file - * tests/lustar01.at: Likewise - -2007-06-21 Eric Blake - - Resolve testsuite failures 40-42 on cygwin. - * tests/testsuite.at (AT_TAR_MKHIER): Skip tests when long - file names cannot be created. - -2007-06-16 Sergey Poznyakoff - - * doc/Makefile.am (tar_TEXINFOS): Add tar-snapshot-edit.texi - * doc/tar-snapshot-edit.texi: New file - * doc/tar.texi (Fixing Snapshot Files): New appendix - - * scripts/tar-snapshot-edit: New file - * tests/extrac07.at: Add back write permissions on dir - -2007-06-09 Sergey Poznyakoff - - * tests/exclude.at: Sort the output. - -2007-06-08 Sergey Poznyakoff - - * configure.ac, NEWS: Raise version number to 1.17 - - * doc/tar.texi, doc/intern.texi: Replace: s/filename/file name/; - s/(ASCII|ID|BSD)/@acronym{&}/;s/"[^"]+"/``&''/ - Use `path' only when it refers to search paths, use - `file name' otherwise. - Fix various errors (based on patch by Benno Schulenberg) - - * doc/tar.texi (Operation Summary): Restore alphabetical order of - the options. - -2007-06-02 Sergey Poznyakoff - - Fix bug, introduced on 2007-03-30. - - * src/common.h (xform_type): New data type - (transform_member_name): Last argument is of xform_type type - All callers updated - - * src/extract.c: Update calls to transform_member_name - * src/list.c (decode_xform): Exempt symbolic links from component - stripping and name suffix normalization. - - * tests/extrac07.at: Update - -2007-05-30 Sergey Poznyakoff - - * src/xheader.c (decx): Unknown pax keywords produce a warning, - not error. - -2007-05-29 Paul Eggert - - * src/misc.c (set_file_atime): Use gl_futimens, not futimens, - due to gnulib change. - -2007-05-19 Sergey Poznyakoff - - * src/common.h (buffer_write_global_xheader): New function - (struct xheader): Move definition to tar.h - (extended_header): Remove global - (xheader_init): New function - (xheader_decode_global,xheader_store,xheader_read) - (xheader_write_global,xheader_write,xheader_string_begin) - (xheader_string_add,xheader_string_end): Take xhdr as first - argument. - * src/tar.h (struct xheader): New definition - (struct tar_stat_info): New member xhdr (extended header). - - * src/xheader.c (xheader_init): New function - (xheader_decode_global,xheader_store,xheader_read) - (xheader_write_global,xheader_write,xheader_string_begin) - (xheader_string_add,xheader_string_end): Take xhdr as first - argument. - - * src/buffer.c (buffer_write_global_xheader): New function - Update to use new xheader calls. - - * src/compare.c, src/create.c, src/delete.c, src/list.c, - src/sparse.c, src/tar.c, src/update.c: Global extended_header - removed, use new xheader calls instead. - - * tests/T-null.at: Minor fix - * tests/atlocal.in (tarball_prereq): Discard eventual md5sum - output. - -2007-05-18 Sergey Poznyakoff - - * src/create.c (dump_file0): Original ctime cannot be used as a - directory change indicator if --remove-files is given. - -2007-04-12 Paul Eggert - - Adjust to latest Gnulib. - * lib/.cvsignore: Add dirfd.c, dirfd.h, float+.h, mbscasecmp.c, - stdio.h, stdio_.h, stdlib.h, stdlib_.h, time.h, time_.h, unistd.h. - Remove exit.h, getcwd.h, mempcpy.h, memrchr.h, mkdtemp.h, stpcpy.h, - strcase.h, strchrnul.h, strdup.h, strndup.h, strnlen.h, time_r.h, - vsnprintf.h. - * m4/.cvsignore: Remove localedir.h. Sort. - -2007-04-03 Paul Eggert - - * src/common.h (closeopen): Remove decl. - * src/misc.c: Don't include , ; no longer - needed. - (get_max_open_files, closeopen): Remove. All callers removed. - (chdir_dir): Use a different technique, which doesn't rely on closing - all open files. - * src/tar.c (main): Don't call closeopen. - -2007-04-04 Sergey Poznyakoff - - * NEWS: Update - * doc/tar.texi: Update - * src/system.c (sys_exec_info_script): Store the - inter-communication fd in the environment variable TAR_FD - -2007-04-03 Sergey Poznyakoff - - * src/tar.c (main): Move closeopen after decode_options to - allow shell process substitution to work. - * tests/extrac07.at: Expect a warning on stderr. - -2007-03-30 Sergey Poznyakoff - - * src/common.h (transform_name_fp): Change signature - (transform_member_name): New function - * src/extract.c (extract_link, extract_symlink): Use - transform_member_name instead of safer_name_suffix so that - --transform and --strip-components affect links as well. - * src/list.c (transform_member_name): New function - (decode_header): Use transform_member_name - * src/names.c (all_names_found): Remove check for matching_flags. - * NEWS: Update - - * TODO: Update - * bootstrap (slurp): Remove any occurrences of $bt from the - generated gnulib.mk - * src/incremen.c: Do not include mkdtemp.h - -2007-01-26 Paul Eggert - - Adjust to recent gnulib changes. - * lib/.cvsignore: Add fchownat.c, rmt-command.h, strerror.c, string.h, - string_.h, sys, sys_time_.h, unistd_.h, wchar_.h, wctype_.h. - Remove localedir.h, size_max.h, xsize.h. - * src/xheader.c: Don't include stpcpy.h; no longer needed, now that - gnulib string.h defines stpcpy on all platforms. - -2007-01-23 Sergey Poznyakoff - - * doc/tar.texi: Document --exclude-caches* and --exclude-tag* - options. - * src/common.h (exclude_caches_option): Remove - (enum exclusion_tag_type): New data type - (add_exclude_tag): Rename to add_exclusion_tag - (cachedir_file_p): New prototype - * src/create.c (struct exclude_tag): rename to exclusion_tag - (check_exclusion_tags): New function - (cachedir_file_p): New function (from check_cache_directory) - (dump_dir0,dump_file0): Use check_exclusion_tags - * src/tar.c: New options --exclude-caches-all, - --exclude-caches-under, --exclude-tag-all, --exclude-tag-under - * tests/exclude.at: New file - * tests/Makefile.am (TESTSUITE_AT): Add exclude.at - * tests/testsuite.at: Add exclude.at - -2007-01-19 Sergey Poznyakoff - - * gnulib.modules: Require strerror - * doc/gendocs_template: Fix typos - * scripts/xsparse.c (expand_sparse): use ftruncate to handle the - trailing hole - * src/sparse.c (sparse_skip_file,pax_dump_header_1) - (pax_decode_header): Keep track of the number of bytes - written. - * configure.ac: Version 1.16.2 - * NEWS: Update - -2007-01-04 Sergey Poznyakoff - - * src/compare.c (diff_dumpdir): Compare directory contents using - dumpdir_cmp. Do not free dumpdir_buffer, it will leave the - incremental directory table in the inconsistent state and trigger - full dump. - (read_and_process): Process dumpdirs no matter what the archive - format. - * src/incremen.c (list_dumpdir): Minor fixes. - - * src/compare.c (read_and_process): Fix type of "size" - -2006-12-13 Sergey Poznyakoff - - * tests/T-null.at: Skip the test if genfile is not able to create - the filename with an embedded newline. - -2006-12-12 Paul Eggert - - Port to Forte Developer 7 C 5.4 and C99. - * src/common.h (add_exclude_tag): Add decl; C99 requires this - and Forte warns about it. - * src/incremen.c: Include for mkdtemp prototype, - for same reason. - * src/misc.c (get_max_open_files): Rewrite to avoid code that - Forte C complains about as being unreachable. - * src/xheader.c (mtime_code): Rewrite to avoid Forte error - reported by Trond Hasle Amundsen. - - * src/incremen.c (compare_dirnames): Rewrite to avoid casts. - * src/utf8.c (string_ascii_p): Likewise. - * src/xheader.c (mtime_coder, volume_size_coder, volume_offset_coder): - Likewise. - -2006-12-08 Sergey Poznyakoff - - * bootstrap: Add paxutils files to dot_ignore. - - * configure.ac: Raise version number to 1.16.1 - * bootstrap (slurp): Create .(cvs|git)ignore if not present - * po/.cvsignore, m4/.cvsignore: Remove automatically generated - files. - -2006-12-07 Sergey Poznyakoff - - * NEWS: Update - * Makefile.am (distclean-local): Fixed - * doc/tar.texi: Update documentation of --exclude-tag - * src/create.c (dump_dir0): Move checks for exclude tags to - dump_file0. - (dump_dir): Move calls to ensure_slash to dump_file0 - * src/extract.c (extract_file): Call skip_member if open fails. - Patch proposed by Jan-Benedict Glaw - * tests/truncate.at: Use genfile instead of dd, because on some - systems /dev/zero is not available. - -2006-12-04 Paul Eggert - - * NEWS: Fix some race conditions with tar -x --same-owner. - * src/extract.c (ARCHIVED_PERMSTATS): Add a comment saying that - S_IRWXG | S_IRWXO might be masked out. - (set_mode): Set the mode if some bits were masked out originally. - (set_stat): Don't chmod before chown, as that might temporarily - grant permissions that we don't want to grant. The chmod was - there only to work around broken hosts, so add a comment advising - users not to use those broken hosts instead. - (repair_delayed_set_stat, extract_dir): - Remember to mask out current umask before inverting permissions. - (extract_dir): If the owner might change, or if the mode has - special bits, create the directory 700 at first, but restore it later. - (open_output_file): New arg mode; all uses changed. - (extract_file, extract_node, extract_fifo): If the owner might - change, omit group and other bits at first, but restore them after - changing the owner. - -2006-12-04 Jim Meyering - - * doc/tar.texi (Long Options): Remove doubled word. - -2006-11-30 Sergey Poznyakoff - - * src/xheader.c (xheader_read): Remove unused variable - - * po/POTFILES.in: Remove src/mangle.c - - * bootstrap: Implement --update-po and .bootstrap - - * src/create.c (dump_dir0): Implement --exclude-tag option - * src/tar.c: Likewise - * doc/tar.texi (exclude): Document --exclude-tag - -2006-11-29 Paul Eggert - - * NEWS: Remove support for mangled names. - * doc/tar.texi (verbose tutorial): Likewise. - * src/Makefile.am (tar_SOURCES): Remove mangle.c. - * src/common.h (extract_mangle): Remove decl. - * src/extract.c (extract_mangle_wrapper): Remove. - (prepare_to_extract): Remove support for mangled names. - * src/list.c (read_and, print_header): Likewise. - * src/mangle.c: Remove. - * src/tar.h (GNUTYPE_NAMES): Remove. - - Port to latest gnulib. There were a lot of changes, so the - simplest way to get this up and running was to switch to coreutils - bootstrap procedure. I noticed one feature missing after this - merge: the ability to update a single .po file. I can add that - later if need be. - * README-cvs, bootstrap.conf: New files. - * lib/.cvsignore: Remove Makefile.am, printf-parse.c, vasnprintf.c. - Add fstatat.c, gnulib.mk, openat-proc.c, same-inode.h, stat_.h, - tempname.c, tempname.h, uinttostr.c. - * lib/printf-parse.c, lib/vasnprintf.c: New files, from coreutils, - to override gnulib, so that we don't need xsize.h. - * bootstrap: Replace with coreutils bootstrap, except add support - for paxutils. - * configure.ac (gl_USE_SYSTEM_EXTENSIONS): Remove, as gl_EARLY now - does this. - (gl_EARLY, gl_INIT): Add. - (tar_GNULIB): Remove. - * gnulib.modules: Add configmake. - * lib/Makefile.tmpl: Remove, replacing with.... - * lib/Makefile.am: New file. - * src/Makefile.am (tar.o): Remove dependency: Automake does this - for us. - * src/tar.c: Include and , not - . - -2006-11-13 Sergey Poznyakoff - - * src/xheader.c (mtime_coder): Treat non-null data as a pointer to - struct timespec, overriding st->mtime - * src/create.c (start_header): Pass mtime as a call-specific data - to xheader_store. - - * tests/truncate.at: Do not use 'k' modifier in dd options. - * tests/append02.at: Do not depend on command timing. - -2006-11-01 Sergey Poznyakoff - - * src/tar.c (enum read_file_list_state.file_list_skip): New value - (read_name_from_file): Skip zero-length entries - - * tests/T-empty.at: New test case - * tests/T-null.at: New test case - * tests/extrac07.at: New test case - * tests/Makefile.am: Add new test cases. - * tests/testsuite.at: Add new test cases. - * tests/extrac02.at: Add more keywords - * tests/extrac04.at: Likewise - * tests/extrac06.at: Likewise - * tests/shortrec.at: Do not assume tar's default archive is stdout - -2006-10-31 Sergey Poznyakoff - - * src/extract.c, src/xheader.c: Call last_component instead of - base_name. The latter returns a malloced string since 2006-03-11. - -2006-10-21 Sergey Poznyakoff - - * NEWS, configure.ac: Version 1.16 - * Makefile.am (distclean-local): New rule - -2006-10-17 Sergey Poznyakoff - - * src/tar.c: Fix help output formatting. Thanks Benno - Schulenberg. - -2006-10-16 Sergey Poznyakoff - - * Makefile.am (dist-hook): Create a cpio archive. - * NEWS: Update - -2006-10-14 Sergey Poznyakoff - - * doc/tar.texi (Synopsis): Document tar exit codes. - * src/create.c (dump_regular_file,dump_file0): Set exit_status to - TAREXIT_DIFFERS if the file being dumped was truncated or - otherwise changed. - * src/tar.c: Do not attempt to close stderr after call to - close_stdout. - * tests/grow.at: New test case - * tests/Makefile.am: New test grow.at - * tests/testsuite.at: Likewise - * tests/truncate.at (AT_KEYWORDS): Keyword `filechange' - Test tar exit status. - - * src/buffer.c (_open_archive): Make sure stdlis is set to stderr - when we are writing archive to stdout (unless --index-file is - used). Bug introduced on 2006-07-06. - * tests/Makefile.am: New test verbose.at - * tests/testsuite.at: Likewise - * tests/indexfile.at (AT_KEYWORDS): Add stdout keyword - * tests/verbose.at: New test case - -2006-10-02 Sergey Poznyakoff - - * THANKS: Add Joerg Weilbier - * src/buffer.c (new_volume): Initialize current_block - * src/xheader.c (xheader_string_end): Fix diagnostic message. - * tests/multiv05.at: New testcase. - * tests/Makefile.am, tests/testsuite.at: Add multiv05.at - -2006-09-27 Sergey Poznyakoff - - * bootstrap: Use ${package} instead of hardcoding package name - * doc/tar.texi: Minor fix - * src/tar.c (doc0, doc1, initialize_argp_doc): Removed. Rely on - the new argp method instead. - -2006-09-12 Sergey Poznyakoff - - * README: Fix a typo - -2006-09-08 Paul Eggert - - Adjust to latest gnulib. - * lib/.cvsignore: Add at-func.c, configmake.h, fchmodat.c, - fcntl.h, fcntl_.h, inttypes_.h, lstat.c, lstat.h. - * tests/testsuite.at (AT_TAR_MKHIER): Use install-sh -d - rather than the no-longer-included mkinstalldirs. - -2006-09-08 Sergey Poznyakoff - - * src/incremen.c (try_purge_directory): Initialize struct st. Fix - condition for selecting candidates for removal. - * README-alpha: List texinfo among build prerequisites for the CVS - version. - - * bootstrap (intl_files_to_remove): Do not remove m4/inttypes-h.m4 - and m4/inttypes-pri.m4 - -2006-08-11 Paul Eggert - - * bootstrap: Set XGETTEXT_OPTIONS to flag our printf-format functions, - so that translators are warned about strings that are formats but - don't look like formats. This might help prevent core dumps. - * configure.ac (AM_GNU_GETTEXT): Upgrade to need-formatstring-macros. - Suggested by Eric Blake to avoid problems like - . - (AM_GNU_GETTEXT_VERSION): Upgrade from 0.12.1 to 0.15. The gettext - manual says we should use the version number normally expected of - maintainers, neither more nor less. - - * bootstrap (get_translations): - Don't exclude ky.po; it is working again. - -2006-08-09 Paul Eggert - - * bootstrap (get_translations): - Don't exclude ja.po; it is working again. - Don't remove all old .po files if we're merely updating one. - * po/.cvsignore: Add Makevars. - -2006-08-07 Paul Eggert - - * src/tar.c: Work around limitation imposed by gettext 0.15 - by concatenating strings with "\v" after translation. - (doc): Remove, splitting into: - (doc0, doc1): New constants. - (argp): Don't use doc; just initialize to NULL. - (initialize_argp_doc): New function. - (decode_options): Use it. - - * bootstrap: Redo po file retrieval to match Bison's method, - since the translation project changed its index format. - Don't use --assume-autoconf; it's now replaced - by looking in configure.ac. - (m4/codeset.m4, m4/intdiv.m4, m4/inttypes-pri.m4, m4/isc-posix.m4): - (m4/lcmessage.m4, m4/onceonly_2_57.m4, m4/gettext.m4, m4/glibc21.m4): - (m4/inttypes_h.m4, m4/lib-ld.m4, m4/lib-prefix.m4, m4/po.m4): - (m4/stdint_h.m4, m4/uintmax_t.m4, m4/ulonglong.m4): - Don't rename to ..._gl.m4, as this is no longer needed. - (m4/geteext.m4): Patch to remove the need for intl/*. - Use autopoint manually, then remove the intl files, - then undo changes to gnulib files that autoreconf made, - and then run aclocal/autoconf/autoheader/automake. - This makes our bootstrap procedure closer to Bison's. - (po/Makevars): Generate automatically. - * configure.ac (AC_PREREQ): Update from 2.59 to 2.60. - (gl_AC_TYPE_INTMAX_T, jm_AC_TYPE_UINTMAX_T): Remove. - * gnulib.modules: Add inttypes, stdint. - * lib/.cvsignore: Add close-stream.c, close-stream.h, - stdint.h, stdint_.h. - * po/Makefile: Remove; now automatically generated. - - * src/incremen.c (read_incr_db_01): Check input strings more - carefully. Do not pass arbitrary char values to isspace, as - this has undefined behavior. Likewise for assigning arbitrary - uintmax_t values to other types. - (read_negative_num, read_unsigned_num, read_timespec): - New functions, to check input values a bit more carefuly. - (read_num): Use read_unsigned_num. New arg MAX_VAL; - all callers changed. - (read_incr_db_2): Use these new functions. - Use a consistent diagnostic for unexpected EOF. - (read_directory_file): Do not assign arbitrary uintmax_t value - to int. - (read_timespec, write_directory_file_entry, write_directory_file): - Handle negative time_t values correctly. We don't bother to do - this with pre-2 formats, since presumably the time stamps were - output incorrectly. - - * src/tar.c (doc): Don't use \v in an argument to gettext; - gettext 0.15 rejects this. - -2006-07-24 Sergey Poznyakoff - - * src/tar.c (decode_options): Do not require -L with -M -Hpax. - It could be needed in future, but currently it is not. - * src/create.c (to_chars_subst): Update comment regarding OLDGNU - vs. GNU format differences. - (mode_to_chars): Treat OLDGNU_FORMAT same as GNU_FORMAT. Fixes bug - reported by TAMUKI Shoichi , which caused - equivalent `tar cf ...' and `tar rf ...' commands to produce - different archives. - - * tests/append02.at: New test case - * tests/Makefile.am, tests/testsuite.at: Add append02.at - -2006-07-20 Paul Eggert - - * bootstrap: Adjust to today's change to gnulib-tool by invoking - it with --assume-autoconf='latest-stable'. - -2006-07-16 Paul Eggert - - Adjust to recent gnulib changes. - * lib/.cvsignore: Remove atexit.c, exit.c, getndelim2.c, getndelim2.h, - pathmax.h, paxconvert.c, paxerror.h, xstrdup.c. - Add inttypes.h, mktime.c, wcwidth.h, xstrndup.c, xstrndup.h. - * src/create.c (start_header): Adjust to API change to mode_adjust. - -2006-07-09 Sergey Poznyakoff - - * THANKS: Add Ralf Wildenhues - * NEWS: Update - -2006-07-09 Ralf Wildenhues - - * doc/dumpdir.texi, doc/snapshot.texi, doc/sparse.texi, - doc/tar.texi: Fix some typos. - -2006-07-06 Sergey Poznyakoff - - tar --index-file=FILE --file=- sent the archive to FILE, and - the listing to stderr. Bug reported by Marcin Gryszkalis - - - * src/buffer.c (_open_archive): Remove stdlis initialization - * src/tar.c (decode_options): Initialize stdlis - * tests/indexfile.at: New test case - * tests/testsuite.at: Include indexfile.at - * tests/Makefile.am (TESTSUITE_AT): Add indexfile.at - -2006-07-05 Sergey Poznyakoff - - * doc/Makefile.am (manual): Fix TEXINPUTS - * doc/rendition.texi (FIXME): Do not use deprecated @quote-args. - Do not use @allow-recursion. In its current form the macro is not - recursive. - -2006-07-03 Sergey Poznyakoff - - * bootstrap (update_po): Fix single translation update - -2006-07-03 Sergey Poznyakoff - - * configure.ac (AC_CHECK_FUNCS): Check for getdtablesize - * src/common.h (closeopen): New function - * src/misc.c (chdir_arg): Use x2nrealloc to reallocate wd. - (get_max_open_files,closeopen): New functions - (chdir_do): Do not use save_cwd if it was already used more than - max_open_files-4 times to avoid running off the file - descriptors. - * src/tar.c (main): Call closeopen - * doc/tar.texi: Update --directory description - * NEWS: Update - -2006-06-26 Sergey Poznyakoff - - * doc/tar.texi: Update. Add cross-references. - * doc/sparse.texi: Add cross-references. - -2006-06-25 Sergey Poznyakoff - - * scripts/xsparse.c: A sample utility to expand sparse files - extracted by third-party tars. It is not meant to be installed nor - to be included in the distribution. It is here, so that it can be - obtained either from CVS or from the tar web site. - * doc/Makefile.am (tar_TEXINFOS): Sorted - * doc/tar.texi (Other Tars): New node describing how to extract - GNU-specific member formats using third-party tars. - * src/common.h (sparse_file_p): Remove - * src/sparse.c: Likewise - * src/create.c: Use ST_IS_SPARSE instead of sparse_file_p (update - paxutils first) - * src/tar.c: --sparse-version turns on --sparse - -2006-06-24 Sergey Poznyakoff - - * src/buffer.c (print_total_stats): Add default case. - * src/common.h (name_init): New prototype. - (xheader_string_end): Return bool. - * src/extract.c (extract_volhdr): Add missing return - * src/incremen.c: Remove not used variables - * src/sparse.c (pax_dump_header_0): Return false if - xheader_string_end fails (for 0.1 formats). - (pax_dump_header): Return meaningful value - * src/transform.c (segm_count): Change type to size_t - * src/xheader.c (xhdr_tab.decoder): pass keyword as a second - argument. All callers changed. - (decode_record): Check for numeric overflow - (xheader_string_end): Return boolean value. Check for possible - numeric overflow - -2006-06-23 Sergey Poznyakoff - - * doc/sparse.texi: New file - * doc/Makefile.am (tar_TEXINFOS): Add sparse.texi - * doc/intern.texi (Sparse Formats): New node - * doc/tar.texi: Update master menu - - * src/common.h (tar_sparse_major,tar_sparse_minor): New globals. - * src/sparse.c: Implement sparse format versioning. Implement new - version (1.0) of PAX sparse format. - (pax_sparse_member_p): Fix condition - (pax_dump_header): A dispatcher function - (pax_dump_header_0,pax_dump_header_1): New functions. - (pax_optab): Update - (oldgnu_dump_header): Minor fix: make sure - sparse_header.isextended is set before calling - set_next_block_after - * src/tar.c: New option --sparse-version - * src/tar.h (struct tar_stat_info.sparse_major,sparse_minor): New - members. - * src/xheader.c: Implement new keywords: GNU.sparse.name, - GNU.sparse.major, GNU.sparse.minor, GNU.sparse.realsize - - * tests/spmpv00.at, tests/spmvp01.at, tests/spmvp10.at: New - testcases. - - * tests/Makefile.am: Add spmvp00.at, spmpv01.at, spmpv10.at - * tests/shortrec.at: Explicitely give `-f -' to the tar invocation - * tests/sparsemvp.at: Rewritten as an include file. - (TAR_MVP_TEST): New macro - * tests/testsuite.at: Include sparsemvp.at, spmvp00.at, - spmvp01.at, spmvp10.at - -2006-06-21 Sergey Poznyakoff - - * doc/tar.texi (Overriding File Metadata): New node - Document --mtime option. - * src/common.h (set_mtime_option,mtime_option): New globals - * src/create.c (start_header): Override mtime if requested - * src/tar.c: Implement new option, --mtime, allowing to set - modification times for all archive members during creation. - (struct tar_args): textual_date_option replaced with a linked list - textual_date. All references updated. - (get_date_or_file,report_textual_dates): New functions. - * configure.ac: Raise version number to 1.15.92 - * NEWS: Update - -2006-06-20 Sergey Poznyakoff - - * src/common.h (struct name.explicit): Remove - Use variable names in all declarations - (name_scan): Remove second argument - * src/delete.c: Remove second argument from calls to name_scan - * src/update.c: Likewise - * src/incremen.c (procdir): Use is_individual_file to check for - files explicitely specified in the command line. Fixes bug - reported by Dat Head on 19 Jun 2006 (descending into mountpoints - with --one-file-system in use) - * src/misc.c (maybe_backup_file): Second argument is bool - * src/names.c (name_next_elt): Call register_individual_file - (namelist_match): Remove third argument - (name_match): Change return type to bool - (name_scan): Remove second argument - * src/sparse.c (pax_dump_header): Store original sparse file name - in GNU.sparse.name variable. The name field in the ustar header - now contains generated name (%d/GNUSparseFile.%p/%f), so that - non-pax-aware tars won't extract the file under the original - filename. - * src/xheader.c (GNU.sparse.name): New variable for storing sparse - file name. - -2006-06-13 Sergey Poznyakoff - - * doc/Makefile.am (check-options): Expand macros before grepping - in $(info_TEXINFOS) - * doc/rendition.texi (FIXME) [!PROOF_FOOTNOTED]: Enclose in a - cartouche - * doc/tar.texi: Define op as codeindex. Use special macros to - populate it - Consequently prefer @dfn{long options} over @dfn{mnemonic - options}. - Document --unquote, --no-unquote - (Short Option Summary): Build a table of cross-references to the - corresponding long options. - (Using Multiple Tapes,Multi-Volume Archives): Rewritten - - * doc/value.texi (xopindex,opsummary): New macros - - * doc/Makefile.am (check-options): New goal - * doc/tar.texi: Update - * src/tar.c: Implement --overwrite-dir option (long ago - documented). - -2006-06-12 Sergey Poznyakoff - - * doc/tar.texi: Document better the --totals option - * NEWS: Update - * src/buffer.c (total_blocks_deleted): New variable - (set_start_time): Set volume_start_time and last_stat_time as well - (set_volume_start_time): New function - (compute_duration): Do not call set_start_time, update - last_stat_time instead. Use it in calculation instead of - start_time, which is now set only once, upon startup. - (print_total_written): Removed. - (print_total_stats): New function for printing byte/speed statistics. - (_open_archive): Detect attempts to update compressed archives. - (_gnu_flush_write): Always update prev_written. - (open_archive): Call set_volume_start_time. - * src/common.h (volume_start_time,last_stat_time): New globals - (print_total_written): Replaced with: - (print_total_stats): New function - * src/delete.c (records_skipped): Remove static qualifier, the - variable is used by print_total_stats in buffer.c - * src/extract.c (check_time): Use volume_start_time when checking - for timestamp plausability. - * src/tar.c: (options, parse_opt): Allow for optional argument to - the --totals option, which specifies a signal upon delivery of which - the statistics must be output. - (main): Call print_total_stats if total_option is set. - -2006-06-11 Sergey Poznyakoff - - * src/xheader.c (xheader_set_single_keyword): Fix typo. - (decode_time): Avoid using gotos. - - * doc/mastermenu.el: New file - * doc/Makefile.am (master-menu): New goal - * doc/tar.texi: Update master menu - -2006-06-10 Sergey Poznyakoff - - * doc/tar.texi: Remove leftover include - -2006-06-09 Sergey Poznyakoff - - * doc/Makefile.am (tar_TEXINFOS): Add intern.texi - (EXTRA_DIST): Remove convtexi.pl, add texify.sed - * doc/intern.texi: New file - * doc/convtexi.pl: Remove - * doc/texify.sed: Auxiliary script to convert ../src/tar.h to - header.texi - * doc/rendition.texi: Fix typo - * doc/tar.texi: Update - * src/tar.h: Fix indentation, introduce end-of-format marker for - texify.sed - - * THANKS: Add Jason Armistead - * doc/tar.texi: Update - * NEWS: Update - * src/buffer.c: Implement more flexible checkpoint style - * src/common.h (checkpoint_option): Change type to unsigned - (checkpoint_style): New variable. - * src/tar.c: --checkpoint takes an optional argument specifying - number of records between two successive checkpoints (proposed - by Jason Armistead on 2004-06-22). Optional dot starting the - argument means "print dots instead of textual checkpoints". - (tar_help): New function - * src/transform.c: Minor fixes. - -2006-06-08 Sergey Poznyakoff - - * gnulib.modules: Add mkdtemp - * doc/dumpdir.texi: New file - * doc/Makefile.am (tar_TEXINFOS): Add dumpdir.texi - * doc/tar.texi: Document dumpdir format - * src/incremen.c (dumpdir_locate,obstack_code_rename): - (purge_directory): Re-implement renaming. Introduce - 'X' control code. - (make_tmp_dir_name): Remove - - * src/transform.c (set_transform_expr,_transform_name_to_obstack): - Implement NUMBER flag. - (add_char_segment): Fix length assignement - - * doc/tar.texi: Update - -2006-06-07 Sergey Poznyakoff - - * src/transform.c (transform_name_fp): Run fun even if - _transform_name_to_obstack returns false. - (_transform_name_to_obstack,set_transform_expr): Implement GNU - extension case conversion operations. - - * doc/tar.texi (transform): Document the option. - -2006-06-02 Sergey Poznyakoff - - * NEWS: Update - * src/common.h (set_transform_expr): New function - * tests/Makefile.am: Add incr04.at - * tests/testsuite.at: Likewise - * tests/incr04.at: New test case - * tests/long01.at: Fix typo in the comment - * tests/multiv04.at: Use genfile --files-from - - (Above changes need new genfile.c from paxutils) - - * TODO: Update - * NEWS: Update - * doc/tar.texi: Update - * src/transform.c: New file - * src/Makefile.am (tar_SOURCES): New module transform.c - * src/common.h (transform_name, transform_name_fp): New functions - (show_stored_names_option): Renamed to - show_transformed_names_option. All uses changed - * src/create.c (dump_file0): Transform file name - * src/extract.c (extract_archive): safer_name_suffix and - stripped_prefix_len are now called by decode_header - * src/list.c (print_header): Update displayable name selection. - * src/tar.c: New option --transform - New option --show-transformed-names generalizes - --show-stored-names. The latter is retained as an alias. - -2006-05-31 Sergey Poznyakoff - - * src/incremen.c (make_directory): Fix initialization of struct - directory. - -2006-05-25 Sergey Poznyakoff - - * doc/tar.texi: Document use of globbing patterns. - * src/tar.c (parse_opt): Add comment before --preserve case. - -2006-05-24 Sergey Poznyakoff - - * NEWS: Update - * doc/tar.texi: Update - * configure.ac (AM_INIT_AUTOMAKE): Use tar-ustar option. Raise - version requirement to 1.9 - * src/common.h (struct name): Refactured - (warn_regex_usage): New variable. - (dump_file): First argument is const char*. - (name_init,name_add): Removed - (name_add_name,name_add_dir): New functions - (name_next): Return const char*. - * src/create.c: (dump_file,dump_file0): First argument is const - char*. All callers updated. - * src/names.c: Rewritten handling of member names in the command - line. Tar no longer attempts to guess globbing patterns, instead - it relies on --wildcard option. - (init_names): Removed. - (struct name_elt): New structure. - (name_array): Change type to struct name_elt. All references updated - (name_add_name,name_add_dir): New functions - (name_next_elt): New function - (name_next): Rewritten using name_next_elt. - (namelist_match): Rewritten pattern matching using - exclude_fnmatch. - (names_notfound): Warn if globbing patterns were used without - --wildcards option - * src/tar.c (options): Move globbing-related options into a - separate group. Set -l as an alias to --check-links, as required - by UNIX98 - (struct tar_args): New fields - wildcards,matching_flags,include_anchored - (MAKE_EXCL_OPTIONS,MAKE_INCL_OPTIONS): New macros - (parse_opt): Use x2nrealloc to grow archive_name_array. - Use MAKE_EXCL_OPTIONS,MAKE_INCL_OPTIONS to create appropriate - fnmatch options, and name_add_name,name_add_dir to handle member - name and -C arguments. - (decode_options): Likewise - (main): Remove call to init_names. - - * tests/append.at, tests/append01.at, tests/extrac01.at, - tests/options.at, tests/options02.at, tests/same-order01.at, - tests/same-order02.at: Make AT_SETUP more readable. - -2006-05-23 Sergey Poznyakoff - - * src/buffer.c (change_tape_menu): Fix typo (uninitialized - variable) introduced yesterday. - -2006-05-22 Sergey Poznyakoff - - * doc/tar.texi: Use @var{file_name} instead of @var{file name} - * src/buffer.c (change_tape_menu): Break the loop after obtaining - new archive name. Check for empty input line. - -2006-05-15 Sergey Poznyakoff - - * tests/atlocal.in (XFAILFILE): New variable - * tests/version.at: Create $XFAILFILE on failure - * tests/testsuite.at (AT_TAR_CHECK): Declare expected failure if - $XFAILFILE exists. - -2006-05-13 Sergey Poznyakoff - - * THANKS: Update - * src/buffer.c (read_header0): Use read_header_primitive to avoid - clubbering current_tar_info. All callers updated. - * src/common.h (read_header_primitive): New function - * src/extract.c (extract_volhdr): New function - (prepare_to_extract): Use extract_volhdr as extractor for volume - names. - * src/list.c (read_header_primitive): New function - (read_header): Front end for read_header_primitive - * tests/chtype.at: New file - * tests/volsize.at: New file - * tests/Makefile.am (TESTSUITE_AT): Add chtype.at, volsize.at - (check-full): New target. - * tests/atlocal.in (TEST_DATA_URL,STAR_DATA_URL) - (STAR_TESTSCRIPTS): Provide default values. - (tarball_prereq): New function - * tests/testsuite.at (AT_TARBALL_PREREQ): New defun - (AT_STAR_PREREQ): Rewrite using tarball_prereq - Include chtype.at and volsize.at - * tests/volume.at: Add keywords. - - * tests/star/gtarfail.at, tests/star/gtarfail2.at, - tests/star/multi-fail.at, tests/star/pax-big-10g.at, - tests/star/ustar-big-2g.at, tests/star/ustar-big-8g.at - (AT_STAR_PREREQ): Provide md5 sum. - - * lib/.cvsignore: Update - -2006-05-08 Sergey Poznyakoff - - * tests/testsuite.at (AT_SORT_PREREQ, AT_UNPRIVILEGED_PREREQ): New - defines - - * tests/extrac04.at, tests/incr03.at, tests/listed02.at, - tests/pipe.at, tests/rename01.at, tests/rename02.at, - tests/rename03.at, tests/same-order01.at: Call - AT_SORT_PREREQ. Remove fd 2 redirection after calls to sort - * ignfail.at: Call AT_UNPRIVILEGED_PREREQ - -2006-05-08 Sergey Poznyakoff - - Listed incremental backups: keep more information about - directories. Handle renamed directories more effectively - (initial implementation, more updates to follow). - Source tree before this point is tagged - alpha_1_15_90_incremental_1. - - * NEWS: Update - * configure.ac: Raise version number to 1.15.91 - * src/common.h (rename_directory,append_incremental_renames): New - functions. - * src/extract.c (rename_directory): New function - * src/incremen.c (struct directory.contents, flags): New members - (nfs,found,new): Remove. Replaced by appropriate bitmask values in - `flags' field. All uses updated. - (directory_meta_table): New table. - (hash_directory): Rename to hash_directory_name - (compare_directories): Rename to compare_directory_names - (hash_directory_meta,compare_directory_meta,find_directory_meta): - New functions - (compare_dirents): Removed - (note_directory): Get 7th argument: directory contents. - All callers updated - (dumpdir_locate,makedumpdir): New functions - (scan_directory): Rewritten. Use makedumpdir to create a sorted - dumpdir array. This makes the obstack argument unnecessary. Besides, - ALL_CHILDREN flag is set only for new directories. - (procdir): Change return type to struct directory. Return - immediately if the directory was already initialized. Discover - directory renames using directory_meta_table. - (append_incremental_renames): New function. - (read_directory_file, write_directory_file): Use new snapshot file - format. - * src/names.c (collect_and_sort_names): Update dir_contents of the - first non-fake name entry when in listed incremental mode. - - * tests/incr03.at: New testcase - * tests/rename01.at: New testcase - * tests/rename02.at: New testcase - * tests/rename03.at: New testcase - * tests/Makefile.am: Add - incr03.at,rename01.at,rename02.at,rename03.at - * tests/testsuite.at: Likewise. - * tests/listed02.at: Update for the new behavior - * tests/multiv04.at (AT_KEYWORDS): Add missing incremental kw. - -2006-05-02 Sergey Poznyakoff - - * src/buffer.c (try_new_volume): Attempt to continue if the name - is apparently truncated in a GNU format volume. - - * tests/comprec.at, tests/delete01.at, tests/delete02.at, - tests/delete04.at, tests/delete05.at, tests/extrac05.at, - tests/listed01.at, tests/multiv01.at, tests/multiv02.at, - tests/pipe.at, tests/same-order01.at, tests/same-order02.at, - tests/sparse01.at, tests/sparse03.at: Always use genfile --file, - this enables extra error checking. - - * tests/multiv03.at: Attempt to extract a member with truncated - file name from the archive. - - * src/buffer.c (_open_archive): Remove unnecessary argument to - check_compressed_archive. - -2006-04-25 Sergey Poznyakoff - - * tests/sparse01.at, tests/sparse02.at, tests/sparse03.at, - tests/sparsemv.at, tests/sparsemvp.at: Skip the test if the file - system does not support sparse files. - * doc/tar.texi (@copying): Remove the reference to not existing - invariant section. - -2006-04-11 Sergey Poznyakoff - - * src/extract.c (extract_dir): Fix toggling existing directory - permissions (Debian bug #361077). Use parts of patch provided by - Ian Jackson . - * src/compare.c: Minor changes - * src/incremen.c (directory.new): New member - (note_directory,find_directory: Use make_directory to create - struct directory entries - (procdir): Avoid duplicating directories in the incremental - backup map. - * tests/Makefile.am (TESTSUITE_AT): Add extrac06.at - * tests/testsuite.at: Include extrac06.at - -2006-03-18 Ralf Wildenhues (trivial change) - - * tests/atlocal.in (PATH): Add build-aux from the source tree, - not the build tree. - -2006-03-13 Sergey Poznyakoff - - * THANKS: Add Benno Schulenberg - -2006-03-13 Jim Meyering - - * tests/listed02.at: Sort the two lines of stderr from the - first `tar -v --listed-incremental'. They would come out - reversed and provoke a test failure on a tmpfs - file system. - -2006-03-13 Benno Schulenberg - - * doc/tar.texi: Minor fixes. - * src/tar.c (options): Consistently begin help messages with a - lowercase letter. - -2006-03-12 Sergey Poznyakoff - - * tests/Makefile.am (AM_CPPFLAGS): Define LOCALEDIR - -2006-03-07 Paul Eggert - - * src/buffer.c (record_buffer_aligned): New var. - (init_buffer): Use it to ensure that the buffer is aligned. - This doesn't result in any measurable performance improvement - on my host (Debian GNU/Linux 3.1 stable, with default block size), - but I assume it does help on some hosts. - - * lib/.cvsignore: Sort. - -2006-03-04 Sergey Poznyakoff - - * tests/shortrec.at: Use -f - to read from stdin. - -2006-02-21 Sergey Poznyakoff - - * doc/tar.texi: Fix typo: --to-command instead of --to-program - -2006-02-20 Paul Eggert - - * tests/multiv04.at (split directory members in a MV archive): - Don't use %X in an awk printf format; this doesn't work with - Solaris 10 /usr/bin/awk. Use %x instead. - -2006-02-20 Sergey Poznyakoff - - * src/create.c (split_long_name): Fix maximum length estimation. - Patch by Jim Lowe. - * tests/Makefile.am (lustar01.at,lustar02.at,lustar03.at): New - tests. - * tests/atlocal.in: Add build-aux to the PATH - * tests/long01.at: Remove mkhier, use AT_TAR_MKHIER instead - * tests/longv7.at: Reword test title - * tests/lustar01.at: New test - * tests/lustar02.at: New test - * tests/lustar03.at: New test - * tests/testsuite.at (AT_TAR_MKHIER): New macro - (lustar01.at,lustar02.at,lustar03.at): New tests. - -2006-02-20 Paul Eggert - - * bootstrap: Don't claim lib/Makefile.am is generated automatically - from itself. - - Avoid installation glitches on Solaris 8 with Sun C 5.4. - * lib/.cvsignore: Add system-ioctl.h. - * lib/Makefile.tmpl (noinst_HEADERS): Add system-ioctl.h. - * src/buffer.c: Include system-ioctl.h. - * src/compare.c: Likewise. - * src/delete.c: Likewise. - * src/system.c: Include , . - * src/tar.c: Include . - -2006-02-19 Sergey Poznyakoff - - * src/buffer.c (add_chunk_header): Free st.orig_file_name after - calling finish_header(). - (new_volume): Prompt the user for archive name if unable to open - next archive. - - * src/create.c (dump_file0): Restore file_count_links, - accidentally removed on 2005-11-29. - * configure.ac: Raise version number to 1.15.90 - * NEWS: Likewise. - -2006-02-08 Sergey Poznyakoff - - * src/tar.c (tar_set_quoting_style): Provide second argument to - the format spec: program_invocation_short_name. Reported by Jim - Meyering. - -2006-02-07 Paul Eggert - - * gnulib.modules: Add closeout, exitfial. - * lib/.cvsignore: Add __fpending.c, __fpending.h, closeout.c, - closeout.h. - * src/buffer.c: Incluse closeout.h. - (_open_archive): Use freopen rather than fopen, so - that stdlis is always either stdout or stderr. Use - close_stdout_set_file_name to report its name. - * src/tar.c: Include closeout.h and exitfail.h. - (parse_opt, usage): Call close_stdout as appropriate, to check for - write errors. - (decode_options): Exit with status TAREXIT_FAILURE, not 1. - (main): Set exit_failure, to exit with proper status on memory - allocation failure and the like. - Use close_stdout rather than rolling our own test. - - * NEWS: --version now outputs copyright etc., to conform to the - GNU coding standards. Remove --license. - * gnulib.modules: Add version-etc-fsf. - * doc/tar.texi: Document the change. - * lib/.cvsignore: Add version-etc-fsf.c, version-etc.c, version-etc.h. - * scripts/Makefile.am (SED_CMD): Update PAKCAGE_NAME, not PACKAGE. - * scripts/backup.in: Remove --license. Change --version to conform - to GCS. - * scripts/restore.in: Likewise. - * scripts/backup.sh.in (license): Output briefer license in the - style of coreutils, for consistency with other changes. - * src/tar.c: Include . - (LICENSE_OPTION): Remove. - (options): Remove --license. - (license): Remove. - (parse_opt): Use version_etc instead of rolling it ourselves. - Remove --license. - * tests/version.at (tar --version): Check only the first line of - output. - - * ChangeLog, NEWS, src/common.h, src/extract.c, src/incremen.c: - * src/list.c, src/names.c, src/tar.h, src/xheader.c: - Update copyright year to 2006. - -2006-02-07 Jim Meyering - - * src/xheader.c (sparse_map_decoder): Fix misleading diagnostic. - -2006-01-31 Sergey Poznyakoff - - * src/common.h (get_gnu_dumpdir): Remove prototype - (is_dumpdir): New function - * src/extract.c (prepare_to_extract): Use is_dumpdir member to - check for dumpdirs. - * src/incremen.c (get_gnu_dumpdir): Static - (is_dumpdir): New function - (purge_directory): Use is_dumpdir - * src/list.c (list_archive): Use is_dumpdir - Do not wrap skip_member in mv_begin/mv_end, the function itself - takes care of it. - (decode_header): Set stat_info->is_dumpdir - (skip_member): Do nothing if skipped is true - * src/tar.h (struct tar_stat_info): New members is_dumpdir and skipped. - -2006-01-22 Sergey Poznyakoff - - * src/tar.c (decode_options): Refuse using --delete with - compression options. - -2006-01-18 Sergey Poznyakoff - - * NEWS: Updated. - * configure.ac (DEFAULT_QUOTING_STYLE): New configuration variable - * doc/tar.texi: Initial documentation for --quoting-style, - --quote-chars and --no-quote-chars option. - * src/tar.c: Implement new options --quoting-style, --quote-chars - and --no-quote-chars. - -2006-01-09 Paul Eggert - - * bootstrap: Default to pserver, and switch to cvs.sv.gnu.org, - to accommodate recent changes to the GNU CVS server. - * lib/.cvsignore: Add argp-pin.c, mkdirat.c, openat-priv.h. - -2005-12-14 Sergey Poznyakoff - - * src/names.c (name_scan): Take an additional argument requesting - exact matching. - * src/common.h (name_scan): Change prototype. - * src/delete.c, src/incremen.c, src/update.c: Update invocations - of name_scan. - -2005-12-13 Sergey Poznyakoff - - * src/common.h (struct name): New member `explicit'. Remove unused - member `isdir'. - * src/incremen.c (procdir): If name_scan() returns something, - check if it was explicitely given in the command line - * src/names.c (addname,add_hierarchy_to_namelist): Initialize - explicit member appropriately. - - * src/incremen.c (procdir): If --one-file-system is given and a - directory is found to be on another device, *and* this directory - is explicitely given in the command line, then do not omit it. - -2005-12-11 Sergey Poznyakoff - - * NEWS: Update - * doc/tar.texi: Document --delay-directory-restore option. - (Configuring Help Summary): Document usage of ARGP_HELP_FMT - variable to customize help output. - * src/common.h (delay_directory_restore_option): New global. - * src/extract.c (directories_first): Replaced by - delay_directory_restore_option. All uses changed. - * src/tar.c (options,parse_opt): New options - --delay-directory-restore and --no-delay-directory-restore - -2005-12-09 Sergey Poznyakoff - - * src/buffer.c (open_archive): Add default case to shut up gcc. - * src/common.h (set_file_atime): Add prototype. - * src/create.c (to_chars_subst): Remove unused variable - Make sure useful result code is returned. - * src/incremen.c (read_directory_file): Fix format string - Thanks Eric Blake for reporting. - -2005-12-08 Sergey Poznyakoff - - * doc/tar.texi (Current status): Renamed to 'Changes' and moved to - appendices. - (Large or Negative Values): Rewritten - * src/common.h (gid_to_chars, major_to_chars, minor_to_chars) - (mode_to_chars, off_to_chars, size_to_chars, time_to_chars) - (uid_to_chars, uintmax_to_chars): Return bool - * src/create.c (gid_to_chars, major_to_chars, minor_to_chars) - (mode_to_chars, off_to_chars, size_to_chars, time_to_chars) - (uid_to_chars, uintmax_to_chars): Return bool - (to_chars): Return bool - (start_header): Check return values of convertion routines. Fail - if unable to store data in the header. - -2005-12-07 Sergey Poznyakoff - - * doc/tar.texi: Following the discussion with Karl Berry, - discontinue using @value{} substitutions for Texinfo commands. - Properly index all long options. Print a - separate long option index. - * doc/value.texi: Remove @set's - - * doc/tar.texi: Update --info-script documentation - Resolve some more FIXMEs. - * scripts/dump-remind.in: Use TAR_VOLUME instead of reading volno - file. - * src/buffer.c (new_volume): Update invocation - (change_tape_menu): New function. Disable '!' command if given - --restrict option. - * src/common.h (sys_exec_info_script): Update declaration - (restrict_option): New global - * src/system.c (sys_exec_info_script): The script can supply new - archive name to use by writing it to file descriptor 3. - * src/tar.c (options): Add --restrict option. Use macros for - option grouping. - (license): Print full list of copyright years - * NEWS: Update - -2005-12-06 Eric Blake (trivial changes) - - * configure.ac (DENSITY_LETTER): Fix m4 overquoting. - * .cvsignore: Ignore .bootstrap. - -2005-12-06 Sergey Poznyakoff - - * doc/tar.texi: Document --to-command and --info-script - options. Add missing xrefs. - * src/buffer.c (new_volume): Use sys_exec_info_script() instead of - system(). - * src/common.h (archive_format_string,subcommand_string) - (sys_exec_info_script): New prototypes. - * src/system.c (sys_exec_info_script): New function. - * src/tar.c (archive_format_string): Remove static qualifier. - (subcommand_string): New function. - -2005-12-01 Sergey Poznyakoff - - * src/extract.c: Fix restoring of directory timestamps from - incremental archives. - (directories_first): New variable. - (prepare_to_extract): Set directories_first - (extract_archive): Call apply_nonancestor_delayed_set_stat() only - if not extracting from an incremental archive - (extract_dir): Obtain root_device here, to make sure it works - correctly with -C. - - * src/incremen.c (purge_directory): Skip the member and return if - the archive is not in incremental format. - * tests/incr02.at: New testcase - * tests/Makefile.am: Add incr02.at - * tests/testsuite.at: Likewise - - * THANKS: Add Guerkan Karaman. - * NEWS: Update - -2005-11-30 Paul Eggert - - * doc/tar.texi (Option Summary): Rewrite the - --atime-preserve=system description in response to Ian Turner's - proposed patch. - -2005-11-30 Ian Turner - - * doc/tar.texi (Extracting Specific Files): Remove obsolescent - FIXME. - -2005-11-29 Paul Eggert - - * NEWS: New option --atime-preserve=system, which uses O_NOATIME. - * THANKS: Add Ian Turner. - - * configure.ac: Prefer AC_CHECK_HEADERS_ONCE to AC_CHECK_HEADERS. - Check for stropts.h and sys/filio.h too, for _FIOSATIME. - * doc/tar.texi: Change "modification time" to "data modification - time", "change time" to "status change time", and "filesystem" to - "file system", so that we use terminology consistent with POSIX. - Use American spacing rather than French for sentence ends. - "non-dependable" -> "undependable". - (Option Summary, Attributes): Explain better the pitfalls of the - --atime-preserve option, and suggest read-only mounts,loopback - mounts, and noatime mounts for older systems. - * doc/value.texi (op-atime-preserve-system): Renamed from - op-atime-preserver-system to fix a misspelling. - * src/common.h (enum atime_preserve): Use lower case for enum values. - * src/compare.c: Don't include utimens.h; no longer needed. - (diff_file): Use set_file_atime rather than utimens; avoid closing - diff_handle until after this, so that we can set the file time stamp - via the file descriptor rather than via its name. - * src/create.c: Don't include utimens.h; no longer needed. - (dump_regular_finish): Remove. All callers now do its work inline. - (dump_dir): New arg FD. All callers changed. - Use fdsavedir rather than savedir. - (unknown_file_error): Arg is a const pointer now. - (dump_file0): 2nd arg is a const pointer now. - Treat directories more like files, with respect to --atime-preserve. - For example, also warn if a directory changes while we are dumping it. - Prefer file descriptors to file names when retrieving/setting file - attributes; this saves path-resolution time and allows us to avoid - changing mtime/ctime on Solaris when restoring atime as root. - Use O_DIRECTORY when opening directories, to avoid some race conditions. - Do not reset atime if mtime has changed. Report an error if - we cannot reset atime. - - * lib/.cvsignore: Add malloc.h, regcomp.c, regex.c, regex.h, - regex_internal.c, regex_internal.h, regexc.c; used by rpmatch. - -2005-11-29 Ian Turner - - First cut at adding support for --atime-preserve=system. - * doc/tar.texi (Option Summary): First cut at documenting it. - All other uses of --atime-preserve changed to --atime-preserve=replace. - * doc/value.texi (op-atime-preserve-replace, op-atime-preserver-system): - New. - (op-atime-preserve): Mention METHOD. - * src/common.h (atime_preserve): New enum. - (atime_preserve_option): Now of the enum type rather than bool. - All uses changed. - * src/compare.c (diff_file): Read with O_NOATIME if asked for. - * src/create.c (dump_file0): Read regular and CTG files with O_NOATIME - if asked for. - * src/tar.c (usage): Mention new usage. - (parse_opt): Parse new usage. - -2005-11-29 Paul Eggert - - * THANKS: Convert back to UTF-8, sort (using LC_ALL=C on Debian - stable), and consistently use tabs rather than spaces. - -2005-11-27 Sergey Poznyakoff - - * src/xheader.c: Remove parts of code prematurely introduced - yesterday. Thanks Eric Blake. - -2005-11-26 Sergey Poznyakoff - - * src/xheader.c (xheader_format_name): Fix memory leak. - -2005-11-11 Sergey Poznyakoff - - * gnulib.modules: Add rpmatch - * lib/stdopen.h, lib/stdopen.c: New file. Imported from coreutils. - * lib/Makefile.tmpl: Add stdopen.h, stdopen.c - * po/POTFILES.in: Add rpmatch.c - * src/tar.c (confirm): Rewritten using rpmatch. - (decode_options): Minor optimizations - (main): Call stdopen() to ensure the first three descriptors are - open. - - * tests/multiv01.at, tests/multiv02.at, tests/multiv03.at, - tests/multiv04.at, tests/sparsemv.at, tests/sparsemvp.at, - tests/star/multi-fail.at: Close stdin so that if something fails - causing tar to ask for the next volume, it won't hang the - testsuite. - - * src/buffer.c (flush_write,flush_read): Change data type. - (flush_archive): Compute actual buffer fill level before calling - low level function. - (close_archive): Call flush_archive again if the first call - resulted in partially filled buffer. - (try_new_volume): Rewritten handling of initial headers. - (add_chunk_header): New function. Write an additional header - before the continuation chunk. The purpose of the header is to - allow third-party tars to extract the member. - (simple_flush_write): Take an argument. - (_gnu_flush_write): Correctly handle partially filled buffers. - * src/common.h (flush_read,flush_write): Functions, again. - (write_extended): Changed declaration - (xheader_format_name): New declaration - * src/create.c (write_extended): Change type and meaning of - the first argument. All callers updated - * src/xheader.c (xheader_format_name): Remove static - qualifier. Change last argument. - Correct buffer size calculation (allocated too much space). - (xheader_write): Increase global_header_count here ... - (xheader_write_global): ... instead of here - - * tests/testsuite.at (AT_TAR_CHECK): Define TEST_TAR_FORMAT - * tests/multiv01.at: Update - * tests/multiv02.at: Update - * tests/multiv03.at: Update - * tests/sparsemvp.at: Update - * tests/star/multi-fail.at: Update - - * scripts/tarcat: Handle archives in pax format. Improve handling - of traditional archives. - * doc/tar.texi (Tarcat): New node - -2005-11-10 Sergey Poznyakoff - - Fix splitting of sparse files between the volumes. - - * src/buffer.c (try_new_volume): Bugfix. Always check - continued_file_name. If it is absent, the volume is out - of sync. - (add_multi_volume_header): Create GNU.volume.filename keyword in - the extended header. - * src/sparse.c (sparse_dump_region): Call mv_size_left. - (sparse_dump_file): Enclose the loop in mv_begin/mv_end. - * src/system.c: Do not pad compressed output if it goes to - stdout. - * src/xheader.c (xhdr_tab): New keyword GNU.volume.filename. - - * tests/sparsemv.at: New testcase - * tests/sparsemvp.at: New testcase - * tests/Makefile.am: Add sparsemv.at and sparsemvp.at. - * tests/testsuite.at: Likewise. - -2005-11-09 Sergey Poznyakoff - - * src/buffer.c: Rewritten in a more modular fashion to provide - GNU extensions (multi-volume archives and archive labels) in - pax format. - NOTICE, that some of the aspects (e.g. splitting the archive - on the extended header boundary) are still not solved, others - (splitting a sparse file between the volume) require additional - testing. Wait for the next commit. - - (volume_label,continued_file_name,continued_file_size) - (continued_file_offset): New globals. - (save_name,save_totsize,save_sizeleft): Make static - (mv_begin,mv_end,mv_total_size,mv_size_left): New functions - (open_archive,flush_write,flush_read): Rewritten - - * src/common.h (save_name,save_sizeleft,save_totsize): Remove - globals. - (volume_label,continued_file_name,continued_file_size): New - variables. - (flush_read,flush_write): Pointers to functions - (mv_begin,mv_end,mv_total_size,mv_size_left): New functions - (write_extended): New function. - - * src/compare.c, src/create.c, src/extract.c, src/incremen.c, - src/list.c: Use mv_.* functions uniformly instead of fiddling - with the global variables. - * src/sparse.c: Use mv_.* functions where necessary. - * src/tar.c (decode_options): Allow to use --multi-volume and - --label with pax archives. - * src/xheader.c (xhdr_tab): Support for new GNU keywords. - - * tests/delete01.at, tests/delete02.at, tests/delete03.at, - tests/delete04.at, tests/delete05.at, tests/extrac01.at, - tests/extrac02.at, tests/extrac03.at, tests/extrac04.at, - tests/extrac05.at, tests/incr01.at, tests/incremental.at, - tests/listed01.at, tests/listed02.at, tests/long01.at, - tests/longv7.at, tests/multiv01.at, tests/multiv02.at, - tests/multiv03.at, tests/multiv04.at, tests/options.at, - tests/options02.at, tests/same-order01.at, tests/same-order02.at, - tests/sparse01.at, tests/sparse02.at, tests/sparse03.at, - tests/star/multi-fail.at (AT_KEYWORDS): Improve to allow execution - of related tests in groups. - - * doc/tar.texi: Update - -2005-11-07 Paul Eggert - - * src/xheader.c (struct xhdr_tab.coder): Last arg is void const *, - not void *, to avoid create.c warning from GCC "passing argument 3 - of 'xheader_store' discards qualifiers from pointer target type". - (dummy_coder, atime_coder, gid_coder, gname_coder, linkpath_coder): - (ctime_coder, mtime_coder, path_coder, size_coder, uid_coder): - (uname_coder, sparse_size_coder, sparse_numblocks_coder): - (sparse_offset_coder, sparse_numbytes_coder, dumpdir_coder): - (xheader_store): Likewise. - * src/common.h (xheader_store): Likewise. - -2005-11-07 Sergey Poznyakoff - and Paul Eggert - - * src/tar.c (NS_PRECISION_FORMAT_MASK): New macro. - (tar_timespec_cmp): New function. Wrapper over - timespec_cmp using the timespec precision provided by the - current archive format. - * src/common.h (tar_timespec_cmp): New declaration. - * src/compare.c (diff_file): Use tar_timespec_cmp. - * src/extract.c (file_newer_p): Likewise. - * src/update.c (update_archive): Likewise. - * tests/truncate.at: Reverted changes - * tests/update.at: Reverted changes - -2005-11-07 Sergey Poznyakoff - - Support for incremental formats in pax archives. - Fixed POSIX compatibility of `sparse' extended header keywords. - - * src/common.h (dumpdir_size,get_gnu_dumpdir) - (xheader_string_begin,xheader_string_add) - (xheader_string_end): New functions. - * src/create.c (dump_dir0): Handle incremental backups in pax - archives. - * src/incremen.c (dumpdir_size, get_gnu_dumpdir): New functions. - (purge_directory): Use stat_info.dumpdir instead of getting its - value explicitely. - * src/list.c (list_archive): Handle incremental backups in pax - format. - (decode_header): Initialize stat_info.dumpdir - * src/sparse.c (sparse_diff_file): Bugfix: set seekable. - (pax_dump_header): Store sparse map in GNU.sparse.map. If this - variable has been explicitely deleted, use GNU.sparse.offset/ - GNU.sparse.numbytes variables. - * src/tar.c (decode_options): Incremental options are allowed with - --format=pax - (tar_stat_destroy): Free dumpdir - * src/tar.h (struct tar_stat_info.dumpdir): New member. - * src/xheader.c (xheader_keyword_deleted_p): Remove static - qualifier. - (struct xhdr_tab.decoder): Change prototype. POSIX allows string - values to contain embedded nulls, so take an extra argument - specifying the length of the string. - (decx,decg,dummy_decoder,atime_decoder,gid_decoder) - (gname_decoder,linkpath_decoder,ctime_decoder,mtime_decoder) - (path_decoder,size_decoder,uid_decoder,uname_decoder) - (sparse_size_decoder,sparse_numblocks_decoder) - (sparse_offset_decoder,sparse_numbytes_decoder): Likewise. - (decode_record): Pass value length to the handler - (run_override_list): Pass value length to the decoder - (xheader_print_n): New function - (xheader_print): Rewritten using xheader_print_n - (xheader_finish): Do not rely om strlen to compute the length of - the collected string: it can contain embedded nulls - (xheader_string_begin,xheader_string_add,xheader_string_end): New - functions. - (sparse_map_decoder,dumpdir_coder,dumpdir_decoder): New - functions. Handle GNU.sparse.map and GNU.dumpdir variables. - (xhdr_tab): Add new variables. - - * tests/incr01.at: Test gnu, oldgnu, and posix formats - * tests/incremental.at: Likewise - -2005-11-06 Paul Eggert - - * NEWS: Minor language and white space fixes. - - * tests/truncate.at: Create files whose time stamps must fall on - 1-second boundaries. This prevents tests from failing on hosts - like Solaris 8 that have nanosecond-resolution file time stamps. - * tests/update.at: Likewise. - - * src/xheader.c (strtoimax, strtoumax): Remove decls; now done - in system.h. - -2005-11-06 Sergey Poznyakoff - - * doc/tar.texi: Properly document incremental dumps - * doc/value.texi: Likewise. - * doc/snapshot.texi: Likewise. - -2005-11-05 Sergey Poznyakoff - - Improve listed incremental format: - - * src/common.h (update_parent_directory): New prototype. - * src/create.c (dump_file): Call update_parent_directory. - * src/incremen.c (struct directory.mtime): New member. - (note_directory): Take additional arguments. All callers updated. - (scan_directory): Updated to use more metadata. In particular, - this allows to correctly detect renamed files. - (read_directory_file,write_directory_file) - (write_directory_file_entry): Support new directory file format. - * tests/listed01.at: Sleep 1 sec before creating second file. - * tests/listed02.at: Never skip the test. It should work on any - filesystem. - - * doc/snapshot.texi: New file - * doc/tar.texi: Update. - * doc/Makefile.am: Update. - -2005-11-04 Paul Eggert - - * src/extract.c (set_stat): Rewrite to avoid bug in Forte - Developer 7 C 5.4 Patch 111708-09 (2004-02-19). - -2005-11-04 Sergey Poznyakoff - - * bootstrap: Fix quoting in help output. - (update_po): Use backward-compatible wget option --cache instead - of deprecated -C to accomodate for wget 1.10. - Changes proposed by Eric Blake - * THANKS: Add Eric Blake - -2005-11-02 Paul Eggert - - * doc/tar.texi: Consistently put two spaces after sentences, - and put commas after "i.e." and "e.g.". This is the usual GNU - style in manuals. - - * lib/.cvsignore: Add creat-safer.c, fcntl--.h, fcntl-safer.h, - open-safer.c, openat-die.c, verify.h, to accommodate recent gnulib - changes. - -2005-10-27 Sergey Poznyakoff - - * src/compare.c (diff_dumpdir): Pass a valid device number to - get_directory_contents. - - * THANKS: Add John Thomas McDole - - * bootstrap: If file `.bootstrap' exists in the cwd and is - readable, prepend its contents to the command line - -2005-10-21 Sergey Poznyakoff - - * tests/link01.at: Skip test if ln fails (suppose the OS does - not support hard links). - -2005-10-04 Sergey Poznyakoff - - * src/tar.c (decode_options): Report error if -A or -r is used - together with compression option. - -2005-09-29 Sergey Poznyakoff - - * doc/tar.texi: Use @option and @kbd consistently. - Document new options. - -2005-09-28 Sergey Poznyakoff - - * NEWS: Updated - * src/common.h (show_stored_names_option): New variable - * src/list.c (print_header): If show_stored_names_option is given, - list member names as stored in the archive. Patch proposed by Erik - Cumps - * src/tar.c: Implement --show-stored-names option - - * src/common.h (test_label_option): New variable; - * src/list.c (print_header): Special handling if test_label_option - is set. - * src/names.c (all_names_found): If test_label_option is set - return true. - * src/tar.c: New option --test-label tests the archive volume - label. The option proposed by Wouter Verhelst - -2005-09-21 Paul Eggert - - * tests/Makefile.am (clean-local): Don't attempt to run - $(TESTSUITE) if it doesn't exist. Problem reported by - Eric Blake. - -2005-09-16 Paul Eggert - - Don't filter time stamps through the resolution supported - by struct stat; keep them to full nanosecond resolution. - This affects behavior only on older hosts or file systems - that have lower-resolution time stamps. - * src/common.h (OLDER_STAT_TIME): Parenthesize arg. - (OLDER_TAR_STAT_TIME): New macro. - (code_timespec): New function. - (BILLION, LOG10_BILLION, TIMESPEC_STRSIZE_BOUND): New constants. - * src/compare.c (diff_file): Use full time stamp resolution. - * src/create.c (start_header, dump_file0): Likewise. - (start_header, dump_file0): Adjust to new structure layout. - (dump_regular_finish): Simplify by using timespec_cmp. - * src/extract.c (struct delayed_set_stat): Don't store stat info - that we don't need, to save space. All uses changed. - (struct delayed_set_stat, struct delayed_link, file_newer_p): - (create_placeholder_file, extract_link, apply_delayed_links): - Use full time stamp resolution. - (check_time): Use code_timespec rather than rolling our own code. - (set_stat, delay_set_stat): Arg now points to tar_stat_info to - avoid losing time information. All callers changed. - * src/list.c (read_and, decode_header, print_heaeder): - Use full time stamp resolution. - * src/misc.c (code_timespec): New function. - * src/tar.h (struct tar_stat_info): Record atime, mtime, ctime - separately, for benefit of hosts with lower resolution. - * src/update.c (update_archive): Use full time stamp resolution. - * src/xheader.c (code_time): Use new code_timespec function - to simplify code. - (atime_coder, atime_decoder, ctime_coder, ctime_decoder): - (mtime_coder, mtime_decoder): Use full time stamp resolution. - - Report time stamps to full resolution in environment. - Report memory allocation failures rather than ignoring them. - * src/system.c (time_to_env): New function. - (oct_to_env, str_to_env, chr_to_env): Report memory allocation failures. - (stat_to_env): Report full resolution in time stamps. - -2005-09-16 Paul Eggert - - Merge changes from gnulib for file system sub-second time stamps. - * configure.ac: Remove checks for struct stat.st_spare1, struct - stat.st_atim.tv_nsec, struct stat.st_atimespec.tv_nsec, struct - stat.st_atimensec, as gnulib now does this for us. - Similarly for LIB_CLOCK_GETTIME. - * gnulib.modules: Add stat-time. - * lib/.cvsignore: Add stat-time.h. - * src/common.h: Include stat-time.h. - (timespec_lt): Remove. All callers changed to use timespec_cmp. - (get_stat_atime, get_stat_ctime, get_stat_mtime): - (set_stat_atime, set_stat_ctime, set_stat_mtime): - Remove; now defined by stat-time.h. - -2005-09-14 Sergey Poznyakoff - - * src/incremen.c (list_dumpdir): New function. Used to dump - contents of GNUTYPE_DUMPDIR blocks. - * src/common.h (list_dumpdir): Likewise. - * src/list.c (list_archive): Use list_dumpdir() to display - GNUTYPE_DUMPDIR blocks. Do that only if two or more -v options are - given. - -2005-09-12 Paul Eggert - - * lib/.cvsignore: Adjust to current gnulib and modules used. - Add getdelim.c, getdelim.h, mbchar.c, mbchar.h, mbuiter.h, memchr.c, - pipe-safer.c, size_max.h, strdup.c, strdup.h, strnlen.h, strnlen1.c, - strnlen1.h, unistd--.h. - Remove getndelim2.c, getndelim2.h, pathmax.h, sysexits.h, xstrdup.c. - - Treat fishy-looking hard links like fishy-looking symlinks. - * src/extract.c (struct delayed_set_stat): Rename after_symlinks - member to after_links. All uses changed. - (struct delayed_link): Renamed from struct delayed_symlink. - All uses changed. New member is_symlink. - (delayed_link_head): Renamed from delayed_symlink_head. All uses - changed. - (create_placeholder_file): New function, taken from extract_symlink. - (extract_link): Create placeholders for fishy-looking hard links. - (extract_symlink): Move code into create_placeholder_file. - (apply_delayed_links): Renamed from apply_delayed_symlinks. - All uses changed. Create both hard links and symlinks. - -2005-09-03 Paul Eggert - - * README-alpha: Modernize description of software required for - developers. - -2005-09-03 Sergey Poznyakoff - - * gnulib.modules: Add strdup - * src/incremen.c (purge_directory): Do not dereference symbolic - links. Bug reported by Ralph Corderoy and - David Brown - * tests/incr01.at: New test. - * tests/Makefile.am: Add incr01.at - * tests/testsuite.at: Likewise - * THANKS: Updated - -2005-08-17 Sergey Poznyakoff - - * src/incremen.c (read_directory_file): Use strtoumax to read - snapshot file contents. - (write_directory_file_entry): Use umaxtostr(). - -2005-07-31 Sergey Poznyakoff - - * src/create.c (file_dumpable_p,dump_file0): Fix handling of - sparse files to /dev/null with --totals option. - * tests/update.at: Remove dependency on file order. - -2005-07-08 Sergey Poznyakoff - - * doc/tar.texi: Fix typo. - -2005-07-07 Sergey Poznyakoff - - * tests/pipe.at: Pipe the output from `tar xfv' through sort. - -2005-06-25 Sergey Poznyakoff - - * src/sparse.c (tar_sparse_init): Fill structure with zeros. Call - sparse_select_optab(). All callers updated. - (sparse_member_p, sparse_fixup_header): Use tar_sparse_init(). - -2005-06-23 Sergey Poznyakoff - - * src/sparse.c (pax_sparse_member_p): Checking member size - vs. file size is not reliable enough. Use sparse_map_avail. - - * tests/star/gtarfail.at: Adapt to the new output format - * tests/star/gtarfail2.at: Likewise - * tests/star/multi-fail.at: Likewise - * tests/star/pax-big-10g.at: Likewise - * tests/star/ustar-big-2g.at: Likewise - * tests/star/ustar-big-8g.at: Likewise - - * tests/sparse03.at: New test. - * tests/Makefile.am: Add sparse03.at - * tests/testsuite.at: Likewise - - * src/xheader.c (size_decoder): Do not set archive_file_size. - - Fix bugs introduced yesterday: - - * src/sparse.c (tar_sparse_init): Initialize - dimped_size to 0. - (sparse_scan_file): Initialize archive_file_size to 0. The - variable keeps size of the file *as stored in the archive*, not - the size reported by stat. - -2005-06-22 Paul Eggert - - A sweep of the sparse code prompted by a bug report by Jim Meyering. - * src/sparse.c: Include . - (struct tar_sparse_file): offset and dumped_size are off_t, not - size_t. optab is now const *. - (dump_zeros): Return bool success flag, not off_t. - All callers changed. - Use a constant-zero buffer rather than clearing a buffer each time. - Don't mess up if write fails. - (dump_zeros, check_sparse_region): - Don't assume off_t is no wider than size_t. - (tar_sparse_init): Don't bother clearing a field that is already clear. - (zero_block_p): First arg is const *, not *. - (clear_block, SPARSES_INIT_COUNT): Remove. - (sparse_add_map): First arg is now struct start_stat_info *, not - struct tar_sparse_file *. All callers changed. - Use x2nrealloc to check for size_t overflow. - (parse_scan_file): Cache commonly-used parts of file. - Use an auto buffer, not a static one. - Don't bother clearing the buffer; not needed. - Don't bother clearing items that are already clear. - (oldgnu_optab, star_optab, pax_optab): Now const. - (sparse_dump_region): Don't bother clearing the buffer before - reading into it; just clear the parts that aren't read into. - (sparse_dump_file): Clear the whole local variable 'file'. - (diff_buffer): Remove; now a local var. - (check_sparse_region): Don't bother clearing buffer before - reading into it. Don't assume off_t is promoted to long. - (oldgnu_get_sparse_info, star_get_sparse_info): - Use an auto status, not static. - * src/tar.h (struct tar_stat_info): had_trailing_slash is - now bool, not int. - * src/xheader.c (sparse_offset_coder, sparse_numbytes_coder): - Rewrite to avoid cast. - (sparse_offset_decoder, sparse_numbytes_decoder): - Diagnose excess entries rather than crashing. - -2005-06-22 Jim Meyering - - * src/common.h (timespec_lt): Add a return type: bool. - -2005-06-21 Paul Eggert - - Further improvements inspired by Jim Meyering's fixes. - - * NEWS: Better support for full-resolution time stamps. - The -v option now prints time stamps only to 1-minute resolution. - * gnulib.modules: Add utimens. - * lib/.cvsignore: Add imaxtostr.c, inttostr.c, inttostr.h, - offtostr.c, umaxtostr.c, utimens.c, utimens.h. Remove paxconvert.c. - * lib/Makefile.tmpl (libtar_a_SOURCES): Remove paxconvert.c. - * lib/paxconvert.c: Remove; superseded by umaxtostr.c. - * po/POTFILES.in: Remove lib/paxconvert.c. Add lib/xalloc-die.c, - lib/obstack.c. - * src/buffer.c (set_start_time, compute_duration, start_time): - Use gettime rather than rolling our own code. - * src/common.h (OLDGNU_NAME_FIELD_SIZE, MAXOCTAL11, MAXOCTAL7): Remove. - (newer_ctime_option): Remove. - (timespec_lt): New function. - (OLDER_STAT_TIME): Use it. - (string_to_chars): First arg is char const *, not char *. - (tartime): Time arg is now struct timespec. New bool arg. - All callers changed. - (code_ns_fraction): New decl. - (sys_stat_nanoseconds): Remove decl. - (get_stat_atime, get_stat_ctime, get_stat_mtime): New functions. - (set_stat_atime, set_stat_ctime, set_stat_mtime): New functions. - * src/compare.c: Include utimens.h rather than rolling our own. - (diff_dir, diff_file, diff_link, diff_symlink, diff_special): - Prototype. - (diff_dumpdir, diff_multivol): Prototype. - (diff_file): Support higher-resolution time stamps. - * src/create.c: Include utimens.h rather than rolling our own. - (MAX_OCTAL_VAL): New macro. - (tar_copy_str, string_to_chars): Don't bother to zero-fill; - the destination is already zeroed. - (string_to_chars): First arg is char const *. - (start_private_header): Use MINOR_TO_CHARS, not MAJOR_TO_CHARS, - for minor device number. - (write_header_name, dump_hard_link, dump_file0): - Simplify test for old GNU format. - (start_header): Put in placeholders for uid, etc., even when - using extended headers, for benefit of older "tar" implementations. - Don't assume uintmax_t is wider than 32 bits. - Output extended header for mtime if needed. - (dump_regular_finish, dump_file0): - Support extended time stamp resolution. - * src/extract.c: Include utimens.h rather than rolling our own. - (check_time): Support extended time stamp resolution. - * src/list.c: Include . - (tartime): Use umaxtostr rather than stringify_uintmax_t_backwards. - * src/xheader.c: Include . - Do not include . - (strtoimax) [!HAVE_DECL_STRTOIMAX && !defined strtoimax]: New decl. - (strtoumax) [!HAVE_DECL_STRTOUMAX && !defined strtoumax]: New decl. - (BILLION, LOG10_BILLION): New constants. - (to_decimal): Remove; superseded by inttostr. All callers changed - to use umaxtostr. - (xheader_format_name): Don't assume pids and uintmax_t values - fit in 63 bytes (!) when printed. - (decode_record): Don't bother to check for ERANGE; an out of range - value must be treater than len_max anyway. - If the length is out of range, output it in the diagnostic. - (format_uintmax): Remove; all callers changed to use umaxtostr. - (xheader_print): Don't assume sizes can be printed in 99 bytes (!). - (out_of_range_header): New function. - (decode_time): Use it. - (code_time): Accept struct timespec, not time_t and unsigned long. - All callers changed. Size sbuf properly, and remove unnecessary check. - Don't assume time stamps can fit in 199 bytes. - Handle negative time stamps. Handle fractional time stamps - more consistently. Don't output unnecessary trailing zeros. - (decode_time): Yield struct timespec, not time_t and unsigned long. - All callers changed. - Handle negative time stamps. Truncate towards minus infinity - consistently. Improve overflow checks, and output a better - diagnostic on overflow. - (code_num): Don't assume uintmax_t can be printed in 99 bytes (!). - (decode_num): New function, for better diagnostics. - (atime_coder, atime_decoder, gid_decoder, ctime_coder): - (ctime_decoder, mtime_coder, mtime_decoder, size_decoder): - (uid_decoder, sparse_size_decoder, sparse_numblocks_decoder): - (sparse_offset_decoder, sparse_numbytes_decoder): - Use decode_num, etc., instead of xstrtoumax, etc. - -2005-06-21 Jim Meyering - - Carefully crafted invalid headers can cause buffer overrun. - Invalid header fields go undiagnosed. - Some valid time strings are ignored. - - * src/xheader.c (sparse_numblocks_decoder): Remove unchecked use - of `calloc'. Use xcalloc instead. - (decode_time, gid_decoder, size_decoder, uid_decoder): - (sparse_size_decoder, sparse_offset_decoder, sparse_numblocks_decoder): - Ensure that the result of calling xstrtoumax is no larger than - the maximum value for the target type. Upon any failure, exit with - a diagnostic. - (sparse_numblocks_decoder): Avoid buffer overrun/heap corruption: - use x2nrealloc, rather than `n *= 2' and xrealloc(p, n,.... - (decode_time): Rewrite to accept time strings like - 1119018481.000000000. Before, such strings were always ignored. - -2005-06-13 Sergey Poznyakoff - - * src/create.c (dump_file0): Check for is_avoided_name() - first. Fixes bug reported by Martin Lohmeier - - * tests/update.at: New file - * tests/Makefile.am (TESTSUITE_AT): Add update.at - * tests/testsuite.at: Likewise - -2005-06-13 Sergey Poznyakoff - - * configure.ac (AC_STRUCT_ST_BLKSIZE) - (AC_STRUCT_ST_BLOCKS): Removed. Handled by system.m4. - -2005-06-02 Paul Eggert - - * src/names.c (excluded_name): excluded_filename -> - excluded_file_name, because the name was changed in gnulib. - -2005-05-30 Sergey Poznyakoff - - * src/tar.c (read_name_from_file,update_argv): Automatically - detect nul-terminated list files. - * NEWS: Updated - -2005-05-27 Sergey Poznyakoff - - * scripts/backup.sh.in: Bugfixes. - -2005-05-26 Sergey Poznyakoff - - * scripts/backup.in: Minor fixes - * scripts/backup.sh.in (mt_begin,mt_rewind) - (mt_offline,mt_status): Use $MT to invoke mt - (init_common): Set --rsh-command option for mt if TAPE_FILE is a - remote archive. - * doc/tar.texi: Document new backup scripts behavior - -2005-05-22 Sergey Poznyakoff - - * lib/.cvsignore: Updated - * lib/Makefile.tmpl: Add new paxutils files - * po/POTFILES.in: Likewise - * src/buffer.c: Update invocations of safer_name_suffix() - * src/create.c: Likewise - * src/extract.c: Likewise - * src/xheader.c: Likewise - * src/common.h: Include paxlib.h instead of paxerror.h - (safer_name_suffix,removed_prefixes_p): Removed. The functions are - imported from paxutils - * src/names.c (hash_string_hasher,hash_string_compare) - (hash_string_insert,hash_string_lookup,removed_prefixes_p) - (safer_name_suffix): Moved to paxutils - -2005-05-19 Sergey Poznyakoff - - * bootstrap (copy_files): Accept optional third argument: a prefix - to be appended to destination file names. - Import paxutils/paxlib files. - * configure.ac: Remove checking for LIB_SETSOCKOPT, it is handled - by paxutils. - * lib/Makefile.tmpl (libtar_a_SOURCES): Add paxerror.c paxexit.c - paxconvert.c - * po/POTFILES.in: Likewise. - * src/common.h: Remove defines and declarations imported from - paxutils - * src/misc.c: Likewise - * src/list.c (stringify_uintmax_t_backwards): Moved to paxutils - -2005-05-17 Paul Eggert - - * src/misc.c (remove_any_file): Fix typo in previous change. - -2005-05-14 Paul Eggert - - Port to Solaris 10's treatment of unlinking directories. - * gnulib-modules: Add unlinkdir. - * lib/.cvsignore: Add unlinkdir.h, unlinkdir.c. - * src/common.h (we_are_root): Remove extern decl; it's now static. - * src/extract.c (we_are_root): Now static. - * src/misc.c: Include . - (remove_any_file): Use cannot_unlink_dir () rather than we_are_root. - - * ChangeLog, ChangeLog.1, Makefile.am, NEWS, PORTS, README, - README-alpha, TODO, bootstrap, configure.ac, doc/Makefile.am, - doc/convtexi.pl, doc/fdl.texi, doc/gendocs_template, - lib/Makefile.tmpl, lib/prepargs.c, lib/waitpid.c, po/POTFILES.in, - scripts/Makefile.am, scripts/backup-specs, scripts/backup.in, - scripts/backup.sh.in, scripts/restore.in, src/Makefile.am, - src/arith.h, src/buffer.c, src/common.h, src/compare.c, - src/create.c, src/delete.c, src/extract.c, src/incremen.c, - src/list.c, src/mangle.c, src/misc.c, src/names.c, src/sparse.c, - src/system.c, src/tar.c, src/tar.h, src/update.c, src/utf8.c, - src/xheader.c, tests/Makefile.am, tests/append.at, - tests/append01.at, tests/comprec.at, tests/delete01.at, - tests/delete02.at, tests/delete03.at, tests/delete04.at, - tests/delete05.at, tests/extrac01.at, tests/extrac02.at, - tests/extrac03.at, tests/extrac04.at, tests/extrac05.at, - tests/gzip.at, tests/ignfail.at, tests/incremental.at, - tests/link01.at, tests/listed01.at, tests/listed02.at, - tests/long01.at, tests/longv7.at, tests/multiv01.at, - tests/multiv02.at, tests/multiv03.at, tests/multiv04.at, - tests/old.at, tests/options.at, tests/options02.at, tests/pipe.at, - tests/recurse.at, tests/same-order01.at, tests/same-order02.at, - tests/shortrec.at, tests/sparse01.at, tests/sparse02.at, - tests/testsuite.at, tests/truncate.at, tests/version.at, - tests/volume.at, tests/star/gtarfail.at, tests/star/gtarfail2.at, - tests/star/multi-fail.at, tests/star/pax-big-10g.at, - tests/star/quicktest.sh, tests/star/ustar-big-2g.at, - tests/star/ustar-big-8g.at: - Update FSF postal mail address. - -2005-05-12 Sergey Poznyakoff - - * NEWS: Updated - * THANKS: Updated - * bootstrap: Install files from paxutils/doc - * doc/Makefile.am (tar_TEXINFOS): Add genfile.texi - * doc/tar.texi (Genfile): New appendix - * src/compare.c (diff_file): diff_handle was not initialized - * src/create.c (dump_regular_file): Correctly pad archive members - that shrunk during archiving. Repored by Frank Heckenbach. - * src/extract.c (file_newer_p): Return false if file does not - exist - (prepare_to_extract): Correct warning wording. - * tests/truncate.at: New test case - * tests/Makefile.am: Add truncate.at - * tests/testsuite.at: Likewise. - - * doc/.cvsignore: Updated - * lib/.cvsignore: Updated - * tests/.cvsignore: Updated - -2005-05-02 Paul Eggert - - * tests/multivol04.at: Tell awk to read from /dev/null. - - Adjust to recent gnulib changes. - * lib/.cvsignore: Add dup-safer.c, fd-safer.c, unistd-safer.h. - * src/common.h (initial_umask): New var. - * src/create.c (start_ueader): Use it, and adjust to new modechange - API. - (hash_link): unsigned -> size_t parameters and result. - * src/incremen.c (hash_directory): Likewise. - * src/names.c (hash_string_hasher): Likewise. - * src/tar.c (parse_opt): Set it, and adjust to new modechange API. - -2005-04-19 Sergey Poznyakoff - - * tests/Makefile.am: Add shortrec.at. - -2005-04-18 Paul Eggert - - * src/buffer.c (reading_from_pipe): Remove. All uses removed. - (short_read): Don't warn about short reads; they're normal. - * tests/shortrec.at: New file. - * tests/testsuite.at: Include it. - - * bootstrap (gnulib_modules): Don't create a file modlist.tmp, as - it is sometimes left behind as a garbage file (maybe due to the - multiple traps?). - -2005-04-14 Sergey Poznyakoff - - * src/list.c: Handle Solaris 'X' type flag - * src/tar.h (SOLARIS_XHDTYPE): New define - -2005-04-06 Sergey Poznyakoff - - * src/tar.c: Minor fixes to text messages. Proposed by Benno - Schulenberg. - * src/extract.c: Likewise - (extract_file): Assign orig_file_name - to save_name uniformly over the program. This fixes matching - directory names at the start of an archive volume. - * src/buffer.c (flush_write): Warn when the name of the archive - straddling volume boundary is longer than 100 characters. Earlier - behavior was to issue a fatal error. - (struct zip_magic): Reverted part of changes from 2005-04-04. - They make the maintenance too costly. Removing `unsigned' - qualifier from `magic' member should be enough. - * src/compare.c (diff_init): Read directory file if in listed - incremental. This prevents spurious 'Contents differ' diagnostics. - (diff_archive): Minor fixes to text messages - (diff_file,diff_dumpdir,diff_multivol): Assign orig_file_name - to save_name uniformly over the program. This fixes matching - directory names at the start of an archive volume. - * src/create.c: Assign orig_file_name - to save_name uniformly over the program. This fixes matching - directory names at the start of an archive volume. - * src/list.c: Likewise - - * tests/multiv03.at: Modified to match the new behavior - * tests/multiv04.at: New file. Test splittind directory members between - the archive volumes. - * tests/Makefile.am: Add multiv04.at - * tests/testsuite.at: Likewise. - -2005-04-04 Paul Eggert - - * configure.ac (AC_CONFIG_AUX_DIR): Rename from config to build-aux, - for reasons discussed in the thread beginning at - . - * .cvsignore: Remove config; add build-aux. - - * src/buffer.c (struct zip_magic): Use char arrays, not pointers. - The unsigned char * pointer ran afoul of pedantic C compilers, and - we didn't need pointers anyway. Put the size field before the - data to avoid unnecessary padding. All uses changed. - (magic) Make it const, since it doesn't change. All uses changed. - -2005-04-02 Paul Eggert - - * src/xheader.c (decode_record): Don't dump core when given - a corrupted extended header. Problem reported by Jim Meyering. - Also, check for other ways that the header might be invalid, - e.g., missing newline at end. Do not allow keys with nulls. - Allow blanks before and after length, as POSIX requires. - Do not allow leading "-" in length. Check for length overflow. - (xheader_decode, xheader_decode_global): Let decode_record - check for exhaustion of record. - (xheader_read): Null-terminate the extended record; - decode_record relies on this. - -2005-03-21 Paul Eggert - - * bootstrap (TP_URL): Change from - to - to avoid - some redirection glitches. - Use "trap - 0" rather than "trap 0" to fix a POSIX-conformance bug. - * doc/.cvsignore: Change "tar.info" to "tar.info*". Sort. - * lib/.cvsignore: Add intprops.h (new gnulib file). - -2005-03-04 Sergey Poznyakoff - - * src/list.c (print_header): Print UID/GID in case of - empty user/group name. This could occur when dumping - files belonging to non-existing users and when listing - broken archives. - Reported by Igor Lautar. - - * src/create.c: Correctly parse empty uname/gname - * src/sparse.c (sparse_scan_file): Bugfix. offset had - incorrect type. - - * scripts/backup.in: Use `head -n 1'. Provide missing - argument to ${MT_STATUS}. Proposed by Jan Merka. - * scripts/backup.sh.in: Likewise. Fixed typo in - MT_OFFLINE assignment. - * scripts/restore.in (restore_fs): Use root_fs - -2005-02-15 Sergey Poznyakoff - - * src/create.c: Replace strdup with xstrdup - * src/names.c: Likewise - * src/tar.c: Likewise - - * tests/append01.at: Added reference to bug-tar archive - * tests/listed02.at: Use -print with find. - -2005-02-11 Sergey Poznyakoff - - * THANKS: Added Tim Adye. Fixed UTF. - * src/list.c (read_header): Removed assignment to - oldgnu_header.isextended. It was breaking append mode. - - * tests/append01.at: New test. - * tests/Makefile.am: Added append01.at - * tests/testsuite.at: Likewise - -2005-02-06 Sergey Poznyakoff - - * gnulib.modules: New file. List of required gnulib - modules. - * bootstrap: Merge list of required modules from - paxutils with that from tar proper. - * src/tar.c: Various fixes in help and diagnostic messages. - -2005-02-05 Sergey Poznyakoff - - * src/common.h (EXTRACT_OVER_PIPE): New macro - * src/compare.c: Code clean up. - * src/extract.c (extract_archive): Do not check for - EXTRACT_OVER_PIPE, decode_options() does this. - * src/misc.c (exec_error,fork_error,dup2_error) - (pipe_error): Removed unneeded functions. - * src/system.c (sys_exec_command): Use xclose, xpipe, - xfork, xdup2 and exec_fatal. - * src/tar.c (options): Improved sorting. Document --backup=off. - (decode_options): Clear backup_option if necessary. - -2005-02-05 Sergey Poznyakoff - - Initial implementation of --to-command option proposed - by Hansjoerg Lipp. - - * bootstrap: Get setenv module from gnulib - * src/buffer.c: Do not use 8-bit chars in comments - * src/common.h (to_command_option) - (ignore_command_error_option): New globals - (sys_exec_command,sys_wait_command): New commands - * src/extract.c (extract_file): Handle to_command_option - Fix error recovery: decrease `size' by `written', not - by `count', otherwise tar misses the next header - Do not diagnose write error if to_command_option - is set, since the command may have exited prematurely. - It would be better to check for sigpipe, though. - (prepare_to_extract): Handle to_command_option - * src/misc.c (exec_error, fork_error, dup_error) - (pipe_error): New functions - * src/system.c (sys_exec_command) - (sys_wait_command): New functions - * src/tar.c: Handle new options --to-command, - --ignore-command-error - * THANKS: Added Hansjoerg Lipp - -2005-02-03 Paul Eggert - - * src/list.c (from_header): New arg OCTAL_ONLY, normally false. - All uses changed. Fix typo that sometimes suppressed all "Archive - contains obsolescent base-64 headers" warnings, not just the first - one. - (tar_checksum): Accept only octal checksums, since they aren't - supposed to overflow into weird formats. - - Adjust to gnulib changes. - * lib/.cvsignore: Add chdir-long.c, chdir-long.h, memrchr.c, - memrchr.h, openat.c, openat.h. Remove pathmax.h (added by - mistake, perhaps?), sysexit.h (my typo), xstrdup.c (gnulib removed - this file). Sort entries. - -2005-02-04 Sergey Poznyakoff - - * src/extract.c: Further rewrite. - * src/buffer.c: Removed unused variables. - * src/list.c: Likewise - * src/tar.c (update_argv): Changed type to void - - * src/common.h (OLDGNU_NAME_FIELD_SIZE): New constant - * src/create.c (start_private_header,write_header_name) - (dump_hard_link): Restore compatibility with 1.13.25 - * src/extract.c (extract_archive): Rewritten - * src/list.c: Add translators' comments - * src/tar.c (options) Minor spelling fix - * tests/star/quicktest.sh: Determine path to the tar executable. - -2005-02-03 Sergey Poznyakoff - - * po/POTFILES.in: Added tests/genfile.c - * src/buffer.c (short_read): Use ngettext() - (new_volume): use quote(). - * src/create.c: Use quote() - * src/extract.c: Likewise - * src/xheader.c: Likewise - * src/misc.c: Add comments to translators - - * tests/same-order01.at: sort ls output - * tests/sparse01.at (RE_CHECK): Added missing space - - * tests/sparse02.at: Test extracting sparse files over a pipe. - * tests/Makefile.am: Added sparse02.at - * tests/testsuite.at: Likewise - * tests/listed02.at: Skip the test on filesystems that do not - update ctime of a file when renaming it. To be reverted when - the new incremental mode is ready. - * tests/sparse01.at: Extract and compare sparse file - -2005-02-02 Sergey Poznyakoff - - * src/sparse.c: Extract sparse files even if the output - fd is not seekable. - -2005-02-01 Sergey Poznyakoff - - * bootstrap: Add a comment to lib/Makefile.am saying that this - is an autogenerated file. - Exit with code 1 if any of autotools fails. - * lib/Makefile.tmpl: Insert Emacs magic to the first line. - * tests/Makefile.am: Add append.at - - * m4/.cvsignore: Ignore all *.m4 files - -2005-01-18 Sergey Poznyakoff - - Rewritten handling of -T (--files-from) option. Now it - inserts the file names immediately into argv array which allows - for: - 1) any valid tar options (including another -T) to be used in the file - 2) any number of -T options to be given in command line - - * configure.ac: Raised version number to 1.15.2 - * src/common.h: Include obstack.h - (files_from_option): Removed - (unquote_option): New variable - (stat_fatal): New function - (name_close): Removed function. - * src/incremen.c: Remove inclusion of obstack.h - * src/xheader.c: Likewise. - * src/misc.c (stat_fatal): New function - * src/names.c (name_file): Removed variable. - (read_name_from_file): Removed function. All callers changed. - (name_close): Removed function. All callers changed. - * src/tar.c: New options --unquote (--no-unquote) and - --add-file - (add_file_id,read_name_from_file,update_argv): New functions - (parse_opt): Rewritten handling of -T option. Handle hidden - --HANG option for debugging purposes. - (decode_options): Init unquote_option to true. Init argv_stk. - Remove unneeded references to files_from_option - - * doc/tar.texi: Document new options. - Moved rendition macros and option value definitions into - separate files - * doc/rendition.texi: New file - * doc/value.texi: New file - * doc/Makefile.am: Updated - -2005-01-13 Paul Eggert - - * tests/testsuite.at (RE_CHECK): Use "join - file", not - "join file -", to work around a bug in Solaris 8 join. - Problem reported by Tomohiro Suzuki. - -2005-01-13 Sergey Poznyakoff - - * src/list.c (read_header): Fixed calculation of the - size for GNU long name/link. Tar was reading one block - more if name_size was divisible by 512. Thanks Josef - Bauer. - * tests/long01.at: New file. Test listing of GNU long names - divisible by 512. - * tests/pipe.at: Sort tar output. - * tests/Makefile.am: Added long01.at - * tests/testsuite.at: Likewise. - * THANKS: Added Josef Bauer - * lib/.cvsignore: Updated - * m4/.cvsignore: Updated - * NEWS: Updated - -2005-01-11 Sergey Poznyakoff - - * directory: Updated for 1.15.1 - * doc/Makefile.am: Use gendocs.sh to generate web documentation - * doc/gendocs_template: Template file for gendocs.sh - * doc/tar.texi: Updated docs for --[no-]same-permissions - * src/tar.c: Reworded docstrings for --[no-]same-permissions - -2005-01-06 Sergey Poznyakoff - - * bootstrap: Create m4/paxutils.m4 - * configure.ac: Call tar_PAXUTILS - * tests/options02.at: Test that tar correctly handles non-option - arguments interspersed with options. - * tests/Makefile.am: Add options02.at - * tests/testsuite.at: Likewise - * tests/listed02.at: Do not create useless directory - -2005-01-05 Sergey Poznyakoff - - * src/tar.c (parse_opt): Bugfix: Use ARGP_KEY_ARG. Thanks - Mike Frysinger for reporting. - -2005-01-04 Paul Eggert - - * lib/Makefile.tmpl (localedir.h): Omit needless quotes and a - needless sed command. Problem reported by Paul Jarc. - -2004-12-23 Paul Eggert - - Accommodate latest gnulib. - * doc/.cvsignore: Add getdate.texi. - * bootstrap: Do not treat alloca-opt specially; this is no - longer needed (and breaks builds) with latest gnulib. - -2004-12-22 Sergey Poznyakoff - - * src/tar.c (main): Reverted recent changes (#ifdef). - -2004-12-21 Sergey Poznyakoff - - * configure.ac: Raise version number to 1.15.1 - Check for locale.h - * NEWS: Entry for 1.15.1 - * src/buffer.c: Bugfix. Changes introduced 2004-11-26 - broke extraction from stdin. - * src/list.c (from_header, tar_checksum): Changed declaration. - All callers updated. - * src/common.h: Likewise - * src/tar.c (main): Protect invocation of setlocale by - ifdef. - - * tests/comprec.at: New test - * tests/pipe.at: New test - * tests/Makefile.am (comprec.at,pipe.at): New tests - * tests/testsuite.at: Likewise - * tests/gzip.at: Use AT_GZIP_PREREQ - * tests/star/pax-big-10g.at: Likewise - * tests/star/ustar-big-2g.at: Likewise - * tests/star/ustar-big-8g.at: Likewise - - * tests/extrac04.at: Discard stderr from sort, on some - systems it spits out lots of irrelevant info. - * tests/listed02.at: Likewise - - * doc/index.html.in: Rewritten in xhtml to follow recent - GNU site standards. - * THANKS: Updated - -2004-12-20 Sergey Poznyakoff - - Released version 1.15. Sources up to this point are - tagged release_1_15. - - * configure.ac: Raised version number to 1.15 - * NEWS: Likewise - * directory: Updated - * bootstrap (update_po): Give -r to wget. Always remove index.html - Ignore alloca-opt module (it duplicates alloca) - - * tests/Makefile.am: Distribute star/quicktest.sh - * tests/star/README: Document quicktest.sh - * tests/star/qucktest.sh: Removed. - * tests/star/quicktest.sh: New file. - -2004-12-18 Sergey Poznyakoff - - * NEWS: Updated - * doc/tar.texi: Document auto-detection of compressed archive - formats. - * src/tar.c (decode_options): Ignore --seek if used with --delete. - Delete.c is based on the assumption that the archive is being - actually read, not lseeked. - - * tests/delete05.at: New file - * tests/extrac02.at: Fixed typo in AT_SETUP - * tests/Makefile.am: Added delete05.at - * tests/testsuite.at: Likewise. - -2004-12-17 Sergey Poznyakoff - - * src/delete.c (delete_archive_members): Bugfix: when - attempting to delete an nonexistent member, the last - blocking_factor blocks were zeroed. - -2004-12-14 Paul Eggert - - * TODO: Mention sub-second resolution, lutimes, lchmod. - -2004-11-27 Paul Eggert - - Adjust to recent gnulib changes. - * doc/getdate.texi: Remove, since bootstrap gets it from gnulib now. - * .cvsignore: Add rmt, rmt/*, rmt/*/*. - * lib/.cvsignore: Add allocsa.c, allocsa.h, allocsa.valgrind, - charset.alias, config.charset, getcwd.c, getcwd.h, localcharset.c, - localcharset.h, ref-add.sed, ref-add.sin, ref-del.sed, - ref-del.sin, setenv.c, setenv.h, unsetenv.c. Remove pathmax.h, - xstrdup.c. - * m4/.cvsignore: Add allocsa.m4, eealloc.m4, getcwd-path-max.m4, - localcharset.m4, realloc.m4, setenv.m4. Remove malloc.m4, - pathmax.m4, realloc.m4. - -2004-11-26 Sergey Poznyakoff - - * configure.ac: Raised version number to 1.14.91 - * scripts/tarcat: New file - * scripts/Makefile.am: Added tarcat - * src/buffer.c (hit_eof): Changed type to boolean - (read_full_records,reading_from_pipe): New variables - (check_compressed_archive,open_compressed_archive): New functions - (open_archive): Autodetect compressed archives and act accordingly. - Set reading_from_pipe. This fixes controversial set of changes - introduced 2004-05-11,2004-03-22. - * src/list.c (tar_checksum): New function - (read_header): Use tar_checksum(). - * src/common.h (tar_checksum): New function - - * tests/star/README: Updated - * NEWS: Updated - * PORTS: Updated - -2004-11-16 Sergey Poznyakoff - - * src/tar.c (decode_options): Fixed -o semantics. Thanks - Jean Delvare - -2004-10-25 Sergey Poznyakoff - - * bootstrap: Add localcharset - * lib/Makefile.tmpl: Initialize SUFFIXES and CLEANFILES since the - makefile snippet from localcharset uses '+=' on them. - * src/Makefile.am (LDADD): Add LIBICONV - * src/list.c (decode_header): Set uname/gname to NULL if their - header counterparts are empty - * src/tar.c (options): Use OPTION_NO_TRANS - * src/utf8.c: Use locale_charset() from gnulib - - * tests/star/README: Updated - - * NEWS: Updated - * TODO: Minor fix - -2004-10-04 Sergey Poznyakoff - - * THANKS: Added Bryan Ford - * doc/Makefile.am (.text): Fixed rule - * po/POTFILES.in: Added argp-help.c - -2004-10-04 Bryan Ford - - * src/tar.c: New option --exclude-caches, to exclude - cache directories automatically on archive creation. - Cache directories are directories containing a - standardized tag file, as specified at: - http://www.brynosaurus.com/cachedir/spec.html - * src/common.h: New variable exclude_caches_option. - * src/create.c: New function check_cache_directory(), - called from dump_dir0() if exclude_caches_option is set, - to check for a cache directory tag and exclude the directory - if such a tag is found. - * doc/tar.texi: Updated accordingly. - -2004-09-16 Sergey Poznyakoff - - * doc/tar.texi: Minor fix - * src/tar.c (options): Minor fix - -2004-09-12 Sergey Poznyakoff - - * TODO: Updated - * lib/Makefile.tmpl: Added 'rtapelib.o: localedir.h' dependency - * src/common.h: Comment WANT_DIRECTORY_REMOVE_OPTION. - * src/extract.c: Normalized use of remove_any_file(). - * src/misc.c: Likewise. - * src/tar.c (parse_opt): Emit warning if -l option is used. - (show_default_settings): REMOTE_SHELL may be undefined - -2004-09-07 Sergey Poznyakoff - - Test suite rewritten in autotest. - - * configure.ac: Updated for autotest - * src/tar.c (argp_program_version): Modified. - * tests/Makefile.am: Rewritten for autotest. - - * tests/.cvsignore: Updated - * tests/append.at: New file - * tests/atlocal.in: New file - * tests/delete01.at: New file - * tests/delete02.at: New file - * tests/delete03.at: New file - * tests/delete04.at: New file - * tests/extrac01.at: New file - * tests/extrac02.at: New file - * tests/extrac03.at: New file - * tests/extrac04.at: New file - * tests/extrac05.at: New file - * tests/gzip.at: New file - * tests/ignfail.at: New file - * tests/incremental.at: New file - * tests/link01.at: New file - * tests/listed01.at: New file - * tests/listed02.at: New file - * tests/longv7.at: New file - * tests/multiv01.at: New file - * tests/multiv02.at: New file - * tests/multiv03.at: New file - * tests/old.at: New file - * tests/options.at: New file - * tests/recurse.at: New file - * tests/same-order01.at: New file - * tests/same-order02.at: New file - * tests/sparse01.at: New file - * tests/testsuite.at: New file - * tests/version.at: New file - * tests/volume.at: New file - * tests/star/gtarfail.at: New file - * tests/star/gtarfail2.at: New file - * tests/star/multi-fail.at: New file - * tests/star/pax-big-10g.at: New file - * tests/star/ustar-big-2g.at: New file - * tests/star/ustar-big-8g.at: New file - - * tests/preset.in: Removed - * tests/before: Removed - * tests/after: Removed - * tests/version.sh: Removed. - * tests/append.sh: Removed. - * tests/delete01.sh: Removed. - * tests/delete02.sh: Removed. - * tests/delete03.sh: Removed. - * tests/delete04.sh: Removed. - * tests/extrac01.sh: Removed. - * tests/extrac02.sh: Removed. - * tests/extrac03.sh: Removed. - * tests/extrac04.sh: Removed. - * tests/extrac05.sh: Removed. - * tests/gzip.sh: Removed. - * tests/incremen.sh: Removed. - * tests/ignfail.sh: Removed. - * tests/link01.sh: Removed. - * tests/listed01.sh: Removed. - * tests/listed02.sh: Removed. - * tests/longv7.sh: Removed. - * tests/multiv01.sh: Removed. - * tests/multiv02.sh: Removed. - * tests/multiv03.sh: Removed. - * tests/old.sh: Removed. - * tests/options.sh: Removed. - * tests/same-order01.sh: Removed. - * tests/same-order02.sh: Removed. - * tests/volume.sh: Removed. - * tests/recurse.sh: Removed. - * tests/sparse01.sh: Removed. - * tests/star/gtarfail.sh: Removed. - * tests/star/gtarfail2.sh: Removed. - * tests/star/multi-fail.sh: Removed. - * tests/star/ustar-big-2g.sh: Removed. - * tests/star/ustar-big-8g.sh: Removed. - * tests/star/pax-big-10g.sh: Removed. - -2004-09-07 Sergey Poznyakoff - - * bootstrap: Install genfile.c from paxutils - * tests/genfile.c: Removed. Integrated into - paxutils. - * tests/mksparse.c: Removed. Integrated into - (paxutils) genfile.c - * tests/Makefile.am: Removed mksparse - * tests/sparse01.sh: Use genfile instead of mksparse - -2004-09-06 Sergey Poznyakoff - - Started merging with cpio into paxutils. Sources before - this point are tagged alpha-1_14_90 - - * Makefile.am: Updated for use with paxutils - * README-alpha: Likewise - * bootstrap: Likewise - * configure.ac: Likewise - * lib/Makefile.tmpl: Likewise - * po/POTFILES.in: Likewise - * src/Makefile.am: Likewise - * src/buffer.c: Likewise - * src/common.h: Likewise - * src/compare.c: Likewise - * src/create.c: Likewise - * src/delete.c: Likewise - * src/extract.c: Likewise - * src/incremen.c: Likewise - * src/list.c: Likewise - * src/mangle.c: Likewise - * src/misc.c: Likewise - * src/names.c: Likewise - * src/sparse.c: Likewise - * src/system.c: Likewise - * src/tar.c: Likewise - * src/update.c: Likewise - * src/utf8.c: Likewise - * src/xheader.c: Likewise - - * src/system.h: Removed - * src/rmt.c: Removed - * src/rmt.h: Removed - * src/rtapelib.c: Removed - -2004-09-03 Sergey Poznyakoff - - * tests/listed02.sh: Do not depend on any particular ordering - of output. - -2004-09-02 Sergey Poznyakoff - - * doc/tar.texi: Document the use of -C option in - file lists. Document --seek option. - * configure.ac: New option --with-rmt. New configuration variable - DEFAULT_RMT_DIR. Removed DEFAULT_RMT_COMMAND. - * src/Makefile.am: Install rmt into rmtdir - * src/tar.c (usage): Minor fix. - * NEWS: Updated. - * README: Updated. - -2004-09-01 Sergey Poznyakoff - - * configure.ac: Raised version number to 1.14.90 - * src/common.h (is_individual_file): New prototype - * src/create.c (dump_file0): Fix bug introduced - 2004-02-21. - * src/names.c (register_individual_file) - (is_individual_file): New functions. - * tests/listed01.sh: Use genfile instead of dd. - * tests/listed02.sh: New file. - * tests/Makefile.am: Added listed02.sh - - * NEWS: Updated - -2004-08-31 Sergey Poznyakoff - - * src/sparse.c (sparse_add_map): Fixed improper initializations - of sparse_map_size. We assume that whatever number it contains - describes adequately the current size of sparse_map. The only - number we need to reset is sparse_map_avail. - * src/compare.c (verify_volume): Call set_next_block_after - if read_header returns HEADER_FAILURE - Destroy and reinitialize content of current_stat_info and - extended_header after each iteration (bug reported by - John L. Males ). - Issue a warning if the created archive contains some members - whose file names were stripped off their leading prefixes. - This is a temporary fix of the issue reported by Bdale Garbee - (Refs: Debian bug 230064, Message-Id - <87n07kyzhi.fsf@rover.gag.com>, Sun, 15 Feb 2004 11:22:17 -0700) - - * src/names.c (removed_prefixes_p): New function. - - * src/buffer.c: When computing write rate do not take - into account the time needed to verify the archive(s). - The bug reported by John L. Males - (set_start_time,compute_duration): New functions. - (print_total_written): Use the result of compute_duration(). - (close_archive): Call compute_duration. - * src/common.h (set_start_time, removed_prefixes_p): New prototypes. - * src/list.c (decode_header): Fixed initialization - of stat_info->is_sparse - * src/tar.c (main): Call set_start_time(). - - * src/misc.c (unquote_string): Unquote '\a' and '\v'. - Reported by Helmut Waitzmann . - - * NEWS: Updated - * THANKS: Updated - -2004-08-30 Sergey Poznyakoff - - * src/tar.c: Fix copy-n-paste errors in the license - -2004-08-19 Sergey Poznyakoff - - * scripts/backup.in: Renamed LIBPATH to LIBDIR. - Use ROOT_FS with -C option. Do not send mail - if ADMINISTRATOR is set to NONE. - * scripts/backup.sh.in (test_root): Append / to - ROOT_FS if it does not already end in it. - * scripts/restore.in: Renamed LIBPATH to LIBDIR. - New option -a (--all). Do not start restore unless - -a or patterns are given. - (restore_fs,restore_files): Fixed use of --listed option. - * doc/tar.texi: Updated - * NEWS: Updated - -2004-08-17 Sergey Poznyakoff - - * src/tar.c (find_argp_option): Fixed typo - -2004-08-12 Paul Eggert - - Merge argp, getopt, xalloc changes from gnulib. - * bootstrap (gnulib_modules): Add xalloc-die. - Remove code to test for patches; we don't have patches now. - Set LC_ALL=C so that file names sort consistently. - Prefer the gnulib copies of gettext.m4, glibc21.m4, - lib-ld.m4, lib-prefix.m4, po.m4 too. - - * patches/getopt.diff: Remove; gnulib now works unpatched. - * configure.ac (_getopt_long_only_r): Remove check. - gl_ARGP now does this for us. - * lib/.cvsignore: Add fnmatch.h, getopt_.h, sysexit.h, - xalloc-die.c. - * src/extract.c: Adjust to changes to gnulib xalloc module. - (extr_init): Remove assignment to xalloc_fail_func; no longer needed. - (xalloc_die): New function. - -2004-08-10 Sergey Poznyakoff - - * NEWS: Updated - - * src/buffer.c (flush_write): Limit filenames - of the members that straddle multivolume archive - boundary to 100 characters. - (flush_read): Use strncmp when comparing multivolume member - names. - * tests/multiv03.sh: New file - * tests/Makefile.am: Added multiv03.sh - -2004-08-09 Sergey Poznyakoff - - * src/list.c (read_and): Call decode_header before - calling skip_member() - (skip_member): Use is_sparse field to determine if the - member is a sparse file. - - * tests/Makefile.am: Added extrac05.sh - * tests/extrac05.sh: New file - * tests/append.sh: Rearranged leading comments. Added explicit - references to report messages wherever available. - * tests/delete01.sh: Likewise - * tests/delete02.sh: Likewise - * tests/delete03.sh: Likewise - * tests/delete04.sh: Likewise - * tests/extrac01.sh: Likewise - * tests/extrac02.sh: Likewise - * tests/extrac03.sh: Likewise - * tests/extrac04.sh: Likewise - * tests/gzip.sh: Likewise - * tests/ignfail.sh: Likewise - * tests/incremen.sh: Likewise - * tests/link01.sh: Likewise - * tests/listed01.sh: Likewise - * tests/longv7.sh: Likewise - * tests/multiv01.sh: Likewise - * tests/multiv02.sh: Likewise - * tests/old.sh: Likewise - * tests/options.sh: Likewise - * tests/recurse.sh: Likewise - * tests/same-order01.sh: Likewise - * tests/same-order02.sh: Likewise - * tests/sparse01.sh: Likewise - * tests/version.sh: Likewise - * tests/volume.sh: Likewise - -2004-08-08 Sergey Poznyakoff - - * bootstrap: Extended --update-po option to take an - optional argument specifying the po file to update. - * src/create.c: Improved compatibility with 1.13.25 - * tests/link01.sh: New file. - * tests/Makefile.am: Added link01.sh - -2004-08-06 Paul Eggert - - Merge from gnulib. - - * patches/argp.diff: Remove; no longer needed. - - * lib/.cvsignore: Add stat-macros.h. - Remove addext.c, malloc.c, realloc.c. - - * src/extract.c: Include . - (extract_archive): Rewrite with new macro IS_ABSOLUTE_FILE_NAME. - * src/extract.c (make_directories): - FILESYSTEM_PREFIX_LEN -> FILE_SYSTEM_PREFIX_LEN. - * src/misc.c (must_be_dot_or_slash): Likewise. - * src/names.c (excluded_name, safer_name_suffix, stripped_prefix_len): - Likewise. - * src/tar.c (parse_opt): Likewise. - * src/incremen.c (purge_directory): Fix format buffer typos in warning - strings. - * src/tar.c (options): Add missing initializers to pacify gcc. - (decode_options): Remove unused var. - -2004-08-02 Paul Eggert - - * bootstrap (gnulib_modules): Add getpagesize. - * configure.ac (valloc): Remove check; valloc no longer used. - * lib/.cvsignore: Add getpagesize.h. - * m4/.cvsignore: Add getpagesize.m4. - * src/buffer.c (record_buffer): New var. - (open_archive): Don't use valloc; on older or buggy hosts, you can't - free the result. Use page_aligned_alloc instead. - * src/compare.c (diff_init): Likewise. - * src/buffer.c (open_archive): Record the pointer to be freed - into record_buffer. - (close_archive): Free record_buffer. - * src/common.h (page_aligned_alloc): New decl. - * src/misc.c (quote_n, quote): Remove these redundant functions. - (ptr_align): New function, from coreutils/src/system.h. - (page_aligned_alloc): New function. - * src/system.h (valloc): Remove. - -2004-07-09 Paul Eggert - - * src/extract.c (extract_archive): Do not report an error - when hard-linking X to X when X exists. Problem reported by - Toby Peterson. - * lib/.cvsignore: Add fchown-stub.c. - -2004-06-29 Sergey Poznyakoff - - * NEWS: Updated - * src/common.h (root_device): New global. - (gnu_restore): Renamed to purge_directory(). - * src/extract.c (extr_init): Save the device number - of the root device. - (extract_archive): Renamed gnu_restore() to purge_directory(). - * src/incremen.c (gnu_restore): Renamed to purge_directory(). - Do not attempt to purge the directory if it is on a different - device and one_file_system_option is set. - -2004-06-25 Sergey Poznyakoff - - * doc/tar.texi: The actual default for exclude patterns - is --no-anchored. Fixed. - * src/tar.c (options): Likewise. - Thanks "Felix Natter" for noticing. - -2004-06-22 Sergey Poznyakoff - - * doc/tar.texi: Fixed several inconsistencies. - * src/tar.c: Fixed docstring for --checkpoint option. - -2004-05-19 Sergey Poznyakoff - - * src/buffer.c (seek_archive): New function - * src/common.h (seek_archive): New function - (seekable_archive): New global. - * src/list.c (skip_file): Use seek_archive() if - possible. - * src/tar.c (struct fmttab): Accept 'pax' as alias - for 'posix' - (options): New option -n (--seek). - * src/update.c: Determine type of the archive before - appending to it. - - * TODO: Updated. - -2004-05-19 Sergey Poznyakoff - - * bootstrap: New option --update-po - * src/tar.c: New option -H (short alias to --format) - * doc/tar.texi: Document -H option - * src/names.c (safer_name_suffix): Fixed bug introduced - 2004-05-11. - -2004-05-16 Sergey Poznyakoff - - * bootstrap: Apply patches from patch subdirectory - * patches: New dir - * patches/argp.diff: New file - * patches/getopt.diff: New file - * configure.ac: Check for _getopt_long_only_r and - force using included version of getopt if the function - is not available. - * src/tar.c: Use argp for command line parsing. - * src/system.h: Minor formatting fix - * m4/.cvsignore: Updated - * lib/.cvsignore: Updated - * doc/tar.texi: Minor fix. - * src/extract.c: Fix improper use of 'path' term - * src/incremen.c: Likewise - * src/list.c: Likewise - * src/misc.c: Likewise - * src/names.c: Likewise - * src/rmt.h: Likewise - * src/rtapelib.c: Likewise - * src/update.c: Likewise - * src/xheader.c: Likewise - * tests/star/README: Minor fix - -2004-05-13 Sergey Poznyakoff - - * configure.ac: Raised version number to 1.14.1 - * src/tar.c: Renamed --strip-path to --strip-components - Changed improper use of _() to ngettext(). - * src/extract.c: Renamed strip_path_option to strip_components_option - * src/common.h: Likewise. - * NEWS: Updated. - * doc/tar.texi: Updated - -2004-05-11 Sergey Poznyakoff - - * src/system.c (sys_child_open_for_uncompress): Do not - set read_full_records_option: the compressed archive is - likely not to contain integer number of records. Should - the user wish to use reblocking, he may always give tar - -B option. This is a minor improvement over the change - dated 2004-03-22. - * src/buffer.c (open_archive): Removed assignment to - read_full_records_option. - - * src/names.c (safer_name_suffix): (safer_name_suffix): Use "%s" - as the format argument, rather than a possibly-translated variable - string. Patch provided by Jim Meyering - * src/tar.c (decode_options): Fixed typo in the comment. - * tests/star/README: Minor correction - -2004-05-11 Sergey Poznyakoff - - * directory: New file. GNU directory entry for tar. - * doc/Makefile.am: Rewritten. Added rules for generating - documentation for the project's website. - * doc/.cvsignore: Updated - * doc/index.html.in: New file. - -2004-05-11 Sergey Poznyakoff - - * configure.ac: Raised version number to 1.14 - * NEWS: Updated. - * tests/after: Added copyleft statement - * tests/before: Added copyleft statement - * tests/preset.in: Added copyleft statement - - Tar 1.14 is released. Sources up to this point are tagged - release_1_14 - -2004-05-10 Sergey Poznyakoff - - * configure.ac: Fixed prerequisite headers for sys/buf.h - (needed on FreeBSD) - * src/system.h: Likewise. - * tests/after (compare): Fixed argument quoting under eval - * tests/before: Quote TAR_ARCHIVE_FORMATS - -2004-05-10 Sergey Poznyakoff - - * NEWS: Updated - * README: Updated - * PORTS: Updated - * configure.ac: Call gl_AC_TYPE_INTMAX_T. Document - DEFAULT_.* variables. Use DEFAULT_RMT_COMMAND to set - the pathname of the rmt utility. - New option --enable-backup-scripts. - * doc/tar.texi: Updated - * scripts/Makefile.am: Install the scripts only if requested - by the configure. - * scripts/backup.in: Fixed --version output. - Fixed initialization of the listing files and printing - the time of the last previous level dump. - * scripts/restore.in: Fixed --version output. - * src/Makefile.am (localedir.h rule): Generate correct - DEFAULT_RMT_COMMAND variable. - * src/common.h (rmt_command_option): New variable. - * src/list.c (read_and): Print block number before - issuing 'Skipping to next header' diagnostics, if - requested by block_number_option. - * src/rtapelib.c: Use rmt_command_option instead of - hardcoded "/etc/rmt". - * src/tar.c: New option --rmt-command. - (decode_options): Handle --rmt-command. Initialize - rmt_command_option to DEFAULT_RMT_COMMAND. - -2004-05-09 Sergey Poznyakoff - - * doc/tar.texi: Further update. - -2004-05-08 Sergey Poznyakoff - - * configure.ac: Minor fix - * scripts/Makefile.am: Updated - * scripts/backup-specs: Updated - * scripts/backup.in: Minor fixes - * scripts/backup.sh: Removed - * scripts/backup.sh.in: New file. Source for backup.sh - * scripts/restore.in: New file - * scripts/.cvsignore: Updated - * scripts/WARNING: Removed - * doc/tar.texi: Updated - * NEWS: Updated - -2004-05-07 Sergey Poznyakoff - - * src/names.c (name_gather): Bugfix: Honor single -C with - --same-order. - * tests/same-order01.sh: New file - * tests/same-order02.sh: New file - * tests/Makefile.am: Updated - - * tests/append.sh: Added copyleft header - * tests/delete01.sh: Likewise - * tests/delete02.sh: Likewise - * tests/delete04.sh: Likewise - * tests/extrac01.sh: Likewise - * tests/extrac02.sh: Likewise - * tests/extrac03.sh: Likewise - * tests/extrac04.sh: Likewise - * tests/gzip.sh: Likewise - * tests/ignfail.sh: Likewise - * tests/incremen.sh: Likewise - * tests/multiv01.sh: Likewise - * tests/old.sh: Likewise - * tests/options.sh: Likewise - * tests/recurse.sh: Likewise - * tests/version.sh: Likewise - * tests/volume.sh: Likewise - * tests/star/gtarfail.sh: Likewise - * tests/star/gtarfail2.sh: Likewise - * tests/star/multi-fail.sh: Likewise - * tests/star/pax-big-10g.sh: Likewise - * tests/star/qucktest.sh: Likewise - * tests/star/ustar-big-2g.sh: Likewise - * tests/star/ustar-big-8g.sh: Likewise - - * doc/.cvsignore: Updated - -2004-05-06 Sergey Poznyakoff - - * configure.ac: Check whether date accepts +format argument - (for backup scripts). - * scripts/level-0: Removed - * scripts/level-1: Removed - * scripts/weekly.new: Removed - * scripts/dump-remind: Removed - * scripts/backup.in: New file - * scripts/backup.sh: New file - * scripts/dump-remind.in: New file - * scripts/backup-specs: Updated - * scripts/Makefile.am: Updated for new directory contents. - * scripts/.cvsignore: Updated - -2004-05-05 Sergey Poznyakoff - - * TODO: Updated - * doc/tar.texi: Updated - * src/tar.c: --utc implies -vv - -2004-04-28 Sergey Poznyakoff - - * src/utf8.c: Make sure ICONV_CONST is defined. AM_ICONV - does not define it if it fails to find iconv.h. - -2004-04-26 Sergey Poznyakoff - - * bootstrap: Use gnulib-tool to generate lib/Makefile.am - and parts of configure.ac - * configure.ac: Invoke tar_GNULIB to configure gnulib stuff. - * lib/Makefile.am: Removed - * lib/Makefile.tmpl: New file. - * lib/.cvsignore: Updated - * m4/.cvsignore: Updated - * src/xheader.c: Include stpcpy.h - - * src/create.c: Produce an error, not warning, if the - filename is too long. - * tests/longv7.sh: Synchronized with the recent changes. - -2004-04-20 Sergey Poznyakoff - - * configure.ac: Fixed test for iconv_t - * src/rmt.h: Bugfix by Jürgen Weigert - * THANKS: Add Jürgen Weigert - * tests/star/README: Fixed typo - -2004-04-04 Paul Eggert - - Merge getdate documentation changes from coreutils. - - * doc/getdate.texi: Update from coreutils CVS. - * doc/tar.texi: Fix getdate menu to match getdate.texi's. - - Merge recent gnulib changes, and remove some lint. - - Improve support for nanosecond-resolution time stamps. - * bootstrap: Add gettime, timespec modules. - * configure.ac (gl_GETTIME, gl_TIMESPEC): Add. - * lib/.cvsignore (getopt_int.h, gettime.c, gettimeofday.c, - timespec.h): Add. - * lib/Makefile.am (libtar_a_SOURCES): Add gettime.c, timespec.h. - * m4/.cvsignore: Add clock_time.m4, gettime.m4, gettimeofday.m4, - st_mtim.m4, timespec.m4. Remove malloc.m4, realloc.m4. - * src/common.h (newer_mtime_option): Now a struct timespec, not - time_t. All uses changed. - (NEWER_OPTION_INITIALIZED, OLDER_STAT_MTIME): New macros. - * src/create.c (dump_file0): Use OLDER_STAT_TIME to compare times. - * src/incremen.c (scan_path): Likewise. - * src/list.c (read_and): Likewise. - * src/list.c (read_and): Use NEWER_OPTION_INITIALIZED to decide - whether newer_mtime_option is initialized. - * src/tar.c (decode_options): Likewise. - * src/tar.c (decode_options): Adjust to new signature for get_date. - - * src/buffer.c (short_read, flush_read): Use size_t, not ssize_t, for - result of safe_read, full_write, and similar functions. - Detect safe_read error by comparing to SAFE_READ_ERROR; - detect full_write error by comparing to 0. - All uses changed. - * src/common.h (write_error_details, sys_write_archive_buffer): - Likewise. - * src/misc.c (write_error_details): Likewise. - * src/rmt.c (main): Likewise. - * src/rmt.h (rmt_read__, rmt_write__): Likewise. - * src/rtapelib.c (rmt_read__, rmt_write__, rmt_ioctl__): Likewise. - * src/sparse.c (sparse_scan_file, sparse_dump_region, - check_sparse_region, check_data_region): Likewise. - * src/system.c (sys_write_archive_buffer, sys_drain_input_pipe, - sys_child_open_for_compress, sys_child_open_for_uncompress): Likewise. - * src/update.c (append_file): Likewise. - - * src/buffer.c (clear_read_error_count): Use explicit (void) - to indicate a function with no arguments. - * src/create.c (check_links): Likewise. - * src/system.c (sys_get_archive_stat, sys_save_archive_dev_ino, - sys_detect_dev_null_output, sys_drain_input_pipe, sys_spawn_shell, - sys_reset_uid_gid, sys_get_archive_stat, sys_save_archive_dev_ino, - sys_detect_dev_null_output, sys_drain_input_pipe, sys_spawn_shell): - Likewise. - * src/utf8.c (get_input_charset): Likewise. - * src/xheader.c (xheader_ghdr_name, xheader_write_global, - xheader_decode_global, extended_header_init): Likewise. - * tests/mksparse.c (usage): Likewise. - - * src/buffer.c (new_volume): Rename local variables to avoid - shadowing warnings. - * src/common.h (file_dumpable_p, sys_stat_nanoseconds, - sparse_file_p, sparse_member_p, sparse_fixup_header, - sparse_dump_file, sparce_extract_file, sparse_skip_file, - sparse_diff_file): Likewise. - * src/compare.c (diff_archive): Likewise. - * src/create.c (file_dumpable_p, dump_regular_file, dump_dir0, - dump_dir, dump_hard_link, file_count_links, dump_file0, dump_file): - Likewise. - * src/extract.c (repair_delayed_set_stat): Likewise. - * src/misc.c (maybe_backup_file, add_hierarchy_to_namelist): - Likewise. - * src/sparse.c (struct tar_sparse_optab, tar_sparse_dump_region, - tar_sparse_extract_region, sparse_dump_region, sparse_extract_region, - sparse_dump_file, sparse_file_p, sparse_member_p, - sparse_fixup_header, sparse_extract_file, sparse_skip_file, - check_data_region, sparse_diff_file): Likewise. - * src/system.c (sys_stat_nanoseconds): Likewise. - * src/xheader.c (xheader_format_name): Likewise. - - * src/common.h (enum old_files): Remove comma before }; not portable. - - * src/common.h (read_fatal_details): Add __attribute__ ((noreturn)). - * src/rmt.c (usage): Likewise. - * src/xheader.c (xheader_set_single_keyword): Likewise. - * tests/genfile.c (usage): Likewise. - * tests/mksparse.c (die, usage): Likewise. Also add printf attribute - to die. - - * src/common.h (gname_to_gid, uname_to_uid): Add const to avoid - some gcc warnings. - * src/names.c (uname_to_uid, gname_to_gid): Likewise. - * src/utf8.c (struct langtab.lang, struct langtab.terr, struct - langtab.charset, charset_lookup): Likewise. - - * src/common.h (name_init): Remove unused args. All callers changed. - * src/names.c (name_init): Likewise. - - * src/common.h (usage, xheader_write, xheader_write_global, - sys_reset_uid_gid): New decls. - - * src/compare.c (report_difference, process_noop): Add - __attribute__ ((unused)) for unused attributes. - * src/sparse.c (oldgnu_sparse_member_p, star_sparse_member_p): - Likewise. - * src/xheader.c (dummy_coder, dummy_decoder, atime_coder, - gid_coder, gname_coder, linkpath_coder, ctime_coder, mtime_coder, - path_coder, size_coder, uid_coder, uname_coder, - sparse_numblocks_coder): Likewise. - - * src/create.c (dump_regular_finish, dump_dir0, dump_dir, - dump_file0): Now static. - * src/utf8.c (charset_lookup): Likewise. - * src/xheader.c (xheader_protected_pattern_p, - xheader_protected_keyword_p, xheader_set_single_keyword, - xheader_keyword_deleted_p, xheader_keyword_override_p, - xheader_list_append, xheader_list_destroy, xheader_set_keyword_equal): - Likewise. - * tests/genfile.c (usage): Likewise. - * tests/mksparse.c (die, mkhole, mksparse, usage, xlat_suffix): - Likewise. - - * src/create.c (hash_link): Rewrite to avoid cast. - - * src/extract.c (file_newer_p): Use parameter, not global var. - * src/misc.c (write_error_details): Likewise. - - * src/extract.c (prepare_to_extract): Remove directory arg; not - used. All callers changed. - - * src/misc.c (close_fatal): Remove; not used. - * src/system.c (sys_utimes): Likewise. - - * src/rmt.c (get_string): Avoid buffer overrun (off by 1 error). - - * src/rmt.c (main): Update copyright date to 2004. - * src/tar.c (decode_options): Likewise. - - * src/rtapelib.c (get_status_string): Don't lose errno when - skipping the error messages. - (get_status): Report an error if atol returns a negative number. - - * src/utf8.c (struct langtab, langtab, charset_lookup, - get_input_charset) [!defined HAVE_LIBCONV]: Omit unused - definitions. - (iconv_open, iconv, iconv_close) [!defined HAVE_LIBCONV]: - Use macros, not definitions, to avoid type clashes with system - headers. - (charset_lookup): Local var is now auto, not static. - (utf8_convert): Use ICONV_CONST instead of const, to avoid - type clashes. - - * src/utf8.c (langtab): Initialize all elements of struct, to - avoid gcc warning. - * src/xheader.c (xhdr_tab): Likewise. - - * src/xheader.c: Include fnmatch.h, since we use fnmatch. - - * tests/mksparse.c (mkhole): Fix typo: bool was assigned to off_t. - -2004-04-04 Sergey Poznyakoff - - * NEWS: Updated - * configure.ac: Raised version number to 1.13.94 - * src/system.h: Protect inclusion of - by ifdef. - Declare time() if HAVE_DECL_TIME is 0 - * tests/.cvsignore: Added mksparse - - * tests/sparse01.sh: New file - * tests/multiv02.sh: New file - * tests/Makefile.am: Add sparse01.sh and multiv02.sh - * tests/longv7.sh: Added missing call to 'after' - - * src/common.h: Added missing prototypes - * src/compare.c (diff_archive): Use is_sparse member - instead of GNUTYPE_SPARSE. - * src/create.c: Removed unused variables - * src/extract.c (extract_archive): Use sparse_member_p instead - of GNUTYPE_SPARSE. - Removed unused variables - * src/list.c (decode_header): Use sparse_fixup_header to correct - the st_size value. - (print_header): Do not rely on GNUTYPE_SPARSE type. - Use st->stat.st_size to print real file size. - (skip_member): Assign stat_info.file_name to save_name. This fixes - bug reported by Mads Martin Joergensen - Use sparse_skip_file() to skip sparse members. - * src/rtapelib.c: include "common.h" - * src/sparse.c (struct tar_sparse_optab.sparse_member_p) - (struct tar_sparse_optab.fixup_header): New member - (tar_sparse_member_p): New function. - (tar_sparse_init): Return true if decode_header is not provided - (tar_sparse_fixup_header) - (sparse_member_p,sparse_fixup_header) - (sparse_skip_file) - (oldgnu_sparse_member_p,oldgnu_fixup_header,star_sparse_member_p) - (star_fixup_header, pax_sparse_member_p): New function - (pax_decode_header): Remove - * src/system.h: Include and when available - * src/tar.c (usage): Prototype moved to common.h - * src/tar.h (struct tar_stat_info.is_sparse): New member - * src/utf8.c (utf8_convert): Changed prototype - (get_input_charset): Removed unused variable - * src/xheader.c: include - (size_decoder): Assign to both st->archive_file_size and - st->stat.st_size. - (st->stat.st_size): Assign to st->stat.st_size - (sparse_numbytes_decoder): Removed unused variable - * src/.cvsignore: Added .gdbinit - * THANKS: Added Mads Martin Joergensen - -2004-03-26 Sergey Poznyakoff - - * src/create.c (write_long_name): Do not allow more than - NAME_FIELD_SIZE-1 characters in a file name for V7 format - archives. - * tests/longv7.sh: New file. - * tests/Makefile.am: Add longv7.sh - -2004-03-22 Sergey Poznyakoff - - * src/buffer.c (open_archive): Clear read_full_records_option - if reading from a pipe. - (short_read): Display warning about the deduced record size - if version > 1 - * tests/star/pax-big-10g.sh: Updated to match the above changes. - * tests/star/ustar-big-2g.sh: Likewise. - * tests/star/ustar-big-8g.sh: Likewise. - - * configure.ac: Added gl_FUNC_STRTOULL - * src/create.c (start_header): Check for GNU_FORMAT - if incremental_option is set. - * src/xheader.c (to_decimal): New function. - (xheader_format_name): Use to_decimal() instead of snprintf. - * tests/listed01.sh: Use genfile instead of dd - * tests/multiv01.sh: Likewise. - -2004-03-12 Sergey Poznyakoff - - * src/list.c (read_and): Stop processing the archive after - encountering a single zero record. Many old archives contain - arbitrary garbage after it. - The warning is issued anyway. - -2004-03-02 Sergey Poznyakoff - - * src/rtapelib.c (rmt_lseek__,rmt_ioctl__): Bugfix. The - conversion buffer was not null terminated. Fix provided - by Leland Lucius - * THANKS: Added Leland Lucius - * src/utf8.c (utf8_convert): Indentation fix. - -2004-02-29 Sergey Poznyakoff - - * src/buffer.c (flush_read): Bugfix: the - condition at line 714 included - - || (status > 0 && !read_full_records_option) - - which is grossly wrong, since even if new_volume() below succeeds, - the subsequent call to rmtread will overwrite the chunk of data - already read in the buffer and thus spoil everything. - * src/system.c (sys_child_open_for_uncompress): Minor stylistic - fix. - * tests/star/multi-fail.sh: New test. - * tests/Makefile.am: Added multi-fail.sh - * tests/star/README: Updated - -2004-02-29 Sergey Poznyakoff - - * NEWS: Updated - * configure.ac: Removed spurious AC_CHECK_LIB(iconv) - * src/common.h (utc_option): new global - (enum old_files.KEEP_NEWER_FILES): New element - * src/extract.c: Handle --keep-newer-files option - * src/list.c (tartime): Print UTC if --utc was given. - * src/tar.c: New options: --utc and keep-newer-files - - * tests/Makefile.am: Added new tests - * tests/after: Rewritten - * tests/before: Rewritten - * tests/preset.in: Rewritten - * tests/delete03.sh: Accommodate for the new testsuite logic - * tests/gzip.sh: Likewise - * tests/incremen.sh: Likewise - * tests/listed01.sh: Likewise - * tests/multiv01.sh: Likewise - * tests/old.sh: Likewise - * tests/options.sh: Likewise - * tests/version.sh: Likewise - * tests/volume.sh: Likewise - - * tests/star: New directory - * tests/star/README: New file - * tests/star/gtarfail.sh: New file - * tests/star/gtarfail2.sh: New file - * tests/star/pax-big-10g.sh: New file - * tests/star/qucktest.sh: New file - * tests/star/ustar-big-2g.sh: New file - * tests/star/ustar-big-8g.sh: New file - -2004-02-26 Paul Eggert - - * doc/tar.texi (dircategory Individual utilities): Append period, - as suggested by Karl Berry. - -2004-02-24 Sergey Poznyakoff - - * src/list.c (decode_header): Call xheader_decode before - the assignment to current_stat_info.archive_file_size. - -2004-02-23 Paul Eggert - - * configure.ac: Invoke AM_ICONV, to define ICONV_CONST if needed. - -2004-02-23 Sergey Poznyakoff - - 1.13.93 released. - - * NEWS: Updated - * tests/before: Move testing of the prerequisite archive formats - to the separate function 'prereq'. Do not expect any arguments - * tests/delete03.sh: Use prereq() instead of passing arguments - to 'before'. - * tests/incremen.sh: Likewise. - * tests/listed01.sh: Likewise. - * tests/multiv01.sh: Likewise. - -2004-02-22 Sergey Poznyakoff - - Added UTF-8 support. Finished global extended header - support. - - * NEWS: Minor fix - * configure.ac: Detect libiconv - * src/utf8.c: New file. Conversions to and from utf-8. - * src/Makefile.am: Added utf8.c - * src/create.c (write_header_name) In pax format, use - "path" keyword if the file name is not ASCII - (start_header): Likewise for uname and gname. - * src/list.c: Decode encountered global headers. - * src/xheader.c: Use keywords from the global - headers. - Correctly handle UTF-8 conversions. - (xheader_list_destroy): New function. - (xheader_set_single_keyword,xheader_set_keyword_equal): Added - missing gettext markers - (decode_record): Rewritten using caller-provided handler and - data closure. - * tests/listed01.sh: Give credit to Andreas Schuldei. - -2004-02-21 Sergey Poznyakoff - - * src/create.c (dump_file0): The conditional at line - 1296 prevented incremental backups on individual files - from working, as reported by Andreas Schuldei - . - - This is due to the condition - - (0 < top_level || !incremental_option) - - Removing it makes incremental backups work for individual - files as well as for directories. On the other hand, it does - not affect other functionality, as shown by the reasoning below: - - To begin with, the two parts of this condition are mutually - superfluous, because - - 1) when top_level < 0, incremental_option == 1 - so the condition yields false - 2) when top_level >= 0, incremental_option == 0 - so the condition yields true. - - In other words, it is completely equivalent to - - (!incremental_option) - - Now, let's consider the effect of its removal. There are two cases: - - 1) when incremental_option==1 - This means incremental backup in progress. In this case dump_file - is invoked only for directories or for files marked with 'Y' by - get_directory_contents. The latter are those that did not meet the - condition in incremen.c:242, which is exactly the same condition - as this at create.c:1296. So, for these files the check - (!incremental_option) is useless, since the rest of the - conditional will yield false anyway. On the other hand, if - dump_file is invoked on a directory, the conditional will yield - false due to !S_ISDIR assertion, so these will be processed as usual. - - Thus, for this case the extra condition (!incremental_option) is - irrelevant, and its removal won't alter the behavior of tar, - *except* that it will enable incremental backups on individual - files, which is the wanted effect. - - 2) when incremental_option==0 - In this case the condition yields true and its removal does not - affect the functionality. - - * THANKS: Updated - * configure.ac: Raised patchlevel to 93 - * src/incremen.c: Minor stylistic fixes. - * tests/listed01.sh: New test. Check listed incremental - backups on individual files. - * tests/Makefile.am: Added listed01.sh - -2004-02-20 Sergey Poznyakoff - - * src/common.h (simple_finish_header,start_private_header): New - declarations - (xheader_ghdr_name): Changed declaration - * src/create.c (start_private_header): Removed static qualifier. - (write_extended): Removed superfluous last argument. Use - xheader_write() - (simple_finish_header): New function. - (finish_header): Use simple_finish_header() to break recursive - dependency between this function and write_extended(). - * src/tar.c (assert_format): Do not bail out if several - --format arguments are given. This is a common case when - TAR_OPTIONS are used. - (decode_options): New option --show-defaults displays the - compiled-in defaults. - Use POSIX format if no --format option was given and - --pax-option was specified. - Do not allow to use --pax-option unless the archive format is - set to POSIX (or reading subcommand is requested). - - * src/update.c (update_archive): Write global extended header if - constructed. - * src/xheader.c (xheader_format_name): Bugfix. - (xheader_xhdr_name): Changed the default extended header name - to '%d/PaxHeaders.%p/%f', as POSIX requires. - (xheader_ghdr_name): Removed unused argument. - (xheader_write,xheader_write_global): New function. - (xheader_decode): Modified to honor overrides whatever - the current archive format is. - - * src/delete.c (delete_archive_members): Call xheader_decode - unconditionally. - * src/list.c (decode_header): Likewise. - * src/incremen.c (sort_obstack): Fixed typo in the comment - - * doc/tar.texi: Document new default for extended - header names. - - * tests/before: Accept an optional list of allowed archive - formats. Exit with the status 77 if the current archive - format does not match any of them. - * tests/delete03.sh: Require gnu, oldgnu or posix format - * tests/incremen.sh: Require gnu or oldgnu format - * tests/multiv01.sh: Likewise - -2004-02-20 Sergey Poznyakoff - - * doc/tar.texi (Option Summary): Documented --pax-option - * src/tar.c: Likewise. - * NEWS: Likewise. - * src/create.c (to_chars): Added a comment. - * src/tar.h: Comment to GNU_FORMAT - -2004-02-18 Sergey Poznyakoff - - * README: Updated - * configure.ac: Added stpcpy - * bootstrap: Likewise - * lib/Makefile.am: Likewise - * src/common.h (xheader_xhdr_name,xheader_ghdr_name): New - functions - * src/create.c (write_extended): Call xheader_xhdr_name - instead of using hardcoded "././@PaxHeader" name. - * src/tar.c: New option --pax-option (equivalent to -o option - of pax). - * src/xheader.c: Implement pax -o option. Fixed misleading - heading comment (introduced 2003-09-02). - * src/incremen.c: Minor fixes - * m4/.cvsignore: Updated - -2004-02-17 Sergey Poznyakoff - - * src/incremen.c: Removed accumulator stuff in favor of obstack. - (get_directory_contents): Split into two functions - * src/update.c: Minor changes - * doc/tar.texi: Fixed typo - -2004-02-15 Paul Eggert - - Fix Debian bug 230872, originally reported by Jeff King in - . - - * doc/tar.texi (posix compliance): Remove. The whole section - was a misunderstanding of what POSIXLY_CORRECT is supposed to - mean. The GNU Coding Standards says that POSIXLY_CORRECT - is for disabling extensions that are incompatible with POSIX: - it is not for disabling compatible extensions. All references - to this section removed. - (posix): This format is created only if the posix format is - specified; it is no longer created if gnu format is specified - and POSIXLY_CORRECT is set. - * src/tar.c (decode_options): Ignore POSIXLY_CORRECT. - POSIX does not specify the behavior of tar, so we should - not worry about POSIXLY_CORRECT here. - -2004-01-21 Sergey Poznyakoff - - * Makefile.am: Removed m4 - * configure.ac: Require automake-1.8/autoconf-2.59. Removed - m4/Makefile. - * README-alpha: Updated - * bootstrap: Updated TP URL, improved help output. Default - to :ext:anoncvs and set CVS_RSH, unless already set. - * m4/Makefile.am: Removed - -2004-01-21 Sergey Poznyakoff - - * bootstrap: Bugfix by Marco Gerards : - Use $option instead of $1 so all options will be parsed. - -2004-01-04 Sergey Poznyakoff - - Started rewriting buffer.c ... - - * bootstrap: New option --no-po - * src/buffer.c (new_volume,check_label_pattern): Changed return type. - (time_to_start_writing): Changed data type - (file_to_switch_to): Removed. Variable never assigned to. - (open_archive) Moved option compatibility checks to tar.c - Other minor changes. - * src/common.h (maybe_backup_file): Changed return type - * src/misc.c: Likewise. - * src/create.c: Updated invocations of safer_name_suffix - * src/extract.c: Likewise - * src/delete.c: Updated assignment to write_archive_to_stdout - * src/tar.c (decode_options): More option compatibility checks - (moved from buffer.c) - * src/update.c (time_to_start_writing): Changed data type. - * tests/recurse.sh: New test case. - * tests/mksparse.c: New file. - * tests/Makefile.am: Added recurse.sh and mksparse.c - -2004-01-02 Sergey Poznyakoff - - * src/sparse.c (sparse_diff_file): Bugfix. Thanks - Martin Simmons for the patch. - * src/create.c (dump_dir0): Bugfix. Thanks Piotr Czerwinski - for the patch. - -2003-12-26 Paul Eggert - - Synchronize with Gettext 0.13.1, Automake 1.8, Autoconf 2.59, - and translation website. - - * bootstrap: Don't bother skipping codeset.m4, glibc21.m4, - intdiv0.m4, inttypes_h.m4, inttypes.m4, inttypes-pri.m4, - isc-posix.m4, and lcmessage.m4 from gnulib. This list of files is - a bit obsolete anyway, now that gettext 0.13.1 is out. Also, the - files are replaced by autoreconf. Also, there seems to be a bug - in gettext/autoconf/automake if we try to omit these files after - autoreconf has replaced them, even though the gettext manual says - they're optional. So give up and just include them for now, even - though they make 'configure' longer and slower. - - Change translation URL from - to - to - accommodate translator website revamp. - - Fail if autoreconf fails. - - * m4/.cvsignore: Add intmax.m4, longdouble.m4, printf-posix.m4, - signed.m4, size_max.m4, wchar_t.m4, wint_t.m4, xsize.m4, to - ignore files now supplied by gettext 0.13.1. - -2003-12-25 Sergey Poznyakoff - - Synchronized with the backup repository on Mirddin - -2003-12-19 Sergey Poznyakoff - - * configure.ac: Check for varios members of struct stat - that may represent file modification times with a subsecond - precision. - Check for utimes (for future use) - * src/buffer.c (short_read): Issue a warning on short reads. - * src/common.h (sys_stat_nanoseconds): New function - * src/create.c (dump_file0): Use sys_stat_nanoseconds(). - * src/list.c (read_and): Treat only two successive zero - filled blocks as an EOF indicator. Issue a warning if - a single one is encountered. - * src/system.c (sys_stat_nanoseconds): New function - * src/tar.h (tar_stat_info.atime_nsec,mtime_nsec,ctime_nsec): New - members. - * src/xheader.c (code_time,decode_time): Support for subsecond - precision. - (atime_coder,atime_decoder,ctime_coder,ctime_decoder) - (mtime_coder,mtime_decoder): Update invocations of code_time and - decode_time. - (gid_decoder,size_decoder,uid_decoder,sparse_size_decoder) - (sparse_numblocks_decoder,sparse_offset_decoder) - (sparse_numbytes_decoder): Updated - -2003-12-18 Sergey Poznyakoff - - * src/names.c (safer_name_suffix): Reverted change made - 2003-11-14. Reason: Discussion with Paul Eggert and - Jean-Louis Martineau. See also ChangeLog entry from - 1999-08-14. - * tests/delete03.sh: Likewise. - * tests/extrac04.sh: Likewise. - * tests/multiv01.sh: Likewise. - -2003-12-12 Sergey Poznyakoff - - * src/incremen.c (write_directory_file): Use sys_truncate - * src/list.c (print_header): Use archive_file_size member - when printing real file size. - * src/sparse.c (sparse_scan_file): Correctly handle files with - a hole at the end. - (sparse_dump_region,sparse_extract_region): Allow for zero size - trailing blocks - -2003-12-12 Sergey Poznyakoff - - * configure.ac: Raised version number to 1.13.92 - * src/list.c (decode_header): Discern between pax and ustar - formats - Initialize current_stat_info.archive_file_size. - - NOTE: Modifications from this date on are temporarily - stored on local CVS on mirddin. This repository will - be synchronized with Savannah as soon as the latter - becomes operational again. - -2003-12-01 Sergey Poznyakoff - - * TODO: Updated - * src/sparse.c: Initial implementation of GNU/pax sparse - file format. - * src/common.h (xheader_store): Changed prototype. - * src/create.c: Update calls to xheader_store - * src/extract.c (extract_archive): Check reported size vs. - archive file size to determine if we have to do with a - sparse file. - * src/tar.c (usage): Cleaned up the sample argument to --newer - option. - (decode_options): Allow --sparse for POSIX_FORMAT archives. - * src/xheader.c (struct xhdr_tab.coder; all coder function): Added - extra argument - Implemented GNU.sparse.* keywords. - -2003-11-30 Sergey Poznyakoff - - * configure.ac: Check for setlocale. Thanks Bruno Haible for - reporting. - -2003-11-25 Sergey Poznyakoff - - * src/create.c (write_gnu_long_link): Use oldgnu - magic with @LongLink blocks. - -2003-11-17 Sergey Poznyakoff - - * src/tar.h: Support for star sparse format. - * src/sparse.c: Likewise. - -2003-11-17 Sergey Poznyakoff - - * src/sparse.c (sparse_diff_file): New function - * src/common.h (sys_compare_uid,sys_compare_gid): New functions - (sys_compare_uid_gid): Removed. - (sys_compare_links,report_difference): Changed prototype - (sparse_diff_file): New function - * src/system.c (sys_compare_uid,sys_compare_gid): New functions - (sys_compare_uid_gid): Removed. - (sys_compare_links): Changed declaration - * src/compare.c (diff_archive): Use sparse_diff_file. - -2003-11-16 Sergey Poznyakoff - - Rewritten sparse file handling. - - * src/sparse.c: New file. Provides a universal framework - for various methods for sparse files handling. - * src/Makefile.am: Added sparse.c - * src/common.h (struct sp_array,sparsearray,sp_array_size) - (init_sparsearray,fill_in_sparse_array): Removed - (enum dump_status): New data type - (pad_archive,close_diag,open_diag,read_diag_details) - (readlink_diag,savedir_diag,seek_diag_details,stat_diag): New - functions. - (sparse_file_p,sparse_dump_file,sparse_extract_file): New - functions. - (print_header): Changed prototype declaration. - * src/tar.h (struct sp_array): Declaration from common.h - (struct tar_stat_info): New members archive_file_size, - sparse_map_avail,sparse_map. - * src/create.c: Major rewrite. - * src/extract.c: Use new sparse file interface. - * src/compare.c (diff_sparse_files): Temporary placeholder. - - * src/buffer.c: Minor changes - * src/tar.c: Likewise. - * src/list.c: Likewise. - * src/misc.c (close_diag,open_diag,read_diag_details) - (readlink_diag,savedir_diag,seek_diag_details,stat_diag): New - diagnostics functions. - * src/incremen.c: Use new diagnostics functions. - * src/names.c: Likewise. - -2003-11-14 Sergey Poznyakoff - - * configure.ac: Fixed check for setsockopt - - * src/create.c: Do not zero-terminate name field if - the name is exactly 100 characters long. - (write_ustar_long_name): Fixed cheking for unsplittable - names. - -2003-11-14 Sergey Poznyakoff - - * src/create.c (start_header): Removed debugging hook - (dump_file): Fixed handling of linkname field. - * src/names.c (safer_name_suffix): If the input - file name ends with a slash, output one should do so - as well. - * doc/tar.texi: Documented --format=ustar - -2003-11-14 Sergey Poznyakoff - - * src/tar.h (archive_format): USTAR_FORMAT: New type. - * src/create.c: Added POSIX.1-1988 support. - * src/names.c (safer_name_suffix): Skip leading ./ - * src/tar.c: New option --format=ustar forces - POSIX.1-1988 archive format. - * tests/delete03.sh: Updated. - * tests/extrac04.sh: Updated. - * tests/multiv01.sh: Updated. - -2003-11-13 Sergey Poznyakoff - - * src/list.c (read_and): Initialize current_stat_info - and extended_header at the start of the loop. - * src/names.c (all_names_found): Check if the argument - contains valid filename. Fixes coredump on `not_a_tar_file' - * src/xheader.c (atime_decoder,gid_decoder,ctime_decoder) - (mtime_decoder,size_decoder,uid_decoder): Use xstrtoumax. - Fixes `pax-big-10g' bug. - -2003-11-12 Paul Eggert - - Fix some C compatibility bugs reported by Joerg Schilling. - - * src/common.h (stripped_prefix_len): Fix misspelling - "stripped_path_len" in declaration. - * src/rmt.c (main): Use "return FOO;" rather than - "exit (FOO);"; we no longer have to worry about - pre-ANSI hosts that mishandled returned values from "main". - * src/tar.c (main): Likewise. This avoids warnings on some - compilers. - * src/system.c: Include signal.h, for 'kill'. - * src/system.h (DEV_BSIZE): Remove. - (DEFAULT_ST_BLKSIZE): New macro. - (ST_BLKSIZE): Use it, instead of DEV_BSIZE. - * src/tar.c (enum): Remove comma just before }. - -2003-11-12 Sergey Poznyakoff - - * src/list.c (decode_header): Initialize st_atime and - st_ctime. - -2003-11-11 Sergey Poznyakoff - - * configure.ac (tar_save_LIBS): Bugfix. Thanks Adrian - Bunk for reporting. - * doc/tar.texi: Fixed spelling. Thanks Martin Buchholz - for spotting. - -2003-11-04 Paul Eggert - - * src/xheader.c (xhdr_tab): Make it extern, not static, as C89 and - C99 require this. - -2003-10-26 Paul Eggert - - * src/system.c (sys_spawn_shell): Cast trailing null to (char *). - Bug reported by Christian Weisgerber. - -2003-10-19 Sergey Poznyakoff - - * AUTHORS: Updated - * NEWS: Updated - * src/tar.c (decode_options): Removed superfluous archive format - check - * doc/tar.texi: Documented new features. - -2003-10-08 Sergey Poznyakoff - - * NEWS: Updated - * THANKS: Added Wojciech Polak - * configure.ac: Added checks for missing functions. Raised - version number to indicate alpha release. - * lib/Makefile.am: Added missing headers - * lib/waitpid.c: Added missing includes. - * src/extract.c: Likewise. - * src/names.c: Removed spurious includes. - * src/xheader.c: Likewise. - * src/system.h [MSDOS]: Fixed spelling of EACCES. Added - macro overriding broken mkdir prototypes. - -2003-10-04 Sergey Poznyakoff - - * configure.ac: Check for dev_t and ino_t. - * m4/Makefile.am: Added missing files. - * src/system.c: New file. - * src/Makefile.am: Added system.c - * src/common.h: Prototypes for functions from system.c - * src/system.h (SET_BINARY_MODE, ERRNO_IS_EACCESS): New defines - * src/buffer.c: Moved system dependencies to system.c - * src/compare.c: Likewise. - * src/create.c: Likewise. - * src/delete.c: Likewise. - * src/extract.c: Likewise. - * src/rtapelib.c: Likewise. - -2003-10-04 Sergey Poznyakoff - - Implemented --occurrence option. - - * NEWS: Updated. - * src/tar.c: New option --occurrence. - * src/common.h (occurrence_option): New global - (struct name): Changed `found' member to `uintmax_t - found_count'. - (names_done): Removed - (all_names_found): Changed prototype. - (ISFOUND,WASFOUND): New macros - * src/delete.c (delete_archive_members): Honor --occurrence - option. - * src/list.c (read_and): Likewise. - * src/names.c: Count number of occurrences of each name in the - archive. - (name_match): Honor --occurrence option. - (names_done): Removed - (all_names_found,names_notfound): Rewritten. - -2003-10-02 Sergey Poznyakoff - - * src/tar.c: Removed extra precaution regarding - subcommand_option == CAT_SUBCOMMAND - * lib/Makefile.am: Updated - -2003-10-02 Sergey Poznyakoff - - * src/common.h (names_done): New function. - * src/names.c: Likewise. - * src/list.c (read_and): Use all_names_found() as `while' - condition. - * src/tar.c: New option --first-copy - * NEWS: Updated - -2003-09-24 Paul Eggert - - * src/rmt.c (main): Don't translate Copyright string; international - law says the word "Copyright" should be in English. - * src/tar.c (decode_options): Likewise. - -2003-09-22 Paul Eggert - - * doc/tar.texi (extracting untrusted archives): New section. - - * src/common.h (stripped_path_len): Renamed from cut_path_elements. - Return size_t, not pointer, so that we don't have to worry about - violating the C standard by converting char const * to char *. - All callers changed. - * src/names.c (stripped_path_len): Likewise. Strip file system - prefix, too. Count adjacent slashes as if they were one slash; - that is the POSIX standard. - -2003-09-17 Paul Eggert - - * README-alpha: Document maintainer tool assumptions a bit. GNU - 'sed' is no longer required. For GNU m4 1.4, suggest the patch in - Debian bug 211447. Fix minor misspellings/whitespace nits. - - * configure.ac (AC_AIX, AC_MINIX): Remove; subsumed by - gl_USE_SYSTEM_EXTENSIONS. - - * lib/.cvsignore: Add exit.h, time_r.c, time_r.h. - * m4/.cvsignore: Add restrict.m4, time_r.m4. - -2003-09-17 Paul Eggert - - * bootstrap: Don't use "for option; do"; - Solaris 8 /bin/sh doesn't like that. - -2003-09-17 Sergey Poznyakoff - - * README-alpha: Updated - * bootstrap: Updated - -2003-09-17 Sergey Poznyakoff - - * README-alpha: Updated - * bootstrap: Updated - * po/POTFILES.in: Added src/xheader.c - * src/common.h (cut_path_elements): Added proto. - -2003-09-05 Sergey Poznyakoff - - * src/buffer.c: Use ngettext where appropriate. - * src/compare.c: Likewise. - * src/create.c: Likewise. - * src/misc.c: Likewise. - * src/tar.c: Likewise. - * src/update.c: Likewise. - -2003-09-04 Sergey Poznyakoff - - * .cvsignore: Added *.shar.gz - * NEWS: Updated - * TODO: Updated - * src/common.h (strip_path_elements): New variable. - * src/extract.c (extract_archive): Implemented --strip-path - * src/names.c (cut_path_elements): New function. - * src/tar.c: New option --strip-path=NUM. - (decode_options) Assign boolean values to bool variables. - -2003-09-04 Sergey Poznyakoff - - * src/delete.c: Fixed deletion from the POSIX archives. - * src/list.c (read_header): Minor change. - * src/tar.c (main): Do not check for volume_label_option - if subcommand_option is not CREATE_SUBCOMMAND. - * src/xheader.c (xheader_decode): Store the header as - well (for eventual delete). - - * tests/incremen.sh: Explicitly request GNU format. This will - disappear when GNU extended header keywords are working. - * tests/multiv01.sh: Likewise - * tests/volume.sh: Likewise - -2003-09-04 Sergey Poznyakoff - - * src/create.c: Support for "linkpath" extended keyword. - * src/xheader.c (decode_record): Reversed the return - condition. - -2003-09-03 Sergey Poznyakoff - - * configure.ac: Allow to redefine the default output format. - * src/tar.c: Use DEFAULT_ARCHIVE_FORMAT macro - (archive_format_string): New function. - (usage): Updated help output. - * README: Updated. - * NEWS: Updated. - * TODO: Updated. - -2003-09-02 Paul Eggert - - * src/common.h (destroy_stat, xheader_decode, xheader_store, - xheader_read, xheader_finish, xheader_destroy): Add decls; - C99 requires this. - - * src/create.c (write_extended): Remove unused local 'bufsize'. - - * src/delete.c (delete_archive_members): Handle case of - HEADER_SUCCESS_EXTENDED followed by HEADER_FAILURE. - * src/list.c (read_and): Abort if HEADER_SUCCESS_EXTENDED - occurs, as it's not possible. - * src/update.c (update_archive): Likewise. - - Use "const" when possible in new code. - * src/tar.c (struct fmttab.name): Now char const *. All uses changed. - (fmttab): Now const. All uses changed. - * src/xheader.c (struct xhdr_tab.keyword): Now pointer to const. - (struct xhdr_tab.coder, struct xhdr_tab.decoder, locate_handler, - decode_record, xheader_store, xheader_print, code_string, code_time, - code_num, dummy_coder, dummy_decoder, atime_coder, atime_decoder, - gid_coder, gid_decoder, gname_coder, gname_decoder, linkpath_coder, - linkpath_decoder, ctime_coder, ctime_decoder, mtime_coder, - mtime_decoder, path_coder, path_decoder, size_coder, size_decoder, - uid_coder, uid_decoder, uname_coder, uname_decoder): - Use pointers to const when possible. - (xhdr_tab): Now const. - - * src/tar.c (fmttab): Avoid GCC warning by not eliding initializers. - (set_archive_format): Report an error if no format name matches, - instead of returning an undefined value. - - * src/xheader.c (struct xhdr_tab.decoder, dummy_decoder, - atime_decoder, gid_decoder, gname_decoder, linkpath_decoder, - ctime_decoder, mtime_decoder, path_decoder, size_decoder, - uid_decoder, uname_decoder): Remove unused keyword arg. - All uses changed. - - * src/tar.c (set_archive_format): Now static. - * src/xheader.c (xhdr_tab, format_uintmax): Now static. - - * src/xheader.c (dummy_coder, dummy_decoder, atime_coder, - atime_decoder, gid_coder, gid_decoder, gname_coder, gname_decoder, - linkpath_coder, linkpath_decoder, mtime_coder, mtime_decoder, - ctime_coder, ctime_decoder, path_coder, path_decoder, size_coder, - size_decoder, uid_coder, uid_decoder, uname_coder, uname_decoder): - Remove forward decls; no longer needed. - (xhdr_tab): Move to end, so that the forward decls aren't needed. - Add a forward declaration. - - Use 'bool' in new code, when appropriate. - * src/xheader.c (decode_record): Return bool, not int. - * src/common.h (read_header): Since it accepts bool, change - all callers to use false and true rather than 0 and 1. - - * src/xheader.c (decode_record): Fix misspelling in diagnostic - "extended headed" -> "extended header". - - GNU coding style fixes. - * src/xheader.c (decode_record, xheader_decode): - Do not use decls like "char *p, *q;". - - Minor style fixes. - (xheader_store): Avoid parentheses around object operand of sizeof. - -2003-09-03 Sergey Poznyakoff - - * src/create.c (start_header): Store long file names - in "path" keyword of an extended header if in POSIX - mode. - (finish_header): print header before calling write_extended(). - * src/list.c (list_archive): Always decode the header. This - is necessary so the extended header is processed and the correct - filename is printed no matter what the state of verbose_option. - * src/xheader.c (xhdr_tab): Reserved GNU keywords (commented out - for the time being). - -2003-09-01 Paul Eggert - - Update from gnulib, and correct fnmatch to fnmatch-gnu. - * bootstrap (gnulib_modules): Change fnmatch to fnmatch-gnu. - Sort. - * configure.ac (gl_USE_SYSTEM_EXTENSIONS): Use this instead - of AC_GNU_SOURCE. - * lib/.cvsignore: Add alloca.h, stdbool.h. Sort. Append newline. - * lib/Makefile.am (lib_OBJECTS): New macro, for convenience when - copying rules from gnulib module descriptions. - (BUILT_SOURCES, EXTRA_DIST, all-local, alloca.h): - Update from gnulib modules alloca, fnmatch, getline, stdbool. - * m4/.cvsignore: Add utimes-null.m4. Sort. - -2003-09-01 Sergey Poznyakoff - - Added initial support for creating POSIX headers. - - * src/common.h (MAXOCTAL11,MAXOCTAL7): New defines - (string_to_chars): New functions - (struct xheader): Changed structure - (gid_to_gname,gname_to_gid,uid_to_uname,uname_to_uid): Changed - prototypes. - * src/create.c (string_to_chars): New function. - (write_extended): New function - (start_header): Create extended POSIX headers if necessary. - (finish_header): Likewise. - * src/list.c (print_header): Take user/group from - current_stat_info. - * src/names.c (gid_to_gname,gname_to_gid) - (uid_to_uname,uname_to_uid): Changed prototypes. - * src/tar.c: New option --format. - * src/tar.h (OLDGNU_COMPATIBILITY): Removed - (struct extra_header): Removed unused structure. - (union block.extra_header): Removed unused member. - * src/xheader.c: Implemented coder functions. - * bootstrap: Added obstack. - * lib/.cvsignore: Likewise. - * configure.ac: Added 'gl_OBSTACK' - * m4/Makefile.am: Added new files. - * m4/.cvsignore: Likewise. - * TODO: Minor formatting change - -2003-08-31 Sergey Poznyakoff - - Added initial support for POSIX extended and STAR headers - (only for listing/extracting). - - * src/xheader.c: New file. - * src/Makefile.am: Added xheader.c - * src/tar.h (struct star_header): New datatype - (XHDTYPE,XGLTYPE): New defines - (enum archive_format:STAR_FORMAT): New member - (struct tar_stat_info): New datatype. - (union block.star_header): New member. - * src/common.h (orig_file_name,current_file_name) - (current_trailing_slash,current_link_name): Removed variables. - (current_stat_info): New variable - (current_stat): Removed - (extended_header): New variable - (decode_header): Changed prototype. - * src/list.c (decode_header): Added initial support for POSIX extended - and STAR headers. - (skip_member): Check oldgnu_header only if current_format is set - to OLDGNU_FORMAT. - * src/buffer.c: Use current_stat_info - * src/compare.c: Likewise. - * src/create.c: Likewise. - * src/delete.c: Likewise. - * src/incremen.c: Likewise. - * src/mangle.c: Likewise. - * src/update.c: Likewise. - * src/extract.c: Likewise. - (make_directories): Improved check for the existence of the directory - * src/tar.c (destroy_stat): New function. - -2003-08-29 Paul Eggert - - * NEWS, bootstrap: Drop en_GB locale; it was more trouble than it - was worth (e.g., different users in en_GB disagree about -ize - versus -ise). - * po/en_GB.po: Remove. - -2003-07-28 Sergey Poznyakoff - - * TODO: Updated - * NEWS: Updated - * src/tar.c: Removed support for the obsolete command line - options. - * doc/tar.texi: Removed references to the obsolete command - line options. - -2003-07-27 Sergey Poznyakoff - - * TODO: Updated - * NEWS: Updated - * doc/tar.texi: Updated - * src/common.h (check_links_option): New variable - (orig_file_name): New variable - (check_links): New proto. - * src/create.c (struct link.nlink): New member - (link_table): Static for the module. - (dump_file): Update `link' member when adding new links - to the link_table. - (check_links): New function. - * src/list.c (print_header): Use orig_file_name. - * src/tar.c: New option --check-links. Changed semantics of - -o to comply to UNIX98 when extracting and to its previous - semantics otherwise. - (main): Call check_links if --check-links. was given. - -2003-07-25 Sergey Poznyakoff - - * src/list.c (print_header): Revised - * NEWS: Started the entry for 1.13.26 - * doc/Makefile.am (tar.dvi): Fixed TEXINPUTS value. - -2003-07-24 Sergey Poznyakoff - - * .cvsignore: Added to the repository. - * doc/.cvsignore: Likewise. - * lib/.cvsignore: Likewise. - * m4/.cvsignore: Likewise. - * po/.cvsignore: Likewise. - * scripts/.cvsignore: Likewise. - * src/.cvsignore: Likewise. - * tests/.cvsignore: Likewise. - - * lib/Makefile.am: Added exitfail.[hc] - * src/misc.c (chdir_do): Fixed call to restore_cwd - * src/buffer.c (flush_read): Fixed behavior on short - reads right after opening the new archive (multiv01.sh test). - (new_volume): Special handling for "-". - * src/list.c (print_header): Print trailing slash if - current_trailing_slash was set (extrac03.sh,extrac04.sh tests). - * tests/multiv01.sh: Minor changes. - * m4/Makefile.am: Added missing files. - -2003-07-05 Paul Eggert - - Finish the checkin begin yesterday. - - * NEWS: Document the user-visible changes installed in the last - two days. - - * TODO: New file (actually, resurrected; but with new contents). - - * src/list.c (read_and): Give full type for procedure arg. - (read_header): Strip trailing slashes, setting current_trailing_slash. - (tartime): Avoid int overflow when printing year (!). - (print_header): New arg specifying block ordinal. All uses changed. - Print link as 'h' type. Give labels for long links and names. - - * src/misc.c (contains_dot_dot): Moved to names.c - (must_be_dot_or_slash): New function. - (safer_rmdir): Use it. - (remove_any_file): Now takes enum as option, not boolean. - Check for (Linux) EISDIR as well as (POSIX) EPERM when attempting - to unlink a directory. - (deref_stat): Accept bool, not int. - - * src/names.c (namelist_match): Allow partial matches only if - recursive. - (hash_string_hasher): Renamed from hash_avoided_name. - (hash_string_compare): Renamed from compare_avoided_anames. - (hash_string_insert, hash_string_lookup): New functions. - (add_avoided_name, is_avoided_name): Use them. - (safer_name_suffix): New function. - (contains_dot_dot): Moved here from misc.c. Now returns bool, not int. - - * src/rmt.c: Don't include print-copyr.h. - (prepare_input_buffer): New arg FD. - Do not read more than INT_MAX bytes at once, - since it breaks on some brain damaged Tru64 hosts. - Divide size by two - when retrying instead of subtracting 1024; for speed. - (main): Use gettext to translate (C), not print_copyright. - - * src/system.h: Include and unconditionally, - now that gnulib handles this. - Include and unconditionally, now that we assume - C89 or better. - Assume that offsetof is defined in stddef.h. - Do not include . - (realloc, lseek): Do not declare. - (HAVE_DECL_VALLOC): Renamed from HAVE_VALLOC. - (CHAR_BIT, CHAR_MAX, UCHAR_MAX, LONG_MAX): Remove - declarations, since we now assume C89 or better. - (PARAMS): Remove, as we now assume C89. All uses changed. - (bindtextdomain, textdomain): Include to define. - Include . - (valloc): Define if not defined, and if valloc is not declared. - (xstrdup): Remove decl. - - * src/tar.c: Do not include . - Include . - (get_date): Remove decl. - (ATIME_PRESERVE_OPTION, CHECKPOINT_OPTION, FORCE_LOCAL_OPTION, - IGNORE_FAILED_READ_OPTION, INDEX_FILE_OPTION, NO_OVERWRITE_DIR_OPTION, - NUMERIC_OWNER_OPTION, RECURSIVE_UNLINK_OPTION, REMOVE_FILES_OPTION, - SHOW_OMITTED_DIRS_OPTION, TOTALS_OPTION): New constants. - (long_options, decode_options): Use them. - (OVERWRITE_DIR_OPTION): Remove. - (long_options): New options --index-file, --no-overwrite-dir. - Remove --overwrite-dir option. - (usage): Use PACKAGE_BUGREPORT. - (decode_options): Terminate new argv properly. - Use PACKAGE_NAME, PACKAGE_VERSION. - If verbose, report how we grokked any textual date option. - (main): Add support for index-file. - - * tests/Makefile.am: Convert to UTF-8. - (AUTOMAKE_OPTIONS): Remove. - (TESTS): Add delete04.sh, multiv01.sh, options.sh. - (INCLUDES): Remove ../intl. - (LDADD): Don't link libtar.a twice. - - * tests/genfile.c: Convert to UTF-8. - Don't include . - (DEFAULT_PATTERN): Renamed from DEFAULT. - (ZEROS_PATTERN): Renamed from ZEROS. - (main): Use gettext to translate (C), not print_copyright. - -2003-07-04 Paul Eggert - - Revamp to meet current standards of autoconf, automake, - gettext, and gnulib, and incorporate new translations. - - * config/config.guess, config/config.sub, config/depcomp, - config/install-sh, config/mdate-sh, config/missing, - config/mkinstalldirs, config/texinfo.texi: - Moved here from parent directory, or from doc. - * config.hin: Renamed from config.h.in. - * config/config.rpath: New file. - - * intl: Remove this subdirectory. - - * lib/fnmatch_.h: Renamed from lib/fnmatch.hin. - - * lib/getstr.c, lib/getstr.h, lib/msleep.c, lib/print-copyr.c, - lib/print-copyr.h, lib/readutmp.c, lib/rename.c, lib/stpcpy.c, - lib/strstr.c, lib/strtoimax.c, lib/strtoll.c, lib/strtoull.c, - lib/strtoumax.c, lib/unicodeio.c, lib/unicodeio.h, - lib/xstrtoimax.c, m4/c-bs-a.m4, m4/ccstdc.m4, m4/check-decl.m4, - m4/decl.m4, m4/jm-mktime.m4, m4/prereq.m4, m4/xstrtoimax.m4, - stamp-h.in: Remove. - - * lib/alloca_.h, lib/fnmatch_loop.c, lib/gettext.h, lib/pathmax.h, - lib/safe-write.c, lib/safe-write.h, lib/stdbool_.h, lib/strcase.h, - lib/stripslash.c, lib/unlocked-io.h, lib/xgetcwd.h, m4/alloca.m4, - m4/backupfile.m4, m4/bison.m4, m4/chown.m4, m4/dirname.m4, - m4/dos.m4, m4/exclude.m4, m4/fileblocks.m4, m4/ftruncate.m4, - m4/getdate.m4, m4/getopt.m4, m4/hash.m4, m4/human.m4, - m4/intdiv0.m4, m4/intmax_t.m4, m4/inttypes-pri.m4, - m4/inttypes_h.m4, m4/isc-posix.m4, m4/lchown.m4, m4/lib-ld.m4, - m4/lib-link.m4, m4/lib-prefix.m4, m4/memset.m4, m4/mktime.m4, - m4/modechange.m4, m4/nls.m4, m4/onceonly.m4, m4/pathmax.m4, - m4/po.m4, m4/quote.m4, m4/quotearg.m4, m4/rmdir.m4, - m4/safe-read.m4, m4/safe-write.m4, m4/save-cwd.m4, m4/savedir.m4, - m4/ssize_t.m4, m4/stdbool.m4, m4/stdint_h.m4, m4/strcase.m4, - m4/strtoimax.m4, m4/strtol.m4, m4/strtoll.m4, m4/strtoul.m4, - m4/strtoull.m4, m4/strtoumax.m4, m4/tm_gmtoff.m4, m4/uintmax_t.m4, - m4/unlocked-io.m4, m4/xalloc.m4, m4/xgetcwd.m4, m4/xstrtol.m4, - po/LINGUAS, po/Makevars, po/Rules-quot, po/boldquot.sed, - po/en@boldquot.header, po/en@quot.header, po/en_GB.po, - po/insert-header.sin, po/remove-potcdate.sin, po/stamp-po: New files. - - * ABOUT-NLS, INSTALL, lib/addext.c, lib/alloca.c, lib/argmatch.c, - lib/argmatch.h, lib/backupfile.c, lib/backupfile.h, lib/dirname.c, - lib/dirname.h, lib/error.c, lib/exclude.c, lib/exclude.h, - lib/fnmatch.h, lib/full-write.c, lib/full-write.h, lib/getdate.h, - lib/getdate.y, lib/getline.c, lib/getline.h, lib/getopt.c, - lib/getopt.h, lib/getopt1.c, lib/hash.c, lib/hash.h, lib/human.c, - lib/human.h, lib/lchown.c, lib/malloc.c, lib/mktime.c, - lib/modechange.c, lib/modechange.h, lib/quote.c, lib/quote.h, - lib/quotearg.c, lib/quotearg.h, lib/realloc.c, lib/safe-read.c, - lib/safe-read.h, lib/save-cwd.c, lib/save-cwd.h, lib/savedir.c, - lib/savedir.h, lib/strcasecmp.c, lib/utime.c, lib/xalloc.h, - lib/xgetcwd.c, lib/xmalloc.c, lib/xstrdup.c, lib/xstrtol.c, - lib/xstrtol.h, lib/xstrtoumax.c, m4/codeset.m4, m4/d-ino.m4, - m4/error.m4, m4/fnmatch.m4, m4/getcwd.m4, m4/getline.m4, m4/gettext.m4, - m4/glibc21.m4, m4/iconv.m4, m4/inttypes.m4, m4/lcmessage.m4, - m4/longlong.m4, m4/malloc.m4, m4/mbrtowc.m4, m4/mbstate_t.m4, - m4/progtest.m4, m4/realloc.m4, m4/strerror_r.m4, m4/ulonglong.m4, - m4/utimbuf.m4, m4/utime.m4, m4/utimes.m4, m4/xstrtoumax.m4, - po/Makefile.in.in: - Upgrade to latest version from external source. The file "bootstrap" - now grabs these automatically, so we needn't keep track of them - in this change long any longer. - - * Makefile.am (AUTOMAKE_OPTIONS): Remove. Now done by configure.ac. - (SUBDIRS): Remove intl. - * PORTS: Update for star, Macintosh. - * README, README-alpha: Suggest Autoconf 2.57, Automake 1.7.5, - Bison 1.875, gettext 0.12.1. - * THANKS: Add Bernhard Rosenkraenzer, Solar Designer. - * configure.ac (AC_INIT, AM_INIT_AUTOMAKE): Convert to modern form. - (AC_CONFIG_AUX_DIR): New. - (AC_CONFIG_HEADERS): Rename config.h.in to config.hin, to be more - like coreutils. - (AC_PREREQ): Bump from 2.52 to 2.57. - (AC_GNU_SOURCE): New. - (AC_PROG_GCC_TRADITIONAL, AM_C_PROTOTYPES, AC_C_CONST): Remove; - we no longer support K&R C. - (YACC): Remove. - (AC_CHECK_HEADERS): Remove limits.h, poll.h, stdbool.h, stropts.h, - sys/ioccom.h, sys/param.h, sys/time.h, sys/timeb.h, wchar.h, wctype.h. - (AC_MBSTATE_T): Remove. - (HAVE_UTIME_H, HAVE_DECL_FREE, HAVE_DECL_GETGRGID, HAVE_DECL_GETPWUID, - HAVE_DECL_GETENV, HAVE_DECL_MALLOC, HAVE_DECL_STRTOUL, - HAVE_DECL_STRTOULL, HAVE_MKNOD): Remove our special code. - (AM_STDBOOL_H): Add. - (AC_HEADER_TIME, AC_STRUCT_TIMEZONE, - jm_CHECK_TYPE_STRUCT_DIRENT_D_INO): Remove. - (AC_CHECK_TYPE): Remove ssize_t. - (gt_TYPE_SSIZE_T): Add. - (jm_AC_PREREQ_XSTRTOUMAX, jm_PREREQ_ADDEXT, jm_PREREQ_ERROR, - jm_PREREQ_HUMAN, jm_PREREQ_QUOTEARG, jm_PREREQ_XGETCWD, - AC_FUNC_ALLOCA, AC_FUNC_CLOSEDIR_VOID, AC_FUNC_STRERROR_R, - AC_FUNC_FNMATCH, AC_FUNC_VPRINTF, AM_FUNC_GETLINE, jm_FUNC_MALLOC, - jm_FUNC_MKTIME, jm_FUNC_REALLOC): - Remove. Switch to gnulib macros like gl_BACKUPFILE instead. - (tar_LDADD): Rename to LIB_CLOCK_GETTIME. All uses changed. - (rmt_LDADD): Rename to LIB_SETSOCKOPT. All uses changed. - (AC_CHECK_FUNCS): Remove fchdir, ftime, getcwd, isascii, nap, - napms, poll, select, strstr, usleep. - (AC_REPLACE_FUNCS): Remove ftruncate, lchown, memset, rename, - rmdir, strcasecmp, strncasecmp, strtol, strtoul. - (AM_GNU_GETTEXT): Use external and need-ngettext options. - (AM_GNU_GETTEXT_VERSION): New. - (AC_OUTPUT): Remove intl/Makefile. - - * doc/Makefile.am (AUTOMAKE_OPTIONS): Remove. - ($(srcdir)/tar.info, tar.dvi): Remove obsolete warnings. - * doc/fdl.texi: Update to current GNU version. - * doc/gettext.texi: Update to current coreutils version, - plus a copyright notice. - * doc/tar.texi: Switch to new method for doing copyright notices. - Use @acronym instead of @sc where appropriate. - Remove empty examples. Give a few more examples. - - * lib/Makefile.am (AUTOMAKE_OPTIONS): Remove. - (EXTRA_DIST, libtar_a_SOURCES): Switch to gnulib, so that they - are built up in pieces with +=. - (noinst_HEADERS, INCLUDES): Remove. - (BUILT_SOURCES, MAINTAINERCLEANFILES, MOSTLYCLEANFILES): New. - (libtar_a_LIBADD): Use $ rather than @. - (all-local, alloca.h, fnmatch.h, stdbool.h): New rules, from gnulib. - - * m4/Makefile.am (EXTRA_DIST): Add alloca.m4, backupfile.m4, - bison.m4, chown.m4, dirname.m4, dos.m4, exclude.m4, fileblocks.m4, - ftruncate.m4, getdate.m4, getopt.m4, hash.m4, human.m4, - intdiv0.m4, intmax_t.m4, inttypes_h.m4, inttypes-pri.m4, - isc-posix.m4, lcown.m4, lib-ld.m4, lib-link.m4, lib-prefix.m4, - memset.m4, mktime.m4, modechange.m4, nls.m4, onceonly.m4, - pathmax.m4, po.m4, quotearg.m4, quote.m4, rmdir.m4, safe-read.m4, - safe-write.m4, save-cwd.m4, savedir.m4, ssize_t.m4, stdbool.m4, - stdint_h.m4, strcase.m4, strtoimax.m4, strtoll.m4, strtol.m4, - strtoull.m4, strtoul.m4, strtoumax.m4, tm_gmtoff.m4, uintmax_t.m4, - unlocked-io.m4, xalloc.m4, xgetcwd.m4, xstrtol.m4. - Remove c-bs-a.m4, ccstdc.m4, check-decl.m4, decl.m4, jm-mktime.m4, - prereq.m4, xstrtoimax.m4. - - * po/POTFILES.in: Remove tests/genfile.c; it doesn't need to - be translated, since it's not a user-visible tool. - - * scripts/Makefile.am (AUTOMAKE_OPTIONS): Remove. - - * src/Makefile.am (AUTOMAKE_OPTIONS): Remove. - (INCLUDES): Remove ../intl. Put top-srcdir before ., for - consistency with coreutils. - (LDADD): Link LIBINTL after libtar.a, since - it's now external and should stand by itself. - - * src/buffer.c (print_total_written): Adjust to new human.h - interface. - (child_open_for_compress): Do not increase size to BLOCKSIZE. - (open_archive): Open index file name. - Strip trailing slahes from file names. - (flush_write): Set size to 0 if not saving names. - (flush_write, flush_read): Use safer_name_suffix rather than - inline code. - - * src/common.h: Include . - (absolute_names_option, atime_preserve_option, backup_option, - block_number_option, checkpoint_option, dereference_option, - force_local_option, ignore_failed_read_option, ignore_zeros_option, - incremental_option, interactive_option, multi_volume_option, - numeric_owner_option, one_file_system_option, recursive_unlink_option, - read_full_records_option, remove_files_option, same_order_option, - show_omitted_dirs_option, sparse_option, starting_file_option, - to_stdout_option, totals_option, touch_option, verify_option, - dev_null_output, now_verifying, we_are_root): Now bool, not int. - (current_trailing_slash, index_file_name, recent_long_name_blocks, - recent_long_link_blocks): New vars. - (NO_OVERWRITE_DIR_OLD_FILES): New constant. - (OVERWRITE_OLD_DIRS): Remove. - (enum remove_option): New enum. - (remove_any_file): Use it as option arg, not int. - (is_avoided_name, contains_dot_dot): Return bool, not int. - (safer_name_suffix): New decl. - - * src/compare.c (now_verifying): Now bool, not int. - (fill_in_sparse_array): Move to extract.c. Now returns bool; - all callers changed to test for failure. - (diff_sparse_files): Take size from current_stat, not from param. - (diff_archive): Do not count trailing slashes in archives. - (verify_volume): Test for header failure after loop, not before. - - * src/create.c (relativize): Remove; replaced by safer_name_suffix. - All callers changed. - (start_header): Clear devmajor and devminor fields, too. - (finish_header): New arg block_ordinal. - (init_sparsearray): Now extern. Set sp_array_size to - SPARSES_IN_OLDGNU_HEADER if it is zero. - (dump_file): Keep link table as a hash. - Do not count "file changed as we read it" as a failure. - - * src/delete.c (recent_long_name_blocks, recent_long_link_blocks): - Move extern decl to common.h. - - * src/extract.c (we_are_root): Now bool, not int. - (check_time): Warn about implausibly old time stamps. - (set_stat): Use utimbuf, not stat_info. - (prepare_to_extract): New arg DIRECTORY. - (fill_in_sparse_array): Moved here from compare.c. - (extract_sparse_file): Now returns off_t, giving size left. - Truncate file at end. - (extract_archive): Use safer_name_suffix rather than rolling our own. - Use fill_in_sparse_array rather than rolling our own. - Strip trailing slashes more effectively. - Check for unsafe names. - - * src/incremen.c (struct directory): nfs and found are now of type - bool, not int. - (gnu_restore): Now takes directory name as argument, not offset - of directory name in a global. All uses changed. - (CURRENT_FILE_NAME): Remove. - - New tests. - * tests/delete04.sh, tests/multiv01.sh, tests/options.sh: New - files. - -2002-09-30 Paul Eggert - - * src/rmt.c (prepare_input_buffer): Renamed form - prepare_record_buffer. All uses changed. Do not assume that - size_t is the same width as int. - -2002-03-29 Paul Eggert - - * src/incremen.c (get_directory_contents): - If ignore_failed_read_option, only warn about - get_directory_contents failures. Fix suggested by - Mark Costlow. - -2002-01-31 Mark W. Eichin - - * src/buffer.c (child_open_for_compress): Don't try to read - past the end of the buffer. - -2001-10-11 Jim Meyering - - * argmatch.c (argmatch_invalid): Use quotearg_n_style (0, ... - and quote_n (1, ... to avoid clobbering a buffer. - -2001-09-26 Paul Eggert - - * NEWS, configure.ac (AM_INIT_AUTOMAKE): Version 1.13.25. - - * src/buffer.c (flush_read): Don't diagnose partial blocks before - end of file; just ignore them silently. - - * src/list.c (read_header): Don't keep around extended name - and link info indefinitely; keep it only for the next file. - This fixes a bug introduced in 1.13.24, and removes the need - for some static variables. Set recent_long_name and - recent_long_link to zero if there were no long links; this - avoids a violation of ANSI C rules for pointers in delete.c. - * THANKS: Add Christian Laubscher. - -2001-09-26 Jim Meyering - - * doc/tar.texi (Remote Tape Server): is know -> is known - -2001-09-25 Paul Eggert - - * lib/unicodeio.c (EILSEQ): Include first, since - may define EILSEQ (e.g. libiconv). Define a - replacement EILSEQ to be ENOENT, not EINVAL, since callers may - want to distinguish EINVAL and EILSEQ. - -2001-09-24 Christophe Kalt - - * src/extract.c (maybe_recoverable): - Treat OVERWRITE_OLD_DIRS like DEFAULT_OLD_FILES. - -2001-09-22 Paul Eggert - - * NEWS, configure.ac (AM_INIT_AUTOMAKE): Version 1.13.24. - - * ABOUT-NLS, intl/*: Update to gettext-0.10.40, replacing LGPL - with GPL. - - * INSTALL, mkinstalldirs: Update to autoconf 2.52 version. - * PORTS: Add copyright notice, 'star' reference. - * README-alpha: Add copyright notice, autoconf 2.52 patch. - * THANKS: Add Christophe Kalt. - * config.sub: Upgrade to 2001-09-14 version. - - * configure.ac (ALL_LINGUAS): Add ko. - * po/ko.po: Resurrected file. - - * doc/convtexi.pl: Add coding advice for Emacs. - - * doc/getdate.texi: Add copyright notice. - - * doc/mdate-sh: Upgrade to automake 1.5 version. - - * doc/tar.texi (extracting files): Mention --to-stdout. - (Option Summary, Dealing with Old Files): New option --overwrite-dir. - (Overwrite Old Files): Likewise. - - * lib/Makefile.am (noinst_HEADERS): - Remove copysym.h. Add print-copyr.h, unicodeio.h. - (libtar_a_SOURCES): Remove copysym.c, Add print-copyr.c, unicodeio.c. - - * lib/copysym.c, lib/copysym.h: Remove. - * lib/print-copyr.c, lib/print-copyr.h, lib/unicodeio.c, - lib/unicodeio.h: New files. - - * lib/error.c, lib/getopt.c, lib/getopt.h, lib/getopt1.c, - lib/mktime.c, lib/strtoll.c: Switch from LGPL to GPL. - - * lib/quotearg.c (HAVE_MBSINIT): Undef if !HAVE_MBRTOWC. - (mbsinit): Define to 1 if !defined mbsinit && !HAVE_MBSINIT. - - * m4/Makefile.am (EXTRA_DIST): Remove isc-posix.m4. - * m4/isc-posix.m4: Remove. - - * m4/prereq.m4 (jm_PREREQ_QUOTEARG): Check for mbsinit. - - * po/POTFILES.in: Add copyright notice. - - * src/Makefile.am (LDADD): Like libtar.a before @INTLLIBS@ as - well as after. - * tests/Makefile.am (LDADD): Likewise. - - * src/buffer.c (write_archive_buffer, close_archive): - If an archive is a socket, treat it like a FIFO. - (records_read, records_written): New vars. - (write_archive_to_stdout): Now bool, not int. - (open_archive, flush_write, flush_read): Keep records_read and - records_written up to date. - - * src/common.h (enum old_files): New value OVERWRITE_OLD_DIRS. - (write_archive_to_stdout): Now bool, not int. - (enum read_header): New value HEADER_SUCCESS_EXTENDED. - (read_header): Now takes bool arg. Existing callers modified - to pass 0, unless otherwise specified. - - * src/delete.c (records_read): Remove; now a global. - (acting_as_filter): Now bool, not int. - (recent_long_name, recent_long_link, recent_long_name_blocks, - recent_long_link_blocks, records_read, records_written): New decls. - (records_skipped): New var. - (move_archive): Don't divide by zero if arg is 0. - Use the above vars to compute how far to move. - (write_recent_blocks): New function. - (delete_archive_member): Pass 1 to read_header, so that it doesn't - read more than 1 block. Handle resulting HEADER_SUCCESS_EXTENDED code. - Keep track of how many records have been skipped. - Let the buffer code count records. - When copying a header, copy any extended headers that came before it. - - * src/extract.c (extract_archive): When marking a directory to be - updated after symlinks, stat all directories after it in the - delayed-set-stat list too, since they will be checked after - symlinks. Add support for --overwrite-dir. - - * src/list.c (recent_long_name, recent_long_link, - recent_long_name_blocks, recent_long_link_blocks): New vars. - (read_and): Pass 0 to read_header. - (read_header): New arg RAW_EXTENDED_HEADERS. Store away extended - headers into new vars. Null-terminate incoming symbolic links. - - * src/rmt.c: Include print-copyr.h, not copysym.h. - (main): Use print_copyright, not copyright_symbol. - * src/tar.c (decode_options): Likewise. - (OVERWRITE_DIR_OPTION): New constant. - (long_options, usage, decode_options): Add --overwrite-dir. - - * src/tar.h: Put copyright notice into documentation. - - * tests/Makefile.am (TESTS): Add delete03.sh. - * tests/delete03.sh: New file. - - * tests/genfile.c: Include print-copyr.h, not copysym.h. - (main): Use print_copyright, not copyright_symbol. - Include . - (pattern_strings): Remove. - (pattern_args, pattern_types): New constants. - (main): Use XARGMATCH, not argmatch. - -2001-09-20 Jim Meyering - - * lib/xstrtol.c (strtoimax): Guard declaration with - `#if !HAVE_DECL_STRTOIMAX', rather than just `#ifndef strtoimax'. - The latter fails because some systems (at least rs6000-ibm-aix4.3.3.0) - have their own, conflicting declaration of strtoimax in sys/inttypes.h. - (strtoumax): Likewise, for completeness (it wasn't necessary). - * m4/xstrtoimax.m4 (jm_AC_PREREQ_XSTRTOIMAX): - Check for declaration of strtoimax. - * m4/xstrtoumax.m4 (jm_AC_PREREQ_XSTRTOUMAX): - Check for declaration of strtoumax. - -2001-09-16 Paul Eggert - - * fnmatch.m4 (jm_FUNC_FNMATCH): Fix typo in previous patch: yes -> no. - -2001-09-14 Paul Eggert - - * NEWS, configure.ac (AC_INIT_AUTOMAKE): Version 1.13.23. - - * README-alpha: Describe automake patch. - - * configure.ac (LIBOBJS): - Remove automake 1.4 workaround, as we're using 1.5 now. - (USE_INCLUDED_LIBINTL): New AC_DEFINE. - - * lib/copysym.c: Include stddef.h, for size_t. - Include langinfo.h if needed. - Use locale_charset only if USE_INCLUDED_LIBINTL; - if not, use nl_langinfo (CODESET) if available. - -2001-09-13 Paul Eggert - - * config.guess, config.sub: Sync with canonical versions. - - * configure.ac (jm_PREREQ_XGETCWD): Add. - - * lib/Makefile.am (noinst_HEADERS): Add copysym.h. - (libtar_a_SOURCES): Add copysym.c. - * copysym.c, copysym.h: New files. - - * lib/error.c: Sync with fileutils version. - - * m4/Makefile.am (EXTRA_DIST): Add getcwd.m4; remove uintmax_t.m4. - * m4/getcwd.m4: New file. - * m4/uintmax_t.m4: Remove. - - * m4/gettext.m4 (AM_WITH_NLS): - Fix bug with calculating version of Bison 1.29. - Reported by Karl Berry. - - * src/Makefile.am (datadir): Remove. - - * src/rmt.c: Include copysym.h. - (main): Use copyright_symbol to translate copyright notice, - instead of gettext. - * src/tar.c: Likewise. - * tests/genfile.c: Likewise. - - * src/system.h (MB_LEN_MAX): New symbol. - -2001-09-11 Paul Eggert - - * src/extract.c (struct delayed_set_stat): New member - 'after_symlinks'. - (delay_set_stat): Initialize it to 0. - (set_mode): New arg current_stat_info. Use it (if nonnull) to avoid - taking an extra stat ourselves. All callers changed. - (set_stat): Likewise. - (apply_nonancestor_delayed_set_stat): New arg 'after_symlinks'. - If false, stop when encountering a struct whose 'after_symlinks' - member is true. Otherwise, go through all structures but check - them more carefully. All callers changed. - (extract_archive): When extracting a deferred symlink, if its parent - directory's status needs fixing, then mark the directory as needing - to be fixed after symlinks. - (extract_finish): Fix status of ordinary directories, then apply - delayed symlinks, then fix the status of directories that are - ancestors of delayed symlinks. - - * src/rtapelib.c (rexec): - Remove declaration; it ran afoul of prototypes on Crays. - Reported by Wendy Palm of Cray. - -2001-09-06 Paul Eggert - - * lib/strtoimax.c (HAVE_LONG_LONG): - Redefine to HAVE_UNSIGNED_LONG_LONG if unsigned. - (strtoimax): Use sizeof (long), not - sizeof strtol (ptr, endptr, base), - to work around bug in IBM C compiler. - -2001-09-04 Paul Eggert - - * lib/xgetcwd.c: Include "xalloc.h". - (xgetcwd): Do not return NULL when memory is exhausted; instead, - report an error and exit. - - * m4/prereq.m4 (jm_PREREQ_XREADLINK): New macro. - (jm_PREREQ): Use it. - -2001-09-03 Paul Eggert - - * m4/prereq.m4 (jm_PREREQ): Add jm_PREREQ_XGETCWD. - (jm_PREREQ_XGETCWD): New macro. - - * lib/exclude.c (fnmatch_no_wildcards): - Fix typo that caused us to do case-folding - search even when that was not desired. This occurred only in the - no-wildcard case. - - * lib/xgetcwd.c: Include pathmax.h if not HAVE_GETCWD. - Do not include xalloc.h. - (INITIAL_BUFFER_SIZE): New symbol. - Do not use xmalloc / xrealloc, since the caller is responsible for - handling errors. Preserve errno around `free' during failure. - Do not overrun buffer when using getwd. - - * lib/xgetcwd.c (xgetcwd): - Use HAVE_GETCWD_NULL, not defined __GLIBC__ && __GLIBC__ >= 2, - to decide whether to use getcwd (NULL, 0). - -2001-09-02 Paul Eggert - - * lib/xgetcwd.c: Fix typo in local var; from Jim Meyering. - -2001-09-01 Jim Meyering - - * exclude.c: Use `""', not `<>' to #include non-system header files. - (fnmatch_no_wildcards): Rewrite not to use function names, strcasecmp - and strncasecmp as r-values. Unixware didn't have declarations. - -2001-08-31 Jim Meyering - - * lib/xgetcwd.c (xgetcwd): Reorganize to avoid some duplication. - Use an initial, malloc'd, buffer of length 128 rather than - a statically allocated one of length 1024. - -2001-08-30 Paul Eggert - - * lib/utime.c: Include full-write.h. - * lib/xstrtol.c (strtoimax): New decl. - -2001-08-29 Paul Eggert - - * NEWS, configure.ac (AC_INIT_AUTOMAKE): Version 1.13.22. - - * src/create.c (dump_file): Relativize link names before dumping. - This fixes a bug reported by Jose Pedro Oliveira. - - * src/create.c (dump_file): Use offsetof when computing sizes for - struct hack; this avoids wasted space in some cases. - * src/incremen.c (note_directory, find_directory): Likewise. - * src/names.c (name_gather, addname): Likewise. - - * src/extract.c (extract_archive): Use strcpy, not memcpy, - for consistency with other code that does similar things. - * src/names.c (name_gather): Likewise. - - * src/names.c (read_name_from_file, name_next, name_gather, - add_hierarchy_to_namelist): Avoid quadratic behavior when - reallocating buffers. Check for buffer size overflow. - (addname): Avoid unnecessary clearing of memory. - -2001-08-29 "Jan D." - - * src/extract.c (delay_set_stat): Fix off-by-one error in file - name size allocation that caused core dumps. - -2001-08-28 Paul Eggert - - * NEWS, configure.ac (AC_INIT_AUTOMAKE): Version 1.13.21. - - * configure.ac (GNU_SOURCE): Define to 1, not /**/. - (major_t, minor_t, ssize_t): Use new-style AC_CHECK_TYPE. - (daddr_t): Remove; no longer used. - (jm_PREREQ_HUMAN): Add. - - * acconfig.h: Remove; no longer needed. - - * config.guess, config.sub: - New files, from automake 1.5. Gettext 0.10.39 needs them. - * depcomp, missing, mkinstalldirs: Upgrade to automake 1.5. - - * Makefile.am (AUTOMAKE_OPTIONS): Add dist-bzip2. - (SUBDIRS): Put intl before lib, as gettext requires. - - * ABOUT-NLS: Upgrade to gettext 0.10.39. - * intl: Upgrade entire directory to gettext 0.10.39. - * m4/codeset.m4, m4/glibc21.m4, m4/iconv.m4: - New files, from gettext 0.10.39. - * m4/gettext.m4, m4/isc-posix.m4, m4/lcmessage.m4, m4/progtest.m4, - Upgrade to gettext 0.10.39, - * po/Makefile.in.in: Likewise, except fix a typo in its copying - permissions. - * po/cat-id-tbl.c, po/stamp-cat-id: - Remove; no longer used by gettext 0.10.39. - * po/ChangeLog: New file. - - * doc/Makefile.am (EXTRA_DIST): Add freemanuals.texi. - $(srcdir)/tar.texi: Likewise. - * doc/freemanuals.texi: New file. - * doc/tar.texi (Free Software Needs Free Documentation): New appendix. - `fileds' -> `fields' - * doc/texinfo.tex: Upgrade to version 2001-07-25.07. - - * lib/Makefile.am (EXTRA_DIST): Add strtoll.c, strtoimax.c. - (noinst_HEADERS): Add quote.h. - (libtar_a_SOURCES): Add quote.c, xstrtoimax.c. - - * lib/exclude.c: Fix typo in '#include ' directive. - - * lib/full-write.c, lib/savedir.c: Comment fix. - - * lib/pathmax.h: Remove. - - * lib/quote.c, lib/quote.h: New files. - - * lib/xgetcwd.c: Don't include pathmax.h. - Include stdlib.h and unistd.h if available. - Include xalloc.h. - (xmalloc, xstrdup, free): Remove decls. - (xgetcwd): Don't assume sizes fit in unsigned. - Check for overflow when computing sizes. - Simplify reallocation code. - - * lib/xmalloc.c: Quote failure tests. - - * lib/strtoumax.c, lib/xstrtoimax.c: New files. - - * lib/strtoimax.c: Renamed from strtouxmax.c. Make it more - similar to strtol.c. - (UNSIGNED): Renamed from STRTOUXMAX_UNSIGNED. - (verify): New macro. - (strtoumax, uintmax_t, strtoull, strtol): Remove. - (intmax_t, strtoimax, strtol, strtoll): New macros, if UNSIGNED. - (strtoimax): Renamed from strtoumax. All uses of unsigned values - changed to signed values. Check sizes at compile-time, not - run-time. Prefer strtol to strtoll if both work. - (main): Remove. - - * lib/xstrtol.h (xstrtoimax): New decl. - - * m4/Makefile.am (EXTRA_DIST): - Add codeset.m4, glibc21.m4, iconv.m4, inttypes.m4, - longlong.m4, xstrtoimax.m4. - - * m4/inttypes.m4 (jm_AC_HEADER_INTTYPES_H): - Remove; now done by autoconf. - (jm_AC_TYPE_INTMAX_T, jm_AC_TYPE_UINTMAX_T): Replace with - Use AC_CHECK_TYPE instead of merely looking for the header. - - * m4/uintmax_t.m4: Use shorter comment. - - * m4/xstrtoumax.m4 (jm_AC_PREREQ_XSTRTOUMAX): - Quote first arg of AC_DEFUN. - Require jm_AC_TYPE_INTMAX_T and jm_AC_TYPE_LONG_LONG since they - is needed to parse the include file. - Simplify logic behind the args to AC_REPLACE. - - * src/Makefile.am (OMIT_DEPENDENCIES): Remove. - - * src/ansi2knr.1, src/ansi2knr.c: Remove; wasn't being used. - - * src/rmt.c (main): - Use "Copyright %d" to simplify the translator's job in the future. - Advise translator about circle-C. - * src/tar.c: (decode_options): Likewise. - * tests/genfile.c (main): Likewise. - -2001-08-28 Jim Meyering - - * lib/argmatch.c: Include "quote.h". - (argmatch_invalid): Quote the context. - - * lib/dirname.c (dir_name): Fix typo on PC platforms. - - * lib/backupfile.c, lib/basename.c, lib/dirname.c, lib/strtoul.c: - Use single-quote for local .h files. - - * lib/error.h (__attribute__): Don't depend on __STRICT_ANSI__. - - * lib/getopt.c, lib/getopt.h, lib/getopt1.c: Upgrade to recent - glibc versions. - - * lib/getdate.y (get_date): Initialize tm_isdst to -1 before - invoking mktime the last time. - - * lib/pathmax.h: Use #if rather than #ifdef for HAVE_UNISTD_H. - - * lib/rename.c: Major rewrite by Volker Borchert to use system - rename function, but to work around problems with trailing - slashes. - - * lib/strtoll.c: New file, from glibc. - * lib/strtoul.c: Update from glibc. - - * lib/strtouxmax.c: Renamed from lib/strtoumax.c. - Add support for signed numbers, too. - (strtoul, strtoull): Do not declare if STRTOUXMAX_UNSIGNED - is not defined. - (strtol, strtoll): Declare as needed, if STRTOUXMAX_UNSIGNED is - not defined. - (strtoumax, uintmax_t, strtoull, strtoul): New macros. - (main): Use generic names in debugging output. - * lib/strtoimax.c: Plus add the following changes of my own: - (main): Use accurate names in debugging output. - - * lib/xgetcwd.c (xgetcwd): Use getcwd if glibc 2 or later. - Don't use PATH_MAX. - - * m4/c-bs-a.m4, m4/check-decl.m4, m4/d-ino.m4, m4/error.m4, - m4/getline.m4, m4/jm-mktime.m4, m4/malloc.m4, m4/mbrtowc.m4, - m4/mbstate_t.m4, m4/realloc.m4, m4/uintmax_t.m4, m4/utimbuf.m4, - m4/utime.m4, m4/utimes.m4: - Quote the first argument in each use of AC_DEFUN. - - * m4/getline.m4: Don't use string.h. - - * m4/inttypes.m4, m4/longlong.m4, m4/xstrtoimax.m4: New files. - - * m4/mbrtowc.m4 (jm_FUNC_MBRTOWC): @%:@ -> #. - -2001-08-27 Paul Eggert - - * NEWS, configure.ac (AC_INIT_AUTOMAKE): Version 1.13.20. - - The biggest change is the new --exclude semantics and options. - The basic idea was suggested by Gerhard Poul; thanks! - - * NEWS: Describe new --exclude semantics and options, and bug fixes. - * README: ignfail.sh fails on some NFS hosts. - * NEWS, README, lib/xstrtol.h: Add copyright notice. - - * Makefile.am (ACLOCAL_AMFLAGS): Add -I m4. - (M4DIR, ACINCLUDE_INPUTS, $(srcdir)/acinclude.m4): - Remove; the automake bug has been fixed. - * acinclude.m4: Remove. - - * configure.ac: Renamed from configure.in. - (AC_PREREQ): Bump from 2.13 to 2.52. - (ALL_LINGUAS): Add id, tr. Remove ko, as po/ko.po (dated - 1997-05-30) has an encoding error. - (jm_AC_HEADER_INTTYPES_H): Remove; now done by autoconf. - (AC_FUNC_FNMATCH): Use AC_CONFIG_LINKS, not AC_LINK_FILES. - - * doc/fdl.texi: Update to current GNU version. - - * doc/tar.texi: Put leading '*' in direntry. - Accommodate new gfdl sectioning. - New option --recursion (the default) that is the inverse of - --no-recursion. - - New options --anchored, --ignore-case, --wildcards, - --wildcards-match-slash, and their negations (e.g., --no-anchored). - Along with --recursion and --no-recursion, these control how exclude - patterns are interpreted. The default interpretation of exclude - patterns is now --no-anchored --no-ignore-case --recursion - --wildcards --wildcards-match-slash. - - * lib/Makefile.am (OMIT_DEPENDENCIES): Remove. - - * lib/exclude.c (bool): Declare, perhaps by including stdbool.h. - (): Include only if HAVE_SYS_TYPES_H. - (, , , , ): - Include if available. - (): Include - (SIZE_MAX): Define if or doesn't. - (verify): New macro. Use it to verify that EXCLUDE macros do not - collide with FNM macros. - (struct patopts): New struct. - (struct exclude): Use it, as exclude patterns now come with options. - (new_exclude): Support above changes. - (new_exclude, add_exclude_file): - Initial size must now be a power of two to simplify overflow checking. - (free_exclude, fnmatch_no_wildcards): New function. - (excluded_filename): No longer requires options arg, as the options - are determined by add_exclude. Now returns bool, not int. - (excluded_filename, add_exclude): - Add support for the fancy new exclusion options. - (add_exclude, add_exclude_file): Now takes int options arg. - Check for arithmetic overflow when computing sizes. - (add_exclude_file): xrealloc might modify errno, so don't - realloc until after errno might be used. - - * lib/exclude.h (EXCLUDE_ANCHORED, EXCLUDE_INCLUDE,EXCLUDE_WILDCARDS): - New macros. - (free_exclude): New decl. - (add_exclude, add_exclude_file): Now takes int options arg. - (excluded_filename): No longer requires options arg, as the options - are determined by add_exclude. Now returns bool, not int. - - * lib/prepargs.c: Include ; required for C99 since - we use strlen. - - * lib/quotearg.c: - BSD/OS 4.1 wchar.h requires FILE and struct tm to be declared. - - * lib/xstrtol.h (_DECLARE_XSTRTOL): Improve quality of - diagnostic for LONGINT_INVALID_SUFFIX_CHAR. - - * m4/Makefile.am (EXTRA_DIST): Add check-decl.m4, mbrtowc.m4. - Remove inttypes_h.m4, largefile.m4, mktime.m4. - - * m4/inttypes_h.m4, m4/largefile.m4, m4/mktime.m4: Remove; - subsumed by Autoconf 2.50. - - * m4/error.m4: Upgrade to serial 2. - - * m4/fnmatch.m4 (jm_FUNC_FNMATCH): Upgrade to serial 4, but - remove test for GNU C library. It's not correct, as some - older glibcs are buggy. - - * m4/getline.m4, m4/malloc.m4: Upgrade to serial 4. - - * m4/prereq.m4: Upgrade to serial 20, but then: - (jm_PREREQ): Add jm_PREREQ_EXCLUDE. - (jm_PREREQ_EXCLUDE): New macro. - (jm_PREREQ_HUMAN): Remove jm_AC_HEADER_INTTYPES_H, as it is subsumed - by autoconf 2.5x. - - * m4/realloc.m4: Upgrade to serial 4. - - * m4/strerror_r.m4: Revert to serial 1002. - - * m4/uintmax_t.m4: Upgrade to autoconf 2.5x. - - * m4/utimes.m4: Upgrade to latest version (still "serial 3"). - - * m4/xstrtoumax.m4: Upgrade to serial 3, but then: - (jm_AC_PREREQ_XSTRTOUMAX): Remove jm_AC_HEADER_INTTYPES_H, as - it is now subsumed by autoconf. Add inttypes.h. - - * po/cs.po, po/da.po, po/de.po, po/es.po, po/et.po, po/fr.po, - po/it.po, po/pl.po, po/sl.po, po/sv.po: Sync with translation project. - - * src/buffer.c (new_volume): Stop if the script exits with an error. - - * src/common.h (excluded_with_slash, excluded_without_slash): - Remove, replacing by: - (excluded): New decl. - (link_error): New decl. - (excluded_name): Now returns bool. - - * src/extract.c: - (struct delayed_symlinks, extract_archive, apply_delayed_symlinks): - Support hard links to symbolic links. - - (struct delayed_symlink): Remove 'names' member, replacing it with - 'sources' and 'target' member. All uses changed. - - (struct string_list): New type. - - (delayed_set_stat, extract_archive): Use offsetof when computing sizes - for struct hack; this avoids wasted space in some cases. - - (extract_archive): Fix test for absolute pathnames and/or "..". - Use link_error to report errors for links. - Remove redundant trailing '/' at "really_dir", for all uses, not - just before invoking mkdir. - If overwriting old files, do not worry so much about existing - directories. - Fix mode computation in the case where the directory exists. - - (apply_delayed_symlinks): If we can't make a hard link to a symbolic - link, make a copy of the symbolic link. - - * src/incremen.c (get_directory_contents): - If ignore_failed_read_option, only warn about - stat failures. - - * src/list.c (from_header): Do not issue a diagnostic if TYPE is zero. - However, check for error even for '-' or '+' case. - - (print_header): Try parsing uids and gids as unsigned integers first, - and as a uid_t or gid_t only if that fails. This adds support for - listing positive uids and gids that are greater than UID_MAX and - GID_MAX. - - * src/misc.c (link_error): New function. - - * src/names.c (collect_and_sort_names): - If ignore_failed_read_option, only warn about - stat errors. - - (excluded_name): Now returns bool. Simplify, as the fancy - features are now all in excluded_filename. - - * src/rtapelib.c (base_name): Remove decl, as system.h now - declares it. - - * src/system.h: Include stddef.h if available. - (offsetof): Declare if stddef.h doesn't. - - Include . - (FILESYSTEM_PREFIX_LEN, ISSLASH): Remove; now defined by dirname.h. - - * src/tar.c (ANCHORED_OPTION, IGNORE_CASE_OPTION, - NO_ANCHORED_OPTION, NO_IGNORE_CASE_OPTION, NO_WILDCARDS_OPTION, - NO_WILDCARDS_MATCH_SLASH_OPTION, WILDCARDS_OPTION, - WILDCARDS_MATCH_SLASH_OPTION): - New enum values. - - (long_options, usage, decode_options): Add support for --anchored, - --ignore-case, --no-anchored, --no-ignore-case, --no-wildcards, - --no-wildcards-match-slash, --recursion, --wildcards, - --wildcards-match-slash. - - (decode_options): Implement the new way of interpreting exclude - patterns. - - (usage): --newer-mtime takes a DATE operand. DATE may be a file name. - - (OPTION_STRING, decode_options): Add -I, -y. Currently these options - just print error messages suggesting alternatives. - - (add_filtered_exclude): Remove. - - * tests/Makefile.am (TESTS): Alphabetize, except put version.sh first. - - * tests/extrac04.sh (out): Remove - directory/subdirectory/file1, as the new semantics for - --exclude exclude it. - - * tests/genfile.c (main): Don't use non-ASCII char in msgid. - -2001-08-12 Paul Eggert - - * lib/addext.c (): Include. - (errno): Declare if not defined. - (addext): Work correctly on the Hurd, where pathconf returns -1 and - leaves errno alone, because there is no limit. Also, work even if - size_t is narrower than long. - -2001-07-08 Paul Eggert - - * lib/alloca.c (alloca): Arg is of type size_t, not unsigned. - -2001-05-10 Paul Eggert - - * lib/addext.c (ISSLASH, base_name): Remove decls; now in dirname.h. - Include and after size_t is defined. - (addext): Use base_len to trim redundant trailing slashes instead of - doing it ourselves. - - * lib/backupfile.c (ISSLASH, base_name): - Remove decls; now in dirname.h. - Include , , after size_t - is defined. - (find_backup_file_name): Rename locals to avoid new functions. - Use base_len instead of rolling it ourselves. - Work even if dirlen is 0. - Use a dir of '.' if given the empty string. - - * lib/basename.c: - Do not include , ; no longer needed. - (FILESYSTEM_PREFIX_LEN, PARAMS, ISSLASH): Remove; now in dirname.h. - Include , . - (base_name): Allow file names ending in slashes, other than names - that are all slashes. In this case, return the basename followed - by the slashes. - - * lib/dirname.c: Include instead of . - (FILESYSTEM_PREFIX_LEN, ISSLASH): Remove; now in dirname.h. - (dir_len): Renamed from dirlen. - All callers changed. - - * lib/dirname.h (DIRECTORY_SEPARATOR, ISSLASH, FILESYSTEM_PREFIX_LEN): - New macros. - (base_name, base_len, dir_len, strip_trailing_slashes): New decls. - -2001-02-16 Paul Eggert - - * lib/quotearg.c (mbrtowc, mbrtowc, mbsinit): - Do not declare or define if HAVE_MBRTOWC, - since the test for HAVE_MBRTOWC now requires proper declarations. - - * lib/alloca.c (malloc): Undef before defining. - -2001-02-13 Paul Eggert - - * src/compare.c (read_and_process): Use off_t for size. - From Maciej W. Rozycki. - -2001-01-26 Paul Eggert - - * lib/quotearg.c: Include stddef.h. From Jim Meyering. - -2001-01-12 Paul Eggert - - * NEWS, configure.in (AC_INIT_AUTOMAKE): Version 1.13.19. - - * lib/savedir.h (savedir): Remove size arg. - - * doc/tar.texi: Add @setchapternewpage odd. - Remove -I as an alias for -T, for now. - Add @dircategory. - Update copyright. Remove "Published by". - Dates beginning with / or . are taken to be file names. - - * src/tar.c (): Do not include; - (time): Do not declare. - (usage): Remove -I as an alias for -T. - (OPTION_STRING): Remove -I. - (decode_options): Dates that look like an absolute path name, - or that start with '.', are presumed to be file names whose - dates are taken. - Remove 'I' as an aliase for 'T'. - Update copyright. - - * src/extract.c (): Do not include; system.h now does this. - (make_directories): Skip filesystem prefixes. - Don't assume '/' is the only separator. - (extract_sparse_file): Use new full_write semantics. - On write error, return instead of invoking skip_file. - Do not free sparsearray; caller does this now. - (apply_nonancestor_delayed_set_stat): Do not assume '/' is the only - separator. - (extract_archive): Don't assume file name lengths fit in int. - Report what got stripped from member name; it might be more than '/'. - Use new full_write semantics. - Do not pass redundant trailing "/" to mkdir, as POSIX does not allow - mkdir to ignore it. - Do not report mkdir error if old_files_option == KEEP_OLD_FILES. - - * src/buffer.c (): Do not include; system.h now does this. - (time): Remove decl; likewise. - (child_open_for_uncompress): Use new full_write semantics. - (flush_write): Use ISSLASH instead of testing for '/'. - (flush_read): Likewise. - - * src/rmt.h (_remdev): Look for / anywhere in Path. - - * src/misc.c (contains_dot_dot): Skip filesystem prefix. - Don't assume '/' is the only separator. - (safer_rmdir): Don't assume '/' is the only separator. - - * src/compare.c (diff_archive): Don't assume '/' is the only separator. - - * lib/dirname.h (dirlen): New decl. - - * src/incremen.c (get_directory_contents): - Remove path_size arg; all callers changed. - Don't assume '/' is the only directory separator. - (gnu_restore): Work even if file name length doesn't fit in int. - - * lib/addext.c (ISSLASH): New macro. - (addext): Trim any redundant trailing slashes. - - * src/names.c (name_next): - Don't assume '/' is the only directory separator. - (namelist_match): Likewise. - (add_hierarchy_to_namelist): Remove dirsize arg. - Do not assume '/' is the only directory separator. - (new_name): Likewise. - - * lib/Makefile.am (noinst_HEADERS): Add dirname.h, full-write.h. - (libtar_a_SOURCES): Add dirname.c. - - * src/create.c (relativize): - New function, with much of old start_header's guts. - Handle filesystem prefixes. - (start_header): Use this new function. - (init_sparsearray): Don't bother to zero out the new array; - it's not needed. - (deal_with_sparse): Fix array allocation bug. - (create_archive): Don't assume '/' is the only separator. - (dump_file): Likewise. - Don't worry about leading / in symlink targets. - - * lib/savedir.c (savedir): - Remove size arg; it wasn't portable. All callers changed. - - * lib/utime.c (utime_null): Adjust to new full_write convention. - - * configure.in (YACC): Avoid portability problem with Ultrix sh. - - * lib/backupfile.c: Include . - (ISSLASH): New macro. - (find_backup_file_name): Use dirlen to calculate directory lengths. - (max_backup_version): Strip redundant trailing slashes. - - * src/common.h: Include . - (get_directory_contents): No longer has size arg. - (gnu_restore): Arg is size_t, not int. - - * src/system.h: Include . - (time): Declare if not defined. - - * lib/full-write.c: Include full-write.h, not safe-read.h. - full_write returns size_t, with short writes meaning failure. - All callers changed. - - * src/rtapelib.c: Include full-write.h. - - * src/rmt.c: Include full-write.h. - (main): Update copyright. - - * doc/getdate.texi: Mention that only English is supported. - Show how to use "date" so that the output is acceptable to getdate. - Mention Z as an abbreviation for UTC. - - * lib/full-write.h: New file. - - * src/list.c: system.h now does time.h stuff. - - * lib/dirname.c: - Use HAVE_STDLIB_H, not STDC_HEADERS, to decide whether to include - stdlib.h. - Do not include string.h, strings.h, or assert.h; no longer needed. - (strrchr, memrchr, malloc): Remove decls; no longer needed. - Include . - (base_name): New decl. - (BACKSLASH_IS_PATH_SEPARATOR): Remove. - (dir_name_r): Remove. - (dirlen): New function. - (dir_name): Use dirlen instead of dir_name_r. - (, ): Include only if test program. - (main): Use "return 0", not "exit (0)". - -2000-12-08 Paul Eggert - - * lib/dirname.h: New file. - -2000-11-02 Vesselin Atanasov - - * lib/fnmatch.c: Do not comment out all the code if we are using - the GNU C library, because in some cases we are replacing buggy - code in the GNU C library itself. - -2000-10-30 Paul Eggert - - * lib/fnmatch.c (FOLD): Do not assume that characters are unsigned. - -2000-10-29 Paul Eggert - - * NEWS, configure.in (AC_INIT_AUTOMAKE): Version 1.13.18. - - * src/tar.c: Include , for FNM_LEADING_DIR. - -2000-10-28 Paul Eggert - - * doc/tar.texi: --no-recursion now applies to extraction, too. - * src/create.c (dump_file): no_recurse_option -> ! recursion_option - * src/names.c (namelist_match, excluded_name): - Do not match subfiles of a directory - if --no-recursion is specified. - * src/tar.c (NO_RECURSE_OPTION): Remove. - (long_options): Have getopt set the --no-recursion flag. - (decode_options): Initialize recursion_option to FNM_LEADING_DIR. - Remove case for NO_RECURSE_OPTION. - * src/common.h (recursion_option): - Renamed from no_recurse_option, with sense - negated, and with FNM_LEADING_DIR being the nonzero value. - - * names.c (namelist_match): New function. - (name_match, name_scan): Use it to eliminate duplicate code. - (names_notfound): Remove special case for Amiga. - -2000-10-27 Paul Eggert - - * src/misc.c (read_error_details, read_warn_details, - read_fatal_details): Don't assume size_t is unsigned long. - - * src/buffer.c (flush_read): If read_full_records_option, try to - fill the input buffer, as --delete -f - needs this. - -2000-10-24 Paul Eggert - - * m4/strerror_r.m4 (AC_FUNC_STRERROR_R): Port to autoconf 2.13. - - * src/buffer.c (check_label_pattern): - Make sure header name is a string before - passing it to fnmatch. - (init_volume_number): Check for global_volno overflow. - (new_volume): Check for global_volno overflow. - - * src/tar.c (decode_options): - Check that volume label is not too long to overflow - name in tar header block. - - * Makefile.am (EXTRA_DIST): Remove rebox.el. - - * configure.in (HAVE_DECL_STRERROR_R): Remove our handwritten code. - (AC_FUNC_STRERROR_R): Use this instead. - -2000-10-23 Paul Eggert - - * src/extract.c: Include , since we invoke "time". - - * lib/prepargs.c (prepend_default_options): - Don't use NULL, for portability. - - * m4/fnmatch.m4: Add "working" to message. - - * src/names.c: (_GNU_SOURCE): Remove; autoconf now does this. - Include . - (getpwuid, getgrgid): Declare only if system headers don't. - (gid_to_gname): Don't invoke setgrent. - (namelist): Now static, not global. - (nametail): New var. All uses of namelast changed to use - nametail, with one extra level of indirection. - (name_gather): Use memcpy instead of strncpy + assignment of NUL. - (name_match): Set nametail too, when setting namelist to null. - (add_hierarchy_to_namelist): Change type of dir arg from char * to - struct name *, so that we don't have to look up the name again - here. Get change_dir from dir rather than as a separate arg. Add - dirsize arg, and pass it along to get_directory_contents. Remove - unnecessary check of directory type. - (new_name): Do not append a slash if PATH already ends in one. - (avoided_names, struct avoided_name): Remove. - (avoided_name_table): New var, replacing avoided_names. - (hash_avoided_name, compare_avoided_names): New function. - (add_avoided_name, is_avoided_name): Use hash table rather than - linked list. - - * src/buffer.c (_GNU_SOURCE): Remove; autoconf now does this. - (child_open_for_compress, child_open_for_uncompress, - close_archive): Propagate any failure of the compression process - back to "tar". - (open_archive, flush_write, flush_read, close_archive): Do not - allocate an array of size PATH_MAX, as PATH_MAX might be (size_t) - -1. Instead, allocate an array with the size that's needed. - (open_archive): Don't bother checking S_ISCHR of /dev/null. - (backspace_output): Don't try to backspace past start of archive. - (close_archive): Remove special case for DELETE_SUBCOMMAND. - - * acconfig.h (_GNU_SOURCE, DEFAULT_ARCHIVE, DEFAULT_BLOCKING, - DENSITY_LETTER, DEVICE_PREFIX, EMUL_OPEN3, HAVE_GETGRGID, - HAVE_GETPWUID, HAVE_MKNOD, HAVE_RTAPELIB, HAVE_ST_FSTYPE_STRING, - HAVE_UNION_WAIT, HAVE_UTIME_H, HAVE_VALLOC, MTIO_CHECK_FIELD, PACKAGE, - PROTOTYPES, REMOTE_SHELL, STD_INC_PATH, VERSION, WITH_CATALOGS, - WITH_DMALLOC, WITH_REGEX): - Remove; now generated automatically. - - * configure.in (_GNU_SOURCE): Define to empty, not 1, for - compatibility for glibc fragments. - (_GNU_SOURCE, HAVE_UTIME_H, MTIO_CHECK_FIELD, - HAVE_ST_FSTYPE_STRING, HAVE_MKNOD, REMOTE_SHELL, DENSITY_LETTER, - DEVICE_PREFIX, DEFAULT_ARCHIVE, DEFAULT_BLOCKING): Add comment so - that we needn't put an entry into acconfig.h. - (ALL_LINGUAS): Add da. - (AC_C_BACKSLASH_A): Remove; jm_PREREQ_QUOTEARG now does this. - (AC_CHECK_HEADERS): Add stdbool.h (for hash.h users), wctype.h - (for strtol.c). - (AC_MBSTATE_T): Add. - (RMT): Append $(EXEEXT). - (HAVE_GETGRGID, HAVE_GETPWUID, pe_AC_TYPE_SIGNED_CHAR): Remove. - (HAVE_DECL_FREE, HAVE_DECL_GETGRGID, HAVE_DECL_GETPWUID, - HAVE_DECL_GETENV, HAVE_DECL_MALLOC, HAVE_DECL_STRTOUL, - HAVE_DECL_STRTOULL, HAVE_DECL_STRERROR_R): New macros. - (jm_PREREQ_ADDEXT, jm_PREREQ_ERROR, jm_PREREQ_QUOTEARG): Add. - (AC_REPLACE_FUNCS): Remove execlp; no longer needed. - (AC_CHECK_FUNCS): Add clock_gettime; AC_SEARCH_LIBS wasn't enough. - Remove mbrtowc; jm_PREREQ_QUOTEARG now does this. - (EMUL_OPEN3): Remove; no longer needed. - (DENSITY_LETTER, DEVICE_PREFIX): Simplify m4 quoting. - - * m4/fnmatch.m4 (AC_FUNC_FNMATCH): Detect d*/*1 vs d/s/1 bug. - - * src/common.h: Do not include basename.h. - * src/rtapelib.c (base_name): Do not include basename.h; - declare base_name instead. - - * lib/basename.h, lib/execlp.c, lib/getpagesize.h, lib/mkdir.c: - Remove these files. - * lib/getstr.c, lib/getstr.h, lib/hash.h, lib/hash.h, lib/prepargs.c, - lib/prepargs.h, lib/savedir.c, lib/savedir.h: New files. - * lib/Makefile.am (EXTRA_DIST, noinst_HEADERS, libtar_a_SOURCES): - Adjust to the above changes. - - * lib/Makefile.am (AUTOMAKE_OPTIONS): Remove ../src/ansi2knr. - - * src/open3.c: Remove. - - * src/Makefile.am (AUTOMAKE_OPTIONS): Remove ansi2knr. - (tar_SOURCES): Remove open3.c. - (INCLUDES): Remove -I.., as automake does that. - (OMIT_DEPENDENCIES): ../lib/fnmatch.h -> fnmatch.h. Add localedir.h. - - The following changes are to put LOCALEDIR into localedir.h instead - of passing it on the command line. - (DEFS): Remove. - (DISTCLEANFILES): New macro. - (localedir.h): New rule. - (rmt.o tar.o): Now depend on localedir.h. - - * tests/delete02.sh, tests/extrac04.sh: New files. - - * tests/Makefile.am (AUTOMAKE_OPTIONS): Remove ansi2knr. - (TESTS): Add extrac04.sh, and restore delete02.sh. - (DEFS): Remove; LOCALEDIR is now done via localedir.h. - (INCLUDES): Remove -I.. as automake does this now. - - * src/rtapelib.c (rexec): Don't declare unless using it. - (do_command): Simplify signal-handling code slightly. - - * src/delete.c (blocks_needed): Remove. All uses changed to use - blocking_factor - new_blocks. - (acting_as_filter): New var. - (write_record, delete_archive_members): Use acting_as_filter - rather than archive == STDIN_FILENO to detect whether we're acting - as a filter, as open can return STDIN_FILENO in some cases. - (delete_archive_members): Ignore zero blocks if - ignore_zeros_option is nonzero. Fix bug that messed up last - output block: write_eot can't be used here, as it gets confused - when the input is at end of file. - - * src/compare.c (diff_archive): Do not impose an arbitrary limit on - symbolic link contents length. Pass directory size to - get_directory_contents. - - * m4/decl.m4, m4/error.m4, m4/mbstate_t.m4, m4/prereq.m4, - m4/strerror_r.m4: New files. - * m4/signedchar.m4: Remove this file. - * Makefile.am (ACINCLUDE_INPUTS): Adjust to above changes. - * m4/Makefile.am (EXTRA_DIST): Likewise. - - * Makefile.am (DISTCLEANFILES): Add intl/libintl.h. - - * po/da.po: New translation file. - - * src/mangle.c (extract_mangle): - Fix diagnostic with wrong number of %s'es. - - * lib/fnmatch.c (fnmatch): - Fix some FNM_FILE_NAME and FNM_LEADING_DIR bugs, - e.g. fnmatch("d*/*1", "d/s/1", FNM_FILE_NAME) incorrectly yielded zero. - - * lib/full-write.c (full_write): Some buggy drivers return 0 when you - fall off a device's end. Detect this. - - * src/system.h (IN_CTYPE_DOMAIN): Renamed from CTYPE_DOMAIN. All - uses changed. - (open): Remove macro; we no longer support EMUL_OPEN3. Do not - include and directory include files like ; - no longer used. Include instead. - (closedir, signed_char): remove macro; no longer used. - (bool, false, true): Include if you have the include - file, otherwise define. - - * src/misc.c: - (is_dot_or_dotdot, closedir_error, closedir_warn, opendir_error, - opendir_warn, readdir_error): Remove; no longer needed. - (safer_rmdir): Strip leading ./ (or .// or ./// or ././ or etc.) - before deciding whether we're trying to remove ".". - (remove_any_file): Try unlink first if we are not root. Use - savedir when recursively removing directories, to avoid exhausting - file descriptors. - (savedir_error, savedir_warn, symlink_error): New functions. - - * src/list.c: (read_and): Do not invoke - apply_nonancestor_delayed_set_stat; DO_SOMETHING is now - responsible for that. Do not invoke apply_delayed_set_stat; our - caller is now responsible for that. - (read_header): Use signed char instead of signed_char. Prevent - later references to current_header from mistakenly treating it as - an old GNU header. - (from_header): Quote invalid base-64 strings in diagnostics. - (time_from_header): Do not warn about future timestamps in - archive; check_time now does that. - (print_header): Quote unknown file types. - (skip_member): New function, replacing skip_extended_headers and - now skipping the whole member instead of just the extended - headers. All callers changed. This makes the code handle - extended headers uniformly, and fixes some bugs. - - * src/update.c (update_archive): Use skip_member. - - * src/extract.c (we_are_root): Now global. - (struct delayed_symlink): New type. - (delayed_symlink_head): New var. - (extr_init, fatal_exit): Invoke extract_finish on fatal errors, - not apply_delayed_set_stat. - (set_mode, set_stat): Pointer args are now const pointers. - (check_time): New function. - (set_stat): Warn if setting a file's timestamp to be the future. - (make_directories): Do not save and restore errno. - (maybe_recoverable): Set errno to ENOENT if we cannot make missing - intermediate directories. - (extract_archive): Invoke apply_nonancestor_delayed_set_stat here, - not in caller. Extract potentially dangerous symbolic links more - carefully, deferring their creation until the end, and using a - regular file placeholder in the meantime. Do not remove trailing - / and /. from file names. Do not bother checking for ".." when - checking whether a directory loops back on itself, as loopbacks - can occur with symlinks too. Also, in that case, do not bother - saving and restoring errno; just set it to EEXIST. - (apply_nonancestor_delayed_set_stat): A prefix is a potential - ancestor if it ends in slash too (as well as ending in a char just - before slash). - (apply_delayed_set_stat): Remove. - (apply_delayed_symlinks, extract_finish): New functions. - - * doc/fdl.texi: New file. - * doc/Makefile.am (EXTRA_DIST): Add fdl.texi. - ($(srcdir)/tar.info): Add fdl.texi. Invoke makeinfo with --no-split. - * doc/tar.texi: Add Free Documentation License. New section - "Overwrite Old Files", and revamp that section to make it easier to - follow. "tar" -> "GNU tar" where appropriate. Migrate getdate - documentation into getdate.texi. Fix several minor typos. Describe - TAR_OPTIONS. Describe incompatibility between incremental backups and - --atime-preserve. Describe incompatibility between --verify and other - options. Mention that tar normally removes symbolic links rather than - following them, when extracting a file of the same name. - - * THANKS: Add gpoul. Change skip's address. - - * po/POTFILES.in: Add lib/human.c. - - * src/common.h (namelist, namelast): Remove decls. - (we_are_root, extract_finish, skip_member, savedir_error, - savedir_warn, symlink_error, gnu_list_name): New decls. - (apply_delayed_set_stat, apply_nonancestor_delayed_set_stat, - skip_extended_headers, is_dot_or_dotdot, closedir_error, - closedir_warn, opendir_error, opendir_warn, readdir_error, - readdir_warn): Remove decls. - (get_directory_contents): New off_t arg. - (addname): Now returns struct name *. - - * src/tar.h, tests/genfile.c: Fix comments. - - * src/create.c: Include hash.h. - (gnu_list_name): Remove decl. - (struct link): Remove "next" member. - (linklist): Remove. - (start_header): Say "leading `FOO'" rather than "`FOO' prefix" for - consistency with other diagnostics. - (deal_with_sparse): Check for I/O error when closing the file. - (create_archive): Do not allocate an array of size PATH_MAX, as - PATH_MAX might be (size_t) -1. Instead, allocate an array with - the size that's needed. - (hash_link, compare_links): New functions. - (dump_file): Do not exhaust open file descriptors when descending - deeply into a directory, by using savedir rather than - opendir/readdir. Do not zero-fill the name buffer unnecessarily. - Hash the set of links already created, instead of using a linked - list. Fix some bugs in outputting sparse files which caused the - sparse tables to be incorrect. When a file unexpectedly shrinks, - output zeros rather than garbage. Do not allocate an array of - size PATH_MAX, as PATH_MAX might be (size_t) -1. Instead, - allocate an array with the size that's needed. - - * src/incremen.c: Include hash.h. - (struct directory): Remove "next", "dir_text". Change "name" to - be char[1] with struct hack, not const char *. Add "found". - (directory_list): Remove. Replaced by directory_table. - (directory_table): New var. - (nfs_string): Renamed from nfs. - (hash_directory, compare_directories): New functions. - (note_directory): Now returns struct directory *. First arg is - now const pointer. struct stat arg is now dev_t, ino_t, nfs. - Remove text arg. New "found" arg, basically corresponding to the - old text arg not being null. All callers changed. - (note_directory, find_directory): Use hash table rather than - linked list. - (get_directory_contents): New arg "device". Use savedir to do the - hard work. Save the nfs-ness of stat_data, since it might change - under us. Use note_directory instead of find_directory to save - some work. When adding an "A" record, do it with - add_to_accumulator instead of cheating with strcat. - (read_directory_file): Use "+" flag before device to indicate - whether it was NFS. Fix typo in checking for strtoul error. - (write_directory_file_entry): New function. - (write_directory_file): Use it, and use the hash routines to - traverse the directory table. - (gnu_restore): Use savedir rather than opendir/readdir. - - * src/tar.c: Include localedir.h, prepargs.h. - (long_options): Now static. - (long_options, usage, decode_options): -j is now short for - --bzip2, and -I is now an alias for -T. - (decode_options, main): argv is not const pointer now. - (decode_options): Invoke prepend_default_options to support - TAR_OPTIONS. In diagnostic, mention the string that was the - invalid blocking factor, tape length, group, owner, or record - size. --delete is no longer incompatible with -f -, undoing - 2000-01-07 change. - (main): Invoke extract_finish at end of extraction. - - * src/rmt.c: Include localedir.h. - (main): Update copyright date to 2000. - - * doc/getdate.texi: New file, taken from fileutils 4.0.27, with the - following changes: Use @sc where appropriate. Document the ranges of - supported times more precisely. Add Eggert to getdate authors. - Document old Latin 12m/12pm tradition. Remove list of alphabetic time - zone names, as it wasn't correct and people shouldn't be relying on it - anyway. Relative items also account for non-DST adjustments. Fix - some misspellings. - - * lib/prepargs.c, lib/prepargs.h, tests/extrac04.sh: New file. - - * tests/ignfail.sh: opendir -> savedir in diagnostics. - - * tests/preset.in: Set LANGUAGE to the empty string, for some - brain damaged host. - -2000-10-20 Paul Eggert - - * m4/fnmatch.m4: Mention the GNU C library. - -2000-10-19 Paul Eggert - - * m4/fnmatch.m4: Add a couple more test cases to catch bugs in - glibc 2.1.95. - -2000-10-17 Paul Eggert - - * lib/human.c (): Do not include; human.h does it if needed. - (CHAR_BIT): Remove. - - * lib/human.h (): Include if HAVE_LIMITS_H. - (CHAR_BIT): Define if not defined. - -2000-09-09 Paul Eggert - - * lib/quotearg.c: From fileutils: rename ISASCII to IN_CTYPE_DOMAIN. - -2000-08-07 Paul Eggert - - * lib/xmalloc.c: Memory exhausted -> memory exhausted - - * lib/xalloc.h (xalloc_msg_memory_exhausted): - change to array from char *. - -2000-08-06 Paul Eggert - - * m4/mbstate_t.m4: Define mbstate_t to be int, not char, for - compatibility with glibc 2.1.3 strftime.c. - -2000-07-31 Paul Eggert - - * lib/quotearg.c (quotearg_n_options): - Don't make the initial slot vector a constant, - since it might get modified. - - * lib/quotearg.c: Add support for more than one preallocated slot. - -2000-07-30 Paul Eggert - - * lib/quotearg.c (quotearg_n_options): - Preallocate a slot 0 buffer, so that the caller - can always quote one small component of a "memory exhausted" message - in slot 0. - -2000-07-23 Paul Eggert - - * lib/quotearg.c: - Include even if ! (HAVE_MBRTOWC && 1 < MB_LEN_MAX), so that - mbstate_t is always defined. - - Do not inspect MB_LEN_MAX, since it's incorrectly defined to be 1 in - some GCC installations, and this configuration error is likely to be - common. - -2000-07-22 Paul Eggert - - * lib/quotearg.c: - When the system forces us to redefine mbstate_t, shadow its mbsinit - function. From Bruno Haible. - -2000-07-14 Paul Eggert - - * lib/xmalloc.c: Simplify exhausted message. - - * lib/quotearg.h: Update copyright date; from Jim Meyering. - -2000-07-13 Paul Eggert - - * lib/quotearg.h (enum quoting style): - New constant clocale_quoting_style. - - * lib/quotearg.c: - (quoting_style_args, quoting_style_vals, quotearg_buffer_restyled): - Add support for clocale_quoting_style, undoing previous change to - locale_quoting_style. - -2000-07-10 Paul Eggert - - * lib/quotearg.c: - : Include only if HAVE_MBRTOWC && 1 < MB_LEN_MAX, - since otherwise we don't need it. - (MB_CUR_MAX): Redefine to 1 if ! (HAVE_MBRTOWC && 1 < MB_LEN_MAX), - since we don't do multibytes in that case. - (quotearg_buffer_restyled): If a unibyte locale, don't bother to - invoke multibyte primitives. - - * m4/mbstate_t.m4 (AC_MBSTATE_T): - Renamed from AC_MBSTATE_T_OBJECT. All uses changed. - Change from a two-part test, which defines both HAVE_MBSTATE_T_OBJECT - and mbstate_t, to a single-part test that simply defines mbstate_t. - - * lib/quotearg.c (mbrtowc): Do not use HAVE_WCHAR_H in the definition. - Use defined mbstate_t, not HAVE_MBSTATE_T_OBJECT, - to decide whether to define the BeOS workaround macro; - this adjusts to the change to AC_MBSTATE_T. - - * m4/strerror_r.m4: New file. - -2000-07-05 Paul Eggert - - * lib/quotearg.c: Use double-quote to quote. - - * lib/quotearg.c (N_): New macro. - (gettext_default): New function. - (quotearg_buffer_restyled): Use gettext_default ("{LEFT QUOTATION MARK}", - "\"") for left quote, and gettext_default ("{RIGHT QUOTATION MARK}", "\"") - for right quote. - - * lib/quotearg.c (struct quoting_options): - Simplify quote_these_too dimension. - From Bruno Haible . - - * m4/mbstate_t.m4 (AC_MBSTATE_T_OBJECT): - Test for mbstate_t only if the test - for an object-type mbstate_t fails. - - * lib/quotearg.c (mbrtowc): Declare returned type, since BeOS doesn't. - -2000-07-03 Paul Eggert - - * m4/mbstate_t.m4 (AC_MBSTATE_T_OBJECT): Port to autoconf 2.13. - Add AC_CHECK_HEADERS(stdlib.h), since we use HAVE_STDLIB_H. - - * lib/quotearg.c (mbrtowc): - Assign to *pwc, and return 1 only if result is nonzero. - (iswprint): Define to ISPRINT if we are substituting our own mbrtowc. - -2000-07-02 Paul Eggert - - * lib/quotearg.c (mbstate_t): - Do not define; it should be defined with AC_CHECK_TYPE. - -2000-06-26 Paul Eggert - - * m4/mbstate_t.m4: Include stdio.h before wchar.h, to work around - a bug in glibc 2.1.3. - - * lib/xmalloc.c: Fix inaccurate comment for xrealloc. - -2000-06-19 Paul Eggert - - * lib/quotearg.c (ISASCII): Add #undef and move definition to follow - inclusion of wctype.h to work around solaris2.6 namespace pollution. - (ISPRINT): Likewise. - Reported by Tom Tromey. - -2000-06-15 Paul Eggert - - * lib/human.c (adjust_value): New function. - (human_readable_inexact): Apply rounding style even when printing - approximate values. - - * lib/human.c: Avoid shadowing warnings. - From Jim Meyering. - -2000-06-14 Paul Eggert - - * lib/human.c (human_readable_inexact): Allow an input block size - that is not a multiple of the output block size, and vice versa. - - * lib/getdate.y (get_date): Apply relative times after time zone - indicator, not before. - -2000-05-31 Paul Eggert - - * m4/largefile.m4: Rewrite so that we don't need to run getconf, - and thus don't need AC_CANONICAL_HOST. - - (AC_SYS_LARGEFILE_FLAGS, AC_SYS_LARGEFILE_SPACE_APPEND): Remove. - (AC_SYS_LARGEFILE_TEST_INCLUDES): New macro. - (AC_SYS_LARGEFILE_MACRO_VALUE): Change arguments from - CODE-TO-SET-DEFAULT to VALUE, INCLUDES, FUNCTION-BODY. All uses - changed. Instead of inspecting the output of getconf, try to - compile the test program without and with the macro definition. - (AC_SYS_LARGEFILE): Do not require AC_CANONICAL_HOST or check for - getconf. Instead, check for the needed flags by compiling test - programs. - - * configure.in (AC_CANONICAL_HOST): Remove; the largefile stuff no - longer needs it. - * config.guess, config.sub: Remove these files, for similar reasons. - -2000-05-03 Paul Eggert - - * m4/largefile.m4 (AC_SYS_LARGEFILE): Define _XOPEN_SOURCE to be - 500, instead of _GNU_SOURCE to be 1, to work around glibc 2.1.3 - bug. This avoids a clash when files like regex.c that define - _GNU_SOURCE. - -2000-05-02 Paul Eggert - - * m4/largefile.m4 (AC_SYS_LARGEFILE): - Define _GNU_SOURCE if this is needed to make - ftello visible (e.g. glibc 2.1.3). Use compile-time test, rather than - inspecting host and OS, to decide whether to define _LARGEFILE_SOURCE. - - * lib/quotearg.c (mbrtowc, mbstat_t): - Add definitions if !HAVE_MBSTATE_T_OBJECT. - (): Include if HAVE_WCTYPE_H. - (iswprint): Define to 1 if we lack it - -2000-04-18 Paul Eggert - - * m4/mbstate_t.m4: New file. - -2000-04-17 Bruno Haible - - * tests/ignfail.sh: Test for uid 0 along with user "root". - -2000-04-05 Paul Eggert - - * m4/largefile.m4 (AC_SYS_LARGEFILE_FLAGS): - Don't use -n32 on IRIX if the installer said - otherwise. - -2000-02-28 Paul Eggert - - * lib/quotearg.c (ALERT_CHAR): New macro. - (quotearg_buffer_restyled): Use it. - -2000-02-23 Rainer Orth - - * src/list.c (tartime): Fix off-by-one error when copying year if - OLD_CTIME. - -2000-02-18 Paul Eggert - - * lib/getdate.y: Handle two-digit years with leading zeros correctly. - (textint): New typedef. - (parser_control): Changed from struct parser_control to typedef - (for consistency). Member year changed from int to textint. All - uses changed. - (YYSTYPE): Removed; replaced by %union with int and textint - members. - (tID): Removed; not used. - (tDAY, tDAY_UNIT, tDAYZONE, tHOUR_UNIT, tID, tLOCAL_ZONE, - tMERIDIAN, tMINUTE_UNIT, tMONTH, tMONTH_UNIT tSEC_UNIT, tSNUMBER, - tUNUMBER, tYEAR_UNIT, tZONE, o_merid): Now of type . - (tSNUMBER, tUNUMBER): Now of type . - (date, number, to_year): Use width of number in digits, not its - value, to determine whether it's a 2-digit year, or a 2-digit - time. - (yylex): Store number of digits of numeric tokens. Return '?' for - unknown identifiers, rather than (unused) tID. - -2000-01-16 Paul Eggert - - * lib/quotearg.c (quotearg_buffer_restyled): - Do not quote alert, backslash, formfeed, - and vertical tab unnecessarily in shell quoting style. - -2000-01-15 Paul Eggert - - * m4/c-bs-a.m4: - Change quoting to be compatible with future autoconf versions. - -2000-01-11 Paul Eggert - - * lib/exclude.c (FILESYSTEM_PREFIX_LEN, ISSLASH): Remove unused macros. - -2000-01-07 Paul Eggert - - * NEWS, configure.in (AC_INIT_AUTOMAKE): Version 1.13.17. - - Fix bug with fnmatch.h dependency, as follows: - * src/Makefile.am (OMIT_DEPENDENCIES): New macro. - * lib/Makefile.am (OMIT_DEPENDENCIES): New macro. - - * src/common.h (apply_nonancestor_delayed_set_stat): - Renamed from apply_delayed_set_stat. - (apply_delayed_set_stat, decode_mode, chmod_error_details, - chown_error_details, close_warn, closedir_warn, mkdir_error, - read_error_details, read_fatal_details, read_warn_details, - seek_error_details, seek_warn_details, utime_error, - write_error_details, write_fatal_details): New decls. - - Make diagnostic messages more regular. - * src/create.c (dump_file): Quote file names with colons if possible. - * src/compare.c (diff_archive): Likewise. - * src/extract.c (repair_delayed_set_stat, extract_archive): Likewise. - * src/incremen.c (get_directory_contents, gnu_restore): Likewise. - * src/mangle.c (extract_mangle): Likewise. - * src/misc.c (call_arg_error, call_arg_fatal, call_arg_warn): - Likewise. - * src/buffer.c (archive_write_error, flush_archive, close_archive, - new_volume, xclose): - Use error message functions to report errors consistently. - * src/compare.c (diff_sparse_files, diff_archive): Likewise. - * src/create.c (finish_sparse_file, dump_file): Likewise. - * src/extract.c (set_mode, set_stat, extract_sparse_file, - extract_archive): Likewise. - * src/list.c (list_archive): Likewise. - * src/update.c (append_file): Likewise. - * src/compare.c (diff_init, diff_sparse_files): - Use xalloc_die to report memory exhaustion. - * src/incremen.c (gnu_restore): Likewise. - * src/list.c (read_header): Likewise. - * src/mangle.c (extract_mangle): Likewise. - * src/misc.c (maybe_backup_file): Likewise. - * src/tar.c (decode_options): Likewise. - * src/compare.c (read_and_process, fill_in_sparse_array, - diff_sparse_files): - Use consistent terminology for unexpected-EOF message. - * src/extract.c (extract_sparse_file, extract_archive): Likewise. - * src/list.c (list_archive, read_header, skip_file, - skip_extended_headers): Likewise. - * src/buffer.c (archive_write_error): Add noreturn attribute to decl. - (xdup2): Regularize messages with rest of tar. - - * src/buffer.c (flush_read): Don't read past EOF. - - * src/extract.c (extr_init): - If we run out of memory, invoke apply_delayed_set_stat. - (prepare_to_extract): Don't complain if we can't remove ".". - (apply_delayed_set_stat): New function. - (apply_nonancestor_delayed_set_stat): - Renamed from apply_delayed_set_stat. All uses changed. - Don't remove head if it doesn't apply. - - * src/create.c (find_new_file_size): - Return size instead of storing through pointer. - All callers changed. - (deal_with_sparse): Don't keep reading after read errors. - (finish_sparse_file): Just abort if there is an internal error. - (dump_file): Fix typo: stat_warn and stat_error were interchanged. - Don't restore access times on directories during incremental dumps - until after dealing with the directory. - If ignoring failed reads, count closedir, read, and unknown - file errors as warnings, not errors. - Fix buffer overrun problem when dumping sparse files. - - * src/list.c (read_and): - Invoke apply_nonancestor_delayed_set_stat on file names - after handling them. - (decode_mode): Remove; moved to misc.c. - - * src/misc.c (safer_rmdir): New function. - (remove_any_file): Use it to avoid problems with rmdir("."). - (maybe_backup_file): Regularize diagnostics. - (undo_backup_file): Likewise. - (decode_mode): Moved here from list.c. - (chmod_error_details, chown_error_details, close_fatal, - close_warn, closedir_warn, mkdir_error, read_error_details, - read_warn_details, read_fatal_details, seek_error_details, - seek_warn_details, utime_error, write_error_details, - write_fatal_details): New functions. - - * src/delete.c (save_record): Remove static variable (now local). - (move_archive): Don't position before start of archive. - (write_record): Abort if count is zero at inopportune time. - Plug memory leak. - - * src/tar.c (decode_options): --delete and -f - are now - incompatible, since we didn't have time to fix their bugs. - - * tests/Makefile.am (TESTS): Remove delete02.sh. - * tests/ignfail.sh: Adjust to new quoting scheme again. - -2000-01-06 Paul Eggert - - * lib/getdate.y: Sync tm_diff with the GNU C Library. - (TM_YEAR_BASE): Renamed from TM_YEAR_ORIGIN. All uses changed. - (tm_diff): Renamed from difftm. All uses changed. - Replace body with that taken from GNU C Library 2.1.3pre1. - (get_date): Prefer tm_gmtoff to tm_diff if available. - -1999-12-29 "Melissa O'Neill" - - * tests/incremen.sh: Invoke stat on newly created file so that its - ctime is updated on Nextstep. - -1999-12-21 Machael Stone - - * lib/getdate.y (get_date): - Fix typo when checking for time_t overflow in time zone calculations. - -1999-12-13 Paul Eggert - - * NEWS, configure.in (AC_INIT_AUTOMAKE): Version 1.13.16. - - * README-alpha: New file. - * README: New sections for gzip and bzip2, Solaris. - Remove mention of BACKLOG. - - * configure.in (AC_C_BACKSLASH_A): Add. - (AC_CHECK_HEADERS): Add wchar.h. - (AC_CHECK_FUNCS): Add mbrtowc. - (AC_FUNC_CLOSEDIR_VOID): Add. - - * tests/Makefile.am (TESTS): Add delete02.sh. - (POSTPONED_TESTS): Remove. - (EXTRA_DIST): Remove $(POSTPONED_TESTS). - - * tests/preset.in: - Set LC_ALL rather than LANGUAGE, LANG, and LC_MESSAGES. - - * tests/ignfail.sh (err): Adjust to new quoting scheme. - - * tests/delete02.sh: Fix typo: need to list archive2, not archive. - - * tests/extrac03.sh: Use -P option, so that .. doesn't get diagnosed. - - * src/tar.c ("quotearg.h"): New include. - (usage): Now has __attribute__ ((noreturn)). - (confirm): Report errno if we can't open tty. - (confirm, decode_options): - Quote arbitrary strings in diagnostics. - (OVERWRITE_OPTION): New constant. - (long_options, usage, decode_options): New --overwrite option. - (decode_options): --keep-old-files, --overwrite, and --unlink-first - are now mutually exclusive. - Don't assume that gettext preserves errno. - (main): Set default quoting style to escape_quoting_style. - - * src/update.c (): New include. - (append_file): - Don't assume that gettext preserves errno. - Quote arbitrary strings in diagnostics. - Check for close error. - - * src/names.c (): New include. - (name_init, name_next, name_close, names_notfound, - collect_and_sort_names): Don't assume that gettext preserves - errno. Quote arbitrary strings in diagnostics. - (excluded_name): Fix typo that caused empty patterns to be - mishandled. - - * src/misc.c (): New include. - (quote_copy_string): Quote only newline and backslash; the output is no - longer meant for humans, and is locale-independent. - (contains_dot_dot): New function. - (remove_any_file): Don't use lstat; just rmdir the file and then use - unlink if the rmdir fails because the file isn't a directory. - Check for readdir and closedir errors. - (maybe_backup_file): Report "stat" for stat errors. - (maybe_backup_file, chdir_do): - Quote arbitrary strings in diagnostics. - (maybe_backup_file, undo_last_backup): - Don't assume that gettext preserves errno. - (call_arg_error, call_arg_fatal, call_arg_warn, - chdir_fatal, close_error, closedir_error, exec_fatal, mkfifo_error, - mknod_error, open_error, open_fatal, open_warn, opendir_error, - opendir_warn, read_error, read_fatal, readdir_error, readdir_warn, - readlink_error, readlink_warn, seek_error, seek_warn, stat_error, - stat_warn, truncate_error, truncate_warn, unlink_error, waitpid_error, - write_error, write_fatal, xfork, xpipe, quote_n, quote): New functions. - - * src/system.h (__attribute__): New macro. - (O_NDELAY, O_NONBLOCK, O_APPEND): Remove. - (S_ISDOOR): New macro. - (closedir): New macro, if CLOSEDIR_VOID. - - * src/rmt.c, src/rtapelib.c (decode_oflag): - O_APPEND might not be defined. - - * src/list.c: (read_and, list_archive): - Quote arbitrary strings in diagnostics. - (from_header): Use locale_quoting_style to quote diagnostics. - (print_header, print_for_mkdir): Quote with quotearg, not quote_copy_string. - - * src/rmt.h (REM_BIAS): Increase from 128 to (1 << 30). - - * src/Makefile.am: Use ## for copyright comments. - - * src/extract.c (): New include. - (enum permstatus): New enum. - (struct delayed_set_stat): file_name is now at end of buffer, to avoid - two mallocs. New members file_name_len, invert_permissions, permstatus. - (extr_init): Remove hack that silently adjusted newdir_umask. - (set_mode, set_stat): New args invert_permissions, permstatus, typeflag. - Use these args to decide whether and how to set modes. - (set_mode, set_stat, prepare_to_extract, extract_sparse_file, extract_archive): - Don't assume that gettext preserves errno. - (set_stat): Remove arg symlink_flag; subsumed by typeflag. - (delay_set_stat, repair_delayed_set_stat): New functions. - (make_directories): Avoid mkdir where last part of path is "..". - Create a struct delayed_set_stat for each directory made. - (prepare_to_extract): Renamed from unlink_destination, and - return 0 immediately if to_stdout_option; all callers changed. - (maybe_recoverable): New parameter interdir_made. - Add support for --overwrite. - (extract_sparse_file, extract_archive): - Quote arbitrary strings in diagnostics. - (extract_archive): By default, warn about ".." in member names, and skip them. - Don't open files with O_NONBLOCK or O_APPEND. - Open with O_TRUNC only if --overwrite; otherwise, use O_EXCL to avoid - overwriting them. Pass only rwxrwxrwx permissions to `open' and `mkdir', - minus the current umask. Keep track of intermediate directories made, - to avoid looping when making x/../x when x doesn't exist; the - earlier code solved this in a different way that didn't fit well - into the new scheme. Don't extract permissions onto existing - directories unless --overwrite is given. Do not add -wx------ - permissions to new directories permanently; just do it temporarily. - Remove no-longer-needed hack with MSDOS and directory time stamps. - (apply_delayed_set_stat): New argument specifies which directories to - fix statuses of. Do not wait until the end of extraction to fix - statuses; instead, fix a directory's status once we exit that directory. - This requires less memory and does the right thing in some cases - where the old method didn't. - (fatal_exit): New function. - - * src/incremen.c (): New include. - (get_directory_contents, gnu_restore): - Check for readdir and closedir errors. - (get_directory_contents, read_directory_file, gnu_restore): - Quote arbitrary strings in diagnostics. - (get_directory_contents, read_directory_file, write_directory_file): - Don't assume that gettext preserves errno. - - * src/create.c (): New include. - (start_header): Use `member names' to refer to archive member names, not - `archive names'. Warn about `..' in member names. - (finish_sparse_file, dump_file): - Quote arbitrary strings in diagnostics. - (finish_sparse_file, dump_file): - Don't assume that gettext preserves errno. - (dump_file): Don't use `access' to determine whether a directory is readable; - this isn't reliable if tar is setuid. Use `opendir' instead. - Check for readdir and closedir failures. - Don't dump sockets as if they were fifos; just warn and skip. - - * src/delete.c (move_archive): - Don't report fatal error merely because sizes don't fit - into struct mtop values; fall back on lseek instead. - Say `Cannot' uniformly, instead of `Could not' sometimes and `Cannot' others. - Say `reposition' instead of `re-position'. - (delete_archive_members): - Set archive to STDOUT_FILENO before outputting trailing buffer. - - * src/compare.c (): New include. - (diff_init): Use `Cannot' uniformly, instead of `Could not' sometimes - and `Cannot' others. - (report_difference, diff_archive): - Quote arbitrary strings in diagnostics. - (process_rawdata, diff_sparse_files, get_stat_data, diff_archive, seek_warn): - Don't assume that gettext preserves errno. - (diff_archive): Don't open regular files with O_NONBLOCK. - Preserve access times of files if --atime. - - * src/common.h (FATAL_ERROR): Use new fatal_exit function to exit. - (FATAL_ERROR, USAGE): Don't return 0. - (enum old files): New enum. - (old_files_option): New variable, replacing keep_old_files_option and - unlink_first_option. - (apply_delayed_set_stat): Now takes char const * param. - (fatal_exit, contains_dot_dot, chdir_fatal, close_error, - closedir_error, exec_fatal, mkfifo_error, mknod_error, open_error, - open_fatal, open_warn, opendir_error, opendir_warn, read_error, - read_fatal, readdir_error, readdir_warn, readlink_error, - readlink_warn, seek_error, seek_warn, stat_error, stat_warn, - truncate_error, truncate_warn, unlink_error, waitpid_error, - write_error, write_fatal, xfork, xpipe, quote, quote_n): New decls. - - * src/buffer.c: - (xclose, xdup2, child_open_for_compress, child_open_for_uncompress, - archive_write_error, archive_read_error, flush_archive, close_archive, - init_volume_number, new_volume): - Don't assume that gettext preserves errno. - - (xdup2): Don't report errno if dup returns an unexpected nonnegative value. - (open_archive): Reject multivolume verify attempts a bit earlier. - Rename local variable `access', in case it's defined by system header. - - (open_archive, backspace_output): Use `Cannot' uniformly, instead of - `Could not' sometimes and `Cannot' others. - - (open_archive, flush_read, flush_archive, close_archive, new_volume): - Quote arbitrary strings in diagnostics. - - (read_error): Set archive to STDOUT_FILENO temporarily when writing - archive buffer. - - (init_volume_number): Check for input and output errors in volno_file. - - (new_volume): Use new fatal_exit function to exit, and new xfork - function to fork. - - * m4/Makefile.am (EXTRA_DIST): Add c-bs-a.m4. - - * Makefile.am (ACINCLUDE_INPUTS): Add $(M4DIR)/c-bs-a.m4. - - * doc/tar.texi: Add --overwrite. - --absolute-names rejects ".." in names. - - * lib/quotearg.c: Add support for multibyte characters. - (ISGRAPH): Remove. - (ISPRINT): New macro. - (): Include if HAVE_MBRTOWC && HAVE_WCHAR_H. - (isprint, mbrtowc, mbsinit, mbstate_t): New macros, - defined if ! (HAVE_MBRTOWC && HAVE_WCHAR_H). - (quotearg_buffer_restyled): New function, with most of the old - quotearg_buffer's contents. - Major rewrite to support multibyte characters. - (quotearg_buffer): Now just calls quotearg_buffer_restyled. - - * m4/c-bs-a.m4: New file. - - * lib/Makefile.am: Use ## for copyright notice. - - * scripts/Makefile.am: Use ## on copyright notice. - - * doc/Makefile.am: - ($(srcdir)/tar.info, tar.dvi): We now use texinfo 4.0. - -1999-12-05 Paul Eggert - - * doc/ChangeLog, lib/ChangeLog, scripts/ChangeLog, - src/ChangeLog, tests/ChangeLog: Remove these files. - * ChangeLog.1: New file, incorporating the above files, plus old - ChangeLog entries. - * Makefile.am (EXTRA_DIST): Add ChangeLog.1. - -1999-12-05 Dale Worley - - * src/compare.c (, struct utimbuf): Add. - (diff_archive): Restore access times if --atime. - * doc/tar.texi: Explain that --atime also preserves modification time. - -1999-12-04 Gerhard Poul - - * ABOUT-NLS: Update to latest version from ftp.gnu.org. - * BACKLOG, TODO: Remove. - * Makefile.am (all-local, BABYL, dist-zoo, id, ID): Remove. - * README: Bring up to date. - -1999-12-03 Paul Eggert - - * NEWS, configure.in (AM_INIT_AUTOMAKE): Version 1.13.15. - - * src/compare.c (diff_archive): - Do not set errno to EPIPE; we no longer use perror. - - * src/create.c (dump_file): - If a parent directory said that a file should be there but it is - absent, diagnose it as being removed in the meantime. - Do not pass meaningless errno to ERROR when reporting that the - file changed as we read it. - Report that a file changed if its ctime changes; this is more - sensitive than mtime+size, and more accurate. - - * src/incremen.c (enum children): New type. - (struct directory): Change old char allnew member to new enum children - children member. - All uses changed. - (get_directory_contents): When doing an incremental dump that does - not cross filesystem boundaries, dump the mount points, even though - they are in a different filesystem. This is for convenience when - restoring, and for consistency with non-incremental dumps. - This requires a 3-way flag for keeping track of which children we want, - so we use enum children rather than boolean. - - * src/open3.c (modes): Remove. - (open3): Remove unportable assumptions about flag encodings. - Use `stat' instead of `access' for testing file existence, - to avoid problems with setuid programs. - - * src/names.c (name_next): If file names are given both in the - command line (e.g. via -C) and in a file (via -T), do not - ignore the command-line names. - - * m4/uintmax_t.m4: Backport to autoconf 2.13. - - * doc/tar.texi: Clarify getdate authorship. - -1999-11-23 Paul Eggert - - * lib/Makefile.am (DISTCLEANFILES): New macro. - - * configure.in (tar_fnmatch_hin): - Remove; it runs afoul of a bug in autoconf 2.13. - Instead, always link fnmatch.h to some file, even if it's a throwaway. - -1999-11-19 Paul Eggert - - * m4/largefile.m4: Update serial. - -1999-11-18 Paul Eggert - - * m4/largefile.m4 (AC_SYS_LARGEFILE_FLAGS): Work around a bug in - the QNX shell, which doesn't propagate exit status of failed - commands inside shell assignments. - -1999-11-07 Paul Eggert - - * NEWS, configure.in (AM_INIT_AUTOMAKE): Version 1.13.14. - - * configure.in (AC_PREREQ): Bump to 2.13. - (ALL_LINGUAS): Add pt_BR, ja. - (AC_FUNC_FNMATCH): Remove lib/funmatch.h before invoking, not after. - (tar_cv_path_RSH): Prefer a non-symlink rsh to a symlink one, - for AIX crossbuilds. - - * doc/tar.texi: New node create options for --ignore-failed-read. - Remove unused version control symbols. - Modernize texinfo usage. - - * src/tar.c (usage): Add examples. - - * m4/fnmatch.m4 (AC_FUNC_FNMATCH): - Include fnmatch.h when testing fnmatch. - - * src/common.h (collect_and_sort_names): New decl. - - * src/list.c (from_header): - Handle 32-bit two's complement negative time stamps - even if the leading octal digit is 2 or 3. - - * src/extract.c (set_stat): Remove duplicate code. - - * src/create.c (to_chars): Remove trailing newline from warning. - (dump_file): Ignore doors. - (finish_header): Report block numbers with origin 0, not origin 1. - - * src/rmt.c: Include getopt.h. - (long_opts): New constant. - (usage): New function. - (main): Implement --help and --version. - Output usage message if arguments are bad. - -1999-10-10 Paul Eggert - - * NEWS, configure.in (AM_INIT_AUTOMAKE): Version 1.13.13. - - * README: Remove --with-dmalloc. - Add --disable-largefile. - Remove old NeXT dirent problems, or AIX valloc problems. - Remove old union wait advice, and old %lld advice. - Remove advice about FreeBSD 2.1.7, ISC 4.1mu, Ultrix `make'. - - * doc/tar.texi: Clarify documentation for portable file names. - - * configure.in (AM_WITH_DMALLOC): Remove. - (ALL_LINGUAS): Add ja. - - * src/tar.c (decode_options): - Invalid dates are now treated as (time_t) -1. - Redo version message to conform to GNU standards. - - * src/create.c (dump_file): - Fix typo: last two args to dump_file were interchanged. - * src/update.c (update_archive): Likewise. - - * src/common.h (tartime): New decl. - - * src/list.c (tartime): Now extern. - (read_and): Invalid headers cause errors, not warnings. - -1999-10-03 Paul Eggert - - * lib/getdate.y (__attribute__): - Don't use if GCC claims to be before 2.8; this is - needed for OPENStep 4.2 cc. Also, don't use if strict ANSI. - -1999-09-25 Paul Eggert - - * lib/fnmatch.c, lib/fnmatch.hin: Merge changes from latest glibc. - * lib/getopt.c, lib/getopt.h, lib/getopt1.c: Likewise. - - * tests/incremen.sh: Add yet another sleep. - -1999-09-24 Paul Eggert - - * NEWS: A read error now causes a nonzero exit status. - - * src/create.c (to_chars): Fix base-256 output. - - * src/buffer.c (write_error): - Read error is an error, not just a warning. - -1999-09-24 Paul Eggert - - * NEWS, configure.in (AM_INIT_AUTOMAKE): Version 1.13.12. - - * src/tar.c (): Include. - (time): Declare if not defined. - (confirm): Don't read past EOF. - (long_options, usage): Add --no-same-owner, --no-same-permissions. - (main): Use clock_gettime if available. - - * tests/Makefile.am (TESTS): Add incremen.sh - (INCLUDES): Add -I../lib, for fnmatch.h. - - * src/update.c (update_archive): - Remove call to name_expand; had no effect. - Use chdir_do to change into directory. - Use deref_stat instead of stat. - Use add_avoided_name to mark names to be avoided; the old method of - setting a bit with the name caused all descendants of that name to - be avoided, in some circumstances. - - * tests/incremen.sh: Remove unnecessary sleeps. - - * src/names.c (name_next): Go back to using plain chdir. - (name_gather): Use chdir_arg to keep track of arguments to chdir. - (addname): Likewise. - (name_match): Use chdir_do to act on chdir args. - (merge_sort): Moved here from incremen.c. - (compare_names, add_hierarchy_to_namelist, collect_and_sort_names): - Likewise. - (name_expand): Remove. - (name_from_list): Skip fake names. - Use chdir_do to act on chdir args. - (struct avoided_name): New struct. - (avoided_names): New var. - (add_avoided_name, is_avoided_name): New functions. - - * src/system.h (stat, lstat): Define in terms of statx on - STX_HIDDEN && !_LARGE_FILES /* AIX */ hosts. - (UCHAR_MAX): New macro. - (TYPE_MAXIMUM): Cast to arg type, for types narrow than int. - - * m4/largefile.m4: Work around GCC 2.95.1 bug with HP-UX 10.20. - - * src/incremen.c (): Remove include; no longer used. - (time): Remove decl. - (time_now): Remove. - (get_directory_contents): Use deref_stat. - Consider a subdirectory to be all new only if - listed_incremental_option or if it its timestamp is newer than the - cutoff. - (add_hierarchy_to_namelist, merge_sort): Move to names.c. - (read_directory_file): Now extern. Do not set time_now. - (write_directory_file): Renamed from write_dir_file. - Use start_time instead of time_now. - (compare_names, collect_and_sort_names): Move to names.c. - - * src/mangle.c (): Remove; not used. - (time): Do not declare. - - * src/misc.c (chdir_from_initial_wd): Remove. - (deref_stat): New function. - (struct wd): New struct. - (wd, wds, wd_alloc): New variables. - (chdir_arg, chdir_do): New function. - - * src/compare.c (get_stat_data): Use deref_stat. - - * src/common.h (name_expand): Remove. - - * src/list.c (time): Declare if not defined. - (base_64_digits): Moved here from create.c. - (base64_map): Use UCHAR_MAX for size, not less-clear (unsigned char) - -1. - (read_and): Don't get time from header unless we need it now; - as getting time can cause duplicate diagnostics if bogus. - Remove "Hmm, " from diagnostic. - Use "Skipping to next header" uniformly. - (from_header): Renamed from from_chars. All uses changed. - Allow different forms for unportable 2's complement numbers. - Don't check for extended forms when parsing checksums. - Parse base-256 output. - (gid_from_header): Renamed from gid_from_chars. All uses changed. - (major_from_header): Renamed from major_from_chars. All uses changed. - (minor_from_header): Renamed from minor_from_chars. All uses changed. - (mode_from_header): Renamed from mode_from_chars. All uses changed. - (off_from_header): Renamed from off_from_chars. All uses changed. - (size_from_header): Renamed from size_from_chars. All uses changed. - (time_from_header): Renamed from time_from_chars. All uses changed. - Warn about future timestamps. - (uid_from_header): Renamed from uid_from_chars. All uses changed. - (uintmax_from_header): Renamed from uintmax_from_chars. - All uses changed. - (tartime): New function, incorporating isotime. - (isotime): Delete. - (print_header): Use tartime. - - * src/create.c (to_chars): Fix typo in decl. - Don't assign through char const *. - Rename name_expand back to collect_and_sort_names. - - * src/extract.c (): No need to include. - (time): No need to declare. - (now): Remove variable. - (extr_init): Don't initialize `now'. - Increment same_permissions_option and same_owner_option if we_are_root - is nonzero; this supports the new --no-same-owner option. - (set_stat): Use start_time instead of `now'. - - * src/create.c (struct link): Remove unused linkcount member. - (base_64_digits): Move to list.c. - (base_8_digits): Remove. - (to_octal): New function, with some of old contents of to_base. - (to_base): Remove. - (to_base256): New function. - (to_chars): Use base 256, not base 64, for huge values. - (mode_to_chars): Don't use two's complement in GNU format or POSIX - format. - (dump_file): Interchange last two arguments. If TOP_LEVEL is negative, - it means we have an incremental dump where we don't know whether this - is a top-level call. - Use deref_stat instead of statx / stat / lstat. - Cast result of alloca. - Check for dates if 0 < top_level, not if listed_incremental_option. - Move multiple-link check after directory check. - Do not dump avoided names. - Dump hard links to symbolic names as links, not as separate - symbolic links. - start_header cannot return a null pointer, so don't test for it. - Likewise for find_next_block. - - * src/buffer.c, src/common.h (): Include. - (read_error): Read error is an error, not just a warning. - (print_total_written): Also print human-readable byte count, and - bytes/s. - (open_archive, flush_write): Use start_time, not current time. - (flush_read): Report about garbage bytes ignored at end of archive, - but act on non-garbage bytes (instead of ignoring them). - (new_volume): Use WARN for warnings. - - * doc/Makefile.am: - ($(srcdir)/tar.info): Add -I$(srcdir) so that subdir builds work. - - * Makefile.am (ACINCLUDE_INPUTS): Add $(M4DIR)/fnmatch.m4. - - * m4/Makefile.am (EXTRA_DIST): Add fnmatch.m4. - - * lib/Makefile.am (noinst_HEADERS): - Rename fnmatch.h to fnmatch.hin; add human.h. - (libtar_a_SOURCES): Add human.c, xstrtoul.c. - (INCLUDES): Remove -I.. -I$(srcdir) -- automake adds this for us. - - * src/Makefile.am (rmt_LDADD, tar_LDADD): New macros. - - * lib/fnmatch.c (strchrnul): - Define to __strchrnul if _LIBC, to our own replacement otherwise. - Do not define if !_LIBC and if it already exists. - (internal_fnmatch): Use it. - - * configure.in (tar_LDADD): New variable, used only when linking tar. - (rmt_LDADD): Similarly, for rmt. - (AC_FUNC_FNMATCH): Link fnnmatch.hin to fnmatch.h if we're using our - fnmatch.c; otherwise, use the system fnmatch.h. - - * doc/tar.texi: Add --no-same-owner, --no-same-permissions. - Modernize sample backup script. - - * THANKS: Martin Goik's email address has changed. - - * m4/fnmatch.m4: New file. - -1999-09-03 Paul Eggert - - * lib/lchown.h (ENOSYS): Don't use ENOMSG; it's not in NeXTStep3.3. - Use EINVAL instead. - -1999-08-29 Paul Eggert - - * lib/getdate.y (get_date): - Rename outermost local `probe' to `quarter'. - Rename latter local `tm' to probe_tm. - From: Jim Meyering - Message-ID: - -1999-08-28 Paul Eggert - - * lib/getdate.y (PC): New macro; use it when possible. - (number): Handle `Nov 11 1996' example correctly. - See Risks Digest 20.55 (1999-08-27) - http://catless.ncl.ac.uk/Risks/20.55.html#subj18 - -1999-08-23 Paul Eggert - - * NEWS, configure.in (AM_INIT_AUTOMAKE): Version 1.13.11. - - Remove minor cases of lint from many source files: this includes - unnecessary casts, uses of NULL, etc. - - * configure.in (AC_PROG_YACC): Remove. - (YACC): Always use bison. - (AC_STRUCT_TIMEZONE): Add. - (AC_REPLACE_FUNCS): Add strcasecmp, strncasecmp. - - * doc/tar.texi: --bzip2 is now -I. Remove obsolete time zone info. - Fix spelling. - - * lib/Makefile.am (EXTRA_DIST): Add strcasecmp.c, strncasecmp.c. - ($(srcdir)/getdate.c): Rename y.tab.c to getdate.c only if successful. - - * lib/strcasecmp.c, lib/strncasecmp.c: New files. - - * src/common.h (merge_sort): Remove decl; no longer exported. - - * src/system.h (voidstar): Remove. - (memcpy, memcmp): Cast args. - ("xalloc.h"): Add include. - (xmalloc, xrealloc): Remove decl. - - * src/mangle.c (time): Do not declare if defined. - (first_mangle, mangled_num): Remove. - - * src/list.c (from_chars): Report out-of-range values more precisely. - (off_from_chars): Do not allow negative offsets. - (uid_from_chars): Allow negative uids. - - * src/create.c (linklist): Now static. - (to_chars): Fix wording of message to match from_chars. - - * src/misc.c (merge_sort): Move to incremen.c. - * src/incremen.c (merge_sort): Move here from misc.c; now static. - It's too painful to make it both generic and portable. - (read_directory_file): "timestamp" -> "time stamp" in messages. - - * src/tar.c (long_options, usage, main): -y is now -I (for --bzip). - (usage): Fix misspelling. - (OPTION_STRING): -y is now -I. - (decode_options): Use -1, not EOF, for getopt_long result. - Fix typo when invoking xstrtoumax: look for LONGINT_OK, not LONG_MAX. - Handle operands after any "--" argument. - (main): Report any output errors. - - * src/rmt.c (main): status is ssize_t, not long. - - * src/names.c (name_gather): Handle trailing -C option correctly. - (addname): use memcpy, not strncpy, to copy a string of known length. - (name_match): Handle trailing -C option correctly. - Propagate -C option to following files. - (name_match, name_scan): Remove redundant matching code. - - * src/buffer.c (open_archive): Use American spelling in diagnostic. - - * lib/getdate.y: Major rewrite. Add copyright notice. - (): Include only if testing. - (ISUPPER): Remove. - (ISLOWER): New macro. - (): Include if HAVE_STRING_H, not USG. - (bcopy): Remove. - (yymaxdepth, ..., yycheck): Don't bother to redefine, since we assume - bison. - (EPOCH_YEAR): Renamed from EPOCH. - (table): Renamed from TABLE. - (meridian): Now an anonymous enum. - (struct parser_control): New type. - (YYLEX_PARAM, YYPARSE_PARAM, YYSTYPE): New macros. - (yyInput, ..., yyRelYear): Migrated into struct parser_control. - (%pure_parser): Added, so that the parser is pure. - (%union): Removed; the type is now just plain int. - All %type directives removed. - (tLOCAL_ZONE): New %token. - (month_day_table): Renamed from MonthDayTable. - (gmtime, localtime, mktime, time): Declare only if not defined. - (meridian_table): New table. - (dst_table): New table. - (units_table): renamed from UnitsTable. - (relative_time_table): Renamed from OtherTable. - (time_zone_table): Renamed from TimezoneTable. Modernized. - (military_table): Renamed from MilitaryTable. - (to_hour): Renamed from ToHour. - (to_year): Renamed from ToYear. - (lookup_zone): New function. - (LookupWord): Renamed from lookup_word. Use lookup_zone for time - zones. - (yylex): Now reentrant. All callers changed. - (get_date): Add support for local time zone abbreviations. - Make it reentrant. - -1999-08-20 Paul Eggert - - * NEWS, configure.in (AM_INIT_AUTOMAKE): Version 1.13.10. - - * src/create.c (to_chars): Generate GNU base-64 representation - if we are generating an old or new GNU format tar file for a - number that can't be represented with the POSIX format. - - * configure.in (AC_CHECK_FUNCS): Add fchdir. - (AM_FUNC_GETLINE): Add. - (LIBOBJS): Add getline.o to workaround comment. - * Makefile.am (ACINCLUDE_INPUTS): Add $(M4DIR)/getline.m4. - * m4/Makefile.am (EXTRA_DIST): Add getline.m4. - * lib/Makefile.am (noinst_HEADERS): Add getline.h, save-cwd.h. - (libtar_a_SOURCES): Add save-cwd.c, xgetcwd.c. - * lib/getline.c, lib/getline.h, lib/save-cwd.c, - lib/save-cwd.h, m4/getline.m4: New files. - - * src/misc.c (): Include. - (chdir_from_initial_wd): New function. - - * src/names.c (name_next): Use chdir_from_initial_wd, not chdir. - (name_gather): Handle `-C x -C y' correctly. - Do not rely on addname to handle -C. - (addname): New CHANGE_DIR parameter. All callers changed. - Remove ugly calls to getcwd; no longer needed. - (name_match, name_from_list): Use chdir_from_initial_wd, not chdir. - - * src/incremen.c (listed_incremental_stream): New var. - (read_directory_file): Remove arbitrary limits on file name length. - Do not attempt to get the working directory; we can bypass this - on fchdir hosts. Open the listed_incremental_option file for both - read and write instead of opening it twice. Check for I/O errors - when doing I/O to this file. Check for invalid data in the file, - and report line numbers of invalid data. - (write_dir_file): Likewise. - (collect_and_sort_names): Use chdir_from_initial_wd, not chdir. - Do not invoke write_dir_file; that's our caller's responsibility. - - * src/list.c (max): New macro. - (isotime): Now takes time_t, not time_t *. Report the decimal values - of times that can't be broken down. - (print_header): Don't assume that major and minor device numbers can - fit into uintmax_t. - - * src/common.h (struct name): change_dir is now char const *. - (write_directory_file): Remove unused decl. - (STRINGIFY_BIGINT): Assume b always points to UINTMAX_STRSIZE_BOUND - chars; the old `sizeof (b)' broke when b was a pointer not an array. - (chdir_from_initial_wd): New decl. - (addname): New 2nd arg. - - * THANKS: Torsten Lull -> Catrin Urbanneck - -1999-08-18 Paul Eggert - - * configure.in (HAVE_GETHOSTENT, HAVE_SETSOCKOPT): - Don't depend on ac_cv_func variables. - From Albert Chin-A-Young . - -1999-08-18 Paul Eggert - - * NEWS, configure.in (AM_INIT_AUTOMAKE): Version 1.13.9 - - * m4/signedchar.m4: New file. - * configure.in (pe_AC_TYPE_SIGNED_CHAR): Add. - * src/system.h (signed_char): New macro. - * Makefile.am (ACINCLUDE_INPUTS): Add $(M4DIR)/signedchar.m4. - * m4/Makefile.am (EXTRA_DIST): Add signedchar.m4. - - * src/create.c (write_eot): Write at least two zero blocks. - - * src/extract.c (extract_archive): Fix sparse array bug: - we did not find end of array correctly. - - * src/compare.c: (fill_in_sparse_array, diff_sparse_files): - Don't assume find_next_block yields nonnull. - * src/extract.c (extract_sparse_file, extract_archive): Likewise. - * src/list.c (skip_extended_headers): Likewise. - - * src/list.c (read_and, list_archive): Simplify code. - (read_header): Fix computation of signed checksums on machines where - char is unsigned. - Do not consider a block to be zero unless all its bytes are zero, - even the checksum bytes. Do not attempt to parse the checksum of - a zero block. Fix memory leak with long names and links. - (from_chars): Accommodate a buggy tar that outputs leading NUL - if the previous field overflows. - - * src/misc.c (quote_copy_string): Generate \177 for '\177', not - \?, for portability to non-ASCII hosts. - -1999-08-16 Paul Eggert - - * configure.in (AM_INIT_AUTOMAKE), NEWS: Version 1.13.8. - - * src/extract.c (make_directories): Do not chown intermediate - directories, even if we are root. - - * src/list.c (read_header): Fix bugs when interpreting - POSIX-compliant headers that do not contain null bytes in the - header or link names. - -1999-08-14 Paul Eggert - - * configure.in (AM_INIT_AUTOMAKE), NEWS: Version 1.13.7. - - * configure.in (AC_CHECK_HEADERS): Remove sys/wait.h. - (AC_HEADER_SYS_WAIT): Add. - (AC_REPLACE_FUNCS): Add waitpid. - (tar_cv_header_union_wait, HAVE_UNION_WAIT): Remove. - * lib/waitpid.c: New file. - * lib/Makefile.am (EXTRA_DIST): Add waitpid.c. - * src/system.h (WCOREDUMP): Remove; no longer used. - (WIFSTOPPED): Likewise. - (WEXITSTATUS, WIFSIGNALED): Default to Solaris 7 versions. - * src/buffer.c (child_open_for_compress): Undo previous change. - (close_archive): Use waitpid, POSIX-style, instead of old BSD style. - (new_volume): Likewise. - - * src/buffer.c, src/extract.c, src/incremen.c (time): - Don't declare if defined. - * src/extract.c (extr_init): Remove unneeded cast around 0 arg to time. - * src/incremen.c (read_directory_file): - Invoke `time' the same way everyone else does. - Check validity of --listed-incremental file contents a bit better. - Do not worry about --after-date-option; tar.c now checks this. - * src/list.c (isotime): Report ??? if localtime returns null. - Don't assume years fit into four digits. - Don't append trailing newline. - (print_header): Report ??? if localtime returns null; - Don't assume years fit into four digits. - - * src/compare.c (diff_archive): Do not fall back on absolute name - when --absolute-names is not specified. - - * src/create.c (start_header): - Include text of ignored filesystem prefix in warning. - (create_archive): Check for excluded names when doing incremental - pass through directory. - (dump_file): Do not dump old files explicitly given on command line - when using --listed-incremental. Do not strip ./ prefix from names. - - * src/tar.c: -g now implies after_date_option = 1. - -g and -N are now incompatible options. - - * doc/tar.texi: Explain --exclude better. Don't strip leading `./'. - -1999-08-11 Jeff Dairiki - - * src/list.c (read_header): Don't parse OLDGNU_FORMAT - incremental headers as POSIX prefixes. - -1999-08-11 Paul Eggert - - * NEWS, configure.in: Version 1.13.6. - - * configure.in (ALL_LINGUAS): Add pt_BR. - * po/pt_BR.po: New file. - - * doc/Makefile.am ($(srcdir)/tar.info, $(srcdir)/header.texi): - Renamed from tar.info and header.texi; adjust actions so that - they work in other directories. - - * doc/tar.texi: Add -y and --bzip2. - Patterns containing / now exclude only file names whose prefix match. - - * lib/exclude.h (excluded_filename): New option parameter. - (add_exclude_file): New ADD_FUNC parameter. - (excluded_pathname): Remove decl. - * lib/exclude.c (_GNU_SOURCE): - Remove; no longer needed since we don't use FNM_ macros. - (excluded_filename): Renamed from excluded_filename_opts. - (excluded_filename, excluded_pathname): Remove. - (add_exclude_file): New ADD_FUNC parameter. - - * po/POTFILES.in: Add lib/quotearg.c. - - * src/buffer.c (_GNU_SOURCE): Define. - (): Include unconditionally. - (child_open_for_compress): Dup after closing, to avoid possible file - descriptor exhaustion. - (flush_write): Use FILESYSTEM_PREFIX_LEN instead of MSDOS ifdef. - (flush_read): Likewise. - - * src/common.h (LG_8, LG_64): New macros. - (excluded_with_slash, excluded_without_slash): New vars. - (excluded): Remove. - (base_64_digits): New decl. - (gid_to_chars, major_to_chars, minor_to_chars, mode_to_chars, - off_to_chars, size_to_chars, time_to_chars, uid_to_chars, - uintmax_to_chars, - GID_TO_CHARS, MAJOR_TO_CHARS, MINOR_TO_CHARS, MODE_TO_CHARS, - OFF_TO_CHARS, SIZE_TO_CHARS, TIME_TO_CHARS, UID_TO_CHARS, - UINTMAX_TO_CHARS): - Renamed from gid_to_oct, major_to_oct, minor_to_oct, mode_to_oct, - off_to_oct, size_to_oct, time_to_oct, uid_to_oct, uintmax_to_oct, - GID_TO_OCT, MAJOR_TO_OCT, MINOR_TO_OCT, MODE_TO_OCT, OFF_TO_OCT, - SIZE_TO_OCT, TIME_TO_OCT, UID_TO_OCT, UINTMAX_TO_OCT, - respectively. All definitions and uses changed. - (excluded_name): New decl. - - * src/compare.c (diff_archive): - Open files with O_NONBLOCK instead of O_NDELAY. - - * src/create.c (base_64_digits): New constant. - (base_8_digits): New macro. - (MAX_VAL_WITH_DIGITS): New macro. - (to_base): First half of old to_oct. Support base 64 too. - (to_chars): Other half of old to_oct, for 64-bit support. - (GID_NOBODY, UID_NOBODY): Don't define if the headers don't. - (gid_substitute, uid_substitute): Look up names dynamically if - GID_NOBODY and UID_NOBODY aren't defined; use -2 if all else fails. - (mode_to_chars): Renamed from mode_to_oct. - Support negative values in all the _to_chars functions. - (start_header): Use FILESYSTEM_PREFIX_LEN instead of MSDOS ifdef. - Abort if archive format is DEFAULT_FORMAT when it shouldn't be. - (dump_file): Inspect entire pathname, not just new file name - component, when deciding whether to exclude it. - - * src/extract.c (extract_archive): - Open files with O_NONBLOCK instead of O_NDELAY. - - * src/incremen.c (get_directory_contents): - Inspect entire pathname, not just new file name - component, when deciding whether to exclude it. - - * src/list.c (): Do not include. - (from_chars): Renamed from from_oct. New parameter specifying - the negative of the minimum allowed value. Support negative - and base-64 values. - (base64_map): New var. - (base64_init): New function. - (print_header): Output numeric uids and gids if numeric_owner_option. - - * src/misc.c (quote_copy_string): Use LG_8 instead of constants. - - * src/names.c (_GNU_SOURCE): Define. - (): Include unconditionally. - (excluded_name): New function, taking over duties of excluded_pathname. - All uses changed. - - * src/rmt.c (decode_oflag): New function. - (main): Use it to support symbolic open flags. - - * src/rtapelib.c (encode_oflag): New function. - (rmt_open__): Do not allow newlines in the path. - Propagate errno correctly. - Decode symbolic open flags, if present. - - * src/system.h (FILESYSTEM_PREFIX_LEN, ISSLASH, O_ACCMODE, O_NONBLOCK): - New macros. - - * src/tar.c: (long_options, usage, OPTION_STRING, decode_options): - New -y or --bzip2 option. - (add_filtered_exclude): New function. - (decode_options): Put excluded patterns with / into - excluded_with_slash, and without / into excluded_without_slash. - Compare newer_mtime_option to its new initial value - TYPE_MINIMUM (time_t) when deciding whether more than one - threshold date was specified. - -1999-07-20 Paul Eggert - - * NEWS, configure.in: Version 1.13.5. - - * src/common.h (FATAL_ERROR): Invoke apply_delayed_set_stat - before exiting. - * src/buffer.c (new_volume): Likewise. - * src/incremen.c (read_directory_file): Likewise. - * src/tar.c (decode_options): - ERROR ((TAREXIT_FAILURE, ... -> FATAL_ERROR ((0, - for consistency. - - * NEWS, configure.in (AM_INIT_AUTOMAKE): Version 1.13.4. - * configure.in (AC_CHECK_FUNCS): Add lstat, readlink, symlink. - - * src/system.h (lstat): Define only if !HAVE_LSTAT && !defined lstat. - (S_ISMPB, S_ISMPC, S_ISNWK): Remove unused macros. - (S_ISBLK, S_ISCHR, S_ISCTG, S_ISFIFO, S_ISLNK, S_ISSOCK): - Define to 0 if the corresponding S_IF* macro is not defined. - (mkfifo): Do not define if already defined, or if S_IFIFO - is not defined. - - * src/compare.c (diff_archive): Use HAVE_READLINK, not - S_ISLNK, to determine whether to invoke readlink. - * src/create.c (dump_file): Likewise. - - * src/extract.c (set_mode): - Do not chmod unless we are root or the -p option was given; - this matches historical practice. - (unlink_destination): New function, which checks for unlink failures. - (maybe_recoverable): Stay quiet if -U. - (extract_archive): Use O_EXCL if unlink_first_option. - Report unlink failures. - Use HAVE_SYMLINK, not S_ISLNK, to determine whether symlink exists. - Use HAVE_MKFIFO || defined mkfifo, not S_ISFIFO, to determine whether - mkfifo exists. - - * src/incremen.c (get_directory_contents): Depend on - S_ISHIDDEN, not AIX, to determine whether to invoke S_ISHIDDEN. - - * src/list.c: Remove S_IS* ifdefs. - * src/misc.c (maybe_backup_file): Likewise. - - * src/misc.c (maybe_backup_file): - "Virtual memory exhausted" -> "Memory exhausted", - to conform to the other places this message is issued. - - * src/mangle.c (extract_mangle): - Replace #ifdef S_ISLNK with #ifdef HAVE_SYMLINK. - - * src/rtapelib.c (rmt_open__): - Remove typo that caused us to omit the first char - of the basename. - -1999-07-16 Paul Eggert - - * NEWS, configure.in (AM_INIT_AUTOMAKE): version 1.13.3. - - * doc/tar.texi: A path name is excluded if any of its file name - components matches an excluded pattern, even if the path name was - specified on the command line. - * src/create.c (create_archive): Likewise. - * src/list.c (read_and): Likewise. - * src/update.c (update_archive): Likewise. - * lib/exclude.h (excluded_pathname): New decl. - * lib/exclude.c (_GNU_SOURCE): Define. - (FILESYSTEM_PREFIX_LEN, ISSLASH): New macros. - (excluded_filename_opts): New function. - (excluded_pathname): New function. - - * lib/Makefile.am (EXTRA_DIST): - xstrtol.c moved here from libtar_a_SOURCES. - (libtar_a_SOURCES): Move xstrtol.c to EXTRA_DIST. - Remove xstrtoul.c; no longer needed. - * lib/xstrtol.c: Remove. - - * src/tar.c (decode_options): - Set newer_time_option to TYPE_MINIMUM, so that - negative timestamps are handled correctly. - Replace invocations of xstrtol and xstrtoul with xstrtoumax, for - uniformity (and so that we don't need to have the other fns). - (main): Remove call to init_total_written; no longer needed. - - * configure.in (AC_CHECK_SIZEOF): Remove no-longer-needed - checks for unsigned long and long long. - * src/arith.c: Remove. - * src/Makefile.am (tar_SOURCES): Remove arith.c. - * po/POTFILES.in: Remove src/arith.c. - * src/arith.h: Use double, to simplify configuration gotchas. - (tarlong): Now double. - (TARLONG_FORMAT): New macro. - (BITS_PER_BYTE, BITS_PER_TARLONG, SUPERDIGIT, BITS_PER_SUPERDIGIT, - LONGS_PER_TARLONG, SIZEOF_TARLONG, struct tarlong, - zerop_tarlong_helper, lessp_tarlong_helper, clear_tarlong_helper, - add_to_tarlong_helper, mult_tarlong_helper, print_tarlong_helper, - zerop_tarlong, lessp_tarlong, clear_tarlong, add_to_tarlong, - mult_tarlong, print_tarlong): Remove. All callers replaced with - arithmetic ops. - - * src/common.h (init_total_written): Remove decl. - - * src/buffer.c (total_written): - Remove; replaced with prev_written + bytes_written. - (prev_written): New var. - (init_total_written): Remove. - (print_total_written): Use TARLONG_FORMAT instead of print_tarlong. - - * m4/ulonglong.m4 (jm_AC_TYPE_UNSIGNED_LONG_LONG): - Make sure that we can shift, multiply - and divide unsigned long long values; Ultrix cc can't do it. - - * lib/modechange.c (mode_compile): Use uintmax_t, not unsigned long. - Check for any unknown bits, not just unknown bits left of the leftmost - known bit. - - * lib/quotearg.c (quotearg_buffer): - Don't quote spaces if C quoting style. - * src/list.c (from_oct): - Use C quoting style for error; omit trailing NULs. - -1999-07-14 Paul Eggert - - * configure.in (AM_INIT_AUTOMAKE), NEWS: Version 1.13.2. - - * m4/xstrtoumax.m4 (jm_AC_PREREQ_XSTRTOUMAX): Check whether - defines strtoumax as a macro (and not as a function). - HP-UX 10.20 does this. - - * src/tar.c (usage): tar-bugs@gnu.org -> bug-tar@gnu.org - * PORTS, README, TODO, doc/tar.texi: Likewise. - -1999-07-12 Paul Eggert - - * configure.in (AM_INIT_AUTOMAKE): Version 1.13.1. - (LIBOBJS): Add mktime.o to automake 1.4 bug workaround. - - * src/list.c (decode_header): - Do not assume that S_IFBLK and S_IFCHR are defined. - - * src/create.c (start_header): Do not assume S_IFMT is defined. - (dump_file): Remove unnecessary check for screwy apollo lossage. - Do not assume S_IFBLK and S_IFCHR are defined. - - * src/extract.c (extract_archive): - Test whether S_IFCHR and S_IFBLK are nonzero, - not whether they are defined, for consistency with other tests. - - * src/buffer.c (is_regular_file): - Don't succeed on files that we can't access due to - permissions problems. - (open_archive): Fix wording on fatal error message. - Don't bother to stat /dev/null if the archive is not a character - special device. - - * src/compare.c (process_rawdata, diff_sparse_files, diff_archive): - Report an error, not a warning, for I/O errors. - (process_rawdata, process_dumpdir, diff_sparse_files): - Change ungrammatical "Data differs" to "Contents differ". - (get_stat_data): Find hidden files on AIX. - Accept file name as argument; all uses changed. - (get_stat_data, diff_archive): Use system error message for - nonexistent files rather than rolling our own. - (diff_archive): Unknown file types are errors, not warnings. - Normalize spelling of message to "File type differs". - Use get_stat_data to get link status, for consistency. - Do not inspect st_rdev for fifos. - Do not assume st_mode values contain only file types and mode bits. - Check for mode changes and device number changes separately. - - * src/update.c (append_file): - Open the file before statting it, to avoid a race. - Complain about file shrinkage only when we reach EOF. - -1999-07-08 Paul Eggert - - * NEWS, configure.in (AM_INIT_AUTOMAKE): Version 1.13 released. - - * configure.in (AC_EXEEXT): Add. - - * lib/Makefile.am (noinst_HEADERS): - Add basename.h, exclude.h. Remove full-write.h. - (libtar_a_SOURCES): Add exclude.c. - - * lib/basename.h, lib/exclude.c, lib/exclude.h, lib/safe-read.h: - New files. - * lib/full-write.c: Include safe-read.h instead of full-write.h. - * lib/safe-read.h (safe_read): New decl. - * src/rmt.c: Include safe-read.h. - * src/rtapelib.c: Include basename.h, save-read.h. - (rmt_open__): Use base_name to compute base name. - - * src/common.h: - Include basename.h, exclude.h; don't include full-write.h. - (exclude_option): Remove decl. - (excluded): New decl. - (add_exclude, add_exclude_file, check_exclude): Remove decls. - - * src/list.c (read_and): - Use excluded_filename instead of check_exclude. - Check base name of incoming file name, not entire file name, when - deciding whether to exclude it. - - * src/create.c (finish_sparse_file): - Use excluded_filename instead of check_exclude. - Don't bother to stat excluded file names. - * src/incremen.c (get_directory_contents): Likewise. - - * src/names.c (exclude_pool, exclude_pool_size, - allocated_exclude_pool_size, simple_exclude_array, - simple_excludes, allocated_simple_excludes, - pattern_exclude_array, pattern_excludes, - allocated_pattern_excludes, add_exclude, add_exclude_file, - check_exclude): - Remove; now done in ../lib/exclude.c. - - * src/tar.c (decode_options): Initialize `excluded'. - Use new add_exclude_file and add_exclude functions. - -1999-07-05 Paul Eggert - - * m4/gettext.m4: Use changequote rather than [[ ]]. - - * lib/safe-read.c: Renamed from lib/full-read.c. - (safe_read): Renamed from full_read. All uses changed. - * lib/safe-read.h, lib/full-write.h: New files. - * lib/Makefile.am (noinst_HEADERS): Add full-write.h, safe-read.h. - (libtar_a_SOURCES): Rename full-read.c to safe-read.c. - * lib/full-write.c: Include full-write.h. - * src/common.h: Include full-write.h, safe-read.h. - * src/system.h: (full_read, full_write): Remove decls. - - * src/Makefile.am (datadir): New var; needed for Solaris gettext. - - * src/system.h (bindtextdomain, textdomain): undef before - defining, to avoid preprocessor warnings with --disable-nls - on hosts whose locale.h includes libintl.h. - - * lib/xstrtol.c (__strtol): Remove decl; it doesn't work if __strtol - expands to a macro, which occurs in HP-UX 10.20 with strtoumax. - (strtol, strtoul): New decls (for pre-ANSI hosts), to replace - the above decl. - -1999-07-02 Paul Eggert - - * Makefile.am (ACINCLUDE_INPUTS): Add $(M4DIR)/mktime.m4. - * m4/mktime.m4: New file. - * m4/Makefile.am.in, m4/README: Remove these files. - * m4/Makefile.am (EXTRA_DIST): Add mktime.m4; - remove README, Makefile.am.in. - (Makefile.am): Remove rule; it didn't work in BSD/OS 4.0. - * m4/jm-mktime.m4 (jm_FUNC_MKTIME): Invoke AC_FUNC_MKTIME, - not AM_FUNC_MKTIME. - - * src/tar.c: Include signal.h. - (SIGCHLD): Define to SIGCLD if SIGCLD is defined but SIGCHLD is not. - (main): Ensure SIGCHLD is not ignored. - - (BACKUP_OPTION, DELETE_OPTION, EXCLUDE_OPTION, GROUP_OPTION, - MODE_OPTION, NEWER_MTIME_OPTION, NO_RECURSE_OPTION, NULL_OPTION, - OWNER_OPTION, POSIX_OPTION, PRESERVE_OPTION, RECORD_SIZE_OPTION, - RSH_COMMAND_OPTION, SUFFIX_OPTION, USE_COMPRESS_PROGRAM_OPTION, - VOLNO_FILE_OPTION, OBSOLETE_ABSOLUTE_NAMES, - OBSOLETE_BLOCK_COMPRESS, OBSOLETE_BLOCKING_FACTOR, - OBSOLETE_BLOCK_NUMBER, OBSOLETE_READ_FULL_RECORDS, OBSOLETE_TOUCH, - OBSOLETE_VERSION_CONTROL): Make sure they can't be valid chars, so - they don't overlap with char codes. Use an enum instead of a lot - of #defines. - - * src/system.h (ISASCII): Remove. - (CTYPE_DOMAIN, ISDIGIT, ISODIGIT, ISPRINT, ISSPACE, S_ISUID, - S_ISGID, S_IRUSR, S_IWUSR, S_IXUSR, S_IRGRP, S_IWGRP, S_IXGRP, - S_IROTH, S_IWOTH, S_IXOTH, MODE_WXUSR, MODE_R, MODE_RW, - MODE_RWX, MODE_ALL, SEEK_SET, SEEK_CUR, SEEK_END, CHAR_MAX, - LONG_MAX): New macros. - - * src/incremen.c (ISDIGIT, ISSPACE): Remove; now in system.h. - (read_directory_file): Cast ISSPACE arg to unsigned char. - * src/misc.c (ISPRINT): Remove; now in system.h. - (remove_any_file): Add brackets to pacify gcc -Wall. - * src/list.c: Don't include ; system.h already does this. - (ISODIGIT, ISSPACE): Remove; now in system.h. - (decode_header): No need to AND mode with 07777; MODE_FROM_OCT - does this now. - (from_oct): Cast ISSPACE arg to unsigned char. - - * src/create.c (mode_to_oct): Translate modes from internal to - external form. - * src/list.c (mode_from_oct): Translate modes from external to - internal form. Do not complain about unrecognized mode bits. - * src/common.h (TSUID, TSGID, TSVTX, TUREAD, TUWRITE, TUEXEC, - TGREAD, TGWRITE, TGEXEC, TOREAD, TOWRITE, TOEXEC): Remove undefs. - - * src/extract.c: (extr_init, make_directories, extract_archive): - Do not assume mode bits have traditional Unix values. - * src/list.c (decode_mode): Likewise. - * src/create.c (start_header, dump_file): Likewise. - * src/buffer.c (child_open_for_compress, - child_open_for_uncompress, open_archive, (close_archive): Likewise. - * src/compare.c (diff_archive): Likewise. - - * src/extract.c (set_mode): Use %04 not %0.4 format. - (extract_sparse_file): Do not use data_block uninitialized. - Check for lseek failures. - - * src/rtapelib.c (rmt_lseek__): - Convert lseek whence values to portable integers on the wire. - * src/rmt.c (main): Likewise. Check for whence values out of range. - - * src/create.c (finish_sparse_file): Use lseek whence macros - instead of integers. - * src/buffer.c (backspace_output): Likewise. - * src/compare.c (diff_archive, verify_volume): Likewise. - * src/delete.c (move_archive): Likewise. - * src/extract.c (extract_sparse_file): Likewise. - - * src/create.c (dump_file): Do not invoke finish_sparse_file - on a negative file descriptor. - - * src/buffer.c: Add braces to pacify gcc -Wall. - - * src/compare.c (diff_sparse_files): Report lseek errors. - - * configure.in (ALL_LINGUAS): Add cs, es, ru. - - * PORTS, TODO: gnu.ai.mit.edu -> gnu.org - - * src/arith.c, src/buffer.c (new_volume): Don't put ^G in - message to be internationalized; \a doesn't work with msgfmt. - - * src/tar.c (long_options, main, usage, OPTION_STRING): - Remove -E or --ending-file. - * src/list.c (read_and): Likewise. - * src/common.h (ending_file_option): Likewise. - * src/buffer.c (close_archive): Likewise. - - * tests/after: Don't run two commands together in a pipeline, - as some old shells mishandle pipeline exit status. - -1999-06-28 Paul Eggert - - * configure.in (AM_INIT_AUTOMAKE): version 1.12.64015. - * NEWS: Describe changes since 1.12. - * README: Update bug reporting address; move paxutils ref to NEWS. - - Handle EINTR correctly. - * lib/Makefile.am (libtar_a_SOURCES): Add full-read.c, full-write.c. - * lib/full-read.c, lib/full-write.c: New files. - * src/buffer.c (child_open_for_compress, child_open_for_uncompress): - Prefer full_read to read and full_write to write. - * src/compare.c (process_rawdata, diff_sparse_files): Likewise. - * src/create.c (deal_with_sparse, finish_sparse_file, dump_file): - Likewise. - * src/extract.c (extract_sparse_file): Likewise. - * src/rmt.c (get_string, main, report_error_message, - report_numbered_error): Likewise. - * src/rmt.h (rmtread, rmtwrite): Likewise. - * src/rtapelib.c (do_command, get_status_string, rmt_read__, - rmt_write__, rmt_ioctl__): Likewise. - * src/update.c (append_file): Likewise. - * src/system.h (full_read, full_write): New decls. - - * po/POTFILES.in: Add lib/argmatch.c, lib/error.c lib/getopt.c, - lib/xmalloc.c, src/arith.c, src/misc.c. - - * src/system.h (STDIN_FILENO, STDOUT_FILENO, STDERR_FILENO): - New macros. All uses of STDIN and STDOUT changed. - * src/rmt.c (prepare_record_buffer, main): Use STDIN_FILENO - instead of 0 and STDOUT_FILENO instead of 1. - * src/rtapelib.c (_rmt_rexec): Use STDIN_FILENO and STDOUT_FILENO - instead of fileno (stdin) and fileno (stdout) or 0 and 1. - - * src/rmt.c (private_strerror): Avoid const. Translate results. - - * tests/Makefile.am (TESTS): Remove incremen.sh; it doesn't work - in the presence of NFS clock skew. - -1999-06-25 Paul Eggert - - * configure.in (AM_INIT_AUTOMAKE): version 1.12.64014. - - * src/buffer.c (write_archive_buffer): New function. - (child_open_for_compress, flush_write, flush_read): Use it to write - buffers. - (open_archive): Report error if fstat of archive fails. - Improve efficiency of check for /dev/null. - Also, fix some corner cases with remote archives and /dev/null checking. - (close_archive): Test for input fifo only if not remote. - Truncate output archive only if it's not remote. - - * src/misc.c (remove_any_file): - Don't terminate if you see . or ..; just skip them. - -1999-06-18 Paul Eggert - - * configure.in (AM_INIT_AUTOMAKE): version 1.12.64013. - - Output sizes using a format that's more compatible with - traditional tar (and with GNU Emacs). - * src/common.h (GID_TO_OCT, MAJOR_TO_OCT, MINOR_TO_OCT, - MODE_TO_OCT, SIZE_TO_OCT, UID_TO_OCT, UINTMAX_TO_OCT): - Don't subtract 1 from size. - * src/create.c (to_oct): Prepend leading zeros, not spaces. - Output a trailing NUL unless the value won't fit without it. - (finish_header): No need to append NUL to chksum, now that - to_oct is doing it. - -1999-06-16 Paul Eggert - - * NEWS, configure.in (AM_INIT_AUTOMAKE): version 1.12.64012. - - * src/Makefile.am (LDADD): Link libtar.a after @INTLLIBS@, since - @INTLLIBS@ might invoke rpl_realloc. - - * src/tar.c (backup_type): Remove decl; backupfile.h now has it. - (intconv): Remove; use xstrto* fns instead. - ("xstrtol.h"): Include. - (check_decimal): Remove. - (long_options, usage, OPTION_STRING, decode_options): - Remove -y, --bzip2, --unbzip2. - (decode_options): Use xget_version instead of get_version. - Check for overflow with -b and -L and RECORD_SIZE_OPTION. - Replace invocations of check_decimal with xstrtoumax. - - * tests/preset.in (echo_n, echo_c): Remove. - - * tests/after: Don't rely on $echo_c and $echo_n. - - * lib/addext.c, lib/dirname.c, lib/lchown.c, lib/lchown.h, - lib/malloc.c, lib/mktime.c, lib/realloc.c, lib/strtol.c, lib/strtoul.c, - lib/strtoull.c, lib/strtoumax.c, lib/utime.c, lib/xstrtol.c, - lib/xstrtol.h, lib/xstrtoul.c, lib/xstrtoumax.c, - m4/Makefile.am.in, m4/README, m4/ccstdc.m4, m4/d-ino.m4, - m4/gettext.m4, m4/inttypes_h.m4, m4/isc-posix.m4, - m4/jm-mktime.m4, m4/largefile.m4, m4/lcmessage.m4, - m4/malloc.m4, m4/progtest.m4, m4/realloc.m4, m4/uintmax_t.m4, - m4/ulonglong.m4, m4/utimbuf.m4, m4/utime.m4, m4/utimes.m4, - m4/xstrtoumax.m4: New files. - - * configure.in(fp_PROG_ECHO): Remove; no longer needed. - (AC_SYS_LARGEFILE): Renamed from AC_LFS. - (jm_AC_HEADER_INTTYPES_H): Replaces inline code. - (jm_STRUCT_DIRENT_D_INO, jm_AC_TYPE_UINTMAX_T, jm_AC_PREREQ_XSTRTOUMAX): Add. - (AC_CHECK_FUNCS): Remove lchown. - (AC_REPLACE_FUNCS): Remove basename, dirname. - Add lchown, strtol, strtoul. - (jm_FUNC_MKTIME): Add. - (LIBOBJS): Replace .o with $U.o, so that the .o files in LIBOBJS - are also built via the ANSI2KNR-filtering rules. - Use a no-op line to work around bug in automake 1.4 with malloc and - realloc. - (AC_OUTPUT): Add m4/Makefile. - - * lib/Makefile.am (EXTRA_DIST): - Add lchown.c, malloc.c, mktime.c, realloc.c, - strtol.c, strtoul.c, strtoull.c, strtoumax.c, utime.c. - (noinst_HEADERS): Add lchown.h, modechange.h, xstrtol.h. - (libtar_a_SOURCES): Add addext.c, basename.c, xstrtol.c, - xstrtoul.c, xstrtoumax.c. Remove getversion.c. - ($(srcdir)/getdate.c:): Remove `expect conflicts' line. - - * src/system.h (uintmax_t): Don't declare; configure now does this. - - * src/common.h (backup_type): New decl. - * src/common.h, src/misc.c, src/tar.c: - Move include of backupfile.h to common.h. - - * src/misc.c (maybe_backup_file): - Pass backup_type to find_backup_file_name. - - * src/list.c (print_header): Change sizes of uform and gform from 11 to - UINTMAX_STRSIZE_BOUND. - - * doc/tar.texi: Remove --bzip2. - Fix @xref typos reported by latest makeinfo. - - * Makefile.am (ACLOCAL_AMFLAGS): New macro. - (SUBDIRS): Add m4. - (M4DIR, ACINCLUDE_INPUTS): New macros. - ($(srcdir)/acinclude.m4): New rule. - - * acconfig.h (ENABLE_NLS, HAVE_CATGETS, HAVE_GETTEXT, - HAVE_INTTYPES_H, HAVE_LC_MESSAGES, HAVE_STPCPY): Remve #undefs; - now generated automatically by autoconf. - -1999-05-15 Paul Eggert - - * doc/tar.texi: Remove -y. - -1999-04-09 Paul Eggert - - * src/system.h (INT_STRLEN_BOUND): Fix off-by-factor-of-10 typo - (we were allocating too much storage). - (uintmax_t): Don't declare; configure now does this. - - * ABOUT-NLS: Update to gettext 0.10.35 edition. - -1999-03-22 Paul Eggert - - * NEWS, configure.in (AM_INIT_AUTOMAKE): version 1.12.64010 - - * acinclude.m4 (AC_LFS_FLAGS): - Don't use -mabi=n32 with GCC on IRIX 6.2; it's the default. - (AC_LFS): -n32, -o32, and -n64 are CPPFLAGS, not CFLAGS. - (jm_FUNC_MALLOC, jm_FUNC_REALLOC): New macros. - - * configure.in (jm_FUNC_MALLOC, jm_FUNC_REALLOC): - New macros; needed for latest GNU xmalloc.c. - - * Makefile.am (noinst_HEADERS): Add quotearg.h, xalloc.h. - (libtar_a_SOURCES): Add quotearg.c. - * list.c: Include . - (from_oct): Add forward decl. - (read_header): Return HEADER_FAILURE if we can't parse the checksum. - (from_oct): Report an error only if TYPE is nonzero. - Quote any funny characters in bad header. - -1999-03-20 Paul Eggert - - * NEWS, configure.in (AM_INIT_AUTOMAKE): version 1.12.64009 - - * acinclude.m4 (AC_LFS_FLAGS): Add support for IRIX 6.2 and later. - (AC_LFS_SPACE_APPEND): Assume $2 is quoted properly; all callers - changed. - (AC_LFS): Simplify AIX revision number test. - -1999-03-17 Paul Eggert - - * NEWS, configure.in (AM_INIT_AUTOMAKE): version 1.12.64008 - - * configure.in (AC_VALIDATE_CACHED_SYSTEM_TUPLE): - Remove; it doesn't work that well - with AC_CANONICAL_HOST. - (fp_WITH_INCLUDED_MALLOC): Remove; we'll just use the system malloc. - - * Makefile.am (EXTRA_DIST): Remove AC-PATCHES, AM-PATCHES, BI-PATCHES. - - * Makefile.am (EXTRA_DIST): Remove gmalloc.c. - - * acinclude.m4 (fp_WITH_INCLUDED_MALLOC): Remove. - - * tar.texi: Fix bug-report addr. - - * README: Remove --with-included-malloc. - Upgrade version numbers of build software. - -1999-03-07 Paul Eggert - - * NEWS, configure.in (AM_INIT_AUTOMAKE): Version 1.12.64007. - - * acinclude.m4 (AM_WITH_NLS): Port to Solaris 2.5.1, - where bindtextdomain and gettext require -lintl. - (AC_LFS_FLAGS): Simplify so that it only gets the flags; - `no' means it failed. - (AC_LFS_SPACE_APPEND, AC_LFS_MACRO_VALUE): New macros. - (AC_LFS): Use them. Set _FILE_OFFSET_BITS, _LARGEFILE_SOURCE, and - _LARGE_FILES from LFS_CFLAGS, so that in the normal case we don't need - to add anything to the command line (it's all in config.h). - Put any extra -D and -I options into CPPFLAGS, the rest into CFLAGS. - -1999-03-01 Paul Eggert - - * NEWS, configure.in (AM_INIT_AUTOMAKE): Version 1.12.64006. - - * acinclude.m4 (AC_LFS_FLAGS): Port to AIX 4.2. - - * src/list.c: (gid_from_oct, major_from_oct, minor_from_oct, - mode_from_oct, off_from_oct, size_from_oct, time_from_oct, - uid_from_oct, uintmax_from_oct): Use TYPE_MAXIMUM instead of macros - like OFF_MAX, which are not reliable - (e.g. OFF_MAX in AIX 4.2 is incorrect). - * src/system.h (GID_MAX, MAJOR_MAX, MINOR_MAX, MODE_MAX, OFF_MAX, - SIZE_MAX, TIME_MAX,UID_MAX, UINTMAX_MAX): Remove; no longer used. - - * src/incremen.c (get_directory_contents): - Don't use statx if _LARGE_FILES; it doesn't work under AIX 4.2. - Have statx depend on STX_HIDDEN, not AIX. - - * src/create.c (to_oct): - New parameter substitute, giving a substitute value to use - when the original value is out of range. Do not append a space to the - output; modern tars don't. When a value is out of range, specify the - maximum value, not the number of bits. - (GID_NOBODY, UID_NOBODY): New macros. - (gid_to_oct, uid_to_oct): Use them as substitutes. - (finish_header): Do not assume that UINTMAX_TO_OCT appends a space. - (dump_file): Check whether the file changed as we read it. - - * src/rmt.c (main): Remove suspicious AIX/386 code. - -1999-02-19 Paul Eggert - - * intl/localealias.c (read_alias_file): Don't assume that memcpy - returns a type compatible with char *; it doesn't on SunOS - 4.1.4 with Sun cc, since doesn't declare memcpy. - - * NEWS, configure.in (AM_INIT_AUTOMAKE): Version 1.12.64005. - - * src/tar.c (long_options, usage): Prefer --unbzip2 to --bunzip2. - * doc/tar.texi: Add --bzip2, --unbzip2 options. - - * configure.in (AC_CANONICAL_HOST, AC_VALIDATE_CACHED_SYSTEM_TUPLE): - Add. - (AC_LINK_FILES): Omit; AM_GNU_GETTEXT now does this. - (AC_OUTPUT): Omit munging of po/Makefile; AM_GNU_GETTEXT now does this. - * acinclude.m4 (AM_WITH_NLS): - Update to latest gettext version (serial 5). - (AC_LFS_FLAGS): New macro - (AC_LFS): Use it. Append to CFLAGS, LDFLAGS, LDLIBS instead of - working only with unset variables. Append to CFLAGS, not CPPFLAGS. - Work properly in cross-compilation scenario, by checking for getconf - with AC_CHECK_TOOL and by ditching uname in favor of - AC_CANONICAL_HOST and $host_os. Add --disable-lfs option. - - * lib/getdate.y: Update to fileutils 4.0 getdate.y, with one patch: - replace FORCE_ALLOCA_H with HAVE_ALLOCA_H. - * lib/Makefile.am (AUTOMAKE_OPTIONS): Append ../src/ansi2knr, - since getdate.y now uses ANSI code. - - * config.guess, config.sub: New files; taken from automake 1.4. - - * intl/Makefile.in, intl/VERSION, intl/bindtextdom.c, - intl/cat-compat.c, intl/dcgettext.c, intl/dgettext.c, - intl/explodename.c, intl/finddomain.c, intl/gettext.c, - intl/gettext.h, intl/gettextP.h, intl/hash-string.h, - intl/l10nflist.c, intl/libgettext.h, intl/loadinfo.h, - intl/loadmsgcat.c, intl/localealias.c, intl/textdomain.c: - Update to GNU gettext 0.10.35, with patches as per GCC snapshot 990109. - -1999-02-01 Paul Eggert - - * src/tar.c: Update copyright. - - * NEWS: 1.12.64004 - -1999-02-01 Paul Eggert - - * NEWS, configure.in: Version 1.12.64004 - - * configure.in (AC_LFS): Use this macro, instead of open-coding it. - - * acinclude.m4 (AC_LFS, AM_PROG_CC_STDC): New macros. - - * src/extract.c (extract_archive): Fix bug when extracting sparse - files: they were trashing the tar file header. - - * src/tar.c: (long_options, usage, OPTION_STRING, decode_options): - Add -y or --bzip2 or --bunzip2 option. - -1999-01-30 Paul Eggert - - * src/names.c (cached_no_such_uname, cached_no_such_gname, - cached_no_such_uid, cached_no_such_gid): New vars. - (uid_to_uname, gid_to_gname, uname_to_uid, gname_to_gid): - Cache failures, too. - - * src/tar.c (decode_options): - Don't pass names longer than UNAME_FIELD_SIZE to - uname_to_uid, as it messes up the cache. Similarly for gname_to_uid. - -1999-01-27 Paul Eggert - - * NEWS, configure.in: Version 1.12.64003 - - * src/buffer.c (backspace_output, close_archive): Cast - rmtlseek position arg to off_t, for benefit of K&R compilers - with long long. - * src/compare.c (verify_volume): Likewise. - - * NEWS, configure.in: Version 1.12.64002 - - * src/create.c (gid_to_oct, major_to_oct, minor_to_oct, mode_to_oct, - off_to_oct, size_to_oct, time_to_oct, uid_to_oct): - Cast arg to uintmax_t for benefit of pre-ANSI compilers with long long. - * src/list.c: (gid_from_oct, major_from_oct, minor_from_oct, - mode_from_oct, off_from_oct, size_from_oct, time_from_oct, - uid_from_oct): Likewise. - -1999-01-25 Paul Eggert - - * incremen.sh: Fix timing bug in regression test. - -1999-01-22 Paul Eggert - - * NEWS, configure.in: Update version - - * Makefile.am (localedir): Change to $(datadir)/locale. - (DEFS): New macro, defining LOCALEDIR. - (tar.o, tar._o, rmt.o, rmt._o): Remove. - (INCLUDES): Add -I.. - - * Makefile.am (localedir): Change to $(datadir)/locale. - -1999-01-21 Paul Eggert - - * NEWS, README, configure.in: Unofficial version 1.12.64001. - - * tests/Makefile.am (localedir): Change to $(datadir)/locale. - * src/Makefile.am (localedir): Likewise. - (DEFS): New macro, defining LOCALEDIR. - (tar.o, tar._o, rmt.o, rmt._o): Remove. - (INCLUDES): Add `-I..'. - - * tests/incremen.sh: Fix timing bug. - -1999-01-20 Paul Eggert - - * NEWS, README, configure.in: Unofficial version 1.12.64000. - `lfs.7' changed to `64000' in version number - to conform to gnits standards. - - * COPYING, INSTALL, doc/texinfo.tex, install-sh, missing, - mkinstalldirs, ansi2knr.c: Update to latest public versions. - - Rebuild with automake 1.4 and autoconf 2.13, to work around some - porting problems. - -1998-12-07 Paul Eggert - - * NEWS, README, configure.in: Unofficial version 1.12.lfs.6. - - * src/list.c (read_header): - Accept file names as specified by POSIX.1-1996 section 10.1.1. - -1998-11-30 Paul Eggert - - * configure.in: Quote the output of uname. - - * src/extract.c (set_stat): chmod after chown even when not root; - if we are using --same-owner this is needed e.g. on Solaris 2.5.1. - -1998-11-15 Paul Eggert - - * NEWS, README, configure.in: Unofficial version 1.12.lfs.5. - - * configure.in (ac_test_CPPFLAGS, ac_test_LDFLAGS, ac_test_LIBS, - ac_getconfs, ac_result): Special case for HP-UX 10.20 or later. - -1998-10-28 Paul Eggert - - * NEWS, README, configure.in: Unofficial version 1.12.lfs.4. - - * src/system.h (voidstar): Use void * if __STDC__ is defined, - not merely nonzero. - - * src/rtapelib.c: Don't use rexec code unless compiled with WITH_REXEC. - On many installations, rexec is disabled. - -1998-08-07 Paul Eggert - - * NEWS, README, configure.in: Unofficial version 1.12.lfs.3. - - * src/names.c (uid_to_uname, gid_to_gname): Don't used cached name - for nameless users and groups. - -1998-02-17 Paul Eggert - - * NEWS, README, configure.in: Unofficial version 1.12.lfs.2. - * NEWS, README: Add explanation of why this isn't an official version. - -1998-02-02 Paul Eggert - - * NEWS, README, configure.in: Unofficial version 1.12.lfs.1. - This is an unofficial version. - -1997-12-17 Paul Eggert - - * src/incremen.c (ST_DEV_MSB): New macro. - (NFS_FILE_STAT): Use most significant bit of st_dev, - even if it's unsigned. - -1997-12-08 Paul Eggert - - * src/system.h (ST_NBLOCKS): Fix typo in definition. - -1997-11-19 Paul Eggert - - * configure.in (HAVE_INTTYPES_H): - Don't ignore cache variable if it's already set. - -1997-11-10 Paul Eggert - - * src/rmt.c (main): Don't assume mt_count is of type daddr_t. - * src/delete.c (records_read): Now off_t. - (move_archive): Don't assume mt_count is of type daddr_t. - -1997-10-30 Paul Eggert - - * configure.in (CPPFLAGS, LDFLAGS, LIBS): - Set to appropriate values if large file support - needs explicit enabling. - (HAVE_INTTYPES_H, HAVE_ST_FSTYPE_STRING, daddr_t, major_t, minor_t, - ssize_t): - New macros to configure. - (AC_TYPE_MODE_T, AC_TYPE_PID_T, AC_TYPE_OFF_T): Add. - - * acconfig.h (daddr_t, HAVE_INTTYPES_H, HAVE_ST_FSTYPE_STRING, - major_t, minor_t, ssize_t): New macros. - - * src/arith.h (TARLONG_FORMAT): - Fix typo: %uld -> %lu. Use unsigned when long long - (%lld -> %llu). - (add_to_tarlong_helper, mult_tarlong_helper): 2nd arg is now unsigned long. - (add_to_tarlong, mult_tarlong): Cast 2nd arg to unsigned long. - - * src/arith.c (add_to_tarlong_helper, mult_tarlong_helper): - 2nd arg is now unsigned long. - - * src/rmt.c (allocated_size): Now size_t, and now initialized to 0. - (prepare_record_buffer): Arg is now size_t. - Remove now-useless casts. - - (main): Use `long' for status, so that it can store ssize_t. - Use daddr_t, mode_t, size_t, off_t when appropriate. - Convert daddr_t and off_t values ourselves, since they might be longer - than long. Convert other types using `long' primitives. - When processing MTIOCTOP, do not try to pass resulting - count back, since it won't work (it could be too large) and it's - not expected anyway. - - * src/update.c: - (append_file) Use off_t, size_t, ssize_t when appropriate. Remove - now-useless casts. Use unsigned long to print *_t types, except use - STRINGIFY_BIGINT for off_t. - (update_archive): Cast -1 to dev_t when necessary. - - * src/tar.c (check_decimal): - Now returns 1 if successful, 0 otherwise, and returns - uintmax_t value into new arg. Check for arithmetic overflow. - (decode_options): Avoid overflow if record_size fits in size_t but not int. - Check for overflow on user or group ids. - - * src/compare.c (diff_init, process_rawdata, read_and_process, - diff_sparse_files, diff_archive): - Use off_t, pid_t, size_t, ssize_t when appropriate. - Remove now-useless casts. Use unsigned long to print *_t types, - except use STRINGIFY_BIGINT for off_t. - - (process_noop, process_rawdata, process_dumpdir, read_and_process): - Size arg is now size_t. - - (diff_sparse_files): Arg is now off_t. Check for size_t overflow - when allocating buffer. - - * src/rtapelib.c: - (do_command, rmt_open__, rmt_read__, rmt_lseek__, rmt_ioctl__): - Use pid_t, size_t, ssize_t when appropriate. Remove now-useless casts. - Use unsigned long to print *_t types, except use STRINGIFY_BIGINT for - off_t. - - (get_status_string, get_status_off): New function. - (get_status): Now returns long, so that it can store ssize_t. - Invoke get_status_string to do the real work. - (rmt_read__, rmt_write__): Now returns ssize_t. Size arg is now size_t. - (rmt_lseek__): Now returns off_t, using new get_status_off function. - (rmt_ioctl__): Convert mt_count by hand, - since it might be longer than long. - - * src/mangle.c (extract_mangle): - Check for overflow when converting off_t to size_t. - Use off_t, size_t when appropriate. Remove now-useless casts. - - * src/system.h (mode_t): Remove; now done by autoconf. - (ST_NBLOCKS): Do not overflow if st_size is near maximum. - Return number of ST_NBLOCKSIZE-byte blocks, - not number of 512-byte blocks; - this also helps to avoid overflow. - (st_blocks): Declare if needed. - (ST_NBLOCKSIZE): New macro. - (, ): Include if available. - (CHAR_BIT): New macro. - (uintmax_t): New typedef. - (TYPE_SIGNED, TYPE_MINIMUM, TYPE_MAXIMUM, INT_STRLEN_BOUND, - UINTMAX_STRSIZE_BOUND, GID_MAX, MAJOR_MAX, MINOR_MAX, MODE_MAX, - OFF_MAX, SIZE_MAX, TIME_MAX, UID_MAX, UINTMAX_MAX): New macros. - - * src/names.c (name_init): - Fix typo in error message: FILE* was passed, but char* - was wanted. - - (read_name_from_file, name_gather, addname, name_match, name_scan, - add_exclude): Use size_t when appropriate. Remove now-useless casts. - - (exclude_pool_size, allocated_exclude_pool_size): Now size_t. - - * src/extract.c (newdir_umask, current_umask): Now mode_t. - (extract_sparse_file): Args now use off_t. - - (set_mode, set_stat, make_directories, extract_sparse_file, - extract_archive): Use off_t, size_t, ssize_t when appropriate. Remove - now-useless casts. Use unsigned long to print *_t types, except use - STRINGIFY_BIGINT for off_t. - - * src/misc.c (quote_copy_string): - Use size_t when appropriate. Remove now-useless casts. - - * src/list.c (read_and, list_archive, read_header, decode_mode, - print_header, print_for_mkdir): - Use mode_t, off_t, size_t when appropriate. Remove - now-useless casts. Use unsigned long to print *_t types, except use - STRINGIFY_BIGINT for off_t. - - (read_header): Check for overflow when converting header size. - - (from_oct): Now static. Now returns uintmax_t. `where' arg is now - const char *. Size arg is now size_t. Now takes new type and maxval - args. Compute result using uintmax_t, not long. Report error if - field does not contain octal number in range. - (gid_from_oct, major_from_oct, minor_from_oct, mode_from_oct, - off_from_oct, size_from_oct, time_from_oct, uid_from_oct, - uintmax_from_oct): New functions. - - (stringify_uintmax_t_backwards): New function. - - (decode_mode, print_for_mkdir): Mode arg is now mode_t. - (skip_file): Offset arg is now off_t. - - * src/buffer.c (record_start_block, save_totsize, save_sizeleft, - real_s_totsize, real_s_sizeleft, current_block_ordinal): - Now off_t. - (write_error): Arg is now ssize_t. - (child_pid): Now pid_t. - (available_space_after): Now size_t. - - (child_open_for_compress, child_open_for_uncompress, flush_write, - open_archive, flush_write, write_error, flush_read, close_archive): - Use pid_t, ssize_t, size_t when appropriate. Remove now-useless - casts. Use unsigned long to print *_t types, except use - STRINGIFY_BIGINT for off_t. - - * src/delete.c (records_read): Now daddr_t. - (move_archive): Arg is now daddr_t. Check for overflow when - computing offset. - (move_archive, delete_archive_members): Use daddr_t, off_t when - appropriate. Remove now-useless casts. - - * src/rmt.h (rmt_read__, rmt_write__): Now returns ssize_t. - (rmt_lseek): Now returns off_t. - - * src/create.c (to_oct): - Now static. Value arg is now uintmax_t. Accept new args - giving name of type of octal field, for error messages. Report an - error if the value is too large to fit in the field. - (gid_to_oct, major_to_oct, minor_to_oct, mode_to_oct, off_to_oct, - size_to_oct, time_to_oct, uid_to_oct, uintmax_to_oct): New functions. - - (write_eot, write_long, finish_header, deal_with_sparse, - finish_sparse_file, dump_file): Use dev_t, off_t, ssize_t, size_t when - appropriate. Remove now-useless casts. Use unsigned long to print - *_t types, except use STRINGIFY_BIGINT for off_t. - - (find_new_file_size): 1st arg is now off_t*. - (finish_sparse_file): Args now use off_t, not long. - Check for lseek error. - (create_archive, dump_file): Cast -1 to dev_t when necessary. - (dump_file): Device arg is now dev_t. - Avoid overflow when testing whether file has holes - by using the new ST_NBLOCKSIZE macro. - - * src/incremen.c (struct accumulator, add_to_accumulator, - get_directory_contents, add_hierarchy_to_namelist, gnu_restore): - Use size_t for sizes. - (struct directory, get_directory_contents, add_hierarchy_to_namelist): - Use dev_t, ino_t for devices and inodes. - (gnu_restore): Use off_t for file offsets. - (struct directory): Use char for flags. Add new flag `nfs'. - (nfs): New constant - (NFS_FILE_STAT): New macro. - (note_directory): Accept struct stat * instead of - device and inode number. All callers changed. - (note_directory, get_directory_contents): - Use NFS_FILE_STAT to determine whether directory is an NFS directory. - (write_dir_file): Cast time_t to unsigned long before printing as %lu. - - * src/common.h (record_size, struct name, struct sp_array, - available_space_after): - Use size_t for sizes. - (save_sizeleft, save_totsize, current_block_ordinal, skip_file): - Use off_t for file offsets. - (struct name): dir_contents is now const char *, not char *. - (dump_file, get_directory_contents): Use dev_t for devices. - (to_oct): Remove decl. - (GID_TO_OCT, MAJOR_TO_OCT, MINOR_TO_OCT, MODE_TO_OCT, SIZE_TO_OCT, - UID_TO_OCT, UINTMAX_TO_OCT, OFF_TO_OCT, TIME_TO_OCT, STRINGIFY_BIGINT, - GID_FROM_OCT, MAJOR_FROM_OCT, MINOR_FROM_OCT, MODE_FROM_OCT, - OFF_FROM_OCT, SIZE_FROM_OCT, TIME_FROM_OCT, UID_FROM_OCT, - UINTMAX_FROM_OCT): New macros. - (gid_to_oct, major_to_oct, minor_to_oct, mode_to_oct, off_to_oct, - size_to_oct, time_to_oct, uid_to_oct, uintmax_to_oct, - stringify_uintmax_t_backwards, gid_from_oct, major_from_oct, - minor_from_oct, mode_from_oct, off_from_oct, size_from_oct, - time_from_oct, uid_from_oct, uintmax_from_oct): New decls. - (print_for_mkdir): 2nd arg is now mode_t. - - ----- - - See ChangeLog.1 for earlier changes. - - ----- - - Copyright (C) 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 - Free Software Foundation, Inc. - - This file is part of GNU tar. - - GNU tar is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3, or (at your option) - any later version. - - GNU tar is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GNU tar; see the file COPYING. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. - -Local Variables: -mode: change-log -version-control: never -End: diff --git a/ChangeLog.CVS b/ChangeLog.CVS new file mode 100644 index 00000000..41227f59 --- /dev/null +++ b/ChangeLog.CVS @@ -0,0 +1,8833 @@ +2009-03-05 Sergey Poznyakoff + + * src/incremen.c: --no-recursive works with --incremental. + +2009-03-04 Sergey Poznyakoff + + Add xz support. + + * src/buffer.c, src/suffix.c: Add support for xz compression. + * src/tar.c: New option --xz, for compression/decompression using xz. + Re-assign -J as a short equivalent of --xz. + +2009-01-19 Sergey Poznyakoff + + * doc/tar.texi: Fix typo. + +2008-12-29 Sergey Poznyakoff + + * bootstrap.conf: Include size_max. + * gnulib.modules: Remove memset, rmdir. Replace strdup with + strdup-posix. Patch by Eric Blake. + * src/tar.c: Implement -I as a shorthand for --use-compress-program. + * doc/tar.texi: Document -I. + * tests/pipe.at, tests/shortrec.at: Account for eventual 'Record + size' output. + * tests/testsuite.at (AT_TAR_CHECK_HOOK): New define + (AT_TAR_WITH_HOOK, TAR_IGNREC_HOOK): New macros. + +2008-11-30 Sergey Poznyakoff + + * src/xheader.c: Remove duplicate inclusion of fnmatch.h. Reported + by Jim Meyering. + +2008-11-25 Sergey Poznyakoff + + Do not try to drain the input pipe before closing the + archive. + + * src/buffer.c (close_archive): Remove call to + sys_drain_input_pipe. Pass hit_eof as the second + argument to sys_wait_for_child. + * src/common.h (sys_drain_input_pipe): Remove + (sys_wait_for_child): Declare second argument. + * src/system.c (sys_drain_input_pipe): Remove. + (sys_wait_for_child): Take two arguments. The second one helps to + decide whether to tolerate child termination on SIGPIPE. + +2008-11-03 Sergey Poznyakoff + + * src/buffer.c (_write_volume_label): Fix typo, which prevented + `-V label -M' from working. + +2008-10-30 Sergey Poznyakoff + + * NEWS, configure.ac: Version 1.20.91 + * doc/tar.texi: Document transformation scope flags. + * src/common.h (transform_symlinks_option): Remove in favor of + transformation scope flags. + (XFORM_REGFILE, XFORM_LINK, XFORM_SYMLINK, XFORM_ALL): New macros. + (transform_name, transform_member_name, transform_name_fp): Take + an additional argument, specifying scope flags. + * src/create.c: Reflect changes to transform_name. + * src/extract.c (extract_link, extract_symlink): Remove calls to + transform_member_name. It is done in read_header. + * src/list.c (decode_xform): Reflect change in data type of 2nd + argument. + (transform_member_name): 2nd arg is int. + (decode_header): Transform file name and link target names. + * src/tar.c: Remove --transform-symlinks. + * src/transform.c (struct transform): New member `flags'. + (transform_flags): New variable. + (parse_transform_expr): Parse transformation scope flags. Allow to + set global flags using `flags=' syntax. + (_transform_name_to_obstack, transform_name_fp) + (transform_name): Take an additional argument, specifying scope + flags. + +2008-10-19 Sergey Poznyakoff + + * THANKS: Add Ed Leaver. + * src/buffer.c (short_read): Remove !read_full_records condition, + which was always false on a first record and thus disabled record + size autodetection. Thanks Ed Leaver for the patch. + (_gnu_flush_read): Handle blocking_factor == 1. + * tests/sparsemv.at: Reflect changes to buffer.c. + * tests/sparsemvp.at: Likewise. + * tests/volsize.at: Likewise. + * NEWS: Update. + +2008-10-16 Sergey Poznyakoff + + * src/common.h (transform_symlinks_option): New global. + * src/create.c (dump_file0): Transform symlink targets only if + explicitly required. Thanks Cyril Strejc for reporting the + problem. + * src/tar.c (parse_opt): New options --transform-symlinks and + --no-transform-symlinks. New alias --xform to the --transform + option. + * doc/tar.texi: Document --transform-symlinks + * NEWS: Update. + * THANKS: Update. + + * src/names.c (name_gather): Use xzalloc. + * src/buffer.c (short_read): Move record size detection before + the loop. + +2008-10-07 Sergey Poznyakoff + + * src/tar.c (options): Add --lzop option. + +2008-10-05 Xavier Hienne (tiny change) + + * src/checkpoint.c (checkpoint_compile_action): Add missing + `else'. + +2008-09-24 Sergey Poznyakoff + + * NEWS: Update. + * doc/tar.texi: Update. + * src/tar.c: New option --no-null. + +2008-09-23 Sergey Poznyakoff + + * src/common.h (filename_terminator): Remove global. + * src/tar.c (filename_terminator): New static. + * src/names.c (name_next_elt): Do not depend on + filename_terminator, this was a leftover from 1.13. + +2008-09-18 Sergey Poznyakoff + + * doc/tar.texi: Remove incorrect example. + +2008-09-07 Sergey Poznyakoff + + * src/incremen.c (dumpdir_create0): Eliminate gcc warning. + (attach_directory): Bugfix - add missing return statement. + * THANKS: Add Enric Hernandez + +2008-07-31 Sergey Poznyakoff + + * src/incremen.c (struct directory): New member `next'. Change + type of `name'. + (dirhead, dirtail): New statics. + (make_directory): Reflect changes to struct directory. + (free_directory, attach_directory): New functions. + (dirlist_replace_prefix): New function. + (note_directory): Use attach_directory, instead of make_directory, + (find_directory, find_directory_meta): Use free_directory. + (procdir): Replace directory prefixes in directory list to avoid + marking subdirectories as renamed after renaming their parent + directory. + (append_incremental_renames): Iterate over directory list, not + hash table, to preserve logical ordering of renames. + * tests/rename04.at, tests/rename05.at: New test cases. + * tests/Makefile.am, tests/testsuite.at: Add rename04.at and + rename05.at. + * tests/atlocal.in (decho): New function. + * tests/multiv06.at: Use decho instead of echo2. + * tests/incremental.at: Raise wait interval to 2 seconds. + +2008-07-24 Sergey Poznyakoff + + * src/tar.c (decode_options): Do not allow volume length less + than record size. + * src/buffer.c (_gnu_flush_write): Compensate for the effect + of eventual flush_archive occurring in the middle of buffer + move. + Increment records_written only if _flush_write was able to write + something. + * tests/multiv06.at: New testcase. + * tests/Makefile.am, test/testsuite.at: Add tests/multiv06.at + +2008-06-26 Sergey Poznyakoff + + * configure.ac, NEWS: Version 1.20.90 + * doc/tar.texi: Document -J, --no-auto-compress, etc. + * src/buffer.c (ct_tar): New constant. + (magic): Add lzop support. Proposed by Kevin Day + . + (check_compressed_archive): Do not use autodetect if the + compression program was specified explicitly. + Fall back to analyzing archive name, if the autodetection fails. + * src/suffix.c: Add .lzo + * src/tar.c: New options --lzop and --no-auto-compress. + New short option -J (alias for --lzma). + + * src/buffer.c (try_new_volume): Print more information with error + diagnostics. + (_gnu_flush_write): Improve error checking. Adjust + real_s_sizeleft before calling new_volume to avoid creating + malformed multivolume headers. + * tests/delete05.at, tests/gzip.at, tests/ignfail.at, + tests/longv7.at, tests/lustar01.at, tests/lustar02.at, + tests/shortfile.at: Update to match new diagnostic wording + (see 2008-05-06). + + * NEWS: Update. + +2008-06-14 Sergey Poznyakoff + + * doc/tar.texi (exclude): Document support for new VCS. + * THANKS: Update. + * NEWS: Update. + * tests/multiv05.at: Fix typos. + * tests/volsize.at: Remove a TZ dependency. + +2008-06-14 Dan Drake (tiny change) + + * src/tar.c (exclude_vcs_files): Support for Bazaar, Mercurial and + Darcs. + +2008-05-06 Sergey Poznyakoff + + * src/tar.c (main): Reword the "delayed error" message. New + wording proposed by Karl Berry. + +2008-02-20 Sergey Poznyakoff + + * configure.ac: Raise version number to 1.20 + * src/compare.c (diff_dumpdir): const. + * src/common.h (dumpdir_t,dumpdir_iter_t): New data types. + (dumpdir_create0,dumpdir_create,dumpdir_free,dumpdir_locate) + (dumpdir_first,dumpdir_next): New functions. + * src/incremen.c (dumpdir_create0,dumpdir_create,dumpdir_free) + (dumpdir_first,dumpdir_next): New functions. + (dumpdir_locate): Rewrite using binary search. + (struct directory): Change members char *contents, *icontents to + struct dumpdir *dump, *idump. All references updated. + (note_directory): Last arg is const. + * src/names.c (add_hierarchy_to_namelist): buffer is const. + * tests/incr03.at, tests/incr04.at, tests/rename02.at, + tests/rename03.at: Insert calls to sleep between creation of files + and adding them to the archive. + +2008-03-31 Sergey Poznyakoff + + * src/create.c (dump_file0): Count links only for actually dumped + files. + +2008-03-27 Sergey Poznyakoff + + * NEWS: Document --no-check-device and --check-device. + * doc/rendition.texi: Change the way FIXME-*refs are handled in + !PROOF. + * doc/intern.texi, doc/tar.texi: Update. + * doc/untabify.el: New file. + * doc/Makefile.am (EXTRA_DIST): Add untabify.el + (untabify, final, check-format, check-refs, check-fixmes) + (check-unrevised, all-check-docs, check-docs): New rules. + + * src/common.h (check_device_option): New global. + * src/incremen.c (procdir): Use boolean and instead of bitwise + one. Patch by Jean-Louis Martineau. + Compare device numbers only if check_device_option is set. + * src/tar.c: New command line options --no-check-device and + --check-device. Proposed by Jean-Louis Martineau. + (parse_opt): Hanlde new options. + (decode_options): Initialize check_device_option to true. + + * THANKS: Update + +2008-03-06 Sergey Poznyakoff + + * bootstrap: Use rsync to get translations. + * doc/tar.texi: Minor change. + * lib/.cvsignore: Update + * po/.cvsignore: Update + * src/system.c: Remove include setenv.h. + * tests/atlocal.in (STAR_DATA_URL): Update. + * tests/star/README: Update URL. + +2008-02-09 Sergey Poznyakoff + + * doc/tar.texi: Fix a typo. Reported by Denis Excoffier. + +2008-02-08 Sergey Poznyakoff + + * NEWS: Update. + * configure.ac: Version 1.19.90 + * po/POTFILES.in: Add missing files. + * src/compare.c (verify_volume): Honor --ignore-zeros. + Proposed by Jan-Benedict Glaw. + * tests/shortfile.at (AT_KEYWORDS): Add shortfile0. + +2008-02-07 Sergey Poznyakoff + + * NEWS: Update. + * src/create.c (dump_file0): Apply transform_name to symlink + targets. + +2008-02-04 Sergey Poznyakoff + + * src/transform.c: Support multiple --transform options. Support + semicolon-separated lists of replace expressions. + * NEWS, tar.texi: Document changes to the --transform option. + +2008-01-30 Paul Eggert + + * doc/tar.texi: Update Back-Cover text to reflect new GNU wording. + +2007-12-17 Paul Eggert + + Exit with nonzero status if a close fails on an archive. + Problem (and initial trivial fix) + * src/buffer.c (close_archive, new_volume): close_error, not + close_warn. + +2007-12-05 Sergey Poznyakoff + + * src/buffer.c (check_compressed_archive): Do not bail out if the + file is too short, set boolean flag, passed as an argument + instead. This fixes a bug introduced on 2007-08-24. See also + tests/shortupd.at. + + * tests/Makefile.am, tests/testsuite.at: Add shortupd.at. + * tests/shortupd.at: New test. + +2007-11-12 Jim Meyering + + Don't read from name[-1]. + * src/incremen.c (make_directory): Handle namelen == 0, since + find_directory_meta calls make_directory (""). + +2007-11-07 Sergey Poznyakoff + + * bootstrap (checkout): Use URL of the gnulib CVS mirror. + * gnulib.modules: Add fseeko and snprintf. + +2007-10-31 Sergey Poznyakoff + + * src/checkpoint.c: New actions: bell and ttyout + * src/system.c (sys_exec_info_script) + (sys_exec_checkpoint_script): pass the current blocking factor in + TAR_BLOCKING_FACTOR environment variable. + * doc/tar.texi: Update + * NEWS: Update + +2007-10-30 Sergey Poznyakoff + + * doc/Makefile.am: Use texi2html and the CVS version of gendocs.sh + to create HTML versions of the manual. + * doc/gendocs_template: Likewise. + * doc/tar.texi: Document --hard-dereference and + --checkpoint-action options. Improve documentation of + --check-links. + +2007-10-29 Sergey Poznyakoff + + * NEWS: Update + * configure.ac: Version 1.19.1 + * po/POTFILES.in: Add src/checkpoint.c + * src/Makefile.am (tar_SOURCES): add checkpoint.c + * src/checkpoint.c: New file - checkpoint handling. + * src/buffer.c (checkpoint, do_checkpoint): Remove. + (_flush_write, simple_flush_read, _gnu_flush_read): Use + checkpoint_run. + * src/common.h (enum checkpoint_style): Remove. + (checkpoint_style): Remove. + (DEFAULT_CHECKPOINT): New define. + (hard_dereference_option): New variable. + (sys_exec_checkpoint_script): New declaration. + * src/create.c (file_count_links): do nothing if + hard_dereference_option is set. + * src/system.c (sys_exec_checkpoint_script): New function. + (sys_exec_info_script): Restore SIGPIPE handler. + * src/tar.c: (parse_opt): New options --hard-dereference, + --checkpoint-action. + (decode_options): Call checkpoint_finish_compile. + + * src/system.c (sys_exec_info_script): Initialize buf. Problem + reported by Bengt-Arne Fjellner. + +2007-10-18 Jim Meyering + + Avoid compiler warnings. + * src/list.c (read_header_primitive): Define two locals, to + avoid incorrect "may be used uninitialized" warnings. + * src/incremen.c (procdir): Remove decl of unused local, "len". + +2007-10-18 Sergey Poznyakoff + + * doc/tar.texi (gzip): Remove compression patent + warning. According to Brett Smith, the patent is + expired. + +2007-10-17 Sergey Poznyakoff + + * src/suffix.c: New file. Compress format detection by archive + suffix (when creating). Suggested by Jean-Pierre Demailly. + * src/Makefile.am: Add suffix.c + * src/buffer.c (magic): Add an entry for new lzma format. Proposed + by Lasse Collin. + * src/common.h (set_comression_program_by_suffix): New prototype. + * src/tar.c: New options --auto-compress (-a) and --lzma + * THANKS: Add Lasse Collin and Jean-Pierre Demailly. + * NEWS: Update + * doc/tar.texi: Update + +2007-10-12 Paul Eggert + + * src/utf8.c (string_ascii_p): Recode to avoid bogus GCC 4.2.1 + warning about "comparison is always true due to limited range of + data type" when char is unsigned. + +2007-10-11 Paul Eggert + + Adjust to recent gnulib changes. + * configure.ac: Dont' check for strerror, since gnulib now does this. + * .cvsignore: Add m4, tar-[0-9]*. + * lib/.cvsignore: Adjust to various gnulib file name changes. + Add .deps, rmt-command.h. + +2007-10-10 Sergey Poznyakoff + + * configure.ac, NEWS: Raise version number to 1.19 + * tests/star/README: Update + +2007-10-05 Sergey Poznyakoff + + * src/create.c (dump_regular_file): Fix file padding in case of + truncation to zero size. + * NEWS: Update + +2007-10-04 Sergey Poznyakoff + + * tests/T-null.at: Use AT_DATA for sample output. + +2007-10-03 Sergey Poznyakoff + + * src/incremen.c (try_purge_directory): Ensure that arguments to T + and R are safe. + +2007-09-29 Sergey Poznyakoff + + * src/incremen.c (obstack_code_rename): Apply safer_name_suffix to + name arguments before storing them in T and R records. Reported by + Nicholas Cole. + +2007-09-27 Sergey Poznyakoff + + * configure.ac: Raise version number to 1.18.90 + * NEWS: Likewise + + * doc/snapshot.texi: Document version 2. + * doc/dumpdir.texi: Update. + + Implement --exclude-tag* and --exclude-cache* options for listed + incremental archives. + New option --exclude-vcs to exclude VCS-specific files and + directories. + + * NEWS: Update + * doc/tar.texi: Document --exclude-vcs option + * src/common.h (exclusion_tag_warning, check_exclusion_tags): New + prototypes. + * src/create.c (exclusion_tag_warning, check_exclusion_tags): + Remove static qualifier. + (check_exclusion_tags): account for dirname without terminating + slash. + (dump_dir0): exclusion_tag_all is handled elsewhere. + * src/incremen.c (struct directory): New member tagfile + (make_directory): Initialize tagfile to NULL + (procdir): New argument: entry + Hanlde exclusion tags. + (makedumpdir): Take into account directory->tagfile. + (scan_directory): Hanlde exclusion tags. + * src/tar.c: New option --exclude-vcs + (exclude_vcs_files): New function + +2007-09-14 Paul Eggert + + * AUTHORS: Remove unnecessary information. Just list the + principal authors. + * THANKS: Remove info duplicated from AUTHORS. + +2007-08-25 Jim Meyering + + Don't include . No longer needed. + * src/incremen.c: Don't include . No longer needed. + * src/buffer.c: Likewise. + * src/system.c: Likewise. + * src/tar.c: Likewise. + + Avoid shadowing and unused-variable warnings. + * src/create.c (check_exclusion_tags): Remove declaration of unused + local, "ret". + * src/compare.c (diff_dumpdir): Rename stat->stat_data to avoid + shadowing the syscall. + * src/buffer.c (do_checkpoint): Don't shadow the write syscall. + (try_new_volume): Avoid shadowing "access". + * src/tar.c (decode_options): Rename index->idx to avoid shadowing. + (find_argp_option): Rename option->o to avoid shadowing. + * src/incremen.c (scan_directory): Rename local, dir_name->dir, + to avoid shadowing the function. + (get_directory_contents): Likewise. + * src/system.c (global_pid): Rename from "pid", to avoid being + shadowed by locals. + * src/extract.c (apply_nonancestor_delayed_set_stat): + Rename st->sb to avoid shadowing another local. + +2007-08-24 Sergey Poznyakoff + + * configure.ac, NEWS: Raise version number to 1.18.1 + + * src/buffer.c (check_compressed_archive): Detect files smaller + than 512 bytes. + * tests/shortfile.at: New test case for the above change. + * tests/testsuite.at, tests/Makefile.am: Add shortfile.at + +2007-08-19 Sergey Poznyakoff + + * bootstrap: Gnulib initialization destroyed paxutils m4 files. + Initialize paxutils structure after that of gnulib. + +2007-08-12 Sergey Poznyakoff + + * src/names.c (contains_dot_dot): Fix double-dot recognition in + case of duplicate /. Patch by Dmitry V. Levin. + + * bootstrap (symlink_to_gnulib): Make sure the target directory + exists and create it if it does not. + + * doc/tar.texi: Fix a typo. + +2007-06-28 Sergey Poznyakoff + + * bootstrap: Update for the change of the TP URL + +2007-06-27 Sergey Poznyakoff + + Relicense under GPLv3 + +2007-06-21 Sergey Poznyakoff + + * tests/testsuite.at (AT_TAR_MKHIER): Skip test if genfile is + unable to create the file + * tests/lustar01.at: Likewise + +2007-06-21 Eric Blake + + Resolve testsuite failures 40-42 on cygwin. + * tests/testsuite.at (AT_TAR_MKHIER): Skip tests when long + file names cannot be created. + +2007-06-16 Sergey Poznyakoff + + * doc/Makefile.am (tar_TEXINFOS): Add tar-snapshot-edit.texi + * doc/tar-snapshot-edit.texi: New file + * doc/tar.texi (Fixing Snapshot Files): New appendix + + * scripts/tar-snapshot-edit: New file + * tests/extrac07.at: Add back write permissions on dir + +2007-06-09 Sergey Poznyakoff + + * tests/exclude.at: Sort the output. + +2007-06-08 Sergey Poznyakoff + + * configure.ac, NEWS: Raise version number to 1.17 + + * doc/tar.texi, doc/intern.texi: Replace: s/filename/file name/; + s/(ASCII|ID|BSD)/@acronym{&}/;s/"[^"]+"/``&''/ + Use `path' only when it refers to search paths, use + `file name' otherwise. + Fix various errors (based on patch by Benno Schulenberg) + + * doc/tar.texi (Operation Summary): Restore alphabetical order of + the options. + +2007-06-02 Sergey Poznyakoff + + Fix bug, introduced on 2007-03-30. + + * src/common.h (xform_type): New data type + (transform_member_name): Last argument is of xform_type type + All callers updated + + * src/extract.c: Update calls to transform_member_name + * src/list.c (decode_xform): Exempt symbolic links from component + stripping and name suffix normalization. + + * tests/extrac07.at: Update + +2007-05-30 Sergey Poznyakoff + + * src/xheader.c (decx): Unknown pax keywords produce a warning, + not error. + +2007-05-29 Paul Eggert + + * src/misc.c (set_file_atime): Use gl_futimens, not futimens, + due to gnulib change. + +2007-05-19 Sergey Poznyakoff + + * src/common.h (buffer_write_global_xheader): New function + (struct xheader): Move definition to tar.h + (extended_header): Remove global + (xheader_init): New function + (xheader_decode_global,xheader_store,xheader_read) + (xheader_write_global,xheader_write,xheader_string_begin) + (xheader_string_add,xheader_string_end): Take xhdr as first + argument. + * src/tar.h (struct xheader): New definition + (struct tar_stat_info): New member xhdr (extended header). + + * src/xheader.c (xheader_init): New function + (xheader_decode_global,xheader_store,xheader_read) + (xheader_write_global,xheader_write,xheader_string_begin) + (xheader_string_add,xheader_string_end): Take xhdr as first + argument. + + * src/buffer.c (buffer_write_global_xheader): New function + Update to use new xheader calls. + + * src/compare.c, src/create.c, src/delete.c, src/list.c, + src/sparse.c, src/tar.c, src/update.c: Global extended_header + removed, use new xheader calls instead. + + * tests/T-null.at: Minor fix + * tests/atlocal.in (tarball_prereq): Discard eventual md5sum + output. + +2007-05-18 Sergey Poznyakoff + + * src/create.c (dump_file0): Original ctime cannot be used as a + directory change indicator if --remove-files is given. + +2007-04-12 Paul Eggert + + Adjust to latest Gnulib. + * lib/.cvsignore: Add dirfd.c, dirfd.h, float+.h, mbscasecmp.c, + stdio.h, stdio_.h, stdlib.h, stdlib_.h, time.h, time_.h, unistd.h. + Remove exit.h, getcwd.h, mempcpy.h, memrchr.h, mkdtemp.h, stpcpy.h, + strcase.h, strchrnul.h, strdup.h, strndup.h, strnlen.h, time_r.h, + vsnprintf.h. + * m4/.cvsignore: Remove localedir.h. Sort. + +2007-04-03 Paul Eggert + + * src/common.h (closeopen): Remove decl. + * src/misc.c: Don't include , ; no longer + needed. + (get_max_open_files, closeopen): Remove. All callers removed. + (chdir_dir): Use a different technique, which doesn't rely on closing + all open files. + * src/tar.c (main): Don't call closeopen. + +2007-04-04 Sergey Poznyakoff + + * NEWS: Update + * doc/tar.texi: Update + * src/system.c (sys_exec_info_script): Store the + inter-communication fd in the environment variable TAR_FD + +2007-04-03 Sergey Poznyakoff + + * src/tar.c (main): Move closeopen after decode_options to + allow shell process substitution to work. + * tests/extrac07.at: Expect a warning on stderr. + +2007-03-30 Sergey Poznyakoff + + * src/common.h (transform_name_fp): Change signature + (transform_member_name): New function + * src/extract.c (extract_link, extract_symlink): Use + transform_member_name instead of safer_name_suffix so that + --transform and --strip-components affect links as well. + * src/list.c (transform_member_name): New function + (decode_header): Use transform_member_name + * src/names.c (all_names_found): Remove check for matching_flags. + * NEWS: Update + + * TODO: Update + * bootstrap (slurp): Remove any occurrences of $bt from the + generated gnulib.mk + * src/incremen.c: Do not include mkdtemp.h + +2007-01-26 Paul Eggert + + Adjust to recent gnulib changes. + * lib/.cvsignore: Add fchownat.c, rmt-command.h, strerror.c, string.h, + string_.h, sys, sys_time_.h, unistd_.h, wchar_.h, wctype_.h. + Remove localedir.h, size_max.h, xsize.h. + * src/xheader.c: Don't include stpcpy.h; no longer needed, now that + gnulib string.h defines stpcpy on all platforms. + +2007-01-23 Sergey Poznyakoff + + * doc/tar.texi: Document --exclude-caches* and --exclude-tag* + options. + * src/common.h (exclude_caches_option): Remove + (enum exclusion_tag_type): New data type + (add_exclude_tag): Rename to add_exclusion_tag + (cachedir_file_p): New prototype + * src/create.c (struct exclude_tag): rename to exclusion_tag + (check_exclusion_tags): New function + (cachedir_file_p): New function (from check_cache_directory) + (dump_dir0,dump_file0): Use check_exclusion_tags + * src/tar.c: New options --exclude-caches-all, + --exclude-caches-under, --exclude-tag-all, --exclude-tag-under + * tests/exclude.at: New file + * tests/Makefile.am (TESTSUITE_AT): Add exclude.at + * tests/testsuite.at: Add exclude.at + +2007-01-19 Sergey Poznyakoff + + * gnulib.modules: Require strerror + * doc/gendocs_template: Fix typos + * scripts/xsparse.c (expand_sparse): use ftruncate to handle the + trailing hole + * src/sparse.c (sparse_skip_file,pax_dump_header_1) + (pax_decode_header): Keep track of the number of bytes + written. + * configure.ac: Version 1.16.2 + * NEWS: Update + +2007-01-04 Sergey Poznyakoff + + * src/compare.c (diff_dumpdir): Compare directory contents using + dumpdir_cmp. Do not free dumpdir_buffer, it will leave the + incremental directory table in the inconsistent state and trigger + full dump. + (read_and_process): Process dumpdirs no matter what the archive + format. + * src/incremen.c (list_dumpdir): Minor fixes. + + * src/compare.c (read_and_process): Fix type of "size" + +2006-12-13 Sergey Poznyakoff + + * tests/T-null.at: Skip the test if genfile is not able to create + the filename with an embedded newline. + +2006-12-12 Paul Eggert + + Port to Forte Developer 7 C 5.4 and C99. + * src/common.h (add_exclude_tag): Add decl; C99 requires this + and Forte warns about it. + * src/incremen.c: Include for mkdtemp prototype, + for same reason. + * src/misc.c (get_max_open_files): Rewrite to avoid code that + Forte C complains about as being unreachable. + * src/xheader.c (mtime_code): Rewrite to avoid Forte error + reported by Trond Hasle Amundsen. + + * src/incremen.c (compare_dirnames): Rewrite to avoid casts. + * src/utf8.c (string_ascii_p): Likewise. + * src/xheader.c (mtime_coder, volume_size_coder, volume_offset_coder): + Likewise. + +2006-12-08 Sergey Poznyakoff + + * bootstrap: Add paxutils files to dot_ignore. + + * configure.ac: Raise version number to 1.16.1 + * bootstrap (slurp): Create .(cvs|git)ignore if not present + * po/.cvsignore, m4/.cvsignore: Remove automatically generated + files. + +2006-12-07 Sergey Poznyakoff + + * NEWS: Update + * Makefile.am (distclean-local): Fixed + * doc/tar.texi: Update documentation of --exclude-tag + * src/create.c (dump_dir0): Move checks for exclude tags to + dump_file0. + (dump_dir): Move calls to ensure_slash to dump_file0 + * src/extract.c (extract_file): Call skip_member if open fails. + Patch proposed by Jan-Benedict Glaw + * tests/truncate.at: Use genfile instead of dd, because on some + systems /dev/zero is not available. + +2006-12-04 Paul Eggert + + * NEWS: Fix some race conditions with tar -x --same-owner. + * src/extract.c (ARCHIVED_PERMSTATS): Add a comment saying that + S_IRWXG | S_IRWXO might be masked out. + (set_mode): Set the mode if some bits were masked out originally. + (set_stat): Don't chmod before chown, as that might temporarily + grant permissions that we don't want to grant. The chmod was + there only to work around broken hosts, so add a comment advising + users not to use those broken hosts instead. + (repair_delayed_set_stat, extract_dir): + Remember to mask out current umask before inverting permissions. + (extract_dir): If the owner might change, or if the mode has + special bits, create the directory 700 at first, but restore it later. + (open_output_file): New arg mode; all uses changed. + (extract_file, extract_node, extract_fifo): If the owner might + change, omit group and other bits at first, but restore them after + changing the owner. + +2006-12-04 Jim Meyering + + * doc/tar.texi (Long Options): Remove doubled word. + +2006-11-30 Sergey Poznyakoff + + * src/xheader.c (xheader_read): Remove unused variable + + * po/POTFILES.in: Remove src/mangle.c + + * bootstrap: Implement --update-po and .bootstrap + + * src/create.c (dump_dir0): Implement --exclude-tag option + * src/tar.c: Likewise + * doc/tar.texi (exclude): Document --exclude-tag + +2006-11-29 Paul Eggert + + * NEWS: Remove support for mangled names. + * doc/tar.texi (verbose tutorial): Likewise. + * src/Makefile.am (tar_SOURCES): Remove mangle.c. + * src/common.h (extract_mangle): Remove decl. + * src/extract.c (extract_mangle_wrapper): Remove. + (prepare_to_extract): Remove support for mangled names. + * src/list.c (read_and, print_header): Likewise. + * src/mangle.c: Remove. + * src/tar.h (GNUTYPE_NAMES): Remove. + + Port to latest gnulib. There were a lot of changes, so the + simplest way to get this up and running was to switch to coreutils + bootstrap procedure. I noticed one feature missing after this + merge: the ability to update a single .po file. I can add that + later if need be. + * README-cvs, bootstrap.conf: New files. + * lib/.cvsignore: Remove Makefile.am, printf-parse.c, vasnprintf.c. + Add fstatat.c, gnulib.mk, openat-proc.c, same-inode.h, stat_.h, + tempname.c, tempname.h, uinttostr.c. + * lib/printf-parse.c, lib/vasnprintf.c: New files, from coreutils, + to override gnulib, so that we don't need xsize.h. + * bootstrap: Replace with coreutils bootstrap, except add support + for paxutils. + * configure.ac (gl_USE_SYSTEM_EXTENSIONS): Remove, as gl_EARLY now + does this. + (gl_EARLY, gl_INIT): Add. + (tar_GNULIB): Remove. + * gnulib.modules: Add configmake. + * lib/Makefile.tmpl: Remove, replacing with.... + * lib/Makefile.am: New file. + * src/Makefile.am (tar.o): Remove dependency: Automake does this + for us. + * src/tar.c: Include and , not + . + +2006-11-13 Sergey Poznyakoff + + * src/xheader.c (mtime_coder): Treat non-null data as a pointer to + struct timespec, overriding st->mtime + * src/create.c (start_header): Pass mtime as a call-specific data + to xheader_store. + + * tests/truncate.at: Do not use 'k' modifier in dd options. + * tests/append02.at: Do not depend on command timing. + +2006-11-01 Sergey Poznyakoff + + * src/tar.c (enum read_file_list_state.file_list_skip): New value + (read_name_from_file): Skip zero-length entries + + * tests/T-empty.at: New test case + * tests/T-null.at: New test case + * tests/extrac07.at: New test case + * tests/Makefile.am: Add new test cases. + * tests/testsuite.at: Add new test cases. + * tests/extrac02.at: Add more keywords + * tests/extrac04.at: Likewise + * tests/extrac06.at: Likewise + * tests/shortrec.at: Do not assume tar's default archive is stdout + +2006-10-31 Sergey Poznyakoff + + * src/extract.c, src/xheader.c: Call last_component instead of + base_name. The latter returns a malloced string since 2006-03-11. + +2006-10-21 Sergey Poznyakoff + + * NEWS, configure.ac: Version 1.16 + * Makefile.am (distclean-local): New rule + +2006-10-17 Sergey Poznyakoff + + * src/tar.c: Fix help output formatting. Thanks Benno + Schulenberg. + +2006-10-16 Sergey Poznyakoff + + * Makefile.am (dist-hook): Create a cpio archive. + * NEWS: Update + +2006-10-14 Sergey Poznyakoff + + * doc/tar.texi (Synopsis): Document tar exit codes. + * src/create.c (dump_regular_file,dump_file0): Set exit_status to + TAREXIT_DIFFERS if the file being dumped was truncated or + otherwise changed. + * src/tar.c: Do not attempt to close stderr after call to + close_stdout. + * tests/grow.at: New test case + * tests/Makefile.am: New test grow.at + * tests/testsuite.at: Likewise + * tests/truncate.at (AT_KEYWORDS): Keyword `filechange' + Test tar exit status. + + * src/buffer.c (_open_archive): Make sure stdlis is set to stderr + when we are writing archive to stdout (unless --index-file is + used). Bug introduced on 2006-07-06. + * tests/Makefile.am: New test verbose.at + * tests/testsuite.at: Likewise + * tests/indexfile.at (AT_KEYWORDS): Add stdout keyword + * tests/verbose.at: New test case + +2006-10-02 Sergey Poznyakoff + + * THANKS: Add Joerg Weilbier + * src/buffer.c (new_volume): Initialize current_block + * src/xheader.c (xheader_string_end): Fix diagnostic message. + * tests/multiv05.at: New testcase. + * tests/Makefile.am, tests/testsuite.at: Add multiv05.at + +2006-09-27 Sergey Poznyakoff + + * bootstrap: Use ${package} instead of hardcoding package name + * doc/tar.texi: Minor fix + * src/tar.c (doc0, doc1, initialize_argp_doc): Removed. Rely on + the new argp method instead. + +2006-09-12 Sergey Poznyakoff + + * README: Fix a typo + +2006-09-08 Paul Eggert + + Adjust to latest gnulib. + * lib/.cvsignore: Add at-func.c, configmake.h, fchmodat.c, + fcntl.h, fcntl_.h, inttypes_.h, lstat.c, lstat.h. + * tests/testsuite.at (AT_TAR_MKHIER): Use install-sh -d + rather than the no-longer-included mkinstalldirs. + +2006-09-08 Sergey Poznyakoff + + * src/incremen.c (try_purge_directory): Initialize struct st. Fix + condition for selecting candidates for removal. + * README-alpha: List texinfo among build prerequisites for the CVS + version. + + * bootstrap (intl_files_to_remove): Do not remove m4/inttypes-h.m4 + and m4/inttypes-pri.m4 + +2006-08-11 Paul Eggert + + * bootstrap: Set XGETTEXT_OPTIONS to flag our printf-format functions, + so that translators are warned about strings that are formats but + don't look like formats. This might help prevent core dumps. + * configure.ac (AM_GNU_GETTEXT): Upgrade to need-formatstring-macros. + Suggested by Eric Blake to avoid problems like + . + (AM_GNU_GETTEXT_VERSION): Upgrade from 0.12.1 to 0.15. The gettext + manual says we should use the version number normally expected of + maintainers, neither more nor less. + + * bootstrap (get_translations): + Don't exclude ky.po; it is working again. + +2006-08-09 Paul Eggert + + * bootstrap (get_translations): + Don't exclude ja.po; it is working again. + Don't remove all old .po files if we're merely updating one. + * po/.cvsignore: Add Makevars. + +2006-08-07 Paul Eggert + + * src/tar.c: Work around limitation imposed by gettext 0.15 + by concatenating strings with "\v" after translation. + (doc): Remove, splitting into: + (doc0, doc1): New constants. + (argp): Don't use doc; just initialize to NULL. + (initialize_argp_doc): New function. + (decode_options): Use it. + + * bootstrap: Redo po file retrieval to match Bison's method, + since the translation project changed its index format. + Don't use --assume-autoconf; it's now replaced + by looking in configure.ac. + (m4/codeset.m4, m4/intdiv.m4, m4/inttypes-pri.m4, m4/isc-posix.m4): + (m4/lcmessage.m4, m4/onceonly_2_57.m4, m4/gettext.m4, m4/glibc21.m4): + (m4/inttypes_h.m4, m4/lib-ld.m4, m4/lib-prefix.m4, m4/po.m4): + (m4/stdint_h.m4, m4/uintmax_t.m4, m4/ulonglong.m4): + Don't rename to ..._gl.m4, as this is no longer needed. + (m4/geteext.m4): Patch to remove the need for intl/*. + Use autopoint manually, then remove the intl files, + then undo changes to gnulib files that autoreconf made, + and then run aclocal/autoconf/autoheader/automake. + This makes our bootstrap procedure closer to Bison's. + (po/Makevars): Generate automatically. + * configure.ac (AC_PREREQ): Update from 2.59 to 2.60. + (gl_AC_TYPE_INTMAX_T, jm_AC_TYPE_UINTMAX_T): Remove. + * gnulib.modules: Add inttypes, stdint. + * lib/.cvsignore: Add close-stream.c, close-stream.h, + stdint.h, stdint_.h. + * po/Makefile: Remove; now automatically generated. + + * src/incremen.c (read_incr_db_01): Check input strings more + carefully. Do not pass arbitrary char values to isspace, as + this has undefined behavior. Likewise for assigning arbitrary + uintmax_t values to other types. + (read_negative_num, read_unsigned_num, read_timespec): + New functions, to check input values a bit more carefuly. + (read_num): Use read_unsigned_num. New arg MAX_VAL; + all callers changed. + (read_incr_db_2): Use these new functions. + Use a consistent diagnostic for unexpected EOF. + (read_directory_file): Do not assign arbitrary uintmax_t value + to int. + (read_timespec, write_directory_file_entry, write_directory_file): + Handle negative time_t values correctly. We don't bother to do + this with pre-2 formats, since presumably the time stamps were + output incorrectly. + + * src/tar.c (doc): Don't use \v in an argument to gettext; + gettext 0.15 rejects this. + +2006-07-24 Sergey Poznyakoff + + * src/tar.c (decode_options): Do not require -L with -M -Hpax. + It could be needed in future, but currently it is not. + * src/create.c (to_chars_subst): Update comment regarding OLDGNU + vs. GNU format differences. + (mode_to_chars): Treat OLDGNU_FORMAT same as GNU_FORMAT. Fixes bug + reported by TAMUKI Shoichi , which caused + equivalent `tar cf ...' and `tar rf ...' commands to produce + different archives. + + * tests/append02.at: New test case + * tests/Makefile.am, tests/testsuite.at: Add append02.at + +2006-07-20 Paul Eggert + + * bootstrap: Adjust to today's change to gnulib-tool by invoking + it with --assume-autoconf='latest-stable'. + +2006-07-16 Paul Eggert + + Adjust to recent gnulib changes. + * lib/.cvsignore: Remove atexit.c, exit.c, getndelim2.c, getndelim2.h, + pathmax.h, paxconvert.c, paxerror.h, xstrdup.c. + Add inttypes.h, mktime.c, wcwidth.h, xstrndup.c, xstrndup.h. + * src/create.c (start_header): Adjust to API change to mode_adjust. + +2006-07-09 Sergey Poznyakoff + + * THANKS: Add Ralf Wildenhues + * NEWS: Update + +2006-07-09 Ralf Wildenhues + + * doc/dumpdir.texi, doc/snapshot.texi, doc/sparse.texi, + doc/tar.texi: Fix some typos. + +2006-07-06 Sergey Poznyakoff + + tar --index-file=FILE --file=- sent the archive to FILE, and + the listing to stderr. Bug reported by Marcin Gryszkalis + + + * src/buffer.c (_open_archive): Remove stdlis initialization + * src/tar.c (decode_options): Initialize stdlis + * tests/indexfile.at: New test case + * tests/testsuite.at: Include indexfile.at + * tests/Makefile.am (TESTSUITE_AT): Add indexfile.at + +2006-07-05 Sergey Poznyakoff + + * doc/Makefile.am (manual): Fix TEXINPUTS + * doc/rendition.texi (FIXME): Do not use deprecated @quote-args. + Do not use @allow-recursion. In its current form the macro is not + recursive. + +2006-07-03 Sergey Poznyakoff + + * bootstrap (update_po): Fix single translation update + +2006-07-03 Sergey Poznyakoff + + * configure.ac (AC_CHECK_FUNCS): Check for getdtablesize + * src/common.h (closeopen): New function + * src/misc.c (chdir_arg): Use x2nrealloc to reallocate wd. + (get_max_open_files,closeopen): New functions + (chdir_do): Do not use save_cwd if it was already used more than + max_open_files-4 times to avoid running off the file + descriptors. + * src/tar.c (main): Call closeopen + * doc/tar.texi: Update --directory description + * NEWS: Update + +2006-06-26 Sergey Poznyakoff + + * doc/tar.texi: Update. Add cross-references. + * doc/sparse.texi: Add cross-references. + +2006-06-25 Sergey Poznyakoff + + * scripts/xsparse.c: A sample utility to expand sparse files + extracted by third-party tars. It is not meant to be installed nor + to be included in the distribution. It is here, so that it can be + obtained either from CVS or from the tar web site. + * doc/Makefile.am (tar_TEXINFOS): Sorted + * doc/tar.texi (Other Tars): New node describing how to extract + GNU-specific member formats using third-party tars. + * src/common.h (sparse_file_p): Remove + * src/sparse.c: Likewise + * src/create.c: Use ST_IS_SPARSE instead of sparse_file_p (update + paxutils first) + * src/tar.c: --sparse-version turns on --sparse + +2006-06-24 Sergey Poznyakoff + + * src/buffer.c (print_total_stats): Add default case. + * src/common.h (name_init): New prototype. + (xheader_string_end): Return bool. + * src/extract.c (extract_volhdr): Add missing return + * src/incremen.c: Remove not used variables + * src/sparse.c (pax_dump_header_0): Return false if + xheader_string_end fails (for 0.1 formats). + (pax_dump_header): Return meaningful value + * src/transform.c (segm_count): Change type to size_t + * src/xheader.c (xhdr_tab.decoder): pass keyword as a second + argument. All callers changed. + (decode_record): Check for numeric overflow + (xheader_string_end): Return boolean value. Check for possible + numeric overflow + +2006-06-23 Sergey Poznyakoff + + * doc/sparse.texi: New file + * doc/Makefile.am (tar_TEXINFOS): Add sparse.texi + * doc/intern.texi (Sparse Formats): New node + * doc/tar.texi: Update master menu + + * src/common.h (tar_sparse_major,tar_sparse_minor): New globals. + * src/sparse.c: Implement sparse format versioning. Implement new + version (1.0) of PAX sparse format. + (pax_sparse_member_p): Fix condition + (pax_dump_header): A dispatcher function + (pax_dump_header_0,pax_dump_header_1): New functions. + (pax_optab): Update + (oldgnu_dump_header): Minor fix: make sure + sparse_header.isextended is set before calling + set_next_block_after + * src/tar.c: New option --sparse-version + * src/tar.h (struct tar_stat_info.sparse_major,sparse_minor): New + members. + * src/xheader.c: Implement new keywords: GNU.sparse.name, + GNU.sparse.major, GNU.sparse.minor, GNU.sparse.realsize + + * tests/spmpv00.at, tests/spmvp01.at, tests/spmvp10.at: New + testcases. + + * tests/Makefile.am: Add spmvp00.at, spmpv01.at, spmpv10.at + * tests/shortrec.at: Explicitely give `-f -' to the tar invocation + * tests/sparsemvp.at: Rewritten as an include file. + (TAR_MVP_TEST): New macro + * tests/testsuite.at: Include sparsemvp.at, spmvp00.at, + spmvp01.at, spmvp10.at + +2006-06-21 Sergey Poznyakoff + + * doc/tar.texi (Overriding File Metadata): New node + Document --mtime option. + * src/common.h (set_mtime_option,mtime_option): New globals + * src/create.c (start_header): Override mtime if requested + * src/tar.c: Implement new option, --mtime, allowing to set + modification times for all archive members during creation. + (struct tar_args): textual_date_option replaced with a linked list + textual_date. All references updated. + (get_date_or_file,report_textual_dates): New functions. + * configure.ac: Raise version number to 1.15.92 + * NEWS: Update + +2006-06-20 Sergey Poznyakoff + + * src/common.h (struct name.explicit): Remove + Use variable names in all declarations + (name_scan): Remove second argument + * src/delete.c: Remove second argument from calls to name_scan + * src/update.c: Likewise + * src/incremen.c (procdir): Use is_individual_file to check for + files explicitely specified in the command line. Fixes bug + reported by Dat Head on 19 Jun 2006 (descending into mountpoints + with --one-file-system in use) + * src/misc.c (maybe_backup_file): Second argument is bool + * src/names.c (name_next_elt): Call register_individual_file + (namelist_match): Remove third argument + (name_match): Change return type to bool + (name_scan): Remove second argument + * src/sparse.c (pax_dump_header): Store original sparse file name + in GNU.sparse.name variable. The name field in the ustar header + now contains generated name (%d/GNUSparseFile.%p/%f), so that + non-pax-aware tars won't extract the file under the original + filename. + * src/xheader.c (GNU.sparse.name): New variable for storing sparse + file name. + +2006-06-13 Sergey Poznyakoff + + * doc/Makefile.am (check-options): Expand macros before grepping + in $(info_TEXINFOS) + * doc/rendition.texi (FIXME) [!PROOF_FOOTNOTED]: Enclose in a + cartouche + * doc/tar.texi: Define op as codeindex. Use special macros to + populate it + Consequently prefer @dfn{long options} over @dfn{mnemonic + options}. + Document --unquote, --no-unquote + (Short Option Summary): Build a table of cross-references to the + corresponding long options. + (Using Multiple Tapes,Multi-Volume Archives): Rewritten + + * doc/value.texi (xopindex,opsummary): New macros + + * doc/Makefile.am (check-options): New goal + * doc/tar.texi: Update + * src/tar.c: Implement --overwrite-dir option (long ago + documented). + +2006-06-12 Sergey Poznyakoff + + * doc/tar.texi: Document better the --totals option + * NEWS: Update + * src/buffer.c (total_blocks_deleted): New variable + (set_start_time): Set volume_start_time and last_stat_time as well + (set_volume_start_time): New function + (compute_duration): Do not call set_start_time, update + last_stat_time instead. Use it in calculation instead of + start_time, which is now set only once, upon startup. + (print_total_written): Removed. + (print_total_stats): New function for printing byte/speed statistics. + (_open_archive): Detect attempts to update compressed archives. + (_gnu_flush_write): Always update prev_written. + (open_archive): Call set_volume_start_time. + * src/common.h (volume_start_time,last_stat_time): New globals + (print_total_written): Replaced with: + (print_total_stats): New function + * src/delete.c (records_skipped): Remove static qualifier, the + variable is used by print_total_stats in buffer.c + * src/extract.c (check_time): Use volume_start_time when checking + for timestamp plausability. + * src/tar.c: (options, parse_opt): Allow for optional argument to + the --totals option, which specifies a signal upon delivery of which + the statistics must be output. + (main): Call print_total_stats if total_option is set. + +2006-06-11 Sergey Poznyakoff + + * src/xheader.c (xheader_set_single_keyword): Fix typo. + (decode_time): Avoid using gotos. + + * doc/mastermenu.el: New file + * doc/Makefile.am (master-menu): New goal + * doc/tar.texi: Update master menu + +2006-06-10 Sergey Poznyakoff + + * doc/tar.texi: Remove leftover include + +2006-06-09 Sergey Poznyakoff + + * doc/Makefile.am (tar_TEXINFOS): Add intern.texi + (EXTRA_DIST): Remove convtexi.pl, add texify.sed + * doc/intern.texi: New file + * doc/convtexi.pl: Remove + * doc/texify.sed: Auxiliary script to convert ../src/tar.h to + header.texi + * doc/rendition.texi: Fix typo + * doc/tar.texi: Update + * src/tar.h: Fix indentation, introduce end-of-format marker for + texify.sed + + * THANKS: Add Jason Armistead + * doc/tar.texi: Update + * NEWS: Update + * src/buffer.c: Implement more flexible checkpoint style + * src/common.h (checkpoint_option): Change type to unsigned + (checkpoint_style): New variable. + * src/tar.c: --checkpoint takes an optional argument specifying + number of records between two successive checkpoints (proposed + by Jason Armistead on 2004-06-22). Optional dot starting the + argument means "print dots instead of textual checkpoints". + (tar_help): New function + * src/transform.c: Minor fixes. + +2006-06-08 Sergey Poznyakoff + + * gnulib.modules: Add mkdtemp + * doc/dumpdir.texi: New file + * doc/Makefile.am (tar_TEXINFOS): Add dumpdir.texi + * doc/tar.texi: Document dumpdir format + * src/incremen.c (dumpdir_locate,obstack_code_rename): + (purge_directory): Re-implement renaming. Introduce + 'X' control code. + (make_tmp_dir_name): Remove + + * src/transform.c (set_transform_expr,_transform_name_to_obstack): + Implement NUMBER flag. + (add_char_segment): Fix length assignement + + * doc/tar.texi: Update + +2006-06-07 Sergey Poznyakoff + + * src/transform.c (transform_name_fp): Run fun even if + _transform_name_to_obstack returns false. + (_transform_name_to_obstack,set_transform_expr): Implement GNU + extension case conversion operations. + + * doc/tar.texi (transform): Document the option. + +2006-06-02 Sergey Poznyakoff + + * NEWS: Update + * src/common.h (set_transform_expr): New function + * tests/Makefile.am: Add incr04.at + * tests/testsuite.at: Likewise + * tests/incr04.at: New test case + * tests/long01.at: Fix typo in the comment + * tests/multiv04.at: Use genfile --files-from + + (Above changes need new genfile.c from paxutils) + + * TODO: Update + * NEWS: Update + * doc/tar.texi: Update + * src/transform.c: New file + * src/Makefile.am (tar_SOURCES): New module transform.c + * src/common.h (transform_name, transform_name_fp): New functions + (show_stored_names_option): Renamed to + show_transformed_names_option. All uses changed + * src/create.c (dump_file0): Transform file name + * src/extract.c (extract_archive): safer_name_suffix and + stripped_prefix_len are now called by decode_header + * src/list.c (print_header): Update displayable name selection. + * src/tar.c: New option --transform + New option --show-transformed-names generalizes + --show-stored-names. The latter is retained as an alias. + +2006-05-31 Sergey Poznyakoff + + * src/incremen.c (make_directory): Fix initialization of struct + directory. + +2006-05-25 Sergey Poznyakoff + + * doc/tar.texi: Document use of globbing patterns. + * src/tar.c (parse_opt): Add comment before --preserve case. + +2006-05-24 Sergey Poznyakoff + + * NEWS: Update + * doc/tar.texi: Update + * configure.ac (AM_INIT_AUTOMAKE): Use tar-ustar option. Raise + version requirement to 1.9 + * src/common.h (struct name): Refactured + (warn_regex_usage): New variable. + (dump_file): First argument is const char*. + (name_init,name_add): Removed + (name_add_name,name_add_dir): New functions + (name_next): Return const char*. + * src/create.c: (dump_file,dump_file0): First argument is const + char*. All callers updated. + * src/names.c: Rewritten handling of member names in the command + line. Tar no longer attempts to guess globbing patterns, instead + it relies on --wildcard option. + (init_names): Removed. + (struct name_elt): New structure. + (name_array): Change type to struct name_elt. All references updated + (name_add_name,name_add_dir): New functions + (name_next_elt): New function + (name_next): Rewritten using name_next_elt. + (namelist_match): Rewritten pattern matching using + exclude_fnmatch. + (names_notfound): Warn if globbing patterns were used without + --wildcards option + * src/tar.c (options): Move globbing-related options into a + separate group. Set -l as an alias to --check-links, as required + by UNIX98 + (struct tar_args): New fields + wildcards,matching_flags,include_anchored + (MAKE_EXCL_OPTIONS,MAKE_INCL_OPTIONS): New macros + (parse_opt): Use x2nrealloc to grow archive_name_array. + Use MAKE_EXCL_OPTIONS,MAKE_INCL_OPTIONS to create appropriate + fnmatch options, and name_add_name,name_add_dir to handle member + name and -C arguments. + (decode_options): Likewise + (main): Remove call to init_names. + + * tests/append.at, tests/append01.at, tests/extrac01.at, + tests/options.at, tests/options02.at, tests/same-order01.at, + tests/same-order02.at: Make AT_SETUP more readable. + +2006-05-23 Sergey Poznyakoff + + * src/buffer.c (change_tape_menu): Fix typo (uninitialized + variable) introduced yesterday. + +2006-05-22 Sergey Poznyakoff + + * doc/tar.texi: Use @var{file_name} instead of @var{file name} + * src/buffer.c (change_tape_menu): Break the loop after obtaining + new archive name. Check for empty input line. + +2006-05-15 Sergey Poznyakoff + + * tests/atlocal.in (XFAILFILE): New variable + * tests/version.at: Create $XFAILFILE on failure + * tests/testsuite.at (AT_TAR_CHECK): Declare expected failure if + $XFAILFILE exists. + +2006-05-13 Sergey Poznyakoff + + * THANKS: Update + * src/buffer.c (read_header0): Use read_header_primitive to avoid + clubbering current_tar_info. All callers updated. + * src/common.h (read_header_primitive): New function + * src/extract.c (extract_volhdr): New function + (prepare_to_extract): Use extract_volhdr as extractor for volume + names. + * src/list.c (read_header_primitive): New function + (read_header): Front end for read_header_primitive + * tests/chtype.at: New file + * tests/volsize.at: New file + * tests/Makefile.am (TESTSUITE_AT): Add chtype.at, volsize.at + (check-full): New target. + * tests/atlocal.in (TEST_DATA_URL,STAR_DATA_URL) + (STAR_TESTSCRIPTS): Provide default values. + (tarball_prereq): New function + * tests/testsuite.at (AT_TARBALL_PREREQ): New defun + (AT_STAR_PREREQ): Rewrite using tarball_prereq + Include chtype.at and volsize.at + * tests/volume.at: Add keywords. + + * tests/star/gtarfail.at, tests/star/gtarfail2.at, + tests/star/multi-fail.at, tests/star/pax-big-10g.at, + tests/star/ustar-big-2g.at, tests/star/ustar-big-8g.at + (AT_STAR_PREREQ): Provide md5 sum. + + * lib/.cvsignore: Update + +2006-05-08 Sergey Poznyakoff + + * tests/testsuite.at (AT_SORT_PREREQ, AT_UNPRIVILEGED_PREREQ): New + defines + + * tests/extrac04.at, tests/incr03.at, tests/listed02.at, + tests/pipe.at, tests/rename01.at, tests/rename02.at, + tests/rename03.at, tests/same-order01.at: Call + AT_SORT_PREREQ. Remove fd 2 redirection after calls to sort + * ignfail.at: Call AT_UNPRIVILEGED_PREREQ + +2006-05-08 Sergey Poznyakoff + + Listed incremental backups: keep more information about + directories. Handle renamed directories more effectively + (initial implementation, more updates to follow). + Source tree before this point is tagged + alpha_1_15_90_incremental_1. + + * NEWS: Update + * configure.ac: Raise version number to 1.15.91 + * src/common.h (rename_directory,append_incremental_renames): New + functions. + * src/extract.c (rename_directory): New function + * src/incremen.c (struct directory.contents, flags): New members + (nfs,found,new): Remove. Replaced by appropriate bitmask values in + `flags' field. All uses updated. + (directory_meta_table): New table. + (hash_directory): Rename to hash_directory_name + (compare_directories): Rename to compare_directory_names + (hash_directory_meta,compare_directory_meta,find_directory_meta): + New functions + (compare_dirents): Removed + (note_directory): Get 7th argument: directory contents. + All callers updated + (dumpdir_locate,makedumpdir): New functions + (scan_directory): Rewritten. Use makedumpdir to create a sorted + dumpdir array. This makes the obstack argument unnecessary. Besides, + ALL_CHILDREN flag is set only for new directories. + (procdir): Change return type to struct directory. Return + immediately if the directory was already initialized. Discover + directory renames using directory_meta_table. + (append_incremental_renames): New function. + (read_directory_file, write_directory_file): Use new snapshot file + format. + * src/names.c (collect_and_sort_names): Update dir_contents of the + first non-fake name entry when in listed incremental mode. + + * tests/incr03.at: New testcase + * tests/rename01.at: New testcase + * tests/rename02.at: New testcase + * tests/rename03.at: New testcase + * tests/Makefile.am: Add + incr03.at,rename01.at,rename02.at,rename03.at + * tests/testsuite.at: Likewise. + * tests/listed02.at: Update for the new behavior + * tests/multiv04.at (AT_KEYWORDS): Add missing incremental kw. + +2006-05-02 Sergey Poznyakoff + + * src/buffer.c (try_new_volume): Attempt to continue if the name + is apparently truncated in a GNU format volume. + + * tests/comprec.at, tests/delete01.at, tests/delete02.at, + tests/delete04.at, tests/delete05.at, tests/extrac05.at, + tests/listed01.at, tests/multiv01.at, tests/multiv02.at, + tests/pipe.at, tests/same-order01.at, tests/same-order02.at, + tests/sparse01.at, tests/sparse03.at: Always use genfile --file, + this enables extra error checking. + + * tests/multiv03.at: Attempt to extract a member with truncated + file name from the archive. + + * src/buffer.c (_open_archive): Remove unnecessary argument to + check_compressed_archive. + +2006-04-25 Sergey Poznyakoff + + * tests/sparse01.at, tests/sparse02.at, tests/sparse03.at, + tests/sparsemv.at, tests/sparsemvp.at: Skip the test if the file + system does not support sparse files. + * doc/tar.texi (@copying): Remove the reference to not existing + invariant section. + +2006-04-11 Sergey Poznyakoff + + * src/extract.c (extract_dir): Fix toggling existing directory + permissions (Debian bug #361077). Use parts of patch provided by + Ian Jackson . + * src/compare.c: Minor changes + * src/incremen.c (directory.new): New member + (note_directory,find_directory: Use make_directory to create + struct directory entries + (procdir): Avoid duplicating directories in the incremental + backup map. + * tests/Makefile.am (TESTSUITE_AT): Add extrac06.at + * tests/testsuite.at: Include extrac06.at + +2006-03-18 Ralf Wildenhues (trivial change) + + * tests/atlocal.in (PATH): Add build-aux from the source tree, + not the build tree. + +2006-03-13 Sergey Poznyakoff + + * THANKS: Add Benno Schulenberg + +2006-03-13 Jim Meyering + + * tests/listed02.at: Sort the two lines of stderr from the + first `tar -v --listed-incremental'. They would come out + reversed and provoke a test failure on a tmpfs + file system. + +2006-03-13 Benno Schulenberg + + * doc/tar.texi: Minor fixes. + * src/tar.c (options): Consistently begin help messages with a + lowercase letter. + +2006-03-12 Sergey Poznyakoff + + * tests/Makefile.am (AM_CPPFLAGS): Define LOCALEDIR + +2006-03-07 Paul Eggert + + * src/buffer.c (record_buffer_aligned): New var. + (init_buffer): Use it to ensure that the buffer is aligned. + This doesn't result in any measurable performance improvement + on my host (Debian GNU/Linux 3.1 stable, with default block size), + but I assume it does help on some hosts. + + * lib/.cvsignore: Sort. + +2006-03-04 Sergey Poznyakoff + + * tests/shortrec.at: Use -f - to read from stdin. + +2006-02-21 Sergey Poznyakoff + + * doc/tar.texi: Fix typo: --to-command instead of --to-program + +2006-02-20 Paul Eggert + + * tests/multiv04.at (split directory members in a MV archive): + Don't use %X in an awk printf format; this doesn't work with + Solaris 10 /usr/bin/awk. Use %x instead. + +2006-02-20 Sergey Poznyakoff + + * src/create.c (split_long_name): Fix maximum length estimation. + Patch by Jim Lowe. + * tests/Makefile.am (lustar01.at,lustar02.at,lustar03.at): New + tests. + * tests/atlocal.in: Add build-aux to the PATH + * tests/long01.at: Remove mkhier, use AT_TAR_MKHIER instead + * tests/longv7.at: Reword test title + * tests/lustar01.at: New test + * tests/lustar02.at: New test + * tests/lustar03.at: New test + * tests/testsuite.at (AT_TAR_MKHIER): New macro + (lustar01.at,lustar02.at,lustar03.at): New tests. + +2006-02-20 Paul Eggert + + * bootstrap: Don't claim lib/Makefile.am is generated automatically + from itself. + + Avoid installation glitches on Solaris 8 with Sun C 5.4. + * lib/.cvsignore: Add system-ioctl.h. + * lib/Makefile.tmpl (noinst_HEADERS): Add system-ioctl.h. + * src/buffer.c: Include system-ioctl.h. + * src/compare.c: Likewise. + * src/delete.c: Likewise. + * src/system.c: Include , . + * src/tar.c: Include . + +2006-02-19 Sergey Poznyakoff + + * src/buffer.c (add_chunk_header): Free st.orig_file_name after + calling finish_header(). + (new_volume): Prompt the user for archive name if unable to open + next archive. + + * src/create.c (dump_file0): Restore file_count_links, + accidentally removed on 2005-11-29. + * configure.ac: Raise version number to 1.15.90 + * NEWS: Likewise. + +2006-02-08 Sergey Poznyakoff + + * src/tar.c (tar_set_quoting_style): Provide second argument to + the format spec: program_invocation_short_name. Reported by Jim + Meyering. + +2006-02-07 Paul Eggert + + * gnulib.modules: Add closeout, exitfial. + * lib/.cvsignore: Add __fpending.c, __fpending.h, closeout.c, + closeout.h. + * src/buffer.c: Incluse closeout.h. + (_open_archive): Use freopen rather than fopen, so + that stdlis is always either stdout or stderr. Use + close_stdout_set_file_name to report its name. + * src/tar.c: Include closeout.h and exitfail.h. + (parse_opt, usage): Call close_stdout as appropriate, to check for + write errors. + (decode_options): Exit with status TAREXIT_FAILURE, not 1. + (main): Set exit_failure, to exit with proper status on memory + allocation failure and the like. + Use close_stdout rather than rolling our own test. + + * NEWS: --version now outputs copyright etc., to conform to the + GNU coding standards. Remove --license. + * gnulib.modules: Add version-etc-fsf. + * doc/tar.texi: Document the change. + * lib/.cvsignore: Add version-etc-fsf.c, version-etc.c, version-etc.h. + * scripts/Makefile.am (SED_CMD): Update PAKCAGE_NAME, not PACKAGE. + * scripts/backup.in: Remove --license. Change --version to conform + to GCS. + * scripts/restore.in: Likewise. + * scripts/backup.sh.in (license): Output briefer license in the + style of coreutils, for consistency with other changes. + * src/tar.c: Include . + (LICENSE_OPTION): Remove. + (options): Remove --license. + (license): Remove. + (parse_opt): Use version_etc instead of rolling it ourselves. + Remove --license. + * tests/version.at (tar --version): Check only the first line of + output. + + * ChangeLog, NEWS, src/common.h, src/extract.c, src/incremen.c: + * src/list.c, src/names.c, src/tar.h, src/xheader.c: + Update copyright year to 2006. + +2006-02-07 Jim Meyering + + * src/xheader.c (sparse_map_decoder): Fix misleading diagnostic. + +2006-01-31 Sergey Poznyakoff + + * src/common.h (get_gnu_dumpdir): Remove prototype + (is_dumpdir): New function + * src/extract.c (prepare_to_extract): Use is_dumpdir member to + check for dumpdirs. + * src/incremen.c (get_gnu_dumpdir): Static + (is_dumpdir): New function + (purge_directory): Use is_dumpdir + * src/list.c (list_archive): Use is_dumpdir + Do not wrap skip_member in mv_begin/mv_end, the function itself + takes care of it. + (decode_header): Set stat_info->is_dumpdir + (skip_member): Do nothing if skipped is true + * src/tar.h (struct tar_stat_info): New members is_dumpdir and skipped. + +2006-01-22 Sergey Poznyakoff + + * src/tar.c (decode_options): Refuse using --delete with + compression options. + +2006-01-18 Sergey Poznyakoff + + * NEWS: Updated. + * configure.ac (DEFAULT_QUOTING_STYLE): New configuration variable + * doc/tar.texi: Initial documentation for --quoting-style, + --quote-chars and --no-quote-chars option. + * src/tar.c: Implement new options --quoting-style, --quote-chars + and --no-quote-chars. + +2006-01-09 Paul Eggert + + * bootstrap: Default to pserver, and switch to cvs.sv.gnu.org, + to accommodate recent changes to the GNU CVS server. + * lib/.cvsignore: Add argp-pin.c, mkdirat.c, openat-priv.h. + +2005-12-14 Sergey Poznyakoff + + * src/names.c (name_scan): Take an additional argument requesting + exact matching. + * src/common.h (name_scan): Change prototype. + * src/delete.c, src/incremen.c, src/update.c: Update invocations + of name_scan. + +2005-12-13 Sergey Poznyakoff + + * src/common.h (struct name): New member `explicit'. Remove unused + member `isdir'. + * src/incremen.c (procdir): If name_scan() returns something, + check if it was explicitely given in the command line + * src/names.c (addname,add_hierarchy_to_namelist): Initialize + explicit member appropriately. + + * src/incremen.c (procdir): If --one-file-system is given and a + directory is found to be on another device, *and* this directory + is explicitely given in the command line, then do not omit it. + +2005-12-11 Sergey Poznyakoff + + * NEWS: Update + * doc/tar.texi: Document --delay-directory-restore option. + (Configuring Help Summary): Document usage of ARGP_HELP_FMT + variable to customize help output. + * src/common.h (delay_directory_restore_option): New global. + * src/extract.c (directories_first): Replaced by + delay_directory_restore_option. All uses changed. + * src/tar.c (options,parse_opt): New options + --delay-directory-restore and --no-delay-directory-restore + +2005-12-09 Sergey Poznyakoff + + * src/buffer.c (open_archive): Add default case to shut up gcc. + * src/common.h (set_file_atime): Add prototype. + * src/create.c (to_chars_subst): Remove unused variable + Make sure useful result code is returned. + * src/incremen.c (read_directory_file): Fix format string + Thanks Eric Blake for reporting. + +2005-12-08 Sergey Poznyakoff + + * doc/tar.texi (Current status): Renamed to 'Changes' and moved to + appendices. + (Large or Negative Values): Rewritten + * src/common.h (gid_to_chars, major_to_chars, minor_to_chars) + (mode_to_chars, off_to_chars, size_to_chars, time_to_chars) + (uid_to_chars, uintmax_to_chars): Return bool + * src/create.c (gid_to_chars, major_to_chars, minor_to_chars) + (mode_to_chars, off_to_chars, size_to_chars, time_to_chars) + (uid_to_chars, uintmax_to_chars): Return bool + (to_chars): Return bool + (start_header): Check return values of convertion routines. Fail + if unable to store data in the header. + +2005-12-07 Sergey Poznyakoff + + * doc/tar.texi: Following the discussion with Karl Berry, + discontinue using @value{} substitutions for Texinfo commands. + Properly index all long options. Print a + separate long option index. + * doc/value.texi: Remove @set's + + * doc/tar.texi: Update --info-script documentation + Resolve some more FIXMEs. + * scripts/dump-remind.in: Use TAR_VOLUME instead of reading volno + file. + * src/buffer.c (new_volume): Update invocation + (change_tape_menu): New function. Disable '!' command if given + --restrict option. + * src/common.h (sys_exec_info_script): Update declaration + (restrict_option): New global + * src/system.c (sys_exec_info_script): The script can supply new + archive name to use by writing it to file descriptor 3. + * src/tar.c (options): Add --restrict option. Use macros for + option grouping. + (license): Print full list of copyright years + * NEWS: Update + +2005-12-06 Eric Blake (trivial changes) + + * configure.ac (DENSITY_LETTER): Fix m4 overquoting. + * .cvsignore: Ignore .bootstrap. + +2005-12-06 Sergey Poznyakoff + + * doc/tar.texi: Document --to-command and --info-script + options. Add missing xrefs. + * src/buffer.c (new_volume): Use sys_exec_info_script() instead of + system(). + * src/common.h (archive_format_string,subcommand_string) + (sys_exec_info_script): New prototypes. + * src/system.c (sys_exec_info_script): New function. + * src/tar.c (archive_format_string): Remove static qualifier. + (subcommand_string): New function. + +2005-12-01 Sergey Poznyakoff + + * src/extract.c: Fix restoring of directory timestamps from + incremental archives. + (directories_first): New variable. + (prepare_to_extract): Set directories_first + (extract_archive): Call apply_nonancestor_delayed_set_stat() only + if not extracting from an incremental archive + (extract_dir): Obtain root_device here, to make sure it works + correctly with -C. + + * src/incremen.c (purge_directory): Skip the member and return if + the archive is not in incremental format. + * tests/incr02.at: New testcase + * tests/Makefile.am: Add incr02.at + * tests/testsuite.at: Likewise + + * THANKS: Add Guerkan Karaman. + * NEWS: Update + +2005-11-30 Paul Eggert + + * doc/tar.texi (Option Summary): Rewrite the + --atime-preserve=system description in response to Ian Turner's + proposed patch. + +2005-11-30 Ian Turner + + * doc/tar.texi (Extracting Specific Files): Remove obsolescent + FIXME. + +2005-11-29 Paul Eggert + + * NEWS: New option --atime-preserve=system, which uses O_NOATIME. + * THANKS: Add Ian Turner. + + * configure.ac: Prefer AC_CHECK_HEADERS_ONCE to AC_CHECK_HEADERS. + Check for stropts.h and sys/filio.h too, for _FIOSATIME. + * doc/tar.texi: Change "modification time" to "data modification + time", "change time" to "status change time", and "filesystem" to + "file system", so that we use terminology consistent with POSIX. + Use American spacing rather than French for sentence ends. + "non-dependable" -> "undependable". + (Option Summary, Attributes): Explain better the pitfalls of the + --atime-preserve option, and suggest read-only mounts,loopback + mounts, and noatime mounts for older systems. + * doc/value.texi (op-atime-preserve-system): Renamed from + op-atime-preserver-system to fix a misspelling. + * src/common.h (enum atime_preserve): Use lower case for enum values. + * src/compare.c: Don't include utimens.h; no longer needed. + (diff_file): Use set_file_atime rather than utimens; avoid closing + diff_handle until after this, so that we can set the file time stamp + via the file descriptor rather than via its name. + * src/create.c: Don't include utimens.h; no longer needed. + (dump_regular_finish): Remove. All callers now do its work inline. + (dump_dir): New arg FD. All callers changed. + Use fdsavedir rather than savedir. + (unknown_file_error): Arg is a const pointer now. + (dump_file0): 2nd arg is a const pointer now. + Treat directories more like files, with respect to --atime-preserve. + For example, also warn if a directory changes while we are dumping it. + Prefer file descriptors to file names when retrieving/setting file + attributes; this saves path-resolution time and allows us to avoid + changing mtime/ctime on Solaris when restoring atime as root. + Use O_DIRECTORY when opening directories, to avoid some race conditions. + Do not reset atime if mtime has changed. Report an error if + we cannot reset atime. + + * lib/.cvsignore: Add malloc.h, regcomp.c, regex.c, regex.h, + regex_internal.c, regex_internal.h, regexc.c; used by rpmatch. + +2005-11-29 Ian Turner + + First cut at adding support for --atime-preserve=system. + * doc/tar.texi (Option Summary): First cut at documenting it. + All other uses of --atime-preserve changed to --atime-preserve=replace. + * doc/value.texi (op-atime-preserve-replace, op-atime-preserver-system): + New. + (op-atime-preserve): Mention METHOD. + * src/common.h (atime_preserve): New enum. + (atime_preserve_option): Now of the enum type rather than bool. + All uses changed. + * src/compare.c (diff_file): Read with O_NOATIME if asked for. + * src/create.c (dump_file0): Read regular and CTG files with O_NOATIME + if asked for. + * src/tar.c (usage): Mention new usage. + (parse_opt): Parse new usage. + +2005-11-29 Paul Eggert + + * THANKS: Convert back to UTF-8, sort (using LC_ALL=C on Debian + stable), and consistently use tabs rather than spaces. + +2005-11-27 Sergey Poznyakoff + + * src/xheader.c: Remove parts of code prematurely introduced + yesterday. Thanks Eric Blake. + +2005-11-26 Sergey Poznyakoff + + * src/xheader.c (xheader_format_name): Fix memory leak. + +2005-11-11 Sergey Poznyakoff + + * gnulib.modules: Add rpmatch + * lib/stdopen.h, lib/stdopen.c: New file. Imported from coreutils. + * lib/Makefile.tmpl: Add stdopen.h, stdopen.c + * po/POTFILES.in: Add rpmatch.c + * src/tar.c (confirm): Rewritten using rpmatch. + (decode_options): Minor optimizations + (main): Call stdopen() to ensure the first three descriptors are + open. + + * tests/multiv01.at, tests/multiv02.at, tests/multiv03.at, + tests/multiv04.at, tests/sparsemv.at, tests/sparsemvp.at, + tests/star/multi-fail.at: Close stdin so that if something fails + causing tar to ask for the next volume, it won't hang the + testsuite. + + * src/buffer.c (flush_write,flush_read): Change data type. + (flush_archive): Compute actual buffer fill level before calling + low level function. + (close_archive): Call flush_archive again if the first call + resulted in partially filled buffer. + (try_new_volume): Rewritten handling of initial headers. + (add_chunk_header): New function. Write an additional header + before the continuation chunk. The purpose of the header is to + allow third-party tars to extract the member. + (simple_flush_write): Take an argument. + (_gnu_flush_write): Correctly handle partially filled buffers. + * src/common.h (flush_read,flush_write): Functions, again. + (write_extended): Changed declaration + (xheader_format_name): New declaration + * src/create.c (write_extended): Change type and meaning of + the first argument. All callers updated + * src/xheader.c (xheader_format_name): Remove static + qualifier. Change last argument. + Correct buffer size calculation (allocated too much space). + (xheader_write): Increase global_header_count here ... + (xheader_write_global): ... instead of here + + * tests/testsuite.at (AT_TAR_CHECK): Define TEST_TAR_FORMAT + * tests/multiv01.at: Update + * tests/multiv02.at: Update + * tests/multiv03.at: Update + * tests/sparsemvp.at: Update + * tests/star/multi-fail.at: Update + + * scripts/tarcat: Handle archives in pax format. Improve handling + of traditional archives. + * doc/tar.texi (Tarcat): New node + +2005-11-10 Sergey Poznyakoff + + Fix splitting of sparse files between the volumes. + + * src/buffer.c (try_new_volume): Bugfix. Always check + continued_file_name. If it is absent, the volume is out + of sync. + (add_multi_volume_header): Create GNU.volume.filename keyword in + the extended header. + * src/sparse.c (sparse_dump_region): Call mv_size_left. + (sparse_dump_file): Enclose the loop in mv_begin/mv_end. + * src/system.c: Do not pad compressed output if it goes to + stdout. + * src/xheader.c (xhdr_tab): New keyword GNU.volume.filename. + + * tests/sparsemv.at: New testcase + * tests/sparsemvp.at: New testcase + * tests/Makefile.am: Add sparsemv.at and sparsemvp.at. + * tests/testsuite.at: Likewise. + +2005-11-09 Sergey Poznyakoff + + * src/buffer.c: Rewritten in a more modular fashion to provide + GNU extensions (multi-volume archives and archive labels) in + pax format. + NOTICE, that some of the aspects (e.g. splitting the archive + on the extended header boundary) are still not solved, others + (splitting a sparse file between the volume) require additional + testing. Wait for the next commit. + + (volume_label,continued_file_name,continued_file_size) + (continued_file_offset): New globals. + (save_name,save_totsize,save_sizeleft): Make static + (mv_begin,mv_end,mv_total_size,mv_size_left): New functions + (open_archive,flush_write,flush_read): Rewritten + + * src/common.h (save_name,save_sizeleft,save_totsize): Remove + globals. + (volume_label,continued_file_name,continued_file_size): New + variables. + (flush_read,flush_write): Pointers to functions + (mv_begin,mv_end,mv_total_size,mv_size_left): New functions + (write_extended): New function. + + * src/compare.c, src/create.c, src/extract.c, src/incremen.c, + src/list.c: Use mv_.* functions uniformly instead of fiddling + with the global variables. + * src/sparse.c: Use mv_.* functions where necessary. + * src/tar.c (decode_options): Allow to use --multi-volume and + --label with pax archives. + * src/xheader.c (xhdr_tab): Support for new GNU keywords. + + * tests/delete01.at, tests/delete02.at, tests/delete03.at, + tests/delete04.at, tests/delete05.at, tests/extrac01.at, + tests/extrac02.at, tests/extrac03.at, tests/extrac04.at, + tests/extrac05.at, tests/incr01.at, tests/incremental.at, + tests/listed01.at, tests/listed02.at, tests/long01.at, + tests/longv7.at, tests/multiv01.at, tests/multiv02.at, + tests/multiv03.at, tests/multiv04.at, tests/options.at, + tests/options02.at, tests/same-order01.at, tests/same-order02.at, + tests/sparse01.at, tests/sparse02.at, tests/sparse03.at, + tests/star/multi-fail.at (AT_KEYWORDS): Improve to allow execution + of related tests in groups. + + * doc/tar.texi: Update + +2005-11-07 Paul Eggert + + * src/xheader.c (struct xhdr_tab.coder): Last arg is void const *, + not void *, to avoid create.c warning from GCC "passing argument 3 + of 'xheader_store' discards qualifiers from pointer target type". + (dummy_coder, atime_coder, gid_coder, gname_coder, linkpath_coder): + (ctime_coder, mtime_coder, path_coder, size_coder, uid_coder): + (uname_coder, sparse_size_coder, sparse_numblocks_coder): + (sparse_offset_coder, sparse_numbytes_coder, dumpdir_coder): + (xheader_store): Likewise. + * src/common.h (xheader_store): Likewise. + +2005-11-07 Sergey Poznyakoff + and Paul Eggert + + * src/tar.c (NS_PRECISION_FORMAT_MASK): New macro. + (tar_timespec_cmp): New function. Wrapper over + timespec_cmp using the timespec precision provided by the + current archive format. + * src/common.h (tar_timespec_cmp): New declaration. + * src/compare.c (diff_file): Use tar_timespec_cmp. + * src/extract.c (file_newer_p): Likewise. + * src/update.c (update_archive): Likewise. + * tests/truncate.at: Reverted changes + * tests/update.at: Reverted changes + +2005-11-07 Sergey Poznyakoff + + Support for incremental formats in pax archives. + Fixed POSIX compatibility of `sparse' extended header keywords. + + * src/common.h (dumpdir_size,get_gnu_dumpdir) + (xheader_string_begin,xheader_string_add) + (xheader_string_end): New functions. + * src/create.c (dump_dir0): Handle incremental backups in pax + archives. + * src/incremen.c (dumpdir_size, get_gnu_dumpdir): New functions. + (purge_directory): Use stat_info.dumpdir instead of getting its + value explicitely. + * src/list.c (list_archive): Handle incremental backups in pax + format. + (decode_header): Initialize stat_info.dumpdir + * src/sparse.c (sparse_diff_file): Bugfix: set seekable. + (pax_dump_header): Store sparse map in GNU.sparse.map. If this + variable has been explicitely deleted, use GNU.sparse.offset/ + GNU.sparse.numbytes variables. + * src/tar.c (decode_options): Incremental options are allowed with + --format=pax + (tar_stat_destroy): Free dumpdir + * src/tar.h (struct tar_stat_info.dumpdir): New member. + * src/xheader.c (xheader_keyword_deleted_p): Remove static + qualifier. + (struct xhdr_tab.decoder): Change prototype. POSIX allows string + values to contain embedded nulls, so take an extra argument + specifying the length of the string. + (decx,decg,dummy_decoder,atime_decoder,gid_decoder) + (gname_decoder,linkpath_decoder,ctime_decoder,mtime_decoder) + (path_decoder,size_decoder,uid_decoder,uname_decoder) + (sparse_size_decoder,sparse_numblocks_decoder) + (sparse_offset_decoder,sparse_numbytes_decoder): Likewise. + (decode_record): Pass value length to the handler + (run_override_list): Pass value length to the decoder + (xheader_print_n): New function + (xheader_print): Rewritten using xheader_print_n + (xheader_finish): Do not rely om strlen to compute the length of + the collected string: it can contain embedded nulls + (xheader_string_begin,xheader_string_add,xheader_string_end): New + functions. + (sparse_map_decoder,dumpdir_coder,dumpdir_decoder): New + functions. Handle GNU.sparse.map and GNU.dumpdir variables. + (xhdr_tab): Add new variables. + + * tests/incr01.at: Test gnu, oldgnu, and posix formats + * tests/incremental.at: Likewise + +2005-11-06 Paul Eggert + + * NEWS: Minor language and white space fixes. + + * tests/truncate.at: Create files whose time stamps must fall on + 1-second boundaries. This prevents tests from failing on hosts + like Solaris 8 that have nanosecond-resolution file time stamps. + * tests/update.at: Likewise. + + * src/xheader.c (strtoimax, strtoumax): Remove decls; now done + in system.h. + +2005-11-06 Sergey Poznyakoff + + * doc/tar.texi: Properly document incremental dumps + * doc/value.texi: Likewise. + * doc/snapshot.texi: Likewise. + +2005-11-05 Sergey Poznyakoff + + Improve listed incremental format: + + * src/common.h (update_parent_directory): New prototype. + * src/create.c (dump_file): Call update_parent_directory. + * src/incremen.c (struct directory.mtime): New member. + (note_directory): Take additional arguments. All callers updated. + (scan_directory): Updated to use more metadata. In particular, + this allows to correctly detect renamed files. + (read_directory_file,write_directory_file) + (write_directory_file_entry): Support new directory file format. + * tests/listed01.at: Sleep 1 sec before creating second file. + * tests/listed02.at: Never skip the test. It should work on any + filesystem. + + * doc/snapshot.texi: New file + * doc/tar.texi: Update. + * doc/Makefile.am: Update. + +2005-11-04 Paul Eggert + + * src/extract.c (set_stat): Rewrite to avoid bug in Forte + Developer 7 C 5.4 Patch 111708-09 (2004-02-19). + +2005-11-04 Sergey Poznyakoff + + * bootstrap: Fix quoting in help output. + (update_po): Use backward-compatible wget option --cache instead + of deprecated -C to accomodate for wget 1.10. + Changes proposed by Eric Blake + * THANKS: Add Eric Blake + +2005-11-02 Paul Eggert + + * doc/tar.texi: Consistently put two spaces after sentences, + and put commas after "i.e." and "e.g.". This is the usual GNU + style in manuals. + + * lib/.cvsignore: Add creat-safer.c, fcntl--.h, fcntl-safer.h, + open-safer.c, openat-die.c, verify.h, to accommodate recent gnulib + changes. + +2005-10-27 Sergey Poznyakoff + + * src/compare.c (diff_dumpdir): Pass a valid device number to + get_directory_contents. + + * THANKS: Add John Thomas McDole + + * bootstrap: If file `.bootstrap' exists in the cwd and is + readable, prepend its contents to the command line + +2005-10-21 Sergey Poznyakoff + + * tests/link01.at: Skip test if ln fails (suppose the OS does + not support hard links). + +2005-10-04 Sergey Poznyakoff + + * src/tar.c (decode_options): Report error if -A or -r is used + together with compression option. + +2005-09-29 Sergey Poznyakoff + + * doc/tar.texi: Use @option and @kbd consistently. + Document new options. + +2005-09-28 Sergey Poznyakoff + + * NEWS: Updated + * src/common.h (show_stored_names_option): New variable + * src/list.c (print_header): If show_stored_names_option is given, + list member names as stored in the archive. Patch proposed by Erik + Cumps + * src/tar.c: Implement --show-stored-names option + + * src/common.h (test_label_option): New variable; + * src/list.c (print_header): Special handling if test_label_option + is set. + * src/names.c (all_names_found): If test_label_option is set + return true. + * src/tar.c: New option --test-label tests the archive volume + label. The option proposed by Wouter Verhelst + +2005-09-21 Paul Eggert + + * tests/Makefile.am (clean-local): Don't attempt to run + $(TESTSUITE) if it doesn't exist. Problem reported by + Eric Blake. + +2005-09-16 Paul Eggert + + Don't filter time stamps through the resolution supported + by struct stat; keep them to full nanosecond resolution. + This affects behavior only on older hosts or file systems + that have lower-resolution time stamps. + * src/common.h (OLDER_STAT_TIME): Parenthesize arg. + (OLDER_TAR_STAT_TIME): New macro. + (code_timespec): New function. + (BILLION, LOG10_BILLION, TIMESPEC_STRSIZE_BOUND): New constants. + * src/compare.c (diff_file): Use full time stamp resolution. + * src/create.c (start_header, dump_file0): Likewise. + (start_header, dump_file0): Adjust to new structure layout. + (dump_regular_finish): Simplify by using timespec_cmp. + * src/extract.c (struct delayed_set_stat): Don't store stat info + that we don't need, to save space. All uses changed. + (struct delayed_set_stat, struct delayed_link, file_newer_p): + (create_placeholder_file, extract_link, apply_delayed_links): + Use full time stamp resolution. + (check_time): Use code_timespec rather than rolling our own code. + (set_stat, delay_set_stat): Arg now points to tar_stat_info to + avoid losing time information. All callers changed. + * src/list.c (read_and, decode_header, print_heaeder): + Use full time stamp resolution. + * src/misc.c (code_timespec): New function. + * src/tar.h (struct tar_stat_info): Record atime, mtime, ctime + separately, for benefit of hosts with lower resolution. + * src/update.c (update_archive): Use full time stamp resolution. + * src/xheader.c (code_time): Use new code_timespec function + to simplify code. + (atime_coder, atime_decoder, ctime_coder, ctime_decoder): + (mtime_coder, mtime_decoder): Use full time stamp resolution. + + Report time stamps to full resolution in environment. + Report memory allocation failures rather than ignoring them. + * src/system.c (time_to_env): New function. + (oct_to_env, str_to_env, chr_to_env): Report memory allocation failures. + (stat_to_env): Report full resolution in time stamps. + +2005-09-16 Paul Eggert + + Merge changes from gnulib for file system sub-second time stamps. + * configure.ac: Remove checks for struct stat.st_spare1, struct + stat.st_atim.tv_nsec, struct stat.st_atimespec.tv_nsec, struct + stat.st_atimensec, as gnulib now does this for us. + Similarly for LIB_CLOCK_GETTIME. + * gnulib.modules: Add stat-time. + * lib/.cvsignore: Add stat-time.h. + * src/common.h: Include stat-time.h. + (timespec_lt): Remove. All callers changed to use timespec_cmp. + (get_stat_atime, get_stat_ctime, get_stat_mtime): + (set_stat_atime, set_stat_ctime, set_stat_mtime): + Remove; now defined by stat-time.h. + +2005-09-14 Sergey Poznyakoff + + * src/incremen.c (list_dumpdir): New function. Used to dump + contents of GNUTYPE_DUMPDIR blocks. + * src/common.h (list_dumpdir): Likewise. + * src/list.c (list_archive): Use list_dumpdir() to display + GNUTYPE_DUMPDIR blocks. Do that only if two or more -v options are + given. + +2005-09-12 Paul Eggert + + * lib/.cvsignore: Adjust to current gnulib and modules used. + Add getdelim.c, getdelim.h, mbchar.c, mbchar.h, mbuiter.h, memchr.c, + pipe-safer.c, size_max.h, strdup.c, strdup.h, strnlen.h, strnlen1.c, + strnlen1.h, unistd--.h. + Remove getndelim2.c, getndelim2.h, pathmax.h, sysexits.h, xstrdup.c. + + Treat fishy-looking hard links like fishy-looking symlinks. + * src/extract.c (struct delayed_set_stat): Rename after_symlinks + member to after_links. All uses changed. + (struct delayed_link): Renamed from struct delayed_symlink. + All uses changed. New member is_symlink. + (delayed_link_head): Renamed from delayed_symlink_head. All uses + changed. + (create_placeholder_file): New function, taken from extract_symlink. + (extract_link): Create placeholders for fishy-looking hard links. + (extract_symlink): Move code into create_placeholder_file. + (apply_delayed_links): Renamed from apply_delayed_symlinks. + All uses changed. Create both hard links and symlinks. + +2005-09-03 Paul Eggert + + * README-alpha: Modernize description of software required for + developers. + +2005-09-03 Sergey Poznyakoff + + * gnulib.modules: Add strdup + * src/incremen.c (purge_directory): Do not dereference symbolic + links. Bug reported by Ralph Corderoy and + David Brown + * tests/incr01.at: New test. + * tests/Makefile.am: Add incr01.at + * tests/testsuite.at: Likewise + * THANKS: Updated + +2005-08-17 Sergey Poznyakoff + + * src/incremen.c (read_directory_file): Use strtoumax to read + snapshot file contents. + (write_directory_file_entry): Use umaxtostr(). + +2005-07-31 Sergey Poznyakoff + + * src/create.c (file_dumpable_p,dump_file0): Fix handling of + sparse files to /dev/null with --totals option. + * tests/update.at: Remove dependency on file order. + +2005-07-08 Sergey Poznyakoff + + * doc/tar.texi: Fix typo. + +2005-07-07 Sergey Poznyakoff + + * tests/pipe.at: Pipe the output from `tar xfv' through sort. + +2005-06-25 Sergey Poznyakoff + + * src/sparse.c (tar_sparse_init): Fill structure with zeros. Call + sparse_select_optab(). All callers updated. + (sparse_member_p, sparse_fixup_header): Use tar_sparse_init(). + +2005-06-23 Sergey Poznyakoff + + * src/sparse.c (pax_sparse_member_p): Checking member size + vs. file size is not reliable enough. Use sparse_map_avail. + + * tests/star/gtarfail.at: Adapt to the new output format + * tests/star/gtarfail2.at: Likewise + * tests/star/multi-fail.at: Likewise + * tests/star/pax-big-10g.at: Likewise + * tests/star/ustar-big-2g.at: Likewise + * tests/star/ustar-big-8g.at: Likewise + + * tests/sparse03.at: New test. + * tests/Makefile.am: Add sparse03.at + * tests/testsuite.at: Likewise + + * src/xheader.c (size_decoder): Do not set archive_file_size. + + Fix bugs introduced yesterday: + + * src/sparse.c (tar_sparse_init): Initialize + dimped_size to 0. + (sparse_scan_file): Initialize archive_file_size to 0. The + variable keeps size of the file *as stored in the archive*, not + the size reported by stat. + +2005-06-22 Paul Eggert + + A sweep of the sparse code prompted by a bug report by Jim Meyering. + * src/sparse.c: Include . + (struct tar_sparse_file): offset and dumped_size are off_t, not + size_t. optab is now const *. + (dump_zeros): Return bool success flag, not off_t. + All callers changed. + Use a constant-zero buffer rather than clearing a buffer each time. + Don't mess up if write fails. + (dump_zeros, check_sparse_region): + Don't assume off_t is no wider than size_t. + (tar_sparse_init): Don't bother clearing a field that is already clear. + (zero_block_p): First arg is const *, not *. + (clear_block, SPARSES_INIT_COUNT): Remove. + (sparse_add_map): First arg is now struct start_stat_info *, not + struct tar_sparse_file *. All callers changed. + Use x2nrealloc to check for size_t overflow. + (parse_scan_file): Cache commonly-used parts of file. + Use an auto buffer, not a static one. + Don't bother clearing the buffer; not needed. + Don't bother clearing items that are already clear. + (oldgnu_optab, star_optab, pax_optab): Now const. + (sparse_dump_region): Don't bother clearing the buffer before + reading into it; just clear the parts that aren't read into. + (sparse_dump_file): Clear the whole local variable 'file'. + (diff_buffer): Remove; now a local var. + (check_sparse_region): Don't bother clearing buffer before + reading into it. Don't assume off_t is promoted to long. + (oldgnu_get_sparse_info, star_get_sparse_info): + Use an auto status, not static. + * src/tar.h (struct tar_stat_info): had_trailing_slash is + now bool, not int. + * src/xheader.c (sparse_offset_coder, sparse_numbytes_coder): + Rewrite to avoid cast. + (sparse_offset_decoder, sparse_numbytes_decoder): + Diagnose excess entries rather than crashing. + +2005-06-22 Jim Meyering + + * src/common.h (timespec_lt): Add a return type: bool. + +2005-06-21 Paul Eggert + + Further improvements inspired by Jim Meyering's fixes. + + * NEWS: Better support for full-resolution time stamps. + The -v option now prints time stamps only to 1-minute resolution. + * gnulib.modules: Add utimens. + * lib/.cvsignore: Add imaxtostr.c, inttostr.c, inttostr.h, + offtostr.c, umaxtostr.c, utimens.c, utimens.h. Remove paxconvert.c. + * lib/Makefile.tmpl (libtar_a_SOURCES): Remove paxconvert.c. + * lib/paxconvert.c: Remove; superseded by umaxtostr.c. + * po/POTFILES.in: Remove lib/paxconvert.c. Add lib/xalloc-die.c, + lib/obstack.c. + * src/buffer.c (set_start_time, compute_duration, start_time): + Use gettime rather than rolling our own code. + * src/common.h (OLDGNU_NAME_FIELD_SIZE, MAXOCTAL11, MAXOCTAL7): Remove. + (newer_ctime_option): Remove. + (timespec_lt): New function. + (OLDER_STAT_TIME): Use it. + (string_to_chars): First arg is char const *, not char *. + (tartime): Time arg is now struct timespec. New bool arg. + All callers changed. + (code_ns_fraction): New decl. + (sys_stat_nanoseconds): Remove decl. + (get_stat_atime, get_stat_ctime, get_stat_mtime): New functions. + (set_stat_atime, set_stat_ctime, set_stat_mtime): New functions. + * src/compare.c: Include utimens.h rather than rolling our own. + (diff_dir, diff_file, diff_link, diff_symlink, diff_special): + Prototype. + (diff_dumpdir, diff_multivol): Prototype. + (diff_file): Support higher-resolution time stamps. + * src/create.c: Include utimens.h rather than rolling our own. + (MAX_OCTAL_VAL): New macro. + (tar_copy_str, string_to_chars): Don't bother to zero-fill; + the destination is already zeroed. + (string_to_chars): First arg is char const *. + (start_private_header): Use MINOR_TO_CHARS, not MAJOR_TO_CHARS, + for minor device number. + (write_header_name, dump_hard_link, dump_file0): + Simplify test for old GNU format. + (start_header): Put in placeholders for uid, etc., even when + using extended headers, for benefit of older "tar" implementations. + Don't assume uintmax_t is wider than 32 bits. + Output extended header for mtime if needed. + (dump_regular_finish, dump_file0): + Support extended time stamp resolution. + * src/extract.c: Include utimens.h rather than rolling our own. + (check_time): Support extended time stamp resolution. + * src/list.c: Include . + (tartime): Use umaxtostr rather than stringify_uintmax_t_backwards. + * src/xheader.c: Include . + Do not include . + (strtoimax) [!HAVE_DECL_STRTOIMAX && !defined strtoimax]: New decl. + (strtoumax) [!HAVE_DECL_STRTOUMAX && !defined strtoumax]: New decl. + (BILLION, LOG10_BILLION): New constants. + (to_decimal): Remove; superseded by inttostr. All callers changed + to use umaxtostr. + (xheader_format_name): Don't assume pids and uintmax_t values + fit in 63 bytes (!) when printed. + (decode_record): Don't bother to check for ERANGE; an out of range + value must be treater than len_max anyway. + If the length is out of range, output it in the diagnostic. + (format_uintmax): Remove; all callers changed to use umaxtostr. + (xheader_print): Don't assume sizes can be printed in 99 bytes (!). + (out_of_range_header): New function. + (decode_time): Use it. + (code_time): Accept struct timespec, not time_t and unsigned long. + All callers changed. Size sbuf properly, and remove unnecessary check. + Don't assume time stamps can fit in 199 bytes. + Handle negative time stamps. Handle fractional time stamps + more consistently. Don't output unnecessary trailing zeros. + (decode_time): Yield struct timespec, not time_t and unsigned long. + All callers changed. + Handle negative time stamps. Truncate towards minus infinity + consistently. Improve overflow checks, and output a better + diagnostic on overflow. + (code_num): Don't assume uintmax_t can be printed in 99 bytes (!). + (decode_num): New function, for better diagnostics. + (atime_coder, atime_decoder, gid_decoder, ctime_coder): + (ctime_decoder, mtime_coder, mtime_decoder, size_decoder): + (uid_decoder, sparse_size_decoder, sparse_numblocks_decoder): + (sparse_offset_decoder, sparse_numbytes_decoder): + Use decode_num, etc., instead of xstrtoumax, etc. + +2005-06-21 Jim Meyering + + Carefully crafted invalid headers can cause buffer overrun. + Invalid header fields go undiagnosed. + Some valid time strings are ignored. + + * src/xheader.c (sparse_numblocks_decoder): Remove unchecked use + of `calloc'. Use xcalloc instead. + (decode_time, gid_decoder, size_decoder, uid_decoder): + (sparse_size_decoder, sparse_offset_decoder, sparse_numblocks_decoder): + Ensure that the result of calling xstrtoumax is no larger than + the maximum value for the target type. Upon any failure, exit with + a diagnostic. + (sparse_numblocks_decoder): Avoid buffer overrun/heap corruption: + use x2nrealloc, rather than `n *= 2' and xrealloc(p, n,.... + (decode_time): Rewrite to accept time strings like + 1119018481.000000000. Before, such strings were always ignored. + +2005-06-13 Sergey Poznyakoff + + * src/create.c (dump_file0): Check for is_avoided_name() + first. Fixes bug reported by Martin Lohmeier + + * tests/update.at: New file + * tests/Makefile.am (TESTSUITE_AT): Add update.at + * tests/testsuite.at: Likewise + +2005-06-13 Sergey Poznyakoff + + * configure.ac (AC_STRUCT_ST_BLKSIZE) + (AC_STRUCT_ST_BLOCKS): Removed. Handled by system.m4. + +2005-06-02 Paul Eggert + + * src/names.c (excluded_name): excluded_filename -> + excluded_file_name, because the name was changed in gnulib. + +2005-05-30 Sergey Poznyakoff + + * src/tar.c (read_name_from_file,update_argv): Automatically + detect nul-terminated list files. + * NEWS: Updated + +2005-05-27 Sergey Poznyakoff + + * scripts/backup.sh.in: Bugfixes. + +2005-05-26 Sergey Poznyakoff + + * scripts/backup.in: Minor fixes + * scripts/backup.sh.in (mt_begin,mt_rewind) + (mt_offline,mt_status): Use $MT to invoke mt + (init_common): Set --rsh-command option for mt if TAPE_FILE is a + remote archive. + * doc/tar.texi: Document new backup scripts behavior + +2005-05-22 Sergey Poznyakoff + + * lib/.cvsignore: Updated + * lib/Makefile.tmpl: Add new paxutils files + * po/POTFILES.in: Likewise + * src/buffer.c: Update invocations of safer_name_suffix() + * src/create.c: Likewise + * src/extract.c: Likewise + * src/xheader.c: Likewise + * src/common.h: Include paxlib.h instead of paxerror.h + (safer_name_suffix,removed_prefixes_p): Removed. The functions are + imported from paxutils + * src/names.c (hash_string_hasher,hash_string_compare) + (hash_string_insert,hash_string_lookup,removed_prefixes_p) + (safer_name_suffix): Moved to paxutils + +2005-05-19 Sergey Poznyakoff + + * bootstrap (copy_files): Accept optional third argument: a prefix + to be appended to destination file names. + Import paxutils/paxlib files. + * configure.ac: Remove checking for LIB_SETSOCKOPT, it is handled + by paxutils. + * lib/Makefile.tmpl (libtar_a_SOURCES): Add paxerror.c paxexit.c + paxconvert.c + * po/POTFILES.in: Likewise. + * src/common.h: Remove defines and declarations imported from + paxutils + * src/misc.c: Likewise + * src/list.c (stringify_uintmax_t_backwards): Moved to paxutils + +2005-05-17 Paul Eggert + + * src/misc.c (remove_any_file): Fix typo in previous change. + +2005-05-14 Paul Eggert + + Port to Solaris 10's treatment of unlinking directories. + * gnulib-modules: Add unlinkdir. + * lib/.cvsignore: Add unlinkdir.h, unlinkdir.c. + * src/common.h (we_are_root): Remove extern decl; it's now static. + * src/extract.c (we_are_root): Now static. + * src/misc.c: Include . + (remove_any_file): Use cannot_unlink_dir () rather than we_are_root. + + * ChangeLog, ChangeLog.1, Makefile.am, NEWS, PORTS, README, + README-alpha, TODO, bootstrap, configure.ac, doc/Makefile.am, + doc/convtexi.pl, doc/fdl.texi, doc/gendocs_template, + lib/Makefile.tmpl, lib/prepargs.c, lib/waitpid.c, po/POTFILES.in, + scripts/Makefile.am, scripts/backup-specs, scripts/backup.in, + scripts/backup.sh.in, scripts/restore.in, src/Makefile.am, + src/arith.h, src/buffer.c, src/common.h, src/compare.c, + src/create.c, src/delete.c, src/extract.c, src/incremen.c, + src/list.c, src/mangle.c, src/misc.c, src/names.c, src/sparse.c, + src/system.c, src/tar.c, src/tar.h, src/update.c, src/utf8.c, + src/xheader.c, tests/Makefile.am, tests/append.at, + tests/append01.at, tests/comprec.at, tests/delete01.at, + tests/delete02.at, tests/delete03.at, tests/delete04.at, + tests/delete05.at, tests/extrac01.at, tests/extrac02.at, + tests/extrac03.at, tests/extrac04.at, tests/extrac05.at, + tests/gzip.at, tests/ignfail.at, tests/incremental.at, + tests/link01.at, tests/listed01.at, tests/listed02.at, + tests/long01.at, tests/longv7.at, tests/multiv01.at, + tests/multiv02.at, tests/multiv03.at, tests/multiv04.at, + tests/old.at, tests/options.at, tests/options02.at, tests/pipe.at, + tests/recurse.at, tests/same-order01.at, tests/same-order02.at, + tests/shortrec.at, tests/sparse01.at, tests/sparse02.at, + tests/testsuite.at, tests/truncate.at, tests/version.at, + tests/volume.at, tests/star/gtarfail.at, tests/star/gtarfail2.at, + tests/star/multi-fail.at, tests/star/pax-big-10g.at, + tests/star/quicktest.sh, tests/star/ustar-big-2g.at, + tests/star/ustar-big-8g.at: + Update FSF postal mail address. + +2005-05-12 Sergey Poznyakoff + + * NEWS: Updated + * THANKS: Updated + * bootstrap: Install files from paxutils/doc + * doc/Makefile.am (tar_TEXINFOS): Add genfile.texi + * doc/tar.texi (Genfile): New appendix + * src/compare.c (diff_file): diff_handle was not initialized + * src/create.c (dump_regular_file): Correctly pad archive members + that shrunk during archiving. Repored by Frank Heckenbach. + * src/extract.c (file_newer_p): Return false if file does not + exist + (prepare_to_extract): Correct warning wording. + * tests/truncate.at: New test case + * tests/Makefile.am: Add truncate.at + * tests/testsuite.at: Likewise. + + * doc/.cvsignore: Updated + * lib/.cvsignore: Updated + * tests/.cvsignore: Updated + +2005-05-02 Paul Eggert + + * tests/multivol04.at: Tell awk to read from /dev/null. + + Adjust to recent gnulib changes. + * lib/.cvsignore: Add dup-safer.c, fd-safer.c, unistd-safer.h. + * src/common.h (initial_umask): New var. + * src/create.c (start_ueader): Use it, and adjust to new modechange + API. + (hash_link): unsigned -> size_t parameters and result. + * src/incremen.c (hash_directory): Likewise. + * src/names.c (hash_string_hasher): Likewise. + * src/tar.c (parse_opt): Set it, and adjust to new modechange API. + +2005-04-19 Sergey Poznyakoff + + * tests/Makefile.am: Add shortrec.at. + +2005-04-18 Paul Eggert + + * src/buffer.c (reading_from_pipe): Remove. All uses removed. + (short_read): Don't warn about short reads; they're normal. + * tests/shortrec.at: New file. + * tests/testsuite.at: Include it. + + * bootstrap (gnulib_modules): Don't create a file modlist.tmp, as + it is sometimes left behind as a garbage file (maybe due to the + multiple traps?). + +2005-04-14 Sergey Poznyakoff + + * src/list.c: Handle Solaris 'X' type flag + * src/tar.h (SOLARIS_XHDTYPE): New define + +2005-04-06 Sergey Poznyakoff + + * src/tar.c: Minor fixes to text messages. Proposed by Benno + Schulenberg. + * src/extract.c: Likewise + (extract_file): Assign orig_file_name + to save_name uniformly over the program. This fixes matching + directory names at the start of an archive volume. + * src/buffer.c (flush_write): Warn when the name of the archive + straddling volume boundary is longer than 100 characters. Earlier + behavior was to issue a fatal error. + (struct zip_magic): Reverted part of changes from 2005-04-04. + They make the maintenance too costly. Removing `unsigned' + qualifier from `magic' member should be enough. + * src/compare.c (diff_init): Read directory file if in listed + incremental. This prevents spurious 'Contents differ' diagnostics. + (diff_archive): Minor fixes to text messages + (diff_file,diff_dumpdir,diff_multivol): Assign orig_file_name + to save_name uniformly over the program. This fixes matching + directory names at the start of an archive volume. + * src/create.c: Assign orig_file_name + to save_name uniformly over the program. This fixes matching + directory names at the start of an archive volume. + * src/list.c: Likewise + + * tests/multiv03.at: Modified to match the new behavior + * tests/multiv04.at: New file. Test splittind directory members between + the archive volumes. + * tests/Makefile.am: Add multiv04.at + * tests/testsuite.at: Likewise. + +2005-04-04 Paul Eggert + + * configure.ac (AC_CONFIG_AUX_DIR): Rename from config to build-aux, + for reasons discussed in the thread beginning at + . + * .cvsignore: Remove config; add build-aux. + + * src/buffer.c (struct zip_magic): Use char arrays, not pointers. + The unsigned char * pointer ran afoul of pedantic C compilers, and + we didn't need pointers anyway. Put the size field before the + data to avoid unnecessary padding. All uses changed. + (magic) Make it const, since it doesn't change. All uses changed. + +2005-04-02 Paul Eggert + + * src/xheader.c (decode_record): Don't dump core when given + a corrupted extended header. Problem reported by Jim Meyering. + Also, check for other ways that the header might be invalid, + e.g., missing newline at end. Do not allow keys with nulls. + Allow blanks before and after length, as POSIX requires. + Do not allow leading "-" in length. Check for length overflow. + (xheader_decode, xheader_decode_global): Let decode_record + check for exhaustion of record. + (xheader_read): Null-terminate the extended record; + decode_record relies on this. + +2005-03-21 Paul Eggert + + * bootstrap (TP_URL): Change from + to + to avoid + some redirection glitches. + Use "trap - 0" rather than "trap 0" to fix a POSIX-conformance bug. + * doc/.cvsignore: Change "tar.info" to "tar.info*". Sort. + * lib/.cvsignore: Add intprops.h (new gnulib file). + +2005-03-04 Sergey Poznyakoff + + * src/list.c (print_header): Print UID/GID in case of + empty user/group name. This could occur when dumping + files belonging to non-existing users and when listing + broken archives. + Reported by Igor Lautar. + + * src/create.c: Correctly parse empty uname/gname + * src/sparse.c (sparse_scan_file): Bugfix. offset had + incorrect type. + + * scripts/backup.in: Use `head -n 1'. Provide missing + argument to ${MT_STATUS}. Proposed by Jan Merka. + * scripts/backup.sh.in: Likewise. Fixed typo in + MT_OFFLINE assignment. + * scripts/restore.in (restore_fs): Use root_fs + +2005-02-15 Sergey Poznyakoff + + * src/create.c: Replace strdup with xstrdup + * src/names.c: Likewise + * src/tar.c: Likewise + + * tests/append01.at: Added reference to bug-tar archive + * tests/listed02.at: Use -print with find. + +2005-02-11 Sergey Poznyakoff + + * THANKS: Added Tim Adye. Fixed UTF. + * src/list.c (read_header): Removed assignment to + oldgnu_header.isextended. It was breaking append mode. + + * tests/append01.at: New test. + * tests/Makefile.am: Added append01.at + * tests/testsuite.at: Likewise + +2005-02-06 Sergey Poznyakoff + + * gnulib.modules: New file. List of required gnulib + modules. + * bootstrap: Merge list of required modules from + paxutils with that from tar proper. + * src/tar.c: Various fixes in help and diagnostic messages. + +2005-02-05 Sergey Poznyakoff + + * src/common.h (EXTRACT_OVER_PIPE): New macro + * src/compare.c: Code clean up. + * src/extract.c (extract_archive): Do not check for + EXTRACT_OVER_PIPE, decode_options() does this. + * src/misc.c (exec_error,fork_error,dup2_error) + (pipe_error): Removed unneeded functions. + * src/system.c (sys_exec_command): Use xclose, xpipe, + xfork, xdup2 and exec_fatal. + * src/tar.c (options): Improved sorting. Document --backup=off. + (decode_options): Clear backup_option if necessary. + +2005-02-05 Sergey Poznyakoff + + Initial implementation of --to-command option proposed + by Hansjoerg Lipp. + + * bootstrap: Get setenv module from gnulib + * src/buffer.c: Do not use 8-bit chars in comments + * src/common.h (to_command_option) + (ignore_command_error_option): New globals + (sys_exec_command,sys_wait_command): New commands + * src/extract.c (extract_file): Handle to_command_option + Fix error recovery: decrease `size' by `written', not + by `count', otherwise tar misses the next header + Do not diagnose write error if to_command_option + is set, since the command may have exited prematurely. + It would be better to check for sigpipe, though. + (prepare_to_extract): Handle to_command_option + * src/misc.c (exec_error, fork_error, dup_error) + (pipe_error): New functions + * src/system.c (sys_exec_command) + (sys_wait_command): New functions + * src/tar.c: Handle new options --to-command, + --ignore-command-error + * THANKS: Added Hansjoerg Lipp + +2005-02-03 Paul Eggert + + * src/list.c (from_header): New arg OCTAL_ONLY, normally false. + All uses changed. Fix typo that sometimes suppressed all "Archive + contains obsolescent base-64 headers" warnings, not just the first + one. + (tar_checksum): Accept only octal checksums, since they aren't + supposed to overflow into weird formats. + + Adjust to gnulib changes. + * lib/.cvsignore: Add chdir-long.c, chdir-long.h, memrchr.c, + memrchr.h, openat.c, openat.h. Remove pathmax.h (added by + mistake, perhaps?), sysexit.h (my typo), xstrdup.c (gnulib removed + this file). Sort entries. + +2005-02-04 Sergey Poznyakoff + + * src/extract.c: Further rewrite. + * src/buffer.c: Removed unused variables. + * src/list.c: Likewise + * src/tar.c (update_argv): Changed type to void + + * src/common.h (OLDGNU_NAME_FIELD_SIZE): New constant + * src/create.c (start_private_header,write_header_name) + (dump_hard_link): Restore compatibility with 1.13.25 + * src/extract.c (extract_archive): Rewritten + * src/list.c: Add translators' comments + * src/tar.c (options) Minor spelling fix + * tests/star/quicktest.sh: Determine path to the tar executable. + +2005-02-03 Sergey Poznyakoff + + * po/POTFILES.in: Added tests/genfile.c + * src/buffer.c (short_read): Use ngettext() + (new_volume): use quote(). + * src/create.c: Use quote() + * src/extract.c: Likewise + * src/xheader.c: Likewise + * src/misc.c: Add comments to translators + + * tests/same-order01.at: sort ls output + * tests/sparse01.at (RE_CHECK): Added missing space + + * tests/sparse02.at: Test extracting sparse files over a pipe. + * tests/Makefile.am: Added sparse02.at + * tests/testsuite.at: Likewise + * tests/listed02.at: Skip the test on filesystems that do not + update ctime of a file when renaming it. To be reverted when + the new incremental mode is ready. + * tests/sparse01.at: Extract and compare sparse file + +2005-02-02 Sergey Poznyakoff + + * src/sparse.c: Extract sparse files even if the output + fd is not seekable. + +2005-02-01 Sergey Poznyakoff + + * bootstrap: Add a comment to lib/Makefile.am saying that this + is an autogenerated file. + Exit with code 1 if any of autotools fails. + * lib/Makefile.tmpl: Insert Emacs magic to the first line. + * tests/Makefile.am: Add append.at + + * m4/.cvsignore: Ignore all *.m4 files + +2005-01-18 Sergey Poznyakoff + + Rewritten handling of -T (--files-from) option. Now it + inserts the file names immediately into argv array which allows + for: + 1) any valid tar options (including another -T) to be used in the file + 2) any number of -T options to be given in command line + + * configure.ac: Raised version number to 1.15.2 + * src/common.h: Include obstack.h + (files_from_option): Removed + (unquote_option): New variable + (stat_fatal): New function + (name_close): Removed function. + * src/incremen.c: Remove inclusion of obstack.h + * src/xheader.c: Likewise. + * src/misc.c (stat_fatal): New function + * src/names.c (name_file): Removed variable. + (read_name_from_file): Removed function. All callers changed. + (name_close): Removed function. All callers changed. + * src/tar.c: New options --unquote (--no-unquote) and + --add-file + (add_file_id,read_name_from_file,update_argv): New functions + (parse_opt): Rewritten handling of -T option. Handle hidden + --HANG option for debugging purposes. + (decode_options): Init unquote_option to true. Init argv_stk. + Remove unneeded references to files_from_option + + * doc/tar.texi: Document new options. + Moved rendition macros and option value definitions into + separate files + * doc/rendition.texi: New file + * doc/value.texi: New file + * doc/Makefile.am: Updated + +2005-01-13 Paul Eggert + + * tests/testsuite.at (RE_CHECK): Use "join - file", not + "join file -", to work around a bug in Solaris 8 join. + Problem reported by Tomohiro Suzuki. + +2005-01-13 Sergey Poznyakoff + + * src/list.c (read_header): Fixed calculation of the + size for GNU long name/link. Tar was reading one block + more if name_size was divisible by 512. Thanks Josef + Bauer. + * tests/long01.at: New file. Test listing of GNU long names + divisible by 512. + * tests/pipe.at: Sort tar output. + * tests/Makefile.am: Added long01.at + * tests/testsuite.at: Likewise. + * THANKS: Added Josef Bauer + * lib/.cvsignore: Updated + * m4/.cvsignore: Updated + * NEWS: Updated + +2005-01-11 Sergey Poznyakoff + + * directory: Updated for 1.15.1 + * doc/Makefile.am: Use gendocs.sh to generate web documentation + * doc/gendocs_template: Template file for gendocs.sh + * doc/tar.texi: Updated docs for --[no-]same-permissions + * src/tar.c: Reworded docstrings for --[no-]same-permissions + +2005-01-06 Sergey Poznyakoff + + * bootstrap: Create m4/paxutils.m4 + * configure.ac: Call tar_PAXUTILS + * tests/options02.at: Test that tar correctly handles non-option + arguments interspersed with options. + * tests/Makefile.am: Add options02.at + * tests/testsuite.at: Likewise + * tests/listed02.at: Do not create useless directory + +2005-01-05 Sergey Poznyakoff + + * src/tar.c (parse_opt): Bugfix: Use ARGP_KEY_ARG. Thanks + Mike Frysinger for reporting. + +2005-01-04 Paul Eggert + + * lib/Makefile.tmpl (localedir.h): Omit needless quotes and a + needless sed command. Problem reported by Paul Jarc. + +2004-12-23 Paul Eggert + + Accommodate latest gnulib. + * doc/.cvsignore: Add getdate.texi. + * bootstrap: Do not treat alloca-opt specially; this is no + longer needed (and breaks builds) with latest gnulib. + +2004-12-22 Sergey Poznyakoff + + * src/tar.c (main): Reverted recent changes (#ifdef). + +2004-12-21 Sergey Poznyakoff + + * configure.ac: Raise version number to 1.15.1 + Check for locale.h + * NEWS: Entry for 1.15.1 + * src/buffer.c: Bugfix. Changes introduced 2004-11-26 + broke extraction from stdin. + * src/list.c (from_header, tar_checksum): Changed declaration. + All callers updated. + * src/common.h: Likewise + * src/tar.c (main): Protect invocation of setlocale by + ifdef. + + * tests/comprec.at: New test + * tests/pipe.at: New test + * tests/Makefile.am (comprec.at,pipe.at): New tests + * tests/testsuite.at: Likewise + * tests/gzip.at: Use AT_GZIP_PREREQ + * tests/star/pax-big-10g.at: Likewise + * tests/star/ustar-big-2g.at: Likewise + * tests/star/ustar-big-8g.at: Likewise + + * tests/extrac04.at: Discard stderr from sort, on some + systems it spits out lots of irrelevant info. + * tests/listed02.at: Likewise + + * doc/index.html.in: Rewritten in xhtml to follow recent + GNU site standards. + * THANKS: Updated + +2004-12-20 Sergey Poznyakoff + + Released version 1.15. Sources up to this point are + tagged release_1_15. + + * configure.ac: Raised version number to 1.15 + * NEWS: Likewise + * directory: Updated + * bootstrap (update_po): Give -r to wget. Always remove index.html + Ignore alloca-opt module (it duplicates alloca) + + * tests/Makefile.am: Distribute star/quicktest.sh + * tests/star/README: Document quicktest.sh + * tests/star/qucktest.sh: Removed. + * tests/star/quicktest.sh: New file. + +2004-12-18 Sergey Poznyakoff + + * NEWS: Updated + * doc/tar.texi: Document auto-detection of compressed archive + formats. + * src/tar.c (decode_options): Ignore --seek if used with --delete. + Delete.c is based on the assumption that the archive is being + actually read, not lseeked. + + * tests/delete05.at: New file + * tests/extrac02.at: Fixed typo in AT_SETUP + * tests/Makefile.am: Added delete05.at + * tests/testsuite.at: Likewise. + +2004-12-17 Sergey Poznyakoff + + * src/delete.c (delete_archive_members): Bugfix: when + attempting to delete an nonexistent member, the last + blocking_factor blocks were zeroed. + +2004-12-14 Paul Eggert + + * TODO: Mention sub-second resolution, lutimes, lchmod. + +2004-11-27 Paul Eggert + + Adjust to recent gnulib changes. + * doc/getdate.texi: Remove, since bootstrap gets it from gnulib now. + * .cvsignore: Add rmt, rmt/*, rmt/*/*. + * lib/.cvsignore: Add allocsa.c, allocsa.h, allocsa.valgrind, + charset.alias, config.charset, getcwd.c, getcwd.h, localcharset.c, + localcharset.h, ref-add.sed, ref-add.sin, ref-del.sed, + ref-del.sin, setenv.c, setenv.h, unsetenv.c. Remove pathmax.h, + xstrdup.c. + * m4/.cvsignore: Add allocsa.m4, eealloc.m4, getcwd-path-max.m4, + localcharset.m4, realloc.m4, setenv.m4. Remove malloc.m4, + pathmax.m4, realloc.m4. + +2004-11-26 Sergey Poznyakoff + + * configure.ac: Raised version number to 1.14.91 + * scripts/tarcat: New file + * scripts/Makefile.am: Added tarcat + * src/buffer.c (hit_eof): Changed type to boolean + (read_full_records,reading_from_pipe): New variables + (check_compressed_archive,open_compressed_archive): New functions + (open_archive): Autodetect compressed archives and act accordingly. + Set reading_from_pipe. This fixes controversial set of changes + introduced 2004-05-11,2004-03-22. + * src/list.c (tar_checksum): New function + (read_header): Use tar_checksum(). + * src/common.h (tar_checksum): New function + + * tests/star/README: Updated + * NEWS: Updated + * PORTS: Updated + +2004-11-16 Sergey Poznyakoff + + * src/tar.c (decode_options): Fixed -o semantics. Thanks + Jean Delvare + +2004-10-25 Sergey Poznyakoff + + * bootstrap: Add localcharset + * lib/Makefile.tmpl: Initialize SUFFIXES and CLEANFILES since the + makefile snippet from localcharset uses '+=' on them. + * src/Makefile.am (LDADD): Add LIBICONV + * src/list.c (decode_header): Set uname/gname to NULL if their + header counterparts are empty + * src/tar.c (options): Use OPTION_NO_TRANS + * src/utf8.c: Use locale_charset() from gnulib + + * tests/star/README: Updated + + * NEWS: Updated + * TODO: Minor fix + +2004-10-04 Sergey Poznyakoff + + * THANKS: Added Bryan Ford + * doc/Makefile.am (.text): Fixed rule + * po/POTFILES.in: Added argp-help.c + +2004-10-04 Bryan Ford + + * src/tar.c: New option --exclude-caches, to exclude + cache directories automatically on archive creation. + Cache directories are directories containing a + standardized tag file, as specified at: + http://www.brynosaurus.com/cachedir/spec.html + * src/common.h: New variable exclude_caches_option. + * src/create.c: New function check_cache_directory(), + called from dump_dir0() if exclude_caches_option is set, + to check for a cache directory tag and exclude the directory + if such a tag is found. + * doc/tar.texi: Updated accordingly. + +2004-09-16 Sergey Poznyakoff + + * doc/tar.texi: Minor fix + * src/tar.c (options): Minor fix + +2004-09-12 Sergey Poznyakoff + + * TODO: Updated + * lib/Makefile.tmpl: Added 'rtapelib.o: localedir.h' dependency + * src/common.h: Comment WANT_DIRECTORY_REMOVE_OPTION. + * src/extract.c: Normalized use of remove_any_file(). + * src/misc.c: Likewise. + * src/tar.c (parse_opt): Emit warning if -l option is used. + (show_default_settings): REMOTE_SHELL may be undefined + +2004-09-07 Sergey Poznyakoff + + Test suite rewritten in autotest. + + * configure.ac: Updated for autotest + * src/tar.c (argp_program_version): Modified. + * tests/Makefile.am: Rewritten for autotest. + + * tests/.cvsignore: Updated + * tests/append.at: New file + * tests/atlocal.in: New file + * tests/delete01.at: New file + * tests/delete02.at: New file + * tests/delete03.at: New file + * tests/delete04.at: New file + * tests/extrac01.at: New file + * tests/extrac02.at: New file + * tests/extrac03.at: New file + * tests/extrac04.at: New file + * tests/extrac05.at: New file + * tests/gzip.at: New file + * tests/ignfail.at: New file + * tests/incremental.at: New file + * tests/link01.at: New file + * tests/listed01.at: New file + * tests/listed02.at: New file + * tests/longv7.at: New file + * tests/multiv01.at: New file + * tests/multiv02.at: New file + * tests/multiv03.at: New file + * tests/old.at: New file + * tests/options.at: New file + * tests/recurse.at: New file + * tests/same-order01.at: New file + * tests/same-order02.at: New file + * tests/sparse01.at: New file + * tests/testsuite.at: New file + * tests/version.at: New file + * tests/volume.at: New file + * tests/star/gtarfail.at: New file + * tests/star/gtarfail2.at: New file + * tests/star/multi-fail.at: New file + * tests/star/pax-big-10g.at: New file + * tests/star/ustar-big-2g.at: New file + * tests/star/ustar-big-8g.at: New file + + * tests/preset.in: Removed + * tests/before: Removed + * tests/after: Removed + * tests/version.sh: Removed. + * tests/append.sh: Removed. + * tests/delete01.sh: Removed. + * tests/delete02.sh: Removed. + * tests/delete03.sh: Removed. + * tests/delete04.sh: Removed. + * tests/extrac01.sh: Removed. + * tests/extrac02.sh: Removed. + * tests/extrac03.sh: Removed. + * tests/extrac04.sh: Removed. + * tests/extrac05.sh: Removed. + * tests/gzip.sh: Removed. + * tests/incremen.sh: Removed. + * tests/ignfail.sh: Removed. + * tests/link01.sh: Removed. + * tests/listed01.sh: Removed. + * tests/listed02.sh: Removed. + * tests/longv7.sh: Removed. + * tests/multiv01.sh: Removed. + * tests/multiv02.sh: Removed. + * tests/multiv03.sh: Removed. + * tests/old.sh: Removed. + * tests/options.sh: Removed. + * tests/same-order01.sh: Removed. + * tests/same-order02.sh: Removed. + * tests/volume.sh: Removed. + * tests/recurse.sh: Removed. + * tests/sparse01.sh: Removed. + * tests/star/gtarfail.sh: Removed. + * tests/star/gtarfail2.sh: Removed. + * tests/star/multi-fail.sh: Removed. + * tests/star/ustar-big-2g.sh: Removed. + * tests/star/ustar-big-8g.sh: Removed. + * tests/star/pax-big-10g.sh: Removed. + +2004-09-07 Sergey Poznyakoff + + * bootstrap: Install genfile.c from paxutils + * tests/genfile.c: Removed. Integrated into + paxutils. + * tests/mksparse.c: Removed. Integrated into + (paxutils) genfile.c + * tests/Makefile.am: Removed mksparse + * tests/sparse01.sh: Use genfile instead of mksparse + +2004-09-06 Sergey Poznyakoff + + Started merging with cpio into paxutils. Sources before + this point are tagged alpha-1_14_90 + + * Makefile.am: Updated for use with paxutils + * README-alpha: Likewise + * bootstrap: Likewise + * configure.ac: Likewise + * lib/Makefile.tmpl: Likewise + * po/POTFILES.in: Likewise + * src/Makefile.am: Likewise + * src/buffer.c: Likewise + * src/common.h: Likewise + * src/compare.c: Likewise + * src/create.c: Likewise + * src/delete.c: Likewise + * src/extract.c: Likewise + * src/incremen.c: Likewise + * src/list.c: Likewise + * src/mangle.c: Likewise + * src/misc.c: Likewise + * src/names.c: Likewise + * src/sparse.c: Likewise + * src/system.c: Likewise + * src/tar.c: Likewise + * src/update.c: Likewise + * src/utf8.c: Likewise + * src/xheader.c: Likewise + + * src/system.h: Removed + * src/rmt.c: Removed + * src/rmt.h: Removed + * src/rtapelib.c: Removed + +2004-09-03 Sergey Poznyakoff + + * tests/listed02.sh: Do not depend on any particular ordering + of output. + +2004-09-02 Sergey Poznyakoff + + * doc/tar.texi: Document the use of -C option in + file lists. Document --seek option. + * configure.ac: New option --with-rmt. New configuration variable + DEFAULT_RMT_DIR. Removed DEFAULT_RMT_COMMAND. + * src/Makefile.am: Install rmt into rmtdir + * src/tar.c (usage): Minor fix. + * NEWS: Updated. + * README: Updated. + +2004-09-01 Sergey Poznyakoff + + * configure.ac: Raised version number to 1.14.90 + * src/common.h (is_individual_file): New prototype + * src/create.c (dump_file0): Fix bug introduced + 2004-02-21. + * src/names.c (register_individual_file) + (is_individual_file): New functions. + * tests/listed01.sh: Use genfile instead of dd. + * tests/listed02.sh: New file. + * tests/Makefile.am: Added listed02.sh + + * NEWS: Updated + +2004-08-31 Sergey Poznyakoff + + * src/sparse.c (sparse_add_map): Fixed improper initializations + of sparse_map_size. We assume that whatever number it contains + describes adequately the current size of sparse_map. The only + number we need to reset is sparse_map_avail. + * src/compare.c (verify_volume): Call set_next_block_after + if read_header returns HEADER_FAILURE + Destroy and reinitialize content of current_stat_info and + extended_header after each iteration (bug reported by + John L. Males ). + Issue a warning if the created archive contains some members + whose file names were stripped off their leading prefixes. + This is a temporary fix of the issue reported by Bdale Garbee + (Refs: Debian bug 230064, Message-Id + <87n07kyzhi.fsf@rover.gag.com>, Sun, 15 Feb 2004 11:22:17 -0700) + + * src/names.c (removed_prefixes_p): New function. + + * src/buffer.c: When computing write rate do not take + into account the time needed to verify the archive(s). + The bug reported by John L. Males + (set_start_time,compute_duration): New functions. + (print_total_written): Use the result of compute_duration(). + (close_archive): Call compute_duration. + * src/common.h (set_start_time, removed_prefixes_p): New prototypes. + * src/list.c (decode_header): Fixed initialization + of stat_info->is_sparse + * src/tar.c (main): Call set_start_time(). + + * src/misc.c (unquote_string): Unquote '\a' and '\v'. + Reported by Helmut Waitzmann . + + * NEWS: Updated + * THANKS: Updated + +2004-08-30 Sergey Poznyakoff + + * src/tar.c: Fix copy-n-paste errors in the license + +2004-08-19 Sergey Poznyakoff + + * scripts/backup.in: Renamed LIBPATH to LIBDIR. + Use ROOT_FS with -C option. Do not send mail + if ADMINISTRATOR is set to NONE. + * scripts/backup.sh.in (test_root): Append / to + ROOT_FS if it does not already end in it. + * scripts/restore.in: Renamed LIBPATH to LIBDIR. + New option -a (--all). Do not start restore unless + -a or patterns are given. + (restore_fs,restore_files): Fixed use of --listed option. + * doc/tar.texi: Updated + * NEWS: Updated + +2004-08-17 Sergey Poznyakoff + + * src/tar.c (find_argp_option): Fixed typo + +2004-08-12 Paul Eggert + + Merge argp, getopt, xalloc changes from gnulib. + * bootstrap (gnulib_modules): Add xalloc-die. + Remove code to test for patches; we don't have patches now. + Set LC_ALL=C so that file names sort consistently. + Prefer the gnulib copies of gettext.m4, glibc21.m4, + lib-ld.m4, lib-prefix.m4, po.m4 too. + + * patches/getopt.diff: Remove; gnulib now works unpatched. + * configure.ac (_getopt_long_only_r): Remove check. + gl_ARGP now does this for us. + * lib/.cvsignore: Add fnmatch.h, getopt_.h, sysexit.h, + xalloc-die.c. + * src/extract.c: Adjust to changes to gnulib xalloc module. + (extr_init): Remove assignment to xalloc_fail_func; no longer needed. + (xalloc_die): New function. + +2004-08-10 Sergey Poznyakoff + + * NEWS: Updated + + * src/buffer.c (flush_write): Limit filenames + of the members that straddle multivolume archive + boundary to 100 characters. + (flush_read): Use strncmp when comparing multivolume member + names. + * tests/multiv03.sh: New file + * tests/Makefile.am: Added multiv03.sh + +2004-08-09 Sergey Poznyakoff + + * src/list.c (read_and): Call decode_header before + calling skip_member() + (skip_member): Use is_sparse field to determine if the + member is a sparse file. + + * tests/Makefile.am: Added extrac05.sh + * tests/extrac05.sh: New file + * tests/append.sh: Rearranged leading comments. Added explicit + references to report messages wherever available. + * tests/delete01.sh: Likewise + * tests/delete02.sh: Likewise + * tests/delete03.sh: Likewise + * tests/delete04.sh: Likewise + * tests/extrac01.sh: Likewise + * tests/extrac02.sh: Likewise + * tests/extrac03.sh: Likewise + * tests/extrac04.sh: Likewise + * tests/gzip.sh: Likewise + * tests/ignfail.sh: Likewise + * tests/incremen.sh: Likewise + * tests/link01.sh: Likewise + * tests/listed01.sh: Likewise + * tests/longv7.sh: Likewise + * tests/multiv01.sh: Likewise + * tests/multiv02.sh: Likewise + * tests/old.sh: Likewise + * tests/options.sh: Likewise + * tests/recurse.sh: Likewise + * tests/same-order01.sh: Likewise + * tests/same-order02.sh: Likewise + * tests/sparse01.sh: Likewise + * tests/version.sh: Likewise + * tests/volume.sh: Likewise + +2004-08-08 Sergey Poznyakoff + + * bootstrap: Extended --update-po option to take an + optional argument specifying the po file to update. + * src/create.c: Improved compatibility with 1.13.25 + * tests/link01.sh: New file. + * tests/Makefile.am: Added link01.sh + +2004-08-06 Paul Eggert + + Merge from gnulib. + + * patches/argp.diff: Remove; no longer needed. + + * lib/.cvsignore: Add stat-macros.h. + Remove addext.c, malloc.c, realloc.c. + + * src/extract.c: Include . + (extract_archive): Rewrite with new macro IS_ABSOLUTE_FILE_NAME. + * src/extract.c (make_directories): + FILESYSTEM_PREFIX_LEN -> FILE_SYSTEM_PREFIX_LEN. + * src/misc.c (must_be_dot_or_slash): Likewise. + * src/names.c (excluded_name, safer_name_suffix, stripped_prefix_len): + Likewise. + * src/tar.c (parse_opt): Likewise. + * src/incremen.c (purge_directory): Fix format buffer typos in warning + strings. + * src/tar.c (options): Add missing initializers to pacify gcc. + (decode_options): Remove unused var. + +2004-08-02 Paul Eggert + + * bootstrap (gnulib_modules): Add getpagesize. + * configure.ac (valloc): Remove check; valloc no longer used. + * lib/.cvsignore: Add getpagesize.h. + * m4/.cvsignore: Add getpagesize.m4. + * src/buffer.c (record_buffer): New var. + (open_archive): Don't use valloc; on older or buggy hosts, you can't + free the result. Use page_aligned_alloc instead. + * src/compare.c (diff_init): Likewise. + * src/buffer.c (open_archive): Record the pointer to be freed + into record_buffer. + (close_archive): Free record_buffer. + * src/common.h (page_aligned_alloc): New decl. + * src/misc.c (quote_n, quote): Remove these redundant functions. + (ptr_align): New function, from coreutils/src/system.h. + (page_aligned_alloc): New function. + * src/system.h (valloc): Remove. + +2004-07-09 Paul Eggert + + * src/extract.c (extract_archive): Do not report an error + when hard-linking X to X when X exists. Problem reported by + Toby Peterson. + * lib/.cvsignore: Add fchown-stub.c. + +2004-06-29 Sergey Poznyakoff + + * NEWS: Updated + * src/common.h (root_device): New global. + (gnu_restore): Renamed to purge_directory(). + * src/extract.c (extr_init): Save the device number + of the root device. + (extract_archive): Renamed gnu_restore() to purge_directory(). + * src/incremen.c (gnu_restore): Renamed to purge_directory(). + Do not attempt to purge the directory if it is on a different + device and one_file_system_option is set. + +2004-06-25 Sergey Poznyakoff + + * doc/tar.texi: The actual default for exclude patterns + is --no-anchored. Fixed. + * src/tar.c (options): Likewise. + Thanks "Felix Natter" for noticing. + +2004-06-22 Sergey Poznyakoff + + * doc/tar.texi: Fixed several inconsistencies. + * src/tar.c: Fixed docstring for --checkpoint option. + +2004-05-19 Sergey Poznyakoff + + * src/buffer.c (seek_archive): New function + * src/common.h (seek_archive): New function + (seekable_archive): New global. + * src/list.c (skip_file): Use seek_archive() if + possible. + * src/tar.c (struct fmttab): Accept 'pax' as alias + for 'posix' + (options): New option -n (--seek). + * src/update.c: Determine type of the archive before + appending to it. + + * TODO: Updated. + +2004-05-19 Sergey Poznyakoff + + * bootstrap: New option --update-po + * src/tar.c: New option -H (short alias to --format) + * doc/tar.texi: Document -H option + * src/names.c (safer_name_suffix): Fixed bug introduced + 2004-05-11. + +2004-05-16 Sergey Poznyakoff + + * bootstrap: Apply patches from patch subdirectory + * patches: New dir + * patches/argp.diff: New file + * patches/getopt.diff: New file + * configure.ac: Check for _getopt_long_only_r and + force using included version of getopt if the function + is not available. + * src/tar.c: Use argp for command line parsing. + * src/system.h: Minor formatting fix + * m4/.cvsignore: Updated + * lib/.cvsignore: Updated + * doc/tar.texi: Minor fix. + * src/extract.c: Fix improper use of 'path' term + * src/incremen.c: Likewise + * src/list.c: Likewise + * src/misc.c: Likewise + * src/names.c: Likewise + * src/rmt.h: Likewise + * src/rtapelib.c: Likewise + * src/update.c: Likewise + * src/xheader.c: Likewise + * tests/star/README: Minor fix + +2004-05-13 Sergey Poznyakoff + + * configure.ac: Raised version number to 1.14.1 + * src/tar.c: Renamed --strip-path to --strip-components + Changed improper use of _() to ngettext(). + * src/extract.c: Renamed strip_path_option to strip_components_option + * src/common.h: Likewise. + * NEWS: Updated. + * doc/tar.texi: Updated + +2004-05-11 Sergey Poznyakoff + + * src/system.c (sys_child_open_for_uncompress): Do not + set read_full_records_option: the compressed archive is + likely not to contain integer number of records. Should + the user wish to use reblocking, he may always give tar + -B option. This is a minor improvement over the change + dated 2004-03-22. + * src/buffer.c (open_archive): Removed assignment to + read_full_records_option. + + * src/names.c (safer_name_suffix): (safer_name_suffix): Use "%s" + as the format argument, rather than a possibly-translated variable + string. Patch provided by Jim Meyering + * src/tar.c (decode_options): Fixed typo in the comment. + * tests/star/README: Minor correction + +2004-05-11 Sergey Poznyakoff + + * directory: New file. GNU directory entry for tar. + * doc/Makefile.am: Rewritten. Added rules for generating + documentation for the project's website. + * doc/.cvsignore: Updated + * doc/index.html.in: New file. + +2004-05-11 Sergey Poznyakoff + + * configure.ac: Raised version number to 1.14 + * NEWS: Updated. + * tests/after: Added copyleft statement + * tests/before: Added copyleft statement + * tests/preset.in: Added copyleft statement + + Tar 1.14 is released. Sources up to this point are tagged + release_1_14 + +2004-05-10 Sergey Poznyakoff + + * configure.ac: Fixed prerequisite headers for sys/buf.h + (needed on FreeBSD) + * src/system.h: Likewise. + * tests/after (compare): Fixed argument quoting under eval + * tests/before: Quote TAR_ARCHIVE_FORMATS + +2004-05-10 Sergey Poznyakoff + + * NEWS: Updated + * README: Updated + * PORTS: Updated + * configure.ac: Call gl_AC_TYPE_INTMAX_T. Document + DEFAULT_.* variables. Use DEFAULT_RMT_COMMAND to set + the pathname of the rmt utility. + New option --enable-backup-scripts. + * doc/tar.texi: Updated + * scripts/Makefile.am: Install the scripts only if requested + by the configure. + * scripts/backup.in: Fixed --version output. + Fixed initialization of the listing files and printing + the time of the last previous level dump. + * scripts/restore.in: Fixed --version output. + * src/Makefile.am (localedir.h rule): Generate correct + DEFAULT_RMT_COMMAND variable. + * src/common.h (rmt_command_option): New variable. + * src/list.c (read_and): Print block number before + issuing 'Skipping to next header' diagnostics, if + requested by block_number_option. + * src/rtapelib.c: Use rmt_command_option instead of + hardcoded "/etc/rmt". + * src/tar.c: New option --rmt-command. + (decode_options): Handle --rmt-command. Initialize + rmt_command_option to DEFAULT_RMT_COMMAND. + +2004-05-09 Sergey Poznyakoff + + * doc/tar.texi: Further update. + +2004-05-08 Sergey Poznyakoff + + * configure.ac: Minor fix + * scripts/Makefile.am: Updated + * scripts/backup-specs: Updated + * scripts/backup.in: Minor fixes + * scripts/backup.sh: Removed + * scripts/backup.sh.in: New file. Source for backup.sh + * scripts/restore.in: New file + * scripts/.cvsignore: Updated + * scripts/WARNING: Removed + * doc/tar.texi: Updated + * NEWS: Updated + +2004-05-07 Sergey Poznyakoff + + * src/names.c (name_gather): Bugfix: Honor single -C with + --same-order. + * tests/same-order01.sh: New file + * tests/same-order02.sh: New file + * tests/Makefile.am: Updated + + * tests/append.sh: Added copyleft header + * tests/delete01.sh: Likewise + * tests/delete02.sh: Likewise + * tests/delete04.sh: Likewise + * tests/extrac01.sh: Likewise + * tests/extrac02.sh: Likewise + * tests/extrac03.sh: Likewise + * tests/extrac04.sh: Likewise + * tests/gzip.sh: Likewise + * tests/ignfail.sh: Likewise + * tests/incremen.sh: Likewise + * tests/multiv01.sh: Likewise + * tests/old.sh: Likewise + * tests/options.sh: Likewise + * tests/recurse.sh: Likewise + * tests/version.sh: Likewise + * tests/volume.sh: Likewise + * tests/star/gtarfail.sh: Likewise + * tests/star/gtarfail2.sh: Likewise + * tests/star/multi-fail.sh: Likewise + * tests/star/pax-big-10g.sh: Likewise + * tests/star/qucktest.sh: Likewise + * tests/star/ustar-big-2g.sh: Likewise + * tests/star/ustar-big-8g.sh: Likewise + + * doc/.cvsignore: Updated + +2004-05-06 Sergey Poznyakoff + + * configure.ac: Check whether date accepts +format argument + (for backup scripts). + * scripts/level-0: Removed + * scripts/level-1: Removed + * scripts/weekly.new: Removed + * scripts/dump-remind: Removed + * scripts/backup.in: New file + * scripts/backup.sh: New file + * scripts/dump-remind.in: New file + * scripts/backup-specs: Updated + * scripts/Makefile.am: Updated for new directory contents. + * scripts/.cvsignore: Updated + +2004-05-05 Sergey Poznyakoff + + * TODO: Updated + * doc/tar.texi: Updated + * src/tar.c: --utc implies -vv + +2004-04-28 Sergey Poznyakoff + + * src/utf8.c: Make sure ICONV_CONST is defined. AM_ICONV + does not define it if it fails to find iconv.h. + +2004-04-26 Sergey Poznyakoff + + * bootstrap: Use gnulib-tool to generate lib/Makefile.am + and parts of configure.ac + * configure.ac: Invoke tar_GNULIB to configure gnulib stuff. + * lib/Makefile.am: Removed + * lib/Makefile.tmpl: New file. + * lib/.cvsignore: Updated + * m4/.cvsignore: Updated + * src/xheader.c: Include stpcpy.h + + * src/create.c: Produce an error, not warning, if the + filename is too long. + * tests/longv7.sh: Synchronized with the recent changes. + +2004-04-20 Sergey Poznyakoff + + * configure.ac: Fixed test for iconv_t + * src/rmt.h: Bugfix by Jürgen Weigert + * THANKS: Add Jürgen Weigert + * tests/star/README: Fixed typo + +2004-04-04 Paul Eggert + + Merge getdate documentation changes from coreutils. + + * doc/getdate.texi: Update from coreutils CVS. + * doc/tar.texi: Fix getdate menu to match getdate.texi's. + + Merge recent gnulib changes, and remove some lint. + + Improve support for nanosecond-resolution time stamps. + * bootstrap: Add gettime, timespec modules. + * configure.ac (gl_GETTIME, gl_TIMESPEC): Add. + * lib/.cvsignore (getopt_int.h, gettime.c, gettimeofday.c, + timespec.h): Add. + * lib/Makefile.am (libtar_a_SOURCES): Add gettime.c, timespec.h. + * m4/.cvsignore: Add clock_time.m4, gettime.m4, gettimeofday.m4, + st_mtim.m4, timespec.m4. Remove malloc.m4, realloc.m4. + * src/common.h (newer_mtime_option): Now a struct timespec, not + time_t. All uses changed. + (NEWER_OPTION_INITIALIZED, OLDER_STAT_MTIME): New macros. + * src/create.c (dump_file0): Use OLDER_STAT_TIME to compare times. + * src/incremen.c (scan_path): Likewise. + * src/list.c (read_and): Likewise. + * src/list.c (read_and): Use NEWER_OPTION_INITIALIZED to decide + whether newer_mtime_option is initialized. + * src/tar.c (decode_options): Likewise. + * src/tar.c (decode_options): Adjust to new signature for get_date. + + * src/buffer.c (short_read, flush_read): Use size_t, not ssize_t, for + result of safe_read, full_write, and similar functions. + Detect safe_read error by comparing to SAFE_READ_ERROR; + detect full_write error by comparing to 0. + All uses changed. + * src/common.h (write_error_details, sys_write_archive_buffer): + Likewise. + * src/misc.c (write_error_details): Likewise. + * src/rmt.c (main): Likewise. + * src/rmt.h (rmt_read__, rmt_write__): Likewise. + * src/rtapelib.c (rmt_read__, rmt_write__, rmt_ioctl__): Likewise. + * src/sparse.c (sparse_scan_file, sparse_dump_region, + check_sparse_region, check_data_region): Likewise. + * src/system.c (sys_write_archive_buffer, sys_drain_input_pipe, + sys_child_open_for_compress, sys_child_open_for_uncompress): Likewise. + * src/update.c (append_file): Likewise. + + * src/buffer.c (clear_read_error_count): Use explicit (void) + to indicate a function with no arguments. + * src/create.c (check_links): Likewise. + * src/system.c (sys_get_archive_stat, sys_save_archive_dev_ino, + sys_detect_dev_null_output, sys_drain_input_pipe, sys_spawn_shell, + sys_reset_uid_gid, sys_get_archive_stat, sys_save_archive_dev_ino, + sys_detect_dev_null_output, sys_drain_input_pipe, sys_spawn_shell): + Likewise. + * src/utf8.c (get_input_charset): Likewise. + * src/xheader.c (xheader_ghdr_name, xheader_write_global, + xheader_decode_global, extended_header_init): Likewise. + * tests/mksparse.c (usage): Likewise. + + * src/buffer.c (new_volume): Rename local variables to avoid + shadowing warnings. + * src/common.h (file_dumpable_p, sys_stat_nanoseconds, + sparse_file_p, sparse_member_p, sparse_fixup_header, + sparse_dump_file, sparce_extract_file, sparse_skip_file, + sparse_diff_file): Likewise. + * src/compare.c (diff_archive): Likewise. + * src/create.c (file_dumpable_p, dump_regular_file, dump_dir0, + dump_dir, dump_hard_link, file_count_links, dump_file0, dump_file): + Likewise. + * src/extract.c (repair_delayed_set_stat): Likewise. + * src/misc.c (maybe_backup_file, add_hierarchy_to_namelist): + Likewise. + * src/sparse.c (struct tar_sparse_optab, tar_sparse_dump_region, + tar_sparse_extract_region, sparse_dump_region, sparse_extract_region, + sparse_dump_file, sparse_file_p, sparse_member_p, + sparse_fixup_header, sparse_extract_file, sparse_skip_file, + check_data_region, sparse_diff_file): Likewise. + * src/system.c (sys_stat_nanoseconds): Likewise. + * src/xheader.c (xheader_format_name): Likewise. + + * src/common.h (enum old_files): Remove comma before }; not portable. + + * src/common.h (read_fatal_details): Add __attribute__ ((noreturn)). + * src/rmt.c (usage): Likewise. + * src/xheader.c (xheader_set_single_keyword): Likewise. + * tests/genfile.c (usage): Likewise. + * tests/mksparse.c (die, usage): Likewise. Also add printf attribute + to die. + + * src/common.h (gname_to_gid, uname_to_uid): Add const to avoid + some gcc warnings. + * src/names.c (uname_to_uid, gname_to_gid): Likewise. + * src/utf8.c (struct langtab.lang, struct langtab.terr, struct + langtab.charset, charset_lookup): Likewise. + + * src/common.h (name_init): Remove unused args. All callers changed. + * src/names.c (name_init): Likewise. + + * src/common.h (usage, xheader_write, xheader_write_global, + sys_reset_uid_gid): New decls. + + * src/compare.c (report_difference, process_noop): Add + __attribute__ ((unused)) for unused attributes. + * src/sparse.c (oldgnu_sparse_member_p, star_sparse_member_p): + Likewise. + * src/xheader.c (dummy_coder, dummy_decoder, atime_coder, + gid_coder, gname_coder, linkpath_coder, ctime_coder, mtime_coder, + path_coder, size_coder, uid_coder, uname_coder, + sparse_numblocks_coder): Likewise. + + * src/create.c (dump_regular_finish, dump_dir0, dump_dir, + dump_file0): Now static. + * src/utf8.c (charset_lookup): Likewise. + * src/xheader.c (xheader_protected_pattern_p, + xheader_protected_keyword_p, xheader_set_single_keyword, + xheader_keyword_deleted_p, xheader_keyword_override_p, + xheader_list_append, xheader_list_destroy, xheader_set_keyword_equal): + Likewise. + * tests/genfile.c (usage): Likewise. + * tests/mksparse.c (die, mkhole, mksparse, usage, xlat_suffix): + Likewise. + + * src/create.c (hash_link): Rewrite to avoid cast. + + * src/extract.c (file_newer_p): Use parameter, not global var. + * src/misc.c (write_error_details): Likewise. + + * src/extract.c (prepare_to_extract): Remove directory arg; not + used. All callers changed. + + * src/misc.c (close_fatal): Remove; not used. + * src/system.c (sys_utimes): Likewise. + + * src/rmt.c (get_string): Avoid buffer overrun (off by 1 error). + + * src/rmt.c (main): Update copyright date to 2004. + * src/tar.c (decode_options): Likewise. + + * src/rtapelib.c (get_status_string): Don't lose errno when + skipping the error messages. + (get_status): Report an error if atol returns a negative number. + + * src/utf8.c (struct langtab, langtab, charset_lookup, + get_input_charset) [!defined HAVE_LIBCONV]: Omit unused + definitions. + (iconv_open, iconv, iconv_close) [!defined HAVE_LIBCONV]: + Use macros, not definitions, to avoid type clashes with system + headers. + (charset_lookup): Local var is now auto, not static. + (utf8_convert): Use ICONV_CONST instead of const, to avoid + type clashes. + + * src/utf8.c (langtab): Initialize all elements of struct, to + avoid gcc warning. + * src/xheader.c (xhdr_tab): Likewise. + + * src/xheader.c: Include fnmatch.h, since we use fnmatch. + + * tests/mksparse.c (mkhole): Fix typo: bool was assigned to off_t. + +2004-04-04 Sergey Poznyakoff + + * NEWS: Updated + * configure.ac: Raised version number to 1.13.94 + * src/system.h: Protect inclusion of + by ifdef. + Declare time() if HAVE_DECL_TIME is 0 + * tests/.cvsignore: Added mksparse + + * tests/sparse01.sh: New file + * tests/multiv02.sh: New file + * tests/Makefile.am: Add sparse01.sh and multiv02.sh + * tests/longv7.sh: Added missing call to 'after' + + * src/common.h: Added missing prototypes + * src/compare.c (diff_archive): Use is_sparse member + instead of GNUTYPE_SPARSE. + * src/create.c: Removed unused variables + * src/extract.c (extract_archive): Use sparse_member_p instead + of GNUTYPE_SPARSE. + Removed unused variables + * src/list.c (decode_header): Use sparse_fixup_header to correct + the st_size value. + (print_header): Do not rely on GNUTYPE_SPARSE type. + Use st->stat.st_size to print real file size. + (skip_member): Assign stat_info.file_name to save_name. This fixes + bug reported by Mads Martin Joergensen + Use sparse_skip_file() to skip sparse members. + * src/rtapelib.c: include "common.h" + * src/sparse.c (struct tar_sparse_optab.sparse_member_p) + (struct tar_sparse_optab.fixup_header): New member + (tar_sparse_member_p): New function. + (tar_sparse_init): Return true if decode_header is not provided + (tar_sparse_fixup_header) + (sparse_member_p,sparse_fixup_header) + (sparse_skip_file) + (oldgnu_sparse_member_p,oldgnu_fixup_header,star_sparse_member_p) + (star_fixup_header, pax_sparse_member_p): New function + (pax_decode_header): Remove + * src/system.h: Include and when available + * src/tar.c (usage): Prototype moved to common.h + * src/tar.h (struct tar_stat_info.is_sparse): New member + * src/utf8.c (utf8_convert): Changed prototype + (get_input_charset): Removed unused variable + * src/xheader.c: include + (size_decoder): Assign to both st->archive_file_size and + st->stat.st_size. + (st->stat.st_size): Assign to st->stat.st_size + (sparse_numbytes_decoder): Removed unused variable + * src/.cvsignore: Added .gdbinit + * THANKS: Added Mads Martin Joergensen + +2004-03-26 Sergey Poznyakoff + + * src/create.c (write_long_name): Do not allow more than + NAME_FIELD_SIZE-1 characters in a file name for V7 format + archives. + * tests/longv7.sh: New file. + * tests/Makefile.am: Add longv7.sh + +2004-03-22 Sergey Poznyakoff + + * src/buffer.c (open_archive): Clear read_full_records_option + if reading from a pipe. + (short_read): Display warning about the deduced record size + if version > 1 + * tests/star/pax-big-10g.sh: Updated to match the above changes. + * tests/star/ustar-big-2g.sh: Likewise. + * tests/star/ustar-big-8g.sh: Likewise. + + * configure.ac: Added gl_FUNC_STRTOULL + * src/create.c (start_header): Check for GNU_FORMAT + if incremental_option is set. + * src/xheader.c (to_decimal): New function. + (xheader_format_name): Use to_decimal() instead of snprintf. + * tests/listed01.sh: Use genfile instead of dd + * tests/multiv01.sh: Likewise. + +2004-03-12 Sergey Poznyakoff + + * src/list.c (read_and): Stop processing the archive after + encountering a single zero record. Many old archives contain + arbitrary garbage after it. + The warning is issued anyway. + +2004-03-02 Sergey Poznyakoff + + * src/rtapelib.c (rmt_lseek__,rmt_ioctl__): Bugfix. The + conversion buffer was not null terminated. Fix provided + by Leland Lucius + * THANKS: Added Leland Lucius + * src/utf8.c (utf8_convert): Indentation fix. + +2004-02-29 Sergey Poznyakoff + + * src/buffer.c (flush_read): Bugfix: the + condition at line 714 included + + || (status > 0 && !read_full_records_option) + + which is grossly wrong, since even if new_volume() below succeeds, + the subsequent call to rmtread will overwrite the chunk of data + already read in the buffer and thus spoil everything. + * src/system.c (sys_child_open_for_uncompress): Minor stylistic + fix. + * tests/star/multi-fail.sh: New test. + * tests/Makefile.am: Added multi-fail.sh + * tests/star/README: Updated + +2004-02-29 Sergey Poznyakoff + + * NEWS: Updated + * configure.ac: Removed spurious AC_CHECK_LIB(iconv) + * src/common.h (utc_option): new global + (enum old_files.KEEP_NEWER_FILES): New element + * src/extract.c: Handle --keep-newer-files option + * src/list.c (tartime): Print UTC if --utc was given. + * src/tar.c: New options: --utc and keep-newer-files + + * tests/Makefile.am: Added new tests + * tests/after: Rewritten + * tests/before: Rewritten + * tests/preset.in: Rewritten + * tests/delete03.sh: Accommodate for the new testsuite logic + * tests/gzip.sh: Likewise + * tests/incremen.sh: Likewise + * tests/listed01.sh: Likewise + * tests/multiv01.sh: Likewise + * tests/old.sh: Likewise + * tests/options.sh: Likewise + * tests/version.sh: Likewise + * tests/volume.sh: Likewise + + * tests/star: New directory + * tests/star/README: New file + * tests/star/gtarfail.sh: New file + * tests/star/gtarfail2.sh: New file + * tests/star/pax-big-10g.sh: New file + * tests/star/qucktest.sh: New file + * tests/star/ustar-big-2g.sh: New file + * tests/star/ustar-big-8g.sh: New file + +2004-02-26 Paul Eggert + + * doc/tar.texi (dircategory Individual utilities): Append period, + as suggested by Karl Berry. + +2004-02-24 Sergey Poznyakoff + + * src/list.c (decode_header): Call xheader_decode before + the assignment to current_stat_info.archive_file_size. + +2004-02-23 Paul Eggert + + * configure.ac: Invoke AM_ICONV, to define ICONV_CONST if needed. + +2004-02-23 Sergey Poznyakoff + + 1.13.93 released. + + * NEWS: Updated + * tests/before: Move testing of the prerequisite archive formats + to the separate function 'prereq'. Do not expect any arguments + * tests/delete03.sh: Use prereq() instead of passing arguments + to 'before'. + * tests/incremen.sh: Likewise. + * tests/listed01.sh: Likewise. + * tests/multiv01.sh: Likewise. + +2004-02-22 Sergey Poznyakoff + + Added UTF-8 support. Finished global extended header + support. + + * NEWS: Minor fix + * configure.ac: Detect libiconv + * src/utf8.c: New file. Conversions to and from utf-8. + * src/Makefile.am: Added utf8.c + * src/create.c (write_header_name) In pax format, use + "path" keyword if the file name is not ASCII + (start_header): Likewise for uname and gname. + * src/list.c: Decode encountered global headers. + * src/xheader.c: Use keywords from the global + headers. + Correctly handle UTF-8 conversions. + (xheader_list_destroy): New function. + (xheader_set_single_keyword,xheader_set_keyword_equal): Added + missing gettext markers + (decode_record): Rewritten using caller-provided handler and + data closure. + * tests/listed01.sh: Give credit to Andreas Schuldei. + +2004-02-21 Sergey Poznyakoff + + * src/create.c (dump_file0): The conditional at line + 1296 prevented incremental backups on individual files + from working, as reported by Andreas Schuldei + . + + This is due to the condition + + (0 < top_level || !incremental_option) + + Removing it makes incremental backups work for individual + files as well as for directories. On the other hand, it does + not affect other functionality, as shown by the reasoning below: + + To begin with, the two parts of this condition are mutually + superfluous, because + + 1) when top_level < 0, incremental_option == 1 + so the condition yields false + 2) when top_level >= 0, incremental_option == 0 + so the condition yields true. + + In other words, it is completely equivalent to + + (!incremental_option) + + Now, let's consider the effect of its removal. There are two cases: + + 1) when incremental_option==1 + This means incremental backup in progress. In this case dump_file + is invoked only for directories or for files marked with 'Y' by + get_directory_contents. The latter are those that did not meet the + condition in incremen.c:242, which is exactly the same condition + as this at create.c:1296. So, for these files the check + (!incremental_option) is useless, since the rest of the + conditional will yield false anyway. On the other hand, if + dump_file is invoked on a directory, the conditional will yield + false due to !S_ISDIR assertion, so these will be processed as usual. + + Thus, for this case the extra condition (!incremental_option) is + irrelevant, and its removal won't alter the behavior of tar, + *except* that it will enable incremental backups on individual + files, which is the wanted effect. + + 2) when incremental_option==0 + In this case the condition yields true and its removal does not + affect the functionality. + + * THANKS: Updated + * configure.ac: Raised patchlevel to 93 + * src/incremen.c: Minor stylistic fixes. + * tests/listed01.sh: New test. Check listed incremental + backups on individual files. + * tests/Makefile.am: Added listed01.sh + +2004-02-20 Sergey Poznyakoff + + * src/common.h (simple_finish_header,start_private_header): New + declarations + (xheader_ghdr_name): Changed declaration + * src/create.c (start_private_header): Removed static qualifier. + (write_extended): Removed superfluous last argument. Use + xheader_write() + (simple_finish_header): New function. + (finish_header): Use simple_finish_header() to break recursive + dependency between this function and write_extended(). + * src/tar.c (assert_format): Do not bail out if several + --format arguments are given. This is a common case when + TAR_OPTIONS are used. + (decode_options): New option --show-defaults displays the + compiled-in defaults. + Use POSIX format if no --format option was given and + --pax-option was specified. + Do not allow to use --pax-option unless the archive format is + set to POSIX (or reading subcommand is requested). + + * src/update.c (update_archive): Write global extended header if + constructed. + * src/xheader.c (xheader_format_name): Bugfix. + (xheader_xhdr_name): Changed the default extended header name + to '%d/PaxHeaders.%p/%f', as POSIX requires. + (xheader_ghdr_name): Removed unused argument. + (xheader_write,xheader_write_global): New function. + (xheader_decode): Modified to honor overrides whatever + the current archive format is. + + * src/delete.c (delete_archive_members): Call xheader_decode + unconditionally. + * src/list.c (decode_header): Likewise. + * src/incremen.c (sort_obstack): Fixed typo in the comment + + * doc/tar.texi: Document new default for extended + header names. + + * tests/before: Accept an optional list of allowed archive + formats. Exit with the status 77 if the current archive + format does not match any of them. + * tests/delete03.sh: Require gnu, oldgnu or posix format + * tests/incremen.sh: Require gnu or oldgnu format + * tests/multiv01.sh: Likewise + +2004-02-20 Sergey Poznyakoff + + * doc/tar.texi (Option Summary): Documented --pax-option + * src/tar.c: Likewise. + * NEWS: Likewise. + * src/create.c (to_chars): Added a comment. + * src/tar.h: Comment to GNU_FORMAT + +2004-02-18 Sergey Poznyakoff + + * README: Updated + * configure.ac: Added stpcpy + * bootstrap: Likewise + * lib/Makefile.am: Likewise + * src/common.h (xheader_xhdr_name,xheader_ghdr_name): New + functions + * src/create.c (write_extended): Call xheader_xhdr_name + instead of using hardcoded "././@PaxHeader" name. + * src/tar.c: New option --pax-option (equivalent to -o option + of pax). + * src/xheader.c: Implement pax -o option. Fixed misleading + heading comment (introduced 2003-09-02). + * src/incremen.c: Minor fixes + * m4/.cvsignore: Updated + +2004-02-17 Sergey Poznyakoff + + * src/incremen.c: Removed accumulator stuff in favor of obstack. + (get_directory_contents): Split into two functions + * src/update.c: Minor changes + * doc/tar.texi: Fixed typo + +2004-02-15 Paul Eggert + + Fix Debian bug 230872, originally reported by Jeff King in + . + + * doc/tar.texi (posix compliance): Remove. The whole section + was a misunderstanding of what POSIXLY_CORRECT is supposed to + mean. The GNU Coding Standards says that POSIXLY_CORRECT + is for disabling extensions that are incompatible with POSIX: + it is not for disabling compatible extensions. All references + to this section removed. + (posix): This format is created only if the posix format is + specified; it is no longer created if gnu format is specified + and POSIXLY_CORRECT is set. + * src/tar.c (decode_options): Ignore POSIXLY_CORRECT. + POSIX does not specify the behavior of tar, so we should + not worry about POSIXLY_CORRECT here. + +2004-01-21 Sergey Poznyakoff + + * Makefile.am: Removed m4 + * configure.ac: Require automake-1.8/autoconf-2.59. Removed + m4/Makefile. + * README-alpha: Updated + * bootstrap: Updated TP URL, improved help output. Default + to :ext:anoncvs and set CVS_RSH, unless already set. + * m4/Makefile.am: Removed + +2004-01-21 Sergey Poznyakoff + + * bootstrap: Bugfix by Marco Gerards : + Use $option instead of $1 so all options will be parsed. + +2004-01-04 Sergey Poznyakoff + + Started rewriting buffer.c ... + + * bootstrap: New option --no-po + * src/buffer.c (new_volume,check_label_pattern): Changed return type. + (time_to_start_writing): Changed data type + (file_to_switch_to): Removed. Variable never assigned to. + (open_archive) Moved option compatibility checks to tar.c + Other minor changes. + * src/common.h (maybe_backup_file): Changed return type + * src/misc.c: Likewise. + * src/create.c: Updated invocations of safer_name_suffix + * src/extract.c: Likewise + * src/delete.c: Updated assignment to write_archive_to_stdout + * src/tar.c (decode_options): More option compatibility checks + (moved from buffer.c) + * src/update.c (time_to_start_writing): Changed data type. + * tests/recurse.sh: New test case. + * tests/mksparse.c: New file. + * tests/Makefile.am: Added recurse.sh and mksparse.c + +2004-01-02 Sergey Poznyakoff + + * src/sparse.c (sparse_diff_file): Bugfix. Thanks + Martin Simmons for the patch. + * src/create.c (dump_dir0): Bugfix. Thanks Piotr Czerwinski + for the patch. + +2003-12-26 Paul Eggert + + Synchronize with Gettext 0.13.1, Automake 1.8, Autoconf 2.59, + and translation website. + + * bootstrap: Don't bother skipping codeset.m4, glibc21.m4, + intdiv0.m4, inttypes_h.m4, inttypes.m4, inttypes-pri.m4, + isc-posix.m4, and lcmessage.m4 from gnulib. This list of files is + a bit obsolete anyway, now that gettext 0.13.1 is out. Also, the + files are replaced by autoreconf. Also, there seems to be a bug + in gettext/autoconf/automake if we try to omit these files after + autoreconf has replaced them, even though the gettext manual says + they're optional. So give up and just include them for now, even + though they make 'configure' longer and slower. + + Change translation URL from + to + to + accommodate translator website revamp. + + Fail if autoreconf fails. + + * m4/.cvsignore: Add intmax.m4, longdouble.m4, printf-posix.m4, + signed.m4, size_max.m4, wchar_t.m4, wint_t.m4, xsize.m4, to + ignore files now supplied by gettext 0.13.1. + +2003-12-25 Sergey Poznyakoff + + Synchronized with the backup repository on Mirddin + +2003-12-19 Sergey Poznyakoff + + * configure.ac: Check for varios members of struct stat + that may represent file modification times with a subsecond + precision. + Check for utimes (for future use) + * src/buffer.c (short_read): Issue a warning on short reads. + * src/common.h (sys_stat_nanoseconds): New function + * src/create.c (dump_file0): Use sys_stat_nanoseconds(). + * src/list.c (read_and): Treat only two successive zero + filled blocks as an EOF indicator. Issue a warning if + a single one is encountered. + * src/system.c (sys_stat_nanoseconds): New function + * src/tar.h (tar_stat_info.atime_nsec,mtime_nsec,ctime_nsec): New + members. + * src/xheader.c (code_time,decode_time): Support for subsecond + precision. + (atime_coder,atime_decoder,ctime_coder,ctime_decoder) + (mtime_coder,mtime_decoder): Update invocations of code_time and + decode_time. + (gid_decoder,size_decoder,uid_decoder,sparse_size_decoder) + (sparse_numblocks_decoder,sparse_offset_decoder) + (sparse_numbytes_decoder): Updated + +2003-12-18 Sergey Poznyakoff + + * src/names.c (safer_name_suffix): Reverted change made + 2003-11-14. Reason: Discussion with Paul Eggert and + Jean-Louis Martineau. See also ChangeLog entry from + 1999-08-14. + * tests/delete03.sh: Likewise. + * tests/extrac04.sh: Likewise. + * tests/multiv01.sh: Likewise. + +2003-12-12 Sergey Poznyakoff + + * src/incremen.c (write_directory_file): Use sys_truncate + * src/list.c (print_header): Use archive_file_size member + when printing real file size. + * src/sparse.c (sparse_scan_file): Correctly handle files with + a hole at the end. + (sparse_dump_region,sparse_extract_region): Allow for zero size + trailing blocks + +2003-12-12 Sergey Poznyakoff + + * configure.ac: Raised version number to 1.13.92 + * src/list.c (decode_header): Discern between pax and ustar + formats + Initialize current_stat_info.archive_file_size. + + NOTE: Modifications from this date on are temporarily + stored on local CVS on mirddin. This repository will + be synchronized with Savannah as soon as the latter + becomes operational again. + +2003-12-01 Sergey Poznyakoff + + * TODO: Updated + * src/sparse.c: Initial implementation of GNU/pax sparse + file format. + * src/common.h (xheader_store): Changed prototype. + * src/create.c: Update calls to xheader_store + * src/extract.c (extract_archive): Check reported size vs. + archive file size to determine if we have to do with a + sparse file. + * src/tar.c (usage): Cleaned up the sample argument to --newer + option. + (decode_options): Allow --sparse for POSIX_FORMAT archives. + * src/xheader.c (struct xhdr_tab.coder; all coder function): Added + extra argument + Implemented GNU.sparse.* keywords. + +2003-11-30 Sergey Poznyakoff + + * configure.ac: Check for setlocale. Thanks Bruno Haible for + reporting. + +2003-11-25 Sergey Poznyakoff + + * src/create.c (write_gnu_long_link): Use oldgnu + magic with @LongLink blocks. + +2003-11-17 Sergey Poznyakoff + + * src/tar.h: Support for star sparse format. + * src/sparse.c: Likewise. + +2003-11-17 Sergey Poznyakoff + + * src/sparse.c (sparse_diff_file): New function + * src/common.h (sys_compare_uid,sys_compare_gid): New functions + (sys_compare_uid_gid): Removed. + (sys_compare_links,report_difference): Changed prototype + (sparse_diff_file): New function + * src/system.c (sys_compare_uid,sys_compare_gid): New functions + (sys_compare_uid_gid): Removed. + (sys_compare_links): Changed declaration + * src/compare.c (diff_archive): Use sparse_diff_file. + +2003-11-16 Sergey Poznyakoff + + Rewritten sparse file handling. + + * src/sparse.c: New file. Provides a universal framework + for various methods for sparse files handling. + * src/Makefile.am: Added sparse.c + * src/common.h (struct sp_array,sparsearray,sp_array_size) + (init_sparsearray,fill_in_sparse_array): Removed + (enum dump_status): New data type + (pad_archive,close_diag,open_diag,read_diag_details) + (readlink_diag,savedir_diag,seek_diag_details,stat_diag): New + functions. + (sparse_file_p,sparse_dump_file,sparse_extract_file): New + functions. + (print_header): Changed prototype declaration. + * src/tar.h (struct sp_array): Declaration from common.h + (struct tar_stat_info): New members archive_file_size, + sparse_map_avail,sparse_map. + * src/create.c: Major rewrite. + * src/extract.c: Use new sparse file interface. + * src/compare.c (diff_sparse_files): Temporary placeholder. + + * src/buffer.c: Minor changes + * src/tar.c: Likewise. + * src/list.c: Likewise. + * src/misc.c (close_diag,open_diag,read_diag_details) + (readlink_diag,savedir_diag,seek_diag_details,stat_diag): New + diagnostics functions. + * src/incremen.c: Use new diagnostics functions. + * src/names.c: Likewise. + +2003-11-14 Sergey Poznyakoff + + * configure.ac: Fixed check for setsockopt + + * src/create.c: Do not zero-terminate name field if + the name is exactly 100 characters long. + (write_ustar_long_name): Fixed cheking for unsplittable + names. + +2003-11-14 Sergey Poznyakoff + + * src/create.c (start_header): Removed debugging hook + (dump_file): Fixed handling of linkname field. + * src/names.c (safer_name_suffix): If the input + file name ends with a slash, output one should do so + as well. + * doc/tar.texi: Documented --format=ustar + +2003-11-14 Sergey Poznyakoff + + * src/tar.h (archive_format): USTAR_FORMAT: New type. + * src/create.c: Added POSIX.1-1988 support. + * src/names.c (safer_name_suffix): Skip leading ./ + * src/tar.c: New option --format=ustar forces + POSIX.1-1988 archive format. + * tests/delete03.sh: Updated. + * tests/extrac04.sh: Updated. + * tests/multiv01.sh: Updated. + +2003-11-13 Sergey Poznyakoff + + * src/list.c (read_and): Initialize current_stat_info + and extended_header at the start of the loop. + * src/names.c (all_names_found): Check if the argument + contains valid filename. Fixes coredump on `not_a_tar_file' + * src/xheader.c (atime_decoder,gid_decoder,ctime_decoder) + (mtime_decoder,size_decoder,uid_decoder): Use xstrtoumax. + Fixes `pax-big-10g' bug. + +2003-11-12 Paul Eggert + + Fix some C compatibility bugs reported by Joerg Schilling. + + * src/common.h (stripped_prefix_len): Fix misspelling + "stripped_path_len" in declaration. + * src/rmt.c (main): Use "return FOO;" rather than + "exit (FOO);"; we no longer have to worry about + pre-ANSI hosts that mishandled returned values from "main". + * src/tar.c (main): Likewise. This avoids warnings on some + compilers. + * src/system.c: Include signal.h, for 'kill'. + * src/system.h (DEV_BSIZE): Remove. + (DEFAULT_ST_BLKSIZE): New macro. + (ST_BLKSIZE): Use it, instead of DEV_BSIZE. + * src/tar.c (enum): Remove comma just before }. + +2003-11-12 Sergey Poznyakoff + + * src/list.c (decode_header): Initialize st_atime and + st_ctime. + +2003-11-11 Sergey Poznyakoff + + * configure.ac (tar_save_LIBS): Bugfix. Thanks Adrian + Bunk for reporting. + * doc/tar.texi: Fixed spelling. Thanks Martin Buchholz + for spotting. + +2003-11-04 Paul Eggert + + * src/xheader.c (xhdr_tab): Make it extern, not static, as C89 and + C99 require this. + +2003-10-26 Paul Eggert + + * src/system.c (sys_spawn_shell): Cast trailing null to (char *). + Bug reported by Christian Weisgerber. + +2003-10-19 Sergey Poznyakoff + + * AUTHORS: Updated + * NEWS: Updated + * src/tar.c (decode_options): Removed superfluous archive format + check + * doc/tar.texi: Documented new features. + +2003-10-08 Sergey Poznyakoff + + * NEWS: Updated + * THANKS: Added Wojciech Polak + * configure.ac: Added checks for missing functions. Raised + version number to indicate alpha release. + * lib/Makefile.am: Added missing headers + * lib/waitpid.c: Added missing includes. + * src/extract.c: Likewise. + * src/names.c: Removed spurious includes. + * src/xheader.c: Likewise. + * src/system.h [MSDOS]: Fixed spelling of EACCES. Added + macro overriding broken mkdir prototypes. + +2003-10-04 Sergey Poznyakoff + + * configure.ac: Check for dev_t and ino_t. + * m4/Makefile.am: Added missing files. + * src/system.c: New file. + * src/Makefile.am: Added system.c + * src/common.h: Prototypes for functions from system.c + * src/system.h (SET_BINARY_MODE, ERRNO_IS_EACCESS): New defines + * src/buffer.c: Moved system dependencies to system.c + * src/compare.c: Likewise. + * src/create.c: Likewise. + * src/delete.c: Likewise. + * src/extract.c: Likewise. + * src/rtapelib.c: Likewise. + +2003-10-04 Sergey Poznyakoff + + Implemented --occurrence option. + + * NEWS: Updated. + * src/tar.c: New option --occurrence. + * src/common.h (occurrence_option): New global + (struct name): Changed `found' member to `uintmax_t + found_count'. + (names_done): Removed + (all_names_found): Changed prototype. + (ISFOUND,WASFOUND): New macros + * src/delete.c (delete_archive_members): Honor --occurrence + option. + * src/list.c (read_and): Likewise. + * src/names.c: Count number of occurrences of each name in the + archive. + (name_match): Honor --occurrence option. + (names_done): Removed + (all_names_found,names_notfound): Rewritten. + +2003-10-02 Sergey Poznyakoff + + * src/tar.c: Removed extra precaution regarding + subcommand_option == CAT_SUBCOMMAND + * lib/Makefile.am: Updated + +2003-10-02 Sergey Poznyakoff + + * src/common.h (names_done): New function. + * src/names.c: Likewise. + * src/list.c (read_and): Use all_names_found() as `while' + condition. + * src/tar.c: New option --first-copy + * NEWS: Updated + +2003-09-24 Paul Eggert + + * src/rmt.c (main): Don't translate Copyright string; international + law says the word "Copyright" should be in English. + * src/tar.c (decode_options): Likewise. + +2003-09-22 Paul Eggert + + * doc/tar.texi (extracting untrusted archives): New section. + + * src/common.h (stripped_path_len): Renamed from cut_path_elements. + Return size_t, not pointer, so that we don't have to worry about + violating the C standard by converting char const * to char *. + All callers changed. + * src/names.c (stripped_path_len): Likewise. Strip file system + prefix, too. Count adjacent slashes as if they were one slash; + that is the POSIX standard. + +2003-09-17 Paul Eggert + + * README-alpha: Document maintainer tool assumptions a bit. GNU + 'sed' is no longer required. For GNU m4 1.4, suggest the patch in + Debian bug 211447. Fix minor misspellings/whitespace nits. + + * configure.ac (AC_AIX, AC_MINIX): Remove; subsumed by + gl_USE_SYSTEM_EXTENSIONS. + + * lib/.cvsignore: Add exit.h, time_r.c, time_r.h. + * m4/.cvsignore: Add restrict.m4, time_r.m4. + +2003-09-17 Paul Eggert + + * bootstrap: Don't use "for option; do"; + Solaris 8 /bin/sh doesn't like that. + +2003-09-17 Sergey Poznyakoff + + * README-alpha: Updated + * bootstrap: Updated + +2003-09-17 Sergey Poznyakoff + + * README-alpha: Updated + * bootstrap: Updated + * po/POTFILES.in: Added src/xheader.c + * src/common.h (cut_path_elements): Added proto. + +2003-09-05 Sergey Poznyakoff + + * src/buffer.c: Use ngettext where appropriate. + * src/compare.c: Likewise. + * src/create.c: Likewise. + * src/misc.c: Likewise. + * src/tar.c: Likewise. + * src/update.c: Likewise. + +2003-09-04 Sergey Poznyakoff + + * .cvsignore: Added *.shar.gz + * NEWS: Updated + * TODO: Updated + * src/common.h (strip_path_elements): New variable. + * src/extract.c (extract_archive): Implemented --strip-path + * src/names.c (cut_path_elements): New function. + * src/tar.c: New option --strip-path=NUM. + (decode_options) Assign boolean values to bool variables. + +2003-09-04 Sergey Poznyakoff + + * src/delete.c: Fixed deletion from the POSIX archives. + * src/list.c (read_header): Minor change. + * src/tar.c (main): Do not check for volume_label_option + if subcommand_option is not CREATE_SUBCOMMAND. + * src/xheader.c (xheader_decode): Store the header as + well (for eventual delete). + + * tests/incremen.sh: Explicitly request GNU format. This will + disappear when GNU extended header keywords are working. + * tests/multiv01.sh: Likewise + * tests/volume.sh: Likewise + +2003-09-04 Sergey Poznyakoff + + * src/create.c: Support for "linkpath" extended keyword. + * src/xheader.c (decode_record): Reversed the return + condition. + +2003-09-03 Sergey Poznyakoff + + * configure.ac: Allow to redefine the default output format. + * src/tar.c: Use DEFAULT_ARCHIVE_FORMAT macro + (archive_format_string): New function. + (usage): Updated help output. + * README: Updated. + * NEWS: Updated. + * TODO: Updated. + +2003-09-02 Paul Eggert + + * src/common.h (destroy_stat, xheader_decode, xheader_store, + xheader_read, xheader_finish, xheader_destroy): Add decls; + C99 requires this. + + * src/create.c (write_extended): Remove unused local 'bufsize'. + + * src/delete.c (delete_archive_members): Handle case of + HEADER_SUCCESS_EXTENDED followed by HEADER_FAILURE. + * src/list.c (read_and): Abort if HEADER_SUCCESS_EXTENDED + occurs, as it's not possible. + * src/update.c (update_archive): Likewise. + + Use "const" when possible in new code. + * src/tar.c (struct fmttab.name): Now char const *. All uses changed. + (fmttab): Now const. All uses changed. + * src/xheader.c (struct xhdr_tab.keyword): Now pointer to const. + (struct xhdr_tab.coder, struct xhdr_tab.decoder, locate_handler, + decode_record, xheader_store, xheader_print, code_string, code_time, + code_num, dummy_coder, dummy_decoder, atime_coder, atime_decoder, + gid_coder, gid_decoder, gname_coder, gname_decoder, linkpath_coder, + linkpath_decoder, ctime_coder, ctime_decoder, mtime_coder, + mtime_decoder, path_coder, path_decoder, size_coder, size_decoder, + uid_coder, uid_decoder, uname_coder, uname_decoder): + Use pointers to const when possible. + (xhdr_tab): Now const. + + * src/tar.c (fmttab): Avoid GCC warning by not eliding initializers. + (set_archive_format): Report an error if no format name matches, + instead of returning an undefined value. + + * src/xheader.c (struct xhdr_tab.decoder, dummy_decoder, + atime_decoder, gid_decoder, gname_decoder, linkpath_decoder, + ctime_decoder, mtime_decoder, path_decoder, size_decoder, + uid_decoder, uname_decoder): Remove unused keyword arg. + All uses changed. + + * src/tar.c (set_archive_format): Now static. + * src/xheader.c (xhdr_tab, format_uintmax): Now static. + + * src/xheader.c (dummy_coder, dummy_decoder, atime_coder, + atime_decoder, gid_coder, gid_decoder, gname_coder, gname_decoder, + linkpath_coder, linkpath_decoder, mtime_coder, mtime_decoder, + ctime_coder, ctime_decoder, path_coder, path_decoder, size_coder, + size_decoder, uid_coder, uid_decoder, uname_coder, uname_decoder): + Remove forward decls; no longer needed. + (xhdr_tab): Move to end, so that the forward decls aren't needed. + Add a forward declaration. + + Use 'bool' in new code, when appropriate. + * src/xheader.c (decode_record): Return bool, not int. + * src/common.h (read_header): Since it accepts bool, change + all callers to use false and true rather than 0 and 1. + + * src/xheader.c (decode_record): Fix misspelling in diagnostic + "extended headed" -> "extended header". + + GNU coding style fixes. + * src/xheader.c (decode_record, xheader_decode): + Do not use decls like "char *p, *q;". + + Minor style fixes. + (xheader_store): Avoid parentheses around object operand of sizeof. + +2003-09-03 Sergey Poznyakoff + + * src/create.c (start_header): Store long file names + in "path" keyword of an extended header if in POSIX + mode. + (finish_header): print header before calling write_extended(). + * src/list.c (list_archive): Always decode the header. This + is necessary so the extended header is processed and the correct + filename is printed no matter what the state of verbose_option. + * src/xheader.c (xhdr_tab): Reserved GNU keywords (commented out + for the time being). + +2003-09-01 Paul Eggert + + Update from gnulib, and correct fnmatch to fnmatch-gnu. + * bootstrap (gnulib_modules): Change fnmatch to fnmatch-gnu. + Sort. + * configure.ac (gl_USE_SYSTEM_EXTENSIONS): Use this instead + of AC_GNU_SOURCE. + * lib/.cvsignore: Add alloca.h, stdbool.h. Sort. Append newline. + * lib/Makefile.am (lib_OBJECTS): New macro, for convenience when + copying rules from gnulib module descriptions. + (BUILT_SOURCES, EXTRA_DIST, all-local, alloca.h): + Update from gnulib modules alloca, fnmatch, getline, stdbool. + * m4/.cvsignore: Add utimes-null.m4. Sort. + +2003-09-01 Sergey Poznyakoff + + Added initial support for creating POSIX headers. + + * src/common.h (MAXOCTAL11,MAXOCTAL7): New defines + (string_to_chars): New functions + (struct xheader): Changed structure + (gid_to_gname,gname_to_gid,uid_to_uname,uname_to_uid): Changed + prototypes. + * src/create.c (string_to_chars): New function. + (write_extended): New function + (start_header): Create extended POSIX headers if necessary. + (finish_header): Likewise. + * src/list.c (print_header): Take user/group from + current_stat_info. + * src/names.c (gid_to_gname,gname_to_gid) + (uid_to_uname,uname_to_uid): Changed prototypes. + * src/tar.c: New option --format. + * src/tar.h (OLDGNU_COMPATIBILITY): Removed + (struct extra_header): Removed unused structure. + (union block.extra_header): Removed unused member. + * src/xheader.c: Implemented coder functions. + * bootstrap: Added obstack. + * lib/.cvsignore: Likewise. + * configure.ac: Added 'gl_OBSTACK' + * m4/Makefile.am: Added new files. + * m4/.cvsignore: Likewise. + * TODO: Minor formatting change + +2003-08-31 Sergey Poznyakoff + + Added initial support for POSIX extended and STAR headers + (only for listing/extracting). + + * src/xheader.c: New file. + * src/Makefile.am: Added xheader.c + * src/tar.h (struct star_header): New datatype + (XHDTYPE,XGLTYPE): New defines + (enum archive_format:STAR_FORMAT): New member + (struct tar_stat_info): New datatype. + (union block.star_header): New member. + * src/common.h (orig_file_name,current_file_name) + (current_trailing_slash,current_link_name): Removed variables. + (current_stat_info): New variable + (current_stat): Removed + (extended_header): New variable + (decode_header): Changed prototype. + * src/list.c (decode_header): Added initial support for POSIX extended + and STAR headers. + (skip_member): Check oldgnu_header only if current_format is set + to OLDGNU_FORMAT. + * src/buffer.c: Use current_stat_info + * src/compare.c: Likewise. + * src/create.c: Likewise. + * src/delete.c: Likewise. + * src/incremen.c: Likewise. + * src/mangle.c: Likewise. + * src/update.c: Likewise. + * src/extract.c: Likewise. + (make_directories): Improved check for the existence of the directory + * src/tar.c (destroy_stat): New function. + +2003-08-29 Paul Eggert + + * NEWS, bootstrap: Drop en_GB locale; it was more trouble than it + was worth (e.g., different users in en_GB disagree about -ize + versus -ise). + * po/en_GB.po: Remove. + +2003-07-28 Sergey Poznyakoff + + * TODO: Updated + * NEWS: Updated + * src/tar.c: Removed support for the obsolete command line + options. + * doc/tar.texi: Removed references to the obsolete command + line options. + +2003-07-27 Sergey Poznyakoff + + * TODO: Updated + * NEWS: Updated + * doc/tar.texi: Updated + * src/common.h (check_links_option): New variable + (orig_file_name): New variable + (check_links): New proto. + * src/create.c (struct link.nlink): New member + (link_table): Static for the module. + (dump_file): Update `link' member when adding new links + to the link_table. + (check_links): New function. + * src/list.c (print_header): Use orig_file_name. + * src/tar.c: New option --check-links. Changed semantics of + -o to comply to UNIX98 when extracting and to its previous + semantics otherwise. + (main): Call check_links if --check-links. was given. + +2003-07-25 Sergey Poznyakoff + + * src/list.c (print_header): Revised + * NEWS: Started the entry for 1.13.26 + * doc/Makefile.am (tar.dvi): Fixed TEXINPUTS value. + +2003-07-24 Sergey Poznyakoff + + * .cvsignore: Added to the repository. + * doc/.cvsignore: Likewise. + * lib/.cvsignore: Likewise. + * m4/.cvsignore: Likewise. + * po/.cvsignore: Likewise. + * scripts/.cvsignore: Likewise. + * src/.cvsignore: Likewise. + * tests/.cvsignore: Likewise. + + * lib/Makefile.am: Added exitfail.[hc] + * src/misc.c (chdir_do): Fixed call to restore_cwd + * src/buffer.c (flush_read): Fixed behavior on short + reads right after opening the new archive (multiv01.sh test). + (new_volume): Special handling for "-". + * src/list.c (print_header): Print trailing slash if + current_trailing_slash was set (extrac03.sh,extrac04.sh tests). + * tests/multiv01.sh: Minor changes. + * m4/Makefile.am: Added missing files. + +2003-07-05 Paul Eggert + + Finish the checkin begin yesterday. + + * NEWS: Document the user-visible changes installed in the last + two days. + + * TODO: New file (actually, resurrected; but with new contents). + + * src/list.c (read_and): Give full type for procedure arg. + (read_header): Strip trailing slashes, setting current_trailing_slash. + (tartime): Avoid int overflow when printing year (!). + (print_header): New arg specifying block ordinal. All uses changed. + Print link as 'h' type. Give labels for long links and names. + + * src/misc.c (contains_dot_dot): Moved to names.c + (must_be_dot_or_slash): New function. + (safer_rmdir): Use it. + (remove_any_file): Now takes enum as option, not boolean. + Check for (Linux) EISDIR as well as (POSIX) EPERM when attempting + to unlink a directory. + (deref_stat): Accept bool, not int. + + * src/names.c (namelist_match): Allow partial matches only if + recursive. + (hash_string_hasher): Renamed from hash_avoided_name. + (hash_string_compare): Renamed from compare_avoided_anames. + (hash_string_insert, hash_string_lookup): New functions. + (add_avoided_name, is_avoided_name): Use them. + (safer_name_suffix): New function. + (contains_dot_dot): Moved here from misc.c. Now returns bool, not int. + + * src/rmt.c: Don't include print-copyr.h. + (prepare_input_buffer): New arg FD. + Do not read more than INT_MAX bytes at once, + since it breaks on some brain damaged Tru64 hosts. + Divide size by two + when retrying instead of subtracting 1024; for speed. + (main): Use gettext to translate (C), not print_copyright. + + * src/system.h: Include and unconditionally, + now that gnulib handles this. + Include and unconditionally, now that we assume + C89 or better. + Assume that offsetof is defined in stddef.h. + Do not include . + (realloc, lseek): Do not declare. + (HAVE_DECL_VALLOC): Renamed from HAVE_VALLOC. + (CHAR_BIT, CHAR_MAX, UCHAR_MAX, LONG_MAX): Remove + declarations, since we now assume C89 or better. + (PARAMS): Remove, as we now assume C89. All uses changed. + (bindtextdomain, textdomain): Include to define. + Include . + (valloc): Define if not defined, and if valloc is not declared. + (xstrdup): Remove decl. + + * src/tar.c: Do not include . + Include . + (get_date): Remove decl. + (ATIME_PRESERVE_OPTION, CHECKPOINT_OPTION, FORCE_LOCAL_OPTION, + IGNORE_FAILED_READ_OPTION, INDEX_FILE_OPTION, NO_OVERWRITE_DIR_OPTION, + NUMERIC_OWNER_OPTION, RECURSIVE_UNLINK_OPTION, REMOVE_FILES_OPTION, + SHOW_OMITTED_DIRS_OPTION, TOTALS_OPTION): New constants. + (long_options, decode_options): Use them. + (OVERWRITE_DIR_OPTION): Remove. + (long_options): New options --index-file, --no-overwrite-dir. + Remove --overwrite-dir option. + (usage): Use PACKAGE_BUGREPORT. + (decode_options): Terminate new argv properly. + Use PACKAGE_NAME, PACKAGE_VERSION. + If verbose, report how we grokked any textual date option. + (main): Add support for index-file. + + * tests/Makefile.am: Convert to UTF-8. + (AUTOMAKE_OPTIONS): Remove. + (TESTS): Add delete04.sh, multiv01.sh, options.sh. + (INCLUDES): Remove ../intl. + (LDADD): Don't link libtar.a twice. + + * tests/genfile.c: Convert to UTF-8. + Don't include . + (DEFAULT_PATTERN): Renamed from DEFAULT. + (ZEROS_PATTERN): Renamed from ZEROS. + (main): Use gettext to translate (C), not print_copyright. + +2003-07-04 Paul Eggert + + Revamp to meet current standards of autoconf, automake, + gettext, and gnulib, and incorporate new translations. + + * config/config.guess, config/config.sub, config/depcomp, + config/install-sh, config/mdate-sh, config/missing, + config/mkinstalldirs, config/texinfo.texi: + Moved here from parent directory, or from doc. + * config.hin: Renamed from config.h.in. + * config/config.rpath: New file. + + * intl: Remove this subdirectory. + + * lib/fnmatch_.h: Renamed from lib/fnmatch.hin. + + * lib/getstr.c, lib/getstr.h, lib/msleep.c, lib/print-copyr.c, + lib/print-copyr.h, lib/readutmp.c, lib/rename.c, lib/stpcpy.c, + lib/strstr.c, lib/strtoimax.c, lib/strtoll.c, lib/strtoull.c, + lib/strtoumax.c, lib/unicodeio.c, lib/unicodeio.h, + lib/xstrtoimax.c, m4/c-bs-a.m4, m4/ccstdc.m4, m4/check-decl.m4, + m4/decl.m4, m4/jm-mktime.m4, m4/prereq.m4, m4/xstrtoimax.m4, + stamp-h.in: Remove. + + * lib/alloca_.h, lib/fnmatch_loop.c, lib/gettext.h, lib/pathmax.h, + lib/safe-write.c, lib/safe-write.h, lib/stdbool_.h, lib/strcase.h, + lib/stripslash.c, lib/unlocked-io.h, lib/xgetcwd.h, m4/alloca.m4, + m4/backupfile.m4, m4/bison.m4, m4/chown.m4, m4/dirname.m4, + m4/dos.m4, m4/exclude.m4, m4/fileblocks.m4, m4/ftruncate.m4, + m4/getdate.m4, m4/getopt.m4, m4/hash.m4, m4/human.m4, + m4/intdiv0.m4, m4/intmax_t.m4, m4/inttypes-pri.m4, + m4/inttypes_h.m4, m4/isc-posix.m4, m4/lchown.m4, m4/lib-ld.m4, + m4/lib-link.m4, m4/lib-prefix.m4, m4/memset.m4, m4/mktime.m4, + m4/modechange.m4, m4/nls.m4, m4/onceonly.m4, m4/pathmax.m4, + m4/po.m4, m4/quote.m4, m4/quotearg.m4, m4/rmdir.m4, + m4/safe-read.m4, m4/safe-write.m4, m4/save-cwd.m4, m4/savedir.m4, + m4/ssize_t.m4, m4/stdbool.m4, m4/stdint_h.m4, m4/strcase.m4, + m4/strtoimax.m4, m4/strtol.m4, m4/strtoll.m4, m4/strtoul.m4, + m4/strtoull.m4, m4/strtoumax.m4, m4/tm_gmtoff.m4, m4/uintmax_t.m4, + m4/unlocked-io.m4, m4/xalloc.m4, m4/xgetcwd.m4, m4/xstrtol.m4, + po/LINGUAS, po/Makevars, po/Rules-quot, po/boldquot.sed, + po/en@boldquot.header, po/en@quot.header, po/en_GB.po, + po/insert-header.sin, po/remove-potcdate.sin, po/stamp-po: New files. + + * ABOUT-NLS, INSTALL, lib/addext.c, lib/alloca.c, lib/argmatch.c, + lib/argmatch.h, lib/backupfile.c, lib/backupfile.h, lib/dirname.c, + lib/dirname.h, lib/error.c, lib/exclude.c, lib/exclude.h, + lib/fnmatch.h, lib/full-write.c, lib/full-write.h, lib/getdate.h, + lib/getdate.y, lib/getline.c, lib/getline.h, lib/getopt.c, + lib/getopt.h, lib/getopt1.c, lib/hash.c, lib/hash.h, lib/human.c, + lib/human.h, lib/lchown.c, lib/malloc.c, lib/mktime.c, + lib/modechange.c, lib/modechange.h, lib/quote.c, lib/quote.h, + lib/quotearg.c, lib/quotearg.h, lib/realloc.c, lib/safe-read.c, + lib/safe-read.h, lib/save-cwd.c, lib/save-cwd.h, lib/savedir.c, + lib/savedir.h, lib/strcasecmp.c, lib/utime.c, lib/xalloc.h, + lib/xgetcwd.c, lib/xmalloc.c, lib/xstrdup.c, lib/xstrtol.c, + lib/xstrtol.h, lib/xstrtoumax.c, m4/codeset.m4, m4/d-ino.m4, + m4/error.m4, m4/fnmatch.m4, m4/getcwd.m4, m4/getline.m4, m4/gettext.m4, + m4/glibc21.m4, m4/iconv.m4, m4/inttypes.m4, m4/lcmessage.m4, + m4/longlong.m4, m4/malloc.m4, m4/mbrtowc.m4, m4/mbstate_t.m4, + m4/progtest.m4, m4/realloc.m4, m4/strerror_r.m4, m4/ulonglong.m4, + m4/utimbuf.m4, m4/utime.m4, m4/utimes.m4, m4/xstrtoumax.m4, + po/Makefile.in.in: + Upgrade to latest version from external source. The file "bootstrap" + now grabs these automatically, so we needn't keep track of them + in this change long any longer. + + * Makefile.am (AUTOMAKE_OPTIONS): Remove. Now done by configure.ac. + (SUBDIRS): Remove intl. + * PORTS: Update for star, Macintosh. + * README, README-alpha: Suggest Autoconf 2.57, Automake 1.7.5, + Bison 1.875, gettext 0.12.1. + * THANKS: Add Bernhard Rosenkraenzer, Solar Designer. + * configure.ac (AC_INIT, AM_INIT_AUTOMAKE): Convert to modern form. + (AC_CONFIG_AUX_DIR): New. + (AC_CONFIG_HEADERS): Rename config.h.in to config.hin, to be more + like coreutils. + (AC_PREREQ): Bump from 2.52 to 2.57. + (AC_GNU_SOURCE): New. + (AC_PROG_GCC_TRADITIONAL, AM_C_PROTOTYPES, AC_C_CONST): Remove; + we no longer support K&R C. + (YACC): Remove. + (AC_CHECK_HEADERS): Remove limits.h, poll.h, stdbool.h, stropts.h, + sys/ioccom.h, sys/param.h, sys/time.h, sys/timeb.h, wchar.h, wctype.h. + (AC_MBSTATE_T): Remove. + (HAVE_UTIME_H, HAVE_DECL_FREE, HAVE_DECL_GETGRGID, HAVE_DECL_GETPWUID, + HAVE_DECL_GETENV, HAVE_DECL_MALLOC, HAVE_DECL_STRTOUL, + HAVE_DECL_STRTOULL, HAVE_MKNOD): Remove our special code. + (AM_STDBOOL_H): Add. + (AC_HEADER_TIME, AC_STRUCT_TIMEZONE, + jm_CHECK_TYPE_STRUCT_DIRENT_D_INO): Remove. + (AC_CHECK_TYPE): Remove ssize_t. + (gt_TYPE_SSIZE_T): Add. + (jm_AC_PREREQ_XSTRTOUMAX, jm_PREREQ_ADDEXT, jm_PREREQ_ERROR, + jm_PREREQ_HUMAN, jm_PREREQ_QUOTEARG, jm_PREREQ_XGETCWD, + AC_FUNC_ALLOCA, AC_FUNC_CLOSEDIR_VOID, AC_FUNC_STRERROR_R, + AC_FUNC_FNMATCH, AC_FUNC_VPRINTF, AM_FUNC_GETLINE, jm_FUNC_MALLOC, + jm_FUNC_MKTIME, jm_FUNC_REALLOC): + Remove. Switch to gnulib macros like gl_BACKUPFILE instead. + (tar_LDADD): Rename to LIB_CLOCK_GETTIME. All uses changed. + (rmt_LDADD): Rename to LIB_SETSOCKOPT. All uses changed. + (AC_CHECK_FUNCS): Remove fchdir, ftime, getcwd, isascii, nap, + napms, poll, select, strstr, usleep. + (AC_REPLACE_FUNCS): Remove ftruncate, lchown, memset, rename, + rmdir, strcasecmp, strncasecmp, strtol, strtoul. + (AM_GNU_GETTEXT): Use external and need-ngettext options. + (AM_GNU_GETTEXT_VERSION): New. + (AC_OUTPUT): Remove intl/Makefile. + + * doc/Makefile.am (AUTOMAKE_OPTIONS): Remove. + ($(srcdir)/tar.info, tar.dvi): Remove obsolete warnings. + * doc/fdl.texi: Update to current GNU version. + * doc/gettext.texi: Update to current coreutils version, + plus a copyright notice. + * doc/tar.texi: Switch to new method for doing copyright notices. + Use @acronym instead of @sc where appropriate. + Remove empty examples. Give a few more examples. + + * lib/Makefile.am (AUTOMAKE_OPTIONS): Remove. + (EXTRA_DIST, libtar_a_SOURCES): Switch to gnulib, so that they + are built up in pieces with +=. + (noinst_HEADERS, INCLUDES): Remove. + (BUILT_SOURCES, MAINTAINERCLEANFILES, MOSTLYCLEANFILES): New. + (libtar_a_LIBADD): Use $ rather than @. + (all-local, alloca.h, fnmatch.h, stdbool.h): New rules, from gnulib. + + * m4/Makefile.am (EXTRA_DIST): Add alloca.m4, backupfile.m4, + bison.m4, chown.m4, dirname.m4, dos.m4, exclude.m4, fileblocks.m4, + ftruncate.m4, getdate.m4, getopt.m4, hash.m4, human.m4, + intdiv0.m4, intmax_t.m4, inttypes_h.m4, inttypes-pri.m4, + isc-posix.m4, lcown.m4, lib-ld.m4, lib-link.m4, lib-prefix.m4, + memset.m4, mktime.m4, modechange.m4, nls.m4, onceonly.m4, + pathmax.m4, po.m4, quotearg.m4, quote.m4, rmdir.m4, safe-read.m4, + safe-write.m4, save-cwd.m4, savedir.m4, ssize_t.m4, stdbool.m4, + stdint_h.m4, strcase.m4, strtoimax.m4, strtoll.m4, strtol.m4, + strtoull.m4, strtoul.m4, strtoumax.m4, tm_gmtoff.m4, uintmax_t.m4, + unlocked-io.m4, xalloc.m4, xgetcwd.m4, xstrtol.m4. + Remove c-bs-a.m4, ccstdc.m4, check-decl.m4, decl.m4, jm-mktime.m4, + prereq.m4, xstrtoimax.m4. + + * po/POTFILES.in: Remove tests/genfile.c; it doesn't need to + be translated, since it's not a user-visible tool. + + * scripts/Makefile.am (AUTOMAKE_OPTIONS): Remove. + + * src/Makefile.am (AUTOMAKE_OPTIONS): Remove. + (INCLUDES): Remove ../intl. Put top-srcdir before ., for + consistency with coreutils. + (LDADD): Link LIBINTL after libtar.a, since + it's now external and should stand by itself. + + * src/buffer.c (print_total_written): Adjust to new human.h + interface. + (child_open_for_compress): Do not increase size to BLOCKSIZE. + (open_archive): Open index file name. + Strip trailing slahes from file names. + (flush_write): Set size to 0 if not saving names. + (flush_write, flush_read): Use safer_name_suffix rather than + inline code. + + * src/common.h: Include . + (absolute_names_option, atime_preserve_option, backup_option, + block_number_option, checkpoint_option, dereference_option, + force_local_option, ignore_failed_read_option, ignore_zeros_option, + incremental_option, interactive_option, multi_volume_option, + numeric_owner_option, one_file_system_option, recursive_unlink_option, + read_full_records_option, remove_files_option, same_order_option, + show_omitted_dirs_option, sparse_option, starting_file_option, + to_stdout_option, totals_option, touch_option, verify_option, + dev_null_output, now_verifying, we_are_root): Now bool, not int. + (current_trailing_slash, index_file_name, recent_long_name_blocks, + recent_long_link_blocks): New vars. + (NO_OVERWRITE_DIR_OLD_FILES): New constant. + (OVERWRITE_OLD_DIRS): Remove. + (enum remove_option): New enum. + (remove_any_file): Use it as option arg, not int. + (is_avoided_name, contains_dot_dot): Return bool, not int. + (safer_name_suffix): New decl. + + * src/compare.c (now_verifying): Now bool, not int. + (fill_in_sparse_array): Move to extract.c. Now returns bool; + all callers changed to test for failure. + (diff_sparse_files): Take size from current_stat, not from param. + (diff_archive): Do not count trailing slashes in archives. + (verify_volume): Test for header failure after loop, not before. + + * src/create.c (relativize): Remove; replaced by safer_name_suffix. + All callers changed. + (start_header): Clear devmajor and devminor fields, too. + (finish_header): New arg block_ordinal. + (init_sparsearray): Now extern. Set sp_array_size to + SPARSES_IN_OLDGNU_HEADER if it is zero. + (dump_file): Keep link table as a hash. + Do not count "file changed as we read it" as a failure. + + * src/delete.c (recent_long_name_blocks, recent_long_link_blocks): + Move extern decl to common.h. + + * src/extract.c (we_are_root): Now bool, not int. + (check_time): Warn about implausibly old time stamps. + (set_stat): Use utimbuf, not stat_info. + (prepare_to_extract): New arg DIRECTORY. + (fill_in_sparse_array): Moved here from compare.c. + (extract_sparse_file): Now returns off_t, giving size left. + Truncate file at end. + (extract_archive): Use safer_name_suffix rather than rolling our own. + Use fill_in_sparse_array rather than rolling our own. + Strip trailing slashes more effectively. + Check for unsafe names. + + * src/incremen.c (struct directory): nfs and found are now of type + bool, not int. + (gnu_restore): Now takes directory name as argument, not offset + of directory name in a global. All uses changed. + (CURRENT_FILE_NAME): Remove. + + New tests. + * tests/delete04.sh, tests/multiv01.sh, tests/options.sh: New + files. + +2002-09-30 Paul Eggert + + * src/rmt.c (prepare_input_buffer): Renamed form + prepare_record_buffer. All uses changed. Do not assume that + size_t is the same width as int. + +2002-03-29 Paul Eggert + + * src/incremen.c (get_directory_contents): + If ignore_failed_read_option, only warn about + get_directory_contents failures. Fix suggested by + Mark Costlow. + +2002-01-31 Mark W. Eichin + + * src/buffer.c (child_open_for_compress): Don't try to read + past the end of the buffer. + +2001-10-11 Jim Meyering + + * argmatch.c (argmatch_invalid): Use quotearg_n_style (0, ... + and quote_n (1, ... to avoid clobbering a buffer. + +2001-09-26 Paul Eggert + + * NEWS, configure.ac (AM_INIT_AUTOMAKE): Version 1.13.25. + + * src/buffer.c (flush_read): Don't diagnose partial blocks before + end of file; just ignore them silently. + + * src/list.c (read_header): Don't keep around extended name + and link info indefinitely; keep it only for the next file. + This fixes a bug introduced in 1.13.24, and removes the need + for some static variables. Set recent_long_name and + recent_long_link to zero if there were no long links; this + avoids a violation of ANSI C rules for pointers in delete.c. + * THANKS: Add Christian Laubscher. + +2001-09-26 Jim Meyering + + * doc/tar.texi (Remote Tape Server): is know -> is known + +2001-09-25 Paul Eggert + + * lib/unicodeio.c (EILSEQ): Include first, since + may define EILSEQ (e.g. libiconv). Define a + replacement EILSEQ to be ENOENT, not EINVAL, since callers may + want to distinguish EINVAL and EILSEQ. + +2001-09-24 Christophe Kalt + + * src/extract.c (maybe_recoverable): + Treat OVERWRITE_OLD_DIRS like DEFAULT_OLD_FILES. + +2001-09-22 Paul Eggert + + * NEWS, configure.ac (AM_INIT_AUTOMAKE): Version 1.13.24. + + * ABOUT-NLS, intl/*: Update to gettext-0.10.40, replacing LGPL + with GPL. + + * INSTALL, mkinstalldirs: Update to autoconf 2.52 version. + * PORTS: Add copyright notice, 'star' reference. + * README-alpha: Add copyright notice, autoconf 2.52 patch. + * THANKS: Add Christophe Kalt. + * config.sub: Upgrade to 2001-09-14 version. + + * configure.ac (ALL_LINGUAS): Add ko. + * po/ko.po: Resurrected file. + + * doc/convtexi.pl: Add coding advice for Emacs. + + * doc/getdate.texi: Add copyright notice. + + * doc/mdate-sh: Upgrade to automake 1.5 version. + + * doc/tar.texi (extracting files): Mention --to-stdout. + (Option Summary, Dealing with Old Files): New option --overwrite-dir. + (Overwrite Old Files): Likewise. + + * lib/Makefile.am (noinst_HEADERS): + Remove copysym.h. Add print-copyr.h, unicodeio.h. + (libtar_a_SOURCES): Remove copysym.c, Add print-copyr.c, unicodeio.c. + + * lib/copysym.c, lib/copysym.h: Remove. + * lib/print-copyr.c, lib/print-copyr.h, lib/unicodeio.c, + lib/unicodeio.h: New files. + + * lib/error.c, lib/getopt.c, lib/getopt.h, lib/getopt1.c, + lib/mktime.c, lib/strtoll.c: Switch from LGPL to GPL. + + * lib/quotearg.c (HAVE_MBSINIT): Undef if !HAVE_MBRTOWC. + (mbsinit): Define to 1 if !defined mbsinit && !HAVE_MBSINIT. + + * m4/Makefile.am (EXTRA_DIST): Remove isc-posix.m4. + * m4/isc-posix.m4: Remove. + + * m4/prereq.m4 (jm_PREREQ_QUOTEARG): Check for mbsinit. + + * po/POTFILES.in: Add copyright notice. + + * src/Makefile.am (LDADD): Like libtar.a before @INTLLIBS@ as + well as after. + * tests/Makefile.am (LDADD): Likewise. + + * src/buffer.c (write_archive_buffer, close_archive): + If an archive is a socket, treat it like a FIFO. + (records_read, records_written): New vars. + (write_archive_to_stdout): Now bool, not int. + (open_archive, flush_write, flush_read): Keep records_read and + records_written up to date. + + * src/common.h (enum old_files): New value OVERWRITE_OLD_DIRS. + (write_archive_to_stdout): Now bool, not int. + (enum read_header): New value HEADER_SUCCESS_EXTENDED. + (read_header): Now takes bool arg. Existing callers modified + to pass 0, unless otherwise specified. + + * src/delete.c (records_read): Remove; now a global. + (acting_as_filter): Now bool, not int. + (recent_long_name, recent_long_link, recent_long_name_blocks, + recent_long_link_blocks, records_read, records_written): New decls. + (records_skipped): New var. + (move_archive): Don't divide by zero if arg is 0. + Use the above vars to compute how far to move. + (write_recent_blocks): New function. + (delete_archive_member): Pass 1 to read_header, so that it doesn't + read more than 1 block. Handle resulting HEADER_SUCCESS_EXTENDED code. + Keep track of how many records have been skipped. + Let the buffer code count records. + When copying a header, copy any extended headers that came before it. + + * src/extract.c (extract_archive): When marking a directory to be + updated after symlinks, stat all directories after it in the + delayed-set-stat list too, since they will be checked after + symlinks. Add support for --overwrite-dir. + + * src/list.c (recent_long_name, recent_long_link, + recent_long_name_blocks, recent_long_link_blocks): New vars. + (read_and): Pass 0 to read_header. + (read_header): New arg RAW_EXTENDED_HEADERS. Store away extended + headers into new vars. Null-terminate incoming symbolic links. + + * src/rmt.c: Include print-copyr.h, not copysym.h. + (main): Use print_copyright, not copyright_symbol. + * src/tar.c (decode_options): Likewise. + (OVERWRITE_DIR_OPTION): New constant. + (long_options, usage, decode_options): Add --overwrite-dir. + + * src/tar.h: Put copyright notice into documentation. + + * tests/Makefile.am (TESTS): Add delete03.sh. + * tests/delete03.sh: New file. + + * tests/genfile.c: Include print-copyr.h, not copysym.h. + (main): Use print_copyright, not copyright_symbol. + Include . + (pattern_strings): Remove. + (pattern_args, pattern_types): New constants. + (main): Use XARGMATCH, not argmatch. + +2001-09-20 Jim Meyering + + * lib/xstrtol.c (strtoimax): Guard declaration with + `#if !HAVE_DECL_STRTOIMAX', rather than just `#ifndef strtoimax'. + The latter fails because some systems (at least rs6000-ibm-aix4.3.3.0) + have their own, conflicting declaration of strtoimax in sys/inttypes.h. + (strtoumax): Likewise, for completeness (it wasn't necessary). + * m4/xstrtoimax.m4 (jm_AC_PREREQ_XSTRTOIMAX): + Check for declaration of strtoimax. + * m4/xstrtoumax.m4 (jm_AC_PREREQ_XSTRTOUMAX): + Check for declaration of strtoumax. + +2001-09-16 Paul Eggert + + * fnmatch.m4 (jm_FUNC_FNMATCH): Fix typo in previous patch: yes -> no. + +2001-09-14 Paul Eggert + + * NEWS, configure.ac (AC_INIT_AUTOMAKE): Version 1.13.23. + + * README-alpha: Describe automake patch. + + * configure.ac (LIBOBJS): + Remove automake 1.4 workaround, as we're using 1.5 now. + (USE_INCLUDED_LIBINTL): New AC_DEFINE. + + * lib/copysym.c: Include stddef.h, for size_t. + Include langinfo.h if needed. + Use locale_charset only if USE_INCLUDED_LIBINTL; + if not, use nl_langinfo (CODESET) if available. + +2001-09-13 Paul Eggert + + * config.guess, config.sub: Sync with canonical versions. + + * configure.ac (jm_PREREQ_XGETCWD): Add. + + * lib/Makefile.am (noinst_HEADERS): Add copysym.h. + (libtar_a_SOURCES): Add copysym.c. + * copysym.c, copysym.h: New files. + + * lib/error.c: Sync with fileutils version. + + * m4/Makefile.am (EXTRA_DIST): Add getcwd.m4; remove uintmax_t.m4. + * m4/getcwd.m4: New file. + * m4/uintmax_t.m4: Remove. + + * m4/gettext.m4 (AM_WITH_NLS): + Fix bug with calculating version of Bison 1.29. + Reported by Karl Berry. + + * src/Makefile.am (datadir): Remove. + + * src/rmt.c: Include copysym.h. + (main): Use copyright_symbol to translate copyright notice, + instead of gettext. + * src/tar.c: Likewise. + * tests/genfile.c: Likewise. + + * src/system.h (MB_LEN_MAX): New symbol. + +2001-09-11 Paul Eggert + + * src/extract.c (struct delayed_set_stat): New member + 'after_symlinks'. + (delay_set_stat): Initialize it to 0. + (set_mode): New arg current_stat_info. Use it (if nonnull) to avoid + taking an extra stat ourselves. All callers changed. + (set_stat): Likewise. + (apply_nonancestor_delayed_set_stat): New arg 'after_symlinks'. + If false, stop when encountering a struct whose 'after_symlinks' + member is true. Otherwise, go through all structures but check + them more carefully. All callers changed. + (extract_archive): When extracting a deferred symlink, if its parent + directory's status needs fixing, then mark the directory as needing + to be fixed after symlinks. + (extract_finish): Fix status of ordinary directories, then apply + delayed symlinks, then fix the status of directories that are + ancestors of delayed symlinks. + + * src/rtapelib.c (rexec): + Remove declaration; it ran afoul of prototypes on Crays. + Reported by Wendy Palm of Cray. + +2001-09-06 Paul Eggert + + * lib/strtoimax.c (HAVE_LONG_LONG): + Redefine to HAVE_UNSIGNED_LONG_LONG if unsigned. + (strtoimax): Use sizeof (long), not + sizeof strtol (ptr, endptr, base), + to work around bug in IBM C compiler. + +2001-09-04 Paul Eggert + + * lib/xgetcwd.c: Include "xalloc.h". + (xgetcwd): Do not return NULL when memory is exhausted; instead, + report an error and exit. + + * m4/prereq.m4 (jm_PREREQ_XREADLINK): New macro. + (jm_PREREQ): Use it. + +2001-09-03 Paul Eggert + + * m4/prereq.m4 (jm_PREREQ): Add jm_PREREQ_XGETCWD. + (jm_PREREQ_XGETCWD): New macro. + + * lib/exclude.c (fnmatch_no_wildcards): + Fix typo that caused us to do case-folding + search even when that was not desired. This occurred only in the + no-wildcard case. + + * lib/xgetcwd.c: Include pathmax.h if not HAVE_GETCWD. + Do not include xalloc.h. + (INITIAL_BUFFER_SIZE): New symbol. + Do not use xmalloc / xrealloc, since the caller is responsible for + handling errors. Preserve errno around `free' during failure. + Do not overrun buffer when using getwd. + + * lib/xgetcwd.c (xgetcwd): + Use HAVE_GETCWD_NULL, not defined __GLIBC__ && __GLIBC__ >= 2, + to decide whether to use getcwd (NULL, 0). + +2001-09-02 Paul Eggert + + * lib/xgetcwd.c: Fix typo in local var; from Jim Meyering. + +2001-09-01 Jim Meyering + + * exclude.c: Use `""', not `<>' to #include non-system header files. + (fnmatch_no_wildcards): Rewrite not to use function names, strcasecmp + and strncasecmp as r-values. Unixware didn't have declarations. + +2001-08-31 Jim Meyering + + * lib/xgetcwd.c (xgetcwd): Reorganize to avoid some duplication. + Use an initial, malloc'd, buffer of length 128 rather than + a statically allocated one of length 1024. + +2001-08-30 Paul Eggert + + * lib/utime.c: Include full-write.h. + * lib/xstrtol.c (strtoimax): New decl. + +2001-08-29 Paul Eggert + + * NEWS, configure.ac (AC_INIT_AUTOMAKE): Version 1.13.22. + + * src/create.c (dump_file): Relativize link names before dumping. + This fixes a bug reported by Jose Pedro Oliveira. + + * src/create.c (dump_file): Use offsetof when computing sizes for + struct hack; this avoids wasted space in some cases. + * src/incremen.c (note_directory, find_directory): Likewise. + * src/names.c (name_gather, addname): Likewise. + + * src/extract.c (extract_archive): Use strcpy, not memcpy, + for consistency with other code that does similar things. + * src/names.c (name_gather): Likewise. + + * src/names.c (read_name_from_file, name_next, name_gather, + add_hierarchy_to_namelist): Avoid quadratic behavior when + reallocating buffers. Check for buffer size overflow. + (addname): Avoid unnecessary clearing of memory. + +2001-08-29 "Jan D." + + * src/extract.c (delay_set_stat): Fix off-by-one error in file + name size allocation that caused core dumps. + +2001-08-28 Paul Eggert + + * NEWS, configure.ac (AC_INIT_AUTOMAKE): Version 1.13.21. + + * configure.ac (GNU_SOURCE): Define to 1, not /**/. + (major_t, minor_t, ssize_t): Use new-style AC_CHECK_TYPE. + (daddr_t): Remove; no longer used. + (jm_PREREQ_HUMAN): Add. + + * acconfig.h: Remove; no longer needed. + + * config.guess, config.sub: + New files, from automake 1.5. Gettext 0.10.39 needs them. + * depcomp, missing, mkinstalldirs: Upgrade to automake 1.5. + + * Makefile.am (AUTOMAKE_OPTIONS): Add dist-bzip2. + (SUBDIRS): Put intl before lib, as gettext requires. + + * ABOUT-NLS: Upgrade to gettext 0.10.39. + * intl: Upgrade entire directory to gettext 0.10.39. + * m4/codeset.m4, m4/glibc21.m4, m4/iconv.m4: + New files, from gettext 0.10.39. + * m4/gettext.m4, m4/isc-posix.m4, m4/lcmessage.m4, m4/progtest.m4, + Upgrade to gettext 0.10.39, + * po/Makefile.in.in: Likewise, except fix a typo in its copying + permissions. + * po/cat-id-tbl.c, po/stamp-cat-id: + Remove; no longer used by gettext 0.10.39. + * po/ChangeLog: New file. + + * doc/Makefile.am (EXTRA_DIST): Add freemanuals.texi. + $(srcdir)/tar.texi: Likewise. + * doc/freemanuals.texi: New file. + * doc/tar.texi (Free Software Needs Free Documentation): New appendix. + `fileds' -> `fields' + * doc/texinfo.tex: Upgrade to version 2001-07-25.07. + + * lib/Makefile.am (EXTRA_DIST): Add strtoll.c, strtoimax.c. + (noinst_HEADERS): Add quote.h. + (libtar_a_SOURCES): Add quote.c, xstrtoimax.c. + + * lib/exclude.c: Fix typo in '#include ' directive. + + * lib/full-write.c, lib/savedir.c: Comment fix. + + * lib/pathmax.h: Remove. + + * lib/quote.c, lib/quote.h: New files. + + * lib/xgetcwd.c: Don't include pathmax.h. + Include stdlib.h and unistd.h if available. + Include xalloc.h. + (xmalloc, xstrdup, free): Remove decls. + (xgetcwd): Don't assume sizes fit in unsigned. + Check for overflow when computing sizes. + Simplify reallocation code. + + * lib/xmalloc.c: Quote failure tests. + + * lib/strtoumax.c, lib/xstrtoimax.c: New files. + + * lib/strtoimax.c: Renamed from strtouxmax.c. Make it more + similar to strtol.c. + (UNSIGNED): Renamed from STRTOUXMAX_UNSIGNED. + (verify): New macro. + (strtoumax, uintmax_t, strtoull, strtol): Remove. + (intmax_t, strtoimax, strtol, strtoll): New macros, if UNSIGNED. + (strtoimax): Renamed from strtoumax. All uses of unsigned values + changed to signed values. Check sizes at compile-time, not + run-time. Prefer strtol to strtoll if both work. + (main): Remove. + + * lib/xstrtol.h (xstrtoimax): New decl. + + * m4/Makefile.am (EXTRA_DIST): + Add codeset.m4, glibc21.m4, iconv.m4, inttypes.m4, + longlong.m4, xstrtoimax.m4. + + * m4/inttypes.m4 (jm_AC_HEADER_INTTYPES_H): + Remove; now done by autoconf. + (jm_AC_TYPE_INTMAX_T, jm_AC_TYPE_UINTMAX_T): Replace with + Use AC_CHECK_TYPE instead of merely looking for the header. + + * m4/uintmax_t.m4: Use shorter comment. + + * m4/xstrtoumax.m4 (jm_AC_PREREQ_XSTRTOUMAX): + Quote first arg of AC_DEFUN. + Require jm_AC_TYPE_INTMAX_T and jm_AC_TYPE_LONG_LONG since they + is needed to parse the include file. + Simplify logic behind the args to AC_REPLACE. + + * src/Makefile.am (OMIT_DEPENDENCIES): Remove. + + * src/ansi2knr.1, src/ansi2knr.c: Remove; wasn't being used. + + * src/rmt.c (main): + Use "Copyright %d" to simplify the translator's job in the future. + Advise translator about circle-C. + * src/tar.c: (decode_options): Likewise. + * tests/genfile.c (main): Likewise. + +2001-08-28 Jim Meyering + + * lib/argmatch.c: Include "quote.h". + (argmatch_invalid): Quote the context. + + * lib/dirname.c (dir_name): Fix typo on PC platforms. + + * lib/backupfile.c, lib/basename.c, lib/dirname.c, lib/strtoul.c: + Use single-quote for local .h files. + + * lib/error.h (__attribute__): Don't depend on __STRICT_ANSI__. + + * lib/getopt.c, lib/getopt.h, lib/getopt1.c: Upgrade to recent + glibc versions. + + * lib/getdate.y (get_date): Initialize tm_isdst to -1 before + invoking mktime the last time. + + * lib/pathmax.h: Use #if rather than #ifdef for HAVE_UNISTD_H. + + * lib/rename.c: Major rewrite by Volker Borchert to use system + rename function, but to work around problems with trailing + slashes. + + * lib/strtoll.c: New file, from glibc. + * lib/strtoul.c: Update from glibc. + + * lib/strtouxmax.c: Renamed from lib/strtoumax.c. + Add support for signed numbers, too. + (strtoul, strtoull): Do not declare if STRTOUXMAX_UNSIGNED + is not defined. + (strtol, strtoll): Declare as needed, if STRTOUXMAX_UNSIGNED is + not defined. + (strtoumax, uintmax_t, strtoull, strtoul): New macros. + (main): Use generic names in debugging output. + * lib/strtoimax.c: Plus add the following changes of my own: + (main): Use accurate names in debugging output. + + * lib/xgetcwd.c (xgetcwd): Use getcwd if glibc 2 or later. + Don't use PATH_MAX. + + * m4/c-bs-a.m4, m4/check-decl.m4, m4/d-ino.m4, m4/error.m4, + m4/getline.m4, m4/jm-mktime.m4, m4/malloc.m4, m4/mbrtowc.m4, + m4/mbstate_t.m4, m4/realloc.m4, m4/uintmax_t.m4, m4/utimbuf.m4, + m4/utime.m4, m4/utimes.m4: + Quote the first argument in each use of AC_DEFUN. + + * m4/getline.m4: Don't use string.h. + + * m4/inttypes.m4, m4/longlong.m4, m4/xstrtoimax.m4: New files. + + * m4/mbrtowc.m4 (jm_FUNC_MBRTOWC): @%:@ -> #. + +2001-08-27 Paul Eggert + + * NEWS, configure.ac (AC_INIT_AUTOMAKE): Version 1.13.20. + + The biggest change is the new --exclude semantics and options. + The basic idea was suggested by Gerhard Poul; thanks! + + * NEWS: Describe new --exclude semantics and options, and bug fixes. + * README: ignfail.sh fails on some NFS hosts. + * NEWS, README, lib/xstrtol.h: Add copyright notice. + + * Makefile.am (ACLOCAL_AMFLAGS): Add -I m4. + (M4DIR, ACINCLUDE_INPUTS, $(srcdir)/acinclude.m4): + Remove; the automake bug has been fixed. + * acinclude.m4: Remove. + + * configure.ac: Renamed from configure.in. + (AC_PREREQ): Bump from 2.13 to 2.52. + (ALL_LINGUAS): Add id, tr. Remove ko, as po/ko.po (dated + 1997-05-30) has an encoding error. + (jm_AC_HEADER_INTTYPES_H): Remove; now done by autoconf. + (AC_FUNC_FNMATCH): Use AC_CONFIG_LINKS, not AC_LINK_FILES. + + * doc/fdl.texi: Update to current GNU version. + + * doc/tar.texi: Put leading '*' in direntry. + Accommodate new gfdl sectioning. + New option --recursion (the default) that is the inverse of + --no-recursion. + + New options --anchored, --ignore-case, --wildcards, + --wildcards-match-slash, and their negations (e.g., --no-anchored). + Along with --recursion and --no-recursion, these control how exclude + patterns are interpreted. The default interpretation of exclude + patterns is now --no-anchored --no-ignore-case --recursion + --wildcards --wildcards-match-slash. + + * lib/Makefile.am (OMIT_DEPENDENCIES): Remove. + + * lib/exclude.c (bool): Declare, perhaps by including stdbool.h. + (): Include only if HAVE_SYS_TYPES_H. + (, , , , ): + Include if available. + (): Include + (SIZE_MAX): Define if or doesn't. + (verify): New macro. Use it to verify that EXCLUDE macros do not + collide with FNM macros. + (struct patopts): New struct. + (struct exclude): Use it, as exclude patterns now come with options. + (new_exclude): Support above changes. + (new_exclude, add_exclude_file): + Initial size must now be a power of two to simplify overflow checking. + (free_exclude, fnmatch_no_wildcards): New function. + (excluded_filename): No longer requires options arg, as the options + are determined by add_exclude. Now returns bool, not int. + (excluded_filename, add_exclude): + Add support for the fancy new exclusion options. + (add_exclude, add_exclude_file): Now takes int options arg. + Check for arithmetic overflow when computing sizes. + (add_exclude_file): xrealloc might modify errno, so don't + realloc until after errno might be used. + + * lib/exclude.h (EXCLUDE_ANCHORED, EXCLUDE_INCLUDE,EXCLUDE_WILDCARDS): + New macros. + (free_exclude): New decl. + (add_exclude, add_exclude_file): Now takes int options arg. + (excluded_filename): No longer requires options arg, as the options + are determined by add_exclude. Now returns bool, not int. + + * lib/prepargs.c: Include ; required for C99 since + we use strlen. + + * lib/quotearg.c: + BSD/OS 4.1 wchar.h requires FILE and struct tm to be declared. + + * lib/xstrtol.h (_DECLARE_XSTRTOL): Improve quality of + diagnostic for LONGINT_INVALID_SUFFIX_CHAR. + + * m4/Makefile.am (EXTRA_DIST): Add check-decl.m4, mbrtowc.m4. + Remove inttypes_h.m4, largefile.m4, mktime.m4. + + * m4/inttypes_h.m4, m4/largefile.m4, m4/mktime.m4: Remove; + subsumed by Autoconf 2.50. + + * m4/error.m4: Upgrade to serial 2. + + * m4/fnmatch.m4 (jm_FUNC_FNMATCH): Upgrade to serial 4, but + remove test for GNU C library. It's not correct, as some + older glibcs are buggy. + + * m4/getline.m4, m4/malloc.m4: Upgrade to serial 4. + + * m4/prereq.m4: Upgrade to serial 20, but then: + (jm_PREREQ): Add jm_PREREQ_EXCLUDE. + (jm_PREREQ_EXCLUDE): New macro. + (jm_PREREQ_HUMAN): Remove jm_AC_HEADER_INTTYPES_H, as it is subsumed + by autoconf 2.5x. + + * m4/realloc.m4: Upgrade to serial 4. + + * m4/strerror_r.m4: Revert to serial 1002. + + * m4/uintmax_t.m4: Upgrade to autoconf 2.5x. + + * m4/utimes.m4: Upgrade to latest version (still "serial 3"). + + * m4/xstrtoumax.m4: Upgrade to serial 3, but then: + (jm_AC_PREREQ_XSTRTOUMAX): Remove jm_AC_HEADER_INTTYPES_H, as + it is now subsumed by autoconf. Add inttypes.h. + + * po/cs.po, po/da.po, po/de.po, po/es.po, po/et.po, po/fr.po, + po/it.po, po/pl.po, po/sl.po, po/sv.po: Sync with translation project. + + * src/buffer.c (new_volume): Stop if the script exits with an error. + + * src/common.h (excluded_with_slash, excluded_without_slash): + Remove, replacing by: + (excluded): New decl. + (link_error): New decl. + (excluded_name): Now returns bool. + + * src/extract.c: + (struct delayed_symlinks, extract_archive, apply_delayed_symlinks): + Support hard links to symbolic links. + + (struct delayed_symlink): Remove 'names' member, replacing it with + 'sources' and 'target' member. All uses changed. + + (struct string_list): New type. + + (delayed_set_stat, extract_archive): Use offsetof when computing sizes + for struct hack; this avoids wasted space in some cases. + + (extract_archive): Fix test for absolute pathnames and/or "..". + Use link_error to report errors for links. + Remove redundant trailing '/' at "really_dir", for all uses, not + just before invoking mkdir. + If overwriting old files, do not worry so much about existing + directories. + Fix mode computation in the case where the directory exists. + + (apply_delayed_symlinks): If we can't make a hard link to a symbolic + link, make a copy of the symbolic link. + + * src/incremen.c (get_directory_contents): + If ignore_failed_read_option, only warn about + stat failures. + + * src/list.c (from_header): Do not issue a diagnostic if TYPE is zero. + However, check for error even for '-' or '+' case. + + (print_header): Try parsing uids and gids as unsigned integers first, + and as a uid_t or gid_t only if that fails. This adds support for + listing positive uids and gids that are greater than UID_MAX and + GID_MAX. + + * src/misc.c (link_error): New function. + + * src/names.c (collect_and_sort_names): + If ignore_failed_read_option, only warn about + stat errors. + + (excluded_name): Now returns bool. Simplify, as the fancy + features are now all in excluded_filename. + + * src/rtapelib.c (base_name): Remove decl, as system.h now + declares it. + + * src/system.h: Include stddef.h if available. + (offsetof): Declare if stddef.h doesn't. + + Include . + (FILESYSTEM_PREFIX_LEN, ISSLASH): Remove; now defined by dirname.h. + + * src/tar.c (ANCHORED_OPTION, IGNORE_CASE_OPTION, + NO_ANCHORED_OPTION, NO_IGNORE_CASE_OPTION, NO_WILDCARDS_OPTION, + NO_WILDCARDS_MATCH_SLASH_OPTION, WILDCARDS_OPTION, + WILDCARDS_MATCH_SLASH_OPTION): + New enum values. + + (long_options, usage, decode_options): Add support for --anchored, + --ignore-case, --no-anchored, --no-ignore-case, --no-wildcards, + --no-wildcards-match-slash, --recursion, --wildcards, + --wildcards-match-slash. + + (decode_options): Implement the new way of interpreting exclude + patterns. + + (usage): --newer-mtime takes a DATE operand. DATE may be a file name. + + (OPTION_STRING, decode_options): Add -I, -y. Currently these options + just print error messages suggesting alternatives. + + (add_filtered_exclude): Remove. + + * tests/Makefile.am (TESTS): Alphabetize, except put version.sh first. + + * tests/extrac04.sh (out): Remove + directory/subdirectory/file1, as the new semantics for + --exclude exclude it. + + * tests/genfile.c (main): Don't use non-ASCII char in msgid. + +2001-08-12 Paul Eggert + + * lib/addext.c (): Include. + (errno): Declare if not defined. + (addext): Work correctly on the Hurd, where pathconf returns -1 and + leaves errno alone, because there is no limit. Also, work even if + size_t is narrower than long. + +2001-07-08 Paul Eggert + + * lib/alloca.c (alloca): Arg is of type size_t, not unsigned. + +2001-05-10 Paul Eggert + + * lib/addext.c (ISSLASH, base_name): Remove decls; now in dirname.h. + Include and after size_t is defined. + (addext): Use base_len to trim redundant trailing slashes instead of + doing it ourselves. + + * lib/backupfile.c (ISSLASH, base_name): + Remove decls; now in dirname.h. + Include , , after size_t + is defined. + (find_backup_file_name): Rename locals to avoid new functions. + Use base_len instead of rolling it ourselves. + Work even if dirlen is 0. + Use a dir of '.' if given the empty string. + + * lib/basename.c: + Do not include , ; no longer needed. + (FILESYSTEM_PREFIX_LEN, PARAMS, ISSLASH): Remove; now in dirname.h. + Include , . + (base_name): Allow file names ending in slashes, other than names + that are all slashes. In this case, return the basename followed + by the slashes. + + * lib/dirname.c: Include instead of . + (FILESYSTEM_PREFIX_LEN, ISSLASH): Remove; now in dirname.h. + (dir_len): Renamed from dirlen. + All callers changed. + + * lib/dirname.h (DIRECTORY_SEPARATOR, ISSLASH, FILESYSTEM_PREFIX_LEN): + New macros. + (base_name, base_len, dir_len, strip_trailing_slashes): New decls. + +2001-02-16 Paul Eggert + + * lib/quotearg.c (mbrtowc, mbrtowc, mbsinit): + Do not declare or define if HAVE_MBRTOWC, + since the test for HAVE_MBRTOWC now requires proper declarations. + + * lib/alloca.c (malloc): Undef before defining. + +2001-02-13 Paul Eggert + + * src/compare.c (read_and_process): Use off_t for size. + From Maciej W. Rozycki. + +2001-01-26 Paul Eggert + + * lib/quotearg.c: Include stddef.h. From Jim Meyering. + +2001-01-12 Paul Eggert + + * NEWS, configure.in (AC_INIT_AUTOMAKE): Version 1.13.19. + + * lib/savedir.h (savedir): Remove size arg. + + * doc/tar.texi: Add @setchapternewpage odd. + Remove -I as an alias for -T, for now. + Add @dircategory. + Update copyright. Remove "Published by". + Dates beginning with / or . are taken to be file names. + + * src/tar.c (): Do not include; + (time): Do not declare. + (usage): Remove -I as an alias for -T. + (OPTION_STRING): Remove -I. + (decode_options): Dates that look like an absolute path name, + or that start with '.', are presumed to be file names whose + dates are taken. + Remove 'I' as an aliase for 'T'. + Update copyright. + + * src/extract.c (): Do not include; system.h now does this. + (make_directories): Skip filesystem prefixes. + Don't assume '/' is the only separator. + (extract_sparse_file): Use new full_write semantics. + On write error, return instead of invoking skip_file. + Do not free sparsearray; caller does this now. + (apply_nonancestor_delayed_set_stat): Do not assume '/' is the only + separator. + (extract_archive): Don't assume file name lengths fit in int. + Report what got stripped from member name; it might be more than '/'. + Use new full_write semantics. + Do not pass redundant trailing "/" to mkdir, as POSIX does not allow + mkdir to ignore it. + Do not report mkdir error if old_files_option == KEEP_OLD_FILES. + + * src/buffer.c (): Do not include; system.h now does this. + (time): Remove decl; likewise. + (child_open_for_uncompress): Use new full_write semantics. + (flush_write): Use ISSLASH instead of testing for '/'. + (flush_read): Likewise. + + * src/rmt.h (_remdev): Look for / anywhere in Path. + + * src/misc.c (contains_dot_dot): Skip filesystem prefix. + Don't assume '/' is the only separator. + (safer_rmdir): Don't assume '/' is the only separator. + + * src/compare.c (diff_archive): Don't assume '/' is the only separator. + + * lib/dirname.h (dirlen): New decl. + + * src/incremen.c (get_directory_contents): + Remove path_size arg; all callers changed. + Don't assume '/' is the only directory separator. + (gnu_restore): Work even if file name length doesn't fit in int. + + * lib/addext.c (ISSLASH): New macro. + (addext): Trim any redundant trailing slashes. + + * src/names.c (name_next): + Don't assume '/' is the only directory separator. + (namelist_match): Likewise. + (add_hierarchy_to_namelist): Remove dirsize arg. + Do not assume '/' is the only directory separator. + (new_name): Likewise. + + * lib/Makefile.am (noinst_HEADERS): Add dirname.h, full-write.h. + (libtar_a_SOURCES): Add dirname.c. + + * src/create.c (relativize): + New function, with much of old start_header's guts. + Handle filesystem prefixes. + (start_header): Use this new function. + (init_sparsearray): Don't bother to zero out the new array; + it's not needed. + (deal_with_sparse): Fix array allocation bug. + (create_archive): Don't assume '/' is the only separator. + (dump_file): Likewise. + Don't worry about leading / in symlink targets. + + * lib/savedir.c (savedir): + Remove size arg; it wasn't portable. All callers changed. + + * lib/utime.c (utime_null): Adjust to new full_write convention. + + * configure.in (YACC): Avoid portability problem with Ultrix sh. + + * lib/backupfile.c: Include . + (ISSLASH): New macro. + (find_backup_file_name): Use dirlen to calculate directory lengths. + (max_backup_version): Strip redundant trailing slashes. + + * src/common.h: Include . + (get_directory_contents): No longer has size arg. + (gnu_restore): Arg is size_t, not int. + + * src/system.h: Include . + (time): Declare if not defined. + + * lib/full-write.c: Include full-write.h, not safe-read.h. + full_write returns size_t, with short writes meaning failure. + All callers changed. + + * src/rtapelib.c: Include full-write.h. + + * src/rmt.c: Include full-write.h. + (main): Update copyright. + + * doc/getdate.texi: Mention that only English is supported. + Show how to use "date" so that the output is acceptable to getdate. + Mention Z as an abbreviation for UTC. + + * lib/full-write.h: New file. + + * src/list.c: system.h now does time.h stuff. + + * lib/dirname.c: + Use HAVE_STDLIB_H, not STDC_HEADERS, to decide whether to include + stdlib.h. + Do not include string.h, strings.h, or assert.h; no longer needed. + (strrchr, memrchr, malloc): Remove decls; no longer needed. + Include . + (base_name): New decl. + (BACKSLASH_IS_PATH_SEPARATOR): Remove. + (dir_name_r): Remove. + (dirlen): New function. + (dir_name): Use dirlen instead of dir_name_r. + (, ): Include only if test program. + (main): Use "return 0", not "exit (0)". + +2000-12-08 Paul Eggert + + * lib/dirname.h: New file. + +2000-11-02 Vesselin Atanasov + + * lib/fnmatch.c: Do not comment out all the code if we are using + the GNU C library, because in some cases we are replacing buggy + code in the GNU C library itself. + +2000-10-30 Paul Eggert + + * lib/fnmatch.c (FOLD): Do not assume that characters are unsigned. + +2000-10-29 Paul Eggert + + * NEWS, configure.in (AC_INIT_AUTOMAKE): Version 1.13.18. + + * src/tar.c: Include , for FNM_LEADING_DIR. + +2000-10-28 Paul Eggert + + * doc/tar.texi: --no-recursion now applies to extraction, too. + * src/create.c (dump_file): no_recurse_option -> ! recursion_option + * src/names.c (namelist_match, excluded_name): + Do not match subfiles of a directory + if --no-recursion is specified. + * src/tar.c (NO_RECURSE_OPTION): Remove. + (long_options): Have getopt set the --no-recursion flag. + (decode_options): Initialize recursion_option to FNM_LEADING_DIR. + Remove case for NO_RECURSE_OPTION. + * src/common.h (recursion_option): + Renamed from no_recurse_option, with sense + negated, and with FNM_LEADING_DIR being the nonzero value. + + * names.c (namelist_match): New function. + (name_match, name_scan): Use it to eliminate duplicate code. + (names_notfound): Remove special case for Amiga. + +2000-10-27 Paul Eggert + + * src/misc.c (read_error_details, read_warn_details, + read_fatal_details): Don't assume size_t is unsigned long. + + * src/buffer.c (flush_read): If read_full_records_option, try to + fill the input buffer, as --delete -f - needs this. + +2000-10-24 Paul Eggert + + * m4/strerror_r.m4 (AC_FUNC_STRERROR_R): Port to autoconf 2.13. + + * src/buffer.c (check_label_pattern): + Make sure header name is a string before + passing it to fnmatch. + (init_volume_number): Check for global_volno overflow. + (new_volume): Check for global_volno overflow. + + * src/tar.c (decode_options): + Check that volume label is not too long to overflow + name in tar header block. + + * Makefile.am (EXTRA_DIST): Remove rebox.el. + + * configure.in (HAVE_DECL_STRERROR_R): Remove our handwritten code. + (AC_FUNC_STRERROR_R): Use this instead. + +2000-10-23 Paul Eggert + + * src/extract.c: Include , since we invoke "time". + + * lib/prepargs.c (prepend_default_options): + Don't use NULL, for portability. + + * m4/fnmatch.m4: Add "working" to message. + + * src/names.c: (_GNU_SOURCE): Remove; autoconf now does this. + Include . + (getpwuid, getgrgid): Declare only if system headers don't. + (gid_to_gname): Don't invoke setgrent. + (namelist): Now static, not global. + (nametail): New var. All uses of namelast changed to use + nametail, with one extra level of indirection. + (name_gather): Use memcpy instead of strncpy + assignment of NUL. + (name_match): Set nametail too, when setting namelist to null. + (add_hierarchy_to_namelist): Change type of dir arg from char * to + struct name *, so that we don't have to look up the name again + here. Get change_dir from dir rather than as a separate arg. Add + dirsize arg, and pass it along to get_directory_contents. Remove + unnecessary check of directory type. + (new_name): Do not append a slash if PATH already ends in one. + (avoided_names, struct avoided_name): Remove. + (avoided_name_table): New var, replacing avoided_names. + (hash_avoided_name, compare_avoided_names): New function. + (add_avoided_name, is_avoided_name): Use hash table rather than + linked list. + + * src/buffer.c (_GNU_SOURCE): Remove; autoconf now does this. + (child_open_for_compress, child_open_for_uncompress, + close_archive): Propagate any failure of the compression process + back to "tar". + (open_archive, flush_write, flush_read, close_archive): Do not + allocate an array of size PATH_MAX, as PATH_MAX might be (size_t) + -1. Instead, allocate an array with the size that's needed. + (open_archive): Don't bother checking S_ISCHR of /dev/null. + (backspace_output): Don't try to backspace past start of archive. + (close_archive): Remove special case for DELETE_SUBCOMMAND. + + * acconfig.h (_GNU_SOURCE, DEFAULT_ARCHIVE, DEFAULT_BLOCKING, + DENSITY_LETTER, DEVICE_PREFIX, EMUL_OPEN3, HAVE_GETGRGID, + HAVE_GETPWUID, HAVE_MKNOD, HAVE_RTAPELIB, HAVE_ST_FSTYPE_STRING, + HAVE_UNION_WAIT, HAVE_UTIME_H, HAVE_VALLOC, MTIO_CHECK_FIELD, PACKAGE, + PROTOTYPES, REMOTE_SHELL, STD_INC_PATH, VERSION, WITH_CATALOGS, + WITH_DMALLOC, WITH_REGEX): + Remove; now generated automatically. + + * configure.in (_GNU_SOURCE): Define to empty, not 1, for + compatibility for glibc fragments. + (_GNU_SOURCE, HAVE_UTIME_H, MTIO_CHECK_FIELD, + HAVE_ST_FSTYPE_STRING, HAVE_MKNOD, REMOTE_SHELL, DENSITY_LETTER, + DEVICE_PREFIX, DEFAULT_ARCHIVE, DEFAULT_BLOCKING): Add comment so + that we needn't put an entry into acconfig.h. + (ALL_LINGUAS): Add da. + (AC_C_BACKSLASH_A): Remove; jm_PREREQ_QUOTEARG now does this. + (AC_CHECK_HEADERS): Add stdbool.h (for hash.h users), wctype.h + (for strtol.c). + (AC_MBSTATE_T): Add. + (RMT): Append $(EXEEXT). + (HAVE_GETGRGID, HAVE_GETPWUID, pe_AC_TYPE_SIGNED_CHAR): Remove. + (HAVE_DECL_FREE, HAVE_DECL_GETGRGID, HAVE_DECL_GETPWUID, + HAVE_DECL_GETENV, HAVE_DECL_MALLOC, HAVE_DECL_STRTOUL, + HAVE_DECL_STRTOULL, HAVE_DECL_STRERROR_R): New macros. + (jm_PREREQ_ADDEXT, jm_PREREQ_ERROR, jm_PREREQ_QUOTEARG): Add. + (AC_REPLACE_FUNCS): Remove execlp; no longer needed. + (AC_CHECK_FUNCS): Add clock_gettime; AC_SEARCH_LIBS wasn't enough. + Remove mbrtowc; jm_PREREQ_QUOTEARG now does this. + (EMUL_OPEN3): Remove; no longer needed. + (DENSITY_LETTER, DEVICE_PREFIX): Simplify m4 quoting. + + * m4/fnmatch.m4 (AC_FUNC_FNMATCH): Detect d*/*1 vs d/s/1 bug. + + * src/common.h: Do not include basename.h. + * src/rtapelib.c (base_name): Do not include basename.h; + declare base_name instead. + + * lib/basename.h, lib/execlp.c, lib/getpagesize.h, lib/mkdir.c: + Remove these files. + * lib/getstr.c, lib/getstr.h, lib/hash.h, lib/hash.h, lib/prepargs.c, + lib/prepargs.h, lib/savedir.c, lib/savedir.h: New files. + * lib/Makefile.am (EXTRA_DIST, noinst_HEADERS, libtar_a_SOURCES): + Adjust to the above changes. + + * lib/Makefile.am (AUTOMAKE_OPTIONS): Remove ../src/ansi2knr. + + * src/open3.c: Remove. + + * src/Makefile.am (AUTOMAKE_OPTIONS): Remove ansi2knr. + (tar_SOURCES): Remove open3.c. + (INCLUDES): Remove -I.., as automake does that. + (OMIT_DEPENDENCIES): ../lib/fnmatch.h -> fnmatch.h. Add localedir.h. + + The following changes are to put LOCALEDIR into localedir.h instead + of passing it on the command line. + (DEFS): Remove. + (DISTCLEANFILES): New macro. + (localedir.h): New rule. + (rmt.o tar.o): Now depend on localedir.h. + + * tests/delete02.sh, tests/extrac04.sh: New files. + + * tests/Makefile.am (AUTOMAKE_OPTIONS): Remove ansi2knr. + (TESTS): Add extrac04.sh, and restore delete02.sh. + (DEFS): Remove; LOCALEDIR is now done via localedir.h. + (INCLUDES): Remove -I.. as automake does this now. + + * src/rtapelib.c (rexec): Don't declare unless using it. + (do_command): Simplify signal-handling code slightly. + + * src/delete.c (blocks_needed): Remove. All uses changed to use + blocking_factor - new_blocks. + (acting_as_filter): New var. + (write_record, delete_archive_members): Use acting_as_filter + rather than archive == STDIN_FILENO to detect whether we're acting + as a filter, as open can return STDIN_FILENO in some cases. + (delete_archive_members): Ignore zero blocks if + ignore_zeros_option is nonzero. Fix bug that messed up last + output block: write_eot can't be used here, as it gets confused + when the input is at end of file. + + * src/compare.c (diff_archive): Do not impose an arbitrary limit on + symbolic link contents length. Pass directory size to + get_directory_contents. + + * m4/decl.m4, m4/error.m4, m4/mbstate_t.m4, m4/prereq.m4, + m4/strerror_r.m4: New files. + * m4/signedchar.m4: Remove this file. + * Makefile.am (ACINCLUDE_INPUTS): Adjust to above changes. + * m4/Makefile.am (EXTRA_DIST): Likewise. + + * Makefile.am (DISTCLEANFILES): Add intl/libintl.h. + + * po/da.po: New translation file. + + * src/mangle.c (extract_mangle): + Fix diagnostic with wrong number of %s'es. + + * lib/fnmatch.c (fnmatch): + Fix some FNM_FILE_NAME and FNM_LEADING_DIR bugs, + e.g. fnmatch("d*/*1", "d/s/1", FNM_FILE_NAME) incorrectly yielded zero. + + * lib/full-write.c (full_write): Some buggy drivers return 0 when you + fall off a device's end. Detect this. + + * src/system.h (IN_CTYPE_DOMAIN): Renamed from CTYPE_DOMAIN. All + uses changed. + (open): Remove macro; we no longer support EMUL_OPEN3. Do not + include and directory include files like ; + no longer used. Include instead. + (closedir, signed_char): remove macro; no longer used. + (bool, false, true): Include if you have the include + file, otherwise define. + + * src/misc.c: + (is_dot_or_dotdot, closedir_error, closedir_warn, opendir_error, + opendir_warn, readdir_error): Remove; no longer needed. + (safer_rmdir): Strip leading ./ (or .// or ./// or ././ or etc.) + before deciding whether we're trying to remove ".". + (remove_any_file): Try unlink first if we are not root. Use + savedir when recursively removing directories, to avoid exhausting + file descriptors. + (savedir_error, savedir_warn, symlink_error): New functions. + + * src/list.c: (read_and): Do not invoke + apply_nonancestor_delayed_set_stat; DO_SOMETHING is now + responsible for that. Do not invoke apply_delayed_set_stat; our + caller is now responsible for that. + (read_header): Use signed char instead of signed_char. Prevent + later references to current_header from mistakenly treating it as + an old GNU header. + (from_header): Quote invalid base-64 strings in diagnostics. + (time_from_header): Do not warn about future timestamps in + archive; check_time now does that. + (print_header): Quote unknown file types. + (skip_member): New function, replacing skip_extended_headers and + now skipping the whole member instead of just the extended + headers. All callers changed. This makes the code handle + extended headers uniformly, and fixes some bugs. + + * src/update.c (update_archive): Use skip_member. + + * src/extract.c (we_are_root): Now global. + (struct delayed_symlink): New type. + (delayed_symlink_head): New var. + (extr_init, fatal_exit): Invoke extract_finish on fatal errors, + not apply_delayed_set_stat. + (set_mode, set_stat): Pointer args are now const pointers. + (check_time): New function. + (set_stat): Warn if setting a file's timestamp to be the future. + (make_directories): Do not save and restore errno. + (maybe_recoverable): Set errno to ENOENT if we cannot make missing + intermediate directories. + (extract_archive): Invoke apply_nonancestor_delayed_set_stat here, + not in caller. Extract potentially dangerous symbolic links more + carefully, deferring their creation until the end, and using a + regular file placeholder in the meantime. Do not remove trailing + / and /. from file names. Do not bother checking for ".." when + checking whether a directory loops back on itself, as loopbacks + can occur with symlinks too. Also, in that case, do not bother + saving and restoring errno; just set it to EEXIST. + (apply_nonancestor_delayed_set_stat): A prefix is a potential + ancestor if it ends in slash too (as well as ending in a char just + before slash). + (apply_delayed_set_stat): Remove. + (apply_delayed_symlinks, extract_finish): New functions. + + * doc/fdl.texi: New file. + * doc/Makefile.am (EXTRA_DIST): Add fdl.texi. + ($(srcdir)/tar.info): Add fdl.texi. Invoke makeinfo with --no-split. + * doc/tar.texi: Add Free Documentation License. New section + "Overwrite Old Files", and revamp that section to make it easier to + follow. "tar" -> "GNU tar" where appropriate. Migrate getdate + documentation into getdate.texi. Fix several minor typos. Describe + TAR_OPTIONS. Describe incompatibility between incremental backups and + --atime-preserve. Describe incompatibility between --verify and other + options. Mention that tar normally removes symbolic links rather than + following them, when extracting a file of the same name. + + * THANKS: Add gpoul. Change skip's address. + + * po/POTFILES.in: Add lib/human.c. + + * src/common.h (namelist, namelast): Remove decls. + (we_are_root, extract_finish, skip_member, savedir_error, + savedir_warn, symlink_error, gnu_list_name): New decls. + (apply_delayed_set_stat, apply_nonancestor_delayed_set_stat, + skip_extended_headers, is_dot_or_dotdot, closedir_error, + closedir_warn, opendir_error, opendir_warn, readdir_error, + readdir_warn): Remove decls. + (get_directory_contents): New off_t arg. + (addname): Now returns struct name *. + + * src/tar.h, tests/genfile.c: Fix comments. + + * src/create.c: Include hash.h. + (gnu_list_name): Remove decl. + (struct link): Remove "next" member. + (linklist): Remove. + (start_header): Say "leading `FOO'" rather than "`FOO' prefix" for + consistency with other diagnostics. + (deal_with_sparse): Check for I/O error when closing the file. + (create_archive): Do not allocate an array of size PATH_MAX, as + PATH_MAX might be (size_t) -1. Instead, allocate an array with + the size that's needed. + (hash_link, compare_links): New functions. + (dump_file): Do not exhaust open file descriptors when descending + deeply into a directory, by using savedir rather than + opendir/readdir. Do not zero-fill the name buffer unnecessarily. + Hash the set of links already created, instead of using a linked + list. Fix some bugs in outputting sparse files which caused the + sparse tables to be incorrect. When a file unexpectedly shrinks, + output zeros rather than garbage. Do not allocate an array of + size PATH_MAX, as PATH_MAX might be (size_t) -1. Instead, + allocate an array with the size that's needed. + + * src/incremen.c: Include hash.h. + (struct directory): Remove "next", "dir_text". Change "name" to + be char[1] with struct hack, not const char *. Add "found". + (directory_list): Remove. Replaced by directory_table. + (directory_table): New var. + (nfs_string): Renamed from nfs. + (hash_directory, compare_directories): New functions. + (note_directory): Now returns struct directory *. First arg is + now const pointer. struct stat arg is now dev_t, ino_t, nfs. + Remove text arg. New "found" arg, basically corresponding to the + old text arg not being null. All callers changed. + (note_directory, find_directory): Use hash table rather than + linked list. + (get_directory_contents): New arg "device". Use savedir to do the + hard work. Save the nfs-ness of stat_data, since it might change + under us. Use note_directory instead of find_directory to save + some work. When adding an "A" record, do it with + add_to_accumulator instead of cheating with strcat. + (read_directory_file): Use "+" flag before device to indicate + whether it was NFS. Fix typo in checking for strtoul error. + (write_directory_file_entry): New function. + (write_directory_file): Use it, and use the hash routines to + traverse the directory table. + (gnu_restore): Use savedir rather than opendir/readdir. + + * src/tar.c: Include localedir.h, prepargs.h. + (long_options): Now static. + (long_options, usage, decode_options): -j is now short for + --bzip2, and -I is now an alias for -T. + (decode_options, main): argv is not const pointer now. + (decode_options): Invoke prepend_default_options to support + TAR_OPTIONS. In diagnostic, mention the string that was the + invalid blocking factor, tape length, group, owner, or record + size. --delete is no longer incompatible with -f -, undoing + 2000-01-07 change. + (main): Invoke extract_finish at end of extraction. + + * src/rmt.c: Include localedir.h. + (main): Update copyright date to 2000. + + * doc/getdate.texi: New file, taken from fileutils 4.0.27, with the + following changes: Use @sc where appropriate. Document the ranges of + supported times more precisely. Add Eggert to getdate authors. + Document old Latin 12m/12pm tradition. Remove list of alphabetic time + zone names, as it wasn't correct and people shouldn't be relying on it + anyway. Relative items also account for non-DST adjustments. Fix + some misspellings. + + * lib/prepargs.c, lib/prepargs.h, tests/extrac04.sh: New file. + + * tests/ignfail.sh: opendir -> savedir in diagnostics. + + * tests/preset.in: Set LANGUAGE to the empty string, for some + brain damaged host. + +2000-10-20 Paul Eggert + + * m4/fnmatch.m4: Mention the GNU C library. + +2000-10-19 Paul Eggert + + * m4/fnmatch.m4: Add a couple more test cases to catch bugs in + glibc 2.1.95. + +2000-10-17 Paul Eggert + + * lib/human.c (): Do not include; human.h does it if needed. + (CHAR_BIT): Remove. + + * lib/human.h (): Include if HAVE_LIMITS_H. + (CHAR_BIT): Define if not defined. + +2000-09-09 Paul Eggert + + * lib/quotearg.c: From fileutils: rename ISASCII to IN_CTYPE_DOMAIN. + +2000-08-07 Paul Eggert + + * lib/xmalloc.c: Memory exhausted -> memory exhausted + + * lib/xalloc.h (xalloc_msg_memory_exhausted): + change to array from char *. + +2000-08-06 Paul Eggert + + * m4/mbstate_t.m4: Define mbstate_t to be int, not char, for + compatibility with glibc 2.1.3 strftime.c. + +2000-07-31 Paul Eggert + + * lib/quotearg.c (quotearg_n_options): + Don't make the initial slot vector a constant, + since it might get modified. + + * lib/quotearg.c: Add support for more than one preallocated slot. + +2000-07-30 Paul Eggert + + * lib/quotearg.c (quotearg_n_options): + Preallocate a slot 0 buffer, so that the caller + can always quote one small component of a "memory exhausted" message + in slot 0. + +2000-07-23 Paul Eggert + + * lib/quotearg.c: + Include even if ! (HAVE_MBRTOWC && 1 < MB_LEN_MAX), so that + mbstate_t is always defined. + + Do not inspect MB_LEN_MAX, since it's incorrectly defined to be 1 in + some GCC installations, and this configuration error is likely to be + common. + +2000-07-22 Paul Eggert + + * lib/quotearg.c: + When the system forces us to redefine mbstate_t, shadow its mbsinit + function. From Bruno Haible. + +2000-07-14 Paul Eggert + + * lib/xmalloc.c: Simplify exhausted message. + + * lib/quotearg.h: Update copyright date; from Jim Meyering. + +2000-07-13 Paul Eggert + + * lib/quotearg.h (enum quoting style): + New constant clocale_quoting_style. + + * lib/quotearg.c: + (quoting_style_args, quoting_style_vals, quotearg_buffer_restyled): + Add support for clocale_quoting_style, undoing previous change to + locale_quoting_style. + +2000-07-10 Paul Eggert + + * lib/quotearg.c: + : Include only if HAVE_MBRTOWC && 1 < MB_LEN_MAX, + since otherwise we don't need it. + (MB_CUR_MAX): Redefine to 1 if ! (HAVE_MBRTOWC && 1 < MB_LEN_MAX), + since we don't do multibytes in that case. + (quotearg_buffer_restyled): If a unibyte locale, don't bother to + invoke multibyte primitives. + + * m4/mbstate_t.m4 (AC_MBSTATE_T): + Renamed from AC_MBSTATE_T_OBJECT. All uses changed. + Change from a two-part test, which defines both HAVE_MBSTATE_T_OBJECT + and mbstate_t, to a single-part test that simply defines mbstate_t. + + * lib/quotearg.c (mbrtowc): Do not use HAVE_WCHAR_H in the definition. + Use defined mbstate_t, not HAVE_MBSTATE_T_OBJECT, + to decide whether to define the BeOS workaround macro; + this adjusts to the change to AC_MBSTATE_T. + + * m4/strerror_r.m4: New file. + +2000-07-05 Paul Eggert + + * lib/quotearg.c: Use double-quote to quote. + + * lib/quotearg.c (N_): New macro. + (gettext_default): New function. + (quotearg_buffer_restyled): Use gettext_default ("{LEFT QUOTATION MARK}", + "\"") for left quote, and gettext_default ("{RIGHT QUOTATION MARK}", "\"") + for right quote. + + * lib/quotearg.c (struct quoting_options): + Simplify quote_these_too dimension. + From Bruno Haible . + + * m4/mbstate_t.m4 (AC_MBSTATE_T_OBJECT): + Test for mbstate_t only if the test + for an object-type mbstate_t fails. + + * lib/quotearg.c (mbrtowc): Declare returned type, since BeOS doesn't. + +2000-07-03 Paul Eggert + + * m4/mbstate_t.m4 (AC_MBSTATE_T_OBJECT): Port to autoconf 2.13. + Add AC_CHECK_HEADERS(stdlib.h), since we use HAVE_STDLIB_H. + + * lib/quotearg.c (mbrtowc): + Assign to *pwc, and return 1 only if result is nonzero. + (iswprint): Define to ISPRINT if we are substituting our own mbrtowc. + +2000-07-02 Paul Eggert + + * lib/quotearg.c (mbstate_t): + Do not define; it should be defined with AC_CHECK_TYPE. + +2000-06-26 Paul Eggert + + * m4/mbstate_t.m4: Include stdio.h before wchar.h, to work around + a bug in glibc 2.1.3. + + * lib/xmalloc.c: Fix inaccurate comment for xrealloc. + +2000-06-19 Paul Eggert + + * lib/quotearg.c (ISASCII): Add #undef and move definition to follow + inclusion of wctype.h to work around solaris2.6 namespace pollution. + (ISPRINT): Likewise. + Reported by Tom Tromey. + +2000-06-15 Paul Eggert + + * lib/human.c (adjust_value): New function. + (human_readable_inexact): Apply rounding style even when printing + approximate values. + + * lib/human.c: Avoid shadowing warnings. + From Jim Meyering. + +2000-06-14 Paul Eggert + + * lib/human.c (human_readable_inexact): Allow an input block size + that is not a multiple of the output block size, and vice versa. + + * lib/getdate.y (get_date): Apply relative times after time zone + indicator, not before. + +2000-05-31 Paul Eggert + + * m4/largefile.m4: Rewrite so that we don't need to run getconf, + and thus don't need AC_CANONICAL_HOST. + + (AC_SYS_LARGEFILE_FLAGS, AC_SYS_LARGEFILE_SPACE_APPEND): Remove. + (AC_SYS_LARGEFILE_TEST_INCLUDES): New macro. + (AC_SYS_LARGEFILE_MACRO_VALUE): Change arguments from + CODE-TO-SET-DEFAULT to VALUE, INCLUDES, FUNCTION-BODY. All uses + changed. Instead of inspecting the output of getconf, try to + compile the test program without and with the macro definition. + (AC_SYS_LARGEFILE): Do not require AC_CANONICAL_HOST or check for + getconf. Instead, check for the needed flags by compiling test + programs. + + * configure.in (AC_CANONICAL_HOST): Remove; the largefile stuff no + longer needs it. + * config.guess, config.sub: Remove these files, for similar reasons. + +2000-05-03 Paul Eggert + + * m4/largefile.m4 (AC_SYS_LARGEFILE): Define _XOPEN_SOURCE to be + 500, instead of _GNU_SOURCE to be 1, to work around glibc 2.1.3 + bug. This avoids a clash when files like regex.c that define + _GNU_SOURCE. + +2000-05-02 Paul Eggert + + * m4/largefile.m4 (AC_SYS_LARGEFILE): + Define _GNU_SOURCE if this is needed to make + ftello visible (e.g. glibc 2.1.3). Use compile-time test, rather than + inspecting host and OS, to decide whether to define _LARGEFILE_SOURCE. + + * lib/quotearg.c (mbrtowc, mbstat_t): + Add definitions if !HAVE_MBSTATE_T_OBJECT. + (): Include if HAVE_WCTYPE_H. + (iswprint): Define to 1 if we lack it + +2000-04-18 Paul Eggert + + * m4/mbstate_t.m4: New file. + +2000-04-17 Bruno Haible + + * tests/ignfail.sh: Test for uid 0 along with user "root". + +2000-04-05 Paul Eggert + + * m4/largefile.m4 (AC_SYS_LARGEFILE_FLAGS): + Don't use -n32 on IRIX if the installer said + otherwise. + +2000-02-28 Paul Eggert + + * lib/quotearg.c (ALERT_CHAR): New macro. + (quotearg_buffer_restyled): Use it. + +2000-02-23 Rainer Orth + + * src/list.c (tartime): Fix off-by-one error when copying year if + OLD_CTIME. + +2000-02-18 Paul Eggert + + * lib/getdate.y: Handle two-digit years with leading zeros correctly. + (textint): New typedef. + (parser_control): Changed from struct parser_control to typedef + (for consistency). Member year changed from int to textint. All + uses changed. + (YYSTYPE): Removed; replaced by %union with int and textint + members. + (tID): Removed; not used. + (tDAY, tDAY_UNIT, tDAYZONE, tHOUR_UNIT, tID, tLOCAL_ZONE, + tMERIDIAN, tMINUTE_UNIT, tMONTH, tMONTH_UNIT tSEC_UNIT, tSNUMBER, + tUNUMBER, tYEAR_UNIT, tZONE, o_merid): Now of type . + (tSNUMBER, tUNUMBER): Now of type . + (date, number, to_year): Use width of number in digits, not its + value, to determine whether it's a 2-digit year, or a 2-digit + time. + (yylex): Store number of digits of numeric tokens. Return '?' for + unknown identifiers, rather than (unused) tID. + +2000-01-16 Paul Eggert + + * lib/quotearg.c (quotearg_buffer_restyled): + Do not quote alert, backslash, formfeed, + and vertical tab unnecessarily in shell quoting style. + +2000-01-15 Paul Eggert + + * m4/c-bs-a.m4: + Change quoting to be compatible with future autoconf versions. + +2000-01-11 Paul Eggert + + * lib/exclude.c (FILESYSTEM_PREFIX_LEN, ISSLASH): Remove unused macros. + +2000-01-07 Paul Eggert + + * NEWS, configure.in (AC_INIT_AUTOMAKE): Version 1.13.17. + + Fix bug with fnmatch.h dependency, as follows: + * src/Makefile.am (OMIT_DEPENDENCIES): New macro. + * lib/Makefile.am (OMIT_DEPENDENCIES): New macro. + + * src/common.h (apply_nonancestor_delayed_set_stat): + Renamed from apply_delayed_set_stat. + (apply_delayed_set_stat, decode_mode, chmod_error_details, + chown_error_details, close_warn, closedir_warn, mkdir_error, + read_error_details, read_fatal_details, read_warn_details, + seek_error_details, seek_warn_details, utime_error, + write_error_details, write_fatal_details): New decls. + + Make diagnostic messages more regular. + * src/create.c (dump_file): Quote file names with colons if possible. + * src/compare.c (diff_archive): Likewise. + * src/extract.c (repair_delayed_set_stat, extract_archive): Likewise. + * src/incremen.c (get_directory_contents, gnu_restore): Likewise. + * src/mangle.c (extract_mangle): Likewise. + * src/misc.c (call_arg_error, call_arg_fatal, call_arg_warn): + Likewise. + * src/buffer.c (archive_write_error, flush_archive, close_archive, + new_volume, xclose): + Use error message functions to report errors consistently. + * src/compare.c (diff_sparse_files, diff_archive): Likewise. + * src/create.c (finish_sparse_file, dump_file): Likewise. + * src/extract.c (set_mode, set_stat, extract_sparse_file, + extract_archive): Likewise. + * src/list.c (list_archive): Likewise. + * src/update.c (append_file): Likewise. + * src/compare.c (diff_init, diff_sparse_files): + Use xalloc_die to report memory exhaustion. + * src/incremen.c (gnu_restore): Likewise. + * src/list.c (read_header): Likewise. + * src/mangle.c (extract_mangle): Likewise. + * src/misc.c (maybe_backup_file): Likewise. + * src/tar.c (decode_options): Likewise. + * src/compare.c (read_and_process, fill_in_sparse_array, + diff_sparse_files): + Use consistent terminology for unexpected-EOF message. + * src/extract.c (extract_sparse_file, extract_archive): Likewise. + * src/list.c (list_archive, read_header, skip_file, + skip_extended_headers): Likewise. + * src/buffer.c (archive_write_error): Add noreturn attribute to decl. + (xdup2): Regularize messages with rest of tar. + + * src/buffer.c (flush_read): Don't read past EOF. + + * src/extract.c (extr_init): + If we run out of memory, invoke apply_delayed_set_stat. + (prepare_to_extract): Don't complain if we can't remove ".". + (apply_delayed_set_stat): New function. + (apply_nonancestor_delayed_set_stat): + Renamed from apply_delayed_set_stat. All uses changed. + Don't remove head if it doesn't apply. + + * src/create.c (find_new_file_size): + Return size instead of storing through pointer. + All callers changed. + (deal_with_sparse): Don't keep reading after read errors. + (finish_sparse_file): Just abort if there is an internal error. + (dump_file): Fix typo: stat_warn and stat_error were interchanged. + Don't restore access times on directories during incremental dumps + until after dealing with the directory. + If ignoring failed reads, count closedir, read, and unknown + file errors as warnings, not errors. + Fix buffer overrun problem when dumping sparse files. + + * src/list.c (read_and): + Invoke apply_nonancestor_delayed_set_stat on file names + after handling them. + (decode_mode): Remove; moved to misc.c. + + * src/misc.c (safer_rmdir): New function. + (remove_any_file): Use it to avoid problems with rmdir("."). + (maybe_backup_file): Regularize diagnostics. + (undo_backup_file): Likewise. + (decode_mode): Moved here from list.c. + (chmod_error_details, chown_error_details, close_fatal, + close_warn, closedir_warn, mkdir_error, read_error_details, + read_warn_details, read_fatal_details, seek_error_details, + seek_warn_details, utime_error, write_error_details, + write_fatal_details): New functions. + + * src/delete.c (save_record): Remove static variable (now local). + (move_archive): Don't position before start of archive. + (write_record): Abort if count is zero at inopportune time. + Plug memory leak. + + * src/tar.c (decode_options): --delete and -f - are now + incompatible, since we didn't have time to fix their bugs. + + * tests/Makefile.am (TESTS): Remove delete02.sh. + * tests/ignfail.sh: Adjust to new quoting scheme again. + +2000-01-06 Paul Eggert + + * lib/getdate.y: Sync tm_diff with the GNU C Library. + (TM_YEAR_BASE): Renamed from TM_YEAR_ORIGIN. All uses changed. + (tm_diff): Renamed from difftm. All uses changed. + Replace body with that taken from GNU C Library 2.1.3pre1. + (get_date): Prefer tm_gmtoff to tm_diff if available. + +1999-12-29 "Melissa O'Neill" + + * tests/incremen.sh: Invoke stat on newly created file so that its + ctime is updated on Nextstep. + +1999-12-21 Machael Stone + + * lib/getdate.y (get_date): + Fix typo when checking for time_t overflow in time zone calculations. + +1999-12-13 Paul Eggert + + * NEWS, configure.in (AC_INIT_AUTOMAKE): Version 1.13.16. + + * README-alpha: New file. + * README: New sections for gzip and bzip2, Solaris. + Remove mention of BACKLOG. + + * configure.in (AC_C_BACKSLASH_A): Add. + (AC_CHECK_HEADERS): Add wchar.h. + (AC_CHECK_FUNCS): Add mbrtowc. + (AC_FUNC_CLOSEDIR_VOID): Add. + + * tests/Makefile.am (TESTS): Add delete02.sh. + (POSTPONED_TESTS): Remove. + (EXTRA_DIST): Remove $(POSTPONED_TESTS). + + * tests/preset.in: + Set LC_ALL rather than LANGUAGE, LANG, and LC_MESSAGES. + + * tests/ignfail.sh (err): Adjust to new quoting scheme. + + * tests/delete02.sh: Fix typo: need to list archive2, not archive. + + * tests/extrac03.sh: Use -P option, so that .. doesn't get diagnosed. + + * src/tar.c ("quotearg.h"): New include. + (usage): Now has __attribute__ ((noreturn)). + (confirm): Report errno if we can't open tty. + (confirm, decode_options): + Quote arbitrary strings in diagnostics. + (OVERWRITE_OPTION): New constant. + (long_options, usage, decode_options): New --overwrite option. + (decode_options): --keep-old-files, --overwrite, and --unlink-first + are now mutually exclusive. + Don't assume that gettext preserves errno. + (main): Set default quoting style to escape_quoting_style. + + * src/update.c (): New include. + (append_file): + Don't assume that gettext preserves errno. + Quote arbitrary strings in diagnostics. + Check for close error. + + * src/names.c (): New include. + (name_init, name_next, name_close, names_notfound, + collect_and_sort_names): Don't assume that gettext preserves + errno. Quote arbitrary strings in diagnostics. + (excluded_name): Fix typo that caused empty patterns to be + mishandled. + + * src/misc.c (): New include. + (quote_copy_string): Quote only newline and backslash; the output is no + longer meant for humans, and is locale-independent. + (contains_dot_dot): New function. + (remove_any_file): Don't use lstat; just rmdir the file and then use + unlink if the rmdir fails because the file isn't a directory. + Check for readdir and closedir errors. + (maybe_backup_file): Report "stat" for stat errors. + (maybe_backup_file, chdir_do): + Quote arbitrary strings in diagnostics. + (maybe_backup_file, undo_last_backup): + Don't assume that gettext preserves errno. + (call_arg_error, call_arg_fatal, call_arg_warn, + chdir_fatal, close_error, closedir_error, exec_fatal, mkfifo_error, + mknod_error, open_error, open_fatal, open_warn, opendir_error, + opendir_warn, read_error, read_fatal, readdir_error, readdir_warn, + readlink_error, readlink_warn, seek_error, seek_warn, stat_error, + stat_warn, truncate_error, truncate_warn, unlink_error, waitpid_error, + write_error, write_fatal, xfork, xpipe, quote_n, quote): New functions. + + * src/system.h (__attribute__): New macro. + (O_NDELAY, O_NONBLOCK, O_APPEND): Remove. + (S_ISDOOR): New macro. + (closedir): New macro, if CLOSEDIR_VOID. + + * src/rmt.c, src/rtapelib.c (decode_oflag): + O_APPEND might not be defined. + + * src/list.c: (read_and, list_archive): + Quote arbitrary strings in diagnostics. + (from_header): Use locale_quoting_style to quote diagnostics. + (print_header, print_for_mkdir): Quote with quotearg, not quote_copy_string. + + * src/rmt.h (REM_BIAS): Increase from 128 to (1 << 30). + + * src/Makefile.am: Use ## for copyright comments. + + * src/extract.c (): New include. + (enum permstatus): New enum. + (struct delayed_set_stat): file_name is now at end of buffer, to avoid + two mallocs. New members file_name_len, invert_permissions, permstatus. + (extr_init): Remove hack that silently adjusted newdir_umask. + (set_mode, set_stat): New args invert_permissions, permstatus, typeflag. + Use these args to decide whether and how to set modes. + (set_mode, set_stat, prepare_to_extract, extract_sparse_file, extract_archive): + Don't assume that gettext preserves errno. + (set_stat): Remove arg symlink_flag; subsumed by typeflag. + (delay_set_stat, repair_delayed_set_stat): New functions. + (make_directories): Avoid mkdir where last part of path is "..". + Create a struct delayed_set_stat for each directory made. + (prepare_to_extract): Renamed from unlink_destination, and + return 0 immediately if to_stdout_option; all callers changed. + (maybe_recoverable): New parameter interdir_made. + Add support for --overwrite. + (extract_sparse_file, extract_archive): + Quote arbitrary strings in diagnostics. + (extract_archive): By default, warn about ".." in member names, and skip them. + Don't open files with O_NONBLOCK or O_APPEND. + Open with O_TRUNC only if --overwrite; otherwise, use O_EXCL to avoid + overwriting them. Pass only rwxrwxrwx permissions to `open' and `mkdir', + minus the current umask. Keep track of intermediate directories made, + to avoid looping when making x/../x when x doesn't exist; the + earlier code solved this in a different way that didn't fit well + into the new scheme. Don't extract permissions onto existing + directories unless --overwrite is given. Do not add -wx------ + permissions to new directories permanently; just do it temporarily. + Remove no-longer-needed hack with MSDOS and directory time stamps. + (apply_delayed_set_stat): New argument specifies which directories to + fix statuses of. Do not wait until the end of extraction to fix + statuses; instead, fix a directory's status once we exit that directory. + This requires less memory and does the right thing in some cases + where the old method didn't. + (fatal_exit): New function. + + * src/incremen.c (): New include. + (get_directory_contents, gnu_restore): + Check for readdir and closedir errors. + (get_directory_contents, read_directory_file, gnu_restore): + Quote arbitrary strings in diagnostics. + (get_directory_contents, read_directory_file, write_directory_file): + Don't assume that gettext preserves errno. + + * src/create.c (): New include. + (start_header): Use `member names' to refer to archive member names, not + `archive names'. Warn about `..' in member names. + (finish_sparse_file, dump_file): + Quote arbitrary strings in diagnostics. + (finish_sparse_file, dump_file): + Don't assume that gettext preserves errno. + (dump_file): Don't use `access' to determine whether a directory is readable; + this isn't reliable if tar is setuid. Use `opendir' instead. + Check for readdir and closedir failures. + Don't dump sockets as if they were fifos; just warn and skip. + + * src/delete.c (move_archive): + Don't report fatal error merely because sizes don't fit + into struct mtop values; fall back on lseek instead. + Say `Cannot' uniformly, instead of `Could not' sometimes and `Cannot' others. + Say `reposition' instead of `re-position'. + (delete_archive_members): + Set archive to STDOUT_FILENO before outputting trailing buffer. + + * src/compare.c (): New include. + (diff_init): Use `Cannot' uniformly, instead of `Could not' sometimes + and `Cannot' others. + (report_difference, diff_archive): + Quote arbitrary strings in diagnostics. + (process_rawdata, diff_sparse_files, get_stat_data, diff_archive, seek_warn): + Don't assume that gettext preserves errno. + (diff_archive): Don't open regular files with O_NONBLOCK. + Preserve access times of files if --atime. + + * src/common.h (FATAL_ERROR): Use new fatal_exit function to exit. + (FATAL_ERROR, USAGE): Don't return 0. + (enum old files): New enum. + (old_files_option): New variable, replacing keep_old_files_option and + unlink_first_option. + (apply_delayed_set_stat): Now takes char const * param. + (fatal_exit, contains_dot_dot, chdir_fatal, close_error, + closedir_error, exec_fatal, mkfifo_error, mknod_error, open_error, + open_fatal, open_warn, opendir_error, opendir_warn, read_error, + read_fatal, readdir_error, readdir_warn, readlink_error, + readlink_warn, seek_error, seek_warn, stat_error, stat_warn, + truncate_error, truncate_warn, unlink_error, waitpid_error, + write_error, write_fatal, xfork, xpipe, quote, quote_n): New decls. + + * src/buffer.c: + (xclose, xdup2, child_open_for_compress, child_open_for_uncompress, + archive_write_error, archive_read_error, flush_archive, close_archive, + init_volume_number, new_volume): + Don't assume that gettext preserves errno. + + (xdup2): Don't report errno if dup returns an unexpected nonnegative value. + (open_archive): Reject multivolume verify attempts a bit earlier. + Rename local variable `access', in case it's defined by system header. + + (open_archive, backspace_output): Use `Cannot' uniformly, instead of + `Could not' sometimes and `Cannot' others. + + (open_archive, flush_read, flush_archive, close_archive, new_volume): + Quote arbitrary strings in diagnostics. + + (read_error): Set archive to STDOUT_FILENO temporarily when writing + archive buffer. + + (init_volume_number): Check for input and output errors in volno_file. + + (new_volume): Use new fatal_exit function to exit, and new xfork + function to fork. + + * m4/Makefile.am (EXTRA_DIST): Add c-bs-a.m4. + + * Makefile.am (ACINCLUDE_INPUTS): Add $(M4DIR)/c-bs-a.m4. + + * doc/tar.texi: Add --overwrite. + --absolute-names rejects ".." in names. + + * lib/quotearg.c: Add support for multibyte characters. + (ISGRAPH): Remove. + (ISPRINT): New macro. + (): Include if HAVE_MBRTOWC && HAVE_WCHAR_H. + (isprint, mbrtowc, mbsinit, mbstate_t): New macros, + defined if ! (HAVE_MBRTOWC && HAVE_WCHAR_H). + (quotearg_buffer_restyled): New function, with most of the old + quotearg_buffer's contents. + Major rewrite to support multibyte characters. + (quotearg_buffer): Now just calls quotearg_buffer_restyled. + + * m4/c-bs-a.m4: New file. + + * lib/Makefile.am: Use ## for copyright notice. + + * scripts/Makefile.am: Use ## on copyright notice. + + * doc/Makefile.am: + ($(srcdir)/tar.info, tar.dvi): We now use texinfo 4.0. + +1999-12-05 Paul Eggert + + * doc/ChangeLog, lib/ChangeLog, scripts/ChangeLog, + src/ChangeLog, tests/ChangeLog: Remove these files. + * ChangeLog.1: New file, incorporating the above files, plus old + ChangeLog entries. + * Makefile.am (EXTRA_DIST): Add ChangeLog.1. + +1999-12-05 Dale Worley + + * src/compare.c (, struct utimbuf): Add. + (diff_archive): Restore access times if --atime. + * doc/tar.texi: Explain that --atime also preserves modification time. + +1999-12-04 Gerhard Poul + + * ABOUT-NLS: Update to latest version from ftp.gnu.org. + * BACKLOG, TODO: Remove. + * Makefile.am (all-local, BABYL, dist-zoo, id, ID): Remove. + * README: Bring up to date. + +1999-12-03 Paul Eggert + + * NEWS, configure.in (AM_INIT_AUTOMAKE): Version 1.13.15. + + * src/compare.c (diff_archive): + Do not set errno to EPIPE; we no longer use perror. + + * src/create.c (dump_file): + If a parent directory said that a file should be there but it is + absent, diagnose it as being removed in the meantime. + Do not pass meaningless errno to ERROR when reporting that the + file changed as we read it. + Report that a file changed if its ctime changes; this is more + sensitive than mtime+size, and more accurate. + + * src/incremen.c (enum children): New type. + (struct directory): Change old char allnew member to new enum children + children member. + All uses changed. + (get_directory_contents): When doing an incremental dump that does + not cross filesystem boundaries, dump the mount points, even though + they are in a different filesystem. This is for convenience when + restoring, and for consistency with non-incremental dumps. + This requires a 3-way flag for keeping track of which children we want, + so we use enum children rather than boolean. + + * src/open3.c (modes): Remove. + (open3): Remove unportable assumptions about flag encodings. + Use `stat' instead of `access' for testing file existence, + to avoid problems with setuid programs. + + * src/names.c (name_next): If file names are given both in the + command line (e.g. via -C) and in a file (via -T), do not + ignore the command-line names. + + * m4/uintmax_t.m4: Backport to autoconf 2.13. + + * doc/tar.texi: Clarify getdate authorship. + +1999-11-23 Paul Eggert + + * lib/Makefile.am (DISTCLEANFILES): New macro. + + * configure.in (tar_fnmatch_hin): + Remove; it runs afoul of a bug in autoconf 2.13. + Instead, always link fnmatch.h to some file, even if it's a throwaway. + +1999-11-19 Paul Eggert + + * m4/largefile.m4: Update serial. + +1999-11-18 Paul Eggert + + * m4/largefile.m4 (AC_SYS_LARGEFILE_FLAGS): Work around a bug in + the QNX shell, which doesn't propagate exit status of failed + commands inside shell assignments. + +1999-11-07 Paul Eggert + + * NEWS, configure.in (AM_INIT_AUTOMAKE): Version 1.13.14. + + * configure.in (AC_PREREQ): Bump to 2.13. + (ALL_LINGUAS): Add pt_BR, ja. + (AC_FUNC_FNMATCH): Remove lib/funmatch.h before invoking, not after. + (tar_cv_path_RSH): Prefer a non-symlink rsh to a symlink one, + for AIX crossbuilds. + + * doc/tar.texi: New node create options for --ignore-failed-read. + Remove unused version control symbols. + Modernize texinfo usage. + + * src/tar.c (usage): Add examples. + + * m4/fnmatch.m4 (AC_FUNC_FNMATCH): + Include fnmatch.h when testing fnmatch. + + * src/common.h (collect_and_sort_names): New decl. + + * src/list.c (from_header): + Handle 32-bit two's complement negative time stamps + even if the leading octal digit is 2 or 3. + + * src/extract.c (set_stat): Remove duplicate code. + + * src/create.c (to_chars): Remove trailing newline from warning. + (dump_file): Ignore doors. + (finish_header): Report block numbers with origin 0, not origin 1. + + * src/rmt.c: Include getopt.h. + (long_opts): New constant. + (usage): New function. + (main): Implement --help and --version. + Output usage message if arguments are bad. + +1999-10-10 Paul Eggert + + * NEWS, configure.in (AM_INIT_AUTOMAKE): Version 1.13.13. + + * README: Remove --with-dmalloc. + Add --disable-largefile. + Remove old NeXT dirent problems, or AIX valloc problems. + Remove old union wait advice, and old %lld advice. + Remove advice about FreeBSD 2.1.7, ISC 4.1mu, Ultrix `make'. + + * doc/tar.texi: Clarify documentation for portable file names. + + * configure.in (AM_WITH_DMALLOC): Remove. + (ALL_LINGUAS): Add ja. + + * src/tar.c (decode_options): + Invalid dates are now treated as (time_t) -1. + Redo version message to conform to GNU standards. + + * src/create.c (dump_file): + Fix typo: last two args to dump_file were interchanged. + * src/update.c (update_archive): Likewise. + + * src/common.h (tartime): New decl. + + * src/list.c (tartime): Now extern. + (read_and): Invalid headers cause errors, not warnings. + +1999-10-03 Paul Eggert + + * lib/getdate.y (__attribute__): + Don't use if GCC claims to be before 2.8; this is + needed for OPENStep 4.2 cc. Also, don't use if strict ANSI. + +1999-09-25 Paul Eggert + + * lib/fnmatch.c, lib/fnmatch.hin: Merge changes from latest glibc. + * lib/getopt.c, lib/getopt.h, lib/getopt1.c: Likewise. + + * tests/incremen.sh: Add yet another sleep. + +1999-09-24 Paul Eggert + + * NEWS: A read error now causes a nonzero exit status. + + * src/create.c (to_chars): Fix base-256 output. + + * src/buffer.c (write_error): + Read error is an error, not just a warning. + +1999-09-24 Paul Eggert + + * NEWS, configure.in (AM_INIT_AUTOMAKE): Version 1.13.12. + + * src/tar.c (): Include. + (time): Declare if not defined. + (confirm): Don't read past EOF. + (long_options, usage): Add --no-same-owner, --no-same-permissions. + (main): Use clock_gettime if available. + + * tests/Makefile.am (TESTS): Add incremen.sh + (INCLUDES): Add -I../lib, for fnmatch.h. + + * src/update.c (update_archive): + Remove call to name_expand; had no effect. + Use chdir_do to change into directory. + Use deref_stat instead of stat. + Use add_avoided_name to mark names to be avoided; the old method of + setting a bit with the name caused all descendants of that name to + be avoided, in some circumstances. + + * tests/incremen.sh: Remove unnecessary sleeps. + + * src/names.c (name_next): Go back to using plain chdir. + (name_gather): Use chdir_arg to keep track of arguments to chdir. + (addname): Likewise. + (name_match): Use chdir_do to act on chdir args. + (merge_sort): Moved here from incremen.c. + (compare_names, add_hierarchy_to_namelist, collect_and_sort_names): + Likewise. + (name_expand): Remove. + (name_from_list): Skip fake names. + Use chdir_do to act on chdir args. + (struct avoided_name): New struct. + (avoided_names): New var. + (add_avoided_name, is_avoided_name): New functions. + + * src/system.h (stat, lstat): Define in terms of statx on + STX_HIDDEN && !_LARGE_FILES /* AIX */ hosts. + (UCHAR_MAX): New macro. + (TYPE_MAXIMUM): Cast to arg type, for types narrow than int. + + * m4/largefile.m4: Work around GCC 2.95.1 bug with HP-UX 10.20. + + * src/incremen.c (): Remove include; no longer used. + (time): Remove decl. + (time_now): Remove. + (get_directory_contents): Use deref_stat. + Consider a subdirectory to be all new only if + listed_incremental_option or if it its timestamp is newer than the + cutoff. + (add_hierarchy_to_namelist, merge_sort): Move to names.c. + (read_directory_file): Now extern. Do not set time_now. + (write_directory_file): Renamed from write_dir_file. + Use start_time instead of time_now. + (compare_names, collect_and_sort_names): Move to names.c. + + * src/mangle.c (): Remove; not used. + (time): Do not declare. + + * src/misc.c (chdir_from_initial_wd): Remove. + (deref_stat): New function. + (struct wd): New struct. + (wd, wds, wd_alloc): New variables. + (chdir_arg, chdir_do): New function. + + * src/compare.c (get_stat_data): Use deref_stat. + + * src/common.h (name_expand): Remove. + + * src/list.c (time): Declare if not defined. + (base_64_digits): Moved here from create.c. + (base64_map): Use UCHAR_MAX for size, not less-clear (unsigned char) + -1. + (read_and): Don't get time from header unless we need it now; + as getting time can cause duplicate diagnostics if bogus. + Remove "Hmm, " from diagnostic. + Use "Skipping to next header" uniformly. + (from_header): Renamed from from_chars. All uses changed. + Allow different forms for unportable 2's complement numbers. + Don't check for extended forms when parsing checksums. + Parse base-256 output. + (gid_from_header): Renamed from gid_from_chars. All uses changed. + (major_from_header): Renamed from major_from_chars. All uses changed. + (minor_from_header): Renamed from minor_from_chars. All uses changed. + (mode_from_header): Renamed from mode_from_chars. All uses changed. + (off_from_header): Renamed from off_from_chars. All uses changed. + (size_from_header): Renamed from size_from_chars. All uses changed. + (time_from_header): Renamed from time_from_chars. All uses changed. + Warn about future timestamps. + (uid_from_header): Renamed from uid_from_chars. All uses changed. + (uintmax_from_header): Renamed from uintmax_from_chars. + All uses changed. + (tartime): New function, incorporating isotime. + (isotime): Delete. + (print_header): Use tartime. + + * src/create.c (to_chars): Fix typo in decl. + Don't assign through char const *. + Rename name_expand back to collect_and_sort_names. + + * src/extract.c (): No need to include. + (time): No need to declare. + (now): Remove variable. + (extr_init): Don't initialize `now'. + Increment same_permissions_option and same_owner_option if we_are_root + is nonzero; this supports the new --no-same-owner option. + (set_stat): Use start_time instead of `now'. + + * src/create.c (struct link): Remove unused linkcount member. + (base_64_digits): Move to list.c. + (base_8_digits): Remove. + (to_octal): New function, with some of old contents of to_base. + (to_base): Remove. + (to_base256): New function. + (to_chars): Use base 256, not base 64, for huge values. + (mode_to_chars): Don't use two's complement in GNU format or POSIX + format. + (dump_file): Interchange last two arguments. If TOP_LEVEL is negative, + it means we have an incremental dump where we don't know whether this + is a top-level call. + Use deref_stat instead of statx / stat / lstat. + Cast result of alloca. + Check for dates if 0 < top_level, not if listed_incremental_option. + Move multiple-link check after directory check. + Do not dump avoided names. + Dump hard links to symbolic names as links, not as separate + symbolic links. + start_header cannot return a null pointer, so don't test for it. + Likewise for find_next_block. + + * src/buffer.c, src/common.h (): Include. + (read_error): Read error is an error, not just a warning. + (print_total_written): Also print human-readable byte count, and + bytes/s. + (open_archive, flush_write): Use start_time, not current time. + (flush_read): Report about garbage bytes ignored at end of archive, + but act on non-garbage bytes (instead of ignoring them). + (new_volume): Use WARN for warnings. + + * doc/Makefile.am: + ($(srcdir)/tar.info): Add -I$(srcdir) so that subdir builds work. + + * Makefile.am (ACINCLUDE_INPUTS): Add $(M4DIR)/fnmatch.m4. + + * m4/Makefile.am (EXTRA_DIST): Add fnmatch.m4. + + * lib/Makefile.am (noinst_HEADERS): + Rename fnmatch.h to fnmatch.hin; add human.h. + (libtar_a_SOURCES): Add human.c, xstrtoul.c. + (INCLUDES): Remove -I.. -I$(srcdir) -- automake adds this for us. + + * src/Makefile.am (rmt_LDADD, tar_LDADD): New macros. + + * lib/fnmatch.c (strchrnul): + Define to __strchrnul if _LIBC, to our own replacement otherwise. + Do not define if !_LIBC and if it already exists. + (internal_fnmatch): Use it. + + * configure.in (tar_LDADD): New variable, used only when linking tar. + (rmt_LDADD): Similarly, for rmt. + (AC_FUNC_FNMATCH): Link fnnmatch.hin to fnmatch.h if we're using our + fnmatch.c; otherwise, use the system fnmatch.h. + + * doc/tar.texi: Add --no-same-owner, --no-same-permissions. + Modernize sample backup script. + + * THANKS: Martin Goik's email address has changed. + + * m4/fnmatch.m4: New file. + +1999-09-03 Paul Eggert + + * lib/lchown.h (ENOSYS): Don't use ENOMSG; it's not in NeXTStep3.3. + Use EINVAL instead. + +1999-08-29 Paul Eggert + + * lib/getdate.y (get_date): + Rename outermost local `probe' to `quarter'. + Rename latter local `tm' to probe_tm. + From: Jim Meyering + Message-ID: + +1999-08-28 Paul Eggert + + * lib/getdate.y (PC): New macro; use it when possible. + (number): Handle `Nov 11 1996' example correctly. + See Risks Digest 20.55 (1999-08-27) + http://catless.ncl.ac.uk/Risks/20.55.html#subj18 + +1999-08-23 Paul Eggert + + * NEWS, configure.in (AM_INIT_AUTOMAKE): Version 1.13.11. + + Remove minor cases of lint from many source files: this includes + unnecessary casts, uses of NULL, etc. + + * configure.in (AC_PROG_YACC): Remove. + (YACC): Always use bison. + (AC_STRUCT_TIMEZONE): Add. + (AC_REPLACE_FUNCS): Add strcasecmp, strncasecmp. + + * doc/tar.texi: --bzip2 is now -I. Remove obsolete time zone info. + Fix spelling. + + * lib/Makefile.am (EXTRA_DIST): Add strcasecmp.c, strncasecmp.c. + ($(srcdir)/getdate.c): Rename y.tab.c to getdate.c only if successful. + + * lib/strcasecmp.c, lib/strncasecmp.c: New files. + + * src/common.h (merge_sort): Remove decl; no longer exported. + + * src/system.h (voidstar): Remove. + (memcpy, memcmp): Cast args. + ("xalloc.h"): Add include. + (xmalloc, xrealloc): Remove decl. + + * src/mangle.c (time): Do not declare if defined. + (first_mangle, mangled_num): Remove. + + * src/list.c (from_chars): Report out-of-range values more precisely. + (off_from_chars): Do not allow negative offsets. + (uid_from_chars): Allow negative uids. + + * src/create.c (linklist): Now static. + (to_chars): Fix wording of message to match from_chars. + + * src/misc.c (merge_sort): Move to incremen.c. + * src/incremen.c (merge_sort): Move here from misc.c; now static. + It's too painful to make it both generic and portable. + (read_directory_file): "timestamp" -> "time stamp" in messages. + + * src/tar.c (long_options, usage, main): -y is now -I (for --bzip). + (usage): Fix misspelling. + (OPTION_STRING): -y is now -I. + (decode_options): Use -1, not EOF, for getopt_long result. + Fix typo when invoking xstrtoumax: look for LONGINT_OK, not LONG_MAX. + Handle operands after any "--" argument. + (main): Report any output errors. + + * src/rmt.c (main): status is ssize_t, not long. + + * src/names.c (name_gather): Handle trailing -C option correctly. + (addname): use memcpy, not strncpy, to copy a string of known length. + (name_match): Handle trailing -C option correctly. + Propagate -C option to following files. + (name_match, name_scan): Remove redundant matching code. + + * src/buffer.c (open_archive): Use American spelling in diagnostic. + + * lib/getdate.y: Major rewrite. Add copyright notice. + (): Include only if testing. + (ISUPPER): Remove. + (ISLOWER): New macro. + (): Include if HAVE_STRING_H, not USG. + (bcopy): Remove. + (yymaxdepth, ..., yycheck): Don't bother to redefine, since we assume + bison. + (EPOCH_YEAR): Renamed from EPOCH. + (table): Renamed from TABLE. + (meridian): Now an anonymous enum. + (struct parser_control): New type. + (YYLEX_PARAM, YYPARSE_PARAM, YYSTYPE): New macros. + (yyInput, ..., yyRelYear): Migrated into struct parser_control. + (%pure_parser): Added, so that the parser is pure. + (%union): Removed; the type is now just plain int. + All %type directives removed. + (tLOCAL_ZONE): New %token. + (month_day_table): Renamed from MonthDayTable. + (gmtime, localtime, mktime, time): Declare only if not defined. + (meridian_table): New table. + (dst_table): New table. + (units_table): renamed from UnitsTable. + (relative_time_table): Renamed from OtherTable. + (time_zone_table): Renamed from TimezoneTable. Modernized. + (military_table): Renamed from MilitaryTable. + (to_hour): Renamed from ToHour. + (to_year): Renamed from ToYear. + (lookup_zone): New function. + (LookupWord): Renamed from lookup_word. Use lookup_zone for time + zones. + (yylex): Now reentrant. All callers changed. + (get_date): Add support for local time zone abbreviations. + Make it reentrant. + +1999-08-20 Paul Eggert + + * NEWS, configure.in (AM_INIT_AUTOMAKE): Version 1.13.10. + + * src/create.c (to_chars): Generate GNU base-64 representation + if we are generating an old or new GNU format tar file for a + number that can't be represented with the POSIX format. + + * configure.in (AC_CHECK_FUNCS): Add fchdir. + (AM_FUNC_GETLINE): Add. + (LIBOBJS): Add getline.o to workaround comment. + * Makefile.am (ACINCLUDE_INPUTS): Add $(M4DIR)/getline.m4. + * m4/Makefile.am (EXTRA_DIST): Add getline.m4. + * lib/Makefile.am (noinst_HEADERS): Add getline.h, save-cwd.h. + (libtar_a_SOURCES): Add save-cwd.c, xgetcwd.c. + * lib/getline.c, lib/getline.h, lib/save-cwd.c, + lib/save-cwd.h, m4/getline.m4: New files. + + * src/misc.c (): Include. + (chdir_from_initial_wd): New function. + + * src/names.c (name_next): Use chdir_from_initial_wd, not chdir. + (name_gather): Handle `-C x -C y' correctly. + Do not rely on addname to handle -C. + (addname): New CHANGE_DIR parameter. All callers changed. + Remove ugly calls to getcwd; no longer needed. + (name_match, name_from_list): Use chdir_from_initial_wd, not chdir. + + * src/incremen.c (listed_incremental_stream): New var. + (read_directory_file): Remove arbitrary limits on file name length. + Do not attempt to get the working directory; we can bypass this + on fchdir hosts. Open the listed_incremental_option file for both + read and write instead of opening it twice. Check for I/O errors + when doing I/O to this file. Check for invalid data in the file, + and report line numbers of invalid data. + (write_dir_file): Likewise. + (collect_and_sort_names): Use chdir_from_initial_wd, not chdir. + Do not invoke write_dir_file; that's our caller's responsibility. + + * src/list.c (max): New macro. + (isotime): Now takes time_t, not time_t *. Report the decimal values + of times that can't be broken down. + (print_header): Don't assume that major and minor device numbers can + fit into uintmax_t. + + * src/common.h (struct name): change_dir is now char const *. + (write_directory_file): Remove unused decl. + (STRINGIFY_BIGINT): Assume b always points to UINTMAX_STRSIZE_BOUND + chars; the old `sizeof (b)' broke when b was a pointer not an array. + (chdir_from_initial_wd): New decl. + (addname): New 2nd arg. + + * THANKS: Torsten Lull -> Catrin Urbanneck + +1999-08-18 Paul Eggert + + * configure.in (HAVE_GETHOSTENT, HAVE_SETSOCKOPT): + Don't depend on ac_cv_func variables. + From Albert Chin-A-Young . + +1999-08-18 Paul Eggert + + * NEWS, configure.in (AM_INIT_AUTOMAKE): Version 1.13.9 + + * m4/signedchar.m4: New file. + * configure.in (pe_AC_TYPE_SIGNED_CHAR): Add. + * src/system.h (signed_char): New macro. + * Makefile.am (ACINCLUDE_INPUTS): Add $(M4DIR)/signedchar.m4. + * m4/Makefile.am (EXTRA_DIST): Add signedchar.m4. + + * src/create.c (write_eot): Write at least two zero blocks. + + * src/extract.c (extract_archive): Fix sparse array bug: + we did not find end of array correctly. + + * src/compare.c: (fill_in_sparse_array, diff_sparse_files): + Don't assume find_next_block yields nonnull. + * src/extract.c (extract_sparse_file, extract_archive): Likewise. + * src/list.c (skip_extended_headers): Likewise. + + * src/list.c (read_and, list_archive): Simplify code. + (read_header): Fix computation of signed checksums on machines where + char is unsigned. + Do not consider a block to be zero unless all its bytes are zero, + even the checksum bytes. Do not attempt to parse the checksum of + a zero block. Fix memory leak with long names and links. + (from_chars): Accommodate a buggy tar that outputs leading NUL + if the previous field overflows. + + * src/misc.c (quote_copy_string): Generate \177 for '\177', not + \?, for portability to non-ASCII hosts. + +1999-08-16 Paul Eggert + + * configure.in (AM_INIT_AUTOMAKE), NEWS: Version 1.13.8. + + * src/extract.c (make_directories): Do not chown intermediate + directories, even if we are root. + + * src/list.c (read_header): Fix bugs when interpreting + POSIX-compliant headers that do not contain null bytes in the + header or link names. + +1999-08-14 Paul Eggert + + * configure.in (AM_INIT_AUTOMAKE), NEWS: Version 1.13.7. + + * configure.in (AC_CHECK_HEADERS): Remove sys/wait.h. + (AC_HEADER_SYS_WAIT): Add. + (AC_REPLACE_FUNCS): Add waitpid. + (tar_cv_header_union_wait, HAVE_UNION_WAIT): Remove. + * lib/waitpid.c: New file. + * lib/Makefile.am (EXTRA_DIST): Add waitpid.c. + * src/system.h (WCOREDUMP): Remove; no longer used. + (WIFSTOPPED): Likewise. + (WEXITSTATUS, WIFSIGNALED): Default to Solaris 7 versions. + * src/buffer.c (child_open_for_compress): Undo previous change. + (close_archive): Use waitpid, POSIX-style, instead of old BSD style. + (new_volume): Likewise. + + * src/buffer.c, src/extract.c, src/incremen.c (time): + Don't declare if defined. + * src/extract.c (extr_init): Remove unneeded cast around 0 arg to time. + * src/incremen.c (read_directory_file): + Invoke `time' the same way everyone else does. + Check validity of --listed-incremental file contents a bit better. + Do not worry about --after-date-option; tar.c now checks this. + * src/list.c (isotime): Report ??? if localtime returns null. + Don't assume years fit into four digits. + Don't append trailing newline. + (print_header): Report ??? if localtime returns null; + Don't assume years fit into four digits. + + * src/compare.c (diff_archive): Do not fall back on absolute name + when --absolute-names is not specified. + + * src/create.c (start_header): + Include text of ignored filesystem prefix in warning. + (create_archive): Check for excluded names when doing incremental + pass through directory. + (dump_file): Do not dump old files explicitly given on command line + when using --listed-incremental. Do not strip ./ prefix from names. + + * src/tar.c: -g now implies after_date_option = 1. + -g and -N are now incompatible options. + + * doc/tar.texi: Explain --exclude better. Don't strip leading `./'. + +1999-08-11 Jeff Dairiki + + * src/list.c (read_header): Don't parse OLDGNU_FORMAT + incremental headers as POSIX prefixes. + +1999-08-11 Paul Eggert + + * NEWS, configure.in: Version 1.13.6. + + * configure.in (ALL_LINGUAS): Add pt_BR. + * po/pt_BR.po: New file. + + * doc/Makefile.am ($(srcdir)/tar.info, $(srcdir)/header.texi): + Renamed from tar.info and header.texi; adjust actions so that + they work in other directories. + + * doc/tar.texi: Add -y and --bzip2. + Patterns containing / now exclude only file names whose prefix match. + + * lib/exclude.h (excluded_filename): New option parameter. + (add_exclude_file): New ADD_FUNC parameter. + (excluded_pathname): Remove decl. + * lib/exclude.c (_GNU_SOURCE): + Remove; no longer needed since we don't use FNM_ macros. + (excluded_filename): Renamed from excluded_filename_opts. + (excluded_filename, excluded_pathname): Remove. + (add_exclude_file): New ADD_FUNC parameter. + + * po/POTFILES.in: Add lib/quotearg.c. + + * src/buffer.c (_GNU_SOURCE): Define. + (): Include unconditionally. + (child_open_for_compress): Dup after closing, to avoid possible file + descriptor exhaustion. + (flush_write): Use FILESYSTEM_PREFIX_LEN instead of MSDOS ifdef. + (flush_read): Likewise. + + * src/common.h (LG_8, LG_64): New macros. + (excluded_with_slash, excluded_without_slash): New vars. + (excluded): Remove. + (base_64_digits): New decl. + (gid_to_chars, major_to_chars, minor_to_chars, mode_to_chars, + off_to_chars, size_to_chars, time_to_chars, uid_to_chars, + uintmax_to_chars, + GID_TO_CHARS, MAJOR_TO_CHARS, MINOR_TO_CHARS, MODE_TO_CHARS, + OFF_TO_CHARS, SIZE_TO_CHARS, TIME_TO_CHARS, UID_TO_CHARS, + UINTMAX_TO_CHARS): + Renamed from gid_to_oct, major_to_oct, minor_to_oct, mode_to_oct, + off_to_oct, size_to_oct, time_to_oct, uid_to_oct, uintmax_to_oct, + GID_TO_OCT, MAJOR_TO_OCT, MINOR_TO_OCT, MODE_TO_OCT, OFF_TO_OCT, + SIZE_TO_OCT, TIME_TO_OCT, UID_TO_OCT, UINTMAX_TO_OCT, + respectively. All definitions and uses changed. + (excluded_name): New decl. + + * src/compare.c (diff_archive): + Open files with O_NONBLOCK instead of O_NDELAY. + + * src/create.c (base_64_digits): New constant. + (base_8_digits): New macro. + (MAX_VAL_WITH_DIGITS): New macro. + (to_base): First half of old to_oct. Support base 64 too. + (to_chars): Other half of old to_oct, for 64-bit support. + (GID_NOBODY, UID_NOBODY): Don't define if the headers don't. + (gid_substitute, uid_substitute): Look up names dynamically if + GID_NOBODY and UID_NOBODY aren't defined; use -2 if all else fails. + (mode_to_chars): Renamed from mode_to_oct. + Support negative values in all the _to_chars functions. + (start_header): Use FILESYSTEM_PREFIX_LEN instead of MSDOS ifdef. + Abort if archive format is DEFAULT_FORMAT when it shouldn't be. + (dump_file): Inspect entire pathname, not just new file name + component, when deciding whether to exclude it. + + * src/extract.c (extract_archive): + Open files with O_NONBLOCK instead of O_NDELAY. + + * src/incremen.c (get_directory_contents): + Inspect entire pathname, not just new file name + component, when deciding whether to exclude it. + + * src/list.c (): Do not include. + (from_chars): Renamed from from_oct. New parameter specifying + the negative of the minimum allowed value. Support negative + and base-64 values. + (base64_map): New var. + (base64_init): New function. + (print_header): Output numeric uids and gids if numeric_owner_option. + + * src/misc.c (quote_copy_string): Use LG_8 instead of constants. + + * src/names.c (_GNU_SOURCE): Define. + (): Include unconditionally. + (excluded_name): New function, taking over duties of excluded_pathname. + All uses changed. + + * src/rmt.c (decode_oflag): New function. + (main): Use it to support symbolic open flags. + + * src/rtapelib.c (encode_oflag): New function. + (rmt_open__): Do not allow newlines in the path. + Propagate errno correctly. + Decode symbolic open flags, if present. + + * src/system.h (FILESYSTEM_PREFIX_LEN, ISSLASH, O_ACCMODE, O_NONBLOCK): + New macros. + + * src/tar.c: (long_options, usage, OPTION_STRING, decode_options): + New -y or --bzip2 option. + (add_filtered_exclude): New function. + (decode_options): Put excluded patterns with / into + excluded_with_slash, and without / into excluded_without_slash. + Compare newer_mtime_option to its new initial value + TYPE_MINIMUM (time_t) when deciding whether more than one + threshold date was specified. + +1999-07-20 Paul Eggert + + * NEWS, configure.in: Version 1.13.5. + + * src/common.h (FATAL_ERROR): Invoke apply_delayed_set_stat + before exiting. + * src/buffer.c (new_volume): Likewise. + * src/incremen.c (read_directory_file): Likewise. + * src/tar.c (decode_options): + ERROR ((TAREXIT_FAILURE, ... -> FATAL_ERROR ((0, + for consistency. + + * NEWS, configure.in (AM_INIT_AUTOMAKE): Version 1.13.4. + * configure.in (AC_CHECK_FUNCS): Add lstat, readlink, symlink. + + * src/system.h (lstat): Define only if !HAVE_LSTAT && !defined lstat. + (S_ISMPB, S_ISMPC, S_ISNWK): Remove unused macros. + (S_ISBLK, S_ISCHR, S_ISCTG, S_ISFIFO, S_ISLNK, S_ISSOCK): + Define to 0 if the corresponding S_IF* macro is not defined. + (mkfifo): Do not define if already defined, or if S_IFIFO + is not defined. + + * src/compare.c (diff_archive): Use HAVE_READLINK, not + S_ISLNK, to determine whether to invoke readlink. + * src/create.c (dump_file): Likewise. + + * src/extract.c (set_mode): + Do not chmod unless we are root or the -p option was given; + this matches historical practice. + (unlink_destination): New function, which checks for unlink failures. + (maybe_recoverable): Stay quiet if -U. + (extract_archive): Use O_EXCL if unlink_first_option. + Report unlink failures. + Use HAVE_SYMLINK, not S_ISLNK, to determine whether symlink exists. + Use HAVE_MKFIFO || defined mkfifo, not S_ISFIFO, to determine whether + mkfifo exists. + + * src/incremen.c (get_directory_contents): Depend on + S_ISHIDDEN, not AIX, to determine whether to invoke S_ISHIDDEN. + + * src/list.c: Remove S_IS* ifdefs. + * src/misc.c (maybe_backup_file): Likewise. + + * src/misc.c (maybe_backup_file): + "Virtual memory exhausted" -> "Memory exhausted", + to conform to the other places this message is issued. + + * src/mangle.c (extract_mangle): + Replace #ifdef S_ISLNK with #ifdef HAVE_SYMLINK. + + * src/rtapelib.c (rmt_open__): + Remove typo that caused us to omit the first char + of the basename. + +1999-07-16 Paul Eggert + + * NEWS, configure.in (AM_INIT_AUTOMAKE): version 1.13.3. + + * doc/tar.texi: A path name is excluded if any of its file name + components matches an excluded pattern, even if the path name was + specified on the command line. + * src/create.c (create_archive): Likewise. + * src/list.c (read_and): Likewise. + * src/update.c (update_archive): Likewise. + * lib/exclude.h (excluded_pathname): New decl. + * lib/exclude.c (_GNU_SOURCE): Define. + (FILESYSTEM_PREFIX_LEN, ISSLASH): New macros. + (excluded_filename_opts): New function. + (excluded_pathname): New function. + + * lib/Makefile.am (EXTRA_DIST): + xstrtol.c moved here from libtar_a_SOURCES. + (libtar_a_SOURCES): Move xstrtol.c to EXTRA_DIST. + Remove xstrtoul.c; no longer needed. + * lib/xstrtol.c: Remove. + + * src/tar.c (decode_options): + Set newer_time_option to TYPE_MINIMUM, so that + negative timestamps are handled correctly. + Replace invocations of xstrtol and xstrtoul with xstrtoumax, for + uniformity (and so that we don't need to have the other fns). + (main): Remove call to init_total_written; no longer needed. + + * configure.in (AC_CHECK_SIZEOF): Remove no-longer-needed + checks for unsigned long and long long. + * src/arith.c: Remove. + * src/Makefile.am (tar_SOURCES): Remove arith.c. + * po/POTFILES.in: Remove src/arith.c. + * src/arith.h: Use double, to simplify configuration gotchas. + (tarlong): Now double. + (TARLONG_FORMAT): New macro. + (BITS_PER_BYTE, BITS_PER_TARLONG, SUPERDIGIT, BITS_PER_SUPERDIGIT, + LONGS_PER_TARLONG, SIZEOF_TARLONG, struct tarlong, + zerop_tarlong_helper, lessp_tarlong_helper, clear_tarlong_helper, + add_to_tarlong_helper, mult_tarlong_helper, print_tarlong_helper, + zerop_tarlong, lessp_tarlong, clear_tarlong, add_to_tarlong, + mult_tarlong, print_tarlong): Remove. All callers replaced with + arithmetic ops. + + * src/common.h (init_total_written): Remove decl. + + * src/buffer.c (total_written): + Remove; replaced with prev_written + bytes_written. + (prev_written): New var. + (init_total_written): Remove. + (print_total_written): Use TARLONG_FORMAT instead of print_tarlong. + + * m4/ulonglong.m4 (jm_AC_TYPE_UNSIGNED_LONG_LONG): + Make sure that we can shift, multiply + and divide unsigned long long values; Ultrix cc can't do it. + + * lib/modechange.c (mode_compile): Use uintmax_t, not unsigned long. + Check for any unknown bits, not just unknown bits left of the leftmost + known bit. + + * lib/quotearg.c (quotearg_buffer): + Don't quote spaces if C quoting style. + * src/list.c (from_oct): + Use C quoting style for error; omit trailing NULs. + +1999-07-14 Paul Eggert + + * configure.in (AM_INIT_AUTOMAKE), NEWS: Version 1.13.2. + + * m4/xstrtoumax.m4 (jm_AC_PREREQ_XSTRTOUMAX): Check whether + defines strtoumax as a macro (and not as a function). + HP-UX 10.20 does this. + + * src/tar.c (usage): tar-bugs@gnu.org -> bug-tar@gnu.org + * PORTS, README, TODO, doc/tar.texi: Likewise. + +1999-07-12 Paul Eggert + + * configure.in (AM_INIT_AUTOMAKE): Version 1.13.1. + (LIBOBJS): Add mktime.o to automake 1.4 bug workaround. + + * src/list.c (decode_header): + Do not assume that S_IFBLK and S_IFCHR are defined. + + * src/create.c (start_header): Do not assume S_IFMT is defined. + (dump_file): Remove unnecessary check for screwy apollo lossage. + Do not assume S_IFBLK and S_IFCHR are defined. + + * src/extract.c (extract_archive): + Test whether S_IFCHR and S_IFBLK are nonzero, + not whether they are defined, for consistency with other tests. + + * src/buffer.c (is_regular_file): + Don't succeed on files that we can't access due to + permissions problems. + (open_archive): Fix wording on fatal error message. + Don't bother to stat /dev/null if the archive is not a character + special device. + + * src/compare.c (process_rawdata, diff_sparse_files, diff_archive): + Report an error, not a warning, for I/O errors. + (process_rawdata, process_dumpdir, diff_sparse_files): + Change ungrammatical "Data differs" to "Contents differ". + (get_stat_data): Find hidden files on AIX. + Accept file name as argument; all uses changed. + (get_stat_data, diff_archive): Use system error message for + nonexistent files rather than rolling our own. + (diff_archive): Unknown file types are errors, not warnings. + Normalize spelling of message to "File type differs". + Use get_stat_data to get link status, for consistency. + Do not inspect st_rdev for fifos. + Do not assume st_mode values contain only file types and mode bits. + Check for mode changes and device number changes separately. + + * src/update.c (append_file): + Open the file before statting it, to avoid a race. + Complain about file shrinkage only when we reach EOF. + +1999-07-08 Paul Eggert + + * NEWS, configure.in (AM_INIT_AUTOMAKE): Version 1.13 released. + + * configure.in (AC_EXEEXT): Add. + + * lib/Makefile.am (noinst_HEADERS): + Add basename.h, exclude.h. Remove full-write.h. + (libtar_a_SOURCES): Add exclude.c. + + * lib/basename.h, lib/exclude.c, lib/exclude.h, lib/safe-read.h: + New files. + * lib/full-write.c: Include safe-read.h instead of full-write.h. + * lib/safe-read.h (safe_read): New decl. + * src/rmt.c: Include safe-read.h. + * src/rtapelib.c: Include basename.h, save-read.h. + (rmt_open__): Use base_name to compute base name. + + * src/common.h: + Include basename.h, exclude.h; don't include full-write.h. + (exclude_option): Remove decl. + (excluded): New decl. + (add_exclude, add_exclude_file, check_exclude): Remove decls. + + * src/list.c (read_and): + Use excluded_filename instead of check_exclude. + Check base name of incoming file name, not entire file name, when + deciding whether to exclude it. + + * src/create.c (finish_sparse_file): + Use excluded_filename instead of check_exclude. + Don't bother to stat excluded file names. + * src/incremen.c (get_directory_contents): Likewise. + + * src/names.c (exclude_pool, exclude_pool_size, + allocated_exclude_pool_size, simple_exclude_array, + simple_excludes, allocated_simple_excludes, + pattern_exclude_array, pattern_excludes, + allocated_pattern_excludes, add_exclude, add_exclude_file, + check_exclude): + Remove; now done in ../lib/exclude.c. + + * src/tar.c (decode_options): Initialize `excluded'. + Use new add_exclude_file and add_exclude functions. + +1999-07-05 Paul Eggert + + * m4/gettext.m4: Use changequote rather than [[ ]]. + + * lib/safe-read.c: Renamed from lib/full-read.c. + (safe_read): Renamed from full_read. All uses changed. + * lib/safe-read.h, lib/full-write.h: New files. + * lib/Makefile.am (noinst_HEADERS): Add full-write.h, safe-read.h. + (libtar_a_SOURCES): Rename full-read.c to safe-read.c. + * lib/full-write.c: Include full-write.h. + * src/common.h: Include full-write.h, safe-read.h. + * src/system.h: (full_read, full_write): Remove decls. + + * src/Makefile.am (datadir): New var; needed for Solaris gettext. + + * src/system.h (bindtextdomain, textdomain): undef before + defining, to avoid preprocessor warnings with --disable-nls + on hosts whose locale.h includes libintl.h. + + * lib/xstrtol.c (__strtol): Remove decl; it doesn't work if __strtol + expands to a macro, which occurs in HP-UX 10.20 with strtoumax. + (strtol, strtoul): New decls (for pre-ANSI hosts), to replace + the above decl. + +1999-07-02 Paul Eggert + + * Makefile.am (ACINCLUDE_INPUTS): Add $(M4DIR)/mktime.m4. + * m4/mktime.m4: New file. + * m4/Makefile.am.in, m4/README: Remove these files. + * m4/Makefile.am (EXTRA_DIST): Add mktime.m4; + remove README, Makefile.am.in. + (Makefile.am): Remove rule; it didn't work in BSD/OS 4.0. + * m4/jm-mktime.m4 (jm_FUNC_MKTIME): Invoke AC_FUNC_MKTIME, + not AM_FUNC_MKTIME. + + * src/tar.c: Include signal.h. + (SIGCHLD): Define to SIGCLD if SIGCLD is defined but SIGCHLD is not. + (main): Ensure SIGCHLD is not ignored. + + (BACKUP_OPTION, DELETE_OPTION, EXCLUDE_OPTION, GROUP_OPTION, + MODE_OPTION, NEWER_MTIME_OPTION, NO_RECURSE_OPTION, NULL_OPTION, + OWNER_OPTION, POSIX_OPTION, PRESERVE_OPTION, RECORD_SIZE_OPTION, + RSH_COMMAND_OPTION, SUFFIX_OPTION, USE_COMPRESS_PROGRAM_OPTION, + VOLNO_FILE_OPTION, OBSOLETE_ABSOLUTE_NAMES, + OBSOLETE_BLOCK_COMPRESS, OBSOLETE_BLOCKING_FACTOR, + OBSOLETE_BLOCK_NUMBER, OBSOLETE_READ_FULL_RECORDS, OBSOLETE_TOUCH, + OBSOLETE_VERSION_CONTROL): Make sure they can't be valid chars, so + they don't overlap with char codes. Use an enum instead of a lot + of #defines. + + * src/system.h (ISASCII): Remove. + (CTYPE_DOMAIN, ISDIGIT, ISODIGIT, ISPRINT, ISSPACE, S_ISUID, + S_ISGID, S_IRUSR, S_IWUSR, S_IXUSR, S_IRGRP, S_IWGRP, S_IXGRP, + S_IROTH, S_IWOTH, S_IXOTH, MODE_WXUSR, MODE_R, MODE_RW, + MODE_RWX, MODE_ALL, SEEK_SET, SEEK_CUR, SEEK_END, CHAR_MAX, + LONG_MAX): New macros. + + * src/incremen.c (ISDIGIT, ISSPACE): Remove; now in system.h. + (read_directory_file): Cast ISSPACE arg to unsigned char. + * src/misc.c (ISPRINT): Remove; now in system.h. + (remove_any_file): Add brackets to pacify gcc -Wall. + * src/list.c: Don't include ; system.h already does this. + (ISODIGIT, ISSPACE): Remove; now in system.h. + (decode_header): No need to AND mode with 07777; MODE_FROM_OCT + does this now. + (from_oct): Cast ISSPACE arg to unsigned char. + + * src/create.c (mode_to_oct): Translate modes from internal to + external form. + * src/list.c (mode_from_oct): Translate modes from external to + internal form. Do not complain about unrecognized mode bits. + * src/common.h (TSUID, TSGID, TSVTX, TUREAD, TUWRITE, TUEXEC, + TGREAD, TGWRITE, TGEXEC, TOREAD, TOWRITE, TOEXEC): Remove undefs. + + * src/extract.c: (extr_init, make_directories, extract_archive): + Do not assume mode bits have traditional Unix values. + * src/list.c (decode_mode): Likewise. + * src/create.c (start_header, dump_file): Likewise. + * src/buffer.c (child_open_for_compress, + child_open_for_uncompress, open_archive, (close_archive): Likewise. + * src/compare.c (diff_archive): Likewise. + + * src/extract.c (set_mode): Use %04 not %0.4 format. + (extract_sparse_file): Do not use data_block uninitialized. + Check for lseek failures. + + * src/rtapelib.c (rmt_lseek__): + Convert lseek whence values to portable integers on the wire. + * src/rmt.c (main): Likewise. Check for whence values out of range. + + * src/create.c (finish_sparse_file): Use lseek whence macros + instead of integers. + * src/buffer.c (backspace_output): Likewise. + * src/compare.c (diff_archive, verify_volume): Likewise. + * src/delete.c (move_archive): Likewise. + * src/extract.c (extract_sparse_file): Likewise. + + * src/create.c (dump_file): Do not invoke finish_sparse_file + on a negative file descriptor. + + * src/buffer.c: Add braces to pacify gcc -Wall. + + * src/compare.c (diff_sparse_files): Report lseek errors. + + * configure.in (ALL_LINGUAS): Add cs, es, ru. + + * PORTS, TODO: gnu.ai.mit.edu -> gnu.org + + * src/arith.c, src/buffer.c (new_volume): Don't put ^G in + message to be internationalized; \a doesn't work with msgfmt. + + * src/tar.c (long_options, main, usage, OPTION_STRING): + Remove -E or --ending-file. + * src/list.c (read_and): Likewise. + * src/common.h (ending_file_option): Likewise. + * src/buffer.c (close_archive): Likewise. + + * tests/after: Don't run two commands together in a pipeline, + as some old shells mishandle pipeline exit status. + +1999-06-28 Paul Eggert + + * configure.in (AM_INIT_AUTOMAKE): version 1.12.64015. + * NEWS: Describe changes since 1.12. + * README: Update bug reporting address; move paxutils ref to NEWS. + + Handle EINTR correctly. + * lib/Makefile.am (libtar_a_SOURCES): Add full-read.c, full-write.c. + * lib/full-read.c, lib/full-write.c: New files. + * src/buffer.c (child_open_for_compress, child_open_for_uncompress): + Prefer full_read to read and full_write to write. + * src/compare.c (process_rawdata, diff_sparse_files): Likewise. + * src/create.c (deal_with_sparse, finish_sparse_file, dump_file): + Likewise. + * src/extract.c (extract_sparse_file): Likewise. + * src/rmt.c (get_string, main, report_error_message, + report_numbered_error): Likewise. + * src/rmt.h (rmtread, rmtwrite): Likewise. + * src/rtapelib.c (do_command, get_status_string, rmt_read__, + rmt_write__, rmt_ioctl__): Likewise. + * src/update.c (append_file): Likewise. + * src/system.h (full_read, full_write): New decls. + + * po/POTFILES.in: Add lib/argmatch.c, lib/error.c lib/getopt.c, + lib/xmalloc.c, src/arith.c, src/misc.c. + + * src/system.h (STDIN_FILENO, STDOUT_FILENO, STDERR_FILENO): + New macros. All uses of STDIN and STDOUT changed. + * src/rmt.c (prepare_record_buffer, main): Use STDIN_FILENO + instead of 0 and STDOUT_FILENO instead of 1. + * src/rtapelib.c (_rmt_rexec): Use STDIN_FILENO and STDOUT_FILENO + instead of fileno (stdin) and fileno (stdout) or 0 and 1. + + * src/rmt.c (private_strerror): Avoid const. Translate results. + + * tests/Makefile.am (TESTS): Remove incremen.sh; it doesn't work + in the presence of NFS clock skew. + +1999-06-25 Paul Eggert + + * configure.in (AM_INIT_AUTOMAKE): version 1.12.64014. + + * src/buffer.c (write_archive_buffer): New function. + (child_open_for_compress, flush_write, flush_read): Use it to write + buffers. + (open_archive): Report error if fstat of archive fails. + Improve efficiency of check for /dev/null. + Also, fix some corner cases with remote archives and /dev/null checking. + (close_archive): Test for input fifo only if not remote. + Truncate output archive only if it's not remote. + + * src/misc.c (remove_any_file): + Don't terminate if you see . or ..; just skip them. + +1999-06-18 Paul Eggert + + * configure.in (AM_INIT_AUTOMAKE): version 1.12.64013. + + Output sizes using a format that's more compatible with + traditional tar (and with GNU Emacs). + * src/common.h (GID_TO_OCT, MAJOR_TO_OCT, MINOR_TO_OCT, + MODE_TO_OCT, SIZE_TO_OCT, UID_TO_OCT, UINTMAX_TO_OCT): + Don't subtract 1 from size. + * src/create.c (to_oct): Prepend leading zeros, not spaces. + Output a trailing NUL unless the value won't fit without it. + (finish_header): No need to append NUL to chksum, now that + to_oct is doing it. + +1999-06-16 Paul Eggert + + * NEWS, configure.in (AM_INIT_AUTOMAKE): version 1.12.64012. + + * src/Makefile.am (LDADD): Link libtar.a after @INTLLIBS@, since + @INTLLIBS@ might invoke rpl_realloc. + + * src/tar.c (backup_type): Remove decl; backupfile.h now has it. + (intconv): Remove; use xstrto* fns instead. + ("xstrtol.h"): Include. + (check_decimal): Remove. + (long_options, usage, OPTION_STRING, decode_options): + Remove -y, --bzip2, --unbzip2. + (decode_options): Use xget_version instead of get_version. + Check for overflow with -b and -L and RECORD_SIZE_OPTION. + Replace invocations of check_decimal with xstrtoumax. + + * tests/preset.in (echo_n, echo_c): Remove. + + * tests/after: Don't rely on $echo_c and $echo_n. + + * lib/addext.c, lib/dirname.c, lib/lchown.c, lib/lchown.h, + lib/malloc.c, lib/mktime.c, lib/realloc.c, lib/strtol.c, lib/strtoul.c, + lib/strtoull.c, lib/strtoumax.c, lib/utime.c, lib/xstrtol.c, + lib/xstrtol.h, lib/xstrtoul.c, lib/xstrtoumax.c, + m4/Makefile.am.in, m4/README, m4/ccstdc.m4, m4/d-ino.m4, + m4/gettext.m4, m4/inttypes_h.m4, m4/isc-posix.m4, + m4/jm-mktime.m4, m4/largefile.m4, m4/lcmessage.m4, + m4/malloc.m4, m4/progtest.m4, m4/realloc.m4, m4/uintmax_t.m4, + m4/ulonglong.m4, m4/utimbuf.m4, m4/utime.m4, m4/utimes.m4, + m4/xstrtoumax.m4: New files. + + * configure.in(fp_PROG_ECHO): Remove; no longer needed. + (AC_SYS_LARGEFILE): Renamed from AC_LFS. + (jm_AC_HEADER_INTTYPES_H): Replaces inline code. + (jm_STRUCT_DIRENT_D_INO, jm_AC_TYPE_UINTMAX_T, jm_AC_PREREQ_XSTRTOUMAX): Add. + (AC_CHECK_FUNCS): Remove lchown. + (AC_REPLACE_FUNCS): Remove basename, dirname. + Add lchown, strtol, strtoul. + (jm_FUNC_MKTIME): Add. + (LIBOBJS): Replace .o with $U.o, so that the .o files in LIBOBJS + are also built via the ANSI2KNR-filtering rules. + Use a no-op line to work around bug in automake 1.4 with malloc and + realloc. + (AC_OUTPUT): Add m4/Makefile. + + * lib/Makefile.am (EXTRA_DIST): + Add lchown.c, malloc.c, mktime.c, realloc.c, + strtol.c, strtoul.c, strtoull.c, strtoumax.c, utime.c. + (noinst_HEADERS): Add lchown.h, modechange.h, xstrtol.h. + (libtar_a_SOURCES): Add addext.c, basename.c, xstrtol.c, + xstrtoul.c, xstrtoumax.c. Remove getversion.c. + ($(srcdir)/getdate.c:): Remove `expect conflicts' line. + + * src/system.h (uintmax_t): Don't declare; configure now does this. + + * src/common.h (backup_type): New decl. + * src/common.h, src/misc.c, src/tar.c: + Move include of backupfile.h to common.h. + + * src/misc.c (maybe_backup_file): + Pass backup_type to find_backup_file_name. + + * src/list.c (print_header): Change sizes of uform and gform from 11 to + UINTMAX_STRSIZE_BOUND. + + * doc/tar.texi: Remove --bzip2. + Fix @xref typos reported by latest makeinfo. + + * Makefile.am (ACLOCAL_AMFLAGS): New macro. + (SUBDIRS): Add m4. + (M4DIR, ACINCLUDE_INPUTS): New macros. + ($(srcdir)/acinclude.m4): New rule. + + * acconfig.h (ENABLE_NLS, HAVE_CATGETS, HAVE_GETTEXT, + HAVE_INTTYPES_H, HAVE_LC_MESSAGES, HAVE_STPCPY): Remve #undefs; + now generated automatically by autoconf. + +1999-05-15 Paul Eggert + + * doc/tar.texi: Remove -y. + +1999-04-09 Paul Eggert + + * src/system.h (INT_STRLEN_BOUND): Fix off-by-factor-of-10 typo + (we were allocating too much storage). + (uintmax_t): Don't declare; configure now does this. + + * ABOUT-NLS: Update to gettext 0.10.35 edition. + +1999-03-22 Paul Eggert + + * NEWS, configure.in (AM_INIT_AUTOMAKE): version 1.12.64010 + + * acinclude.m4 (AC_LFS_FLAGS): + Don't use -mabi=n32 with GCC on IRIX 6.2; it's the default. + (AC_LFS): -n32, -o32, and -n64 are CPPFLAGS, not CFLAGS. + (jm_FUNC_MALLOC, jm_FUNC_REALLOC): New macros. + + * configure.in (jm_FUNC_MALLOC, jm_FUNC_REALLOC): + New macros; needed for latest GNU xmalloc.c. + + * Makefile.am (noinst_HEADERS): Add quotearg.h, xalloc.h. + (libtar_a_SOURCES): Add quotearg.c. + * list.c: Include . + (from_oct): Add forward decl. + (read_header): Return HEADER_FAILURE if we can't parse the checksum. + (from_oct): Report an error only if TYPE is nonzero. + Quote any funny characters in bad header. + +1999-03-20 Paul Eggert + + * NEWS, configure.in (AM_INIT_AUTOMAKE): version 1.12.64009 + + * acinclude.m4 (AC_LFS_FLAGS): Add support for IRIX 6.2 and later. + (AC_LFS_SPACE_APPEND): Assume $2 is quoted properly; all callers + changed. + (AC_LFS): Simplify AIX revision number test. + +1999-03-17 Paul Eggert + + * NEWS, configure.in (AM_INIT_AUTOMAKE): version 1.12.64008 + + * configure.in (AC_VALIDATE_CACHED_SYSTEM_TUPLE): + Remove; it doesn't work that well + with AC_CANONICAL_HOST. + (fp_WITH_INCLUDED_MALLOC): Remove; we'll just use the system malloc. + + * Makefile.am (EXTRA_DIST): Remove AC-PATCHES, AM-PATCHES, BI-PATCHES. + + * Makefile.am (EXTRA_DIST): Remove gmalloc.c. + + * acinclude.m4 (fp_WITH_INCLUDED_MALLOC): Remove. + + * tar.texi: Fix bug-report addr. + + * README: Remove --with-included-malloc. + Upgrade version numbers of build software. + +1999-03-07 Paul Eggert + + * NEWS, configure.in (AM_INIT_AUTOMAKE): Version 1.12.64007. + + * acinclude.m4 (AM_WITH_NLS): Port to Solaris 2.5.1, + where bindtextdomain and gettext require -lintl. + (AC_LFS_FLAGS): Simplify so that it only gets the flags; + `no' means it failed. + (AC_LFS_SPACE_APPEND, AC_LFS_MACRO_VALUE): New macros. + (AC_LFS): Use them. Set _FILE_OFFSET_BITS, _LARGEFILE_SOURCE, and + _LARGE_FILES from LFS_CFLAGS, so that in the normal case we don't need + to add anything to the command line (it's all in config.h). + Put any extra -D and -I options into CPPFLAGS, the rest into CFLAGS. + +1999-03-01 Paul Eggert + + * NEWS, configure.in (AM_INIT_AUTOMAKE): Version 1.12.64006. + + * acinclude.m4 (AC_LFS_FLAGS): Port to AIX 4.2. + + * src/list.c: (gid_from_oct, major_from_oct, minor_from_oct, + mode_from_oct, off_from_oct, size_from_oct, time_from_oct, + uid_from_oct, uintmax_from_oct): Use TYPE_MAXIMUM instead of macros + like OFF_MAX, which are not reliable + (e.g. OFF_MAX in AIX 4.2 is incorrect). + * src/system.h (GID_MAX, MAJOR_MAX, MINOR_MAX, MODE_MAX, OFF_MAX, + SIZE_MAX, TIME_MAX,UID_MAX, UINTMAX_MAX): Remove; no longer used. + + * src/incremen.c (get_directory_contents): + Don't use statx if _LARGE_FILES; it doesn't work under AIX 4.2. + Have statx depend on STX_HIDDEN, not AIX. + + * src/create.c (to_oct): + New parameter substitute, giving a substitute value to use + when the original value is out of range. Do not append a space to the + output; modern tars don't. When a value is out of range, specify the + maximum value, not the number of bits. + (GID_NOBODY, UID_NOBODY): New macros. + (gid_to_oct, uid_to_oct): Use them as substitutes. + (finish_header): Do not assume that UINTMAX_TO_OCT appends a space. + (dump_file): Check whether the file changed as we read it. + + * src/rmt.c (main): Remove suspicious AIX/386 code. + +1999-02-19 Paul Eggert + + * intl/localealias.c (read_alias_file): Don't assume that memcpy + returns a type compatible with char *; it doesn't on SunOS + 4.1.4 with Sun cc, since doesn't declare memcpy. + + * NEWS, configure.in (AM_INIT_AUTOMAKE): Version 1.12.64005. + + * src/tar.c (long_options, usage): Prefer --unbzip2 to --bunzip2. + * doc/tar.texi: Add --bzip2, --unbzip2 options. + + * configure.in (AC_CANONICAL_HOST, AC_VALIDATE_CACHED_SYSTEM_TUPLE): + Add. + (AC_LINK_FILES): Omit; AM_GNU_GETTEXT now does this. + (AC_OUTPUT): Omit munging of po/Makefile; AM_GNU_GETTEXT now does this. + * acinclude.m4 (AM_WITH_NLS): + Update to latest gettext version (serial 5). + (AC_LFS_FLAGS): New macro + (AC_LFS): Use it. Append to CFLAGS, LDFLAGS, LDLIBS instead of + working only with unset variables. Append to CFLAGS, not CPPFLAGS. + Work properly in cross-compilation scenario, by checking for getconf + with AC_CHECK_TOOL and by ditching uname in favor of + AC_CANONICAL_HOST and $host_os. Add --disable-lfs option. + + * lib/getdate.y: Update to fileutils 4.0 getdate.y, with one patch: + replace FORCE_ALLOCA_H with HAVE_ALLOCA_H. + * lib/Makefile.am (AUTOMAKE_OPTIONS): Append ../src/ansi2knr, + since getdate.y now uses ANSI code. + + * config.guess, config.sub: New files; taken from automake 1.4. + + * intl/Makefile.in, intl/VERSION, intl/bindtextdom.c, + intl/cat-compat.c, intl/dcgettext.c, intl/dgettext.c, + intl/explodename.c, intl/finddomain.c, intl/gettext.c, + intl/gettext.h, intl/gettextP.h, intl/hash-string.h, + intl/l10nflist.c, intl/libgettext.h, intl/loadinfo.h, + intl/loadmsgcat.c, intl/localealias.c, intl/textdomain.c: + Update to GNU gettext 0.10.35, with patches as per GCC snapshot 990109. + +1999-02-01 Paul Eggert + + * src/tar.c: Update copyright. + + * NEWS: 1.12.64004 + +1999-02-01 Paul Eggert + + * NEWS, configure.in: Version 1.12.64004 + + * configure.in (AC_LFS): Use this macro, instead of open-coding it. + + * acinclude.m4 (AC_LFS, AM_PROG_CC_STDC): New macros. + + * src/extract.c (extract_archive): Fix bug when extracting sparse + files: they were trashing the tar file header. + + * src/tar.c: (long_options, usage, OPTION_STRING, decode_options): + Add -y or --bzip2 or --bunzip2 option. + +1999-01-30 Paul Eggert + + * src/names.c (cached_no_such_uname, cached_no_such_gname, + cached_no_such_uid, cached_no_such_gid): New vars. + (uid_to_uname, gid_to_gname, uname_to_uid, gname_to_gid): + Cache failures, too. + + * src/tar.c (decode_options): + Don't pass names longer than UNAME_FIELD_SIZE to + uname_to_uid, as it messes up the cache. Similarly for gname_to_uid. + +1999-01-27 Paul Eggert + + * NEWS, configure.in: Version 1.12.64003 + + * src/buffer.c (backspace_output, close_archive): Cast + rmtlseek position arg to off_t, for benefit of K&R compilers + with long long. + * src/compare.c (verify_volume): Likewise. + + * NEWS, configure.in: Version 1.12.64002 + + * src/create.c (gid_to_oct, major_to_oct, minor_to_oct, mode_to_oct, + off_to_oct, size_to_oct, time_to_oct, uid_to_oct): + Cast arg to uintmax_t for benefit of pre-ANSI compilers with long long. + * src/list.c: (gid_from_oct, major_from_oct, minor_from_oct, + mode_from_oct, off_from_oct, size_from_oct, time_from_oct, + uid_from_oct): Likewise. + +1999-01-25 Paul Eggert + + * incremen.sh: Fix timing bug in regression test. + +1999-01-22 Paul Eggert + + * NEWS, configure.in: Update version + + * Makefile.am (localedir): Change to $(datadir)/locale. + (DEFS): New macro, defining LOCALEDIR. + (tar.o, tar._o, rmt.o, rmt._o): Remove. + (INCLUDES): Add -I.. + + * Makefile.am (localedir): Change to $(datadir)/locale. + +1999-01-21 Paul Eggert + + * NEWS, README, configure.in: Unofficial version 1.12.64001. + + * tests/Makefile.am (localedir): Change to $(datadir)/locale. + * src/Makefile.am (localedir): Likewise. + (DEFS): New macro, defining LOCALEDIR. + (tar.o, tar._o, rmt.o, rmt._o): Remove. + (INCLUDES): Add `-I..'. + + * tests/incremen.sh: Fix timing bug. + +1999-01-20 Paul Eggert + + * NEWS, README, configure.in: Unofficial version 1.12.64000. + `lfs.7' changed to `64000' in version number + to conform to gnits standards. + + * COPYING, INSTALL, doc/texinfo.tex, install-sh, missing, + mkinstalldirs, ansi2knr.c: Update to latest public versions. + + Rebuild with automake 1.4 and autoconf 2.13, to work around some + porting problems. + +1998-12-07 Paul Eggert + + * NEWS, README, configure.in: Unofficial version 1.12.lfs.6. + + * src/list.c (read_header): + Accept file names as specified by POSIX.1-1996 section 10.1.1. + +1998-11-30 Paul Eggert + + * configure.in: Quote the output of uname. + + * src/extract.c (set_stat): chmod after chown even when not root; + if we are using --same-owner this is needed e.g. on Solaris 2.5.1. + +1998-11-15 Paul Eggert + + * NEWS, README, configure.in: Unofficial version 1.12.lfs.5. + + * configure.in (ac_test_CPPFLAGS, ac_test_LDFLAGS, ac_test_LIBS, + ac_getconfs, ac_result): Special case for HP-UX 10.20 or later. + +1998-10-28 Paul Eggert + + * NEWS, README, configure.in: Unofficial version 1.12.lfs.4. + + * src/system.h (voidstar): Use void * if __STDC__ is defined, + not merely nonzero. + + * src/rtapelib.c: Don't use rexec code unless compiled with WITH_REXEC. + On many installations, rexec is disabled. + +1998-08-07 Paul Eggert + + * NEWS, README, configure.in: Unofficial version 1.12.lfs.3. + + * src/names.c (uid_to_uname, gid_to_gname): Don't used cached name + for nameless users and groups. + +1998-02-17 Paul Eggert + + * NEWS, README, configure.in: Unofficial version 1.12.lfs.2. + * NEWS, README: Add explanation of why this isn't an official version. + +1998-02-02 Paul Eggert + + * NEWS, README, configure.in: Unofficial version 1.12.lfs.1. + This is an unofficial version. + +1997-12-17 Paul Eggert + + * src/incremen.c (ST_DEV_MSB): New macro. + (NFS_FILE_STAT): Use most significant bit of st_dev, + even if it's unsigned. + +1997-12-08 Paul Eggert + + * src/system.h (ST_NBLOCKS): Fix typo in definition. + +1997-11-19 Paul Eggert + + * configure.in (HAVE_INTTYPES_H): + Don't ignore cache variable if it's already set. + +1997-11-10 Paul Eggert + + * src/rmt.c (main): Don't assume mt_count is of type daddr_t. + * src/delete.c (records_read): Now off_t. + (move_archive): Don't assume mt_count is of type daddr_t. + +1997-10-30 Paul Eggert + + * configure.in (CPPFLAGS, LDFLAGS, LIBS): + Set to appropriate values if large file support + needs explicit enabling. + (HAVE_INTTYPES_H, HAVE_ST_FSTYPE_STRING, daddr_t, major_t, minor_t, + ssize_t): + New macros to configure. + (AC_TYPE_MODE_T, AC_TYPE_PID_T, AC_TYPE_OFF_T): Add. + + * acconfig.h (daddr_t, HAVE_INTTYPES_H, HAVE_ST_FSTYPE_STRING, + major_t, minor_t, ssize_t): New macros. + + * src/arith.h (TARLONG_FORMAT): + Fix typo: %uld -> %lu. Use unsigned when long long + (%lld -> %llu). + (add_to_tarlong_helper, mult_tarlong_helper): 2nd arg is now unsigned long. + (add_to_tarlong, mult_tarlong): Cast 2nd arg to unsigned long. + + * src/arith.c (add_to_tarlong_helper, mult_tarlong_helper): + 2nd arg is now unsigned long. + + * src/rmt.c (allocated_size): Now size_t, and now initialized to 0. + (prepare_record_buffer): Arg is now size_t. + Remove now-useless casts. + + (main): Use `long' for status, so that it can store ssize_t. + Use daddr_t, mode_t, size_t, off_t when appropriate. + Convert daddr_t and off_t values ourselves, since they might be longer + than long. Convert other types using `long' primitives. + When processing MTIOCTOP, do not try to pass resulting + count back, since it won't work (it could be too large) and it's + not expected anyway. + + * src/update.c: + (append_file) Use off_t, size_t, ssize_t when appropriate. Remove + now-useless casts. Use unsigned long to print *_t types, except use + STRINGIFY_BIGINT for off_t. + (update_archive): Cast -1 to dev_t when necessary. + + * src/tar.c (check_decimal): + Now returns 1 if successful, 0 otherwise, and returns + uintmax_t value into new arg. Check for arithmetic overflow. + (decode_options): Avoid overflow if record_size fits in size_t but not int. + Check for overflow on user or group ids. + + * src/compare.c (diff_init, process_rawdata, read_and_process, + diff_sparse_files, diff_archive): + Use off_t, pid_t, size_t, ssize_t when appropriate. + Remove now-useless casts. Use unsigned long to print *_t types, + except use STRINGIFY_BIGINT for off_t. + + (process_noop, process_rawdata, process_dumpdir, read_and_process): + Size arg is now size_t. + + (diff_sparse_files): Arg is now off_t. Check for size_t overflow + when allocating buffer. + + * src/rtapelib.c: + (do_command, rmt_open__, rmt_read__, rmt_lseek__, rmt_ioctl__): + Use pid_t, size_t, ssize_t when appropriate. Remove now-useless casts. + Use unsigned long to print *_t types, except use STRINGIFY_BIGINT for + off_t. + + (get_status_string, get_status_off): New function. + (get_status): Now returns long, so that it can store ssize_t. + Invoke get_status_string to do the real work. + (rmt_read__, rmt_write__): Now returns ssize_t. Size arg is now size_t. + (rmt_lseek__): Now returns off_t, using new get_status_off function. + (rmt_ioctl__): Convert mt_count by hand, + since it might be longer than long. + + * src/mangle.c (extract_mangle): + Check for overflow when converting off_t to size_t. + Use off_t, size_t when appropriate. Remove now-useless casts. + + * src/system.h (mode_t): Remove; now done by autoconf. + (ST_NBLOCKS): Do not overflow if st_size is near maximum. + Return number of ST_NBLOCKSIZE-byte blocks, + not number of 512-byte blocks; + this also helps to avoid overflow. + (st_blocks): Declare if needed. + (ST_NBLOCKSIZE): New macro. + (, ): Include if available. + (CHAR_BIT): New macro. + (uintmax_t): New typedef. + (TYPE_SIGNED, TYPE_MINIMUM, TYPE_MAXIMUM, INT_STRLEN_BOUND, + UINTMAX_STRSIZE_BOUND, GID_MAX, MAJOR_MAX, MINOR_MAX, MODE_MAX, + OFF_MAX, SIZE_MAX, TIME_MAX, UID_MAX, UINTMAX_MAX): New macros. + + * src/names.c (name_init): + Fix typo in error message: FILE* was passed, but char* + was wanted. + + (read_name_from_file, name_gather, addname, name_match, name_scan, + add_exclude): Use size_t when appropriate. Remove now-useless casts. + + (exclude_pool_size, allocated_exclude_pool_size): Now size_t. + + * src/extract.c (newdir_umask, current_umask): Now mode_t. + (extract_sparse_file): Args now use off_t. + + (set_mode, set_stat, make_directories, extract_sparse_file, + extract_archive): Use off_t, size_t, ssize_t when appropriate. Remove + now-useless casts. Use unsigned long to print *_t types, except use + STRINGIFY_BIGINT for off_t. + + * src/misc.c (quote_copy_string): + Use size_t when appropriate. Remove now-useless casts. + + * src/list.c (read_and, list_archive, read_header, decode_mode, + print_header, print_for_mkdir): + Use mode_t, off_t, size_t when appropriate. Remove + now-useless casts. Use unsigned long to print *_t types, except use + STRINGIFY_BIGINT for off_t. + + (read_header): Check for overflow when converting header size. + + (from_oct): Now static. Now returns uintmax_t. `where' arg is now + const char *. Size arg is now size_t. Now takes new type and maxval + args. Compute result using uintmax_t, not long. Report error if + field does not contain octal number in range. + (gid_from_oct, major_from_oct, minor_from_oct, mode_from_oct, + off_from_oct, size_from_oct, time_from_oct, uid_from_oct, + uintmax_from_oct): New functions. + + (stringify_uintmax_t_backwards): New function. + + (decode_mode, print_for_mkdir): Mode arg is now mode_t. + (skip_file): Offset arg is now off_t. + + * src/buffer.c (record_start_block, save_totsize, save_sizeleft, + real_s_totsize, real_s_sizeleft, current_block_ordinal): + Now off_t. + (write_error): Arg is now ssize_t. + (child_pid): Now pid_t. + (available_space_after): Now size_t. + + (child_open_for_compress, child_open_for_uncompress, flush_write, + open_archive, flush_write, write_error, flush_read, close_archive): + Use pid_t, ssize_t, size_t when appropriate. Remove now-useless + casts. Use unsigned long to print *_t types, except use + STRINGIFY_BIGINT for off_t. + + * src/delete.c (records_read): Now daddr_t. + (move_archive): Arg is now daddr_t. Check for overflow when + computing offset. + (move_archive, delete_archive_members): Use daddr_t, off_t when + appropriate. Remove now-useless casts. + + * src/rmt.h (rmt_read__, rmt_write__): Now returns ssize_t. + (rmt_lseek): Now returns off_t. + + * src/create.c (to_oct): + Now static. Value arg is now uintmax_t. Accept new args + giving name of type of octal field, for error messages. Report an + error if the value is too large to fit in the field. + (gid_to_oct, major_to_oct, minor_to_oct, mode_to_oct, off_to_oct, + size_to_oct, time_to_oct, uid_to_oct, uintmax_to_oct): New functions. + + (write_eot, write_long, finish_header, deal_with_sparse, + finish_sparse_file, dump_file): Use dev_t, off_t, ssize_t, size_t when + appropriate. Remove now-useless casts. Use unsigned long to print + *_t types, except use STRINGIFY_BIGINT for off_t. + + (find_new_file_size): 1st arg is now off_t*. + (finish_sparse_file): Args now use off_t, not long. + Check for lseek error. + (create_archive, dump_file): Cast -1 to dev_t when necessary. + (dump_file): Device arg is now dev_t. + Avoid overflow when testing whether file has holes + by using the new ST_NBLOCKSIZE macro. + + * src/incremen.c (struct accumulator, add_to_accumulator, + get_directory_contents, add_hierarchy_to_namelist, gnu_restore): + Use size_t for sizes. + (struct directory, get_directory_contents, add_hierarchy_to_namelist): + Use dev_t, ino_t for devices and inodes. + (gnu_restore): Use off_t for file offsets. + (struct directory): Use char for flags. Add new flag `nfs'. + (nfs): New constant + (NFS_FILE_STAT): New macro. + (note_directory): Accept struct stat * instead of + device and inode number. All callers changed. + (note_directory, get_directory_contents): + Use NFS_FILE_STAT to determine whether directory is an NFS directory. + (write_dir_file): Cast time_t to unsigned long before printing as %lu. + + * src/common.h (record_size, struct name, struct sp_array, + available_space_after): + Use size_t for sizes. + (save_sizeleft, save_totsize, current_block_ordinal, skip_file): + Use off_t for file offsets. + (struct name): dir_contents is now const char *, not char *. + (dump_file, get_directory_contents): Use dev_t for devices. + (to_oct): Remove decl. + (GID_TO_OCT, MAJOR_TO_OCT, MINOR_TO_OCT, MODE_TO_OCT, SIZE_TO_OCT, + UID_TO_OCT, UINTMAX_TO_OCT, OFF_TO_OCT, TIME_TO_OCT, STRINGIFY_BIGINT, + GID_FROM_OCT, MAJOR_FROM_OCT, MINOR_FROM_OCT, MODE_FROM_OCT, + OFF_FROM_OCT, SIZE_FROM_OCT, TIME_FROM_OCT, UID_FROM_OCT, + UINTMAX_FROM_OCT): New macros. + (gid_to_oct, major_to_oct, minor_to_oct, mode_to_oct, off_to_oct, + size_to_oct, time_to_oct, uid_to_oct, uintmax_to_oct, + stringify_uintmax_t_backwards, gid_from_oct, major_from_oct, + minor_from_oct, mode_from_oct, off_from_oct, size_from_oct, + time_from_oct, uid_from_oct, uintmax_from_oct): New decls. + (print_for_mkdir): 2nd arg is now mode_t. + + ----- + + See ChangeLog.1 for earlier changes. + + ----- + + Copyright (C) 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 + Free Software Foundation, Inc. + + This file is part of GNU tar. + + GNU tar is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + GNU tar is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with GNU tar; see the file COPYING. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. + +Local Variables: +mode: change-log +version-control: never +End: diff --git a/Makefile.am b/Makefile.am index 61528cab..d3e1d615 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,7 +1,7 @@ # Main Makefile for GNU tar. -# Copyright (C) 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2003, 2007 Free -# Software Foundation, Inc. +# Copyright (C) 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2003, 2007, +# 2009 Free Software Foundation, Inc. ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by @@ -19,13 +19,22 @@ ## 02110-1301, USA. ACLOCAL_AMFLAGS = -I m4 -EXTRA_DIST = ChangeLog.1 PORTS -SUBDIRS = doc lib rmt src scripts po tests +EXTRA_DIST = ChangeLog.1 Make.rules +SUBDIRS = doc gnu lib rmt src scripts po tests dist-hook: + $(MAKE) changelog_dir=$(distdir) make-ChangeLog -rm -f $(distdir).cpio find $(distdir) | cpio -Hcrc -o | \ GZIP=$(GZIP_ENV) gzip -c > $(distdir).cpio.gz distclean-local: -rm -f $(distdir).cpio.gz + +include Make.rules + +gen_start_date = 2009-03-06 +prev_change_log = ChangeLog.CVS +changelog_dir = . + + diff --git a/Makefile.in b/Makefile.in index 55a4fc7a..5e9dda99 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1,163 +1,767 @@ -# Makefile.in generated automatically by automake 1.1n from Makefile.am +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# @configure_input@ -# Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc. +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. - -# Main Makefile for GNU tar. -# Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. +@SET_MAKE@ -SHELL = /bin/sh +# Main Makefile for GNU tar. -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ +# Copyright (C) 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2003, 2007, +# 2009 Free Software Foundation, Inc. + +# This file is part of GNU paxutils +# +# Copyright (c) 2009 Free Software Foundation, Inc. +# +# Written by Sergey Poznyakoff +# +# GNU Paxutils is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation; either version 3, or (at your option) any later +# version. +# +# GNU Paxutils is distributed in the hope that it will be useful, but +# without any warranty; without even the implied warranty of +# merchantability or fitness for a particular purpose. see the gnu general +# public license for more details. +# +# You should have received a copy of the GNU General Public License along +# with GNU Paxutils; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +# This file is part of GNU paxutils +# +# Copyright (c) 2009 Free Software Foundation, Inc. +# +# Written by Sergey Poznyakoff +# +# GNU Paxutils is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation; either version 3, or (at your option) any later +# version. +# +# GNU Paxutils is distributed in the hope that it will be useful, but +# without any warranty; without even the implied warranty of +# merchantability or fitness for a particular purpose. see the gnu general +# public license for more details. +# +# You should have received a copy of the GNU General Public License along +# with GNU Paxutils; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +# Define the following variables in order to use the ChangeLog rule below: +# prev_change_log [optional] Name of the previous ChangeLog file. +# gen_start_date [optional] Start ChangeLog from this date. +# changelog_dir [mandatory] Directory where to create ChangeLog VPATH = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -bindir = @bindir@ -sbindir = @sbindir@ -libexecdir = @libexecdir@ -datadir = @datadir@ -sysconfdir = @sysconfdir@ -sharedstatedir = @sharedstatedir@ -localstatedir = @localstatedir@ -libdir = @libdir@ -infodir = @infodir@ -mandir = @mandir@ -includedir = @includedir@ -oldincludedir = /usr/include - pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ - -top_builddir = . - -ACLOCAL = @ACLOCAL@ -AUTOCONF = @AUTOCONF@ -AUTOMAKE = @AUTOMAKE@ -AUTOHEADER = @AUTOHEADER@ - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -transform = @program_transform_name@ - -NORMAL_INSTALL = true -PRE_INSTALL = true -POST_INSTALL = true -NORMAL_UNINSTALL = true -PRE_UNINSTALL = true -POST_UNINSTALL = true +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +DIST_COMMON = README $(am__configure_deps) $(srcdir)/Make.rules \ + $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(srcdir)/config.h.in $(top_srcdir)/configure ABOUT-NLS \ + AUTHORS COPYING ChangeLog INSTALL NEWS THANKS TODO \ + build-aux/compile build-aux/config.guess \ + build-aux/config.rpath build-aux/config.sub build-aux/depcomp \ + build-aux/install-sh build-aux/mdate-sh build-aux/missing \ + build-aux/texinfo.tex build-aux/ylwrap +subdir = . +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \ + $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/argmatch.m4 \ + $(top_srcdir)/m4/argp.m4 $(top_srcdir)/m4/backupfile.m4 \ + $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/btowc.m4 \ + $(top_srcdir)/m4/canonicalize-lgpl.m4 \ + $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/chown.m4 \ + $(top_srcdir)/m4/clock_time.m4 \ + $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/close.m4 \ + $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \ + $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/dirent_h.m4 \ + $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \ + $(top_srcdir)/m4/dos.m4 $(top_srcdir)/m4/double-slash-root.m4 \ + $(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \ + $(top_srcdir)/m4/environ.m4 $(top_srcdir)/m4/errno_h.m4 \ + $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/exclude.m4 \ + $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \ + $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fclose.m4 \ + $(top_srcdir)/m4/fcntl-safer.m4 $(top_srcdir)/m4/fcntl_h.m4 \ + $(top_srcdir)/m4/fileblocks.m4 $(top_srcdir)/m4/float_h.m4 \ + $(top_srcdir)/m4/fnmatch.m4 $(top_srcdir)/m4/fpending.m4 \ + $(top_srcdir)/m4/fseeko.m4 $(top_srcdir)/m4/ftruncate.m4 \ + $(top_srcdir)/m4/getcwd-abort-bug.m4 \ + $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \ + $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \ + $(top_srcdir)/m4/getline.m4 $(top_srcdir)/m4/getopt.m4 \ + $(top_srcdir)/m4/getpagesize.m4 $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \ + $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/gnulib-common.m4 \ + $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/hash.m4 \ + $(top_srcdir)/m4/human.m4 $(top_srcdir)/m4/iconv.m4 \ + $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inline.m4 \ + $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intmax_t.m4 \ + $(top_srcdir)/m4/inttostr.m4 $(top_srcdir)/m4/inttypes-pri.m4 \ + $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \ + $(top_srcdir)/m4/lchown.m4 $(top_srcdir)/m4/lib-ld.m4 \ + $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ + $(top_srcdir)/m4/localcharset.m4 $(top_srcdir)/m4/locale-fr.m4 \ + $(top_srcdir)/m4/locale-ja.m4 $(top_srcdir)/m4/locale-zh.m4 \ + $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/lseek.m4 \ + $(top_srcdir)/m4/lstat.m4 $(top_srcdir)/m4/malloc.m4 \ + $(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/mbchar.m4 \ + $(top_srcdir)/m4/mbiter.m4 $(top_srcdir)/m4/mbrtowc.m4 \ + $(top_srcdir)/m4/mbscasecmp.m4 $(top_srcdir)/m4/mbsinit.m4 \ + $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mempcpy.m4 \ + $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/mkdtemp.m4 \ + $(top_srcdir)/m4/mktime.m4 $(top_srcdir)/m4/modechange.m4 \ + $(top_srcdir)/m4/multiarch.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/open.m4 $(top_srcdir)/m4/openat.m4 \ + $(top_srcdir)/m4/pathmax.m4 $(top_srcdir)/m4/paxutils.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/printf.m4 \ + $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/quote.m4 \ + $(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/rawmemchr.m4 \ + $(top_srcdir)/m4/readlink.m4 $(top_srcdir)/m4/realloc.m4 \ + $(top_srcdir)/m4/regex.m4 $(top_srcdir)/m4/rmt.m4 \ + $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/rtapelib.m4 \ + $(top_srcdir)/m4/safe-read.m4 $(top_srcdir)/m4/safe-write.m4 \ + $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \ + $(top_srcdir)/m4/setenv.m4 $(top_srcdir)/m4/size_max.m4 \ + $(top_srcdir)/m4/sleep.m4 $(top_srcdir)/m4/snprintf.m4 \ + $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/stat-time.m4 \ + $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \ + $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \ + $(top_srcdir)/m4/stdio_h.m4 $(top_srcdir)/m4/stdlib_h.m4 \ + $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcase.m4 \ + $(top_srcdir)/m4/strchrnul.m4 $(top_srcdir)/m4/strdup.m4 \ + $(top_srcdir)/m4/strerror.m4 $(top_srcdir)/m4/string_h.m4 \ + $(top_srcdir)/m4/strings_h.m4 $(top_srcdir)/m4/strndup.m4 \ + $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtoimax.m4 \ + $(top_srcdir)/m4/strtol.m4 $(top_srcdir)/m4/strtoll.m4 \ + $(top_srcdir)/m4/strtoul.m4 $(top_srcdir)/m4/strtoull.m4 \ + $(top_srcdir)/m4/strtoumax.m4 $(top_srcdir)/m4/sys_stat_h.m4 \ + $(top_srcdir)/m4/sys_time_h.m4 $(top_srcdir)/m4/sysexits.m4 \ + $(top_srcdir)/m4/system.m4 $(top_srcdir)/m4/tempname.m4 \ + $(top_srcdir)/m4/time_h.m4 $(top_srcdir)/m4/time_r.m4 \ + $(top_srcdir)/m4/timespec.m4 $(top_srcdir)/m4/tm_gmtoff.m4 \ + $(top_srcdir)/m4/unistd-safer.m4 $(top_srcdir)/m4/unistd_h.m4 \ + $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \ + $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \ + $(top_srcdir)/m4/utimens.m4 $(top_srcdir)/m4/utimes-null.m4 \ + $(top_srcdir)/m4/utimes.m4 $(top_srcdir)/m4/vasnprintf.m4 \ + $(top_srcdir)/m4/vsnprintf.m4 $(top_srcdir)/m4/wchar.m4 \ + $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wcrtomb.m4 \ + $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wcwidth.m4 \ + $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/write.m4 \ + $(top_srcdir)/m4/xalloc.m4 $(top_srcdir)/m4/xgetcwd.m4 \ + $(top_srcdir)/m4/xsize.m4 $(top_srcdir)/m4/xstrndup.m4 \ + $(top_srcdir)/m4/xstrtol.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno config.status.lineno +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + { test ! -d $(distdir) \ + || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -fr $(distdir); }; } +DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2 \ + $(distdir).shar.gz +GZIP_ENV = --best +distuninstallcheck_listfiles = find . -type f -print +distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +ALLOCA_H = @ALLOCA_H@ +AMTAR = @AMTAR@ +APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ +AUTOM4TE = @AUTOM4TE@ AUTOMAKE = @AUTOMAKE@ -CATALOGS = @CATALOGS@ -CATOBJEXT = @CATOBJEXT@ +AWK = @AWK@ +BACKUP_LIBEXEC_SCRIPTS = @BACKUP_LIBEXEC_SCRIPTS@ +BACKUP_SBIN_SCRIPTS = @BACKUP_SBIN_SCRIPTS@ +BACKUP_SED_COND = @BACKUP_SED_COND@ +BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ +BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ +BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ +BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ +BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ CC = @CC@ -DATADIRNAME = @DATADIRNAME@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFAULT_ARCHIVE = @DEFAULT_ARCHIVE@ +DEFAULT_ARCHIVE_FORMAT = @DEFAULT_ARCHIVE_FORMAT@ +DEFAULT_BLOCKING = @DEFAULT_BLOCKING@ +DEFAULT_QUOTING_STYLE = @DEFAULT_QUOTING_STYLE@ +DEFAULT_RMT_COMMAND = @DEFAULT_RMT_COMMAND@ +DEFAULT_RMT_DIR = @DEFAULT_RMT_DIR@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIRENT_H = @DIRENT_H@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ -GENCAT = @GENCAT@ -GMOFILES = @GMOFILES@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ +EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ +ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ +ENOLINK_VALUE = @ENOLINK_VALUE@ +EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ +EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ +ERRNO_H = @ERRNO_H@ +EXEEXT = @EXEEXT@ +FCNTL_H = @FCNTL_H@ +FLOAT_H = @FLOAT_H@ +FNMATCH_H = @FNMATCH_H@ +GETOPT_H = @GETOPT_H@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GLIBC21 = @GLIBC21@ GMSGFMT = @GMSGFMT@ -GT_NO = @GT_NO@ -GT_YES = @GT_YES@ -INSTOBJEXT = @INSTOBJEXT@ -INTLDEPS = @INTLDEPS@ +GMSGFMT_015 = @GMSGFMT_015@ +GNULIB_ALPHASORT = @GNULIB_ALPHASORT@ +GNULIB_ATOLL = @GNULIB_ATOLL@ +GNULIB_BTOWC = @GNULIB_BTOWC@ +GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@ +GNULIB_CHOWN = @GNULIB_CHOWN@ +GNULIB_CLOSE = @GNULIB_CLOSE@ +GNULIB_DIRFD = @GNULIB_DIRFD@ +GNULIB_DPRINTF = @GNULIB_DPRINTF@ +GNULIB_DUP2 = @GNULIB_DUP2@ +GNULIB_ENVIRON = @GNULIB_ENVIRON@ +GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ +GNULIB_FCHDIR = @GNULIB_FCHDIR@ +GNULIB_FCLOSE = @GNULIB_FCLOSE@ +GNULIB_FFLUSH = @GNULIB_FFLUSH@ +GNULIB_FOPEN = @GNULIB_FOPEN@ +GNULIB_FPRINTF = @GNULIB_FPRINTF@ +GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@ +GNULIB_FPUTC = @GNULIB_FPUTC@ +GNULIB_FPUTS = @GNULIB_FPUTS@ +GNULIB_FREOPEN = @GNULIB_FREOPEN@ +GNULIB_FSEEK = @GNULIB_FSEEK@ +GNULIB_FSEEKO = @GNULIB_FSEEKO@ +GNULIB_FSYNC = @GNULIB_FSYNC@ +GNULIB_FTELL = @GNULIB_FTELL@ +GNULIB_FTELLO = @GNULIB_FTELLO@ +GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@ +GNULIB_FWRITE = @GNULIB_FWRITE@ +GNULIB_GETCWD = @GNULIB_GETCWD@ +GNULIB_GETDELIM = @GNULIB_GETDELIM@ +GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@ +GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@ +GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@ +GNULIB_GETLINE = @GNULIB_GETLINE@ +GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@ +GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@ +GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@ +GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@ +GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@ +GNULIB_IMAXABS = @GNULIB_IMAXABS@ +GNULIB_IMAXDIV = @GNULIB_IMAXDIV@ +GNULIB_LCHMOD = @GNULIB_LCHMOD@ +GNULIB_LCHOWN = @GNULIB_LCHOWN@ +GNULIB_LINK = @GNULIB_LINK@ +GNULIB_LSEEK = @GNULIB_LSEEK@ +GNULIB_LSTAT = @GNULIB_LSTAT@ +GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@ +GNULIB_MBRLEN = @GNULIB_MBRLEN@ +GNULIB_MBRTOWC = @GNULIB_MBRTOWC@ +GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ +GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ +GNULIB_MBSCHR = @GNULIB_MBSCHR@ +GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ +GNULIB_MBSINIT = @GNULIB_MBSINIT@ +GNULIB_MBSLEN = @GNULIB_MBSLEN@ +GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ +GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ +GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@ +GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ +GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ +GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ +GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@ +GNULIB_MBSSEP = @GNULIB_MBSSEP@ +GNULIB_MBSSPN = @GNULIB_MBSSPN@ +GNULIB_MBSSTR = @GNULIB_MBSSTR@ +GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ +GNULIB_MEMMEM = @GNULIB_MEMMEM@ +GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ +GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ +GNULIB_MKDTEMP = @GNULIB_MKDTEMP@ +GNULIB_MKSTEMP = @GNULIB_MKSTEMP@ +GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@ +GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@ +GNULIB_OPEN = @GNULIB_OPEN@ +GNULIB_PERROR = @GNULIB_PERROR@ +GNULIB_PRINTF = @GNULIB_PRINTF@ +GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@ +GNULIB_PUTC = @GNULIB_PUTC@ +GNULIB_PUTCHAR = @GNULIB_PUTCHAR@ +GNULIB_PUTENV = @GNULIB_PUTENV@ +GNULIB_PUTS = @GNULIB_PUTS@ +GNULIB_RANDOM_R = @GNULIB_RANDOM_R@ +GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ +GNULIB_READLINK = @GNULIB_READLINK@ +GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@ +GNULIB_RPMATCH = @GNULIB_RPMATCH@ +GNULIB_SCANDIR = @GNULIB_SCANDIR@ +GNULIB_SETENV = @GNULIB_SETENV@ +GNULIB_SLEEP = @GNULIB_SLEEP@ +GNULIB_SNPRINTF = @GNULIB_SNPRINTF@ +GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@ +GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@ +GNULIB_STPCPY = @GNULIB_STPCPY@ +GNULIB_STPNCPY = @GNULIB_STPNCPY@ +GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ +GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ +GNULIB_STRDUP = @GNULIB_STRDUP@ +GNULIB_STRERROR = @GNULIB_STRERROR@ +GNULIB_STRNDUP = @GNULIB_STRNDUP@ +GNULIB_STRNLEN = @GNULIB_STRNLEN@ +GNULIB_STRPBRK = @GNULIB_STRPBRK@ +GNULIB_STRSEP = @GNULIB_STRSEP@ +GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ +GNULIB_STRSTR = @GNULIB_STRSTR@ +GNULIB_STRTOD = @GNULIB_STRTOD@ +GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@ +GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ +GNULIB_STRTOLL = @GNULIB_STRTOLL@ +GNULIB_STRTOULL = @GNULIB_STRTOULL@ +GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@ +GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ +GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ +GNULIB_UNSETENV = @GNULIB_UNSETENV@ +GNULIB_VASPRINTF = @GNULIB_VASPRINTF@ +GNULIB_VDPRINTF = @GNULIB_VDPRINTF@ +GNULIB_VFPRINTF = @GNULIB_VFPRINTF@ +GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@ +GNULIB_VPRINTF = @GNULIB_VPRINTF@ +GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@ +GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@ +GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@ +GNULIB_WCRTOMB = @GNULIB_WCRTOMB@ +GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@ +GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@ +GNULIB_WCTOB = @GNULIB_WCTOB@ +GNULIB_WCWIDTH = @GNULIB_WCWIDTH@ +GNULIB_WRITE = @GNULIB_WRITE@ +GREP = @GREP@ +HAVE_ALPHASORT = @HAVE_ALPHASORT@ +HAVE_ATOLL = @HAVE_ATOLL@ +HAVE_BTOWC = @HAVE_BTOWC@ +HAVE_CALLOC_POSIX = @HAVE_CALLOC_POSIX@ +HAVE_DECL_DIRFD = @HAVE_DECL_DIRFD@ +HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ +HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@ +HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@ +HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@ +HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ +HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@ +HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@ +HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ +HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ +HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@ +HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@ +HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ +HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@ +HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@ +HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ +HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ +HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ +HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@ +HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ +HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@ +HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@ +HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@ +HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@ +HAVE_DPRINTF = @HAVE_DPRINTF@ +HAVE_DUP2 = @HAVE_DUP2@ +HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ +HAVE_FSEEKO = @HAVE_FSEEKO@ +HAVE_FSYNC = @HAVE_FSYNC@ +HAVE_FTELLO = @HAVE_FTELLO@ +HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ +HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@ +HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ +HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ +HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ +HAVE_GETSUBOPT = @HAVE_GETSUBOPT@ +HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@ +HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ +HAVE_ISWCNTRL = @HAVE_ISWCNTRL@ +HAVE_LCHMOD = @HAVE_LCHMOD@ +HAVE_LINK = @HAVE_LINK@ +HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ +HAVE_LSTAT = @HAVE_LSTAT@ +HAVE_MALLOC_POSIX = @HAVE_MALLOC_POSIX@ +HAVE_MBRLEN = @HAVE_MBRLEN@ +HAVE_MBRTOWC = @HAVE_MBRTOWC@ +HAVE_MBSINIT = @HAVE_MBSINIT@ +HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@ +HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@ +HAVE_MEMPCPY = @HAVE_MEMPCPY@ +HAVE_MKDTEMP = @HAVE_MKDTEMP@ +HAVE_OS_H = @HAVE_OS_H@ +HAVE_RANDOM_H = @HAVE_RANDOM_H@ +HAVE_RANDOM_R = @HAVE_RANDOM_R@ +HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ +HAVE_READLINK = @HAVE_READLINK@ +HAVE_REALLOC_POSIX = @HAVE_REALLOC_POSIX@ +HAVE_RPMATCH = @HAVE_RPMATCH@ +HAVE_SCANDIR = @HAVE_SCANDIR@ +HAVE_SETENV = @HAVE_SETENV@ +HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ +HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ +HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ +HAVE_SLEEP = @HAVE_SLEEP@ +HAVE_STDINT_H = @HAVE_STDINT_H@ +HAVE_STPCPY = @HAVE_STPCPY@ +HAVE_STPNCPY = @HAVE_STPNCPY@ +HAVE_STRCASECMP = @HAVE_STRCASECMP@ +HAVE_STRCASESTR = @HAVE_STRCASESTR@ +HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ +HAVE_STRNDUP = @HAVE_STRNDUP@ +HAVE_STRPBRK = @HAVE_STRPBRK@ +HAVE_STRSEP = @HAVE_STRSEP@ +HAVE_STRTOD = @HAVE_STRTOD@ +HAVE_STRTOLL = @HAVE_STRTOLL@ +HAVE_STRTOULL = @HAVE_STRTOULL@ +HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@ +HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@ +HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ +HAVE_SYSEXITS_H = @HAVE_SYSEXITS_H@ +HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ +HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ +HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@ +HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ +HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@ +HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ +HAVE_UNISTD_H = @HAVE_UNISTD_H@ +HAVE_UNSETENV = @HAVE_UNSETENV@ +HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ +HAVE_VASPRINTF = @HAVE_VASPRINTF@ +HAVE_VDPRINTF = @HAVE_VDPRINTF@ +HAVE_WCHAR_H = @HAVE_WCHAR_H@ +HAVE_WCRTOMB = @HAVE_WCRTOMB@ +HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@ +HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@ +HAVE_WCTYPE_H = @HAVE_WCTYPE_H@ +HAVE_WINT_T = @HAVE_WINT_T@ +HAVE__BOOL = @HAVE__BOOL@ +INCLUDE_NEXT = @INCLUDE_NEXT@ +INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT32_MAX_LT_INTMAX_MAX = @INT32_MAX_LT_INTMAX_MAX@ +INT64_MAX_EQ_LONG_MAX = @INT64_MAX_EQ_LONG_MAX@ INTLLIBS = @INTLLIBS@ -INTLOBJS = @INTLOBJS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +INTTYPES_H = @INTTYPES_H@ +LDFLAGS = @LDFLAGS@ +LIBGNU_LIBDEPS = @LIBGNU_LIBDEPS@ +LIBGNU_LTLIBDEPS = @LIBGNU_LTLIBDEPS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@ +LIB_CLOSE = @LIB_CLOSE@ +LIB_SETSOCKOPT = @LIB_SETSOCKOPT@ +LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@ +LOCALE_FR = @LOCALE_FR@ +LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@ +LOCALE_JA = @LOCALE_JA@ +LOCALE_ZH_CN = @LOCALE_ZH_CN@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ -MKINSTALLDIRS = @MKINSTALLDIRS@ +MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NEXT_DIRENT_H = @NEXT_DIRENT_H@ +NEXT_ERRNO_H = @NEXT_ERRNO_H@ +NEXT_FCNTL_H = @NEXT_FCNTL_H@ +NEXT_FLOAT_H = @NEXT_FLOAT_H@ +NEXT_INTTYPES_H = @NEXT_INTTYPES_H@ +NEXT_STDARG_H = @NEXT_STDARG_H@ +NEXT_STDINT_H = @NEXT_STDINT_H@ +NEXT_STDIO_H = @NEXT_STDIO_H@ +NEXT_STDLIB_H = @NEXT_STDLIB_H@ +NEXT_STRINGS_H = @NEXT_STRINGS_H@ +NEXT_STRING_H = @NEXT_STRING_H@ +NEXT_SYSEXITS_H = @NEXT_SYSEXITS_H@ +NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@ +NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@ +NEXT_TIME_H = @NEXT_TIME_H@ +NEXT_UNISTD_H = @NEXT_UNISTD_H@ +NEXT_WCHAR_H = @NEXT_WCHAR_H@ +NEXT_WCTYPE_H = @NEXT_WCTYPE_H@ +OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ -POFILES = @POFILES@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ +PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ +PRIPTR_PREFIX = @PRIPTR_PREFIX@ +PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@ +PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ +PU_RMT_PROG = @PU_RMT_PROG@ RANLIB = @RANLIB@ -RMT = @RMT@ -U = @U@ -USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +REPLACE_BTOWC = @REPLACE_BTOWC@ +REPLACE_CHOWN = @REPLACE_CHOWN@ +REPLACE_CLOSE = @REPLACE_CLOSE@ +REPLACE_DPRINTF = @REPLACE_DPRINTF@ +REPLACE_FCHDIR = @REPLACE_FCHDIR@ +REPLACE_FCLOSE = @REPLACE_FCLOSE@ +REPLACE_FFLUSH = @REPLACE_FFLUSH@ +REPLACE_FOPEN = @REPLACE_FOPEN@ +REPLACE_FPRINTF = @REPLACE_FPRINTF@ +REPLACE_FREOPEN = @REPLACE_FREOPEN@ +REPLACE_FSEEK = @REPLACE_FSEEK@ +REPLACE_FSEEKO = @REPLACE_FSEEKO@ +REPLACE_FTELL = @REPLACE_FTELL@ +REPLACE_FTELLO = @REPLACE_FTELLO@ +REPLACE_GETCWD = @REPLACE_GETCWD@ +REPLACE_GETLINE = @REPLACE_GETLINE@ +REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ +REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@ +REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@ +REPLACE_LCHOWN = @REPLACE_LCHOWN@ +REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@ +REPLACE_LSEEK = @REPLACE_LSEEK@ +REPLACE_LSTAT = @REPLACE_LSTAT@ +REPLACE_MBRLEN = @REPLACE_MBRLEN@ +REPLACE_MBRTOWC = @REPLACE_MBRTOWC@ +REPLACE_MBSINIT = @REPLACE_MBSINIT@ +REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@ +REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@ +REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@ +REPLACE_MEMMEM = @REPLACE_MEMMEM@ +REPLACE_MKDIR = @REPLACE_MKDIR@ +REPLACE_MKSTEMP = @REPLACE_MKSTEMP@ +REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@ +REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@ +REPLACE_OPEN = @REPLACE_OPEN@ +REPLACE_PERROR = @REPLACE_PERROR@ +REPLACE_PRINTF = @REPLACE_PRINTF@ +REPLACE_PUTENV = @REPLACE_PUTENV@ +REPLACE_SNPRINTF = @REPLACE_SNPRINTF@ +REPLACE_SPRINTF = @REPLACE_SPRINTF@ +REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@ +REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ +REPLACE_STRDUP = @REPLACE_STRDUP@ +REPLACE_STRERROR = @REPLACE_STRERROR@ +REPLACE_STRPTIME = @REPLACE_STRPTIME@ +REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ +REPLACE_STRSTR = @REPLACE_STRSTR@ +REPLACE_STRTOD = @REPLACE_STRTOD@ +REPLACE_TIMEGM = @REPLACE_TIMEGM@ +REPLACE_VASPRINTF = @REPLACE_VASPRINTF@ +REPLACE_VDPRINTF = @REPLACE_VDPRINTF@ +REPLACE_VFPRINTF = @REPLACE_VFPRINTF@ +REPLACE_VPRINTF = @REPLACE_VPRINTF@ +REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@ +REPLACE_VSPRINTF = @REPLACE_VSPRINTF@ +REPLACE_WCRTOMB = @REPLACE_WCRTOMB@ +REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@ +REPLACE_WCTOB = @REPLACE_WCTOB@ +REPLACE_WCWIDTH = @REPLACE_WCWIDTH@ +REPLACE_WRITE = @REPLACE_WRITE@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ +SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ +STDARG_H = @STDARG_H@ +STDBOOL_H = @STDBOOL_H@ +STDINT_H = @STDINT_H@ +STRIP = @STRIP@ +SYSEXITS_H = @SYSEXITS_H@ +SYS_STAT_H = @SYS_STAT_H@ +SYS_TIME_H = @SYS_TIME_H@ +SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@ +TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@ +UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@ +UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@ +UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ +VOID_UNSETENV = @VOID_UNSETENV@ +WCHAR_H = @WCHAR_H@ +WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ +WCTYPE_H = @WCTYPE_H@ +WINT_T_SUFFIX = @WINT_T_SUFFIX@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ YACC = @YACC@ - -AUTOMAKE_OPTIONS = gnits dist-shar - -BABYL = rmail/* admin/*/RMAIL -EXTRA_DIST = AC-PATCHES AM-PATCHES BI-PATCHES PORTS rebox.el -SUBDIRS = doc lib intl src scripts po tests -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -CONFIG_HEADER_IN = config.h.in -CONFIG_HEADER_FULL = config.h -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_HEADER = config.h -CONFIG_CLEAN_FILES = -DIST_COMMON = README ABOUT-NLS AUTHORS BACKLOG COPYING ChangeLog \ -INSTALL Makefile.am Makefile.in NEWS THANKS TODO acconfig.h \ -acinclude.m4 aclocal.m4 config.h.in configure configure.in install-sh \ -missing mkinstalldirs stamp-h.in - - -DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) - -TAR = tar -GZIP = --best -default: all +YFLAGS = @YFLAGS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gl_LIBOBJS = @gl_LIBOBJS@ +gl_LTLIBOBJS = @gl_LTLIBOBJS@ +gltests_LIBOBJS = @gltests_LIBOBJS@ +gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +ACLOCAL_AMFLAGS = -I m4 +EXTRA_DIST = ChangeLog.1 Make.rules +SUBDIRS = doc gnu lib rmt src scripts po tests +gen_start_date = 2009-03-06 +prev_change_log = ChangeLog.CVS +changelog_dir = . +all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: -$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) - cd $(top_srcdir) && $(AUTOMAKE) --gnits Makefile - -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES) - cd $(top_builddir) \ - && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status - -$(srcdir)/aclocal.m4: configure.in acinclude.m4 - cd $(srcdir) && $(ACLOCAL) - -config.status: configure +am--refresh: + @: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/Make.rules $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --gnits '; \ + cd $(srcdir) && $(AUTOMAKE) --gnits \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnits Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck -$(srcdir)/configure: configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) - cd $(srcdir) && $(AUTOCONF) -$(CONFIG_HEADER): stamp-h -stamp-h: $(CONFIG_HEADER_IN) $(top_builddir)/config.status - cd $(top_builddir) \ - && CONFIG_FILES= CONFIG_HEADERS=$(CONFIG_HEADER_FULL) \ - $(SHELL) ./config.status - @echo timestamp > stamp-h -$(srcdir)/$(CONFIG_HEADER_IN): stamp-h.in -$(srcdir)/stamp-h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) acconfig.h +$(top_srcdir)/configure: $(am__configure_deps) + cd $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) + +config.h: stamp-h1 + @if test ! -f $@; then \ + rm -f stamp-h1; \ + $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \ + else :; fi + +stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status + @rm -f stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status config.h +$(srcdir)/config.h.in: $(am__configure_deps) cd $(top_srcdir) && $(AUTOHEADER) - echo timestamp > $(srcdir)/stamp-h.in - -mostlyclean-hdr: - -clean-hdr: + rm -f stamp-h1 + touch $@ distclean-hdr: - rm -f $(CONFIG_HEADER) - -maintainer-clean-hdr: + -rm -f config.h stamp-h1 # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. @@ -165,214 +769,425 @@ maintainer-clean-hdr: # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. - -@SET_MAKE@ - -all-recursive install-data-recursive install-exec-recursive \ -installdirs-recursive install-recursive uninstall-recursive \ -check-recursive installcheck-recursive info-recursive dvi-recursive \ -mostlyclean-recursive clean-recursive distclean-recursive \ -maintainer-clean-recursive: - @for subdir in $(SUBDIRS); do \ - target=`echo $@ | sed s/-recursive//`; \ +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ - (cd $$subdir && $(MAKE) $$target) \ - || case "$(MFLAGS)" in *k*) fail=yes;; *) exit 1;; esac; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - (cd $$subdir && $(MAKE) tags); \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique tags: TAGS -TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) +TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ - test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ done; \ - test -z "$(ETAGS_ARGS)config.h.in$(SOURCES)$(HEADERS)$$tags" \ - || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags config.h.in $(SOURCES) $(HEADERS) -o $$here/TAGS) - -mostlyclean-tags: - -clean-tags: + list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here distclean-tags: - rm -f TAGS ID - -maintainer-clean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -distdir = $(PACKAGE)-$(VERSION) -# This target untars the dist file and tries a VPATH configuration. Then -# it guarantees that the distribution is self-contained by making another -# tarfile. -distcheck: dist - rm -rf $(distdir) - GZIP=$(GZIP) $(TAR) zxf $(distdir).tar.gz --mode=a+r - mkdir $(distdir)/=build - mkdir $(distdir)/=inst - dc_install_base=`cd $(distdir)/=inst && pwd`; \ - cd $(distdir)/=build \ - && ../configure --with-included-gettext --srcdir=.. --prefix=$$dc_install_base \ - && $(MAKE) \ - && $(MAKE) dvi \ - && $(MAKE) check \ - && $(MAKE) install \ - && $(MAKE) installcheck \ - && $(MAKE) dist - rm -rf $(distdir) - @echo "========================"; \ - echo "$(distdir).tar.gz is ready for distribution"; \ - echo "========================" -dist: distdir - -chmod -R a+r $(distdir) - GZIP=$(GZIP) $(TAR) chozf $(distdir).tar.gz --mode=a+r $(distdir) - rm -rf $(distdir) -dist-shar: distdir - -chmod -R a+r $(distdir) - rm -rf $(distdir) -dist-all: distdir - -chmod -R a+r $(distdir) - GZIP=$(GZIP) $(TAR) chozf $(distdir).tar.gz --mode=a+r $(distdir) - rm -rf $(distdir) distdir: $(DISTFILES) - @if sed 15q $(srcdir)/NEWS | fgrep -e "$(VERSION)" > /dev/null; then :; else \ + @case `sed 15q $(srcdir)/NEWS` in \ + *"$(VERSION)"*) : ;; \ + *) \ echo "NEWS not updated; not releasing" 1>&2; \ - exit 1; \ - fi - rm -rf $(distdir) - mkdir $(distdir) - -chmod 755 $(distdir) - @for file in $(DISTFILES); do \ - d=$(srcdir); \ - test -f $(distdir)/$$file \ - || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ - || cp -p $$d/$$file $(distdir)/$$file; \ + exit 1;; \ + esac + $(am__remove_distdir) + test -d $(distdir) || mkdir $(distdir) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ done - for subdir in $(SUBDIRS); do \ - test -d $(distdir)/$$subdir \ - || mkdir $(distdir)/$$subdir \ - || exit 1; \ - chmod 755 $(distdir)/$$subdir; \ - (cd $$subdir && $(MAKE) distdir=../$(distdir)/$$subdir distdir) \ + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ done -info: info-recursive -dvi: dvi-recursive -check: all-am - $(MAKE) check-recursive -installcheck: installcheck-recursive -all-recursive-am: $(CONFIG_HEADER) - $(MAKE) all-recursive - -all-am: Makefile config.h all-local + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" distdir="$(distdir)" \ + dist-hook + -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r $(distdir) +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 + $(am__remove_distdir) + +dist-lzma: distdir + tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma + $(am__remove_distdir) + +dist-tarZ: distdir + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__remove_distdir) +dist-shar: distdir + shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz + $(am__remove_distdir) -install-exec: install-exec-recursive - @$(NORMAL_INSTALL) +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__remove_distdir) -install-data: install-data-recursive - @$(NORMAL_INSTALL) +dist dist-all: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 + shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz + $(am__remove_distdir) +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.lzma*) \ + unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + chmod -R a-w $(distdir); chmod a+w $(distdir) + mkdir $(distdir)/_build + mkdir $(distdir)/_inst + chmod a-w $(distdir) + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && cd $(distdir)/_build \ + && ../configure --srcdir=.. --prefix="$$dc_install_base" \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck + $(am__remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' +distuninstallcheck: + @cd $(distuninstallcheck_dir) \ + && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: check-recursive +all-am: Makefile config.h +installdirs: installdirs-recursive +installdirs-am: install: install-recursive - @: - +install-exec: install-exec-recursive +install-data: install-data-recursive uninstall: uninstall-recursive -all: all-recursive-am all-am +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +installcheck: installcheck-recursive install-strip: - $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' install -installdirs: installdirs-recursive - - + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: - test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) clean-generic: - test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: - rm -f Makefile $(DISTCLEANFILES) - rm -f config.cache config.log stamp-h - test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: - test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) - test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) -mostlyclean-am: mostlyclean-hdr mostlyclean-tags mostlyclean-generic + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive -clean-am: clean-hdr clean-tags clean-generic mostlyclean-am +clean-am: clean-generic mostlyclean-am -distclean-am: distclean-hdr distclean-tags distclean-generic clean-am +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-hdr distclean-local \ + distclean-tags -maintainer-clean-am: maintainer-clean-hdr maintainer-clean-tags \ - maintainer-clean-generic distclean-am +dvi: dvi-recursive -mostlyclean: mostlyclean-recursive mostlyclean-am +dvi-am: -clean: clean-recursive clean-am +html: html-recursive -distclean: distclean-recursive distclean-am - rm -f config.status +info: info-recursive -maintainer-clean: maintainer-clean-recursive maintainer-clean-am - @echo "This command is intended for maintainers to use;" - @echo "it deletes files that may require special tools to rebuild." - rm -f config.status - -.PHONY: default mostlyclean-hdr distclean-hdr clean-hdr \ -maintainer-clean-hdr install-data-recursive uninstall-data-recursive \ -install-exec-recursive uninstall-exec-recursive installdirs-recursive \ -uninstalldirs-recursive all-recursive check-recursive \ -installcheck-recursive info-recursive dvi-recursive \ -mostlyclean-recursive distclean-recursive clean-recursive \ -maintainer-clean-recursive tags tags-recursive mostlyclean-tags \ -distclean-tags clean-tags maintainer-clean-tags distdir info dvi \ -installcheck all-recursive-am all-am install-exec install-data install \ -uninstall all installdirs mostlyclean-generic distclean-generic \ -clean-generic maintainer-clean-generic clean mostlyclean distclean \ -maintainer-clean - - -all-local: $(CONFIG_HEADER) - -id: ID - -ID: - cd lib && $(MAKE) $@ - cd src && $(MAKE) $@ - -dist-zoo: $(DISTFILES) - rm -rf $(distdir) - mkdir $(distdir) - distdir=`cd $(distdir) && pwd` \ - && cd $(srcdir) \ - && automake --include-deps --output-dir=$$distdir - @for file in $(DISTFILES); do \ - test -f $(distdir)/$$file \ - || cp -p $(srcdir)/$$file $(distdir)/$$file; \ - done - for subdir in $(SUBDIRS); do \ - test -d $(distdir)/$$subdir \ - || mkdir $(distdir)/$$subdir \ - || exit 1; \ - chmod 777 $(distdir)/$$subdir; \ - (cd $$subdir && $(MAKE) dist) || exit 1; \ - done - @sublist="$(DIST_SUBDIRS)"; \ - for dir in $$sublist; do \ - echo copying directory $$dir; \ - tar -chf - $$dir | (cd $(distdir) && tar -xBpf -); \ - done - chmod -R a+r $(distdir) - find $(distdir) -type f | xargs dosfn -# find $(distdir) -type f | xargs recode :ibmpc - mv $(distdir) $(PACKAGE) - find $(PACKAGE) -type f | zoo ahIq $(PACKAGE).zoo - rm -rf $(PACKAGE) +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-exec-am: + +install-html: install-html-recursive + +install-info: install-info-recursive +install-man: + +install-pdf: install-pdf-recursive + +install-ps: install-ps-recursive + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ + install-strip + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am am--refresh check check-am clean clean-generic \ + ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \ + dist-hook dist-lzma dist-shar dist-tarZ dist-zip distcheck \ + distclean distclean-generic distclean-hdr distclean-local \ + distclean-tags distcleancheck distdir distuninstallcheck dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs installdirs-am \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-am + + +dist-hook: + $(MAKE) changelog_dir=$(distdir) make-ChangeLog + -rm -f $(distdir).cpio + find $(distdir) | cpio -Hcrc -o | \ + GZIP=$(GZIP_ENV) gzip -c > $(distdir).cpio.gz + +distclean-local: + -rm -f $(distdir).cpio.gz + +.PHONY: ChangeLog +ChangeLog: + if test -d .git; then \ + cmd=$(top_srcdir)/build-aux/gitlog-to-changelog; \ + if test -n "$(gen_start_date)"; then \ + cmd="$$cmd --since=\"$(gen_start_date)\""; \ + fi; \ + $$cmd | \ + sed '/$$/d' | fmt -s > $(changelog_dir)/cl-t; \ + if test -n "$(prev_change_log)" && test -f "$(prev_change_log)"; \ + then \ + cat "$(prev_change_log)" | \ + sed '/^Local Variables:/,/^End:/d' >> $(changelog_dir)/cl-t; \ + fi; \ + echo "Local Variables:" >> $(changelog_dir)/cl-t; \ + echo "mode: change-log" >> $(changelog_dir)/cl-t; \ + echo "version-control: never" >> $(changelog_dir)/cl-t; \ + echo "buffer-read-only: t" >> $(changelog_dir)/cl-t; \ + echo "End:" >> $(changelog_dir)/cl-t; \ + rm -f $(changelog_dir)/ChangeLog; \ + mv $(changelog_dir)/cl-t $(changelog_dir)/ChangeLog; \ + fi # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: diff --git a/PORTS b/PORTS deleted file mode 100644 index d3d5ddf9..00000000 --- a/PORTS +++ /dev/null @@ -1,173 +0,0 @@ -Ports of GNU tar and other tars -See the end of file for copying conditions. - -* Introduction - - Most entries in this file are out of date, unfortunately. Such - entries are marked with an `X'. Run grep '^\*\*[^X]' PORTS to - extract valid entries. - - Please write bug-tar@gnu.org if you are aware of various ports of GNU tar - to non-GNU and non-Unix systems not listed here, or for corrections. - Please provide the goal system, a complete and stable URL, the maintainer - name and address, the tar version used as a base, and your comments. - -* GNU/Linux and Unix - -** Star is a tape archiver similar to tar. - - -* Amiga - -**X ftp://ftp.wustl.edu/systems/amiga/aminet/util/arc/GNUtar-1.11.8.lha - maintained by Enrico Forestieri - Based on tar 1.11.8. - -**X ftp://ftp.ninemoons.com/pub/ade/current/amiga-bin/tar-1.11.8-bin.lha - maintained by the ADE group - Based on tar 1.11.8, needs ixemul.library. - -**X ftp://ftp.wustl.edu/systems/amiga/aminet/util/arc/gnutar.lha - maintained by - -* DEC alpha (NT) - -**X ftp://ftp.cdrom.com/.20/windows/archiver/tar.zip - maintained by Drew Bliss & Geoff Voelker - -* DEC VAX (VMS) - -**X http://www.lp.se/free/vmstar/ - maintained by Richard Levitte - This is not GNU tar, but a separate implementation. - -** maintained by William Bader - For V4.7. Based on an old PDtar. Requires compatible shared libraries - to run V5 or V6 executables. - -* IBM/PC (DV/X) - -**X ftp://qdeck.com/ (?) - maintained by David Ronis - For Desqview/X. Everything works besides compression. Copy of hacked - sources available, some of DV/X's programmer's library also needed. - -* IBM/PC (MSDOS) - -**X http://www.simtel.net/simtel.net/ - http://www.leo.org/pub/comp/platforms/pc/gnuish (Germany) - ftp://ftp.simtel.net/simtelnet/gnu - ftp://ftp.leo.org/pub/comp/platforms/pc/gnuish - maintained by Darrel Hankerson - You get many GNU tools, not only `tar'. The GNUish project is described - in `gnuish_t.htm'. - -** The DJGPP development tools also include some `tar' utilities. - -**X ftp://ftp.mcs.com/mcsnet.users/les/dos-gnutar/ - maintained by Leslie Mikesell - Based on tar 1.11.2. Support for SCSI (via ASPI) and network (rsh over - packet driver). No support for win95 long file names. - -**X ftp://ftp.wu-wien.ac.at/pub/src/PCmisc/aspi-tar/* - maintained by Christoph Splittgerber - Based on tar 1.10. Support for SCSI (via ASPI). - -**X ftp://wuarchive (?) - Several DOS version based on PDtar. John Gilmore says - he has copies of several vintages saved. - -**X ftp://ftp.cdrom.com/.14/languages/ada/toolkit/msdos/gtar/gtar.exe - ftp://ftp.cdrom.com/.14/languages/ada/toolkit/msdos/gtar/gtar.taz - ftp://ftp.cdrom.com/.14/languages/ada/toolkit/msdos/gtar/gtar.zip - -**X ftp://ftp.cdrom.com/.4/os2/archiver/tar.zip - Based on PDtar. - -**X ftp://ftp.cdrom.com/.20/windows/archiver/tar.zip - maintained by Drew Bliss & Geoff Voelker - GNU tar for NT (intel and Alpha platforms). - -** ftp://garbo.uwasa.fi/pc/unix/untgz095.zip - maintained by Tillmann Steinbrecher - The `untgz' program is a fast .tar or .tar.gz (.tgz) extractor. - -**X http://people.darmstadt.netsurf.de/tst/tar.htm - maintained by Tillmann Steinbrecher - This is not a `tar' port, but an index of them. - -* IBM/PC (OS/2) - -**X http://www.leo.org/pub/comp/os/os2/leo/gnu/archiver/gtar254.zip - http://www.leo.org/pub/comp/os/os2/leo/gnu/archiver/gtak254.zip - maintained by Andreas Kaiser - Version 2.54. Based on tar 1.10. The second archive contains SCSI - drivers (DAT streamers notably) and rmt-type programs. - -* IBM/PC (Win32: Windows 95, NT 3.5 or NT 4.0) - -**X ftp://ftp.cygnus.com:~ftp/pub/sac/win32/usersrc/* - maintained by Cygnus - GNU-Win32 B17.1 distribution. Download all files, `cat' them together, - and `untar' the result. You get many GNU tools, not only `tar'. - Based on tar 1.11.2. - -**X ftp://ftp.cdrom.com/.20/windows/archiver/tar.zip - maintained by Drew Bliss & Geoff Voelker - GNU tar for NT (intel and Alpha platforms). - -** ftp://garbo.uwasa.fi/pc/unix/untgz095.zip - maintained by Tillmann Steinbrecher - The `untgz' program is a fast .tar or .tar.gz (.tgz) extractor. - -* IBM/PC (Windows 3.1) - -**X ftp://ftp.mcs.com/mcsnet.users/les/win-gnutar/ - maintained by Leslie Mikesell - Support for network (rsh over winsock). No support for win95 long - file names. - -**X ftp://ftp.gamesdomain.ru/.1/os/windows/programr/tar.zip - Based on GNU tar 1.11.2. - -* Macintosh - -** Paulo Abreu (paulotex at yahoo dot com) did a - limited port of GNU tar to Darwin, with support for resource forks - and finder info, but this no longer seems to be available. - -** There is a tar in Stuffit Expander which is available many places and - comes with MacOS. It creates some spurious files but works on average. - -** There is an excellent GNU tar bundled in Tenon MachTen, but it does not - seem to be available separately. - - -* Copyright notice - - Copyright (C) 1999, 2001, 2003, 2004, 2007 Free Software Foundation, Inc. - - This file is part of GNU tar. - - GNU tar is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3, or (at your option) - any later version. - - GNU tar is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GNU tar; see the file COPYING. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. - - -Local Variables: -mode: outline -paragraph-separate: "[ ]*$" -version-control: never -End: - diff --git a/README-cvs b/README-cvs deleted file mode 100644 index fd9e2a01..00000000 --- a/README-cvs +++ /dev/null @@ -1,70 +0,0 @@ --*- outline -*- - -These notes intend to help people working on the CVS version of -this package. - -* Requirements - -Only the sources are installed in the CVS repository (to ease the -maintenance, merges etc.), therefore you will have to get the latest -stable versions of the maintainer tools we depend upon, including: - -- Automake -- Autoconf -- Bison -- Gettext -- Gzip -- Tar -- Wget - -As of this writing, the latest stable version of Gzip is 1.2.4 but we -suggest using test version 1.3.5 (or later, if one becomes available). - -Valgrind is also highly recommended, if -Valgrind supports your architecture. - -Only building the initial full source tree will be a bit painful, -later, a plain `cvs update -P && make' should be sufficient. - -* First CVS checkout - -Obviously, if you are reading these notes, you did manage to check out -this package from CVS. The next step is to get other files needed to -build, which are extracted from other source packages: - - $ ./bootstrap - -And there you are! Just - - $ ./configure - $ make - $ make check - -At this point, there should be no difference between your local copy, -and the CVS master copy: - - $ cvs diff - -should output no difference. - -Enjoy! - ------ - -Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, -Inc. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 3, or (at your option) -any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301, USA. diff --git a/README-hacking b/README-hacking new file mode 100644 index 00000000..c2b543a4 --- /dev/null +++ b/README-hacking @@ -0,0 +1,71 @@ +These notes intend to help people working on the Git version of +this package. + +* Requirements + +You need the following packages to build the Git version of GNU +tar. We do not make any efforts to accommodate older versions of +these packages, so please make sure that you have the latest stable +version. + +- Automake +- Autoconf +- M4 +- Texinfo +- Gnulib +- Git + +* Bootstrapping + +Obviously, if you are reading these notes, you did manage to clone +tar from Git. The next step is to get other files needed to build, +which are extracted from other source packages: + +1. Change to the source tree directory + + cd tar + +2. Run + + ./bootstrap + +Once done, proceed as described in the file README (section +INSTALLATION). + +Normally you will have to run bootstrap only once. However, if you +intend to hack on GNU tar, you might need to run it again later. In +this case, you will probably want to save some time and bandwidth by +avoiding downloading the same files again. If so, create in GNU tar +root directory the file named `.bootstrap' with the following +contents: + + --gnulib-srcdir=$HOME/gnulib + +Replace `$HOME/gnulib' with the actual directory where the Gnulib +sources reside. + +For more information about `bootstrap', run `bootstrap --help'. + + +* Copyright information + + Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc. + + Permission is granted to anyone to make or distribute verbatim copies + of this document as received, in any medium, provided that the + copyright notice and this permission notice are preserved, + thus giving the recipient permission to redistribute in turn. + + Permission is granted to distribute modified versions + of this document, or of portions of it, + under the above conditions, provided also that they + carry prominent notices stating who last changed them. + +^L +Local Variables: +mode: outline +paragraph-separate: "[ ^L]*$" +version-control: never +End: + + diff --git a/acconfig.h b/acconfig.h deleted file mode 100644 index f3c2e876..00000000 --- a/acconfig.h +++ /dev/null @@ -1,88 +0,0 @@ -/* Special definitions for GNU tar, processed by autoheader. - Copyright © 1994, 1997 Free Software Foundation, Inc. - François Pinard , 1993. -*/ - -/* This is unconditionally defined for setting a GNU environment. */ -#undef _GNU_SOURCE - -/* Define to a string giving the full name of the default archive file. */ -#undef DEFAULT_ARCHIVE - -/* Define to a number giving the default blocking size for archives. */ -#undef DEFAULT_BLOCKING - -/* Define to 1 if density may be indicated by [lmh] at end of device. */ -#undef DENSITY_LETTER - -/* Define to a string giving the prefix of the default device, without the - part specifying the unit and density. */ -#undef DEVICE_PREFIX - -/* Define to 1 if you lack a 3-argument version of open, and want to - emulate it with system calls you do have. */ -#undef EMUL_OPEN3 - -/* Define to 1 if NLS is requested. */ -#undef ENABLE_NLS - -/* Define as 1 if you have catgets and don't want to use GNU gettext. */ -#undef HAVE_CATGETS - -/* Define to 1 if you have getgrgid(3). */ -#undef HAVE_GETGRGID - -/* Define to 1 if you have getpwuid(3). */ -#undef HAVE_GETPWUID - -/* Define as 1 if you have gettext and don't want to use GNU gettext. */ -#undef HAVE_GETTEXT - -/* Define if your locale.h file contains LC_MESSAGES. */ -#undef HAVE_LC_MESSAGES - -/* Define to 1 if you have the valloc function. */ -#undef HAVE_VALLOC - -/* Define to 1 if some rsh exists, or if you have . */ -#undef HAVE_RTAPELIB - -/* Define to 1 if mknod function is available. */ -#undef HAVE_MKNOD - -/* Define to 1 if stpcpy function is available. */ -#undef HAVE_STPCPY - -/* Define if `union wait' is the type of the first arg to wait functions. */ -#undef HAVE_UNION_WAIT - -/* Define to 1 if utime.h exists and declares struct utimbuf. */ -#undef HAVE_UTIME_H - -/* Define to mt_model (v.g., for DG/UX), else to mt_type. */ -#undef MTIO_CHECK_FIELD - -/* Define to the name of the distribution. */ -#undef PACKAGE - -/* Define to 1 if ANSI function prototypes are usable. */ -#undef PROTOTYPES - -/* Define to the full path of your rsh, if any. */ -#undef REMOTE_SHELL - -/* Path to directory containing system wide message catalog sources. */ -#undef STD_INC_PATH - -/* Define to the version of the distribution. */ -#undef VERSION - -/* Define to 1 if using the `glocale' package for message catalogs. */ -#undef WITH_CATALOGS - -/* Define to 1 for better use of the debugging malloc library. See - site ftp.antaire.com in antaire/src, file dmalloc/dmalloc.tar.gz. */ -#undef WITH_DMALLOC - -/* Define to 1 if GNU regex should be used instead of GNU rx. */ -#undef WITH_REGEX diff --git a/acinclude.m4 b/acinclude.m4 deleted file mode 100644 index 22518e11..00000000 --- a/acinclude.m4 +++ /dev/null @@ -1,425 +0,0 @@ -## ----------------------------------------- ## -## Find how to suppress newlines with echo. ## -## ----------------------------------------- ## - -# Once this macro is called, you may output with no echo in a Makefile or -# script using: echo @ECHO_N@ "STRING_TO_OUTPUT@ECHO_C@". - -AC_DEFUN(fp_PROG_ECHO, -[AC_MSG_CHECKING(how to suppress newlines using echo) -AC_CACHE_VAL(fp_cv_prog_echo_nonl, -[if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then - if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then - fp_cv_prog_echo_nonl=no - else - fp_cv_prog_echo_nonl=option - fi -else - fp_cv_prog_echo_nonl=escape -fi -]) -AC_MSG_RESULT($fp_cv_prog_echo_nonl) -case $fp_cv_prog_echo_nonl in - no) ECHO_N= ECHO_C= ;; - option) ECHO_N=-n ECHO_C= ;; - escape) ECHO_N= ECHO_C='\c' ;; -esac -AC_SUBST(ECHO_N)dnl -AC_SUBST(ECHO_C)dnl -]) - -## ------------------------------------------- ## -## Check if --with-included-malloc was given. ## -## From Franc,ois Pinard ## -## ------------------------------------------- ## - -# In 1992, Michael Bushnell (now Thomas Bushnell ) -# devised a test for avoiding HP/UX malloc and using GNU malloc instead. -# Bruno Haible recycled this -# test for CLISP Common LISP and extended it to cover broken mallocs from -# Sun and SGI. I () reworked it a little so -# it is independent of config.guess, and overridable by the installer. - -# On IRIX 5.2, libc malloc is broken, but the -lmalloc one was usable. -# So in my packages, I once unconditionally used -lmalloc if it existed. -# This does not do anymore, because the -lmalloc malloc is broken on -# Solaris 2.4 to 2.5.1 (alignment is 4 bytes instead of 8 bytes, as -# reported by John Wells ). - -# Bruno also notes: "HP-UX has two different malloc() implementations. -# Both are broken. When used with CLISP, the one in the default libc.a -# leads to a SIGSEGV, the one in libmalloc.a leads to a SIGBUS. The SunOS -# 4.1.1 malloc() breaks when used by CLISP's generational GC. The IRIX -# 5.2 malloc() breaks when used by CLISP's generational GC." - -# If the installer does not give a preference, we use the included GNU -# malloc if we have the slightest doubt that malloc could be broken, this -# includes cross compilation, and *all* HP/UX, SunOS or IRIX systems. -# It is crude indeed, but I just do not have enough information for truly -# benchmarking malloc in all cases, but want safe packages nevertheless. - -AC_DEFUN(fp_WITH_INCLUDED_MALLOC, -[AC_MSG_CHECKING(if included GNU malloc is wanted) -AC_ARG_WITH(included-malloc, -[ --with-included-malloc use the GNU malloc which is included here], , -[if test $cross_compiling = yes; then - withval=yes -else - case `uname -s 2> /dev/null` in - HP-UX | SunOS | IRIX* ) withval=yes ;; - *) withval=no ;; - esac -fi]) -test "$withval" = yes && LIBOBJS="$LIBOBJS gmalloc.o" -AC_MSG_RESULT($withval) -]) - -## -------------------- ## -## Macros from Ulrich. ## -## -------------------- ## - -# Search path for a program which passes the given test. -# Ulrich Drepper , 1996. - -# serial 1 - -dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, -dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) -AC_DEFUN(AM_PATH_PROG_WITH_TEST, -[# Extract the first word of "$2", so it can be a program name with args. -set dummy $2; ac_word=[$]2 -AC_MSG_CHECKING([for $ac_word]) -AC_CACHE_VAL(ac_cv_path_$1, -[case "[$]$1" in - /*) - ac_cv_path_$1="[$]$1" # Let the user override the test with a path. - ;; - *) - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" - for ac_dir in ifelse([$5], , $PATH, [$5]); do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - if [$3]; then - ac_cv_path_$1="$ac_dir/$ac_word" - break - fi - fi - done - IFS="$ac_save_ifs" -dnl If no 4th arg is given, leave the cache variable unset, -dnl so AC_PATH_PROGS will keep looking. -ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" -])dnl - ;; -esac])dnl -$1="$ac_cv_path_$1" -if test -n "[$]$1"; then - AC_MSG_RESULT([$]$1) -else - AC_MSG_RESULT(no) -fi -AC_SUBST($1)dnl -]) - -# Check whether LC_MESSAGES is available in . -# Ulrich Drepper , 1995. - -# serial 1 - -AC_DEFUN(AM_LC_MESSAGES, - [if test $ac_cv_header_locale_h = yes; then - AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES, - [AC_TRY_LINK([#include ], [return LC_MESSAGES], - am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)]) - if test $am_cv_val_LC_MESSAGES = yes; then - AC_DEFINE(HAVE_LC_MESSAGES) - fi - fi]) - -# Macro to add for using GNU gettext. -# Ulrich Drepper , 1995. - -# serial 1 - -AC_DEFUN(AM_WITH_NLS, - [AC_MSG_CHECKING([whether NLS is requested]) - dnl Default is enabled NLS - AC_ARG_ENABLE(nls, - [ --disable-nls do not use Native Language Support], - USE_NLS=$enableval, USE_NLS=yes) - AC_MSG_RESULT($USE_NLS) - AC_SUBST(USE_NLS) - - USE_INCLUDED_LIBINTL=no - - dnl If we use NLS figure out what method - if test "$USE_NLS" = "yes"; then - AC_DEFINE(ENABLE_NLS) - AC_MSG_CHECKING([whether included gettext is requested]) - AC_ARG_WITH(included-gettext, - [ --with-included-gettext use the GNU gettext library included here], - nls_cv_force_use_gnu_gettext=$withval, - nls_cv_force_use_gnu_gettext=no) - AC_MSG_RESULT($nls_cv_force_use_gnu_gettext) - - nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" - if test "$nls_cv_force_use_gnu_gettext" != "yes"; then - dnl User does not insist on using GNU NLS library. Figure out what - dnl to use. If gettext or catgets are available (in this order) we - dnl use this. Else we have to fall back to GNU NLS library. - dnl catgets is only used if permitted by option --with-catgets. - nls_cv_header_intl= - nls_cv_header_libgt= - CATOBJEXT=NONE - - AC_CHECK_HEADER(libintl.h, - [AC_CACHE_CHECK([for gettext in libc], gt_cv_func_gettext_libc, - [AC_TRY_LINK([#include ], [return (int) gettext ("")], - gt_cv_func_gettext_libc=yes, gt_cv_func_gettext_libc=no)]) - - if test "$gt_cv_func_gettext_libc" != "yes"; then - AC_CHECK_LIB(intl, bindtextdomain, - [AC_CACHE_CHECK([for gettext in libintl], - gt_cv_func_gettext_libintl, - [AC_TRY_LINK([], [return (int) gettext ("")], - gt_cv_func_gettext_libintl=yes, - gt_cv_func_gettext_libintl=no)])]) - fi - - if test "$gt_cv_func_gettext_libc" = "yes" \ - || test "$gt_cv_func_gettext_libintl" = "yes"; then - AC_DEFINE(HAVE_GETTEXT) - AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, - [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl - if test "$MSGFMT" != "no"; then - AC_CHECK_FUNCS(dcgettext) - AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) - AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, - [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :) - AC_TRY_LINK(, [extern int _nl_msg_cat_cntr; - return _nl_msg_cat_cntr], - [CATOBJEXT=.gmo - DATADIRNAME=share], - [CATOBJEXT=.mo - DATADIRNAME=lib]) - INSTOBJEXT=.mo - fi - fi - ]) - - if test "$CATOBJEXT" = "NONE"; then - AC_MSG_CHECKING([whether catgets can be used]) - AC_ARG_WITH(catgets, - [ --with-catgets use catgets functions if available], - nls_cv_use_catgets=$withval, nls_cv_use_catgets=no) - AC_MSG_RESULT($nls_cv_use_catgets) - - if test "$nls_cv_use_catgets" = "yes"; then - dnl No gettext in C library. Try catgets next. - AC_CHECK_LIB(i, main) - AC_CHECK_FUNC(catgets, - [AC_DEFINE(HAVE_CATGETS) - INTLOBJS="\$(CATOBJS)" - AC_PATH_PROG(GENCAT, gencat, no)dnl - if test "$GENCAT" != "no"; then - AC_PATH_PROG(GMSGFMT, gmsgfmt, no) - if test "$GMSGFMT" = "no"; then - AM_PATH_PROG_WITH_TEST(GMSGFMT, msgfmt, - [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no) - fi - AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, - [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :) - USE_INCLUDED_LIBINTL=yes - CATOBJEXT=.cat - INSTOBJEXT=.cat - DATADIRNAME=lib - INTLDEPS="../intl/libintl.a" - INTLLIBS=$INTLDEPS - LIBS=`echo $LIBS | sed -e 's/-lintl//'` - nls_cv_header_intl=intl/libintl.h - nls_cv_header_libgt=intl/libgettext.h - fi]) - fi - fi - - if test "$CATOBJEXT" = "NONE"; then - dnl Neither gettext nor catgets in included in the C library. - dnl Fall back on GNU gettext library. - nls_cv_use_gnu_gettext=yes - fi - fi - - if test "$nls_cv_use_gnu_gettext" = "yes"; then - dnl Mark actions used to generate GNU NLS library. - INTLOBJS="\$(GETTOBJS)" - AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, - [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], msgfmt) - AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) - AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, - [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :) - AC_SUBST(MSGFMT) - USE_INCLUDED_LIBINTL=yes - CATOBJEXT=.gmo - INSTOBJEXT=.mo - DATADIRNAME=share - INTLDEPS="../intl/libintl.a" - INTLLIBS=$INTLDEPS - LIBS=`echo $LIBS | sed -e 's/-lintl//'` - nls_cv_header_intl=intl/libintl.h - nls_cv_header_libgt=intl/libgettext.h - fi - - dnl Test whether we really found GNU xgettext. - if test "$XGETTEXT" != ":"; then - dnl If it is no GNU xgettext we define it as : so that the - dnl Makefiles still can work. - if $XGETTEXT --omit-header /dev/null 2> /dev/null; then - : ; - else - AC_MSG_RESULT( - [found xgettext programs is not GNU xgettext; ignore it]) - XGETTEXT=":" - fi - fi - - # We need to process the po/ directory. - POSUB=po - else - DATADIRNAME=share - nls_cv_header_intl=intl/libintl.h - nls_cv_header_libgt=intl/libgettext.h - fi - - # If this is used in GNU gettext we have to set USE_NLS to `yes' - # because some of the sources are only built for this goal. - if test "$PACKAGE" = gettext; then - USE_NLS=yes - USE_INCLUDED_LIBINTL=yes - fi - - dnl These rules are solely for the distribution goal. While doing this - dnl we only have to keep exactly one list of the available catalogs - dnl in configure.in. - for lang in $ALL_LINGUAS; do - GMOFILES="$GMOFILES $lang.gmo" - POFILES="$POFILES $lang.po" - done - - dnl Make all variables we use known to autoconf. - AC_SUBST(USE_INCLUDED_LIBINTL) - AC_SUBST(CATALOGS) - AC_SUBST(CATOBJEXT) - AC_SUBST(DATADIRNAME) - AC_SUBST(GMOFILES) - AC_SUBST(INSTOBJEXT) - AC_SUBST(INTLDEPS) - AC_SUBST(INTLLIBS) - AC_SUBST(INTLOBJS) - AC_SUBST(POFILES) - AC_SUBST(POSUB) - ]) - -AC_DEFUN(AM_GNU_GETTEXT, - [AC_REQUIRE([AC_PROG_MAKE_SET])dnl - AC_REQUIRE([AC_PROG_CC])dnl - AC_REQUIRE([AC_ISC_POSIX])dnl - AC_REQUIRE([AC_PROG_RANLIB])dnl - AC_REQUIRE([AC_HEADER_STDC])dnl - AC_REQUIRE([AC_C_CONST])dnl - AC_REQUIRE([AC_C_INLINE])dnl - AC_REQUIRE([AC_TYPE_OFF_T])dnl - AC_REQUIRE([AC_TYPE_SIZE_T])dnl - AC_REQUIRE([AC_FUNC_ALLOCA])dnl - AC_REQUIRE([AC_FUNC_MMAP])dnl - - AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h string.h \ -unistd.h values.h]) - AC_CHECK_FUNCS([getcwd munmap putenv setenv setlocale strchr strcasecmp \ -__argz_count __argz_stringify __argz_next]) - - if test "${ac_cv_func_stpcpy+set}" != "set"; then - AC_CHECK_FUNCS(stpcpy) - fi - if test "${ac_cv_func_stpcpy}" = "yes"; then - AC_DEFINE(HAVE_STPCPY) - fi - - AM_LC_MESSAGES - AM_WITH_NLS - - if test "x$CATOBJEXT" != "x"; then - if test "x$ALL_LINGUAS" = "x"; then - LINGUAS= - else - AC_MSG_CHECKING(for catalogs to be installed) - NEW_LINGUAS= - for lang in ${LINGUAS=$ALL_LINGUAS}; do - case "$ALL_LINGUAS" in - *$lang*) NEW_LINGUAS="$NEW_LINGUAS $lang" ;; - esac - done - LINGUAS=$NEW_LINGUAS - AC_MSG_RESULT($LINGUAS) - fi - - dnl Construct list of names of catalog files to be constructed. - if test -n "$LINGUAS"; then - for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done - fi - fi - - dnl Determine which catalog format we have (if any is needed) - dnl For now we know about two different formats: - dnl Linux libc-5 and the normal X/Open format - test -d intl || mkdir intl - if test "$CATOBJEXT" = ".cat"; then - AC_CHECK_HEADER(linux/version.h, msgformat=linux, msgformat=xopen) - - dnl Transform the SED scripts while copying because some dumb SEDs - dnl cannot handle comments. - sed -e '/^#/d' $srcdir/intl/$msgformat-msg.sed > intl/po2msg.sed - fi - dnl po2tbl.sed is always needed. - sed -e '/^#.*[^\\]$/d' -e '/^#$/d' \ - $srcdir/intl/po2tbl.sed.in > intl/po2tbl.sed - - dnl In the intl/Makefile.in we have a special dependency which makes - dnl only sense for gettext. We comment this out for non-gettext - dnl packages. - if test "$PACKAGE" = "gettext"; then - GT_NO="#NO#" - GT_YES= - else - GT_NO= - GT_YES="#YES#" - fi - AC_SUBST(GT_NO) - AC_SUBST(GT_YES) - - dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly - dnl find the mkinstalldirs script in another subdir but ($top_srcdir). - dnl Try to locate is. - MKINSTALLDIRS= - if test $ac_aux_dir; then - MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" - fi - if test -z $MKINSTALLDIRS; then - MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" - fi - AC_SUBST(MKINSTALLDIRS) - - dnl Generate list of files to be processed by xgettext which will - dnl be included in po/Makefile. - test -d po || mkdir po - if test "x$srcdir" != "x."; then - if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then - posrcprefix="$srcdir/" - else - posrcprefix="../$srcdir/" - fi - else - posrcprefix="../" - fi - sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \ - < $srcdir/po/POTFILES.in > po/POTFILES - ]) diff --git a/bootstrap b/bootstrap index a967cc74..9f3ae09e 100755 --- a/bootstrap +++ b/bootstrap @@ -1,13 +1,13 @@ #! /bin/sh -# Bootstrap this package from CVS. +# Bootstrap this package from checked-out sources. -# Copyright (C) 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. +# Copyright (C) 2003-2008, 2009 Free Software Foundation, Inc. -# This program is free software; you can redistribute it and/or modify +# This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3, or (at your option) -# any later version. +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -15,9 +15,7 @@ # GNU General Public License for more details. # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301, USA. +# along with this program. If not, see . # Written by Paul Eggert and Sergey Poznyakoff. @@ -25,10 +23,16 @@ nl=' ' # Ensure file names are sorted consistently across platforms. -# Also, ensure diagnostics are in English, e.g., "wget --help" below. LC_ALL=C export LC_ALL +local_gl_dir=gl + +# Temporary directory names. +bt='._bootmp' +bt_regex=`echo "$bt"| sed 's/\./[.]/g'` +bt2=${bt}2 + usage() { echo >&2 "\ Usage: $0 [OPTION]... @@ -43,73 +47,25 @@ Options: --gnulib-srcdir=DIRNAME Specify the local directory where gnulib sources reside. Use this if you already have gnulib sources on your machine, and - do not want to waste your bandwidth dowloading + do not want to waste your bandwidth downloading them again. --copy Copy files instead of creating symbolic links. --force Attempt to bootstrap even if the sources seem not to have been checked out. --skip-po Do not download po files. - --update-po Update po files and exit. - --cvs-user=USERNAME Set the CVS username to be used when accessing - the paxutils repository. -If the file bootstrap.conf exists in the current working directory, its +If the file $0.conf exists in the same directory as this script, its contents are read as shell variables to configure the bootstrap. -Local defaults can be provided by placing the file \`.bootstrap' in the -current working directory. The file is read after bootstrap.conf, comments -and empty lines are removed, shell variables expanded and the result is -prepended to the command line options. - Running without arguments will suffice in most cases. " } -checkout() { - if [ ! -d $1 ]; then - echo "$0: getting $1 files..." - - case $1 in - paxutils) - case ${CVS_AUTH-pserver} in - pserver) - CVS_PREFIX=':pserver:anonymous@';; - ssh) - CVS_PREFIX="$CVS_USER${CVS_USER+@}";; - *) - echo "$0: $CVS_AUTH: Unknown CVS access method" >&2 - exit 1;; - esac - - case $CVS_RSH in - '') CVS_RSH=ssh; export CVS_RSH;; - esac - - CVSURL=${CVS_PREFIX}cvs.savannah.gnu.org:/cvsroot/"$1" - ;; - - gnulib) - CVSURL=:pserver:anonymous@pserver.git.sv.gnu.org:/gnulib.git - ;; - - esac - - trap "cleanup $1" 1 2 13 15 - - cvs -z3 -q -d $CVSURL co $1 || cleanup $1 - - trap - 1 2 13 15 - fi -} - -cleanup() { - status=$? - rm -fr $1 - exit $status -} - # Configuration. +# Name of the Makefile.am +gnulib_mk=gnulib.mk + # List of gnulib modules needed. gnulib_modules= @@ -126,9 +82,10 @@ po_download_command_format=\ extract_package_name=' /^AC_INIT(/{ - /.*,.*,.*,/{ + /.*,.*,.*, */{ s/// s/[][]//g + s/)$// p q } @@ -141,19 +98,28 @@ extract_package_name=' } ' package=`sed -n "$extract_package_name" configure.ac` || exit +gnulib_name=lib$package + +build_aux=build-aux +source_base=lib +m4_base=m4 +doc_base=doc +tests_base=tests # Extra files from gnulib, which override files from other sources. -gnulib_extra_files=' - build-aux/announce-gen - build-aux/install-sh - build-aux/missing - build-aux/mdate-sh - build-aux/texinfo.tex - build-aux/depcomp - build-aux/config.guess - build-aux/config.sub +gnulib_extra_files=" + $build_aux/install-sh + $build_aux/missing + $build_aux/mdate-sh + $build_aux/texinfo.tex + $build_aux/depcomp + $build_aux/config.guess + $build_aux/config.sub doc/INSTALL -' +" + +# Additional gnulib-tool options to use. Use "\newline" to break lines. +gnulib_tool_option_extras= # Other locale categories that need message catalogs. EXTRA_LOCALE_CATEGORIES= @@ -165,23 +131,38 @@ XGETTEXT_OPTIONS='\\\ --flag=error:3:c-format --flag=error_at_line:5:c-format\\\ ' +# Package bug report address for gettext files +MSGID_BUGS_ADDRESS=bug-$package@gnu.org + # Files we don't want to import. excluded_files= # File that should exist in the top directory of a checked out hierarchy, # but not in a distribution tarball. -CVS_only_file=README-cvs +checkout_only_file=README-hacking # Whether to use copies instead of symlinks. copy=false +# Set this to '.cvsignore .gitignore' in bootstrap.conf if you want +# those files to be generated in directories like lib/, m4/, and po/. +# Or set it to 'auto' to make this script select which to use based +# on which version control system (if any) is used in the source directory. +vc_ignore=auto + # Override the default configuration, if necessary. -test -r bootstrap.conf && . ./bootstrap.conf +# Make sure that bootstrap.conf is sourced from the current directory +# if we were invoked as "sh bootstrap". +case "$0" in + */*) test -r "$0.conf" && . "$0.conf" ;; + *) test -r "$0.conf" && . ./"$0.conf" ;; +esac + -# Read local configuration file -if [ -r .bootstrap ]; then - echo "$0: Reading configuration file .bootstrap" - eval set -- "`sed 's/#.*$//;/^$/d' .bootstrap | tr '\n' ' '` $*" +if test "$vc_ignore" = auto; then + vc_ignore= + test -d .git && vc_ignore=.gitignore + test -d CVS && vc_ignore="$vc_ignore .cvsignore" fi # Translate configuration into internal form. @@ -194,20 +175,14 @@ do --help) usage exit;; + --gnulib-srcdir=*) + GNULIB_SRCDIR=`expr "X$option" : 'X--gnulib-srcdir=\(.*\)'`;; --paxutils-srcdir=*) PAXUTILS_SRCDIR=`expr "$option" : '--paxutils-srcdir=\(.*\)'`;; - --gnulib-srcdir=*) - GNULIB_SRCDIR=`expr "$option" : '--gnulib-srcdir=\(.*\)'`;; - --cvs-user=*) - CVS_USER=`expr "$option" : '--cvs-user=\(.*\)'`;; - --skip-po | --no-po) # --no-po is for compatibility with 'tar' tradition. - DOWNLOAD_PO=skip;; - --update-po=*) - DOWNLOAD_PO=`expr "$option" : '--update-po=\(.*\)'`;; - --update-po) - DOWNLOAD_PO=only;; + --skip-po) + SKIP_PO=t;; --force) - CVS_only_file=;; + checkout_only_file=;; --copy) copy=true;; *) @@ -216,12 +191,130 @@ do esac done -if test -n "$CVS_only_file" && test ! -r "$CVS_only_file"; then +if test -n "$checkout_only_file" && test ! -r "$checkout_only_file"; then echo "$0: Bootstrapping from a non-checked-out distribution is risky." >&2 exit 1 fi -echo "$0: Bootstrapping CVS $package..." +# If $STR is not already on a line by itself in $FILE, insert it, +# sorting the new contents of the file and replacing $FILE with the result. +insert_sorted_if_absent() { + file=$1 + str=$2 + test -f $file || touch $file + echo "$str" | sort -u - $file | cmp -s - $file \ + || echo "$str" | sort -u - $file -o $file \ + || exit 1 +} + +# Die if there is no AC_CONFIG_AUX_DIR($build_aux) line in configure.ac. +found_aux_dir=no +grep '^[ ]*AC_CONFIG_AUX_DIR(\['"$build_aux"'\])' configure.ac \ + >/dev/null && found_aux_dir=yes +grep '^[ ]*AC_CONFIG_AUX_DIR('"$build_aux"')' configure.ac \ + >/dev/null && found_aux_dir=yes +if test $found_aux_dir = no; then + echo "$0: expected line not found in configure.ac. Add the following:" >&2 + echo " AC_CONFIG_AUX_DIR([$build_aux])" >&2 + exit 1 +fi + +# If $build_aux doesn't exist, create it now, otherwise some bits +# below will malfunction. If creating it, also mark it as ignored. +if test ! -d $build_aux; then + mkdir $build_aux + for dot_ig in x $vc_ignore; do + test $dot_ig = x && continue + insert_sorted_if_absent $dot_ig $build_aux + done +fi + +echo "$0: Bootstrapping from checked-out $package sources..." + +# See if we can use gnulib's git-merge-changelog merge driver. +if test -d .git && (git --version) >/dev/null 2>/dev/null ; then + if git config merge.merge-changelog.driver >/dev/null ; then + : + elif (git-merge-changelog --version) >/dev/null 2>/dev/null ; then + echo "initializing git-merge-changelog driver" + git config merge.merge-changelog.name 'GNU-style ChangeLog merge driver' + git config merge.merge-changelog.driver 'git-merge-changelog %O %A %B' + else + echo "consider installing git-merge-changelog from gnulib" + fi +fi + +cleanup() { + status=$? + rm -fr $1 + exit $status +} + +git_modules_config () { + GIT_CONFIG_LOCAL=.gitmodules git config "$@" +} + +# Get paxutils files. +case ${PAXUTILS_SRCDIR--} in +-) if [ ! -d paxutils ]; then + echo "$0: getting paxutils files..." + + trap "cleanup paxutils" 1 2 13 15 + + git clone --depth 1 git://git.sv.gnu.org/paxutils || cleanup paxutils + + trap - 1 2 13 15 + fi + PAXUTILS_SRCDIR=paxutils + ;; +esac + +if [ -r $PAXUTILS_SRCDIR/gnulib.modules ]; then + gnulib_modules=` + (echo "$gnulib_modules"; grep '^[^#]' $PAXUTILS_SRCDIR/gnulib.modules) | + sort -u + ` +fi + +# Get gnulib files. + +case ${GNULIB_SRCDIR--} in +-) + if git_modules_config submodule.gnulib.url >/dev/null; then + echo "$0: getting gnulib files..." + git submodule init || exit $? + git submodule update || exit $? + + elif [ ! -d gnulib ]; then + echo "$0: getting gnulib files..." + + trap cleanup_gnulib 1 2 13 15 + + git clone --help|grep depth > /dev/null && shallow='--depth 2' || shallow= + git clone $shallow git://git.sv.gnu.org/gnulib || + "cleanup $1" + + trap - 1 2 13 15 + fi + GNULIB_SRCDIR=gnulib + ;; +*) + # Redirect the gnulib submodule to the directory on the command line + # if possible. + if test -d "$GNULIB_SRCDIR"/.git && \ + git_modules_config submodule.gnulib.url >/dev/null; then + git submodule init + GNULIB_SRCDIR=`cd $GNULIB_SRCDIR && pwd` + git config --replace-all submodule.gnulib.url $GNULIB_SRCDIR + echo "$0: getting gnulib files..." + git submodule update || exit $? + GNULIB_SRCDIR=gnulib + fi + ;; +esac + +gnulib_tool=$GNULIB_SRCDIR/gnulib-tool +<$gnulib_tool || exit # Get translations. @@ -252,7 +345,7 @@ update_po_files() { langs=`cd $ref_po_dir && echo *.po|sed 's/\.po//g'` test "$langs" = '*' && langs=x - for po in `cd $ref_po_dir && echo *.po|sed 's/\.po//g'`; do + for po in $langs; do case $po in x) continue;; esac new_po="$ref_po_dir/$po.po" cksum_file="$ref_po_dir/$po.s1" @@ -265,97 +358,41 @@ update_po_files() { done } -case $DOWNLOAD_PO in -'skip') - ;; +case $SKIP_PO in '') if test -d po; then update_po_files po $package || exit fi - ;; -'only') - if test -d po; then - update_po_files po $package || exit - fi - exit - ;; -esac -# Get paxutils files. - -case ${PAXUTILS_SRCDIR--} in --) checkout paxutils - PAXUTILS_SRCDIR=paxutils + if test -d runtime-po; then + update_po_files runtime-po $package-runtime || exit + fi;; esac -if [ -r $PAXUTILS_SRCDIR/gnulib.modules ]; then - gnulib_modules=` - (echo "$gnulib_modules"; grep '^[^#]' $PAXUTILS_SRCDIR/gnulib.modules) | - sort -u - ` -fi - -ignore_file_list= -cleanup_ifl() { - test -n "$ignore_file_list" && rm -f $ignore_file_list -} - -trap 'cleanup_ifl' 1 2 3 15 +symlink_to_dir() +{ + src=$1/$2 + dst=${3-$2} -# ignorefile DIR FILE -# add FILE to the temporary ignorelist in the directory DIR -ignorefile() { - file=$1/.ignore.$$ - echo "$2" >> $file - if `echo $ignore_list | grep -qv $file`; then - ignore_file_list="$ignore_file_list -$file" - fi -} + test -f "$src" && { -# copy_files srcdir dstdir -copy_files() { - for file in `cat $1/DISTFILES` - do - case $file in - "#*") continue;; - esac - dst=`echo $file | sed 's^.*/^^'` - if [ $# -eq 3 ]; then - case $dst in - ${3}*) ;; - *) dst=${3}$dst;; - esac + # If the destination directory doesn't exist, create it. + # This is required at least for "lib/uniwidth/cjk.h". + dst_dir=`dirname "$dst"` + if ! test -d "$dst_dir"; then + mkdir -p "$dst_dir" + + # If we've just created a directory like lib/uniwidth, + # tell version control system(s) it's ignorable. + # FIXME: for now, this does only one level + parent=`dirname "$dst_dir"` + for dot_ig in x $vc_ignore; do + test $dot_ig = x && continue + ig=$parent/$dot_ig + insert_sorted_if_absent $ig `echo "$dst_dir"|sed 's,.*/,,'` + done fi - echo "$0: Copying file $1/$file to $2/$dst" - cp -p $1/$file $2/$dst - ignorefile $2 $dst - done -} - -# Get gnulib files. - -case ${GNULIB_SRCDIR--} in --) - checkout gnulib - GNULIB_SRCDIR=gnulib -esac - -gnulib_tool=$GNULIB_SRCDIR/gnulib-tool -<$gnulib_tool || exit - -ensure_dir_exists() -{ - d=`dirname $dst` - test -d "$d" || mkdir -p -- "$d" -} - -symlink_to_gnulib() -{ - src=$GNULIB_SRCDIR/$1 - dst=${2-$1} - test -f "$src" && { if $copy; then { test ! -h "$dst" || { @@ -366,7 +403,6 @@ symlink_to_gnulib() test -f "$dst" && cmp -s "$src" "$dst" || { echo "$0: cp -fp $src $dst" && - ensure_dir_exists $dst && cp -fp "$src" "$dst" } else @@ -389,7 +425,6 @@ symlink_to_gnulib() esac echo "$0: ln -fs $dot_dots$src $dst" && - ensure_dir_exists $dst && ln -fs "$dot_dots$src" "$dst" } fi @@ -402,7 +437,9 @@ cp_mark_as_generated() cp_dst=$2 if cmp -s "$cp_src" "$GNULIB_SRCDIR/$cp_dst"; then - symlink_to_gnulib "$cp_dst" + symlink_to_dir "$GNULIB_SRCDIR" "$cp_dst" + elif cmp -s "$cp_src" "$local_gl_dir/$cp_dst"; then + symlink_to_dir $local_gl_dir "$cp_dst" else case $cp_dst in *.[ch]) c1='/* '; c2=' */';; @@ -411,10 +448,20 @@ cp_mark_as_generated() *) c1= ; c2= ;; esac + # If the destination directory doesn't exist, create it. + # This is required at least for "lib/uniwidth/cjk.h". + dst_dir=`dirname "$cp_dst"` + test -d "$dst_dir" || mkdir -p "$dst_dir" + if test -z "$c1"; then cmp -s "$cp_src" "$cp_dst" || { + # Copy the file first to get proper permissions if it + # doesn't already exist. Then overwrite the copy. echo "$0: cp -f $cp_src $cp_dst" && - cp -f "$cp_src" "$cp_dst" + rm -f "$cp_dst" && + cp "$cp_src" "$cp_dst-t" && + sed "s!$bt_regex/!!g" "$cp_src" > "$cp_dst-t" && + mv -f "$cp_dst-t" "$cp_dst" } else # Copy the file first to get proper permissions if it @@ -423,7 +470,7 @@ cp_mark_as_generated() ( echo "$c1-*- buffer-read-only: t -*- vi: set ro:$c2" && echo "${c1}DO NOT EDIT! GENERATED AUTOMATICALLY!$c2" && - cat "$cp_src" + sed "s!$bt_regex/!!g" "$cp_src" ) > $cp_dst-t && if cmp -s "$cp_dst-t" "$cp_dst"; then rm -f "$cp_dst-t" @@ -443,7 +490,9 @@ version_controlled_file() { grep -F "/$file/" $dir/CVS/Entries 2>/dev/null | grep '^/[^/]*/[0-9]' > /dev/null && found=yes elif test -d .git; then - git-rm -n "$dir/$file" > /dev/null 2>&1 && found=yes + git rm -n "$dir/$file" > /dev/null 2>&1 && found=yes + elif test -d .svn; then + svn log -r HEAD "$dir/$file" > /dev/null 2>&1 && found=yes else echo "$0: no version control for $dir/$file?" >&2 fi @@ -454,18 +503,22 @@ slurp() { for dir in . `(cd $1 && find * -type d -print)`; do copied= sep= - for file in `ls $1/$dir`; do + for file in `ls -a $1/$dir`; do + case $file in + .|..) continue;; + .*) continue;; # FIXME: should all file names starting with "." be ignored? + esac test -d $1/$dir/$file && continue for excluded_file in $excluded_files; do test "$dir/$file" = "$excluded_file" && continue 2 done if test $file = Makefile.am; then - copied=$copied${sep}gnulib.mk; sep=$nl - remove_intl='/^[^#].*\/intl/s/^/#/;'"s,/$bt,,g" - sed "$remove_intl" $1/$dir/$file | cmp -s - $dir/gnulib.mk || { - echo "$0: Copying $1/$dir/$file to $dir/gnulib.mk ..." && - rm -f $dir/gnulib.mk && - sed "$remove_intl" $1/$dir/$file >$dir/gnulib.mk + copied=$copied${sep}$gnulib_mk; sep=$nl + remove_intl='/^[^#].*\/intl/s/^/#/;'"s!$bt_regex/!!g" + sed "$remove_intl" $1/$dir/$file | cmp -s - $dir/$gnulib_mk || { + echo "$0: Copying $1/$dir/$file to $dir/$gnulib_mk ..." && + rm -f $dir/$gnulib_mk && + sed "$remove_intl" $1/$dir/$file >$dir/$gnulib_mk } elif { test "${2+set}" = set && test -r $2/$dir/$file; } || version_controlled_file $dir $file; then @@ -489,98 +542,109 @@ slurp() { fi || exit done - if test -n "$copied"; then - copied="Makefile -Makefile.in -$copied" - if test -d CVS; then - dot_ig=.cvsignore - else - dor_ig=.gitignore - fi - + for dot_ig in x $vc_ignore; do + test $dot_ig = x && continue ig=$dir/$dot_ig - if [ -f $dir/.ignore.$$ ]; then - tfile=$dir/.ignore.$$ - else - tfile= + if test -n "$copied"; then + insert_sorted_if_absent $ig "$copied" + # If an ignored file name ends with .in.h, then also add + # the name with just ".h". Many gnulib headers are generated, + # e.g., stdint.in.h -> stdint.h, dirent.in.h ->..., etc. + # Likewise for .gperf -> .h, .y -> .c, and .sin -> .sed + f=`echo "$copied"|sed 's/\.in\.h$/.h/;s/\.sin$/.sed/;s/\.y$/.c/;s/\.gperf$/.h/'` + insert_sorted_if_absent $ig "$f" + + # For files like sys_stat.in.h and sys_time.in.h, record as + # ignorable the directory we might eventually create: sys/. + f=`echo "$copied"|sed 's/sys_.*\.in\.h$/sys/'` + insert_sorted_if_absent $ig "$f" fi - if test -f $ig; then - echo "$copied" | sort -u - $ig | cmp -s - $ig || - echo "$copied" | sort -u - $ig $tfile -o $ig - else - copied="$dot_ig -$copied" - if [ "$dir" = "po" ]; then - copied="LINGUAS -Makevars -POTFILES -*.mo -*.gmo -*.po -remove-potcdate.sed -stamp-po -$package.pot -$copied" - fi - echo "$copied" | sort -u - $tfile -o $ig - fi || exit - fi + done done } # Create boot temporary directories to import from gnulib and gettext. - -bt='.#bootmp' -bt2=${bt}2 rm -fr $bt $bt2 && mkdir $bt $bt2 || exit # Import from gnulib. -test -d build-aux || { - echo "$0: mkdir build-aux ..." && - mkdir build-aux -} || exit gnulib_tool_options="\ --import\ --no-changelog\ - --aux-dir $bt/build-aux\ - --doc-base $bt/doc\ - --lib lib$package\ - --m4-base $bt/m4/\ - --source-base $bt/lib/\ - --tests-base $bt/tests\ - --local-dir gl\ + --aux-dir $bt/$build_aux\ + --doc-base $bt/$doc_base\ + --lib $gnulib_name\ + --m4-base $bt/$m4_base/\ + --source-base $bt/$source_base/\ + --tests-base $bt/$tests_base\ + --local-dir $local_gl_dir\ + $gnulib_tool_option_extras\ " echo "$0: $gnulib_tool $gnulib_tool_options --import ..." $gnulib_tool $gnulib_tool_options --import $gnulib_modules && slurp $bt || exit for file in $gnulib_files; do - symlink_to_gnulib $file || exit + symlink_to_dir "$GNULIB_SRCDIR" $file || exit done # Import from gettext. +with_gettext=yes +grep '^[ ]*AM_GNU_GETTEXT_VERSION(' configure.ac >/dev/null || \ + with_gettext=no + +if test $with_gettext = yes; then + echo "$0: (cd $bt2; autopoint) ..." + cp configure.ac $bt2 && + (cd $bt2 && autopoint && rm configure.ac) && + slurp $bt2 $bt || exit +fi +rm -fr $bt $bt2 || exit -echo "$0: (cd $bt2; autopoint) ..." -cp configure.ac $bt2 && -(cd $bt2 && autopoint && rm configure.ac) && -slurp $bt2 $bt || exit +# Remove any dangling symlink matching "*.m4" or "*.[ch]" in some +# gnulib-populated directories. Such .m4 files would cause aclocal to fail. +# The following requires GNU find 4.2.3 or newer. Considering the usual +# portability constraints of this script, that may seem a very demanding +# requirement, but it should be ok. Ignore any failure, which is fine, +# since this is only a convenience to help developers avoid the relatively +# unusual case in which a symlinked-to .m4 file is git-removed from gnulib +# between successive runs of this script. +find "$m4_base" "$source_base" \ + -depth \( -name '*.m4' -o -name '*.[ch]' \) \ + -type l -xtype l -delete > /dev/null 2>&1 -rm -fr $bt $bt2 || exit +# copy_files srcdir dstdir +copy_files() { + for file in `cat $1/DISTFILES` + do + case $file in + "#*") continue;; + esac + dst=`echo $file | sed 's^.*/^^'` + if [ $# -eq 3 ]; then + case $dst in + ${3}*) ;; + *) dst=${3}$dst;; + esac + fi + symlink_to_dir "$1" "$file" "$2/$dst" || exit +# FIXME ignorefile $2 $dst + done +} # Import from paxutils -copy_files ${PAXUTILS_SRCDIR}/m4 m4 +copy_files ${PAXUTILS_SRCDIR} . +copy_files ${PAXUTILS_SRCDIR}/am m4 echo "$0: Creating m4/paxutils.m4" (echo "# This file is generated automatically. Please, do not edit." echo "#" echo "AC_DEFUN([${package}_PAXUTILS],[" - cat ${PAXUTILS_SRCDIR}/m4/DISTFILES | sed '/^#/d;s/\(.*\)\.m4/pu_\1/' | tr a-z A-Z + cat ${PAXUTILS_SRCDIR}/am/DISTFILES | sed '/^#/d;s/\(.*\)\.m4/pu_\1/' | tr a-z A-Z echo "])") > ./m4/paxutils.m4 -ignorefile m4 paxutils.m4 +#FIXME ignorefile m4 paxutils.m4 if [ -d rmt ]; then : @@ -595,59 +659,75 @@ done copy_files ${PAXUTILS_SRCDIR}/paxlib lib pax + # Reconfigure, getting other files. for command in \ + libtool \ 'aclocal --force -I m4' \ 'autoconf --force' \ 'autoheader --force' \ 'automake --add-missing --copy --force-missing'; do + if test "$command" = libtool; then + use_libtool=0 + # We'd like to use grep -E, to see if any of LT_INIT, + # AC_PROG_LIBTOOL, AM_PROG_LIBTOOL is used in configure.ac, + # but that's not portable enough (e.g., for Solaris). + grep '^[ ]*A[CM]_PROG_LIBTOOL' configure.ac >/dev/null \ + && use_libtool=1 + grep '^[ ]*LT_INIT' configure.ac >/dev/null \ + && use_libtool=1 + test $use_libtool = 0 \ + && continue + command='libtoolize -c -f' + fi echo "$0: $command ..." $command || exit done # Get some extra files from gnulib, overriding existing files. - for file in $gnulib_extra_files; do case $file in */INSTALL) dst=INSTALL;; + build-aux/*) dst=$build_aux/`expr "$file" : 'build-aux/\(.*\)'`;; *) dst=$file;; esac - symlink_to_gnulib $file $dst || exit + symlink_to_dir "$GNULIB_SRCDIR" $file $dst || exit done - -# Create gettext configuration. -echo "$0: Creating po/Makevars from po/Makevars.template ..." -rm -f po/Makevars -sed ' - /^EXTRA_LOCALE_CATEGORIES *=/s/=.*/= '"$EXTRA_LOCALE_CATEGORIES"'/ - /^MSGID_BUGS_ADDRESS *=/s/=.*/= bug-'"$package"'@gnu.org/ - /^XGETTEXT_OPTIONS *=/{ - s/$/ \\/ - a\ - '"$XGETTEXT_OPTIONS"' $${end_of_xgettext_options+} - } -' po/Makevars.template >po/Makevars - -if test -d runtime-po; then - # Similarly for runtime-po/Makevars, but not quite the same. - rm -f runtime-po/Makevars +if test $with_gettext = yes; then + # Create gettext configuration. + echo "$0: Creating po/Makevars from po/Makevars.template ..." + rm -f po/Makevars sed ' - /^DOMAIN *=.*/s/=.*/= '"$package"'-runtime/ - /^subdir *=.*/s/=.*/= runtime-po/ - /^MSGID_BUGS_ADDRESS *=/s/=.*/= bug-'"$package"'@gnu.org/ + /^EXTRA_LOCALE_CATEGORIES *=/s/=.*/= '"$EXTRA_LOCALE_CATEGORIES"'/ + /^MSGID_BUGS_ADDRESS *=/s/=.*/= '"$MSGID_BUGS_ADDRESS"'/ /^XGETTEXT_OPTIONS *=/{ s/$/ \\/ a\ - '"$XGETTEXT_OPTIONS_RUNTIME"' $${end_of_xgettext_options+} + '"$XGETTEXT_OPTIONS"' $${end_of_xgettext_options+} } - ' runtime-po/Makevars + ' po/Makevars.template >po/Makevars + + if test -d runtime-po; then + # Similarly for runtime-po/Makevars, but not quite the same. + rm -f runtime-po/Makevars + sed ' + /^DOMAIN *=.*/s/=.*/= '"$package"'-runtime/ + /^subdir *=.*/s/=.*/= runtime-po/ + /^MSGID_BUGS_ADDRESS *=/s/=.*/= bug-'"$package"'@gnu.org/ + /^XGETTEXT_OPTIONS *=/{ + s/$/ \\/ + a\ + '"$XGETTEXT_OPTIONS_RUNTIME"' $${end_of_xgettext_options+} + } + ' runtime-po/Makevars - # Copy identical files from po to runtime-po. - (cd po && cp -p Makefile.in.in *-quot *.header *.sed *.sin ../runtime-po) + # Copy identical files from po to runtime-po. + (cd po && cp -p Makefile.in.in *-quot *.header *.sed *.sin ../runtime-po) + fi fi -cleanup_ifl + echo "$0: done. Now you can run './configure'." diff --git a/bootstrap.conf b/bootstrap.conf index 96cb6067..6255ba97 100644 --- a/bootstrap.conf +++ b/bootstrap.conf @@ -1,6 +1,6 @@ -# Bootstrap configuration. +# Bootstrap configuration for GNU tar. -# Copyright (C) 2006, 2007, 2008 Free Software Foundation, Inc. +# Copyright (C) 2006, 2007, 2008, 2009 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -17,6 +17,9 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301, USA. +source_base=gnu +gnulib_name=libgnu +gnulib_mk=Makefile.am # We don't need these modules, even though gnulib-tool mistakenly # includes them because of gettext dependencies. @@ -55,3 +58,17 @@ excluded_files=' m4/ulonglong.m4 m4/visibility.m4 ' + +# Read local configuration file +if [ -r .bootstrap ]; then + echo "$0: Reading configuration file .bootstrap" + eval set -- "`sed 's/#.*$//;/^$/d' .bootstrap | tr '\n' ' '` $*" +fi + +test -d m4 || mkdir m4 +test -d $source_base || mkdir $source_base + +cat > ChangeLog <> $@-t echo "# define DEFAULT_RMT_COMMAND \"$(DEFAULT_RMT_DIR)/`echo rmt | sed '$(transform)'`$(EXEEXT)\"" >> $@-t echo "#endif" >> $@-t mv $@-t $@ -BUILT_SOURCES += rmt-command.h -CLEANFILES += rmt-command.h rmt-command.h-t +BUILT_SOURCES = rmt-command.h +CLEANFILES = rmt-command.h rmt-command.h-t +INCLUDES = -I$(top_srcdir)/gnu -I../ -I../gnu -noinst_HEADERS += system.h system-ioctl.h rmt.h paxlib.h stdopen.h -libtar_a_SOURCES += \ +noinst_HEADERS = system.h system-ioctl.h rmt.h paxlib.h stdopen.h +libtar_a_SOURCES = \ paxerror.c paxexit.c paxlib.h paxnames.c \ prepargs.c prepargs.h \ rtapelib.c \ @@ -37,5 +37,3 @@ libtar_a_SOURCES += \ stdopen.c stdopen.h \ system.h system-ioctl.h -libtar_a_LIBADD += $(LIBOBJS) -libtar_a_DEPENDENCIES += $(LIBOBJS) diff --git a/lib/alloca.c b/lib/alloca.c deleted file mode 100644 index fd95a34d..00000000 --- a/lib/alloca.c +++ /dev/null @@ -1,508 +0,0 @@ -/* alloca.c -- allocate automatically reclaimed memory - (Mostly) portable public-domain implementation -- D A Gwyn - - This implementation of the PWB library alloca function, - which is used to allocate space off the run-time stack so - that it is automatically reclaimed upon procedure exit, - was inspired by discussions with J. Q. Johnson of Cornell. - J.Otto Tennant contributed the Cray support. - - There are some preprocessor constants that can - be defined when compiling for your specific system, for - improved efficiency; however, the defaults should be okay. - - The general concept of this implementation is to keep - track of all alloca-allocated blocks, and reclaim any - that are found to be deeper in the stack than the current - invocation. This heuristic does not reclaim storage as - soon as it becomes invalid, but it will do so eventually. - - As a special case, alloca(0) reclaims storage without - allocating any. It is a good idea to use alloca(0) in - your main control loop, etc. to force garbage collection. */ - -#ifdef HAVE_CONFIG_H -# include -#endif - -#if HAVE_STRING_H -# include -#endif -#if HAVE_STDLIB_H -# include -#endif - -#ifdef emacs -# include "lisp.h" -# include "blockinput.h" -# define xalloc_die() memory_full () -# ifdef EMACS_FREE -# undef free -# define free EMACS_FREE -# endif -#else -# include -#endif - -/* If compiling with GCC 2, this file's not needed. */ -#if !defined (__GNUC__) || __GNUC__ < 2 - -/* If someone has defined alloca as a macro, - there must be some other way alloca is supposed to work. */ -# ifndef alloca - -# ifdef emacs -# ifdef static -/* actually, only want this if static is defined as "" - -- this is for usg, in which emacs must undefine static - in order to make unexec workable - */ -# ifndef STACK_DIRECTION -you -lose --- must know STACK_DIRECTION at compile-time -/* Using #error here is not wise since this file should work for - old and obscure compilers. */ -# endif /* STACK_DIRECTION undefined */ -# endif /* static */ -# endif /* emacs */ - -/* If your stack is a linked list of frames, you have to - provide an "address metric" ADDRESS_FUNCTION macro. */ - -# if defined (CRAY) && defined (CRAY_STACKSEG_END) -long i00afunc (); -# define ADDRESS_FUNCTION(arg) (char *) i00afunc (&(arg)) -# else -# define ADDRESS_FUNCTION(arg) &(arg) -# endif - -# ifndef POINTER_TYPE -# ifdef __STDC__ -# define POINTER_TYPE void -# else -# define POINTER_TYPE char -# endif -# endif -typedef POINTER_TYPE *pointer; - -# ifndef NULL -# define NULL 0 -# endif - -/* Define STACK_DIRECTION if you know the direction of stack - growth for your system; otherwise it will be automatically - deduced at run-time. - - STACK_DIRECTION > 0 => grows toward higher addresses - STACK_DIRECTION < 0 => grows toward lower addresses - STACK_DIRECTION = 0 => direction of growth unknown */ - -# ifndef STACK_DIRECTION -# define STACK_DIRECTION 0 /* Direction unknown. */ -# endif - -# if STACK_DIRECTION != 0 - -# define STACK_DIR STACK_DIRECTION /* Known at compile-time. */ - -# else /* STACK_DIRECTION == 0; need run-time code. */ - -static int stack_dir; /* 1 or -1 once known. */ -# define STACK_DIR stack_dir - -static void -find_stack_direction () -{ - static char *addr = NULL; /* Address of first `dummy', once known. */ - auto char dummy; /* To get stack address. */ - - if (addr == NULL) - { /* Initial entry. */ - addr = ADDRESS_FUNCTION (dummy); - - find_stack_direction (); /* Recurse once. */ - } - else - { - /* Second entry. */ - if (ADDRESS_FUNCTION (dummy) > addr) - stack_dir = 1; /* Stack grew upward. */ - else - stack_dir = -1; /* Stack grew downward. */ - } -} - -# endif /* STACK_DIRECTION == 0 */ - -/* An "alloca header" is used to: - (a) chain together all alloca'ed blocks; - (b) keep track of stack depth. - - It is very important that sizeof(header) agree with malloc - alignment chunk size. The following default should work okay. */ - -# ifndef ALIGN_SIZE -# define ALIGN_SIZE sizeof(double) -# endif - -typedef union hdr -{ - char align[ALIGN_SIZE]; /* To force sizeof(header). */ - struct - { - union hdr *next; /* For chaining headers. */ - char *deep; /* For stack depth measure. */ - } h; -} header; - -static header *last_alloca_header = NULL; /* -> last alloca header. */ - -/* Return a pointer to at least SIZE bytes of storage, - which will be automatically reclaimed upon exit from - the procedure that called alloca. Originally, this space - was supposed to be taken from the current stack frame of the - caller, but that method cannot be made to work for some - implementations of C, for example under Gould's UTX/32. */ - -pointer -alloca (size) - size_t size; -{ - auto char probe; /* Probes stack depth: */ - register char *depth = ADDRESS_FUNCTION (probe); - -# if STACK_DIRECTION == 0 - if (STACK_DIR == 0) /* Unknown growth direction. */ - find_stack_direction (); -# endif - - /* Reclaim garbage, defined as all alloca'd storage that - was allocated from deeper in the stack than currently. */ - - { - register header *hp; /* Traverses linked list. */ - -# ifdef emacs - BLOCK_INPUT; -# endif - - for (hp = last_alloca_header; hp != NULL;) - if ((STACK_DIR > 0 && hp->h.deep > depth) - || (STACK_DIR < 0 && hp->h.deep < depth)) - { - register header *np = hp->h.next; - - free ((pointer) hp); /* Collect garbage. */ - - hp = np; /* -> next header. */ - } - else - break; /* Rest are not deeper. */ - - last_alloca_header = hp; /* -> last valid storage. */ - -# ifdef emacs - UNBLOCK_INPUT; -# endif - } - - if (size == 0) - return NULL; /* No allocation required. */ - - /* Allocate combined header + user data storage. */ - - { - /* Address of header. */ - register pointer new; - - size_t combined_size = sizeof (header) + size; - if (combined_size < sizeof (header)) - xalloc_die (); - - new = xmalloc (combined_size); - - if (new == 0) - abort(); - - ((header *) new)->h.next = last_alloca_header; - ((header *) new)->h.deep = depth; - - last_alloca_header = (header *) new; - - /* User storage begins just after header. */ - - return (pointer) ((char *) new + sizeof (header)); - } -} - -# if defined (CRAY) && defined (CRAY_STACKSEG_END) - -# ifdef DEBUG_I00AFUNC -# include -# endif - -# ifndef CRAY_STACK -# define CRAY_STACK -# ifndef CRAY2 -/* Stack structures for CRAY-1, CRAY X-MP, and CRAY Y-MP */ -struct stack_control_header - { - long shgrow:32; /* Number of times stack has grown. */ - long shaseg:32; /* Size of increments to stack. */ - long shhwm:32; /* High water mark of stack. */ - long shsize:32; /* Current size of stack (all segments). */ - }; - -/* The stack segment linkage control information occurs at - the high-address end of a stack segment. (The stack - grows from low addresses to high addresses.) The initial - part of the stack segment linkage control information is - 0200 (octal) words. This provides for register storage - for the routine which overflows the stack. */ - -struct stack_segment_linkage - { - long ss[0200]; /* 0200 overflow words. */ - long sssize:32; /* Number of words in this segment. */ - long ssbase:32; /* Offset to stack base. */ - long:32; - long sspseg:32; /* Offset to linkage control of previous - segment of stack. */ - long:32; - long sstcpt:32; /* Pointer to task common address block. */ - long sscsnm; /* Private control structure number for - microtasking. */ - long ssusr1; /* Reserved for user. */ - long ssusr2; /* Reserved for user. */ - long sstpid; /* Process ID for pid based multi-tasking. */ - long ssgvup; /* Pointer to multitasking thread giveup. */ - long sscray[7]; /* Reserved for Cray Research. */ - long ssa0; - long ssa1; - long ssa2; - long ssa3; - long ssa4; - long ssa5; - long ssa6; - long ssa7; - long sss0; - long sss1; - long sss2; - long sss3; - long sss4; - long sss5; - long sss6; - long sss7; - }; - -# else /* CRAY2 */ -/* The following structure defines the vector of words - returned by the STKSTAT library routine. */ -struct stk_stat - { - long now; /* Current total stack size. */ - long maxc; /* Amount of contiguous space which would - be required to satisfy the maximum - stack demand to date. */ - long high_water; /* Stack high-water mark. */ - long overflows; /* Number of stack overflow ($STKOFEN) calls. */ - long hits; /* Number of internal buffer hits. */ - long extends; /* Number of block extensions. */ - long stko_mallocs; /* Block allocations by $STKOFEN. */ - long underflows; /* Number of stack underflow calls ($STKRETN). */ - long stko_free; /* Number of deallocations by $STKRETN. */ - long stkm_free; /* Number of deallocations by $STKMRET. */ - long segments; /* Current number of stack segments. */ - long maxs; /* Maximum number of stack segments so far. */ - long pad_size; /* Stack pad size. */ - long current_address; /* Current stack segment address. */ - long current_size; /* Current stack segment size. This - number is actually corrupted by STKSTAT to - include the fifteen word trailer area. */ - long initial_address; /* Address of initial segment. */ - long initial_size; /* Size of initial segment. */ - }; - -/* The following structure describes the data structure which trails - any stack segment. I think that the description in 'asdef' is - out of date. I only describe the parts that I am sure about. */ - -struct stk_trailer - { - long this_address; /* Address of this block. */ - long this_size; /* Size of this block (does not include - this trailer). */ - long unknown2; - long unknown3; - long link; /* Address of trailer block of previous - segment. */ - long unknown5; - long unknown6; - long unknown7; - long unknown8; - long unknown9; - long unknown10; - long unknown11; - long unknown12; - long unknown13; - long unknown14; - }; - -# endif /* CRAY2 */ -# endif /* not CRAY_STACK */ - -# ifdef CRAY2 -/* Determine a "stack measure" for an arbitrary ADDRESS. - I doubt that "lint" will like this much. */ - -static long -i00afunc (long *address) -{ - struct stk_stat status; - struct stk_trailer *trailer; - long *block, size; - long result = 0; - - /* We want to iterate through all of the segments. The first - step is to get the stack status structure. We could do this - more quickly and more directly, perhaps, by referencing the - $LM00 common block, but I know that this works. */ - - STKSTAT (&status); - - /* Set up the iteration. */ - - trailer = (struct stk_trailer *) (status.current_address - + status.current_size - - 15); - - /* There must be at least one stack segment. Therefore it is - a fatal error if "trailer" is null. */ - - if (trailer == 0) - abort (); - - /* Discard segments that do not contain our argument address. */ - - while (trailer != 0) - { - block = (long *) trailer->this_address; - size = trailer->this_size; - if (block == 0 || size == 0) - abort (); - trailer = (struct stk_trailer *) trailer->link; - if ((block <= address) && (address < (block + size))) - break; - } - - /* Set the result to the offset in this segment and add the sizes - of all predecessor segments. */ - - result = address - block; - - if (trailer == 0) - { - return result; - } - - do - { - if (trailer->this_size <= 0) - abort (); - result += trailer->this_size; - trailer = (struct stk_trailer *) trailer->link; - } - while (trailer != 0); - - /* We are done. Note that if you present a bogus address (one - not in any segment), you will get a different number back, formed - from subtracting the address of the first block. This is probably - not what you want. */ - - return (result); -} - -# else /* not CRAY2 */ -/* Stack address function for a CRAY-1, CRAY X-MP, or CRAY Y-MP. - Determine the number of the cell within the stack, - given the address of the cell. The purpose of this - routine is to linearize, in some sense, stack addresses - for alloca. */ - -static long -i00afunc (long address) -{ - long stkl = 0; - - long size, pseg, this_segment, stack; - long result = 0; - - struct stack_segment_linkage *ssptr; - - /* Register B67 contains the address of the end of the - current stack segment. If you (as a subprogram) store - your registers on the stack and find that you are past - the contents of B67, you have overflowed the segment. - - B67 also points to the stack segment linkage control - area, which is what we are really interested in. */ - - stkl = CRAY_STACKSEG_END (); - ssptr = (struct stack_segment_linkage *) stkl; - - /* If one subtracts 'size' from the end of the segment, - one has the address of the first word of the segment. - - If this is not the first segment, 'pseg' will be - nonzero. */ - - pseg = ssptr->sspseg; - size = ssptr->sssize; - - this_segment = stkl - size; - - /* It is possible that calling this routine itself caused - a stack overflow. Discard stack segments which do not - contain the target address. */ - - while (!(this_segment <= address && address <= stkl)) - { -# ifdef DEBUG_I00AFUNC - fprintf (stderr, "%011o %011o %011o\n", this_segment, address, stkl); -# endif - if (pseg == 0) - break; - stkl = stkl - pseg; - ssptr = (struct stack_segment_linkage *) stkl; - size = ssptr->sssize; - pseg = ssptr->sspseg; - this_segment = stkl - size; - } - - result = address - this_segment; - - /* If you subtract pseg from the current end of the stack, - you get the address of the previous stack segment's end. - This seems a little convoluted to me, but I'll bet you save - a cycle somewhere. */ - - while (pseg != 0) - { -# ifdef DEBUG_I00AFUNC - fprintf (stderr, "%011o %011o\n", pseg, size); -# endif - stkl = stkl - pseg; - ssptr = (struct stack_segment_linkage *) stkl; - size = ssptr->sssize; - pseg = ssptr->sspseg; - result += size; - } - return (result); -} - -# endif /* not CRAY2 */ -# endif /* CRAY */ - -# endif /* no alloca */ -#endif /* not GCC version 2 */ diff --git a/lib/argmatch.c b/lib/argmatch.c deleted file mode 100644 index 39836325..00000000 --- a/lib/argmatch.c +++ /dev/null @@ -1,280 +0,0 @@ -/* argmatch.c -- find a match for a string in an array - - Copyright (C) 1990, 1998, 1999, 2001, 2002, 2003 Free Software - Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -/* Written by David MacKenzie - Modified by Akim Demaille */ - -#if HAVE_CONFIG_H -# include -#endif - -/* Specification. */ -#include "argmatch.h" - -#include -#include -#include - -#include "gettext.h" -#define _(msgid) gettext (msgid) - -#include "error.h" -#include "quotearg.h" -#include "quote.h" -#include "unlocked-io.h" - -/* When reporting an invalid argument, show nonprinting characters - by using the quoting style ARGMATCH_QUOTING_STYLE. Do not use - literal_quoting_style. */ -#ifndef ARGMATCH_QUOTING_STYLE -# define ARGMATCH_QUOTING_STYLE locale_quoting_style -#endif - -#ifndef EXIT_FAILURE -# define EXIT_FAILURE 1 -#endif - -/* Non failing version of argmatch call this function after failing. */ -#ifndef ARGMATCH_DIE -# define ARGMATCH_DIE exit (EXIT_FAILURE) -#endif - -#ifdef ARGMATCH_DIE_DECL -ARGMATCH_DIE_DECL; -#endif - -static void -__argmatch_die (void) -{ - ARGMATCH_DIE; -} - -/* Used by XARGMATCH and XARGCASEMATCH. See description in argmatch.h. - Default to __argmatch_die, but allow caller to change this at run-time. */ -argmatch_exit_fn argmatch_die = __argmatch_die; - - -/* If ARG is an unambiguous match for an element of the - null-terminated array ARGLIST, return the index in ARGLIST - of the matched element, else -1 if it does not match any element - or -2 if it is ambiguous (is a prefix of more than one element). - - If VALLIST is none null, use it to resolve ambiguities limited to - synonyms, i.e., for - "yes", "yop" -> 0 - "no", "nope" -> 1 - "y" is a valid argument, for `0', and "n" for `1'. */ - -int -argmatch (const char *arg, const char *const *arglist, - const char *vallist, size_t valsize) -{ - int i; /* Temporary index in ARGLIST. */ - size_t arglen; /* Length of ARG. */ - int matchind = -1; /* Index of first nonexact match. */ - int ambiguous = 0; /* If nonzero, multiple nonexact match(es). */ - - arglen = strlen (arg); - - /* Test all elements for either exact match or abbreviated matches. */ - for (i = 0; arglist[i]; i++) - { - if (!strncmp (arglist[i], arg, arglen)) - { - if (strlen (arglist[i]) == arglen) - /* Exact match found. */ - return i; - else if (matchind == -1) - /* First nonexact match found. */ - matchind = i; - else - { - /* Second nonexact match found. */ - if (vallist == NULL - || memcmp (vallist + valsize * matchind, - vallist + valsize * i, valsize)) - { - /* There is a real ambiguity, or we could not - disambiguate. */ - ambiguous = 1; - } - } - } - } - if (ambiguous) - return -2; - else - return matchind; -} - -/* Error reporting for argmatch. - CONTEXT is a description of the type of entity that was being matched. - VALUE is the invalid value that was given. - PROBLEM is the return value from argmatch. */ - -void -argmatch_invalid (const char *context, const char *value, int problem) -{ - char const *format = (problem == -1 - ? _("invalid argument %s for %s") - : _("ambiguous argument %s for %s")); - - error (0, 0, format, quotearg_n_style (0, ARGMATCH_QUOTING_STYLE, value), - quote_n (1, context)); -} - -/* List the valid arguments for argmatch. - ARGLIST is the same as in argmatch. - VALLIST is a pointer to an array of values. - VALSIZE is the size of the elements of VALLIST */ -void -argmatch_valid (const char *const *arglist, - const char *vallist, size_t valsize) -{ - int i; - const char *last_val = NULL; - - /* We try to put synonyms on the same line. The assumption is that - synonyms follow each other */ - fprintf (stderr, _("Valid arguments are:")); - for (i = 0; arglist[i]; i++) - if ((i == 0) - || memcmp (last_val, vallist + valsize * i, valsize)) - { - fprintf (stderr, "\n - `%s'", arglist[i]); - last_val = vallist + valsize * i; - } - else - { - fprintf (stderr, ", `%s'", arglist[i]); - } - putc ('\n', stderr); -} - -/* Never failing versions of the previous functions. - - CONTEXT is the context for which argmatch is called (e.g., - "--version-control", or "$VERSION_CONTROL" etc.). Upon failure, - calls the (supposed never to return) function EXIT_FN. */ - -int -__xargmatch_internal (const char *context, - const char *arg, const char *const *arglist, - const char *vallist, size_t valsize, - argmatch_exit_fn exit_fn) -{ - int res = argmatch (arg, arglist, vallist, valsize); - if (res >= 0) - /* Success. */ - return res; - - /* We failed. Explain why. */ - argmatch_invalid (context, arg, res); - argmatch_valid (arglist, vallist, valsize); - (*exit_fn) (); - - return -1; /* To please the compilers. */ -} - -/* Look for VALUE in VALLIST, an array of objects of size VALSIZE and - return the first corresponding argument in ARGLIST */ -const char * -argmatch_to_argument (const char *value, - const char *const *arglist, - const char *vallist, size_t valsize) -{ - int i; - - for (i = 0; arglist[i]; i++) - if (!memcmp (value, vallist + valsize * i, valsize)) - return arglist[i]; - return NULL; -} - -#ifdef TEST -/* - * Based on "getversion.c" by David MacKenzie - */ -char *program_name; -extern const char *getenv (); - -/* When to make backup files. */ -enum backup_type -{ - /* Never make backups. */ - none, - - /* Make simple backups of every file. */ - simple, - - /* Make numbered backups of files that already have numbered backups, - and simple backups of the others. */ - numbered_existing, - - /* Make numbered backups of every file. */ - numbered -}; - -/* Two tables describing arguments (keys) and their corresponding - values */ -static const char *const backup_args[] = -{ - "no", "none", "off", - "simple", "never", - "existing", "nil", - "numbered", "t", - 0 -}; - -static const enum backup_type backup_vals[] = -{ - none, none, none, - simple, simple, - numbered_existing, numbered_existing, - numbered, numbered -}; - -int -main (int argc, const char *const *argv) -{ - const char *cp; - enum backup_type backup_type = none; - - program_name = (char *) argv[0]; - - if (argc > 2) - { - fprintf (stderr, "Usage: %s [VERSION_CONTROL]\n", program_name); - exit (1); - } - - if ((cp = getenv ("VERSION_CONTROL"))) - backup_type = XARGMATCH ("$VERSION_CONTROL", cp, - backup_args, backup_vals); - - if (argc == 2) - backup_type = XARGMATCH (program_name, argv[1], - backup_args, backup_vals); - - printf ("The version control is `%s'\n", - ARGMATCH_TO_ARGUMENT (backup_type, backup_args, backup_vals)); - - return 0; -} -#endif diff --git a/lib/basename.h b/lib/basename.h deleted file mode 100644 index 90f76542..00000000 --- a/lib/basename.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef PARAMS -# if defined PROTOTYPES || (defined __STDC__ && __STDC__) -# define PARAMS(Args) Args -# else -# define PARAMS(Args) () -# endif -#endif - -char *base_name PARAMS ((char const *name)); diff --git a/lib/error.c b/lib/error.c deleted file mode 100644 index 18c779e9..00000000 --- a/lib/error.c +++ /dev/null @@ -1,407 +0,0 @@ -/* Error handler for noninteractive utilities - Copyright (C) 1990-1998, 2000, 2001, 2002 Free Software Foundation, Inc. - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -/* Written by David MacKenzie . */ - -#ifdef HAVE_CONFIG_H -# include -#endif - -#include - -#ifdef _LIBC -# include -#else -# include "gettext.h" -#endif - -#ifdef _LIBC -# include -# define mbsrtowcs __mbsrtowcs -#endif - -#if HAVE_VPRINTF || HAVE_DOPRNT || _LIBC -# if __STDC__ -# include -# define VA_START(args, lastarg) va_start(args, lastarg) -# else -# include -# define VA_START(args, lastarg) va_start(args) -# endif -#else -# define va_alist a1, a2, a3, a4, a5, a6, a7, a8 -# define va_dcl char *a1, *a2, *a3, *a4, *a5, *a6, *a7, *a8; -#endif - -#if STDC_HEADERS || _LIBC -# include -# include -#else -void exit (); -#endif - -#include "error.h" - -#if !_LIBC -# include "unlocked-io.h" -#endif - -#ifndef _ -# define _(String) String -#endif - -/* If NULL, error will flush stdout, then print on stderr the program - name, a colon and a space. Otherwise, error will call this - function without parameters instead. */ -void (*error_print_progname) ( -#if __STDC__ - 0 - void -#endif - ); - -/* This variable is incremented each time `error' is called. */ -unsigned int error_message_count; - -#ifdef _LIBC -/* In the GNU C library, there is a predefined variable for this. */ - -# define program_name program_invocation_name -# include -# include - -/* In GNU libc we want do not want to use the common name `error' directly. - Instead make it a weak alias. */ -extern void __error (int status, int errnum, const char *message, ...) - __attribute__ ((__format__ (__printf__, 3, 4))); -extern void __error_at_line (int status, int errnum, const char *file_name, - unsigned int line_number, const char *message, - ...) - __attribute__ ((__format__ (__printf__, 5, 6)));; -# define error __error -# define error_at_line __error_at_line - -# ifdef USE_IN_LIBIO -# include -# define fflush(s) INTUSE(_IO_fflush) (s) -# undef putc -# define putc(c, fp) INTUSE(_IO_putc) (c, fp) -# endif - -#else /* not _LIBC */ - -# if !HAVE_DECL_STRERROR_R && STRERROR_R_CHAR_P -# ifndef HAVE_DECL_STRERROR_R -"this configure-time declaration test was not run" -# endif -char *strerror_r (); -# endif - -/* The calling program should define program_name and set it to the - name of the executing program. */ -extern char *program_name; - -# if HAVE_STRERROR_R || defined strerror_r -# define __strerror_r strerror_r -# else -# if HAVE_STRERROR -# ifndef HAVE_DECL_STRERROR -"this configure-time declaration test was not run" -# endif -# if !HAVE_DECL_STRERROR -char *strerror (); -# endif -# else -static char * -private_strerror (int errnum) -{ - extern char *sys_errlist[]; - extern int sys_nerr; - - if (errnum > 0 && errnum <= sys_nerr) - return _(sys_errlist[errnum]); - return _("Unknown system error"); -} -# define strerror private_strerror -# endif /* HAVE_STRERROR */ -# endif /* HAVE_STRERROR_R || defined strerror_r */ -#endif /* not _LIBC */ - -static void -print_errno_message (int errnum) -{ - char const *s; - -#if defined HAVE_STRERROR_R || _LIBC - char errbuf[1024]; -# if STRERROR_R_CHAR_P || _LIBC - s = __strerror_r (errnum, errbuf, sizeof errbuf); -# else - if (__strerror_r (errnum, errbuf, sizeof errbuf) == 0) - s = errbuf; - else - s = 0; -# endif -#else - s = strerror (errnum); -#endif - -#if !_LIBC - if (! s) - s = _("Unknown system error"); -#endif - -#if _LIBC && USE_IN_LIBIO - if (_IO_fwide (stderr, 0) > 0) - { - __fwprintf (stderr, L": %s", s); - return; - } -#endif - - fprintf (stderr, ": %s", s); -} - -#ifdef VA_START -static void -error_tail (int status, int errnum, const char *message, va_list args) -{ -# if HAVE_VPRINTF || _LIBC -# if _LIBC && USE_IN_LIBIO - if (_IO_fwide (stderr, 0) > 0) - { -# define ALLOCA_LIMIT 2000 - size_t len = strlen (message) + 1; - wchar_t *wmessage = NULL; - mbstate_t st; - size_t res; - const char *tmp; - - do - { - if (len < ALLOCA_LIMIT) - wmessage = (wchar_t *) alloca (len * sizeof (wchar_t)); - else - { - if (wmessage != NULL && len / 2 < ALLOCA_LIMIT) - wmessage = NULL; - - wmessage = (wchar_t *) realloc (wmessage, - len * sizeof (wchar_t)); - - if (wmessage == NULL) - { - fputws_unlocked (L"out of memory\n", stderr); - return; - } - } - - memset (&st, '\0', sizeof (st)); - tmp =message; - } - while ((res = mbsrtowcs (wmessage, &tmp, len, &st)) == len); - - if (res == (size_t) -1) - /* The string cannot be converted. */ - wmessage = (wchar_t *) L"???"; - - __vfwprintf (stderr, wmessage, args); - } - else -# endif - vfprintf (stderr, message, args); -# else - _doprnt (message, args, stderr); -# endif - va_end (args); - - ++error_message_count; - if (errnum) - print_errno_message (errnum); -# if _LIBC && USE_IN_LIBIO - if (_IO_fwide (stderr, 0) > 0) - putwc (L'\n', stderr); - else -# endif - putc ('\n', stderr); - fflush (stderr); - if (status) - exit (status); -} -#endif - - -/* Print the program name and error message MESSAGE, which is a printf-style - format string with optional args. - If ERRNUM is nonzero, print its corresponding system error message. - Exit with status STATUS if it is nonzero. */ -/* VARARGS */ -void -#if defined VA_START && __STDC__ -error (int status, int errnum, const char *message, ...) -#else -error (status, errnum, message, va_alist) - int status; - int errnum; - char *message; - va_dcl -#endif -{ -#ifdef VA_START - va_list args; -#endif - - fflush (stdout); -#ifdef _LIBC -# ifdef USE_IN_LIBIO - _IO_flockfile (stderr); -# else - __flockfile (stderr); -# endif -#endif - if (error_print_progname) - (*error_print_progname) (); - else - { -#if _LIBC && USE_IN_LIBIO - if (_IO_fwide (stderr, 0) > 0) - __fwprintf (stderr, L"%s: ", program_name); - else -#endif - fprintf (stderr, "%s: ", program_name); - } - -#ifdef VA_START - VA_START (args, message); - error_tail (status, errnum, message, args); -#else - fprintf (stderr, message, a1, a2, a3, a4, a5, a6, a7, a8); - - ++error_message_count; - if (errnum) - print_errno_message (errnum); - putc ('\n', stderr); - fflush (stderr); - if (status) - exit (status); -#endif - -#ifdef _LIBC -# ifdef USE_IN_LIBIO - _IO_funlockfile (stderr); -# else - __funlockfile (stderr); -# endif -#endif -} - -/* Sometimes we want to have at most one error per line. This - variable controls whether this mode is selected or not. */ -int error_one_per_line; - -void -#if defined VA_START && __STDC__ -error_at_line (int status, int errnum, const char *file_name, - unsigned int line_number, const char *message, ...) -#else -error_at_line (status, errnum, file_name, line_number, message, va_alist) - int status; - int errnum; - const char *file_name; - unsigned int line_number; - char *message; - va_dcl -#endif -{ -#ifdef VA_START - va_list args; -#endif - - if (error_one_per_line) - { - static const char *old_file_name; - static unsigned int old_line_number; - - if (old_line_number == line_number - && (file_name == old_file_name - || strcmp (old_file_name, file_name) == 0)) - /* Simply return and print nothing. */ - return; - - old_file_name = file_name; - old_line_number = line_number; - } - - fflush (stdout); -#ifdef _LIBC -# ifdef USE_IN_LIBIO - _IO_flockfile (stderr); -# else - __flockfile (stderr); -# endif -#endif - if (error_print_progname) - (*error_print_progname) (); - else - { -#if _LIBC && USE_IN_LIBIO - if (_IO_fwide (stderr, 0) > 0) - __fwprintf (stderr, L"%s: ", program_name); - else -#endif - fprintf (stderr, "%s:", program_name); - } - - if (file_name != NULL) - { -#if _LIBC && USE_IN_LIBIO - if (_IO_fwide (stderr, 0) > 0) - __fwprintf (stderr, L"%s:%d: ", file_name, line_number); - else -#endif - fprintf (stderr, "%s:%d: ", file_name, line_number); - } - -#ifdef VA_START - VA_START (args, message); - error_tail (status, errnum, message, args); -#else - fprintf (stderr, message, a1, a2, a3, a4, a5, a6, a7, a8); - - ++error_message_count; - if (errnum) - print_errno_message (errnum); - putc ('\n', stderr); - fflush (stderr); - if (status) - exit (status); -#endif - -#ifdef _LIBC -# ifdef USE_IN_LIBIO - _IO_funlockfile (stderr); -# else - __funlockfile (stderr); -# endif -#endif -} - -#ifdef _LIBC -/* Make the weak alias. */ -# undef error -# undef error_at_line -weak_alias (__error, error) -weak_alias (__error_at_line, error_at_line) -#endif diff --git a/lib/exclude.c b/lib/exclude.c deleted file mode 100644 index 75042cbd..00000000 --- a/lib/exclude.c +++ /dev/null @@ -1,267 +0,0 @@ -/* exclude.c -- exclude file names - - Copyright (C) 1992, 1993, 1994, 1997, 1999, 2000, 2001, 2002, 2003 Free - Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; see the file COPYING. - If not, write to the Free Software Foundation, - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -/* Written by Paul Eggert */ - -#if HAVE_CONFIG_H -# include -#endif - -#include - -#include -#ifndef errno -extern int errno; -#endif -#include -#include -#if HAVE_STDLIB_H -# include -#endif -#if HAVE_STRING_H -# include -#endif -#if HAVE_STRINGS_H -# include -#endif -#if HAVE_INTTYPES_H -# include -#else -# if HAVE_STDINT_H -# include -# endif -#endif - -#include "exclude.h" -#include "fnmatch.h" -#include "unlocked-io.h" -#include "xalloc.h" - -#ifndef SIZE_MAX -# define SIZE_MAX ((size_t) -1) -#endif - -/* Verify a requirement at compile-time (unlike assert, which is runtime). */ -#define verify(name, assertion) struct name { char a[(assertion) ? 1 : -1]; } - -/* Non-GNU systems lack these options, so we don't need to check them. */ -#ifndef FNM_CASEFOLD -# define FNM_CASEFOLD 0 -#endif -#ifndef FNM_LEADING_DIR -# define FNM_LEADING_DIR 0 -#endif - -verify (EXCLUDE_macros_do_not_collide_with_FNM_macros, - (((EXCLUDE_ANCHORED | EXCLUDE_INCLUDE | EXCLUDE_WILDCARDS) - & (FNM_PATHNAME | FNM_NOESCAPE | FNM_PERIOD | FNM_LEADING_DIR - | FNM_CASEFOLD)) - == 0)); - -/* An exclude pattern-options pair. The options are fnmatch options - ORed with EXCLUDE_* options. */ - -struct patopts - { - char const *pattern; - int options; - }; - -/* An exclude list, of pattern-options pairs. */ - -struct exclude - { - struct patopts *exclude; - size_t exclude_alloc; - size_t exclude_count; - }; - -/* Return a newly allocated and empty exclude list. */ - -struct exclude * -new_exclude (void) -{ - struct exclude *ex = xmalloc (sizeof *ex); - ex->exclude_count = 0; - ex->exclude_alloc = (1 << 6); /* This must be a power of 2. */ - ex->exclude = xmalloc (ex->exclude_alloc * sizeof ex->exclude[0]); - return ex; -} - -/* Free the storage associated with an exclude list. */ - -void -free_exclude (struct exclude *ex) -{ - free (ex->exclude); - free (ex); -} - -/* Return zero if PATTERN matches F, obeying OPTIONS, except that - (unlike fnmatch) wildcards are disabled in PATTERN. */ - -static int -fnmatch_no_wildcards (char const *pattern, char const *f, int options) -{ - if (! (options & FNM_LEADING_DIR)) - return ((options & FNM_CASEFOLD) - ? strcasecmp (pattern, f) - : strcmp (pattern, f)); - else - { - size_t patlen = strlen (pattern); - int r = ((options & FNM_CASEFOLD) - ? strncasecmp (pattern, f, patlen) - : strncmp (pattern, f, patlen)); - if (! r) - { - r = f[patlen]; - if (r == '/') - r = 0; - } - return r; - } -} - -/* Return true if EX excludes F. */ - -bool -excluded_filename (struct exclude const *ex, char const *f) -{ - size_t exclude_count = ex->exclude_count; - - /* If no options are given, the default is to include. */ - if (exclude_count == 0) - return false; - else - { - struct patopts const *exclude = ex->exclude; - size_t i; - - /* Otherwise, the default is the opposite of the first option. */ - bool excluded = !! (exclude[0].options & EXCLUDE_INCLUDE); - - /* Scan through the options, seeing whether they change F from - excluded to included or vice versa. */ - for (i = 0; i < exclude_count; i++) - { - char const *pattern = exclude[i].pattern; - int options = exclude[i].options; - if (excluded == !! (options & EXCLUDE_INCLUDE)) - { - int (*matcher) (char const *, char const *, int) = - (options & EXCLUDE_WILDCARDS - ? fnmatch - : fnmatch_no_wildcards); - bool matched = ((*matcher) (pattern, f, options) == 0); - char const *p; - - if (! (options & EXCLUDE_ANCHORED)) - for (p = f; *p && ! matched; p++) - if (*p == '/' && p[1] != '/') - matched = ((*matcher) (pattern, p + 1, options) == 0); - - excluded ^= matched; - } - } - - return excluded; - } -} - -/* Append to EX the exclusion PATTERN with OPTIONS. */ - -void -add_exclude (struct exclude *ex, char const *pattern, int options) -{ - struct patopts *patopts; - - if (ex->exclude_alloc <= ex->exclude_count) - { - size_t s = 2 * ex->exclude_alloc; - if (! (0 < s && s <= SIZE_MAX / sizeof ex->exclude[0])) - xalloc_die (); - ex->exclude_alloc = s; - ex->exclude = xrealloc (ex->exclude, s * sizeof ex->exclude[0]); - } - - patopts = &ex->exclude[ex->exclude_count++]; - patopts->pattern = pattern; - patopts->options = options; -} - -/* Use ADD_FUNC to append to EX the patterns in FILENAME, each with - OPTIONS. LINE_END terminates each pattern in the file. Return -1 - on failure, 0 on success. */ - -int -add_exclude_file (void (*add_func) (struct exclude *, char const *, int), - struct exclude *ex, char const *filename, int options, - char line_end) -{ - bool use_stdin = filename[0] == '-' && !filename[1]; - FILE *in; - char *buf; - char *p; - char const *pattern; - char const *lim; - size_t buf_alloc = (1 << 10); /* This must be a power of two. */ - size_t buf_count = 0; - int c; - int e = 0; - - if (use_stdin) - in = stdin; - else if (! (in = fopen (filename, "r"))) - return -1; - - buf = xmalloc (buf_alloc); - - while ((c = getc (in)) != EOF) - { - buf[buf_count++] = c; - if (buf_count == buf_alloc) - { - buf_alloc *= 2; - if (! buf_alloc) - xalloc_die (); - buf = xrealloc (buf, buf_alloc); - } - } - - if (ferror (in)) - e = errno; - - if (!use_stdin && fclose (in) != 0) - e = errno; - - buf = xrealloc (buf, buf_count + 1); - - for (pattern = p = buf, lim = buf + buf_count; p <= lim; p++) - if (p < lim ? *p == line_end : buf < p && p[-1]) - { - *p = '\0'; - (*add_func) (ex, pattern, options); - pattern = p + 1; - } - - errno = e; - return e ? -1 : 0; -} diff --git a/lib/exclude.h b/lib/exclude.h deleted file mode 100644 index a7e29711..00000000 --- a/lib/exclude.h +++ /dev/null @@ -1,43 +0,0 @@ -/* exclude.h -- declarations for excluding file names - - Copyright (C) 1992, 1993, 1994, 1997, 1999, 2001, 2002, 2003 Free - Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; see the file COPYING. - If not, write to the Free Software Foundation, - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -/* Written by Paul Eggert */ - -/* Exclude options, which can be ORed with fnmatch options. */ - -/* Patterns must match the start of file names, instead of matching - anywhere after a '/'. */ -#define EXCLUDE_ANCHORED (1 << 30) - -/* Include instead of exclude. */ -#define EXCLUDE_INCLUDE (1 << 29) - -/* '?', '*', '[', and '\\' are special in patterns. Without this - option, these characters are ordinary and fnmatch is not used. */ -#define EXCLUDE_WILDCARDS (1 << 28) - -struct exclude; - -struct exclude *new_exclude (void); -void free_exclude (struct exclude *); -void add_exclude (struct exclude *, char const *, int); -int add_exclude_file (void (*) (struct exclude *, char const *, int), - struct exclude *, char const *, int, char); -bool excluded_filename (struct exclude const *, char const *); diff --git a/lib/fnmatch.c b/lib/fnmatch.c deleted file mode 100644 index 73dc0e78..00000000 --- a/lib/fnmatch.c +++ /dev/null @@ -1,385 +0,0 @@ -/* Copyright (C) 1991, 1992, 1993, 1996, 1997, 1998, 1999, 2000, 2001, - 2002 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#if HAVE_CONFIG_H -# include -#endif - -/* Enable GNU extensions in fnmatch.h. */ -#ifndef _GNU_SOURCE -# define _GNU_SOURCE 1 -#endif - -#ifdef __GNUC__ -# define alloca __builtin_alloca -# define HAVE_ALLOCA 1 -#else -# if defined HAVE_ALLOCA_H || defined _LIBC -# include -# else -# ifdef _AIX - # pragma alloca -# else -# ifndef alloca -char *alloca (); -# endif -# endif -# endif -#endif - -#if ! defined __builtin_expect && __GNUC__ < 3 -# define __builtin_expect(expr, expected) (expr) -#endif - -#include -#include -#include -#include - -#if HAVE_STRING_H || defined _LIBC -# include -#else -# if HAVE_STRINGS_H -# include -# endif -#endif - -#if defined STDC_HEADERS || defined _LIBC -# include -# include -#endif - -#define WIDE_CHAR_SUPPORT (HAVE_WCTYPE_H && HAVE_WCHAR_H && HAVE_BTOWC) - -/* For platform which support the ISO C amendement 1 functionality we - support user defined character classes. */ -#if defined _LIBC || WIDE_CHAR_SUPPORT -/* Solaris 2.5 has a bug: must be included before . */ -# include -# include -#endif - -/* We need some of the locale data (the collation sequence information) - but there is no interface to get this information in general. Therefore - we support a correct implementation only in glibc. */ -#ifdef _LIBC -# include "../locale/localeinfo.h" -# include "../locale/elem-hash.h" -# include "../locale/coll-lookup.h" -# include - -# define CONCAT(a,b) __CONCAT(a,b) -# define mbsinit __mbsinit -# define mbsrtowcs __mbsrtowcs -# define fnmatch __fnmatch -extern int fnmatch (const char *pattern, const char *string, int flags); -#endif - -/* We often have to test for FNM_FILE_NAME and FNM_PERIOD being both set. */ -#define NO_LEADING_PERIOD(flags) \ - ((flags & (FNM_FILE_NAME | FNM_PERIOD)) == (FNM_FILE_NAME | FNM_PERIOD)) - -/* Comment out all this code if we are using the GNU C Library, are not - actually compiling the library itself, and have not detected a bug - in the library. This code is part of the GNU C - Library, but also included in many other GNU distributions. Compiling - and linking in this code is a waste when using the GNU C library - (especially if it is a shared library). Rather than having every GNU - program understand `configure --with-gnu-libc' and omit the object files, - it is simpler to just do this in the source for each such file. */ - -#if defined _LIBC || !defined __GNU_LIBRARY__ || !HAVE_FNMATCH_GNU - - -# if defined STDC_HEADERS || !defined isascii -# define ISASCII(c) 1 -# else -# define ISASCII(c) isascii(c) -# endif - -# ifdef isblank -# define ISBLANK(c) (ISASCII (c) && isblank (c)) -# else -# define ISBLANK(c) ((c) == ' ' || (c) == '\t') -# endif -# ifdef isgraph -# define ISGRAPH(c) (ISASCII (c) && isgraph (c)) -# else -# define ISGRAPH(c) (ISASCII (c) && isprint (c) && !isspace (c)) -# endif - -# define ISPRINT(c) (ISASCII (c) && isprint (c)) -# define ISDIGIT(c) (ISASCII (c) && isdigit (c)) -# define ISALNUM(c) (ISASCII (c) && isalnum (c)) -# define ISALPHA(c) (ISASCII (c) && isalpha (c)) -# define ISCNTRL(c) (ISASCII (c) && iscntrl (c)) -# define ISLOWER(c) (ISASCII (c) && islower (c)) -# define ISPUNCT(c) (ISASCII (c) && ispunct (c)) -# define ISSPACE(c) (ISASCII (c) && isspace (c)) -# define ISUPPER(c) (ISASCII (c) && isupper (c)) -# define ISXDIGIT(c) (ISASCII (c) && isxdigit (c)) - -# define STREQ(s1, s2) ((strcmp (s1, s2) == 0)) - -# if defined _LIBC || WIDE_CHAR_SUPPORT -/* The GNU C library provides support for user-defined character classes - and the functions from ISO C amendement 1. */ -# ifdef CHARCLASS_NAME_MAX -# define CHAR_CLASS_MAX_LENGTH CHARCLASS_NAME_MAX -# else -/* This shouldn't happen but some implementation might still have this - problem. Use a reasonable default value. */ -# define CHAR_CLASS_MAX_LENGTH 256 -# endif - -# ifdef _LIBC -# define IS_CHAR_CLASS(string) __wctype (string) -# else -# define IS_CHAR_CLASS(string) wctype (string) -# endif - -# ifdef _LIBC -# define ISWCTYPE(WC, WT) __iswctype (WC, WT) -# else -# define ISWCTYPE(WC, WT) iswctype (WC, WT) -# endif - -# if (HAVE_MBSTATE_T && HAVE_MBSRTOWCS) || _LIBC -/* In this case we are implementing the multibyte character handling. */ -# define HANDLE_MULTIBYTE 1 -# endif - -# else -# define CHAR_CLASS_MAX_LENGTH 6 /* Namely, `xdigit'. */ - -# define IS_CHAR_CLASS(string) \ - (STREQ (string, "alpha") || STREQ (string, "upper") \ - || STREQ (string, "lower") || STREQ (string, "digit") \ - || STREQ (string, "alnum") || STREQ (string, "xdigit") \ - || STREQ (string, "space") || STREQ (string, "print") \ - || STREQ (string, "punct") || STREQ (string, "graph") \ - || STREQ (string, "cntrl") || STREQ (string, "blank")) -# endif - -/* Avoid depending on library functions or files - whose names are inconsistent. */ - -# if !defined _LIBC && !defined getenv && !HAVE_DECL_GETENV -extern char *getenv (); -# endif - -# ifndef errno -extern int errno; -# endif - -/* Global variable. */ -static int posixly_correct; - -# ifndef internal_function -/* Inside GNU libc we mark some function in a special way. In other - environments simply ignore the marking. */ -# define internal_function -# endif - -/* Note that this evaluates C many times. */ -# ifdef _LIBC -# define FOLD(c) ((flags & FNM_CASEFOLD) ? tolower (c) : (c)) -# else -# define FOLD(c) ((flags & FNM_CASEFOLD) && ISUPPER (c) ? tolower (c) : (c)) -# endif -# define CHAR char -# define UCHAR unsigned char -# define INT int -# define FCT internal_fnmatch -# define EXT ext_match -# define END end_pattern -# define L(CS) CS -# ifdef _LIBC -# define BTOWC(C) __btowc (C) -# else -# define BTOWC(C) btowc (C) -# endif -# define STRLEN(S) strlen (S) -# define STRCAT(D, S) strcat (D, S) -# ifdef _LIBC -# define MEMPCPY(D, S, N) __mempcpy (D, S, N) -# else -# if HAVE_MEMPCPY -# define MEMPCPY(D, S, N) mempcpy (D, S, N) -# else -# define MEMPCPY(D, S, N) ((void *) ((char *) memcpy (D, S, N) + (N))) -# endif -# endif -# define MEMCHR(S, C, N) memchr (S, C, N) -# define STRCOLL(S1, S2) strcoll (S1, S2) -# include "fnmatch_loop.c" - - -# if HANDLE_MULTIBYTE -# define FOLD(c) ((flags & FNM_CASEFOLD) ? towlower (c) : (c)) -# define CHAR wchar_t -# define UCHAR wint_t -# define INT wint_t -# define FCT internal_fnwmatch -# define EXT ext_wmatch -# define END end_wpattern -# define L(CS) L##CS -# define BTOWC(C) (C) -# ifdef _LIBC -# define STRLEN(S) __wcslen (S) -# define STRCAT(D, S) __wcscat (D, S) -# define MEMPCPY(D, S, N) __wmempcpy (D, S, N) -# else -# define STRLEN(S) wcslen (S) -# define STRCAT(D, S) wcscat (D, S) -# if HAVE_WMEMPCPY -# define MEMPCPY(D, S, N) wmempcpy (D, S, N) -# else -# define MEMPCPY(D, S, N) (wmemcpy (D, S, N) + (N)) -# endif -# endif -# define MEMCHR(S, C, N) wmemchr (S, C, N) -# define STRCOLL(S1, S2) wcscoll (S1, S2) -# define WIDE_CHAR_VERSION 1 - -# undef IS_CHAR_CLASS -/* We have to convert the wide character string in a multibyte string. But - we know that the character class names consist of alphanumeric characters - from the portable character set, and since the wide character encoding - for a member of the portable character set is the same code point as - its single-byte encoding, we can use a simplified method to convert the - string to a multibyte character string. */ -static wctype_t -is_char_class (const wchar_t *wcs) -{ - char s[CHAR_CLASS_MAX_LENGTH + 1]; - char *cp = s; - - do - { - /* Test for a printable character from the portable character set. */ -# ifdef _LIBC - if (*wcs < 0x20 || *wcs > 0x7e - || *wcs == 0x24 || *wcs == 0x40 || *wcs == 0x60) - return (wctype_t) 0; -# else - switch (*wcs) - { - case L' ': case L'!': case L'"': case L'#': case L'%': - case L'&': case L'\'': case L'(': case L')': case L'*': - case L'+': case L',': case L'-': case L'.': case L'/': - case L'0': case L'1': case L'2': case L'3': case L'4': - case L'5': case L'6': case L'7': case L'8': case L'9': - case L':': case L';': case L'<': case L'=': case L'>': - case L'?': - case L'A': case L'B': case L'C': case L'D': case L'E': - case L'F': case L'G': case L'H': case L'I': case L'J': - case L'K': case L'L': case L'M': case L'N': case L'O': - case L'P': case L'Q': case L'R': case L'S': case L'T': - case L'U': case L'V': case L'W': case L'X': case L'Y': - case L'Z': - case L'[': case L'\\': case L']': case L'^': case L'_': - case L'a': case L'b': case L'c': case L'd': case L'e': - case L'f': case L'g': case L'h': case L'i': case L'j': - case L'k': case L'l': case L'm': case L'n': case L'o': - case L'p': case L'q': case L'r': case L's': case L't': - case L'u': case L'v': case L'w': case L'x': case L'y': - case L'z': case L'{': case L'|': case L'}': case L'~': - break; - default: - return (wctype_t) 0; - } -# endif - - /* Avoid overrunning the buffer. */ - if (cp == s + CHAR_CLASS_MAX_LENGTH) - return (wctype_t) 0; - - *cp++ = (char) *wcs++; - } - while (*wcs != L'\0'); - - *cp = '\0'; - -# ifdef _LIBC - return __wctype (s); -# else - return wctype (s); -# endif -} -# define IS_CHAR_CLASS(string) is_char_class (string) - -# include "fnmatch_loop.c" -# endif - - -int -fnmatch (pattern, string, flags) - const char *pattern; - const char *string; - int flags; -{ -# if HANDLE_MULTIBYTE - if (__builtin_expect (MB_CUR_MAX, 1) != 1) - { - mbstate_t ps; - size_t n; - wchar_t *wpattern; - wchar_t *wstring; - - /* Convert the strings into wide characters. */ - memset (&ps, '\0', sizeof (ps)); - n = mbsrtowcs (NULL, &pattern, 0, &ps); - if (__builtin_expect (n, 0) == (size_t) -1) - /* Something wrong. - XXX Do we have to set `errno' to something which mbsrtows hasn't - already done? */ - return -1; - wpattern = (wchar_t *) alloca ((n + 1) * sizeof (wchar_t)); - assert (mbsinit (&ps)); - (void) mbsrtowcs (wpattern, &pattern, n + 1, &ps); - - assert (mbsinit (&ps)); - n = mbsrtowcs (NULL, &string, 0, &ps); - if (__builtin_expect (n, 0) == (size_t) -1) - /* Something wrong. - XXX Do we have to set `errno' to something which mbsrtows hasn't - already done? */ - return -1; - wstring = (wchar_t *) alloca ((n + 1) * sizeof (wchar_t)); - assert (mbsinit (&ps)); - (void) mbsrtowcs (wstring, &string, n + 1, &ps); - - return internal_fnwmatch (wpattern, wstring, wstring + n, - flags & FNM_PERIOD, flags); - } -# endif /* mbstate_t and mbsrtowcs or _LIBC. */ - - return internal_fnmatch (pattern, string, string + strlen (string), - flags & FNM_PERIOD, flags); -} - -# ifdef _LIBC -# undef fnmatch -versioned_symbol (libc, __fnmatch, fnmatch, GLIBC_2_2_3); -# if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_2_3) -strong_alias (__fnmatch, __fnmatch_old) -compat_symbol (libc, __fnmatch_old, fnmatch, GLIBC_2_0); -# endif -# endif - -#endif /* _LIBC or not __GNU_LIBRARY__. */ diff --git a/lib/fnmatch.hin b/lib/fnmatch.hin deleted file mode 100644 index eeaee7fb..00000000 --- a/lib/fnmatch.hin +++ /dev/null @@ -1,84 +0,0 @@ -/* Copyright (C) 1991, 92, 93, 96, 97, 98 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -#ifndef _FNMATCH_H -#define _FNMATCH_H 1 - -#ifdef __cplusplus -extern "C" { -#endif - -#if defined __cplusplus || (defined __STDC__ && __STDC__) || defined WINDOWS32 -# if !defined __GLIBC__ || !defined __P -# undef __P -# define __P(protos) protos -# endif -#else /* Not C++ or ANSI C. */ -# undef __P -# define __P(protos) () -/* We can get away without defining `const' here only because in this file - it is used only inside the prototype for `fnmatch', which is elided in - non-ANSI C where `const' is problematical. */ -#endif /* C++ or ANSI C. */ - -#ifndef const -# if (defined __STDC__ && __STDC__) || defined __cplusplus -# define __const const -# else -# define __const -# endif -#endif - -/* We #undef these before defining them because some losing systems - (HP-UX A.08.07 for example) define these in . */ -#undef FNM_PATHNAME -#undef FNM_NOESCAPE -#undef FNM_PERIOD - -/* Bits set in the FLAGS argument to `fnmatch'. */ -#define FNM_PATHNAME (1 << 0) /* No wildcard can ever match `/'. */ -#define FNM_NOESCAPE (1 << 1) /* Backslashes don't quote special chars. */ -#define FNM_PERIOD (1 << 2) /* Leading `.' is matched only explicitly. */ - -#if !defined _POSIX_C_SOURCE || _POSIX_C_SOURCE < 2 || defined _GNU_SOURCE -# define FNM_FILE_NAME FNM_PATHNAME /* Preferred GNU name. */ -# define FNM_LEADING_DIR (1 << 3) /* Ignore `/...' after a match. */ -# define FNM_CASEFOLD (1 << 4) /* Compare without regard to case. */ -#endif - -/* Value returned by `fnmatch' if STRING does not match PATTERN. */ -#define FNM_NOMATCH 1 - -/* This value is returned if the implementation does not support - `fnmatch'. Since this is not the case here it will never be - returned but the conformance test suites still require the symbol - to be defined. */ -#ifdef _XOPEN_SOURCE -# define FNM_NOSYS (-1) -#endif - -/* Match STRING against the filename pattern PATTERN, - returning zero if it matches, FNM_NOMATCH if not. */ -extern int fnmatch __P ((__const char *__pattern, __const char *__string, - int __flags)); - -#ifdef __cplusplus -} -#endif - -#endif /* fnmatch.h */ diff --git a/lib/fnmatch_loop.c b/lib/fnmatch_loop.c deleted file mode 100644 index 831bd063..00000000 --- a/lib/fnmatch_loop.c +++ /dev/null @@ -1,474 +0,0 @@ -/* Copyright (C) 1991-1993, 1996-1999, 2000 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -/* Match STRING against the filename pattern PATTERN, returning zero if - it matches, nonzero if not. */ -static int FCT (const CHAR *pattern, const CHAR *string, - int no_leading_period, int flags) internal_function; - -static int -internal_function -FCT (pattern, string, no_leading_period, flags) - const CHAR *pattern; - const CHAR *string; - int no_leading_period; - int flags; -{ - register const CHAR *p = pattern, *n = string; - register UCHAR c; -#ifdef _LIBC - const UCHAR *collseq = (const UCHAR *) - _NL_CURRENT(LC_COLLATE, CONCAT(_NL_COLLATE_COLLSEQ,SUFFIX)); -# ifdef WIDE_CHAR_VERSION - const wint_t *names = (const wint_t *) - _NL_CURRENT (LC_COLLATE, _NL_COLLATE_NAMES); - size_t size = _NL_CURRENT_WORD (LC_COLLATE, _NL_COLLATE_HASH_SIZE); - size_t layers = _NL_CURRENT_WORD (LC_COLLATE, _NL_COLLATE_HASH_LAYERS); -# endif -#endif - - while ((c = *p++) != L('\0')) - { - c = FOLD (c); - - switch (c) - { - case L('?'): - if (*n == L('\0')) - return FNM_NOMATCH; - else if (*n == L('/') && (flags & FNM_FILE_NAME)) - return FNM_NOMATCH; - else if (*n == L('.') && no_leading_period - && (n == string - || (n[-1] == L('/') && (flags & FNM_FILE_NAME)))) - return FNM_NOMATCH; - break; - - case L('\\'): - if (!(flags & FNM_NOESCAPE)) - { - c = *p++; - if (c == L('\0')) - /* Trailing \ loses. */ - return FNM_NOMATCH; - c = FOLD (c); - } - if (FOLD ((UCHAR) *n) != c) - return FNM_NOMATCH; - break; - - case L('*'): - if (*n == L('.') && no_leading_period - && (n == string - || (n[-1] == L('/') && (flags & FNM_FILE_NAME)))) - return FNM_NOMATCH; - - for (c = *p++; c == L('?') || c == L('*'); c = *p++) - { - if (*n == L('/') && (flags & FNM_FILE_NAME)) - /* A slash does not match a wildcard under FNM_FILE_NAME. */ - return FNM_NOMATCH; - else if (c == L('?')) - { - /* A ? needs to match one character. */ - if (*n == L('\0')) - /* There isn't another character; no match. */ - return FNM_NOMATCH; - else - /* One character of the string is consumed in matching - this ? wildcard, so *??? won't match if there are - less than three characters. */ - ++n; - } - } - - if (c == L('\0')) - /* The wildcard(s) is/are the last element of the pattern. - If the name is a file name and contains another slash - this does mean it cannot match. If the FNM_LEADING_DIR - flag is set and exactly one slash is following, we have - a match. */ - { - int result = (flags & FNM_FILE_NAME) == 0 ? 0 : FNM_NOMATCH; - - if (flags & FNM_FILE_NAME) - { - const CHAR *slashp = STRCHR (n, L('/')); - - if (flags & FNM_LEADING_DIR) - { - if (slashp != NULL - && STRCHR (slashp + 1, L('/')) == NULL) - result = 0; - } - else - { - if (slashp == NULL) - result = 0; - } - } - - return result; - } - else - { - const CHAR *endp; - - endp = STRCHRNUL (n, (flags & FNM_FILE_NAME) ? L('/') : L('\0')); - - if (c == L('[')) - { - int flags2 = ((flags & FNM_FILE_NAME) - ? flags : (flags & ~FNM_PERIOD)); - - for (--p; n < endp; ++n) - if (FCT (p, n, (no_leading_period - && (n == string - || (n[-1] == L('/') - && (flags & FNM_FILE_NAME)))), - flags2) == 0) - return 0; - } - else if (c == L('/') && (flags & FNM_FILE_NAME)) - { - while (*n != L('\0') && *n != L('/')) - ++n; - if (*n == L('/') - && (FCT (p, n + 1, flags & FNM_PERIOD, flags) == 0)) - return 0; - } - else - { - int flags2 = ((flags & FNM_FILE_NAME) - ? flags : (flags & ~FNM_PERIOD)); - - if (c == L('\\') && !(flags & FNM_NOESCAPE)) - c = *p; - c = FOLD (c); - for (--p; n < endp; ++n) - if (FOLD ((UCHAR) *n) == c - && (FCT (p, n, (no_leading_period - && (n == string - || (n[-1] == L('/') - && (flags & FNM_FILE_NAME)))), - flags2) == 0)) - return 0; - } - } - - /* If we come here no match is possible with the wildcard. */ - return FNM_NOMATCH; - - case L('['): - { - /* Nonzero if the sense of the character class is inverted. */ - static int posixly_correct; - register int not; - CHAR cold; - - if (posixly_correct == 0) - posixly_correct = getenv ("POSIXLY_CORRECT") != NULL ? 1 : -1; - - if (*n == L('\0')) - return FNM_NOMATCH; - - if (*n == L('.') && no_leading_period - && (n == string - || (n[-1] == L('/') && (flags & FNM_FILE_NAME)))) - return FNM_NOMATCH; - - if (*n == L('/') && (flags & FNM_FILE_NAME)) - /* `/' cannot be matched. */ - return FNM_NOMATCH; - - not = (*p == L('!') || (posixly_correct < 0 && *p == L('^'))); - if (not) - ++p; - - c = *p++; - for (;;) - { - UCHAR fn = FOLD ((UCHAR) *n); - - if (!(flags & FNM_NOESCAPE) && c == L('\\')) - { - if (*p == L('\0')) - return FNM_NOMATCH; - c = FOLD ((UCHAR) *p); - ++p; - - if (c == fn) - goto matched; - } - else if (c == L('[') && *p == L(':')) - { - /* Leave room for the null. */ - CHAR str[CHAR_CLASS_MAX_LENGTH + 1]; - size_t c1 = 0; -#if defined _LIBC || (defined HAVE_WCTYPE_H && defined HAVE_WCHAR_H) - wctype_t wt; -#endif - const CHAR *startp = p; - - for (;;) - { - if (c1 == CHAR_CLASS_MAX_LENGTH) - /* The name is too long and therefore the pattern - is ill-formed. */ - return FNM_NOMATCH; - - c = *++p; - if (c == L(':') && p[1] == L(']')) - { - p += 2; - break; - } - if (c < L('a') || c >= L('z')) - { - /* This cannot possibly be a character class name. - Match it as a normal range. */ - p = startp; - c = L('['); - goto normal_bracket; - } - str[c1++] = c; - } - str[c1] = L('\0'); - -#if defined _LIBC || (defined HAVE_WCTYPE_H && defined HAVE_WCHAR_H) - wt = IS_CHAR_CLASS (str); - if (wt == 0) - /* Invalid character class name. */ - return FNM_NOMATCH; - - if (ISWCTYPE (BTOWC ((UCHAR) *n), wt)) - goto matched; -#else - if ((STREQ (str, L("alnum")) && ISALNUM ((UCHAR) *n)) - || (STREQ (str, L("alpha")) && ISALPHA ((UCHAR) *n)) - || (STREQ (str, L("blank")) && ISBLANK ((UCHAR) *n)) - || (STREQ (str, L("cntrl")) && ISCNTRL ((UCHAR) *n)) - || (STREQ (str, L("digit")) && ISDIGIT ((UCHAR) *n)) - || (STREQ (str, L("graph")) && ISGRAPH ((UCHAR) *n)) - || (STREQ (str, L("lower")) && ISLOWER ((UCHAR) *n)) - || (STREQ (str, L("print")) && ISPRINT ((UCHAR) *n)) - || (STREQ (str, L("punct")) && ISPUNCT ((UCHAR) *n)) - || (STREQ (str, L("space")) && ISSPACE ((UCHAR) *n)) - || (STREQ (str, L("upper")) && ISUPPER ((UCHAR) *n)) - || (STREQ (str, L("xdigit")) && ISXDIGIT ((UCHAR) *n))) - goto matched; -#endif - } - else if (c == L('\0')) - /* [ (unterminated) loses. */ - return FNM_NOMATCH; - else - { - c = FOLD (c); - normal_bracket: - if (c == fn) - goto matched; - - cold = c; - c = *p++; - - if (c == L('-') && *p != L(']')) - { -#if _LIBC - /* We have to find the collation sequence - value for C. Collation sequence is nothing - we can regularly access. The sequence - value is defined by the order in which the - definitions of the collation values for the - various characters appear in the source - file. A strange concept, nowhere - documented. */ - int32_t fseqidx; - int32_t lseqidx; - UCHAR cend = *p++; -# ifdef WIDE_CHAR_VERSION - size_t cnt; -# endif - - if (!(flags & FNM_NOESCAPE) && cend == L('\\')) - cend = *p++; - if (cend == L('\0')) - return FNM_NOMATCH; - -# ifdef WIDE_CHAR_VERSION - /* Search in the `names' array for the characters. */ - fseqidx = fn % size; - cnt = 0; - while (names[fseqidx] != fn) - { - if (++cnt == layers) - /* XXX We don't know anything about - the character we are supposed to - match. This means we are failing. */ - goto range_not_matched; - - fseqidx += size; - } - lseqidx = cold % size; - cnt = 0; - while (names[lseqidx] != cold) - { - if (++cnt == layers) - { - lseqidx = -1; - break; - } - lseqidx += size; - } -# else - fseqidx = fn; - lseqidx = cold; -# endif - - /* XXX It is not entirely clear to me how to handle - characters which are not mentioned in the - collation specification. */ - if ( -# ifdef WIDE_CHAR_VERSION - lseqidx == -1 || -# endif - collseq[lseqidx] <= collseq[fseqidx]) - { - /* We have to look at the upper bound. */ - int32_t hseqidx; - - cend = FOLD (cend); -# ifdef WIDE_CHAR_VERSION - hseqidx = cend % size; - cnt = 0; - while (names[hseqidx] != cend) - { - if (++cnt == layers) - { - /* Hum, no information about the upper - bound. The matching succeeds if the - lower bound is matched exactly. */ - if (lseqidx == -1 || cold != fn) - goto range_not_matched; - - goto matched; - } - } -# else - hseqidx = cend; -# endif - - if ( -# ifdef WIDE_CHAR_VERSION - (lseqidx == -1 - && collseq[fseqidx] == collseq[hseqidx]) || -# endif - collseq[fseqidx] <= collseq[hseqidx]) - goto matched; - } -# ifdef WIDE_CHAR_VERSION - range_not_matched: -# endif -#else - /* We use a boring value comparison of the character - values. This is better than comparing using - `strcoll' since the latter would have surprising - and sometimes fatal consequences. */ - UCHAR cend = *p++; - - if (!(flags & FNM_NOESCAPE) && cend == L('\\')) - cend = *p++; - if (cend == L('\0')) - return FNM_NOMATCH; - - /* It is a range. */ - if (cold <= fc && fc <= c) - goto matched; -#endif - - c = *p++; - } - } - - if (c == L(']')) - break; - } - - if (!not) - return FNM_NOMATCH; - break; - - matched: - /* Skip the rest of the [...] that already matched. */ - while (c != L(']')) - { - if (c == L('\0')) - /* [... (unterminated) loses. */ - return FNM_NOMATCH; - - c = *p++; - if (!(flags & FNM_NOESCAPE) && c == L('\\')) - { - if (*p == L('\0')) - return FNM_NOMATCH; - /* XXX 1003.2d11 is unclear if this is right. */ - ++p; - } - else if (c == L('[') && *p == L(':')) - { - do - if (*++p == L('\0')) - return FNM_NOMATCH; - while (*p != L(':') || p[1] == L(']')); - p += 2; - c = *p; - } - } - if (not) - return FNM_NOMATCH; - } - break; - - default: - if (c != FOLD ((UCHAR) *n)) - return FNM_NOMATCH; - } - - ++n; - } - - if (*n == '\0') - return 0; - - if ((flags & FNM_LEADING_DIR) && *n == L('/')) - /* The FNM_LEADING_DIR flag says that "foo*" matches "foobar/frobozz". */ - return 0; - - return FNM_NOMATCH; -} - -#undef FOLD -#undef CHAR -#undef UCHAR -#undef FCT -#undef STRCHR -#undef STRCHRNUL -#undef STRCOLL -#undef L -#undef BTOWC -#undef SUFFIX diff --git a/lib/full-read.c b/lib/full-read.c deleted file mode 100644 index d20e6490..00000000 --- a/lib/full-read.c +++ /dev/null @@ -1,50 +0,0 @@ -/* full-read.c -- an interface to read that retries after interrupts - Copyright (C) 1993, 1994, 1997, 1999 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -#if HAVE_CONFIG_H -# include -#endif - -#include - -#if HAVE_UNISTD_H -# include -#endif - -#include -#ifndef errno -extern int errno; -#endif - -/* Read LEN bytes at PTR from descriptor DESC, retrying if interrupted. - Return the actual number of bytes read, zero for EOF, or negative - for an error. */ - -ssize_t -full_read (int desc, char *ptr, size_t len) -{ - for (;;) - { - ssize_t n = read (desc, ptr, len); -#ifdef EINTR - if (n < 0 && errno == EINTR) - continue; -#endif - return n; - } -} diff --git a/lib/full-write.c b/lib/full-write.c deleted file mode 100644 index 15137056..00000000 --- a/lib/full-write.c +++ /dev/null @@ -1,85 +0,0 @@ -/* An interface to read and write that retries (if necessary) until complete. - - Copyright (C) 1993, 1994, 1997-2003 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#if HAVE_CONFIG_H -# include -#endif - -/* Specification. */ -#ifdef FULL_READ -# include "full-read.h" -#else -# include "full-write.h" -#endif - -#include -#ifndef errno -extern int errno; -#endif - -#ifdef FULL_READ -# include "safe-read.h" -# define safe_rw safe_read -# define full_rw full_read -# undef const -# define const /* empty */ -#else -# include "safe-write.h" -# define safe_rw safe_write -# define full_rw full_write -#endif - -#ifdef FULL_READ -/* Set errno to zero upon EOF. */ -# define ZERO_BYTE_TRANSFER_ERRNO 0 -#else -/* Some buggy drivers return 0 when one tries to write beyond - a device's end. (Example: Linux 1.2.13 on /dev/fd0.) - Set errno to ENOSPC so they get a sensible diagnostic. */ -# define ZERO_BYTE_TRANSFER_ERRNO ENOSPC -#endif - -/* Write(read) COUNT bytes at BUF to(from) descriptor FD, retrying if - interrupted or if a partial write(read) occurs. Return the number - of bytes transferred. - When writing, set errno if fewer than COUNT bytes are written. - When reading, if fewer than COUNT bytes are read, you must examine - errno to distinguish failure from EOF (errno == 0). */ -size_t -full_rw (int fd, const void *buf, size_t count) -{ - size_t total = 0; - const char *ptr = buf; - - while (count > 0) - { - size_t n_rw = safe_rw (fd, ptr, count); - if (n_rw == (size_t) -1) - break; - if (n_rw == 0) - { - errno = ZERO_BYTE_TRANSFER_ERRNO; - break; - } - total += n_rw; - ptr += n_rw; - count -= n_rw; - } - - return total; -} diff --git a/lib/full-write.h b/lib/full-write.h deleted file mode 100644 index 8cd2e815..00000000 --- a/lib/full-write.h +++ /dev/null @@ -1,24 +0,0 @@ -/* An interface to write() that writes all it is asked to write. - - Copyright (C) 2002 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#include - -/* Write COUNT bytes at BUF to descriptor FD, retrying if interrupted - or if partial writes occur. Return the number of bytes successfully - written, setting errno if that is less than COUNT. */ -extern size_t full_write (int fd, const void *buf, size_t count); diff --git a/lib/getdate.y b/lib/getdate.y deleted file mode 100644 index 3c4a0400..00000000 --- a/lib/getdate.y +++ /dev/null @@ -1,1114 +0,0 @@ -%{ -/* Parse a string into an internal time stamp. - Copyright (C) 1999, 2000, 2002, 2003 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -/* Originally written by Steven M. Bellovin while - at the University of North Carolina at Chapel Hill. Later tweaked by - a couple of people on Usenet. Completely overhauled by Rich $alz - and Jim Berets in August, 1990. - - Modified by Paul Eggert in August 1999 to do - the right thing about local DST. Unlike previous versions, this - version is reentrant. */ - -#ifdef HAVE_CONFIG_H -# include -#endif - -#include - -/* Since the code of getdate.y is not included in the Emacs executable - itself, there is no need to #define static in this file. Even if - the code were included in the Emacs executable, it probably - wouldn't do any harm to #undef it here; this will only cause - problems if we try to write to a static variable, which I don't - think this code needs to do. */ -#ifdef emacs -# undef static -#endif - -#include - -#if HAVE_STDLIB_H -# include /* for `free'; used by Bison 1.27 */ -#endif - -#if STDC_HEADERS || (! defined isascii && ! HAVE_ISASCII) -# define IN_CTYPE_DOMAIN(c) 1 -#else -# define IN_CTYPE_DOMAIN(c) isascii (c) -#endif - -#define ISSPACE(c) (IN_CTYPE_DOMAIN (c) && isspace (c)) -#define ISALPHA(c) (IN_CTYPE_DOMAIN (c) && isalpha (c)) -#define ISLOWER(c) (IN_CTYPE_DOMAIN (c) && islower (c)) -#define ISDIGIT_LOCALE(c) (IN_CTYPE_DOMAIN (c) && isdigit (c)) - -/* ISDIGIT differs from ISDIGIT_LOCALE, as follows: - - Its arg may be any int or unsigned int; it need not be an unsigned char. - - It's guaranteed to evaluate its argument exactly once. - - It's typically faster. - POSIX says that only '0' through '9' are digits. Prefer ISDIGIT to - ISDIGIT_LOCALE unless it's important to use the locale's definition - of `digit' even when the host does not conform to POSIX. */ -#define ISDIGIT(c) ((unsigned) (c) - '0' <= 9) - -#if STDC_HEADERS || HAVE_STRING_H -# include -#endif - -#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8) || __STRICT_ANSI__ -# define __attribute__(x) -#endif - -#ifndef ATTRIBUTE_UNUSED -# define ATTRIBUTE_UNUSED __attribute__ ((__unused__)) -#endif - -#define EPOCH_YEAR 1970 -#define TM_YEAR_BASE 1900 - -#define HOUR(x) ((x) * 60) - -/* An integer value, and the number of digits in its textual - representation. */ -typedef struct -{ - int value; - int digits; -} textint; - -/* An entry in the lexical lookup table. */ -typedef struct -{ - char const *name; - int type; - int value; -} table; - -/* Meridian: am, pm, or 24-hour style. */ -enum { MERam, MERpm, MER24 }; - -/* Information passed to and from the parser. */ -typedef struct -{ - /* The input string remaining to be parsed. */ - const char *input; - - /* N, if this is the Nth Tuesday. */ - int day_ordinal; - - /* Day of week; Sunday is 0. */ - int day_number; - - /* tm_isdst flag for the local zone. */ - int local_isdst; - - /* Time zone, in minutes east of UTC. */ - int time_zone; - - /* Style used for time. */ - int meridian; - - /* Gregorian year, month, day, hour, minutes, and seconds. */ - textint year; - int month; - int day; - int hour; - int minutes; - int seconds; - - /* Relative year, month, day, hour, minutes, and seconds. */ - int rel_year; - int rel_month; - int rel_day; - int rel_hour; - int rel_minutes; - int rel_seconds; - - /* Counts of nonterminals of various flavors parsed so far. */ - int dates_seen; - int days_seen; - int local_zones_seen; - int rels_seen; - int times_seen; - int zones_seen; - - /* Table of local time zone abbrevations, terminated by a null entry. */ - table local_time_zone_table[3]; -} parser_control; - -#define PC (* (parser_control *) parm) -#define YYLEX_PARAM parm -#define YYPARSE_PARAM parm - -static int yyerror (); -static int yylex (); - -%} - -/* We want a reentrant parser. */ -%pure_parser - -/* This grammar has 13 shift/reduce conflicts. */ -%expect 13 - -%union -{ - int intval; - textint textintval; -} - -%token tAGO tDST - -%token tDAY tDAY_UNIT tDAYZONE tHOUR_UNIT tLOCAL_ZONE tMERIDIAN -%token tMINUTE_UNIT tMONTH tMONTH_UNIT tSEC_UNIT tYEAR_UNIT tZONE - -%token tSNUMBER tUNUMBER - -%type o_merid - -%% - -spec: - /* empty */ - | spec item - ; - -item: - time - { PC.times_seen++; } - | local_zone - { PC.local_zones_seen++; } - | zone - { PC.zones_seen++; } - | date - { PC.dates_seen++; } - | day - { PC.days_seen++; } - | rel - { PC.rels_seen++; } - | number - ; - -time: - tUNUMBER tMERIDIAN - { - PC.hour = $1.value; - PC.minutes = 0; - PC.seconds = 0; - PC.meridian = $2; - } - | tUNUMBER ':' tUNUMBER o_merid - { - PC.hour = $1.value; - PC.minutes = $3.value; - PC.seconds = 0; - PC.meridian = $4; - } - | tUNUMBER ':' tUNUMBER tSNUMBER - { - PC.hour = $1.value; - PC.minutes = $3.value; - PC.meridian = MER24; - PC.zones_seen++; - PC.time_zone = $4.value % 100 + ($4.value / 100) * 60; - } - | tUNUMBER ':' tUNUMBER ':' tUNUMBER o_merid - { - PC.hour = $1.value; - PC.minutes = $3.value; - PC.seconds = $5.value; - PC.meridian = $6; - } - | tUNUMBER ':' tUNUMBER ':' tUNUMBER tSNUMBER - { - PC.hour = $1.value; - PC.minutes = $3.value; - PC.seconds = $5.value; - PC.meridian = MER24; - PC.zones_seen++; - PC.time_zone = $6.value % 100 + ($6.value / 100) * 60; - } - ; - -local_zone: - tLOCAL_ZONE - { PC.local_isdst = $1; } - | tLOCAL_ZONE tDST - { PC.local_isdst = $1 < 0 ? 1 : $1 + 1; } - ; - -zone: - tZONE - { PC.time_zone = $1; } - | tDAYZONE - { PC.time_zone = $1 + 60; } - | tZONE tDST - { PC.time_zone = $1 + 60; } - ; - -day: - tDAY - { - PC.day_ordinal = 1; - PC.day_number = $1; - } - | tDAY ',' - { - PC.day_ordinal = 1; - PC.day_number = $1; - } - | tUNUMBER tDAY - { - PC.day_ordinal = $1.value; - PC.day_number = $2; - } - ; - -date: - tUNUMBER '/' tUNUMBER - { - PC.month = $1.value; - PC.day = $3.value; - } - | tUNUMBER '/' tUNUMBER '/' tUNUMBER - { - /* Interpret as YYYY/MM/DD if the first value has 4 or more digits, - otherwise as MM/DD/YY. - The goal in recognizing YYYY/MM/DD is solely to support legacy - machine-generated dates like those in an RCS log listing. If - you want portability, use the ISO 8601 format. */ - if (4 <= $1.digits) - { - PC.year = $1; - PC.month = $3.value; - PC.day = $5.value; - } - else - { - PC.month = $1.value; - PC.day = $3.value; - PC.year = $5; - } - } - | tUNUMBER tSNUMBER tSNUMBER - { - /* ISO 8601 format. YYYY-MM-DD. */ - PC.year = $1; - PC.month = -$2.value; - PC.day = -$3.value; - } - | tUNUMBER tMONTH tSNUMBER - { - /* e.g. 17-JUN-1992. */ - PC.day = $1.value; - PC.month = $2; - PC.year.value = -$3.value; - PC.year.digits = $3.digits; - } - | tMONTH tUNUMBER - { - PC.month = $1; - PC.day = $2.value; - } - | tMONTH tUNUMBER ',' tUNUMBER - { - PC.month = $1; - PC.day = $2.value; - PC.year = $4; - } - | tUNUMBER tMONTH - { - PC.day = $1.value; - PC.month = $2; - } - | tUNUMBER tMONTH tUNUMBER - { - PC.day = $1.value; - PC.month = $2; - PC.year = $3; - } - ; - -rel: - relunit tAGO - { - PC.rel_seconds = -PC.rel_seconds; - PC.rel_minutes = -PC.rel_minutes; - PC.rel_hour = -PC.rel_hour; - PC.rel_day = -PC.rel_day; - PC.rel_month = -PC.rel_month; - PC.rel_year = -PC.rel_year; - } - | relunit - ; - -relunit: - tUNUMBER tYEAR_UNIT - { PC.rel_year += $1.value * $2; } - | tSNUMBER tYEAR_UNIT - { PC.rel_year += $1.value * $2; } - | tYEAR_UNIT - { PC.rel_year += $1; } - | tUNUMBER tMONTH_UNIT - { PC.rel_month += $1.value * $2; } - | tSNUMBER tMONTH_UNIT - { PC.rel_month += $1.value * $2; } - | tMONTH_UNIT - { PC.rel_month += $1; } - | tUNUMBER tDAY_UNIT - { PC.rel_day += $1.value * $2; } - | tSNUMBER tDAY_UNIT - { PC.rel_day += $1.value * $2; } - | tDAY_UNIT - { PC.rel_day += $1; } - | tUNUMBER tHOUR_UNIT - { PC.rel_hour += $1.value * $2; } - | tSNUMBER tHOUR_UNIT - { PC.rel_hour += $1.value * $2; } - | tHOUR_UNIT - { PC.rel_hour += $1; } - | tUNUMBER tMINUTE_UNIT - { PC.rel_minutes += $1.value * $2; } - | tSNUMBER tMINUTE_UNIT - { PC.rel_minutes += $1.value * $2; } - | tMINUTE_UNIT - { PC.rel_minutes += $1; } - | tUNUMBER tSEC_UNIT - { PC.rel_seconds += $1.value * $2; } - | tSNUMBER tSEC_UNIT - { PC.rel_seconds += $1.value * $2; } - | tSEC_UNIT - { PC.rel_seconds += $1; } - ; - -number: - tUNUMBER - { - if (PC.dates_seen - && ! PC.rels_seen && (PC.times_seen || 2 < $1.digits)) - PC.year = $1; - else - { - if (4 < $1.digits) - { - PC.dates_seen++; - PC.day = $1.value % 100; - PC.month = ($1.value / 100) % 100; - PC.year.value = $1.value / 10000; - PC.year.digits = $1.digits - 4; - } - else - { - PC.times_seen++; - if ($1.digits <= 2) - { - PC.hour = $1.value; - PC.minutes = 0; - } - else - { - PC.hour = $1.value / 100; - PC.minutes = $1.value % 100; - } - PC.seconds = 0; - PC.meridian = MER24; - } - } - } - ; - -o_merid: - /* empty */ - { $$ = MER24; } - | tMERIDIAN - { $$ = $1; } - ; - -%% - -/* Include this file down here because bison inserts code above which - may define-away `const'. We want the prototype for get_date to have - the same signature as the function definition. */ -#include "getdate.h" -#include "unlocked-io.h" - -#ifndef gmtime -struct tm *gmtime (); -#endif -#ifndef localtime -struct tm *localtime (); -#endif -#ifndef mktime -time_t mktime (); -#endif - -static table const meridian_table[] = -{ - { "AM", tMERIDIAN, MERam }, - { "A.M.", tMERIDIAN, MERam }, - { "PM", tMERIDIAN, MERpm }, - { "P.M.", tMERIDIAN, MERpm }, - { 0, 0, 0 } -}; - -static table const dst_table[] = -{ - { "DST", tDST, 0 } -}; - -static table const month_and_day_table[] = -{ - { "JANUARY", tMONTH, 1 }, - { "FEBRUARY", tMONTH, 2 }, - { "MARCH", tMONTH, 3 }, - { "APRIL", tMONTH, 4 }, - { "MAY", tMONTH, 5 }, - { "JUNE", tMONTH, 6 }, - { "JULY", tMONTH, 7 }, - { "AUGUST", tMONTH, 8 }, - { "SEPTEMBER",tMONTH, 9 }, - { "SEPT", tMONTH, 9 }, - { "OCTOBER", tMONTH, 10 }, - { "NOVEMBER", tMONTH, 11 }, - { "DECEMBER", tMONTH, 12 }, - { "SUNDAY", tDAY, 0 }, - { "MONDAY", tDAY, 1 }, - { "TUESDAY", tDAY, 2 }, - { "TUES", tDAY, 2 }, - { "WEDNESDAY",tDAY, 3 }, - { "WEDNES", tDAY, 3 }, - { "THURSDAY", tDAY, 4 }, - { "THUR", tDAY, 4 }, - { "THURS", tDAY, 4 }, - { "FRIDAY", tDAY, 5 }, - { "SATURDAY", tDAY, 6 }, - { 0, 0, 0 } -}; - -static table const time_units_table[] = -{ - { "YEAR", tYEAR_UNIT, 1 }, - { "MONTH", tMONTH_UNIT, 1 }, - { "FORTNIGHT",tDAY_UNIT, 14 }, - { "WEEK", tDAY_UNIT, 7 }, - { "DAY", tDAY_UNIT, 1 }, - { "HOUR", tHOUR_UNIT, 1 }, - { "MINUTE", tMINUTE_UNIT, 1 }, - { "MIN", tMINUTE_UNIT, 1 }, - { "SECOND", tSEC_UNIT, 1 }, - { "SEC", tSEC_UNIT, 1 }, - { 0, 0, 0 } -}; - -/* Assorted relative-time words. */ -static table const relative_time_table[] = -{ - { "TOMORROW", tMINUTE_UNIT, 24 * 60 }, - { "YESTERDAY",tMINUTE_UNIT, - (24 * 60) }, - { "TODAY", tMINUTE_UNIT, 0 }, - { "NOW", tMINUTE_UNIT, 0 }, - { "LAST", tUNUMBER, -1 }, - { "THIS", tUNUMBER, 0 }, - { "NEXT", tUNUMBER, 1 }, - { "FIRST", tUNUMBER, 1 }, -/*{ "SECOND", tUNUMBER, 2 }, */ - { "THIRD", tUNUMBER, 3 }, - { "FOURTH", tUNUMBER, 4 }, - { "FIFTH", tUNUMBER, 5 }, - { "SIXTH", tUNUMBER, 6 }, - { "SEVENTH", tUNUMBER, 7 }, - { "EIGHTH", tUNUMBER, 8 }, - { "NINTH", tUNUMBER, 9 }, - { "TENTH", tUNUMBER, 10 }, - { "ELEVENTH", tUNUMBER, 11 }, - { "TWELFTH", tUNUMBER, 12 }, - { "AGO", tAGO, 1 }, - { 0, 0, 0 } -}; - -/* The time zone table. This table is necessarily incomplete, as time - zone abbreviations are ambiguous; e.g. Australians interpret "EST" - as Eastern time in Australia, not as US Eastern Standard Time. - You cannot rely on getdate to handle arbitrary time zone - abbreviations; use numeric abbreviations like `-0500' instead. */ -static table const time_zone_table[] = -{ - { "GMT", tZONE, HOUR ( 0) }, /* Greenwich Mean */ - { "UT", tZONE, HOUR ( 0) }, /* Universal (Coordinated) */ - { "UTC", tZONE, HOUR ( 0) }, - { "WET", tZONE, HOUR ( 0) }, /* Western European */ - { "WEST", tDAYZONE, HOUR ( 0) }, /* Western European Summer */ - { "BST", tDAYZONE, HOUR ( 0) }, /* British Summer */ - { "ART", tZONE, -HOUR ( 3) }, /* Argentina */ - { "BRT", tZONE, -HOUR ( 3) }, /* Brazil */ - { "BRST", tDAYZONE, -HOUR ( 3) }, /* Brazil Summer */ - { "NST", tZONE, -(HOUR ( 3) + 30) }, /* Newfoundland Standard */ - { "NDT", tDAYZONE,-(HOUR ( 3) + 30) }, /* Newfoundland Daylight */ - { "AST", tZONE, -HOUR ( 4) }, /* Atlantic Standard */ - { "ADT", tDAYZONE, -HOUR ( 4) }, /* Atlantic Daylight */ - { "CLT", tZONE, -HOUR ( 4) }, /* Chile */ - { "CLST", tDAYZONE, -HOUR ( 4) }, /* Chile Summer */ - { "EST", tZONE, -HOUR ( 5) }, /* Eastern Standard */ - { "EDT", tDAYZONE, -HOUR ( 5) }, /* Eastern Daylight */ - { "CST", tZONE, -HOUR ( 6) }, /* Central Standard */ - { "CDT", tDAYZONE, -HOUR ( 6) }, /* Central Daylight */ - { "MST", tZONE, -HOUR ( 7) }, /* Mountain Standard */ - { "MDT", tDAYZONE, -HOUR ( 7) }, /* Mountain Daylight */ - { "PST", tZONE, -HOUR ( 8) }, /* Pacific Standard */ - { "PDT", tDAYZONE, -HOUR ( 8) }, /* Pacific Daylight */ - { "AKST", tZONE, -HOUR ( 9) }, /* Alaska Standard */ - { "AKDT", tDAYZONE, -HOUR ( 9) }, /* Alaska Daylight */ - { "HST", tZONE, -HOUR (10) }, /* Hawaii Standard */ - { "HAST", tZONE, -HOUR (10) }, /* Hawaii-Aleutian Standard */ - { "HADT", tDAYZONE, -HOUR (10) }, /* Hawaii-Aleutian Daylight */ - { "SST", tZONE, -HOUR (12) }, /* Samoa Standard */ - { "WAT", tZONE, HOUR ( 1) }, /* West Africa */ - { "CET", tZONE, HOUR ( 1) }, /* Central European */ - { "CEST", tDAYZONE, HOUR ( 1) }, /* Central European Summer */ - { "MET", tZONE, HOUR ( 1) }, /* Middle European */ - { "MEZ", tZONE, HOUR ( 1) }, /* Middle European */ - { "MEST", tDAYZONE, HOUR ( 1) }, /* Middle European Summer */ - { "MESZ", tDAYZONE, HOUR ( 1) }, /* Middle European Summer */ - { "EET", tZONE, HOUR ( 2) }, /* Eastern European */ - { "EEST", tDAYZONE, HOUR ( 2) }, /* Eastern European Summer */ - { "CAT", tZONE, HOUR ( 2) }, /* Central Africa */ - { "SAST", tZONE, HOUR ( 2) }, /* South Africa Standard */ - { "EAT", tZONE, HOUR ( 3) }, /* East Africa */ - { "MSK", tZONE, HOUR ( 3) }, /* Moscow */ - { "MSD", tDAYZONE, HOUR ( 3) }, /* Moscow Daylight */ - { "IST", tZONE, (HOUR ( 5) + 30) }, /* India Standard */ - { "SGT", tZONE, HOUR ( 8) }, /* Singapore */ - { "KST", tZONE, HOUR ( 9) }, /* Korea Standard */ - { "JST", tZONE, HOUR ( 9) }, /* Japan Standard */ - { "GST", tZONE, HOUR (10) }, /* Guam Standard */ - { "NZST", tZONE, HOUR (12) }, /* New Zealand Standard */ - { "NZDT", tDAYZONE, HOUR (12) }, /* New Zealand Daylight */ - { 0, 0, 0 } -}; - -/* Military time zone table. */ -static table const military_table[] = -{ - { "A", tZONE, -HOUR ( 1) }, - { "B", tZONE, -HOUR ( 2) }, - { "C", tZONE, -HOUR ( 3) }, - { "D", tZONE, -HOUR ( 4) }, - { "E", tZONE, -HOUR ( 5) }, - { "F", tZONE, -HOUR ( 6) }, - { "G", tZONE, -HOUR ( 7) }, - { "H", tZONE, -HOUR ( 8) }, - { "I", tZONE, -HOUR ( 9) }, - { "K", tZONE, -HOUR (10) }, - { "L", tZONE, -HOUR (11) }, - { "M", tZONE, -HOUR (12) }, - { "N", tZONE, HOUR ( 1) }, - { "O", tZONE, HOUR ( 2) }, - { "P", tZONE, HOUR ( 3) }, - { "Q", tZONE, HOUR ( 4) }, - { "R", tZONE, HOUR ( 5) }, - { "S", tZONE, HOUR ( 6) }, - { "T", tZONE, HOUR ( 7) }, - { "U", tZONE, HOUR ( 8) }, - { "V", tZONE, HOUR ( 9) }, - { "W", tZONE, HOUR (10) }, - { "X", tZONE, HOUR (11) }, - { "Y", tZONE, HOUR (12) }, - { "Z", tZONE, HOUR ( 0) }, - { 0, 0, 0 } -}; - - - -static int -to_hour (int hours, int meridian) -{ - switch (meridian) - { - case MER24: - return 0 <= hours && hours < 24 ? hours : -1; - case MERam: - return 0 < hours && hours < 12 ? hours : hours == 12 ? 0 : -1; - case MERpm: - return 0 < hours && hours < 12 ? hours + 12 : hours == 12 ? 12 : -1; - default: - abort (); - } - /* NOTREACHED */ -} - -static int -to_year (textint textyear) -{ - int year = textyear.value; - - if (year < 0) - year = -year; - - /* XPG4 suggests that years 00-68 map to 2000-2068, and - years 69-99 map to 1969-1999. */ - if (textyear.digits == 2) - year += year < 69 ? 2000 : 1900; - - return year; -} - -static table const * -lookup_zone (parser_control const *pc, char const *name) -{ - table const *tp; - - /* Try local zone abbreviations first; they're more likely to be right. */ - for (tp = pc->local_time_zone_table; tp->name; tp++) - if (strcmp (name, tp->name) == 0) - return tp; - - for (tp = time_zone_table; tp->name; tp++) - if (strcmp (name, tp->name) == 0) - return tp; - - return 0; -} - -#if ! HAVE_TM_GMTOFF -/* Yield the difference between *A and *B, - measured in seconds, ignoring leap seconds. - The body of this function is taken directly from the GNU C Library; - see src/strftime.c. */ -static int -tm_diff (struct tm const *a, struct tm const *b) -{ - /* Compute intervening leap days correctly even if year is negative. - Take care to avoid int overflow in leap day calculations, - but it's OK to assume that A and B are close to each other. */ - int a4 = (a->tm_year >> 2) + (TM_YEAR_BASE >> 2) - ! (a->tm_year & 3); - int b4 = (b->tm_year >> 2) + (TM_YEAR_BASE >> 2) - ! (b->tm_year & 3); - int a100 = a4 / 25 - (a4 % 25 < 0); - int b100 = b4 / 25 - (b4 % 25 < 0); - int a400 = a100 >> 2; - int b400 = b100 >> 2; - int intervening_leap_days = (a4 - b4) - (a100 - b100) + (a400 - b400); - int years = a->tm_year - b->tm_year; - int days = (365 * years + intervening_leap_days - + (a->tm_yday - b->tm_yday)); - return (60 * (60 * (24 * days + (a->tm_hour - b->tm_hour)) - + (a->tm_min - b->tm_min)) - + (a->tm_sec - b->tm_sec)); -} -#endif /* ! HAVE_TM_GMTOFF */ - -static table const * -lookup_word (parser_control const *pc, char *word) -{ - char *p; - char *q; - size_t wordlen; - table const *tp; - int i; - int abbrev; - - /* Make it uppercase. */ - for (p = word; *p; p++) - if (ISLOWER ((unsigned char) *p)) - *p = toupper ((unsigned char) *p); - - for (tp = meridian_table; tp->name; tp++) - if (strcmp (word, tp->name) == 0) - return tp; - - /* See if we have an abbreviation for a month. */ - wordlen = strlen (word); - abbrev = wordlen == 3 || (wordlen == 4 && word[3] == '.'); - - for (tp = month_and_day_table; tp->name; tp++) - if ((abbrev ? strncmp (word, tp->name, 3) : strcmp (word, tp->name)) == 0) - return tp; - - if ((tp = lookup_zone (pc, word))) - return tp; - - if (strcmp (word, dst_table[0].name) == 0) - return dst_table; - - for (tp = time_units_table; tp->name; tp++) - if (strcmp (word, tp->name) == 0) - return tp; - - /* Strip off any plural and try the units table again. */ - if (word[wordlen - 1] == 'S') - { - word[wordlen - 1] = '\0'; - for (tp = time_units_table; tp->name; tp++) - if (strcmp (word, tp->name) == 0) - return tp; - word[wordlen - 1] = 'S'; /* For "this" in relative_time_table. */ - } - - for (tp = relative_time_table; tp->name; tp++) - if (strcmp (word, tp->name) == 0) - return tp; - - /* Military time zones. */ - if (wordlen == 1) - for (tp = military_table; tp->name; tp++) - if (word[0] == tp->name[0]) - return tp; - - /* Drop out any periods and try the time zone table again. */ - for (i = 0, p = q = word; (*p = *q); q++) - if (*q == '.') - i = 1; - else - p++; - if (i && (tp = lookup_zone (pc, word))) - return tp; - - return 0; -} - -static int -yylex (YYSTYPE *lvalp, parser_control *pc) -{ - unsigned char c; - int count; - - for (;;) - { - while (c = *pc->input, ISSPACE (c)) - pc->input++; - - if (ISDIGIT (c) || c == '-' || c == '+') - { - char const *p; - int sign; - int value; - if (c == '-' || c == '+') - { - sign = c == '-' ? -1 : 1; - c = *++pc->input; - if (! ISDIGIT (c)) - /* skip the '-' sign */ - continue; - } - else - sign = 0; - p = pc->input; - value = 0; - do - { - value = 10 * value + c - '0'; - c = *++p; - } - while (ISDIGIT (c)); - lvalp->textintval.value = sign < 0 ? -value : value; - lvalp->textintval.digits = p - pc->input; - pc->input = p; - return sign ? tSNUMBER : tUNUMBER; - } - - if (ISALPHA (c)) - { - char buff[20]; - char *p = buff; - table const *tp; - - do - { - if (p < buff + sizeof buff - 1) - *p++ = c; - c = *++pc->input; - } - while (ISALPHA (c) || c == '.'); - - *p = '\0'; - tp = lookup_word (pc, buff); - if (! tp) - return '?'; - lvalp->intval = tp->value; - return tp->type; - } - - if (c != '(') - return *pc->input++; - count = 0; - do - { - c = *pc->input++; - if (c == '\0') - return c; - if (c == '(') - count++; - else if (c == ')') - count--; - } - while (count > 0); - } -} - -/* Do nothing if the parser reports an error. */ -static int -yyerror (char *s ATTRIBUTE_UNUSED) -{ - return 0; -} - -/* Parse a date/time string P. Return the corresponding time_t value, - or (time_t) -1 if there is an error. P can be an incomplete or - relative time specification; if so, use *NOW as the basis for the - returned time. */ -time_t -get_date (const char *p, const time_t *now) -{ - time_t Start = now ? *now : time (0); - struct tm *tmp = localtime (&Start); - struct tm tm; - struct tm tm0; - parser_control pc; - - if (! tmp) - return -1; - - pc.input = p; - pc.year.value = tmp->tm_year + TM_YEAR_BASE; - pc.year.digits = 4; - pc.month = tmp->tm_mon + 1; - pc.day = tmp->tm_mday; - pc.hour = tmp->tm_hour; - pc.minutes = tmp->tm_min; - pc.seconds = tmp->tm_sec; - tm.tm_isdst = tmp->tm_isdst; - - pc.meridian = MER24; - pc.rel_seconds = 0; - pc.rel_minutes = 0; - pc.rel_hour = 0; - pc.rel_day = 0; - pc.rel_month = 0; - pc.rel_year = 0; - pc.dates_seen = 0; - pc.days_seen = 0; - pc.rels_seen = 0; - pc.times_seen = 0; - pc.local_zones_seen = 0; - pc.zones_seen = 0; - -#if HAVE_STRUCT_TM_TM_ZONE - pc.local_time_zone_table[0].name = tmp->tm_zone; - pc.local_time_zone_table[0].type = tLOCAL_ZONE; - pc.local_time_zone_table[0].value = tmp->tm_isdst; - pc.local_time_zone_table[1].name = 0; - - /* Probe the names used in the next three calendar quarters, looking - for a tm_isdst different from the one we already have. */ - { - int quarter; - for (quarter = 1; quarter <= 3; quarter++) - { - time_t probe = Start + quarter * (90 * 24 * 60 * 60); - struct tm *probe_tm = localtime (&probe); - if (probe_tm && probe_tm->tm_zone - && probe_tm->tm_isdst != pc.local_time_zone_table[0].value) - { - { - pc.local_time_zone_table[1].name = probe_tm->tm_zone; - pc.local_time_zone_table[1].type = tLOCAL_ZONE; - pc.local_time_zone_table[1].value = probe_tm->tm_isdst; - pc.local_time_zone_table[2].name = 0; - } - break; - } - } - } -#else -#if HAVE_TZNAME - { -# ifndef tzname - extern char *tzname[]; -# endif - int i; - for (i = 0; i < 2; i++) - { - pc.local_time_zone_table[i].name = tzname[i]; - pc.local_time_zone_table[i].type = tLOCAL_ZONE; - pc.local_time_zone_table[i].value = i; - } - pc.local_time_zone_table[i].name = 0; - } -#else - pc.local_time_zone_table[0].name = 0; -#endif -#endif - - if (pc.local_time_zone_table[0].name && pc.local_time_zone_table[1].name - && ! strcmp (pc.local_time_zone_table[0].name, - pc.local_time_zone_table[1].name)) - { - /* This locale uses the same abbrevation for standard and - daylight times. So if we see that abbreviation, we don't - know whether it's daylight time. */ - pc.local_time_zone_table[0].value = -1; - pc.local_time_zone_table[1].name = 0; - } - - if (yyparse (&pc) != 0 - || 1 < pc.times_seen || 1 < pc.dates_seen || 1 < pc.days_seen - || 1 < (pc.local_zones_seen + pc.zones_seen) - || (pc.local_zones_seen && 1 < pc.local_isdst)) - return -1; - - tm.tm_year = to_year (pc.year) - TM_YEAR_BASE + pc.rel_year; - tm.tm_mon = pc.month - 1 + pc.rel_month; - tm.tm_mday = pc.day + pc.rel_day; - if (pc.times_seen || (pc.rels_seen && ! pc.dates_seen && ! pc.days_seen)) - { - tm.tm_hour = to_hour (pc.hour, pc.meridian); - if (tm.tm_hour < 0) - return -1; - tm.tm_min = pc.minutes; - tm.tm_sec = pc.seconds; - } - else - { - tm.tm_hour = tm.tm_min = tm.tm_sec = 0; - } - - /* Let mktime deduce tm_isdst if we have an absolute time stamp, - or if the relative time stamp mentions days, months, or years. */ - if (pc.dates_seen | pc.days_seen | pc.times_seen | pc.rel_day - | pc.rel_month | pc.rel_year) - tm.tm_isdst = -1; - - /* But if the input explicitly specifies local time with or without - DST, give mktime that information. */ - if (pc.local_zones_seen) - tm.tm_isdst = pc.local_isdst; - - tm0 = tm; - - Start = mktime (&tm); - - if (Start == (time_t) -1) - { - - /* Guard against falsely reporting errors near the time_t boundaries - when parsing times in other time zones. For example, if the min - time_t value is 1970-01-01 00:00:00 UTC and we are 8 hours ahead - of UTC, then the min localtime value is 1970-01-01 08:00:00; if - we apply mktime to 1970-01-01 00:00:00 we will get an error, so - we apply mktime to 1970-01-02 08:00:00 instead and adjust the time - zone by 24 hours to compensate. This algorithm assumes that - there is no DST transition within a day of the time_t boundaries. */ - if (pc.zones_seen) - { - tm = tm0; - if (tm.tm_year <= EPOCH_YEAR - TM_YEAR_BASE) - { - tm.tm_mday++; - pc.time_zone += 24 * 60; - } - else - { - tm.tm_mday--; - pc.time_zone -= 24 * 60; - } - Start = mktime (&tm); - } - - if (Start == (time_t) -1) - return Start; - } - - if (pc.days_seen && ! pc.dates_seen) - { - tm.tm_mday += ((pc.day_number - tm.tm_wday + 7) % 7 - + 7 * (pc.day_ordinal - (0 < pc.day_ordinal))); - tm.tm_isdst = -1; - Start = mktime (&tm); - if (Start == (time_t) -1) - return Start; - } - - if (pc.zones_seen) - { - int delta = pc.time_zone * 60; -#ifdef HAVE_TM_GMTOFF - delta -= tm.tm_gmtoff; -#else - struct tm *gmt = gmtime (&Start); - if (! gmt) - return -1; - delta -= tm_diff (&tm, gmt); -#endif - if ((Start < Start - delta) != (delta < 0)) - return -1; /* time_t overflow */ - Start -= delta; - } - - /* Add relative hours, minutes, and seconds. Ignore leap seconds; - i.e. "+ 10 minutes" means 600 seconds, even if one of them is a - leap second. Typically this is not what the user wants, but it's - too hard to do it the other way, because the time zone indicator - must be applied before relative times, and if mktime is applied - again the time zone will be lost. */ - { - time_t t0 = Start; - long d1 = 60 * 60 * (long) pc.rel_hour; - time_t t1 = t0 + d1; - long d2 = 60 * (long) pc.rel_minutes; - time_t t2 = t1 + d2; - int d3 = pc.rel_seconds; - time_t t3 = t2 + d3; - if ((d1 / (60 * 60) ^ pc.rel_hour) - | (d2 / 60 ^ pc.rel_minutes) - | ((t0 + d1 < t0) ^ (d1 < 0)) - | ((t1 + d2 < t1) ^ (d2 < 0)) - | ((t2 + d3 < t2) ^ (d3 < 0))) - return -1; - Start = t3; - } - - return Start; -} - -#if TEST - -#include - -int -main (int ac, char **av) -{ - char buff[BUFSIZ]; - time_t d; - - printf ("Enter date, or blank line to exit.\n\t> "); - fflush (stdout); - - buff[BUFSIZ - 1] = 0; - while (fgets (buff, BUFSIZ - 1, stdin) && buff[0]) - { - d = get_date (buff, 0); - if (d == (time_t) -1) - printf ("Bad format - couldn't convert.\n"); - else - printf ("%s", ctime (&d)); - printf ("\t> "); - fflush (stdout); - } - return 0; -} -#endif /* defined TEST */ diff --git a/lib/human.c b/lib/human.c deleted file mode 100644 index a9ccf38c..00000000 --- a/lib/human.c +++ /dev/null @@ -1,366 +0,0 @@ -/* human.c -- print human readable file size - - Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 Free Software - Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -/* Originally contributed by lm@sgi.com; - --si, output block size selection, and large file support - added by eggert@twinsun.com. */ - -#if HAVE_CONFIG_H -# include -#endif - -#include -#include - -#if HAVE_LIMITS_H -# include -#endif - -#if HAVE_STRING_H -# include -#else -# include -#endif - -#ifndef CHAR_BIT -# define CHAR_BIT 8 -#endif -#if HAVE_STDLIB_H -# include -#endif - -#ifndef HAVE_DECL_GETENV -"this configure-time declaration test was not run" -#endif -#if !HAVE_DECL_GETENV -char *getenv (); -#endif - -#if ENABLE_NLS -# include -# define _(Text) gettext (Text) -#else -# define _(Text) Text -#endif - -#include -#include -#include - -#include "human.h" - -static const char suffixes[] = -{ - 0, /* not used */ - 'K', /* kibi ('k' for kilo is a special case) */ - 'M', /* mega or mebi */ - 'G', /* giga or gibi */ - 'T', /* tera or tebi */ - 'P', /* peta or pebi */ - 'E', /* exa or exbi */ - 'Z', /* zetta or 2**70 */ - 'Y' /* yotta or 2**80 */ -}; - -/* Generate into P[-1] (and possibly P[-2]) the proper suffix for - POWER and BASE. Return the address of the generated suffix. */ -static char * -generate_suffix_backwards (char *p, int power, int base) -{ - char letter = suffixes[power]; - - if (base == 1000) - { - *--p = 'B'; - if (power == 1) - letter = 'k'; - } - - *--p = letter; - return p; -} - -/* If INEXACT_STYLE is not human_round_to_even, and if easily - possible, adjust VALUE according to the style. */ -static double -adjust_value (enum human_inexact_style inexact_style, double value) -{ - /* Do not use the floor or ceil functions, as that would mean - linking with the standard math library, which is a porting pain. - So leave the value alone if it is too large to easily round. */ - if (inexact_style != human_round_to_even && value < (uintmax_t) -1) - { - uintmax_t u = value; - value = u + (inexact_style == human_ceiling && u != value); - } - - return value; -} - -/* Like human_readable_inexact, except always round to even. */ -char * -human_readable (uintmax_t n, char *buf, - int from_block_size, int output_block_size) -{ - return human_readable_inexact (n, buf, from_block_size, output_block_size, - human_round_to_even); -} - -/* Convert N to a human readable format in BUF. - - N is expressed in units of FROM_BLOCK_SIZE. FROM_BLOCK_SIZE must - be nonnegative. - - OUTPUT_BLOCK_SIZE must be nonzero. If it is positive, use units of - OUTPUT_BLOCK_SIZE in the output number. - - Use INEXACT_STYLE to determine whether to take the ceiling or floor - of any result that cannot be expressed exactly. - - If OUTPUT_BLOCK_SIZE is negative, use a format like "127K" if - possible, using powers of -OUTPUT_BLOCK_SIZE; otherwise, use - ordinary decimal format. Normally -OUTPUT_BLOCK_SIZE is either - 1000 or 1024; it must be at least 2. Most people visually process - strings of 3-4 digits effectively, but longer strings of digits are - more prone to misinterpretation. Hence, converting to an - abbreviated form usually improves readability. Use a suffix - indicating which power is being used. For example, assuming - -OUTPUT_BLOCK_SIZE is 1024, 8500 would be converted to 8.3K, - 133456345 to 127M, 56990456345 to 53G, and so on. Numbers smaller - than -OUTPUT_BLOCK_SIZE aren't modified. If -OUTPUT_BLOCK_SIZE is - 1024, append a "B" after any size letter. */ - -char * -human_readable_inexact (uintmax_t n, char *buf, - int from_block_size, int output_block_size, - enum human_inexact_style inexact_style) -{ - uintmax_t amt; - int base; - int to_block_size; - int tenths = 0; - int power; - char *p; - - /* 0 means adjusted N == AMT.TENTHS; - 1 means AMT.TENTHS < adjusted N < AMT.TENTHS + 0.05; - 2 means adjusted N == AMT.TENTHS + 0.05; - 3 means AMT.TENTHS + 0.05 < adjusted N < AMT.TENTHS + 0.1. */ - int rounding = 0; - - if (output_block_size < 0) - { - base = -output_block_size; - to_block_size = 1; - } - else - { - base = 0; - to_block_size = output_block_size; - } - - p = buf + LONGEST_HUMAN_READABLE; - *p = '\0'; - -#ifdef lint - /* Suppress `used before initialized' warning. */ - power = 0; -#endif - - /* Adjust AMT out of FROM_BLOCK_SIZE units and into TO_BLOCK_SIZE units. */ - - { - int multiplier; - int divisor; - int r2; - int r10; - if (to_block_size <= from_block_size - ? (from_block_size % to_block_size != 0 - || (multiplier = from_block_size / to_block_size, - (amt = n * multiplier) / multiplier != n)) - : (from_block_size == 0 - || to_block_size % from_block_size != 0 - || (divisor = to_block_size / from_block_size, - r10 = (n % divisor) * 10, - r2 = (r10 % divisor) * 2, - amt = n / divisor, - tenths = r10 / divisor, - rounding = r2 < divisor ? 0 < r2 : 2 + (divisor < r2), - 0))) - { - /* Either the result cannot be computed easily using uintmax_t, - or from_block_size is zero. Fall back on floating point. - FIXME: This can yield answers that are slightly off. */ - - double damt = n * (from_block_size / (double) to_block_size); - - if (! base) - sprintf (buf, "%.0f", adjust_value (inexact_style, damt)); - else - { - char suffix[3]; - char const *psuffix; - double e = 1; - power = 0; - - do - { - e *= base; - power++; - } - while (e * base <= damt && power < sizeof suffixes - 1); - - damt /= e; - - suffix[2] = '\0'; - psuffix = generate_suffix_backwards (suffix + 2, power, base); - sprintf (buf, "%.1f%s", - adjust_value (inexact_style, damt), psuffix); - if (4 + (base == 1000) < strlen (buf)) - sprintf (buf, "%.0f%s", - adjust_value (inexact_style, damt * 10) / 10, psuffix); - } - - return buf; - } - } - - /* Use power of BASE notation if adjusted AMT is large enough. */ - - if (base && base <= amt) - { - power = 0; - - do - { - int r10 = (amt % base) * 10 + tenths; - int r2 = (r10 % base) * 2 + (rounding >> 1); - amt /= base; - tenths = r10 / base; - rounding = (r2 < base - ? 0 < r2 + rounding - : 2 + (base < r2 + rounding)); - power++; - } - while (base <= amt && power < sizeof suffixes - 1); - - p = generate_suffix_backwards (p, power, base); - - if (amt < 10) - { - if (2 * (1 - (int) inexact_style) - < rounding + (tenths & (inexact_style == human_round_to_even))) - { - tenths++; - rounding = 0; - - if (tenths == 10) - { - amt++; - tenths = 0; - } - } - - if (amt < 10) - { - *--p = '0' + tenths; - *--p = '.'; - tenths = rounding = 0; - } - } - } - - if (inexact_style == human_ceiling - ? 0 < tenths + rounding - : inexact_style == human_round_to_even - ? 5 < tenths + (2 < rounding + (amt & 1)) - : /* inexact_style == human_floor */ 0) - { - amt++; - - if (amt == base && power < sizeof suffixes - 1) - { - *p = suffixes[power + 1]; - *--p = '0'; - *--p = '.'; - amt = 1; - } - } - - do - *--p = '0' + (int) (amt % 10); - while ((amt /= 10) != 0); - - return p; -} - - -/* The default block size used for output. This number may change in - the future as disks get larger. */ -#ifndef DEFAULT_BLOCK_SIZE -# define DEFAULT_BLOCK_SIZE 1024 -#endif - -static char const *const block_size_args[] = { "human-readable", "si", 0 }; -static int const block_size_types[] = { -1024, -1000 }; - -static int -default_block_size (void) -{ - return getenv ("POSIXLY_CORRECT") ? 512 : DEFAULT_BLOCK_SIZE; -} - -static strtol_error -humblock (char const *spec, int *block_size) -{ - int i; - - if (! spec && ! (spec = getenv ("BLOCK_SIZE"))) - *block_size = default_block_size (); - else if (0 <= (i = ARGMATCH (spec, block_size_args, block_size_types))) - *block_size = block_size_types[i]; - else - { - char *ptr; - unsigned long val; - strtol_error e = xstrtoul (spec, &ptr, 0, &val, "eEgGkKmMpPtTyYzZ0"); - if (e != LONGINT_OK) - return e; - if (*ptr) - return LONGINT_INVALID_SUFFIX_CHAR; - if ((int) val < 0 || val != (int) val) - return LONGINT_OVERFLOW; - *block_size = (int) val; - } - - return LONGINT_OK; -} - -void -human_block_size (char const *spec, int report_errors, int *block_size) -{ - strtol_error e = humblock (spec, block_size); - if (*block_size == 0) - { - *block_size = default_block_size (); - e = LONGINT_INVALID; - } - if (e != LONGINT_OK && report_errors) - STRTOL_FATAL_ERROR (spec, _("block size"), e); -} diff --git a/lib/human.h b/lib/human.h deleted file mode 100644 index 1bff760d..00000000 --- a/lib/human.h +++ /dev/null @@ -1,46 +0,0 @@ -#ifndef HUMAN_H_ -# define HUMAN_H_ 1 - -# if HAVE_CONFIG_H -# include -# endif - -# if HAVE_INTTYPES_H -# include -# endif - -# if HAVE_LIMITS_H -# include -# endif -# ifndef CHAR_BIT -# define CHAR_BIT 8 -# endif - -/* A conservative bound on the maximum length of a human-readable string. - The output can be the product of the largest uintmax_t and the largest int, - so add their sizes before converting to a bound on digits. */ -# define LONGEST_HUMAN_READABLE ((sizeof (uintmax_t) + sizeof (int)) \ - * CHAR_BIT / 3) - -# ifndef PARAMS -# if defined PROTOTYPES || (defined __STDC__ && __STDC__) -# define PARAMS(Args) Args -# else -# define PARAMS(Args) () -# endif -# endif - -enum human_inexact_style -{ - human_floor = -1, - human_round_to_even = 0, - human_ceiling = 1 -}; - -char *human_readable PARAMS ((uintmax_t, char *, int, int)); -char *human_readable_inexact PARAMS ((uintmax_t, char *, int, int, - enum human_inexact_style)); - -void human_block_size PARAMS ((char const *, int, int *)); - -#endif /* HUMAN_H_ */ diff --git a/lib/lchown.h b/lib/lchown.h deleted file mode 100644 index 25e4dac9..00000000 --- a/lib/lchown.h +++ /dev/null @@ -1,9 +0,0 @@ -/* Some systems don't have ENOSYS. */ -#ifndef ENOSYS -# ifdef ENOTSUP -# define ENOSYS ENOTSUP -# else -/* Some systems don't have ENOTSUP either. */ -# define ENOSYS ENOMSG -# endif -#endif diff --git a/lib/print-copyr.c b/lib/print-copyr.c deleted file mode 100644 index 2b6a13ec..00000000 --- a/lib/print-copyr.c +++ /dev/null @@ -1,57 +0,0 @@ -/* Print a copyright notice suitable for the current locale. - Copyright (C) 2001 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -/* Written by Paul Eggert. */ - -#if HAVE_CONFIG_H -# include -#endif - -#include "print-copyr.h" -#include - -#if ENABLE_NLS -# include "unicodeio.h" -#else -# define unicode_to_mb(code, callback, error_callback, callback_arg) \ - error_callback (code, callback_arg) -#endif - -#define COPYRIGHT_SIGN 0x00A9 - -/* Print "(C)". */ - -static int -print_parenthesized_c (unsigned int code, void *callback_arg) -{ - FILE *stream = callback_arg; - return fputs ("(C)", stream); -} - -/* Print "Copyright (C) " followed by NOTICE and then a newline, - transliterating "(C)" to an actual copyright sign (C-in-a-circle) - if possible. */ - -void -print_copyright (char const *notice) -{ - fputs ("Copyright ", stdout); - unicode_to_mb (COPYRIGHT_SIGN, print_unicode_char, print_parenthesized_c, - stdout); - fputc (' ', stdout); - puts (notice); -} diff --git a/lib/print-copyr.h b/lib/print-copyr.h deleted file mode 100644 index ff981583..00000000 --- a/lib/print-copyr.h +++ /dev/null @@ -1,9 +0,0 @@ -# ifndef PARAMS -# if PROTOTYPES || (defined (__STDC__) && __STDC__) -# define PARAMS(args) args -# else -# define PARAMS(args) () -# endif -# endif - -void print_copyright PARAMS((char const *)); diff --git a/lib/quotearg.c b/lib/quotearg.c deleted file mode 100644 index 9d439565..00000000 --- a/lib/quotearg.c +++ /dev/null @@ -1,658 +0,0 @@ -/* quotearg.c - quote arguments for output - Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -/* Written by Paul Eggert */ - -#if HAVE_CONFIG_H -# include -#endif - -#if HAVE_STDDEF_H -# include /* For the definition of size_t on windows w/MSVC. */ -#endif -#include -#include -#include - -#include - -#if ENABLE_NLS -# include -# define _(text) gettext (text) -#else -# define _(text) text -#endif -#define N_(text) text - -#if HAVE_LIMITS_H -# include -#endif -#ifndef CHAR_BIT -# define CHAR_BIT 8 -#endif -#ifndef SIZE_MAX -# define SIZE_MAX ((size_t) -1) -#endif -#ifndef UCHAR_MAX -# define UCHAR_MAX ((unsigned char) -1) -#endif -#ifndef UINT_MAX -# define UINT_MAX ((unsigned int) -1) -#endif - -#if HAVE_C_BACKSLASH_A -# define ALERT_CHAR '\a' -#else -# define ALERT_CHAR '\7' -#endif - -#if HAVE_STDLIB_H -# include -#endif - -#if HAVE_STRING_H -# include -#endif - -#if HAVE_WCHAR_H - -/* BSD/OS 4.1 wchar.h requires FILE and struct tm to be declared. */ -# include -# include - -# include -#endif - -#if !HAVE_MBRTOWC -/* Disable multibyte processing entirely. Since MB_CUR_MAX is 1, the - other macros are defined only for documentation and to satisfy C - syntax. */ -# undef MB_CUR_MAX -# define MB_CUR_MAX 1 -# define mbrtowc(pwc, s, n, ps) ((*(pwc) = *(s)) != 0) -# define mbsinit(ps) 1 -# define iswprint(wc) ISPRINT ((unsigned char) (wc)) -#endif - -#ifndef iswprint -# if HAVE_WCTYPE_H -# include -# endif -# if !defined iswprint && !HAVE_ISWPRINT -# define iswprint(wc) 1 -# endif -#endif - -#define INT_BITS (sizeof (int) * CHAR_BIT) - -#if defined (STDC_HEADERS) || (!defined (isascii) && !defined (HAVE_ISASCII)) -# define IN_CTYPE_DOMAIN(c) 1 -#else -# define IN_CTYPE_DOMAIN(c) isascii(c) -#endif - -/* Undefine to protect against the definition in wctype.h of solaris2.6. */ -#undef ISPRINT -#define ISPRINT(c) (IN_CTYPE_DOMAIN (c) && isprint (c)) - -struct quoting_options -{ - /* Basic quoting style. */ - enum quoting_style style; - - /* Quote the characters indicated by this bit vector even if the - quoting style would not normally require them to be quoted. */ - int quote_these_too[(UCHAR_MAX / INT_BITS) + 1]; -}; - -/* Names of quoting styles. */ -char const *const quoting_style_args[] = -{ - "literal", - "shell", - "shell-always", - "c", - "escape", - "locale", - "clocale", - 0 -}; - -/* Correspondences to quoting style names. */ -enum quoting_style const quoting_style_vals[] = -{ - literal_quoting_style, - shell_quoting_style, - shell_always_quoting_style, - c_quoting_style, - escape_quoting_style, - locale_quoting_style, - clocale_quoting_style -}; - -/* The default quoting options. */ -static struct quoting_options default_quoting_options; - -/* Allocate a new set of quoting options, with contents initially identical - to O if O is not null, or to the default if O is null. - It is the caller's responsibility to free the result. */ -struct quoting_options * -clone_quoting_options (struct quoting_options *o) -{ - struct quoting_options *p - = (struct quoting_options *) xmalloc (sizeof (struct quoting_options)); - *p = *(o ? o : &default_quoting_options); - return p; -} - -/* Get the value of O's quoting style. If O is null, use the default. */ -enum quoting_style -get_quoting_style (struct quoting_options *o) -{ - return (o ? o : &default_quoting_options)->style; -} - -/* In O (or in the default if O is null), - set the value of the quoting style to S. */ -void -set_quoting_style (struct quoting_options *o, enum quoting_style s) -{ - (o ? o : &default_quoting_options)->style = s; -} - -/* In O (or in the default if O is null), - set the value of the quoting options for character C to I. - Return the old value. Currently, the only values defined for I are - 0 (the default) and 1 (which means to quote the character even if - it would not otherwise be quoted). */ -int -set_char_quoting (struct quoting_options *o, char c, int i) -{ - unsigned char uc = c; - int *p = (o ? o : &default_quoting_options)->quote_these_too + uc / INT_BITS; - int shift = uc % INT_BITS; - int r = (*p >> shift) & 1; - *p ^= ((i & 1) ^ r) << shift; - return r; -} - -/* MSGID approximates a quotation mark. Return its translation if it - has one; otherwise, return either it or "\"", depending on S. */ -static char const * -gettext_quote (char const *msgid, enum quoting_style s) -{ - char const *translation = _(msgid); - if (translation == msgid && s == clocale_quoting_style) - translation = "\""; - return translation; -} - -/* Place into buffer BUFFER (of size BUFFERSIZE) a quoted version of - argument ARG (of size ARGSIZE), using QUOTING_STYLE and the - non-quoting-style part of O to control quoting. - Terminate the output with a null character, and return the written - size of the output, not counting the terminating null. - If BUFFERSIZE is too small to store the output string, return the - value that would have been returned had BUFFERSIZE been large enough. - If ARGSIZE is -1, use the string length of the argument for ARGSIZE. - - This function acts like quotearg_buffer (BUFFER, BUFFERSIZE, ARG, - ARGSIZE, O), except it uses QUOTING_STYLE instead of the quoting - style specified by O, and O may not be null. */ - -static size_t -quotearg_buffer_restyled (char *buffer, size_t buffersize, - char const *arg, size_t argsize, - enum quoting_style quoting_style, - struct quoting_options const *o) -{ - size_t i; - size_t len = 0; - char const *quote_string = 0; - size_t quote_string_len = 0; - int backslash_escapes = 0; - int unibyte_locale = MB_CUR_MAX == 1; - -#define STORE(c) \ - do \ - { \ - if (len < buffersize) \ - buffer[len] = (c); \ - len++; \ - } \ - while (0) - - switch (quoting_style) - { - case c_quoting_style: - STORE ('"'); - backslash_escapes = 1; - quote_string = "\""; - quote_string_len = 1; - break; - - case escape_quoting_style: - backslash_escapes = 1; - break; - - case locale_quoting_style: - case clocale_quoting_style: - { - /* Get translations for open and closing quotation marks. - - The message catalog should translate "`" to a left - quotation mark suitable for the locale, and similarly for - "'". If the catalog has no translation, - locale_quoting_style quotes `like this', and - clocale_quoting_style quotes "like this". - - For example, an American English Unicode locale should - translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and - should translate "'" to U+201D (RIGHT DOUBLE QUOTATION - MARK). A British English Unicode locale should instead - translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and - U+2019 (RIGHT SINGLE QUOTATION MARK), respectively. */ - - char const *left = gettext_quote (N_("`"), quoting_style); - char const *right = gettext_quote (N_("'"), quoting_style); - for (quote_string = left; *quote_string; quote_string++) - STORE (*quote_string); - backslash_escapes = 1; - quote_string = right; - quote_string_len = strlen (quote_string); - } - break; - - case shell_always_quoting_style: - STORE ('\''); - quote_string = "'"; - quote_string_len = 1; - break; - - default: - break; - } - - for (i = 0; ! (argsize == (size_t) -1 ? arg[i] == '\0' : i == argsize); i++) - { - unsigned char c; - unsigned char esc; - - if (backslash_escapes - && quote_string_len - && i + quote_string_len <= argsize - && memcmp (arg + i, quote_string, quote_string_len) == 0) - STORE ('\\'); - - c = arg[i]; - switch (c) - { - case '\0': - if (backslash_escapes) - { - STORE ('\\'); - STORE ('0'); - STORE ('0'); - c = '0'; - } - break; - - case '?': - switch (quoting_style) - { - case shell_quoting_style: - goto use_shell_always_quoting_style; - - case c_quoting_style: - if (i + 2 < argsize && arg[i + 1] == '?') - switch (arg[i + 2]) - { - case '!': case '\'': - case '(': case ')': case '-': case '/': - case '<': case '=': case '>': - /* Escape the second '?' in what would otherwise be - a trigraph. */ - i += 2; - c = arg[i + 2]; - STORE ('?'); - STORE ('\\'); - STORE ('?'); - break; - } - break; - - default: - break; - } - break; - - case ALERT_CHAR: esc = 'a'; goto c_escape; - case '\b': esc = 'b'; goto c_escape; - case '\f': esc = 'f'; goto c_escape; - case '\n': esc = 'n'; goto c_and_shell_escape; - case '\r': esc = 'r'; goto c_and_shell_escape; - case '\t': esc = 't'; goto c_and_shell_escape; - case '\v': esc = 'v'; goto c_escape; - case '\\': esc = c; goto c_and_shell_escape; - - c_and_shell_escape: - if (quoting_style == shell_quoting_style) - goto use_shell_always_quoting_style; - c_escape: - if (backslash_escapes) - { - c = esc; - goto store_escape; - } - break; - - case '#': case '~': - if (i != 0) - break; - /* Fall through. */ - case ' ': - case '!': /* special in bash */ - case '"': case '$': case '&': - case '(': case ')': case '*': case ';': - case '<': case '>': case '[': - case '^': /* special in old /bin/sh, e.g. SunOS 4.1.4 */ - case '`': case '|': - /* A shell special character. In theory, '$' and '`' could - be the first bytes of multibyte characters, which means - we should check them with mbrtowc, but in practice this - doesn't happen so it's not worth worrying about. */ - if (quoting_style == shell_quoting_style) - goto use_shell_always_quoting_style; - break; - - case '\'': - switch (quoting_style) - { - case shell_quoting_style: - goto use_shell_always_quoting_style; - - case shell_always_quoting_style: - STORE ('\''); - STORE ('\\'); - STORE ('\''); - break; - - default: - break; - } - break; - - case '%': case '+': case ',': case '-': case '.': case '/': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': case ':': case '=': - case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': - case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': - case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': - case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': - case 'Y': case 'Z': case ']': case '_': case 'a': case 'b': - case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': - case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': - case 'o': case 'p': case 'q': case 'r': case 's': case 't': - case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': - case '{': case '}': - /* These characters don't cause problems, no matter what the - quoting style is. They cannot start multibyte sequences. */ - break; - - default: - /* If we have a multibyte sequence, copy it until we reach - its end, find an error, or come back to the initial shift - state. For C-like styles, if the sequence has - unprintable characters, escape the whole sequence, since - we can't easily escape single characters within it. */ - { - /* Length of multibyte sequence found so far. */ - size_t m; - - int printable; - - if (unibyte_locale) - { - m = 1; - printable = ISPRINT (c); - } - else - { - mbstate_t mbstate; - memset (&mbstate, 0, sizeof mbstate); - - m = 0; - printable = 1; - if (argsize == (size_t) -1) - argsize = strlen (arg); - - do - { - wchar_t w; - size_t bytes = mbrtowc (&w, &arg[i + m], - argsize - (i + m), &mbstate); - if (bytes == 0) - break; - else if (bytes == (size_t) -1) - { - printable = 0; - break; - } - else if (bytes == (size_t) -2) - { - printable = 0; - while (i + m < argsize && arg[i + m]) - m++; - break; - } - else - { - if (! iswprint (w)) - printable = 0; - m += bytes; - } - } - while (! mbsinit (&mbstate)); - } - - if (1 < m || (backslash_escapes && ! printable)) - { - /* Output a multibyte sequence, or an escaped - unprintable unibyte character. */ - size_t ilim = i + m; - - for (;;) - { - if (backslash_escapes && ! printable) - { - STORE ('\\'); - STORE ('0' + (c >> 6)); - STORE ('0' + ((c >> 3) & 7)); - c = '0' + (c & 7); - } - if (ilim <= i + 1) - break; - STORE (c); - c = arg[++i]; - } - - goto store_c; - } - } - } - - if (! (backslash_escapes - && o->quote_these_too[c / INT_BITS] & (1 << (c % INT_BITS)))) - goto store_c; - - store_escape: - STORE ('\\'); - - store_c: - STORE (c); - } - - if (quote_string) - for (; *quote_string; quote_string++) - STORE (*quote_string); - - if (len < buffersize) - buffer[len] = '\0'; - return len; - - use_shell_always_quoting_style: - return quotearg_buffer_restyled (buffer, buffersize, arg, argsize, - shell_always_quoting_style, o); -} - -/* Place into buffer BUFFER (of size BUFFERSIZE) a quoted version of - argument ARG (of size ARGSIZE), using O to control quoting. - If O is null, use the default. - Terminate the output with a null character, and return the written - size of the output, not counting the terminating null. - If BUFFERSIZE is too small to store the output string, return the - value that would have been returned had BUFFERSIZE been large enough. - If ARGSIZE is -1, use the string length of the argument for ARGSIZE. */ -size_t -quotearg_buffer (char *buffer, size_t buffersize, - char const *arg, size_t argsize, - struct quoting_options const *o) -{ - struct quoting_options const *p = o ? o : &default_quoting_options; - return quotearg_buffer_restyled (buffer, buffersize, arg, argsize, - p->style, p); -} - -/* Use storage slot N to return a quoted version of argument ARG. - ARG is of size ARGSIZE, but if that is -1, ARG is a null-terminated string. - OPTIONS specifies the quoting options. - The returned value points to static storage that can be - reused by the next call to this function with the same value of N. - N must be nonnegative. N is deliberately declared with type "int" - to allow for future extensions (using negative values). */ -static char * -quotearg_n_options (int n, char const *arg, size_t argsize, - struct quoting_options const *options) -{ - /* Preallocate a slot 0 buffer, so that the caller can always quote - one small component of a "memory exhausted" message in slot 0. */ - static char slot0[256]; - static unsigned int nslots = 1; - unsigned int n0 = n; - struct slotvec - { - size_t size; - char *val; - }; - static struct slotvec slotvec0 = {sizeof slot0, slot0}; - static struct slotvec *slotvec = &slotvec0; - - if (n < 0) - abort (); - - if (nslots <= n0) - { - unsigned int n1 = n0 + 1; - size_t s = n1 * sizeof *slotvec; - - if (SIZE_MAX / UINT_MAX <= sizeof *slotvec - && n1 != s / sizeof *slotvec) - xalloc_die (); - - if (slotvec == &slotvec0) - { - slotvec = (struct slotvec *) xmalloc (sizeof *slotvec); - *slotvec = slotvec0; - } - slotvec = (struct slotvec *) xrealloc (slotvec, s); - memset (slotvec + nslots, 0, (n1 - nslots) * sizeof *slotvec); - nslots = n1; - } - - { - size_t size = slotvec[n].size; - char *val = slotvec[n].val; - size_t qsize = quotearg_buffer (val, size, arg, argsize, options); - - if (size <= qsize) - { - slotvec[n].size = size = qsize + 1; - slotvec[n].val = val = xrealloc (val == slot0 ? 0 : val, size); - quotearg_buffer (val, size, arg, argsize, options); - } - - return val; - } -} - -char * -quotearg_n (int n, char const *arg) -{ - return quotearg_n_options (n, arg, (size_t) -1, &default_quoting_options); -} - -char * -quotearg (char const *arg) -{ - return quotearg_n (0, arg); -} - -/* Return quoting options for STYLE, with no extra quoting. */ -static struct quoting_options -quoting_options_from_style (enum quoting_style style) -{ - struct quoting_options o; - o.style = style; - memset (o.quote_these_too, 0, sizeof o.quote_these_too); - return o; -} - -char * -quotearg_n_style (int n, enum quoting_style s, char const *arg) -{ - struct quoting_options const o = quoting_options_from_style (s); - return quotearg_n_options (n, arg, (size_t) -1, &o); -} - -char * -quotearg_n_style_mem (int n, enum quoting_style s, - char const *arg, size_t argsize) -{ - struct quoting_options const o = quoting_options_from_style (s); - return quotearg_n_options (n, arg, argsize, &o); -} - -char * -quotearg_style (enum quoting_style s, char const *arg) -{ - return quotearg_n_style (0, s, arg); -} - -char * -quotearg_char (char const *arg, char ch) -{ - struct quoting_options options; - options = default_quoting_options; - set_char_quoting (&options, ch, 1); - return quotearg_n_options (0, arg, (size_t) -1, &options); -} - -char * -quotearg_colon (char const *arg) -{ - return quotearg_char (arg, ':'); -} diff --git a/lib/quotearg.h b/lib/quotearg.h deleted file mode 100644 index d546929e..00000000 --- a/lib/quotearg.h +++ /dev/null @@ -1,100 +0,0 @@ -/* quotearg.h - quote arguments for output - Copyright (C) 1998, 1999 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -/* Written by Paul Eggert */ - -/* Basic quoting styles. */ -enum quoting_style - { - literal_quoting_style, /* --quoting-style=literal */ - shell_quoting_style, /* --quoting-style=shell */ - shell_always_quoting_style, /* --quoting-style=shell-always */ - c_quoting_style, /* --quoting-style=c */ - escape_quoting_style /* --quoting-style=escape */ - }; - -/* For now, --quoting-style=literal is the default, but - this is planned to change to --quoting-style=shell in the future. */ -#ifndef DEFAULT_QUOTING_STYLE -# define DEFAULT_QUOTING_STYLE literal_quoting_style -#endif - -/* Names of quoting styles and their corresponding values. */ -extern char const *const quoting_style_args[]; -extern enum quoting_style const quoting_style_vals[]; - -struct quoting_options; - -#ifndef PARAMS -# if defined PROTOTYPES || defined __STDC__ -# define PARAMS(Args) Args -# else -# define PARAMS(Args) () -# endif -#endif - -/* The functions listed below set and use a hidden variable - that contains the default quoting style options. */ - -/* Allocate a new set of quoting options, with contents initially identical - to O if O is not null, or to the default if O is null. - It is the caller's responsibility to free the result. */ -struct quoting_options *clone_quoting_options - PARAMS ((struct quoting_options *o)); - -/* Get the value of O's quoting style. If O is null, use the default. */ -enum quoting_style get_quoting_style PARAMS ((struct quoting_options *o)); - -/* In O (or in the default if O is null), - set the value of the quoting style to S. */ -void set_quoting_style PARAMS ((struct quoting_options *o, - enum quoting_style s)); - -/* In O (or in the default if O is null), - set the value of the quoting options for character C to I. - Return the old value. Currently, the only values defined for I are - 0 (the default) and 1 (which means to quote the character even if - it would not otherwise be quoted). */ -int set_char_quoting PARAMS ((struct quoting_options *o, char c, int i)); - -/* Place into buffer BUFFER (of size BUFFERSIZE) a quoted version of - argument ARG (of size ARGSIZE), using O to control quoting. - If O is null, use the default. - Terminate the output with a null character, and return the written - size of the output, not counting the terminating null. - If BUFFERSIZE is too small to store the output string, return the - value that would have been returned had BUFFERSIZE been large enough. - If ARGSIZE is -1, use the string length of the argument for ARGSIZE. */ -size_t quotearg_buffer PARAMS ((char *buffer, size_t buffersize, - char const *arg, size_t argsize, - struct quoting_options const *o)); - -/* Use storage slot N to return a quoted version of the string ARG. - Use the default quoting options. - The returned value points to static storage that can be - reused by the next call to this function with the same value of N. - N must be nonnegative. */ -char *quotearg_n PARAMS ((unsigned int n, char const *arg)); - -/* Equivalent to quotearg_n (0, ARG). */ -char *quotearg PARAMS ((char const *arg)); - -/* Like quotearg (ARG), except also quote any instances of CH. */ -char *quotearg_char PARAMS ((char const *arg, char ch)); - -/* Equivalent to quotearg_char (ARG, ':'). */ -char *quotearg_colon PARAMS ((char const *arg)); diff --git a/lib/safe-read.h b/lib/safe-read.h deleted file mode 100644 index 9970720a..00000000 --- a/lib/safe-read.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PARAMS -# if defined PROTOTYPES || (defined __STDC__ && __STDC__) -# define PARAMS(Args) Args -# else -# define PARAMS(Args) () -# endif -#endif - -ssize_t full_write PARAMS ((int desc, const char *ptr, size_t len)); -ssize_t safe_read PARAMS ((int desc, void *ptr, size_t len)); diff --git a/lib/savedir.c b/lib/savedir.c deleted file mode 100644 index 112f5c04..00000000 --- a/lib/savedir.c +++ /dev/null @@ -1,129 +0,0 @@ -/* savedir.c -- save the list of files in a directory in a string - - Copyright 1990, 1997, 1998, 1999, 2000, 2001 Free Software - Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -/* Written by David MacKenzie . */ - -#if HAVE_CONFIG_H -# include -#endif - -#include - -#include -#ifndef errno -extern int errno; -#endif - -#if HAVE_DIRENT_H -# include -#else -# define dirent direct -# if HAVE_SYS_NDIR_H -# include -# endif -# if HAVE_SYS_DIR_H -# include -# endif -# if HAVE_NDIR_H -# include -# endif -#endif - -#ifdef CLOSEDIR_VOID -/* Fake a return value. */ -# define CLOSEDIR(d) (closedir (d), 0) -#else -# define CLOSEDIR(d) closedir (d) -#endif - -#ifdef STDC_HEADERS -# include -# include -#endif -#ifndef NULL -# define NULL 0 -#endif - -#include "savedir.h" -#include "xalloc.h" - -/* Return a freshly allocated string containing the filenames - in directory DIR, separated by '\0' characters; - the end is marked by two '\0' characters in a row. - Return NULL (setting errno) if DIR cannot be opened, read, or closed. */ - -#ifndef NAME_SIZE_DEFAULT -# define NAME_SIZE_DEFAULT 512 -#endif - -char * -savedir (const char *dir) -{ - DIR *dirp; - struct dirent *dp; - char *name_space; - size_t allocated = NAME_SIZE_DEFAULT; - size_t used = 0; - int save_errno; - - dirp = opendir (dir); - if (dirp == NULL) - return NULL; - - name_space = xmalloc (allocated); - - errno = 0; - while ((dp = readdir (dirp)) != NULL) - { - /* Skip "", ".", and "..". "" is returned by at least one buggy - implementation: Solaris 2.4 readdir on NFS filesystems. */ - char const *entry = dp->d_name; - if (entry[entry[0] != '.' ? 0 : entry[1] != '.' ? 1 : 2] != '\0') - { - size_t entry_size = strlen (entry) + 1; - if (used + entry_size < used) - xalloc_die (); - if (allocated <= used + entry_size) - { - do - { - if (2 * allocated < allocated) - xalloc_die (); - allocated *= 2; - } - while (allocated <= used + entry_size); - - name_space = xrealloc (name_space, allocated); - } - memcpy (name_space + used, entry, entry_size); - used += entry_size; - } - } - name_space[used] = '\0'; - save_errno = errno; - if (CLOSEDIR (dirp) != 0) - save_errno = errno; - if (save_errno != 0) - { - free (name_space); - errno = save_errno; - return NULL; - } - return name_space; -} diff --git a/lib/savedir.h b/lib/savedir.h deleted file mode 100644 index 03b41f5b..00000000 --- a/lib/savedir.h +++ /dev/null @@ -1,14 +0,0 @@ -#if !defined SAVEDIR_H_ -# define SAVEDIR_H_ - -# ifndef PARAMS -# if defined PROTOTYPES || (defined __STDC__ && __STDC__) -# define PARAMS(Args) Args -# else -# define PARAMS(Args) () -# endif -# endif - -char *savedir PARAMS ((const char *dir)); - -#endif diff --git a/lib/strtoimax.c b/lib/strtoimax.c deleted file mode 100644 index 690e4d15..00000000 --- a/lib/strtoimax.c +++ /dev/null @@ -1,101 +0,0 @@ -/* Convert string representation of a number into an intmax_t value. - - Copyright (C) 1999, 2001 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -/* Written by Paul Eggert. */ - -#if HAVE_CONFIG_H -# include -#endif - -#if HAVE_INTTYPES_H -# include -#endif - -#if HAVE_STDLIB_H -# include -#endif - -#ifndef PARAMS -# if defined PROTOTYPES || defined __STDC__ -# define PARAMS(Args) Args -# else -# define PARAMS(Args) () -# endif -#endif - -/* Verify a requirement at compile-time (unlike assert, which is runtime). */ -#define verify(name, assertion) struct name { char a[(assertion) ? 1 : -1]; } - -#ifdef UNSIGNED -# ifndef HAVE_DECL_STRTOUL -"this configure-time declaration test was not run" -# endif -# if !HAVE_DECL_STRTOUL -unsigned long strtoul PARAMS ((char const *, char **, int)); -# endif -# ifndef HAVE_DECL_STRTOULL -"this configure-time declaration test was not run" -# endif -# if !HAVE_DECL_STRTOULL && HAVE_UNSIGNED_LONG_LONG -unsigned long long strtoull PARAMS ((char const *, char **, int)); -# endif - -#else - -# ifndef HAVE_DECL_STRTOL -"this configure-time declaration test was not run" -# endif -# if !HAVE_DECL_STRTOL -long strtol PARAMS ((char const *, char **, int)); -# endif -# ifndef HAVE_DECL_STRTOLL -"this configure-time declaration test was not run" -# endif -# if !HAVE_DECL_STRTOLL && HAVE_LONG_LONG -long long strtoll PARAMS ((char const *, char **, int)); -# endif -#endif - -#ifdef UNSIGNED -# undef HAVE_LONG_LONG -# define HAVE_LONG_LONG HAVE_UNSIGNED_LONG_LONG -# define INT uintmax_t -# define strtoimax strtoumax -# define strtol strtoul -# define strtoll strtoull -#else -# define INT intmax_t -#endif - -INT -strtoimax (char const *ptr, char **endptr, int base) -{ -#if HAVE_LONG_LONG - verify (size_is_that_of_long_or_long_long, - (sizeof (INT) == sizeof (long) - || sizeof (INT) == sizeof (long long))); - - if (sizeof (INT) != sizeof (long)) - return strtoll (ptr, endptr, base); -#else - verify (size_is_that_of_long, - sizeof (INT) == sizeof (long)); -#endif - - return strtol (ptr, endptr, base); -} diff --git a/lib/strtoumax.c b/lib/strtoumax.c deleted file mode 100644 index dc395d62..00000000 --- a/lib/strtoumax.c +++ /dev/null @@ -1,2 +0,0 @@ -#define UNSIGNED 1 -#include "strtoimax.c" diff --git a/lib/unicodeio.c b/lib/unicodeio.c deleted file mode 100644 index 049b9afd..00000000 --- a/lib/unicodeio.c +++ /dev/null @@ -1,263 +0,0 @@ -/* Unicode character output to streams with locale dependent encoding. - - Copyright (C) 2000-2002 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify it - under the terms of the GNU Library General Public License as published - by the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, - USA. */ - -/* Written by Bruno Haible . */ - -/* Note: This file requires the locale_charset() function. See in - libiconv-1.7/libcharset/INTEGRATE for how to obtain it. */ - -#ifdef HAVE_CONFIG_H -# include -#endif - -#if HAVE_STDDEF_H -# include -#endif - -#include -#if HAVE_STRING_H -# include -#else -# include -#endif - -#include -#ifndef errno -extern int errno; -#endif - -#if HAVE_ICONV -# include -#endif - -#include - -#if ENABLE_NLS -# include -#else -# define gettext(Text) Text -#endif -#define _(Text) gettext (Text) -#define N_(Text) Text - -/* Specification. */ -#include "unicodeio.h" - -/* When we pass a Unicode character to iconv(), we must pass it in a - suitable encoding. The standardized Unicode encodings are - UTF-8, UCS-2, UCS-4, UTF-16, UTF-16BE, UTF-16LE, UTF-7. - UCS-2 supports only characters up to \U0000FFFF. - UTF-16 and variants support only characters up to \U0010FFFF. - UTF-7 is way too complex and not supported by glibc-2.1. - UCS-4 specification leaves doubts about endianness and byte order - mark. glibc currently interprets it as big endian without byte order - mark, but this is not backed by an RFC. - So we use UTF-8. It supports characters up to \U7FFFFFFF and is - unambiguously defined. */ - -/* Stores the UTF-8 representation of the Unicode character wc in r[0..5]. - Returns the number of bytes stored, or -1 if wc is out of range. */ -static int -utf8_wctomb (unsigned char *r, unsigned int wc) -{ - int count; - - if (wc < 0x80) - count = 1; - else if (wc < 0x800) - count = 2; - else if (wc < 0x10000) - count = 3; - else if (wc < 0x200000) - count = 4; - else if (wc < 0x4000000) - count = 5; - else if (wc <= 0x7fffffff) - count = 6; - else - return -1; - - switch (count) - { - /* Note: code falls through cases! */ - case 6: r[5] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0x4000000; - case 5: r[4] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0x200000; - case 4: r[3] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0x10000; - case 3: r[2] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0x800; - case 2: r[1] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0xc0; - case 1: r[0] = wc; - } - - return count; -} - -/* Luckily, the encoding's name is platform independent. */ -#define UTF8_NAME "UTF-8" - -/* Converts the Unicode character CODE to its multibyte representation - in the current locale and calls the SUCCESS callback on the resulting - byte sequence. If an error occurs, invokes the FAILURE callback instead, - passing it CODE and an English error string. - Returns whatever the callback returned. - Assumes that the locale doesn't change between two calls. */ -long -unicode_to_mb (unsigned int code, - long (*success) PARAMS ((const char *buf, size_t buflen, - void *callback_arg)), - long (*failure) PARAMS ((unsigned int code, const char *msg, - void *callback_arg)), - void *callback_arg) -{ - static int initialized; - static int is_utf8; -#if HAVE_ICONV - static iconv_t utf8_to_local; -#endif - - char inbuf[6]; - int count; - - if (!initialized) - { - extern const char *locale_charset PARAMS ((void)); - const char *charset = locale_charset (); - - is_utf8 = !strcmp (charset, UTF8_NAME); -#if HAVE_ICONV - if (!is_utf8) - { - utf8_to_local = iconv_open (charset, UTF8_NAME); - if (utf8_to_local == (iconv_t)(-1)) - /* For an unknown encoding, assume ASCII. */ - utf8_to_local = iconv_open ("ASCII", UTF8_NAME); - } -#endif - initialized = 1; - } - - /* Test whether the utf8_to_local converter is available at all. */ - if (!is_utf8) - { -#if HAVE_ICONV - if (utf8_to_local == (iconv_t)(-1)) - return failure (code, N_("iconv function not usable"), callback_arg); -#else - return failure (code, N_("iconv function not available"), callback_arg); -#endif - } - - /* Convert the character to UTF-8. */ - count = utf8_wctomb ((unsigned char *) inbuf, code); - if (count < 0) - return failure (code, N_("character out of range"), callback_arg); - -#if HAVE_ICONV - if (!is_utf8) - { - char outbuf[25]; - const char *inptr; - size_t inbytesleft; - char *outptr; - size_t outbytesleft; - size_t res; - - inptr = inbuf; - inbytesleft = count; - outptr = outbuf; - outbytesleft = sizeof (outbuf); - - /* Convert the character from UTF-8 to the locale's charset. */ - res = iconv (utf8_to_local, - (ICONV_CONST char **)&inptr, &inbytesleft, - &outptr, &outbytesleft); - if (inbytesleft > 0 || res == (size_t)(-1) - /* Irix iconv() inserts a NUL byte if it cannot convert. */ -# if !defined _LIBICONV_VERSION && (defined sgi || defined __sgi) - || (res > 0 && code != 0 && outptr - outbuf == 1 && *outbuf == '\0') -# endif - ) - return failure (code, NULL, callback_arg); - - /* Avoid glibc-2.1 bug and Solaris 2.7 bug. */ -# if defined _LIBICONV_VERSION \ - || !((__GLIBC__ - 0 == 2 && __GLIBC_MINOR__ - 0 <= 1) || defined __sun) - - /* Get back to the initial shift state. */ - res = iconv (utf8_to_local, NULL, NULL, &outptr, &outbytesleft); - if (res == (size_t)(-1)) - return failure (code, NULL, callback_arg); -# endif - - return success (outbuf, outptr - outbuf, callback_arg); - } -#endif - - /* At this point, is_utf8 is true, so no conversion is needed. */ - return success (inbuf, count, callback_arg); -} - -/* Simple success callback that outputs the converted string. - The STREAM is passed as callback_arg. */ -long -fwrite_success_callback (const char *buf, size_t buflen, void *callback_arg) -{ - FILE *stream = (FILE *) callback_arg; - - fwrite (buf, 1, buflen, stream); - return 0; -} - -/* Simple failure callback that displays an error and exits. */ -static long -exit_failure_callback (unsigned int code, const char *msg, void *callback_arg) -{ - if (msg == NULL) - error (1, 0, _("cannot convert U+%04X to local character set"), code); - else - error (1, 0, _("cannot convert U+%04X to local character set: %s"), code, - gettext (msg)); - return -1; -} - -/* Simple failure callback that displays a fallback representation in plain - ASCII, using the same notation as ISO C99 strings. */ -static long -fallback_failure_callback (unsigned int code, const char *msg, void *callback_arg) -{ - FILE *stream = (FILE *) callback_arg; - - if (code < 0x10000) - fprintf (stream, "\\u%04X", code); - else - fprintf (stream, "\\U%08X", code); - return -1; -} - -/* Outputs the Unicode character CODE to the output stream STREAM. - Upon failure, exit if exit_on_error is true, otherwise output a fallback - notation. */ -void -print_unicode_char (FILE *stream, unsigned int code, int exit_on_error) -{ - unicode_to_mb (code, fwrite_success_callback, - exit_on_error - ? exit_failure_callback - : fallback_failure_callback, - stream); -} diff --git a/lib/unicodeio.h b/lib/unicodeio.h deleted file mode 100644 index fb2b7524..00000000 --- a/lib/unicodeio.h +++ /dev/null @@ -1,44 +0,0 @@ -/* Unicode character output to streams with locale dependent encoding. - - Copyright (C) 2000-2002 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify it - under the terms of the GNU Library General Public License as published - by the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, - USA. */ - -#ifndef UNICODEIO_H -# define UNICODEIO_H - -# include - -# ifndef PARAMS -# if defined PROTOTYPES || (defined __STDC__ && __STDC__) -# define PARAMS(Args) Args -# else -# define PARAMS(Args) () -# endif -# endif - -/* Outputs the Unicode character CODE to the output stream STREAM. - Upon failure, exit if exit_on_error is true, otherwise output a fallback - notation. */ -extern void print_unicode_char PARAMS ((FILE *stream, unsigned int code, - int exit_on_error)); - -/* Simple success callback that outputs the converted string. - The STREAM is passed as callback_arg. */ -extern long fwrite_success_callback PARAMS ((const char *buf, size_t buflen, - void *callback_arg)); - -#endif diff --git a/lib/waitpid.c b/lib/waitpid.c deleted file mode 100644 index eab9430b..00000000 --- a/lib/waitpid.c +++ /dev/null @@ -1,75 +0,0 @@ -/* Emulate waitpid on systems that just have wait. - Copyright 1994, 1995, 1998, 1999, 2007 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; see the file COPYING. - If not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ - -#if HAVE_CONFIG_H -# include -#endif - -#include -#include - -#include -#ifndef errno -extern int errno; -#endif - -#define WAITPID_CHILDREN 8 -static pid_t waited_pid[WAITPID_CHILDREN]; -static int waited_status[WAITPID_CHILDREN]; - -pid_t -waitpid (pid_t pid, int *stat_loc, int options) -{ - int i; - pid_t p; - - if (!options && (pid == -1 || 0 < pid)) - { - /* If we have already waited for this child, return it immediately. */ - for (i = 0; i < WAITPID_CHILDREN; i++) - { - p = waited_pid[i]; - if (p && (p == pid || pid == -1)) - { - waited_pid[i] = 0; - goto success; - } - } - - /* The child has not returned yet; wait for it, accumulating status. */ - for (i = 0; i < WAITPID_CHILDREN; i++) - if (! waited_pid[i]) - { - p = wait (&waited_status[i]); - if (p < 0) - return p; - if (p == pid || pid == -1) - goto success; - waited_pid[i] = p; - } - } - - /* We cannot emulate this wait call, e.g. because of too many children. */ - errno = EINVAL; - return -1; - -success: - if (stat_loc) - *stat_loc = waited_status[i]; - return p; -} diff --git a/lib/xalloc.h b/lib/xalloc.h deleted file mode 100644 index 098a6c2e..00000000 --- a/lib/xalloc.h +++ /dev/null @@ -1,87 +0,0 @@ -/* xalloc.h -- malloc with out-of-memory checking - Copyright (C) 1990-1998, 1999, 2000 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifndef XALLOC_H_ -# define XALLOC_H_ - -# ifndef PARAMS -# if defined PROTOTYPES || (defined __STDC__ && __STDC__) -# define PARAMS(Args) Args -# else -# define PARAMS(Args) () -# endif -# endif - -# ifndef __attribute__ -# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8) || __STRICT_ANSI__ -# define __attribute__(x) -# endif -# endif - -# ifndef ATTRIBUTE_NORETURN -# define ATTRIBUTE_NORETURN __attribute__ ((__noreturn__)) -# endif - -/* Exit value when the requested amount of memory is not available. - It is initialized to EXIT_FAILURE, but the caller may set it to - some other value. */ -extern int xalloc_exit_failure; - -/* If this pointer is non-zero, run the specified function upon each - allocation failure. It is initialized to zero. */ -extern void (*xalloc_fail_func) PARAMS ((void)); - -/* If XALLOC_FAIL_FUNC is undefined or a function that returns, this - message is output. It is translated via gettext. - Its value is "memory exhausted". */ -extern char const xalloc_msg_memory_exhausted[]; - -/* This function is always triggered when memory is exhausted. It is - in charge of honoring the three previous items. This is the - function to call when one wants the program to die because of a - memory allocation failure. */ -extern void xalloc_die PARAMS ((void)) ATTRIBUTE_NORETURN; - -void *xmalloc PARAMS ((size_t n)); -void *xcalloc PARAMS ((size_t n, size_t s)); -void *xrealloc PARAMS ((void *p, size_t n)); -char *xstrdup PARAMS ((const char *str)); - -# define XMALLOC(Type, N_items) ((Type *) xmalloc (sizeof (Type) * (N_items))) -# define XCALLOC(Type, N_items) ((Type *) xcalloc (sizeof (Type), (N_items))) -# define XREALLOC(Ptr, Type, N_items) \ - ((Type *) xrealloc ((void *) (Ptr), sizeof (Type) * (N_items))) - -/* Declare and alloc memory for VAR of type TYPE. */ -# define NEW(Type, Var) Type *(Var) = XMALLOC (Type, 1) - -/* Free VAR only if non NULL. */ -# define XFREE(Var) \ - do { \ - if (Var) \ - free (Var); \ - } while (0) - -/* Return a pointer to a malloc'ed copy of the array SRC of NUM elements. */ -# define CCLONE(Src, Num) \ - (memcpy (xmalloc (sizeof (*Src) * (Num)), (Src), sizeof (*Src) * (Num))) - -/* Return a malloc'ed copy of SRC. */ -# define CLONE(Src) CCLONE (Src, 1) - - -#endif /* !XALLOC_H_ */ diff --git a/lib/xgetcwd.c b/lib/xgetcwd.c deleted file mode 100644 index 23fbaeab..00000000 --- a/lib/xgetcwd.c +++ /dev/null @@ -1,79 +0,0 @@ -/* xgetcwd.c -- return current directory with unlimited length - Copyright (C) 1992, 1996, 2000, 2001 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -/* Written by David MacKenzie . */ - -#if HAVE_CONFIG_H -# include -#endif - -#include -#include -#ifndef errno -extern int errno; -#endif - -#include - -#if HAVE_STDLIB_H -# include -#endif -#if HAVE_UNISTD_H -# include -#endif - -#if HAVE_GETCWD -char *getcwd (); -#else -char *getwd (); -# define getcwd(Buf, Max) getwd (Buf) -#endif - -#include "xalloc.h" - -/* Return the current directory, newly allocated, arbitrarily long. - Return NULL and set errno on error. */ - -char * -xgetcwd () -{ -#if defined __GLIBC__ && __GLIBC__ >= 2 - return getcwd (NULL, 0); -#else - size_t buf_size = 128; /* must be a power of 2 */ - char *buf = NULL; - - while (1) - { - char *cwd; - buf = (char *) xrealloc (buf, buf_size); - - cwd = getcwd (buf, buf_size); - if (cwd != NULL) - return cwd; - if (errno != ERANGE) - { - free (buf); - return NULL; - } - - buf_size *= 2; - if (buf_size == 0) - xalloc_die (); - } -#endif -} diff --git a/lib/xmalloc.c b/lib/xmalloc.c deleted file mode 100644 index 2f103d60..00000000 --- a/lib/xmalloc.c +++ /dev/null @@ -1,116 +0,0 @@ -/* xmalloc.c -- malloc with out of memory checking - Copyright (C) 1990-1999, 2000 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#if HAVE_CONFIG_H -# include -#endif - -#include - -#if STDC_HEADERS -# include -#else -void *calloc (); -void *malloc (); -void *realloc (); -void free (); -#endif - -#if ENABLE_NLS -# include -# define _(Text) gettext (Text) -#else -# define textdomain(Domain) -# define _(Text) Text -#endif -#define N_(Text) Text - -#include "error.h" -#include "xalloc.h" - -#ifndef EXIT_FAILURE -# define EXIT_FAILURE 1 -#endif - -#ifndef HAVE_DONE_WORKING_MALLOC_CHECK -"you must run the autoconf test for a properly working malloc -- see malloc.m4" -#endif - -#ifndef HAVE_DONE_WORKING_REALLOC_CHECK -"you must run the autoconf test for a properly working realloc --see realloc.m4" -#endif - -/* Exit value when the requested amount of memory is not available. - The caller may set it to some other value. */ -int xalloc_exit_failure = EXIT_FAILURE; - -/* If non NULL, call this function when memory is exhausted. */ -void (*xalloc_fail_func) PARAMS ((void)) = 0; - -/* If XALLOC_FAIL_FUNC is NULL, or does return, display this message - before exiting when memory is exhausted. Goes through gettext. */ -char const xalloc_msg_memory_exhausted[] = N_("memory exhausted"); - -void -xalloc_die (void) -{ - if (xalloc_fail_func) - (*xalloc_fail_func) (); - error (xalloc_exit_failure, 0, "%s", _(xalloc_msg_memory_exhausted)); - /* The `noreturn' cannot be given to error, since it may return if - its first argument is 0. To help compilers understand the - xalloc_die does terminate, call exit. */ - exit (EXIT_FAILURE); -} - -/* Allocate N bytes of memory dynamically, with error checking. */ - -void * -xmalloc (size_t n) -{ - void *p; - - p = malloc (n); - if (p == 0) - xalloc_die (); - return p; -} - -/* Change the size of an allocated block of memory P to N bytes, - with error checking. */ - -void * -xrealloc (void *p, size_t n) -{ - p = realloc (p, n); - if (p == 0) - xalloc_die (); - return p; -} - -/* Allocate memory for N elements of S bytes, with error checking. */ - -void * -xcalloc (size_t n, size_t s) -{ - void *p; - - p = calloc (n, s); - if (p == 0) - xalloc_die (); - return p; -} diff --git a/lib/xstrtol.c b/lib/xstrtol.c deleted file mode 100644 index 88071cdc..00000000 --- a/lib/xstrtol.c +++ /dev/null @@ -1,288 +0,0 @@ -/* A more useful interface to strtol. - Copyright (C) 1995, 1996, 1998-2001 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -/* Written by Jim Meyering. */ - -#if HAVE_CONFIG_H -# include -#endif - -#ifndef __strtol -# define __strtol strtol -# define __strtol_t long int -# define __xstrtol xstrtol -#endif - -/* Some pre-ANSI implementations (e.g. SunOS 4) - need stderr defined if assertion checking is enabled. */ -#include - -#if STDC_HEADERS -# include -#endif - -#if HAVE_STRING_H -# include -#else -# include -# ifndef strchr -# define strchr index -# endif -#endif - -#include -#include - -#include -#ifndef errno -extern int errno; -#endif - -#if HAVE_LIMITS_H -# include -#endif - -#ifndef CHAR_BIT -# define CHAR_BIT 8 -#endif - -/* The extra casts work around common compiler bugs. */ -#define TYPE_SIGNED(t) (! ((t) 0 < (t) -1)) -/* The outer cast is needed to work around a bug in Cray C 5.0.3.0. - It is necessary at least when t == time_t. */ -#define TYPE_MINIMUM(t) ((t) (TYPE_SIGNED (t) \ - ? ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1) : (t) 0)) -#define TYPE_MAXIMUM(t) (~ (t) 0 - TYPE_MINIMUM (t)) - -#if defined (STDC_HEADERS) || (!defined (isascii) && !defined (HAVE_ISASCII)) -# define IN_CTYPE_DOMAIN(c) 1 -#else -# define IN_CTYPE_DOMAIN(c) isascii(c) -#endif - -#define ISSPACE(c) (IN_CTYPE_DOMAIN (c) && isspace (c)) - -#include "xstrtol.h" - -#if !HAVE_DECL_STRTOL && !defined strtol -long int strtol (); -#endif - -#if !HAVE_DECL_STRTOUL && !defined strtoul -unsigned long int strtoul (); -#endif - -#if !HAVE_DECL_STRTOIMAX && !defined strtoimax -intmax_t strtoimax (); -#endif - -#if !HAVE_DECL_STRTOUMAX && !defined strtoumax -uintmax_t strtoumax (); -#endif - -static int -bkm_scale (__strtol_t *x, int scale_factor) -{ - __strtol_t product = *x * scale_factor; - if (*x != product / scale_factor) - return 1; - *x = product; - return 0; -} - -static int -bkm_scale_by_power (__strtol_t *x, int base, int power) -{ - while (power--) - if (bkm_scale (x, base)) - return 1; - - return 0; -} - -/* FIXME: comment. */ - -strtol_error -__xstrtol (const char *s, char **ptr, int strtol_base, - __strtol_t *val, const char *valid_suffixes) -{ - char *t_ptr; - char **p; - __strtol_t tmp; - - assert (0 <= strtol_base && strtol_base <= 36); - - p = (ptr ? ptr : &t_ptr); - - if (! TYPE_SIGNED (__strtol_t)) - { - const char *q = s; - while (ISSPACE ((unsigned char) *q)) - ++q; - if (*q == '-') - return LONGINT_INVALID; - } - - errno = 0; - tmp = __strtol (s, p, strtol_base); - if (errno != 0) - return LONGINT_OVERFLOW; - if (*p == s) - return LONGINT_INVALID; - - /* Let valid_suffixes == NULL mean `allow any suffix'. */ - /* FIXME: update all callers except the ones that allow suffixes - after the number, changing last parameter NULL to `""'. */ - if (!valid_suffixes) - { - *val = tmp; - return LONGINT_OK; - } - - if (**p != '\0') - { - int base = 1024; - int suffixes = 1; - int overflow; - - if (!strchr (valid_suffixes, **p)) - { - *val = tmp; - return LONGINT_INVALID_SUFFIX_CHAR; - } - - if (strchr (valid_suffixes, '0')) - { - /* The ``valid suffix'' '0' is a special flag meaning that - an optional second suffix is allowed, which can change - the base, e.g. "100MD" for 100 megabytes decimal. */ - - switch (p[0][1]) - { - case 'B': - suffixes++; - break; - - case 'D': - base = 1000; - suffixes++; - break; - } - } - - switch (**p) - { - case 'b': - overflow = bkm_scale (&tmp, 512); - break; - - case 'B': - overflow = bkm_scale (&tmp, 1024); - break; - - case 'c': - overflow = 0; - break; - - case 'E': /* Exa */ - overflow = bkm_scale_by_power (&tmp, base, 6); - break; - - case 'G': /* Giga */ - case 'g': /* 'g' is undocumented; for compatibility only */ - overflow = bkm_scale_by_power (&tmp, base, 3); - break; - - case 'k': /* kilo */ - overflow = bkm_scale_by_power (&tmp, base, 1); - break; - - case 'M': /* Mega */ - case 'm': /* 'm' is undocumented; for compatibility only */ - overflow = bkm_scale_by_power (&tmp, base, 2); - break; - - case 'P': /* Peta */ - overflow = bkm_scale_by_power (&tmp, base, 5); - break; - - case 'T': /* Tera */ - case 't': /* 't' is undocumented; for compatibility only */ - overflow = bkm_scale_by_power (&tmp, base, 4); - break; - - case 'w': - overflow = bkm_scale (&tmp, 2); - break; - - case 'Y': /* Yotta */ - overflow = bkm_scale_by_power (&tmp, base, 8); - break; - - case 'Z': /* Zetta */ - overflow = bkm_scale_by_power (&tmp, base, 7); - break; - - default: - *val = tmp; - return LONGINT_INVALID_SUFFIX_CHAR; - break; - } - - if (overflow) - return LONGINT_OVERFLOW; - - (*p) += suffixes; - } - - *val = tmp; - return LONGINT_OK; -} - -#ifdef TESTING_XSTRTO - -# include -# include "error.h" - -char *program_name; - -int -main (int argc, char** argv) -{ - strtol_error s_err; - int i; - - program_name = argv[0]; - for (i=1; i%lu (%s)\n", argv[i], val, p); - } - else - { - STRTOL_FATAL_ERROR (argv[i], "arg", s_err); - } - } - exit (0); -} - -#endif /* TESTING_XSTRTO */ diff --git a/lib/xstrtol.h b/lib/xstrtol.h deleted file mode 100644 index 513855f1..00000000 --- a/lib/xstrtol.h +++ /dev/null @@ -1,82 +0,0 @@ -/* A more useful interface to strtol. - Copyright 1995, 1996, 1998, 1999, 2001 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifndef XSTRTOL_H_ -# define XSTRTOL_H_ 1 - -# if HAVE_INTTYPES_H -# include /* for uintmax_t */ -# endif - -# ifndef PARAMS -# if defined PROTOTYPES || (defined __STDC__ && __STDC__) -# define PARAMS(Args) Args -# else -# define PARAMS(Args) () -# endif -# endif - -# ifndef _STRTOL_ERROR -enum strtol_error - { - LONGINT_OK, LONGINT_INVALID, LONGINT_INVALID_SUFFIX_CHAR, LONGINT_OVERFLOW - }; -typedef enum strtol_error strtol_error; -# endif - -# define _DECLARE_XSTRTOL(name, type) \ - strtol_error \ - name PARAMS ((const char *s, char **ptr, int base, \ - type *val, const char *valid_suffixes)); -_DECLARE_XSTRTOL (xstrtol, long int) -_DECLARE_XSTRTOL (xstrtoul, unsigned long int) -_DECLARE_XSTRTOL (xstrtoimax, intmax_t) -_DECLARE_XSTRTOL (xstrtoumax, uintmax_t) - -# define _STRTOL_ERROR(Exit_code, Str, Argument_type_string, Err) \ - do \ - { \ - switch ((Err)) \ - { \ - case LONGINT_OK: \ - abort (); \ - \ - case LONGINT_INVALID: \ - error ((Exit_code), 0, "invalid %s `%s'", \ - (Argument_type_string), (Str)); \ - break; \ - \ - case LONGINT_INVALID_SUFFIX_CHAR: \ - error ((Exit_code), 0, "invalid character following %s in `%s'", \ - (Argument_type_string), (Str)); \ - break; \ - \ - case LONGINT_OVERFLOW: \ - error ((Exit_code), 0, "%s `%s' too large", \ - (Argument_type_string), (Str)); \ - break; \ - } \ - } \ - while (0) - -# define STRTOL_FATAL_ERROR(Str, Argument_type_string, Err) \ - _STRTOL_ERROR (2, Str, Argument_type_string, Err) - -# define STRTOL_FAIL_WARN(Str, Argument_type_string, Err) \ - _STRTOL_ERROR (0, Str, Argument_type_string, Err) - -#endif /* not XSTRTOL_H_ */ diff --git a/m4/c-bs-a.m4 b/m4/c-bs-a.m4 deleted file mode 100644 index 6e0863e4..00000000 --- a/m4/c-bs-a.m4 +++ /dev/null @@ -1,23 +0,0 @@ -#serial 4 - -dnl From Paul Eggert. - -AC_DEFUN([AC_C_BACKSLASH_A], -[ - AC_CACHE_CHECK([whether backslash-a works in strings], ac_cv_c_backslash_a, - [AC_TRY_COMPILE([], - [ -#if '\a' == 'a' - syntax error; -#endif - char buf['\a' == 'a' ? -1 : 1]; - buf[0] = '\a'; - return buf[0] != "\a"[0]; - ], - ac_cv_c_backslash_a=yes, - ac_cv_c_backslash_a=no)]) - if test $ac_cv_c_backslash_a = yes; then - AC_DEFINE(HAVE_C_BACKSLASH_A, 1, - [Define if backslash-a works in C strings.]) - fi -]) diff --git a/m4/ccstdc.m4 b/m4/ccstdc.m4 deleted file mode 100644 index 9a347913..00000000 --- a/m4/ccstdc.m4 +++ /dev/null @@ -1,95 +0,0 @@ -# The following is taken from automake 1.4, -# except that it prefers the compiler option -Ae to "-Aa -D_HPUX_SOURCE" -# because only the former supports 64-bit integral types on HP-UX 10.20. - -## ----------------------------------------- ## -## ANSIfy the C compiler whenever possible. ## -## From Franc,ois Pinard ## -## ----------------------------------------- ## - -# serial 2 - -# @defmac AC_PROG_CC_STDC -# @maindex PROG_CC_STDC -# @ovindex CC -# If the C compiler in not in ANSI C mode by default, try to add an option -# to output variable @code{CC} to make it so. This macro tries various -# options that select ANSI C on some system or another. It considers the -# compiler to be in ANSI C mode if it handles function prototypes correctly. -# -# If you use this macro, you should check after calling it whether the C -# compiler has been set to accept ANSI C; if not, the shell variable -# @code{am_cv_prog_cc_stdc} is set to @samp{no}. If you wrote your source -# code in ANSI C, you can make an un-ANSIfied copy of it by using the -# program @code{ansi2knr}, which comes with Ghostscript. -# @end defmac - -AC_DEFUN(AM_PROG_CC_STDC, -[AC_REQUIRE([AC_PROG_CC]) -AC_BEFORE([$0], [AC_C_INLINE]) -AC_BEFORE([$0], [AC_C_CONST]) -dnl Force this before AC_PROG_CPP. Some cpp's, eg on HPUX, require -dnl a magic option to avoid problems with ANSI preprocessor commands -dnl like #elif. -dnl FIXME: can't do this because then AC_AIX won't work due to a -dnl circular dependency. -dnl AC_BEFORE([$0], [AC_PROG_CPP]) -AC_MSG_CHECKING(for ${CC-cc} option to accept ANSI C) -AC_CACHE_VAL(am_cv_prog_cc_stdc, -[am_cv_prog_cc_stdc=no -ac_save_CC="$CC" -# Don't try gcc -ansi; that turns off useful extensions and -# breaks some systems' header files. -# AIX -qlanglvl=ansi -# Ultrix and OSF/1 -std1 -# HP-UX -Aa -D_HPUX_SOURCE -# SVR4 -Xc -D__EXTENSIONS__ -for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - AC_TRY_COMPILE( -[#include -#include -#include -#include -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -], [ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; -], -[am_cv_prog_cc_stdc="$ac_arg"; break]) -done -CC="$ac_save_CC" -]) -if test -z "$am_cv_prog_cc_stdc"; then - AC_MSG_RESULT([none needed]) -else - AC_MSG_RESULT($am_cv_prog_cc_stdc) -fi -case "x$am_cv_prog_cc_stdc" in - x|xno) ;; - *) CC="$CC $am_cv_prog_cc_stdc" ;; -esac -]) diff --git a/m4/decl.m4 b/m4/decl.m4 deleted file mode 100644 index 76fd65f2..00000000 --- a/m4/decl.m4 +++ /dev/null @@ -1,37 +0,0 @@ -#serial 5 - -AC_DEFUN(jm_CHECK_DECLARATION, -[ - AC_MSG_CHECKING([whether $1 is declared]) - AC_CACHE_VAL(jm_cv_func_decl_$1, - [AC_TRY_COMPILE($2, - [ -#ifndef $1 -char *(*pfn) = (char *(*)) $1 -#endif - ], - eval "jm_cv_func_decl_$1=yes", - eval "jm_cv_func_decl_$1=no")]) - - if eval "test \"`echo '$jm_cv_func_decl_'$1`\" = yes"; then - AC_MSG_RESULT(yes) - ifelse([$3], , :, [$3]) - else - AC_MSG_RESULT(no) - ifelse([$4], , , [$4 -])dnl - fi -])dnl - -dnl jm_CHECK_DECLARATIONS(INCLUDES, FUNCTION... [, ACTION-IF-DECLARED -dnl [, ACTION-IF-NOT-DECLARED]]) -AC_DEFUN(jm_CHECK_DECLARATIONS, -[ - for jm_func in $2 - do - jm_CHECK_DECLARATION($jm_func, $1, - [ - jm_tr_func=HAVE_DECL_`echo $jm_func | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ` - AC_DEFINE_UNQUOTED($jm_tr_func) $3], $4)dnl - done -]) diff --git a/m4/error.m4 b/m4/error.m4 deleted file mode 100644 index 3d9b2b7b..00000000 --- a/m4/error.m4 +++ /dev/null @@ -1,12 +0,0 @@ -#serial 3 - -dnl FIXME: put these prerequisite-only *.m4 files in a separate -dnl directory -- otherwise, they'll conflict with existing files. - -dnl These are the prerequisite macros for GNU's error.c file. -AC_DEFUN([jm_PREREQ_ERROR], -[ - AC_CHECK_FUNCS(strerror strerror_r vprintf doprnt) - AC_FUNC_STRERROR_R - AC_HEADER_STDC -]) diff --git a/m4/fnmatch.m4 b/m4/fnmatch.m4 deleted file mode 100644 index 29923ce4..00000000 --- a/m4/fnmatch.m4 +++ /dev/null @@ -1,24 +0,0 @@ -dnl This is a copy of autoconf 2.13, except we also check that -dnl FNM_FILE_NAME | FNM_LEADING_DIR works. -dnl -undefine([AC_FUNC_FNMATCH]) -AC_DEFUN(AC_FUNC_FNMATCH, -[AC_CACHE_CHECK(for working GNU-style fnmatch, ac_cv_func_fnmatch_works, -# Some versions of Solaris, SCO, and the GNU C Library -# have a broken or incompatible fnmatch. -# So we run a test program. If we are cross-compiling, take no chance. -# Thanks to John Oleynick, Franc,ois Pinard, and Paul Eggert for this test. -[AC_TRY_RUN([#include -main() { - exit (fnmatch ("a*", "abc", 0) != 0 - || fnmatch("d*/*1", "d/s/1", FNM_FILE_NAME) != FNM_NOMATCH - || fnmatch("*", "x", FNM_FILE_NAME | FNM_LEADING_DIR) != 0 - || fnmatch("x*", "x/y/z", FNM_FILE_NAME | FNM_LEADING_DIR) != 0 - || fnmatch("*c*", "c/x", FNM_FILE_NAME | FNM_LEADING_DIR) != 0); -}], -ac_cv_func_fnmatch_works=yes, ac_cv_func_fnmatch_works=no, -ac_cv_func_fnmatch_works=no)]) -if test $ac_cv_func_fnmatch_works = yes; then - AC_DEFINE(HAVE_FNMATCH) -fi -]) diff --git a/m4/getcwd.m4 b/m4/getcwd.m4 deleted file mode 100644 index 1e1b80ef..00000000 --- a/m4/getcwd.m4 +++ /dev/null @@ -1,53 +0,0 @@ -# getcwd.m4 - check whether getcwd (NULL, 0) allocates memory for result - -# Copyright 2001 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, -# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -# Written by Paul Eggert. - -AC_DEFUN([AC_FUNC_GETCWD_NULL], - [AC_CHECK_HEADERS(stdlib.h unistd.h) - AC_CACHE_CHECK([whether getcwd (NULL, 0) allocates memory for result], - [ac_cv_func_getcwd_null], - [AC_TRY_RUN( - [ -# ifdef HAVE_STDLIB_H -# include -# endif -# ifdef HAVE_UNISTD_H -# include -# endif -# ifndef getcwd - char *getcwd (); -# endif - int - main () - { - if (chdir ("/") != 0) - exit (1); - else - { - char *f = getcwd (NULL, 0); - exit (! (f && f[0] == '/' && !f[1])); - } - }], - [ac_cv_func_getcwd_null=yes], - [ac_cv_func_getcwd_null=no], - [ac_cv_func_getcwd_null=no])]) - if test $ac_cv_func_getcwd_null = yes; then - AC_DEFINE(HAVE_GETCWD_NULL, 1, - [Define if getcwd (NULL, 0) allocates memory for result.]) - fi]) diff --git a/m4/gettext.m4 b/m4/gettext.m4 deleted file mode 100644 index bbb0e9c7..00000000 --- a/m4/gettext.m4 +++ /dev/null @@ -1,368 +0,0 @@ -# Macro to add for using GNU gettext. -# Ulrich Drepper , 1995. -# -# This file can be copied and used freely without restrictions. It can -# be used in projects which are not available under the GNU General Public -# License but which still want to provide support for the GNU gettext -# functionality. -# Please note that the actual code of GNU gettext is covered by the GNU -# General Public License and is *not* in the public domain. - -# serial 10 - -dnl Usage: AM_WITH_NLS([TOOLSYMBOL], [NEEDSYMBOL], [LIBDIR]). -dnl If TOOLSYMBOL is specified and is 'use-libtool', then a libtool library -dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, -dnl depending on --{enable,disable}-{shared,static} and on the presence of -dnl AM-DISABLE-SHARED). Otherwise, a static library -dnl $(top_builddir)/intl/libintl.a will be created. -dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext -dnl implementations (in libc or libintl) without the ngettext() function -dnl will be ignored. -dnl LIBDIR is used to find the intl libraries. If empty, -dnl the value `$(top_builddir)/intl/' is used. -dnl -dnl The result of the configuration is one of three cases: -dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled -dnl and used. -dnl Catalog format: GNU --> install in $(datadir) -dnl Catalog extension: .mo after installation, .gmo in source tree -dnl 2) GNU gettext has been found in the system's C library. -dnl Catalog format: GNU --> install in $(datadir) -dnl Catalog extension: .mo after installation, .gmo in source tree -dnl 3) No internationalization, always use English msgid. -dnl Catalog format: none -dnl Catalog extension: none -dnl The use of .gmo is historical (it was needed to avoid overwriting the -dnl GNU format catalogs when building on a platform with an X/Open gettext), -dnl but we keep it in order not to force irrelevant filename changes on the -dnl maintainers. -dnl -AC_DEFUN([AM_WITH_NLS], - [AC_MSG_CHECKING([whether NLS is requested]) - dnl Default is enabled NLS - AC_ARG_ENABLE(nls, - [ --disable-nls do not use Native Language Support], - USE_NLS=$enableval, USE_NLS=yes) - AC_MSG_RESULT($USE_NLS) - AC_SUBST(USE_NLS) - - BUILD_INCLUDED_LIBINTL=no - USE_INCLUDED_LIBINTL=no - INTLLIBS= - - dnl If we use NLS figure out what method - if test "$USE_NLS" = "yes"; then - AC_DEFINE(ENABLE_NLS, 1, - [Define to 1 if translation of program messages to the user's native language - is requested.]) - AC_MSG_CHECKING([whether included gettext is requested]) - AC_ARG_WITH(included-gettext, - [ --with-included-gettext use the GNU gettext library included here], - nls_cv_force_use_gnu_gettext=$withval, - nls_cv_force_use_gnu_gettext=no) - AC_MSG_RESULT($nls_cv_force_use_gnu_gettext) - - nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" - if test "$nls_cv_force_use_gnu_gettext" != "yes"; then - dnl User does not insist on using GNU NLS library. Figure out what - dnl to use. If GNU gettext is available we use this. Else we have - dnl to fall back to GNU NLS library. - CATOBJEXT=NONE - - dnl Add a version number to the cache macros. - define(gt_cv_func_gnugettext_libc, [gt_cv_func_gnugettext]ifelse([$2], need-ngettext, 2, 1)[_libc]) - define(gt_cv_func_gnugettext_libintl, [gt_cv_func_gnugettext]ifelse([$2], need-ngettext, 2, 1)[_libintl]) - - AC_CHECK_HEADER(libintl.h, - [AC_CACHE_CHECK([for GNU gettext in libc], gt_cv_func_gnugettext_libc, - [AC_TRY_LINK([#include -extern int _nl_msg_cat_cntr;], - [bindtextdomain ("", ""); -return (int) gettext ("")]ifelse([$2], need-ngettext, [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr], - gt_cv_func_gnugettext_libc=yes, - gt_cv_func_gnugettext_libc=no)]) - - if test "$gt_cv_func_gnugettext_libc" != "yes"; then - AC_CACHE_CHECK([for GNU gettext in libintl], - gt_cv_func_gnugettext_libintl, - [gt_save_LIBS="$LIBS" - LIBS="$LIBS -lintl $LIBICONV" - AC_TRY_LINK([#include -extern int _nl_msg_cat_cntr;], - [bindtextdomain ("", ""); -return (int) gettext ("")]ifelse([$2], need-ngettext, [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr], - gt_cv_func_gnugettext_libintl=yes, - gt_cv_func_gnugettext_libintl=no) - LIBS="$gt_save_LIBS"]) - fi - - dnl If an already present or preinstalled GNU gettext() is found, - dnl use it. But if this macro is used in GNU gettext, and GNU - dnl gettext is already preinstalled in libintl, we update this - dnl libintl. (Cf. the install rule in intl/Makefile.in.) - if test "$gt_cv_func_gnugettext_libc" = "yes" \ - || { test "$gt_cv_func_gnugettext_libintl" = "yes" \ - && test "$PACKAGE" != gettext; }; then - AC_DEFINE(HAVE_GETTEXT, 1, - [Define if the GNU gettext() function is already present or preinstalled.]) - - if test "$gt_cv_func_gnugettext_libintl" = "yes"; then - dnl If iconv() is in a separate libiconv library, then anyone - dnl linking with libintl{.a,.so} also needs to link with - dnl libiconv. - INTLLIBS="-lintl $LIBICONV" - fi - - gt_save_LIBS="$LIBS" - LIBS="$LIBS $INTLLIBS" - AC_CHECK_FUNCS(dcgettext) - LIBS="$gt_save_LIBS" - - dnl Search for GNU msgfmt in the PATH. - AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, - [$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1], :) - AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) - - dnl Search for GNU xgettext in the PATH. - AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, - [$ac_dir/$ac_word --omit-header /dev/null >/dev/null 2>&1], :) - - CATOBJEXT=.gmo - fi - ]) - - if test "$CATOBJEXT" = "NONE"; then - dnl GNU gettext is not found in the C library. - dnl Fall back on GNU gettext library. - nls_cv_use_gnu_gettext=yes - fi - fi - - if test "$nls_cv_use_gnu_gettext" = "yes"; then - dnl Mark actions used to generate GNU NLS library. - INTLOBJS="\$(GETTOBJS)" - AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, - [$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1], :) - AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) - AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, - [$ac_dir/$ac_word --omit-header /dev/null >/dev/null 2>&1], :) - AC_SUBST(MSGFMT) - BUILD_INCLUDED_LIBINTL=yes - USE_INCLUDED_LIBINTL=yes - CATOBJEXT=.gmo - INTLLIBS="ifelse([$3],[],\$(top_builddir)/intl,[$3])/libintl.ifelse([$1], use-libtool, [l], [])a $LIBICONV" - LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` - fi - - dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. - dnl Test whether we really found GNU msgfmt. - if test "$GMSGFMT" != ":"; then - dnl If it is no GNU msgfmt we define it as : so that the - dnl Makefiles still can work. - if $GMSGFMT --statistics /dev/null >/dev/null 2>&1; then - : ; - else - AC_MSG_RESULT( - [found msgfmt program is not GNU msgfmt; ignore it]) - GMSGFMT=":" - fi - fi - - dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. - dnl Test whether we really found GNU xgettext. - if test "$XGETTEXT" != ":"; then - dnl If it is no GNU xgettext we define it as : so that the - dnl Makefiles still can work. - if $XGETTEXT --omit-header /dev/null >/dev/null 2>&1; then - : ; - else - AC_MSG_RESULT( - [found xgettext program is not GNU xgettext; ignore it]) - XGETTEXT=":" - fi - fi - - dnl We need to process the po/ directory. - POSUB=po - fi - AC_OUTPUT_COMMANDS( - [for ac_file in $CONFIG_FILES; do - # Support "outfile[:infile[:infile...]]" - case "$ac_file" in - *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - esac - # PO directories have a Makefile.in generated from Makefile.in.in. - case "$ac_file" in */Makefile.in) - # Adjust a relative srcdir. - ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` - ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" - ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` - # In autoconf-2.13 it is called $ac_given_srcdir. - # In autoconf-2.50 it is called $srcdir. - test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" - case "$ac_given_srcdir" in - .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; - /*) top_srcdir="$ac_given_srcdir" ;; - *) top_srcdir="$ac_dots$ac_given_srcdir" ;; - esac - if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then - rm -f "$ac_dir/POTFILES" - test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" - sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," -e "\$s/\(.*\) \\\\/\1/" < "$ac_given_srcdir/$ac_dir/POTFILES.in" > "$ac_dir/POTFILES" - test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" - sed -e "/POTFILES =/r $ac_dir/POTFILES" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" - fi - ;; - esac - done]) - - - dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL - dnl to 'yes' because some of the testsuite requires it. - if test "$PACKAGE" = gettext; then - BUILD_INCLUDED_LIBINTL=yes - fi - - dnl intl/plural.c is generated from intl/plural.y. It requires bison, - dnl because plural.y uses bison specific features. It requires at least - dnl bison-1.26 because earlier versions generate a plural.c that doesn't - dnl compile. - dnl bison is only needed for the maintainer (who touches plural.y). But in - dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put - dnl the rule in general Makefile. Now, some people carelessly touch the - dnl files or have a broken "make" program, hence the plural.c rule will - dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not - dnl present or too old. - AC_CHECK_PROGS([INTLBISON], [bison]) - if test -z "$INTLBISON"; then - ac_verc_fail=yes - else - dnl Found it, now check the version. - AC_MSG_CHECKING([version of bison]) -changequote(<<,>>)dnl - ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison .* \([0-9]*\.[0-9.]*\).*$/\1/p'` - case $ac_prog_version in - '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; - 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) -changequote([,])dnl - ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; - *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; - esac - AC_MSG_RESULT([$ac_prog_version]) - fi - if test $ac_verc_fail = yes; then - INTLBISON=: - fi - - dnl These rules are solely for the distribution goal. While doing this - dnl we only have to keep exactly one list of the available catalogs - dnl in configure.in. - for lang in $ALL_LINGUAS; do - GMOFILES="$GMOFILES $lang.gmo" - POFILES="$POFILES $lang.po" - done - - dnl Make all variables we use known to autoconf. - AC_SUBST(BUILD_INCLUDED_LIBINTL) - AC_SUBST(USE_INCLUDED_LIBINTL) - AC_SUBST(CATALOGS) - AC_SUBST(CATOBJEXT) - AC_SUBST(GMOFILES) - AC_SUBST(INTLLIBS) - AC_SUBST(INTLOBJS) - AC_SUBST(POFILES) - AC_SUBST(POSUB) - - dnl For backward compatibility. Some configure.ins may be using this. - nls_cv_header_intl= - nls_cv_header_libgt= - - dnl For backward compatibility. Some Makefiles may be using this. - DATADIRNAME=share - AC_SUBST(DATADIRNAME) - - dnl For backward compatibility. Some Makefiles may be using this. - INSTOBJEXT=.mo - AC_SUBST(INSTOBJEXT) - - dnl For backward compatibility. Some Makefiles may be using this. - GENCAT=gencat - AC_SUBST(GENCAT) - ]) - -dnl Usage: Just like AM_WITH_NLS, which see. -AC_DEFUN([AM_GNU_GETTEXT], - [AC_REQUIRE([AC_PROG_MAKE_SET])dnl - AC_REQUIRE([AC_PROG_CC])dnl - AC_REQUIRE([AC_CANONICAL_HOST])dnl - AC_REQUIRE([AC_PROG_RANLIB])dnl - AC_REQUIRE([AC_ISC_POSIX])dnl - AC_REQUIRE([AC_HEADER_STDC])dnl - AC_REQUIRE([AC_C_CONST])dnl - AC_REQUIRE([AC_C_INLINE])dnl - AC_REQUIRE([AC_TYPE_OFF_T])dnl - AC_REQUIRE([AC_TYPE_SIZE_T])dnl - AC_REQUIRE([AC_FUNC_ALLOCA])dnl - AC_REQUIRE([AC_FUNC_MMAP])dnl - AC_REQUIRE([jm_GLIBC21])dnl - - AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ -stdlib.h string.h unistd.h sys/param.h]) - AC_CHECK_FUNCS([feof_unlocked fgets_unlocked getcwd getegid geteuid \ -getgid getuid mempcpy munmap putenv setenv setlocale stpcpy strchr strcasecmp \ -strdup strtoul tsearch __argz_count __argz_stringify __argz_next]) - - AM_ICONV - AM_LANGINFO_CODESET - AM_LC_MESSAGES - AM_WITH_NLS([$1],[$2],[$3]) - - if test "x$CATOBJEXT" != "x"; then - if test "x$ALL_LINGUAS" = "x"; then - LINGUAS= - else - AC_MSG_CHECKING(for catalogs to be installed) - NEW_LINGUAS= - for presentlang in $ALL_LINGUAS; do - useit=no - for desiredlang in ${LINGUAS-$ALL_LINGUAS}; do - # Use the presentlang catalog if desiredlang is - # a. equal to presentlang, or - # b. a variant of presentlang (because in this case, - # presentlang can be used as a fallback for messages - # which are not translated in the desiredlang catalog). - case "$desiredlang" in - "$presentlang"*) useit=yes;; - esac - done - if test $useit = yes; then - NEW_LINGUAS="$NEW_LINGUAS $presentlang" - fi - done - LINGUAS=$NEW_LINGUAS - AC_MSG_RESULT($LINGUAS) - fi - - dnl Construct list of names of catalog files to be constructed. - if test -n "$LINGUAS"; then - for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done - fi - fi - - dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly - dnl find the mkinstalldirs script in another subdir but $(top_srcdir). - dnl Try to locate is. - MKINSTALLDIRS= - if test -n "$ac_aux_dir"; then - MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" - fi - if test -z "$MKINSTALLDIRS"; then - MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" - fi - AC_SUBST(MKINSTALLDIRS) - - dnl Enable libtool support if the surrounding package wishes it. - INTL_LIBTOOL_SUFFIX_PREFIX=ifelse([$1], use-libtool, [l], []) - AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX) - ]) diff --git a/m4/inttypes.m4 b/m4/inttypes.m4 deleted file mode 100644 index 9571814f..00000000 --- a/m4/inttypes.m4 +++ /dev/null @@ -1,32 +0,0 @@ -#serial 6 - -dnl From Paul Eggert. - -AC_PREREQ(2.52) - -# Define intmax_t to long or long long if doesn't define. - -AC_DEFUN([jm_AC_TYPE_INTMAX_T], -[ - AC_REQUIRE([jm_AC_TYPE_LONG_LONG]) - AC_CHECK_TYPE(intmax_t, , - [test $ac_cv_type_long_long = yes \ - && ac_type='long long' \ - || ac_type='long' - AC_DEFINE_UNQUOTED(intmax_t, $ac_type, - [Define to widest signed type if doesn't define.])]) -]) - -# Define uintmax_t to unsigned long or unsigned long long -# if doesn't define. - -AC_DEFUN([jm_AC_TYPE_UINTMAX_T], -[ - AC_REQUIRE([jm_AC_TYPE_UNSIGNED_LONG_LONG]) - AC_CHECK_TYPE(uintmax_t, , - [test $ac_cv_type_unsigned_long_long = yes \ - && ac_type='unsigned long long' \ - || ac_type='unsigned long' - AC_DEFINE_UNQUOTED(uintmax_t, $ac_type, - [Define to widest unsigned type if doesn't define.])]) -]) diff --git a/m4/mbrtowc.m4 b/m4/mbrtowc.m4 deleted file mode 100644 index f15bb221..00000000 --- a/m4/mbrtowc.m4 +++ /dev/null @@ -1,19 +0,0 @@ -#serial 1 - -dnl From Paul Eggert - -AC_DEFUN(jm_FUNC_MBRTOWC, -[ - AC_MSG_CHECKING([whether mbrtowc and mbstate_t are properly declared]) - AC_CACHE_VAL(jm_cv_func_mbrtowc, - [AC_TRY_LINK( - [#include ], - [mbstate_t state; return ! (sizeof state && mbrtowc);], - [jm_cv_func_mbrtowc=yes], - [jm_cv_func_mbrtowc=no])]) - if test $jm_cv_func_mbrtowc = yes; then - AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_MBRTOWC, 1, - [Define to 1 if mbrtowc and mbstate_t are properly declared.]) - fi -]) diff --git a/m4/mbstate_t.m4 b/m4/mbstate_t.m4 deleted file mode 100644 index ae2bcf1e..00000000 --- a/m4/mbstate_t.m4 +++ /dev/null @@ -1,29 +0,0 @@ -# serial 9 - -# From Paul Eggert. - -# BeOS 5 has but does not define mbstate_t, -# so you can't declare an object of that type. -# Check for this incompatibility with Standard C. - -# Include stdlib.h first, because otherwise this test would fail on Linux -# (at least glibc-2.1.3) because the "_XOPEN_SOURCE 500" definition elicits -# a syntax error in wchar.h due to the use of undefined __int32_t. - -AC_DEFUN([AC_MBSTATE_T], - [ - AC_CHECK_HEADERS(stdlib.h) - - AC_CACHE_CHECK([for mbstate_t], ac_cv_type_mbstate_t, - [AC_TRY_COMPILE([ -#if HAVE_STDLIB_H -# include -#endif -#include ], - [mbstate_t x; return sizeof x;], - ac_cv_type_mbstate_t=yes, - ac_cv_type_mbstate_t=no)]) - if test $ac_cv_type_mbstate_t = no; then - AC_DEFINE(mbstate_t, int, - [Define to a type if does not define.]) - fi]) diff --git a/m4/prereq.m4 b/m4/prereq.m4 deleted file mode 100644 index d1f8a1d4..00000000 --- a/m4/prereq.m4 +++ /dev/null @@ -1,141 +0,0 @@ -#serial 21 - -dnl These are the prerequisite macros for files in the lib/ -dnl directories of the fileutils, sh-utils, and textutils packages. - -AC_DEFUN([jm_PREREQ], -[ - jm_PREREQ_ADDEXT - jm_PREREQ_CANON_HOST - jm_PREREQ_DIRNAME - jm_PREREQ_ERROR - jm_PREREQ_EXCLUDE - jm_PREREQ_GETPAGESIZE - jm_PREREQ_HASH - jm_PREREQ_HUMAN - jm_PREREQ_MBSWIDTH - jm_PREREQ_MEMCHR - jm_PREREQ_QUOTEARG - jm_PREREQ_READUTMP - jm_PREREQ_REGEX - jm_PREREQ_TEMPNAME # called by mkstemp -]) - -AC_DEFUN([jm_PREREQ_ADDEXT], -[ - dnl For addext.c. - AC_SYS_LONG_FILE_NAMES - AC_CHECK_FUNCS(pathconf) - AC_CHECK_HEADERS(limits.h string.h unistd.h) -]) - -AC_DEFUN([jm_PREREQ_CANON_HOST], -[ - dnl Add any libraries as early as possible. - dnl In particular, inet_ntoa needs -lnsl at least on Solaris5.5.1, - dnl so we have to add -lnsl to LIBS before checking for that function. - AC_SEARCH_LIBS(gethostbyname, [inet nsl]) - - dnl These come from -lnsl on Solaris5.5.1. - AC_CHECK_FUNCS(gethostbyname gethostbyaddr inet_ntoa) - - AC_CHECK_FUNCS(gethostbyname gethostbyaddr inet_ntoa) - AC_CHECK_HEADERS(unistd.h string.h netdb.h sys/socket.h \ - netinet/in.h arpa/inet.h) -]) - -AC_DEFUN([jm_PREREQ_DIRNAME], -[ - AC_HEADER_STDC - AC_CHECK_HEADERS(string.h) -]) - -AC_DEFUN([jm_PREREQ_EXCLUDE], -[ - jm_FUNC_FNMATCH - AC_CHECK_HEADERS(stdbool.h) -]) - -AC_DEFUN([jm_PREREQ_GETPAGESIZE], -[ - AC_CHECK_FUNCS(getpagesize) - AC_CHECK_HEADERS(OS.h unistd.h) -]) - -AC_DEFUN([jm_PREREQ_HASH], -[ - AC_CHECK_HEADERS(stdlib.h stdbool.h) - AC_REQUIRE([jm_CHECK_DECLS]) -]) - -# If you use human.c, you need the following files: -# inttypes.m4 ulonglong.m4 -AC_DEFUN([jm_PREREQ_HUMAN], -[ - AC_CHECK_HEADERS(limits.h stdlib.h string.h) - AC_CHECK_DECLS([getenv]) - AC_REQUIRE([jm_AC_TYPE_UINTMAX_T]) -]) - -AC_DEFUN([jm_PREREQ_MEMCHR], -[ - AC_CHECK_HEADERS(limits.h stdlib.h bp-sym.h) -]) - -AC_DEFUN([jm_PREREQ_QUOTEARG], -[ - AC_CHECK_FUNCS(isascii iswprint) - jm_FUNC_MBRTOWC - AC_CHECK_HEADERS(limits.h stddef.h stdlib.h string.h wchar.h wctype.h) - AC_HEADER_STDC - AC_C_BACKSLASH_A - AC_MBSTATE_T - AM_C_PROTOTYPES -]) - -AC_DEFUN([jm_PREREQ_READUTMP], -[ - AC_HEADER_STDC - AC_CHECK_HEADERS(string.h utmp.h utmpx.h sys/param.h) - AC_CHECK_FUNCS(utmpname) - AC_CHECK_FUNCS(utmpxname) - AM_C_PROTOTYPES - - if test $ac_cv_header_utmp_h = yes || test $ac_cv_header_utmpx_h = yes; then - utmp_includes="\ -$ac_includes_default -#ifdef HAVE_UTMPX_H -# include -#endif -#ifdef HAVE_UTMP_H -# include -#endif -" - AC_CHECK_MEMBERS([struct utmpx.ut_user],,,[$utmp_includes]) - AC_CHECK_MEMBERS([struct utmp.ut_user],,,[$utmp_includes]) - AC_CHECK_MEMBERS([struct utmpx.ut_name],,,[$utmp_includes]) - AC_CHECK_MEMBERS([struct utmp.ut_name],,,[$utmp_includes]) - AC_CHECK_MEMBERS([struct utmpx.ut_type],,,[$utmp_includes]) - AC_CHECK_MEMBERS([struct utmp.ut_type],,,[$utmp_includes]) - AC_LIBOBJ(readutmp) - fi -]) - -AC_DEFUN([jm_PREREQ_REGEX], -[ - dnl FIXME: Maybe provide a btowc replacement someday: solaris-2.5.1 lacks it. - dnl FIXME: Check for wctype and iswctype, and and add -lw if necessary - dnl to get them. - AC_CHECK_FUNCS(bzero bcopy isascii btowc) - AC_CHECK_HEADERS(alloca.h libintl.h wctype.h wchar.h) - AC_HEADER_STDC - AC_FUNC_ALLOCA -]) - -AC_DEFUN([jm_PREREQ_TEMPNAME], -[ - AC_HEADER_STDC - AC_HEADER_STAT - AC_CHECK_HEADERS(fcntl.h sys/time.h stdint.h unistd.h) - AC_CHECK_FUNCS(__secure_getenv gettimeofday) -]) diff --git a/m4/strerror_r.m4 b/m4/strerror_r.m4 deleted file mode 100644 index 47e55079..00000000 --- a/m4/strerror_r.m4 +++ /dev/null @@ -1,66 +0,0 @@ -#serial 1002 -# Experimental replacement for the function in the latest CVS autoconf. -# If the compile-test says strerror_r doesn't work, then resort to a -# `run'-test that works on BeOS and segfaults on DEC Unix. -# Use with the error.c file in ../lib. - -undefine([AC_FUNC_STRERROR_R]) - -# AC_FUNC_STRERROR_R -# ------------------ -AC_DEFUN([AC_FUNC_STRERROR_R], -[AC_CHECK_DECLS([strerror_r]) -AC_CHECK_FUNCS([strerror_r]) -if test $ac_cv_func_strerror_r = yes; then - AC_CHECK_HEADERS(string.h) - AC_CACHE_CHECK([for working strerror_r], - ac_cv_func_strerror_r_works, - [ - AC_TRY_COMPILE( - [ -# include -# if HAVE_STRING_H -# include -# endif - ], - [ - char buf[100]; - char x = *strerror_r (0, buf, sizeof buf); - ], - ac_cv_func_strerror_r_works=yes, - ac_cv_func_strerror_r_works=no - ) - if test $ac_cv_func_strerror_r_works = no; then - # strerror_r seems not to work, but now we have to choose between - # systems that have relatively inaccessible declarations for the - # function. BeOS and DEC UNIX 4.0 fall in this category, but the - # former has a strerror_r that returns char*, while the latter - # has a strerror_r that returns `int'. - # This test should segfault on the DEC system. - AC_TRY_RUN( - [ -# include -# include -# include - - extern char *strerror_r (); - - int - main () - { - char buf[100]; - char x = *strerror_r (0, buf, sizeof buf); - exit (!isalpha (x)); - } - ], - ac_cv_func_strerror_r_works=yes, - ac_cv_func_strerror_r_works=no, - ac_cv_func_strerror_r_works=no) - fi - ]) - if test $ac_cv_func_strerror_r_works = yes; then - AC_DEFINE(HAVE_WORKING_STRERROR_R, 1, - [Define to 1 if `strerror_r' returns a string.]) - fi -fi -])# AC_FUNC_STRERROR_R diff --git a/m4/uintmax_t.m4 b/m4/uintmax_t.m4 deleted file mode 100644 index d045353a..00000000 --- a/m4/uintmax_t.m4 +++ /dev/null @@ -1,19 +0,0 @@ -#serial 6 - -dnl From Paul Eggert. - -AC_PREREQ(2.50) - -# Define uintmax_t to `unsigned long' or `unsigned long long' -# if does not exist. - -AC_DEFUN([jm_AC_TYPE_UINTMAX_T], -[ - AC_CHECK_TYPE(uintmax_t, , - [AC_REQUIRE([jm_AC_TYPE_UNSIGNED_LONG_LONG]) - test $ac_cv_type_unsigned_long_long = yes \ - && ac_type='unsigned long long' \ - || ac_type='unsigned long' - AC_DEFINE_UNQUOTED(uintmax_t, $ac_type, - [Define to the widest unsigned type if standard headers do not declare.])]) -]) diff --git a/m4/xstrtoimax.m4 b/m4/xstrtoimax.m4 deleted file mode 100644 index 438e8528..00000000 --- a/m4/xstrtoimax.m4 +++ /dev/null @@ -1,41 +0,0 @@ -#serial 2 -dnl Cloned from xstrtoumax.m4. Keep these files in sync. - -# autoconf tests required for use of xstrtoimax.c - -AC_DEFUN([jm_AC_PREREQ_XSTRTOIMAX], -[ - AC_REQUIRE([jm_AC_TYPE_INTMAX_T]) - AC_REQUIRE([jm_AC_TYPE_UINTMAX_T]) - AC_REQUIRE([jm_AC_TYPE_LONG_LONG]) - AC_REQUIRE([jm_AC_TYPE_UNSIGNED_LONG_LONG]) - AC_CHECK_DECLS([strtol, strtoul, strtoll, strtoimax, strtoumax]) - AC_CHECK_HEADERS(limits.h stdlib.h inttypes.h) - - AC_CACHE_CHECK([whether defines strtoimax as a macro], - jm_cv_func_strtoimax_macro, - AC_EGREP_CPP([inttypes_h_defines_strtoimax], [#include -#ifdef strtoimax - inttypes_h_defines_strtoimax -#endif], - jm_cv_func_strtoimax_macro=yes, - jm_cv_func_strtoimax_macro=no)) - - if test "$jm_cv_func_strtoimax_macro" != yes; then - AC_REPLACE_FUNCS(strtoimax) - fi - - dnl Only the replacement strtoimax invokes strtol and strtoll, - dnl so we need the replacements only if strtoimax does not exist. - case "$jm_cv_func_strtoimax_macro,$ac_cv_func_strtoimax" in - no,no) - AC_REPLACE_FUNCS(strtol) - - dnl We don't need (and can't compile) the replacement strtoll - dnl unless the type `long long' exists. - if test "$ac_cv_type_long_long" = yes; then - AC_REPLACE_FUNCS(strtoll) - fi - ;; - esac -]) diff --git a/m4/xstrtoumax.m4 b/m4/xstrtoumax.m4 deleted file mode 100644 index 9ab71ec6..00000000 --- a/m4/xstrtoumax.m4 +++ /dev/null @@ -1,40 +0,0 @@ -#serial 4 - -# autoconf tests required for use of xstrtoumax.c - -AC_DEFUN([jm_AC_PREREQ_XSTRTOUMAX], -[ - AC_REQUIRE([jm_AC_TYPE_INTMAX_T]) - AC_REQUIRE([jm_AC_TYPE_UINTMAX_T]) - AC_REQUIRE([jm_AC_TYPE_LONG_LONG]) - AC_REQUIRE([jm_AC_TYPE_UNSIGNED_LONG_LONG]) - AC_CHECK_DECLS([strtol, strtoul, strtoull, strtoimax, strtoumax]) - AC_CHECK_HEADERS(limits.h stdlib.h inttypes.h) - - AC_CACHE_CHECK([whether defines strtoumax as a macro], - jm_cv_func_strtoumax_macro, - AC_EGREP_CPP([inttypes_h_defines_strtoumax], [#include -#ifdef strtoumax - inttypes_h_defines_strtoumax -#endif], - jm_cv_func_strtoumax_macro=yes, - jm_cv_func_strtoumax_macro=no)) - - if test "$jm_cv_func_strtoumax_macro" != yes; then - AC_REPLACE_FUNCS(strtoumax) - fi - - dnl Only the replacement strtoumax invokes strtoul and strtoull, - dnl so we need the replacements only if strtoumax does not exist. - case "$jm_cv_func_strtoumax_macro,$ac_cv_func_strtoumax" in - no,no) - AC_REPLACE_FUNCS(strtoul) - - dnl We don't need (and can't compile) the replacement strtoull - dnl unless the type `unsigned long long' exists. - if test "$ac_cv_type_unsigned_long_long" = yes; then - AC_REPLACE_FUNCS(strtoull) - fi - ;; - esac -]) diff --git a/po/.gitignore b/po/.gitignore new file mode 100644 index 00000000..0b73ada1 --- /dev/null +++ b/po/.gitignore @@ -0,0 +1,22 @@ +*.gmo +*.mo +*.po +.reference +LINGUAS +Makefile +Makefile.in +Makefile.in.in +Makevars +Makevars.template +POTFILES +Rules-quot +boldquot.sed +en@boldquot.header +en@quot.header +insert-header.sed +insert-header.sin +quot.sed +remove-potcdate.sed +remove-potcdate.sin +stamp-po +tar.pot diff --git a/po/Makefile.in.in b/po/Makefile.in.in deleted file mode 100644 index b910b4a9..00000000 --- a/po/Makefile.in.in +++ /dev/null @@ -1,196 +0,0 @@ -# Makefile for program source directory in GNU NLS utilities package. -# Copyright (C) 1995-1997, 2000, 2001 by Ulrich Drepper -# -# This file can be copied and used freely without restrictions. It can -# be used in projects which are not available under the GNU Public License -# but which still want to provide support for the GNU gettext functionality. -# Please note that the actual code is *not* freely available. - -PACKAGE = @PACKAGE@ -VERSION = @VERSION@ - -# These two variables depend on the location of this directory. -subdir = po -top_builddir = .. - -SHELL = /bin/sh -@SET_MAKE@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ - -prefix = @prefix@ -exec_prefix = @exec_prefix@ -datadir = @datadir@ -localedir = $(datadir)/locale -gettextsrcdir = $(datadir)/gettext/po - -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -MKINSTALLDIRS = @MKINSTALLDIRS@ -mkinstalldirs = $(SHELL) `case "$(MKINSTALLDIRS)" in /*) echo "$(MKINSTALLDIRS)" ;; *) echo "$(top_builddir)/$(MKINSTALLDIRS)" ;; esac` - -CC = @CC@ -GMSGFMT = @GMSGFMT@ -MSGFMT = @MSGFMT@ -XGETTEXT = @XGETTEXT@ -MSGMERGE = msgmerge - -DEFS = @DEFS@ -CFLAGS = @CFLAGS@ -CPPFLAGS = @CPPFLAGS@ - -INCLUDES = -I.. -I$(top_srcdir)/intl - -COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) - -POFILES = @POFILES@ -GMOFILES = @GMOFILES@ -DISTFILES = ChangeLog Makefile.in.in POTFILES.in $(PACKAGE).pot \ -$(POFILES) $(GMOFILES) - -POTFILES = \ - -CATALOGS = @CATALOGS@ - -.SUFFIXES: -.SUFFIXES: .c .o .po .pox .gmo .mo - -.c.o: - $(COMPILE) $< - -.po.pox: - $(MAKE) $(PACKAGE).pot - $(MSGMERGE) $< $(srcdir)/$(PACKAGE).pot -o $*.pox - -.po.mo: - $(MSGFMT) -o $@ $< - -.po.gmo: - file=$(srcdir)/`echo $* | sed 's,.*/,,'`.gmo \ - && rm -f $$file && $(GMSGFMT) --statistics -o $$file $< - - -all: all-@USE_NLS@ - -all-yes: $(CATALOGS) -all-no: - -# Note: Target 'all' must not depend on target '$(srcdir)/$(PACKAGE).pot', -# otherwise packages like GCC can not be built if only parts of the source -# have been downloaded. - -$(srcdir)/$(PACKAGE).pot: $(POTFILES) $(srcdir)/POTFILES.in - $(XGETTEXT) --default-domain=$(PACKAGE) --directory=$(top_srcdir) \ - --add-comments --keyword=_ --keyword=N_ \ - --files-from=$(srcdir)/POTFILES.in \ - && test ! -f $(PACKAGE).po \ - || ( rm -f $(srcdir)/$(PACKAGE).pot \ - && mv $(PACKAGE).po $(srcdir)/$(PACKAGE).pot ) - - -install: install-exec install-data -install-exec: -install-data: install-data-@USE_NLS@ - if test "$(PACKAGE)" = "gettext"; then \ - $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ - $(INSTALL_DATA) $(srcdir)/Makefile.in.in \ - $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \ - else \ - : ; \ - fi -install-data-no: all -install-data-yes: all - $(mkinstalldirs) $(DESTDIR)$(datadir) - @catalogs='$(CATALOGS)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ - lang=`echo $$cat | sed 's/\.gmo$$//'`; \ - dir=$(localedir)/$$lang/LC_MESSAGES; \ - $(mkinstalldirs) $(DESTDIR)$$dir; \ - if test -r $$cat; then \ - $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \ - echo "installing $$cat as $(DESTDIR)$$dir/$(PACKAGE).mo"; \ - else \ - $(INSTALL_DATA) $(srcdir)/$$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \ - echo "installing $(srcdir)/$$cat as" \ - "$(DESTDIR)$$dir/$(PACKAGE).mo"; \ - fi; \ - done - -# Define this as empty until I found a useful application. -installcheck: - -uninstall: - catalogs='$(CATALOGS)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ - lang=`echo $$cat | sed 's/\.gmo$$//'`; \ - rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(PACKAGE).mo; \ - done - if test "$(PACKAGE)" = "gettext"; then \ - rm -f $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \ - else \ - : ; \ - fi - -check: all - -dvi info tags TAGS ID: - -mostlyclean: - rm -f core core.* *.pox $(PACKAGE).po *.new.po - rm -fr *.o - -clean: mostlyclean - -distclean: clean - rm -f Makefile Makefile.in POTFILES *.mo - -maintainer-clean: distclean - @echo "This command is intended for maintainers to use;" - @echo "it deletes files that may require special tools to rebuild." - rm -f $(GMOFILES) - -distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) -dist distdir: - $(MAKE) update-po - @$(MAKE) dist2 -# This is a separate target because 'update-po' must be executed before. -dist2: $(DISTFILES) - dists="$(DISTFILES)"; \ - for file in $$dists; do \ - if test -f $$file; then dir=.; else dir=$(srcdir); fi; \ - cp -p $$dir/$$file $(distdir); \ - done - -update-po: Makefile - $(MAKE) $(PACKAGE).pot - if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; fi; \ - cd $(srcdir); \ - catalogs='$(GMOFILES)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ - lang=`echo $$cat | sed 's/\.gmo$$//'`; \ - echo "$$lang:"; \ - if $(MSGMERGE) $$lang.po $(PACKAGE).pot -o $$lang.new.po; then \ - mv -f $$lang.new.po $$lang.po; \ - else \ - echo "msgmerge for $$cat failed!"; \ - rm -f $$lang.new.po; \ - fi; \ - done - $(MAKE) update-gmo - -update-gmo: Makefile $(GMOFILES) - @: - -Makefile: Makefile.in.in $(top_builddir)/config.status POTFILES.in - cd $(top_builddir) \ - && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \ - $(SHELL) ./config.status - -# Tell versions [3.59,3.63) of GNU make not to export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/po/POTFILES.in b/po/POTFILES.in index bcf24017..cd48b268 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -19,26 +19,27 @@ # 02110-1301, USA. # Library files -lib/argmatch.c -lib/argp-help.c -lib/argp-parse.c -lib/closeout.c -lib/error.c -lib/getopt.c -lib/obstack.c -lib/human.c -lib/obstack.c -lib/openat-die.c +gnu/argmatch.c +gnu/argp-help.c +gnu/argp-parse.c +gnu/closeout.c +gnu/error.c +gnu/getopt.c +gnu/obstack.c +gnu/human.c +gnu/obstack.c +gnu/openat-die.c +gnu/quotearg.c +gnu/rpmatch.c +gnu/xalloc-die.c +gnu/xmalloc.c +gnu/version-etc.c +gnu/xalloc-die.c + lib/paxerror.c lib/paxexit.c lib/paxnames.c -lib/quotearg.c -lib/rpmatch.c lib/rtapelib.c -lib/xalloc-die.c -lib/xmalloc.c -lib/version-etc.c -lib/xalloc-die.c rmt/rmt.c diff --git a/scripts/.cvsignore b/scripts/.cvsignore deleted file mode 100644 index c8d103d2..00000000 --- a/scripts/.cvsignore +++ /dev/null @@ -1,6 +0,0 @@ -Makefile.in -Makefile -backup.sh -backup -restore -dump-remind diff --git a/src/.cvsignore b/src/.cvsignore deleted file mode 100644 index 7ff92e4b..00000000 --- a/src/.cvsignore +++ /dev/null @@ -1,6 +0,0 @@ -.deps -.gdbinit -Makefile -Makefile.in -rmt -tar diff --git a/src/.gitignore b/src/.gitignore new file mode 100644 index 00000000..42f2fb72 --- /dev/null +++ b/src/.gitignore @@ -0,0 +1 @@ +tar diff --git a/src/Makefile.am b/src/Makefile.am index c22a568a..77774056 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,7 +1,7 @@ # Makefile for GNU tar sources. # Copyright (C) 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2003, 2006, -# 2007 Free Software Foundation, Inc. +# 2007, 2009 Free Software Foundation, Inc. ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by @@ -41,8 +41,8 @@ tar_SOURCES = \ update.c\ utf8.c -INCLUDES = -I$(top_srcdir)/lib -I../ -I../lib +INCLUDES = -I$(top_srcdir)/gnu -I../ -I../gnu -I$(top_srcdir)/lib -LDADD = ../lib/libtar.a $(LIBINTL) $(LIBICONV) +LDADD = ../lib/libtar.a ../gnu/libgnu.a $(LIBINTL) $(LIBICONV) tar_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) diff --git a/src/Makefile.in b/src/Makefile.in index f65f9f7a..213bb3c4 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -1,201 +1,973 @@ -# Un*x Makefile for GNU tar program. -# Copyright (C) 1991, 1992, 1993 Free Software Foundation, Inc. +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# @configure_input@ -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +@SET_MAKE@ -#### Start of system configuration section. #### +# Makefile for GNU tar sources. -srcdir = @srcdir@ -VPATH = @srcdir@ +# Copyright (C) 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2003, 2006, +# 2007, 2009 Free Software Foundation, Inc. -# If you use gcc, you should either run the fixincludes script that -# comes with it or else use gcc with the -traditional option. Otherwise -# ioctl calls will be compiled incorrectly on some systems. + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +bin_PROGRAMS = tar$(EXEEXT) +subdir = src +DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in ansi2knr.1 ansi2knr.c +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \ + $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/argmatch.m4 \ + $(top_srcdir)/m4/argp.m4 $(top_srcdir)/m4/backupfile.m4 \ + $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/btowc.m4 \ + $(top_srcdir)/m4/canonicalize-lgpl.m4 \ + $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/chown.m4 \ + $(top_srcdir)/m4/clock_time.m4 \ + $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/close.m4 \ + $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \ + $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/dirent_h.m4 \ + $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \ + $(top_srcdir)/m4/dos.m4 $(top_srcdir)/m4/double-slash-root.m4 \ + $(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \ + $(top_srcdir)/m4/environ.m4 $(top_srcdir)/m4/errno_h.m4 \ + $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/exclude.m4 \ + $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \ + $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fclose.m4 \ + $(top_srcdir)/m4/fcntl-safer.m4 $(top_srcdir)/m4/fcntl_h.m4 \ + $(top_srcdir)/m4/fileblocks.m4 $(top_srcdir)/m4/float_h.m4 \ + $(top_srcdir)/m4/fnmatch.m4 $(top_srcdir)/m4/fpending.m4 \ + $(top_srcdir)/m4/fseeko.m4 $(top_srcdir)/m4/ftruncate.m4 \ + $(top_srcdir)/m4/getcwd-abort-bug.m4 \ + $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \ + $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \ + $(top_srcdir)/m4/getline.m4 $(top_srcdir)/m4/getopt.m4 \ + $(top_srcdir)/m4/getpagesize.m4 $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \ + $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/gnulib-common.m4 \ + $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/hash.m4 \ + $(top_srcdir)/m4/human.m4 $(top_srcdir)/m4/iconv.m4 \ + $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inline.m4 \ + $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intmax_t.m4 \ + $(top_srcdir)/m4/inttostr.m4 $(top_srcdir)/m4/inttypes-pri.m4 \ + $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \ + $(top_srcdir)/m4/lchown.m4 $(top_srcdir)/m4/lib-ld.m4 \ + $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ + $(top_srcdir)/m4/localcharset.m4 $(top_srcdir)/m4/locale-fr.m4 \ + $(top_srcdir)/m4/locale-ja.m4 $(top_srcdir)/m4/locale-zh.m4 \ + $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/lseek.m4 \ + $(top_srcdir)/m4/lstat.m4 $(top_srcdir)/m4/malloc.m4 \ + $(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/mbchar.m4 \ + $(top_srcdir)/m4/mbiter.m4 $(top_srcdir)/m4/mbrtowc.m4 \ + $(top_srcdir)/m4/mbscasecmp.m4 $(top_srcdir)/m4/mbsinit.m4 \ + $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mempcpy.m4 \ + $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/mkdtemp.m4 \ + $(top_srcdir)/m4/mktime.m4 $(top_srcdir)/m4/modechange.m4 \ + $(top_srcdir)/m4/multiarch.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/open.m4 $(top_srcdir)/m4/openat.m4 \ + $(top_srcdir)/m4/pathmax.m4 $(top_srcdir)/m4/paxutils.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/printf.m4 \ + $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/quote.m4 \ + $(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/rawmemchr.m4 \ + $(top_srcdir)/m4/readlink.m4 $(top_srcdir)/m4/realloc.m4 \ + $(top_srcdir)/m4/regex.m4 $(top_srcdir)/m4/rmt.m4 \ + $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/rtapelib.m4 \ + $(top_srcdir)/m4/safe-read.m4 $(top_srcdir)/m4/safe-write.m4 \ + $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \ + $(top_srcdir)/m4/setenv.m4 $(top_srcdir)/m4/size_max.m4 \ + $(top_srcdir)/m4/sleep.m4 $(top_srcdir)/m4/snprintf.m4 \ + $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/stat-time.m4 \ + $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \ + $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \ + $(top_srcdir)/m4/stdio_h.m4 $(top_srcdir)/m4/stdlib_h.m4 \ + $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcase.m4 \ + $(top_srcdir)/m4/strchrnul.m4 $(top_srcdir)/m4/strdup.m4 \ + $(top_srcdir)/m4/strerror.m4 $(top_srcdir)/m4/string_h.m4 \ + $(top_srcdir)/m4/strings_h.m4 $(top_srcdir)/m4/strndup.m4 \ + $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtoimax.m4 \ + $(top_srcdir)/m4/strtol.m4 $(top_srcdir)/m4/strtoll.m4 \ + $(top_srcdir)/m4/strtoul.m4 $(top_srcdir)/m4/strtoull.m4 \ + $(top_srcdir)/m4/strtoumax.m4 $(top_srcdir)/m4/sys_stat_h.m4 \ + $(top_srcdir)/m4/sys_time_h.m4 $(top_srcdir)/m4/sysexits.m4 \ + $(top_srcdir)/m4/system.m4 $(top_srcdir)/m4/tempname.m4 \ + $(top_srcdir)/m4/time_h.m4 $(top_srcdir)/m4/time_r.m4 \ + $(top_srcdir)/m4/timespec.m4 $(top_srcdir)/m4/tm_gmtoff.m4 \ + $(top_srcdir)/m4/unistd-safer.m4 $(top_srcdir)/m4/unistd_h.m4 \ + $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \ + $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \ + $(top_srcdir)/m4/utimens.m4 $(top_srcdir)/m4/utimes-null.m4 \ + $(top_srcdir)/m4/utimes.m4 $(top_srcdir)/m4/vasnprintf.m4 \ + $(top_srcdir)/m4/vsnprintf.m4 $(top_srcdir)/m4/wchar.m4 \ + $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wcrtomb.m4 \ + $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wcwidth.m4 \ + $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/write.m4 \ + $(top_srcdir)/m4/xalloc.m4 $(top_srcdir)/m4/xgetcwd.m4 \ + $(top_srcdir)/m4/xsize.m4 $(top_srcdir)/m4/xstrndup.m4 \ + $(top_srcdir)/m4/xstrtol.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +am__installdirs = "$(DESTDIR)$(bindir)" +binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) +PROGRAMS = $(bin_PROGRAMS) +am_tar_OBJECTS = buffer.$(OBJEXT) checkpoint.$(OBJEXT) \ + compare.$(OBJEXT) create.$(OBJEXT) delete.$(OBJEXT) \ + extract.$(OBJEXT) xheader.$(OBJEXT) incremen.$(OBJEXT) \ + list.$(OBJEXT) misc.$(OBJEXT) names.$(OBJEXT) sparse.$(OBJEXT) \ + suffix.$(OBJEXT) system.$(OBJEXT) tar.$(OBJEXT) \ + transform.$(OBJEXT) update.$(OBJEXT) utf8.$(OBJEXT) +tar_OBJECTS = $(am_tar_OBJECTS) +am__DEPENDENCIES_1 = +am__DEPENDENCIES_2 = ../lib/libtar.a ../gnu/libgnu.a \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +tar_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +SOURCES = $(tar_SOURCES) +DIST_SOURCES = $(tar_SOURCES) +HEADERS = $(noinst_HEADERS) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +ALLOCA_H = @ALLOCA_H@ +AMTAR = @AMTAR@ +APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOM4TE = @AUTOM4TE@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BACKUP_LIBEXEC_SCRIPTS = @BACKUP_LIBEXEC_SCRIPTS@ +BACKUP_SBIN_SCRIPTS = @BACKUP_SBIN_SCRIPTS@ +BACKUP_SED_COND = @BACKUP_SED_COND@ +BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ +BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ +BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ +BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ +BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ CC = @CC@ -YACC = @YACC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFAULT_ARCHIVE = @DEFAULT_ARCHIVE@ +DEFAULT_ARCHIVE_FORMAT = @DEFAULT_ARCHIVE_FORMAT@ +DEFAULT_BLOCKING = @DEFAULT_BLOCKING@ +DEFAULT_QUOTING_STYLE = @DEFAULT_QUOTING_STYLE@ +DEFAULT_RMT_COMMAND = @DEFAULT_RMT_COMMAND@ +DEFAULT_RMT_DIR = @DEFAULT_RMT_DIR@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIRENT_H = @DIRENT_H@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ +EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ +ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ +ENOLINK_VALUE = @ENOLINK_VALUE@ +EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ +EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ +ERRNO_H = @ERRNO_H@ +EXEEXT = @EXEEXT@ +FCNTL_H = @FCNTL_H@ +FLOAT_H = @FLOAT_H@ +FNMATCH_H = @FNMATCH_H@ +GETOPT_H = @GETOPT_H@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GNULIB_ALPHASORT = @GNULIB_ALPHASORT@ +GNULIB_ATOLL = @GNULIB_ATOLL@ +GNULIB_BTOWC = @GNULIB_BTOWC@ +GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@ +GNULIB_CHOWN = @GNULIB_CHOWN@ +GNULIB_CLOSE = @GNULIB_CLOSE@ +GNULIB_DIRFD = @GNULIB_DIRFD@ +GNULIB_DPRINTF = @GNULIB_DPRINTF@ +GNULIB_DUP2 = @GNULIB_DUP2@ +GNULIB_ENVIRON = @GNULIB_ENVIRON@ +GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ +GNULIB_FCHDIR = @GNULIB_FCHDIR@ +GNULIB_FCLOSE = @GNULIB_FCLOSE@ +GNULIB_FFLUSH = @GNULIB_FFLUSH@ +GNULIB_FOPEN = @GNULIB_FOPEN@ +GNULIB_FPRINTF = @GNULIB_FPRINTF@ +GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@ +GNULIB_FPUTC = @GNULIB_FPUTC@ +GNULIB_FPUTS = @GNULIB_FPUTS@ +GNULIB_FREOPEN = @GNULIB_FREOPEN@ +GNULIB_FSEEK = @GNULIB_FSEEK@ +GNULIB_FSEEKO = @GNULIB_FSEEKO@ +GNULIB_FSYNC = @GNULIB_FSYNC@ +GNULIB_FTELL = @GNULIB_FTELL@ +GNULIB_FTELLO = @GNULIB_FTELLO@ +GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@ +GNULIB_FWRITE = @GNULIB_FWRITE@ +GNULIB_GETCWD = @GNULIB_GETCWD@ +GNULIB_GETDELIM = @GNULIB_GETDELIM@ +GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@ +GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@ +GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@ +GNULIB_GETLINE = @GNULIB_GETLINE@ +GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@ +GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@ +GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@ +GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@ +GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@ +GNULIB_IMAXABS = @GNULIB_IMAXABS@ +GNULIB_IMAXDIV = @GNULIB_IMAXDIV@ +GNULIB_LCHMOD = @GNULIB_LCHMOD@ +GNULIB_LCHOWN = @GNULIB_LCHOWN@ +GNULIB_LINK = @GNULIB_LINK@ +GNULIB_LSEEK = @GNULIB_LSEEK@ +GNULIB_LSTAT = @GNULIB_LSTAT@ +GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@ +GNULIB_MBRLEN = @GNULIB_MBRLEN@ +GNULIB_MBRTOWC = @GNULIB_MBRTOWC@ +GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ +GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ +GNULIB_MBSCHR = @GNULIB_MBSCHR@ +GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ +GNULIB_MBSINIT = @GNULIB_MBSINIT@ +GNULIB_MBSLEN = @GNULIB_MBSLEN@ +GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ +GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ +GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@ +GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ +GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ +GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ +GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@ +GNULIB_MBSSEP = @GNULIB_MBSSEP@ +GNULIB_MBSSPN = @GNULIB_MBSSPN@ +GNULIB_MBSSTR = @GNULIB_MBSSTR@ +GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ +GNULIB_MEMMEM = @GNULIB_MEMMEM@ +GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ +GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ +GNULIB_MKDTEMP = @GNULIB_MKDTEMP@ +GNULIB_MKSTEMP = @GNULIB_MKSTEMP@ +GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@ +GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@ +GNULIB_OPEN = @GNULIB_OPEN@ +GNULIB_PERROR = @GNULIB_PERROR@ +GNULIB_PRINTF = @GNULIB_PRINTF@ +GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@ +GNULIB_PUTC = @GNULIB_PUTC@ +GNULIB_PUTCHAR = @GNULIB_PUTCHAR@ +GNULIB_PUTENV = @GNULIB_PUTENV@ +GNULIB_PUTS = @GNULIB_PUTS@ +GNULIB_RANDOM_R = @GNULIB_RANDOM_R@ +GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ +GNULIB_READLINK = @GNULIB_READLINK@ +GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@ +GNULIB_RPMATCH = @GNULIB_RPMATCH@ +GNULIB_SCANDIR = @GNULIB_SCANDIR@ +GNULIB_SETENV = @GNULIB_SETENV@ +GNULIB_SLEEP = @GNULIB_SLEEP@ +GNULIB_SNPRINTF = @GNULIB_SNPRINTF@ +GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@ +GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@ +GNULIB_STPCPY = @GNULIB_STPCPY@ +GNULIB_STPNCPY = @GNULIB_STPNCPY@ +GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ +GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ +GNULIB_STRDUP = @GNULIB_STRDUP@ +GNULIB_STRERROR = @GNULIB_STRERROR@ +GNULIB_STRNDUP = @GNULIB_STRNDUP@ +GNULIB_STRNLEN = @GNULIB_STRNLEN@ +GNULIB_STRPBRK = @GNULIB_STRPBRK@ +GNULIB_STRSEP = @GNULIB_STRSEP@ +GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ +GNULIB_STRSTR = @GNULIB_STRSTR@ +GNULIB_STRTOD = @GNULIB_STRTOD@ +GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@ +GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ +GNULIB_STRTOLL = @GNULIB_STRTOLL@ +GNULIB_STRTOULL = @GNULIB_STRTOULL@ +GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@ +GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ +GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ +GNULIB_UNSETENV = @GNULIB_UNSETENV@ +GNULIB_VASPRINTF = @GNULIB_VASPRINTF@ +GNULIB_VDPRINTF = @GNULIB_VDPRINTF@ +GNULIB_VFPRINTF = @GNULIB_VFPRINTF@ +GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@ +GNULIB_VPRINTF = @GNULIB_VPRINTF@ +GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@ +GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@ +GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@ +GNULIB_WCRTOMB = @GNULIB_WCRTOMB@ +GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@ +GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@ +GNULIB_WCTOB = @GNULIB_WCTOB@ +GNULIB_WCWIDTH = @GNULIB_WCWIDTH@ +GNULIB_WRITE = @GNULIB_WRITE@ +GREP = @GREP@ +HAVE_ALPHASORT = @HAVE_ALPHASORT@ +HAVE_ATOLL = @HAVE_ATOLL@ +HAVE_BTOWC = @HAVE_BTOWC@ +HAVE_CALLOC_POSIX = @HAVE_CALLOC_POSIX@ +HAVE_DECL_DIRFD = @HAVE_DECL_DIRFD@ +HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ +HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@ +HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@ +HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@ +HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ +HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@ +HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@ +HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ +HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ +HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@ +HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@ +HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ +HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@ +HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@ +HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ +HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ +HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ +HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@ +HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ +HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@ +HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@ +HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@ +HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@ +HAVE_DPRINTF = @HAVE_DPRINTF@ +HAVE_DUP2 = @HAVE_DUP2@ +HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ +HAVE_FSEEKO = @HAVE_FSEEKO@ +HAVE_FSYNC = @HAVE_FSYNC@ +HAVE_FTELLO = @HAVE_FTELLO@ +HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ +HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@ +HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ +HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ +HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ +HAVE_GETSUBOPT = @HAVE_GETSUBOPT@ +HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@ +HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ +HAVE_ISWCNTRL = @HAVE_ISWCNTRL@ +HAVE_LCHMOD = @HAVE_LCHMOD@ +HAVE_LINK = @HAVE_LINK@ +HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ +HAVE_LSTAT = @HAVE_LSTAT@ +HAVE_MALLOC_POSIX = @HAVE_MALLOC_POSIX@ +HAVE_MBRLEN = @HAVE_MBRLEN@ +HAVE_MBRTOWC = @HAVE_MBRTOWC@ +HAVE_MBSINIT = @HAVE_MBSINIT@ +HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@ +HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@ +HAVE_MEMPCPY = @HAVE_MEMPCPY@ +HAVE_MKDTEMP = @HAVE_MKDTEMP@ +HAVE_OS_H = @HAVE_OS_H@ +HAVE_RANDOM_H = @HAVE_RANDOM_H@ +HAVE_RANDOM_R = @HAVE_RANDOM_R@ +HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ +HAVE_READLINK = @HAVE_READLINK@ +HAVE_REALLOC_POSIX = @HAVE_REALLOC_POSIX@ +HAVE_RPMATCH = @HAVE_RPMATCH@ +HAVE_SCANDIR = @HAVE_SCANDIR@ +HAVE_SETENV = @HAVE_SETENV@ +HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ +HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ +HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ +HAVE_SLEEP = @HAVE_SLEEP@ +HAVE_STDINT_H = @HAVE_STDINT_H@ +HAVE_STPCPY = @HAVE_STPCPY@ +HAVE_STPNCPY = @HAVE_STPNCPY@ +HAVE_STRCASECMP = @HAVE_STRCASECMP@ +HAVE_STRCASESTR = @HAVE_STRCASESTR@ +HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ +HAVE_STRNDUP = @HAVE_STRNDUP@ +HAVE_STRPBRK = @HAVE_STRPBRK@ +HAVE_STRSEP = @HAVE_STRSEP@ +HAVE_STRTOD = @HAVE_STRTOD@ +HAVE_STRTOLL = @HAVE_STRTOLL@ +HAVE_STRTOULL = @HAVE_STRTOULL@ +HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@ +HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@ +HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ +HAVE_SYSEXITS_H = @HAVE_SYSEXITS_H@ +HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ +HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ +HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@ +HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ +HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@ +HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ +HAVE_UNISTD_H = @HAVE_UNISTD_H@ +HAVE_UNSETENV = @HAVE_UNSETENV@ +HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ +HAVE_VASPRINTF = @HAVE_VASPRINTF@ +HAVE_VDPRINTF = @HAVE_VDPRINTF@ +HAVE_WCHAR_H = @HAVE_WCHAR_H@ +HAVE_WCRTOMB = @HAVE_WCRTOMB@ +HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@ +HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@ +HAVE_WCTYPE_H = @HAVE_WCTYPE_H@ +HAVE_WINT_T = @HAVE_WINT_T@ +HAVE__BOOL = @HAVE__BOOL@ +INCLUDE_NEXT = @INCLUDE_NEXT@ +INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ - -# Things you might add to DEFS: -# -DSTDC_HEADERS If you have ANSI C headers and libraries. -# -DHAVE_UNISTD_H If you have unistd.h. -# -DHAVE_STRING_H If you don't have ANSI C headers but have string.h. -# -DHAVE_LIMITS_H If you have limits.h. -# -DBSD42 If you have sys/dir.h (unless you use -DPOSIX), -# sys/file.h, and st_blocks in `struct stat'. -# -DDIRENT If you have dirent.h. -# -DSYSNDIR Old Xenix systems (sys/ndir.h). -# -DSYSDIR Old BSD systems (sys/dir.h). -# -DNDIR Old System V systems (ndir.h). -# -DMAJOR_IN_MKDEV If major, minor, makedev defined in sys/mkdev.h. -# -DMAJOR_IN_SYSMACROS If major, minor, makedev defined in sys/sysmacros.h. -# -DRETSIGTYPE=int If your signal handlers return int, not void. -# -DHAVE_SYS_MTIO_H If you have sys/mtio.h (magtape ioctls). -# -DHAVE_SYS_GENTAPE_H If you have sys/gentape.h (ISC magtape ioctls). -# -DHAVE_NETDB_H To use rexec for remote tape operations -# instead of forking rsh or remsh. -# -DNO_REMOTE If you have neither a remote shell nor rexec. -# -DHAVE_VPRINTF If you have vprintf function. -# -DHAVE_DOPRNT If you have _doprnt function (but lack vprintf). -# -DHAVE_FTIME If you have ftime system call. -# -DHAVE_STRSTR If you have strstr function. -# -DHAVE_VALLOC If you have valloc function. -# -DHAVE_MKDIR If you have mkdir and rmdir system calls. -# -DHAVE_MKNOD If you have mknod system call. -# -DHAVE_RENAME If you have rename system call. -# -DHAVE_GETCWD If not POSIX.1 but have getcwd function. -# -DHAVE_FTRUNCATE If you have ftruncate system call. -# -DV7 On Version 7 Unix (not tested in a long time). -# -DEMUL_OPEN3 If you lack a 3-argument version of open, and want -# to emulate it with system calls you do have. -# -DNO_OPEN3 If you lack the 3-argument open and want to -# disable the tar -k option instead of emulating open. -# -DXENIX If you have sys/inode.h and need it to be included. - -DEF_AR_FILE = @DEF_AR_FILE@ -DEFBLOCKING = 20 -DEFS = @DEFS@ -DDEF_AR_FILE=\"$(DEF_AR_FILE)\" -DDEFBLOCKING=$(DEFBLOCKING) - -# Set this to rtapelib.o unless you defined NO_REMOTE, in which case -# make it empty. -RTAPELIB = @RTAPELIB@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT32_MAX_LT_INTMAX_MAX = @INT32_MAX_LT_INTMAX_MAX@ +INT64_MAX_EQ_LONG_MAX = @INT64_MAX_EQ_LONG_MAX@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +INTTYPES_H = @INTTYPES_H@ +LDFLAGS = @LDFLAGS@ +LIBGNU_LIBDEPS = @LIBGNU_LIBDEPS@ +LIBGNU_LTLIBDEPS = @LIBGNU_LTLIBDEPS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ +LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@ +LIB_CLOSE = @LIB_CLOSE@ +LIB_SETSOCKOPT = @LIB_SETSOCKOPT@ +LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@ +LOCALE_FR = @LOCALE_FR@ +LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@ +LOCALE_JA = @LOCALE_JA@ +LOCALE_ZH_CN = @LOCALE_ZH_CN@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NEXT_DIRENT_H = @NEXT_DIRENT_H@ +NEXT_ERRNO_H = @NEXT_ERRNO_H@ +NEXT_FCNTL_H = @NEXT_FCNTL_H@ +NEXT_FLOAT_H = @NEXT_FLOAT_H@ +NEXT_INTTYPES_H = @NEXT_INTTYPES_H@ +NEXT_STDARG_H = @NEXT_STDARG_H@ +NEXT_STDINT_H = @NEXT_STDINT_H@ +NEXT_STDIO_H = @NEXT_STDIO_H@ +NEXT_STDLIB_H = @NEXT_STDLIB_H@ +NEXT_STRINGS_H = @NEXT_STRINGS_H@ +NEXT_STRING_H = @NEXT_STRING_H@ +NEXT_SYSEXITS_H = @NEXT_SYSEXITS_H@ +NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@ +NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@ +NEXT_TIME_H = @NEXT_TIME_H@ +NEXT_UNISTD_H = @NEXT_UNISTD_H@ +NEXT_WCHAR_H = @NEXT_WCHAR_H@ +NEXT_WCTYPE_H = @NEXT_WCTYPE_H@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +POSUB = @POSUB@ +PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ +PRIPTR_PREFIX = @PRIPTR_PREFIX@ +PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@ +PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ +PU_RMT_PROG = @PU_RMT_PROG@ +RANLIB = @RANLIB@ +REPLACE_BTOWC = @REPLACE_BTOWC@ +REPLACE_CHOWN = @REPLACE_CHOWN@ +REPLACE_CLOSE = @REPLACE_CLOSE@ +REPLACE_DPRINTF = @REPLACE_DPRINTF@ +REPLACE_FCHDIR = @REPLACE_FCHDIR@ +REPLACE_FCLOSE = @REPLACE_FCLOSE@ +REPLACE_FFLUSH = @REPLACE_FFLUSH@ +REPLACE_FOPEN = @REPLACE_FOPEN@ +REPLACE_FPRINTF = @REPLACE_FPRINTF@ +REPLACE_FREOPEN = @REPLACE_FREOPEN@ +REPLACE_FSEEK = @REPLACE_FSEEK@ +REPLACE_FSEEKO = @REPLACE_FSEEKO@ +REPLACE_FTELL = @REPLACE_FTELL@ +REPLACE_FTELLO = @REPLACE_FTELLO@ +REPLACE_GETCWD = @REPLACE_GETCWD@ +REPLACE_GETLINE = @REPLACE_GETLINE@ +REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ +REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@ +REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@ +REPLACE_LCHOWN = @REPLACE_LCHOWN@ +REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@ +REPLACE_LSEEK = @REPLACE_LSEEK@ +REPLACE_LSTAT = @REPLACE_LSTAT@ +REPLACE_MBRLEN = @REPLACE_MBRLEN@ +REPLACE_MBRTOWC = @REPLACE_MBRTOWC@ +REPLACE_MBSINIT = @REPLACE_MBSINIT@ +REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@ +REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@ +REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@ +REPLACE_MEMMEM = @REPLACE_MEMMEM@ +REPLACE_MKDIR = @REPLACE_MKDIR@ +REPLACE_MKSTEMP = @REPLACE_MKSTEMP@ +REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@ +REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@ +REPLACE_OPEN = @REPLACE_OPEN@ +REPLACE_PERROR = @REPLACE_PERROR@ +REPLACE_PRINTF = @REPLACE_PRINTF@ +REPLACE_PUTENV = @REPLACE_PUTENV@ +REPLACE_SNPRINTF = @REPLACE_SNPRINTF@ +REPLACE_SPRINTF = @REPLACE_SPRINTF@ +REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@ +REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ +REPLACE_STRDUP = @REPLACE_STRDUP@ +REPLACE_STRERROR = @REPLACE_STRERROR@ +REPLACE_STRPTIME = @REPLACE_STRPTIME@ +REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ +REPLACE_STRSTR = @REPLACE_STRSTR@ +REPLACE_STRTOD = @REPLACE_STRTOD@ +REPLACE_TIMEGM = @REPLACE_TIMEGM@ +REPLACE_VASPRINTF = @REPLACE_VASPRINTF@ +REPLACE_VDPRINTF = @REPLACE_VDPRINTF@ +REPLACE_VFPRINTF = @REPLACE_VFPRINTF@ +REPLACE_VPRINTF = @REPLACE_VPRINTF@ +REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@ +REPLACE_VSPRINTF = @REPLACE_VSPRINTF@ +REPLACE_WCRTOMB = @REPLACE_WCRTOMB@ +REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@ +REPLACE_WCTOB = @REPLACE_WCTOB@ +REPLACE_WCWIDTH = @REPLACE_WCWIDTH@ +REPLACE_WRITE = @REPLACE_WRITE@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ +SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ +STDARG_H = @STDARG_H@ +STDBOOL_H = @STDBOOL_H@ +STDINT_H = @STDINT_H@ +STRIP = @STRIP@ +SYSEXITS_H = @SYSEXITS_H@ +SYS_STAT_H = @SYS_STAT_H@ +SYS_TIME_H = @SYS_TIME_H@ +SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@ +TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@ +UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@ +UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@ +UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +VOID_UNSETENV = @VOID_UNSETENV@ +WCHAR_H = @WCHAR_H@ +WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ +WCTYPE_H = @WCTYPE_H@ +WINT_T_SUFFIX = @WINT_T_SUFFIX@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +YACC = @YACC@ +YFLAGS = @YFLAGS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gl_LIBOBJS = @gl_LIBOBJS@ +gl_LTLIBOBJS = @gl_LTLIBOBJS@ +gltests_LIBOBJS = @gltests_LIBOBJS@ +gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_HEADERS = arith.h common.h tar.h +tar_SOURCES = \ + buffer.c\ + checkpoint.c\ + compare.c\ + create.c\ + delete.c\ + extract.c\ + xheader.c\ + incremen.c\ + list.c\ + misc.c\ + names.c\ + sparse.c\ + suffix.c\ + system.c\ + tar.c\ + transform.c\ + update.c\ + utf8.c + +INCLUDES = -I$(top_srcdir)/gnu -I../ -I../gnu -I$(top_srcdir)/lib +LDADD = ../lib/libtar.a ../gnu/libgnu.a $(LIBINTL) $(LIBICONV) +tar_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits src/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnits src/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + if test -f $$p \ + ; then \ + f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \ + $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \ + else :; fi; \ + done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ + rm -f "$(DESTDIR)$(bindir)/$$f"; \ + done + +clean-binPROGRAMS: + -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) + +installcheck-binPROGRAMS: $(bin_PROGRAMS) + bad=0; pid=$$$$; list="$(bin_PROGRAMS)"; for p in $$list; do \ + case ' $(AM_INSTALLCHECK_STD_OPTIONS_EXEMPT) ' in \ + *" $$p "* | *" $(srcdir)/$$p "*) continue;; \ + esac; \ + f=`echo "$$p" | \ + sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + for opt in --help --version; do \ + if "$(DESTDIR)$(bindir)/$$f" $$opt >c$${pid}_.out \ + 2>c$${pid}_.err &2; bad=1; fi; \ + done; \ + done; rm -f c$${pid}_.???; exit $$bad +tar$(EXEEXT): $(tar_OBJECTS) $(tar_DEPENDENCIES) + @rm -f tar$(EXEEXT) + $(LINK) $(tar_OBJECTS) $(tar_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/buffer.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/checkpoint.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/compare.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/create.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/delete.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/extract.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/incremen.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/list.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/misc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/names.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sparse.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/suffix.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/system.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tar.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/transform.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/update.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utf8.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xheader.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(PROGRAMS) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(bindir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am -CFLAGS = -g -LDFLAGS = -g +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am -prefix = /usr/local -exec_prefix = $(prefix) +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: -# Prefix for each installed program, normally empty or `g'. -binprefix = +clean-generic: -# The directory to install tar in. -bindir = $(exec_prefix)/bin +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -# Where to put the rmt executable. -libdir = $(exec_prefix)/lib +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am -# The directory to install the info files in. -infodir = $(prefix)/info +clean-am: clean-binPROGRAMS clean-generic mostlyclean-am -#### End of system configuration section. #### +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags -SHELL = /bin/sh +dvi: dvi-am -SRC1 = tar.c create.c extract.c buffer.c getoldopt.c update.c gnu.c mangle.c -SRC2 = version.c list.c names.c diffarch.c port.c fnmatch.c getopt.c malloc.c -SRC3 = getopt1.c regex.c getdate.y getdate.c alloca.c -SRCS = $(SRC1) $(SRC2) $(SRC3) -OBJ1 = tar.o create.o extract.o buffer.o getoldopt.o update.o gnu.o mangle.o -OBJ2 = version.o list.o names.o diffarch.o port.o fnmatch.o getopt.o @MALLOC@ -OBJ3 = getopt1.o regex.o getdate.o $(RTAPELIB) @ALLOCA@ -OBJS = $(OBJ1) $(OBJ2) $(OBJ3) -AUX = README INSTALL NEWS COPYING ChangeLog Makefile.in makefile.pc \ - configure configure.in mkinstalldirs \ - tar.h fnmatch.h pathmax.h port.h open3.h getopt.h regex.h \ - rmt.h rmt.c rtapelib.c \ - msd_dir.h msd_dir.c tcexparg.c \ - level-0 level-1 backup-specs dump-remind testpad.c getpagesize.h -# tar.texinfo tar.info* texinfo.tex +dvi-am: -all: @PROGS@ -# tar.info +html: html-am -.c.o: - $(CC) -c $(CPPFLAGS) $(DEFS) -I. -I$(srcdir) $(CFLAGS) $< +info: info-am -tar: $(OBJS) - $(CC) $(LDFLAGS) -o $@ $(OBJS) $(LIBS) +info-am: -rmt: rmt.c - $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(srcdir)/rmt.c $(LIBS) +install-data-am: -tar.info: tar.texinfo - makeinfo $(srcdir)/tar.texinfo +install-dvi: install-dvi-am -install: all installdirs - $(INSTALL_PROGRAM) tar $(bindir)/$(binprefix)tar - -test ! -f rmt || $(INSTALL_PROGRAM) rmt $(libdir)/rmt -# for file in $(srcdir)/tar.info*; \ -# do $(INSTALL_DATA) $$file $(infodir)/$$file; \ -# done +install-exec-am: install-binPROGRAMS -uninstall: - rm -f $(bindir)/$(binprefix)tar $(infodir)/tar.info* - -rm -f $(libdir)/rmt +install-html: install-html-am -installdirs: - $(SHELL) ${srcdir}/mkinstalldirs $(bindir) $(libdir) $(infodir) +install-info: install-info-am + +install-man: -Makefile: Makefile.in config.status - $(SHELL) config.status -config.status: configure - $(SHELL) config.status --recheck -configure: configure.in - cd $(srcdir); autoconf +install-pdf: install-pdf-am -$(OBJS): tar.h pathmax.h port.h testpad.h -regex.o buffer.o tar.o: regex.h -tar.o fnmatch.o: fnmatch.h +install-ps: install-ps-am -getdate.c: getdate.y - $(YACC) $(srcdir)/getdate.y - mv y.tab.c getdate.c -# getdate.y has 8 shift/reduce conflicts. +installcheck-am: installcheck-binPROGRAMS -testpad.h: testpad - ./testpad +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic -testpad: testpad.o - $(CC) -o $@ testpad.o +mostlyclean: mostlyclean-am -TAGS: $(SRCS) - etags $(SRCS) +mostlyclean-am: mostlyclean-compile mostlyclean-generic -clean: - rm -f *.o tar rmt testpad testpad.h core +pdf: pdf-am -mostlyclean: clean +pdf-am: -distclean: clean - rm -f Makefile config.status +ps: ps-am -realclean: distclean - rm -f TAGS *.info* getdate.c y.tab.c +ps-am: -shar: $(SRCS) $(AUX) - shar $(SRCS) $(AUX) | gzip > tar-`sed -e '/version_string/!d' -e 's/[^0-9.]*\([0-9.]*\).*/\1/' -e q version.c`.shar.z +uninstall-am: uninstall-binPROGRAMS -dist: $(SRCS) $(AUX) - echo tar-`sed -e '/version_string/!d' -e 's/[^0-9.]*\([0-9.]*\).*/\1/' -e q version.c` > .fname - -rm -rf `cat .fname` - mkdir `cat .fname` - for file in $(SRCS) $(AUX); do \ - ln $$file `cat .fname` || cp $$file `cat .fname`; done - tar chzf `cat .fname`.tar.z `cat .fname` - -rm -rf `cat .fname` .fname +.MAKE: install-am install-strip -tar.zoo: $(SRCS) $(AUX) - -rm -rf tmp.dir - -mkdir tmp.dir - -rm tar.zoo - for X in $(SRCS) $(AUX) ; do echo $$X ; sed 's/$$/ /' $$X > tmp.dir/$$X ; done - cd tmp.dir ; zoo aM ../tar.zoo * - -rm -rf tmp.dir +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ + clean-generic ctags distclean distclean-compile \ + distclean-generic distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-binPROGRAMS \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installcheck-binPROGRAMS \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \ + ps ps-am tags uninstall uninstall-am uninstall-binPROGRAMS -# Prevent GNU make v3 from overflowing arg limit on SysV. +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: diff --git a/tests/.cvsignore b/tests/.cvsignore deleted file mode 100644 index 8d9eb3ac..00000000 --- a/tests/.cvsignore +++ /dev/null @@ -1,17 +0,0 @@ -*.bz2 -*.gz -*.tar -*.gtar -.deps -Makefile -Makefile.in -argcv.c -argcv.h -atconfig -atlocal -genfile -genfile.c -package.m4 -testsuite -testsuite.dir -testsuite.log diff --git a/tests/.gitignore b/tests/.gitignore new file mode 100644 index 00000000..c5382d04 --- /dev/null +++ b/tests/.gitignore @@ -0,0 +1,10 @@ +atconfig +atlocal +package.m4 +testsuite +testsuite.dir +testsuite.log +argcv.c +argcv.h +genfile.c +genfile diff --git a/tests/Makefile.am b/tests/Makefile.am index cad0dfed..2c13231f 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -1,7 +1,7 @@ # Makefile for GNU tar regression tests. # Copyright (C) 1996, 1997, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007 Free Software Foundation, Inc. +# 2006, 2007, 2009 Free Software Foundation, Inc. # François Pinard , 1988. # Sergey Poznyakoff , 2004. @@ -161,6 +161,6 @@ check_PROGRAMS = genfile genfile_SOURCES = genfile.c argcv.c argcv.h localedir = $(datadir)/locale -INCLUDES = -I$(top_srcdir)/lib -I../lib -I$(top_srcdir)/src +INCLUDES = -I$(top_srcdir)/gnu -I../gnu -I$(top_srcdir)/gnu -I$(top_srcdir)/lib AM_CPPFLAGS = -DLOCALEDIR=\"$(localedir)\" -LDADD = ../lib/libtar.a $(LIBINTL) $(LIB_CLOCK_GETTIME) +LDADD = ../gnu/libgnu.a $(LIBINTL) $(LIB_CLOCK_GETTIME)