Jim Meyering [Wed, 3 Jan 2001 21:02:08 +0000 (21:02 +0000)]
Use the more precise algorithm of GNU "make" to decide whether
a file is in the future, by looking at high-resolution time
stamps if available.
(TIMESPEC_NS): New macro.
(current_time): Initialize to the minimum value.
(current_time_ns): New var.
(main): Do not bother to initialize current_time;
it's no longer needed.
(get_current_time): New function.
(print_long_format): Use it when a file appears to be in the future.
Get the nanoseconds of the file's time stamp, if available,
and use that to decide whether the file appears to be in the future.
Jim Meyering [Wed, 3 Jan 2001 09:47:09 +0000 (09:47 +0000)]
(long_time_expected_width, print_long_format): Fix
bug: the initial byte passed to strftime wasn't initialized to
a nonzero value after the buffer was reallocated.
Jim Meyering [Wed, 3 Jan 2001 09:15:22 +0000 (09:15 +0000)]
(long_time_expected_width): New function.
(print_long_format): Use it, so that we don't assume a
particular width for time stamps in an internationalized
environment.
Jim Meyering [Tue, 2 Jan 2001 15:48:21 +0000 (15:48 +0000)]
(ulonglong_t): Define place-holder type to avoid some #if directives.
(LONGEST_INTEGRAL_TYPE): Remove definition.
(MAX_INTEGRAL_TYPE_SIZE): Use ulonglong_t instead of LONGEST_INTEGRAL_TYPE.
(print_long_long): Compile this function even on systems without
long long support.
(decode_one_format): Remove #if directive.
Jim Meyering [Tue, 2 Jan 2001 10:54:55 +0000 (10:54 +0000)]
(decode_one_format): Guard use of print_long_long with
`#if HAVE_UNSIGNED_LONG_LONG'. From Darren Salt.
Change all `#ifdef HAVE_UNSIGNED_LONG_LONG' to use `#if' instead.
Jim Meyering [Tue, 2 Jan 2001 07:18:56 +0000 (07:18 +0000)]
(print_long_format):
Report the year for files even slightly in the future.
Avoid overflow problems near Y2038 on 32-bit hosts.
To calculate "six months", take half the average Gregorian
year, not 180 days.
Jim Meyering [Mon, 1 Jan 2001 18:16:52 +0000 (18:16 +0000)]
(jm_PREREQ_READUTMP): Include utmp.h (if available), even
on systems with utmpx.h. It's necessary for the declaration of utmp's
ut_user member. Reported by Andreas Jaeger.
Jim Meyering [Mon, 1 Jan 2001 18:08:48 +0000 (18:08 +0000)]
(jm_CHECK_DECLS): Include grp.h and pwd.h if available.
They are required for the declarations of getgrgid and getpwuid resp.
(_jm_DECL_HEADERS): Check for grp.h and pwd.h.
Jim Meyering [Sun, 31 Dec 2000 09:06:54 +0000 (09:06 +0000)]
Improve performance by invoking gettext twice at the start,
instead of once for each file.
(long_time_format): New var.
(decode_switches): Initialize it, if format == long_format.
(print_long_format): Use it.
Jim Meyering [Fri, 29 Dec 2000 10:32:09 +0000 (10:32 +0000)]
Do not assume that mode_t uses the
traditional octal encoding. E.g. "chmod 1 FOO" should set
the other-execute bit of FOO even if S_IXOTH != 1.
(SUID, SGID, SVTX, RUSR, WUSR, XUSR, RGRP, WGRP, XGRP, ROTH,
WOTH, XOTH, ALLM): New macros.
(S_ISUID, S_ISGID, S_ISVTX, S_IRUSR, S_IWUSR, S_IXUSR,
S_IRGRP, S_IWGRP, S_IXGRP, S_IROTH, S_IWOTH, S_IXOTH):
Use them.
(S_ISGID): Fix typo; it was defaulting to the same value as S_ISUID.
(S_IRWXU, S_IRWXG, S_IRWXO): Specify defaults in terms of the above.
(mode_compile):
No need to use uintmax_t; unsigned long is long enough.
Don't bother to get suffix since we don't use it.