Jim Meyering [Fri, 31 Aug 2001 07:29:05 +0000 (07:29 +0000)]
Correct credits, as cccp.c no longer
exists and anyway it was so heavily changed from the old cccp
code as to be unrecognizable. Include full-write.h.
(full_write) Return size_t, with short writes meaning failure.
All callers changed. This fixes a bug with large buffers
on 64-bit hosts.
Jim Meyering [Fri, 31 Aug 2001 06:34:06 +0000 (06:34 +0000)]
(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.
Jim Meyering [Fri, 31 Aug 2001 06:33:42 +0000 (06:33 +0000)]
Merge 'exclude' changes from tar 1.13.22.
This fixes one or two unlikely storage allocation overflow bugs,
but doesn't change user-visible behavior otherwise.
(bool): Declare, perhaps by including stdbool.h.
(<sys/types.h>): Include only if HAVE_SYS_TYPES_H.
(<stdlib.h>, <string.h>, <strings.h>, <inttypes.h>, <stdint.h>):
Include if available.
(<xalloc.h>): Include
(SIZE_MAX): Define if <stdint.h> or <inttypes.h> 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.
Jim Meyering [Mon, 27 Aug 2001 08:50:04 +0000 (08:50 +0000)]
(N_): Remove definition.
Revert most of last change.
Instead, simply don't mark the `Copyright...' string for translation.
Based on advice from Paul Eggert.
Jim Meyering [Sun, 26 Aug 2001 18:26:01 +0000 (18:26 +0000)]
(version_etc_copyright_fmt): Replace literal year
of copyright with `%s' so translators don't get an untranslated message in 2002.
(COPYRIGHT_YEAR): Define.
(version_etc): Use fprintf rather than fputs.
Jim Meyering [Sat, 25 Aug 2001 15:07:17 +0000 (15:07 +0000)]
(main): Fix some more incompatibilities with POSIX.2,
(e.g. `uniq +3 --' did not work) by invoking getopt_long with
leading '-', resembling what was done to 'sort' on 2001-03-20.
Recognize an +N option only if it is an integer in range, and
(if POSIXLY_CORRECT) only if a file name argument has not been seen;
otherwise silently treat it as a file name.
If the user specifies too many operands, output the first one
in the error message, as a diagnostic aid.
Jim Meyering [Sat, 25 Aug 2001 09:19:59 +0000 (09:19 +0000)]
(different): Don't assume that lengths can fit
into size_t. Tune code for the common case where the line
lengths differ: we avoid comparing them entirely in that case.