Paul Eggert [Mon, 26 Sep 2005 23:02:14 +0000 (23:02 +0000)]
(touch): Handle "touch -c - >&-" by checking for EBADF
and ENOSYS.
Do not pass "-" to futimens; pass NULL instead.
If close (STDIN_FILENO) fails, report the error separately instead
of letting the 'close' pollute errno.
Paul Eggert [Mon, 26 Sep 2005 23:01:00 +0000 (23:01 +0000)]
Include unistd.h, for dup2.
(futimens): Fix typo: HAVE_FUTIMESAT was misspelled in an #if.
(futimens) [! HAVE_FUTIMESAT]: If !file, set errno before returning -1.
Jim Meyering [Mon, 26 Sep 2005 07:25:23 +0000 (07:25 +0000)]
Work around the root cause of alpha-linux-1.sf.net test failure.
Remove all files in inner loop.
Otherwise, with a touch program that fails on unwritable files,
(this happens at least on linux-2.2.20) a -w file left behind
from a previous iteration could cause a spurious test failure.
Paul Eggert [Sun, 25 Sep 2005 04:18:39 +0000 (04:18 +0000)]
(__GNUC_PREREQ, always_inline, inline, pure):
Remove.
(__attribute): Define to empty unless GCC 3.1 or later.
This works around a core dump on OpenBSD 3.4, which has GCC
2.95.3, which dumps core when given __attribute__(()). It also
simplifies other tests, since we really don't want to bother with
worrying about which ancient version of GCC supported what.
Original problem reported by Yoann Vandoorselaere, with part of
the fix suggested by Derek Price.
Paul Eggert [Sun, 25 Sep 2005 03:07:33 +0000 (03:07 +0000)]
(HAVE_FCHMOD, HAVE_FCHOWN): Define to 0 if not defined.
(copy_reg): New args CHOWN_SUCCEDED and DST_SB. All callers changed.
Add a "goto close_src_and_dst_desc;" that was missing in the
previous patch.
(copy_reg) [HAVE_FCHOWN]: Prefer fchown to chown.
(copy_reg) [HAVE_FCHMOD]: Prefer fchmod to chmod.
(copy_internal): Don't invoke chown if fchown worked,
and likewise for chmod and fchmod.
Paul Eggert [Sat, 24 Sep 2005 23:14:04 +0000 (23:14 +0000)]
(libcoreutils_a_SOURCES): Remove mbchar.c, since
it doesn't build in OpenBSD 3.4. See
<http://lists.gnu.org/archive/html/bug-gnulib/2005-09/msg00242.html>.
Paul Eggert [Sat, 24 Sep 2005 23:13:19 +0000 (23:13 +0000)]
(gl_MBCHAR): Check for wchar.h and wctype.h, and
don't compile mbchar.c unless both headers exist. See
<http://lists.gnu.org/archive/html/bug-gnulib/2005-09/msg00242.html>.
Paul Eggert [Sat, 24 Sep 2005 22:59:06 +0000 (22:59 +0000)]
(__attribute): Define to nothing for GCC 2.
This works around a core dump on OpenBSD 3.4, which has GCC
2.95.3, which dumps core when given __attribute__(()).
Paul Eggert [Sat, 24 Sep 2005 07:05:27 +0000 (07:05 +0000)]
(uninit-64): Remove this test. It wasn't
portable in theory (it doesn't work on hosts where 'int' is 64
bits, example) or in practice (Solaris 8 localtime returns garbage
in tm_year for the specified date, but that's not coreutils's
fault).
Jim Meyering [Fri, 23 Sep 2005 23:05:39 +0000 (23:05 +0000)]
(verify_type__): Use `unsigned int' as the bitfield type
so we can once again use a positive bitfield width of 1 -- now we
don't have to explain why we were using a bitfield width of 2.
Paul Eggert [Fri, 23 Sep 2005 20:39:04 +0000 (20:39 +0000)]
(change_timestamps): First arg is source
struct stat, not file name. All uses changed.
(install_file_in_file): Stat the source file if necessary.
Don't try to change time stamps if copy_file did it.
Paul Eggert [Fri, 23 Sep 2005 20:38:34 +0000 (20:38 +0000)]
(copy_reg): Preserve time stamps if
x->preserve_timestamps is set, using futimens so that
we needn't resolve the path again.
(copy_internal): Don't preserve time stamps if copy_reg did it
already.
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.