Paul Eggert [Wed, 12 Apr 2006 20:14:42 +0000 (20:14 +0000)]
(USE_STATVFS): New macro.
Include <sys/statvfs.h> and use statvfs only if USE_STATVFS.
(NAMEMAX_FORMAT): define a bit more clearly, now that the
statvfs-using code is a bit more regular.
Paul Eggert [Wed, 12 Apr 2006 20:13:00 +0000 (20:13 +0000)]
Don't include <inttypes.h> or <stdint.h>, since
fsusage.h now does that. Include fsusage.h first, to test interface.
Prefer statvfs if it works, since it's blessed by POSIX. Attempt
at most one method (the old code could have generated decls that
didn't conform to C89, not that this was ever exercised).
Paul Eggert [Wed, 12 Apr 2006 07:37:11 +0000 (07:37 +0000)]
Clear the RE_NO_EMPTY_RANGES re syntax option, as this is a less intrusive
change from the old (Emacs) behavior, and POSIX allows us to treat [z-a]
as an empty range.
Paul Eggert [Wed, 12 Apr 2006 07:16:20 +0000 (07:16 +0000)]
(docolon): Set re_syntax_options to a value that is compatible with
what POSIX requires. Also, don't let anchors match
newline; this fixes an incompatibility with tradition and with POSIX.
Don't warn about leading ^. POSIX says it is unspecified whether
^ is a special character, which means that implementations can
either treat it as special or not, but either way a warning is not
allowed (unless the regexp is otherwise invalid). Instead, anchor
the expression but treat ^ as an anchor; this is the traditional
behavior (e.g., Solaris 10).
(eval4, eval3, eval2): Treat non-numeric args, division by zero,
and the like as invalid expressions (exit status 2), not as
failure of 'expr' (exit status 3). This is more consistent with
how Solaris behaves.
Paul Eggert [Tue, 11 Apr 2006 00:51:42 +0000 (00:51 +0000)]
(context_regex_string, word_regex_string): Remove.
(context_regex, word_regex): New vars, replacing the above.
All uses changed.
(struct regex_data): New type.
(compile_regex): Renamed from alloc_and_compile_regex, since
we no longer allocate storage. Arg is now a struct regex_data *,
not a const char *. All uses changed. Don't allocate the fastmap;
instead, take it from the caller. Don't convert size_t to int,
to avoid arithmetic overflow problems. Don't bother freeing
storage afterwards; it's not worth the aggravation.
Paul Eggert [Tue, 11 Apr 2006 00:51:23 +0000 (00:51 +0000)]
(body_fastmap, header_fastmap, footer_fastmap):
New vars.
(build_type_arg): New fastmap arg. All uses changed.
Don't bother allocating a buffer, but set a fastmap.
Paul Eggert [Tue, 11 Apr 2006 00:49:59 +0000 (00:49 +0000)]
(struct control): Put re_compiled member at the
end, since it's large. Change regexpr member from char * to bool;
all uses changed. Add new member fastmap.
(extract_regexp): regexp arg is now char const *, not char *.
Don't bother duplicating the regular expression; it's not needed.
Set fastmap from new fastmap member. Don't bother allocating
a buffer, as the regexp code does a better job than we do.
Jim Meyering [Sun, 26 Mar 2006 12:20:46 +0000 (12:20 +0000)]
(base_name): New semantics - malloc the result.
Preserve // when it is special.
Preserve relative files that look like drive letters.
(base_len): Preserve // when it is special.
(last_component): New method, similar to old base_name semantics.
Jim Meyering [Sun, 26 Mar 2006 12:20:24 +0000 (12:20 +0000)]
(dir_len): Determine when drive letters need a subsequent slash.
Preserve // when it is special.
(dir_name): Don't append dot when drive letter is absolute.
[TEST_DIRNAME]: Move into a full-blown gnulib test.
Jim Meyering [Sun, 26 Mar 2006 12:20:06 +0000 (12:20 +0000)]
(FILE_SYSTEM_PREFIX_LEN): Move here from dos.m4.
[FILE_SYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX]: Don't treat 1: as a drive prefix.
(IS_ABSOLUTE_FILE_NAME): Treat all drive letters as absolute on
platforms like cygwin with FILE_SYSTEM_DRIVE_PREFIX_IS_ABSOLUTE.
(last_component): New method.
Paul Eggert [Sat, 25 Mar 2006 09:49:24 +0000 (09:49 +0000)]
(gl_REGEX): Fix a longstanding typo in the
implementation of Spencer ERE test #75 from grep 2.3. Problem
reported by Emanuele Giaquinta. Also, change sense of cached
variable, so that the message makes sense.
Jim Meyering [Sun, 19 Mar 2006 18:27:51 +0000 (18:27 +0000)]
Work even in a chroot where d_ino values for entries in "/"
don't match the stat.st_ino values for the same names.
(__getcwd): When no d_ino value matches the target inode
number, iterate through all entries again, using lstat instead.
Reported by Kenshi Muto in http://bugs.debian.org/355810.
Paul Eggert [Fri, 17 Mar 2006 07:33:06 +0000 (07:33 +0000)]
(gl_REGEX): Don't check for off_t, since the code
no longer needs it. Instead, check that regoff_t is as least
as wide as ptrdiff_t.
Don't define _REGEX_WIDE_OFFSETS unless using the included regex,
so that our regex.h stays compatible with the installed regex.
This is helpful for installers who configure --without-included-regex.
Problem reported by Emanuele Giaquinta.