From fdae5d9f72a0596fc7b5933509a9cd03cbebf6eb Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Wed, 31 Mar 2004 07:47:20 +0000 Subject: [PATCH] Merge from coreutils. --- ChangeLog | 1 + config/ChangeLog | 2 +- lib/ChangeLog | 81 ++++++++++++++++++++++++++++++++++++++++++++++-- lib/userspec.c | 19 +++++------- lib/userspec.h | 2 +- m4/ChangeLog | 15 +++++++++ 6 files changed, 103 insertions(+), 17 deletions(-) diff --git a/ChangeLog b/ChangeLog index 24a8561939..cfc5ad5946 100644 --- a/ChangeLog +++ b/ChangeLog @@ -8,6 +8,7 @@ 2004-03-30 Paul Eggert * modules/inttostr: New file. + * modules/getdate: Depend on timespec, stdbool, gettime. 2004-03-29 Paul Eggert diff --git a/config/ChangeLog b/config/ChangeLog index 8366739cb6..de2e498c94 100644 --- a/config/ChangeLog +++ b/config/ChangeLog @@ -1,4 +1,4 @@ -2004-03-09 Paul Eggert +2004-03-09 Paul Eggert * srclistvars.sh: Add GNUWWWLICENSES for eggert. * srclist.txt: Sync getopt with libc. Add getopt_int.h. diff --git a/lib/ChangeLog b/lib/ChangeLog index fc6a5ec987..1cafcdf436 100644 --- a/lib/ChangeLog +++ b/lib/ChangeLog @@ -1,12 +1,87 @@ 2004-03-30 Paul Eggert - * imaxtostr.c, inttostr.c, inttostr.h, offtostr.c, umaxtostr.c: - New files. - * lib/cloexec.h, lib/cloexec.c (set_cloexec_flag): Return int not bool, to be more consistent with Unix conventions. Suggested by Bruno Haible. + Merge from coreutils. + + * imaxtostr.c, inttostr.c, inttostr.h, offtostr.c, umaxtostr.c: + New files. + + * getdate.h: Include stdbool.h, and timespec.h instead of + the usual dance. + (get_date): Change signature to support fractional time stamps. + All callers changed. + * getdate.y: Include "getdate.h" first, as we can now + assume C89 and don't need to worry about 'const'. + Similarly, include "unlocked-io.h" near start, not in middle. + Include . + (textint.value): Use long int rather than int. + (textint.digits): Use size_t rather than int. + (BILLION, LOG10_BILLION): New constants. + (parser_control): New member rel_ns. Members day_ordinal, + time_zone, month, day, hour, minutes, rel_year, rel_month, + rel_day, rel_hour, rel_minutes, rel_seconds + are now long int, not int. Member seconds is now struct timespec, + not int. New member timespec_seen. Members dates_seen, days_seen, + local_zones_seen, rels_seen, times_seen, zones_seen are now size_t, + not int. + (%union.intval): Now long int, not int. + New member timespec. + (tSDECIMAL_NUMBER, tUDECIMAL_NUMBER): New tokens. + (seconds, signed_seconds, unsigned_seconds): New nonterminals. + (spec): Now is a timespec or an item list. + (timespec, items): New nonterminals. + (time, rel, relunit, number, get_date): + Add support for fractional seconds. + (time): Fix bug: seconds weren't cleared in "00:00 +0000" syntax. + (gmtime, localtime, mktime): Remove decls; not needed with C89. + (to_hour): First arg is now long int, not int. + (to_year): Returns long int, not int. + Don't treat year -70 like 70. + (tm_diff): Returns long int, not int. + (lookup_word): Use bool instead of int when appropriate. + (yylex): Use size_t for count, not int. + Detect overflow when parsing large integer constants. + Add support for fractions. + (get_date): Make pointers 'const' if possible. + Use more-portable code to detect integer overflow. + (main) [TEST]: Adjust to above changes. Test for localtime failure. + Don't use ctime; it's not reliable if the year has >4 digits. + + * human.c (humblock): Inspect BLOCKSIZE if BLOCK_SIZE isn't set. + This is for compatibility with BSD. + + * timespec.h (ST_TIME_CMP_NS, ST_TIME_CMP): Define. + (ATIME_CMP, CTIME_CMP, MTIME_CMP, TIMESPEC_NS): Likewise. + From coreutils' system.h. + + * userspec.c: Don't include "posixver.h". + (parse_user_spec): Fall back on USER.GROUP parsing, regardless + of POSIX version, as POSIX 1003.1-2001 allows that behavior as a + compatible extension. Simplify code by removing a boolean int + that was always nonzero if a string was nonnull. + +2004-03-30 Jim Meyering + + Merge from coreutils. + + * mountlist.c [HAVE_SYS_UCRED_H]: Include grp.h before sys/ucred.h. + + * readtokens.c (readtoken): Don't leak 64 bytes when reading + an empty input stream. + + * readtokens.c: Include . + (readtoken): Use `size_t' rather than int/long. + All callers adjusted. + Use `bool' rather than `int' where appropriate. + Use memset rather than an explicit loop. + Use x2nrealloc rather than xrealloc. + Allow the use of `\0' as a delimiter. + (readtokens): Likewise. + * readtokens.h (readtoken, readtokens): Update prototypes. + 2004-03-30 Bruno Haible * getloadavg.c (getloadavg): Don't assume setlocale returns diff --git a/lib/userspec.c b/lib/userspec.c index 8cf62391a3..a997c6ff4b 100644 --- a/lib/userspec.c +++ b/lib/userspec.c @@ -22,11 +22,11 @@ # include #endif -#include - /* Specification. */ #include "userspec.h" +#include + #include #include #include @@ -45,7 +45,6 @@ #endif #include "strdup.h" -#include "posixver.h" #include "xalloc.h" #include "xstrtol.h" @@ -157,7 +156,6 @@ parse_user_spec (const char *spec_arg, uid_t *uid, gid_t *gid, struct group *grp; char *g, *u, *separator; char *groupname; - int maybe_retry = 0; char *dot = NULL; error_msg = NULL; @@ -170,17 +168,14 @@ parse_user_spec (const char *spec_arg, uid_t *uid, gid_t *gid, separator = strchr (spec, ':'); /* If there is no colon, then see if there's a `.'. */ - if (separator == NULL && posix2_version () < 200112) + if (separator == NULL) { dot = strchr (spec, '.'); /* If there's no colon but there is a `.', then first look up the whole spec, in case it's an OWNER name that includes a dot. If that fails, then we'll try again, but interpreting the `.' - as a separator. */ - /* FIXME: accepting `.' as the separator is contrary to POSIX. - someday we should drop support for this. */ - if (dot) - maybe_retry = 1; + as a separator. This is a compatible extension to POSIX, since + the POSIX-required behavior is always tried first. */ } retry: @@ -310,10 +305,10 @@ parse_user_spec (const char *spec_arg, uid_t *uid, gid_t *gid, } } - if (error_msg && maybe_retry) + if (error_msg && dot) { - maybe_retry = 0; separator = dot; + dot = NULL; error_msg = NULL; goto retry; } diff --git a/lib/userspec.h b/lib/userspec.h index 8f01d64d30..8a09eaea0c 100644 --- a/lib/userspec.h +++ b/lib/userspec.h @@ -1,7 +1,7 @@ #ifndef USERSPEC_H # define USERSPEC_H 1 -# include +# include const char * parse_user_spec (const char *spec_arg, uid_t *uid, gid_t *gid, diff --git a/m4/ChangeLog b/m4/ChangeLog index def865bb01..67311a508d 100644 --- a/m4/ChangeLog +++ b/m4/ChangeLog @@ -13,7 +13,22 @@ 2004-03-30 Paul Eggert + Merge from coreutils. + * inttostr.m4: New file. + * getdate.m4 (gl_GETDATE): Remove time-related stuff. + Require AM_STDBOOL_H and gl_TIMESPEC instead. + Require gl_CLOCK_TIME. + * clock_time.m4 (gl_CLOCK_TIME): Require AC_GNU_SOURCE. + +2004-03-30 Jim Meyering + + Merge from coreutils. + + Avoid a configure-time warning about sys/ucred.h on OSF V4.0. + * ls-mntd-fs.m4: Test for sys/ucred.h separately, since + on some systems one must include before it. + Reported by Christian Krackowizer. 2004-03-29 Paul Eggert -- 2.30.2