Jim Meyering [Fri, 23 Sep 2005 20:13:49 +0000 (20:13 +0000)]
Use `verify' to ensure that our hard-coded
bytes_to_*_digits arrays are long enough. Of course, 17+-byte
integral types aren't on the near horizon, but just in case...
(MAX_INTEGRAL_TYPE_SIZE): Move definition to precede new first use.
(bytes_to_oct_digits, bytes_to_signed_dec_digits):
(bytes_to_unsigned_dec_digits, bytes_to_hex_digits): Change base
type from `char' to the clearer `unsigned int'.
Paul Eggert [Fri, 23 Sep 2005 19:18:27 +0000 (19:18 +0000)]
* lib/utimens.c (futimens): Use futimesat if available.
Prefer it to futimes since it doesn't have the futimes bug.
* m4/utimens.m4 (gl_UTIMENS): Check for futimesat.
Paul Eggert [Fri, 23 Sep 2005 17:47:15 +0000 (17:47 +0000)]
(GL_CONCAT0, GL_CONCAT): Remove.
(verify): Don't use the __LINE__ trick, as it doesn't work in general.
Instead, declare a function that returns a pointer to an array,
and use verify_type__ to declare the size of the array.
Problem and germ of a solution reported by Bruno Haible.
Paul Eggert [Fri, 23 Sep 2005 05:12:50 +0000 (05:12 +0000)]
* lib/getaddrinfo.c [HAVE_NETINET_IN_H]: Include <netinet/in.h>.
Problem reported by Eric Blake.
(getaddrinfo): Initialize se so that it's not garbage.
Redo internal storage allocation so that it doesn't make unportable
assumptions about alignment.
Fix a memory leak.
Paul Eggert [Thu, 22 Sep 2005 07:00:24 +0000 (07:00 +0000)]
(gl_PREREQ): Require gl_FUNC_GETLINE rather than
AM_FUNC_GETLINE. Require gl_FUNC_GETPASS_GNU rather than
gl_FUNC_GETPASS. Require gl_MBCHAR and gl_MBITER.
Paul Eggert [Thu, 22 Sep 2005 06:39:14 +0000 (06:39 +0000)]
(GL_CONCAT): Remove.
Include "verify.h" instead.
(ARGMATCH_CONSTRAINT, ARGMATCH_ASSERT): Remove.
(ARGMATCH_VERIFY): Rewrite in terms of new verify macros.
Paul Eggert [Thu, 22 Sep 2005 06:32:52 +0000 (06:32 +0000)]
(VERIFY_EXPR, X2NREALLOC, X2REALLOC): Remove.
The latter two macros are moving to ../src/system.h for now.
This reverts this file to the gnulib version.
Jim Meyering [Tue, 20 Sep 2005 13:51:01 +0000 (13:51 +0000)]
(fdopendir): Be sure to close the supplied
file descriptor before returning. This makes our replacement
implementation a little closer to Solaris's, where fdopendir
ties the file descriptor to the returned DIR* pointer.
Paul Eggert [Sat, 17 Sep 2005 06:54:22 +0000 (06:54 +0000)]
(set_stat_atime, set_stat_ctime, set_stat_mtime): Remove; they were
buggy in the HAVE_STRUCT_STAT_ST_SPARE1 case, and they were dubious
anyway. I rewrote 'tar' to not use them any more.
Jim Meyering [Fri, 16 Sep 2005 17:53:40 +0000 (17:53 +0000)]
(subfmt-up1): Put quotes around format string
to protect `^' from interpretation by some shells.
Add a use of OUT_SUBST to compensate for Solaris strftime's slightly
different formatting of %c.
Jim Meyering [Fri, 16 Sep 2005 08:08:32 +0000 (08:08 +0000)]
Include fprintftime.h.
Don't include strftime.h or xanstrftime.h -- no longer needed.
(show_date): Use new fprintftime function rather than xanstrftime.
Correct comment: this function no longer handles a NULL format string.
Paul Eggert [Fri, 16 Sep 2005 07:39:41 +0000 (07:39 +0000)]
Include stat-time.h.
(SYSCALL_RESOLUTION): Depend on whether various struct stat
members exist, not on the obsolescent ST_MTIM_NSEC.
(utimecmp): Use the new stat-time functions rater than TIMESPEC_NS.
Paul Eggert [Fri, 16 Sep 2005 07:39:18 +0000 (07:39 +0000)]
(ST_TIME_CMP_NS, ST_TIME_CMP, ATIME_CMP, CTIME_CMP):
(MTIME_CMP, TIMESPEC_NS): Remove. Now done by stat-time.h,
in a different way.
(timespec_cmp): New function.
Jim Meyering [Fri, 16 Sep 2005 07:31:29 +0000 (07:31 +0000)]
[FPRINTFTIME] (fprintftime): Provide a new interface:
size_t fprintftime (FILE *fp, char const *fmt, struct tm const *tm,
int utc, int nanoseconds);
Background:
date should not have to allocate a megabyte of virtual memory to
handle a format argument like +%1048575T. When implemented with
strftime, it must allocate such a buffer, use strftime to fill it
in, print it, then free it.
With fprintftime, it simply prints everything and exits.
With no need for memory allocation, that's one fewer way to fail.