Paul Eggert [Thu, 25 Nov 2004 19:26:50 +0000 (19:26 +0000)]
(gl_FUNC_GETCWD_PATH_MAX): Renamed from
GL_FUNC_GETCWD_PATH_MAX for consistency. All uses changed.
Use the _ONCE methods, for efficiency.
Check for fcntl.h. In test program, include <errno.h>
and <fcntl.h> if available. Remove old K&R cruft from
test program. Check for common errors in GNU/Linux,
OpenBSD, and Solaris. Just set gl_cv_func_getcwd_path_max;
don't do AC_LIBOBJ, as that's getcwd.m4's job.
Paul Eggert [Thu, 25 Nov 2004 19:25:07 +0000 (19:25 +0000)]
David MacKenzie's old code was removed, so give
credit only to Jim Meyering and adjust the copyright dates.
Do not include <limits.h>, <stdio.h>, <sys/types.h>,
<stdlib.h>, <unistd.h>, "pathmax.h".
Instead, include "xgetcwd.h" (first) and "getcwd.h".
(INITIAL_BUFFER_SIZE): Remove.
(xgetcwd): Rely on getcwd, since we now depend on a reliable one.
Paul Eggert [Thu, 25 Nov 2004 19:23:32 +0000 (19:23 +0000)]
Replace by a copy of glibc/sysdeps/posix/getcwd.c, but
with the following changes.
(__set_errno): Parenthesize properly.
Include <stdbool.h>.
(MIN, MAX, MATCHING_INO): New macros.
(__getcwd): Define with prototype, not K&R form.
Use heuristics to allocate default buffer on stack if possible.
If AT_FDCWD is defined, use openat and fstatat to avoid O(N**2)
behavior, and to avoid the PATH_MAX limit when computing
../../../../...
Use MATCHING_INO to compare inode number to file.
Check for arithmetic overflow in size calculations.
Fix bug in reallocation of dot array that caused getcwd to fail
on directories nested deeper than 75.
Be more careful about saving errno on error.
Do not use realloc; use only free+malloc, as this is a bit
more flexible and avoids a needless copy operation.
Do not inspect st_dev and st_ino for symbolic links; POSIX
doesn't specify the latter.
Check for closedir errors.
Avoid needless casts.
Use "#ifdef weak_alias" around weak_alias, to be like other
glibc code.
The following changes to getcwd.c have effect only when used in
gnulib; they have no effect inside glibc proper.
(#pragma alloca) [defined _AIX && !defined __GNUC__]: Remove,
as alloca isn't used.
(alloca, __alloca): Likewise.
[!_LIBC]: Include "getcwd.h", "mempcpy.h".
Include <stddef.h>, <stdlib.h>, <string.h>, <limits.h>
unconditionally, as gnulib assumes C89 or better.
Do not include <sys/param.h>.
(errno) [!defined __GNU_LIBRARY__ && !defined STDC_HEADERS]: Remove
no-longer-necessary 'extern int errno' decl; gnulib assumes C89 or
better.
(NULL) [!defined NULL]: Remove; we assume C89 or better.
Include <dirent.h> in a way that is compatible with modern Autoconf.
(_D_ALLOC_NAMELEN, _D_EXACT_NAMLEN):
New macros, if not already defined.
Include <unistd.h> if _LIBC, not if __GNU_LIBRARY__.
Use "_LIBC", not "defined _LIBC", for consistency.
(HAVE_MEMPCPY): Remove; no longer needed now that gnulib has
a mempcpy module.
(__lstat, __closedir, __opendir, __readdir) [!_LIBC]: New macros.
(GETCWD_RETURN_TYPE): Remove. All uses replaced by char *.
Jim Meyering [Thu, 25 Nov 2004 12:43:53 +0000 (12:43 +0000)]
(.x.1): Remove now-unnecessary use of
locally-added --program-name=NAME option. Now, help2man gets
the name from the [NAME] section (i.e. from our .x file).
Jim Meyering [Wed, 24 Nov 2004 21:30:18 +0000 (21:30 +0000)]
Since the changes of 2004-05-22, the u.saved_cwd member at
the bottom of the active-directory stack was no longer
strictly necessary. This change removes that member and uses
the newer cwd_state parameter for the final restore_cwd.
(struct AD_ent) [u]: Remove now-unnecessary union.
[dev_ino]: Rename from `a'.
(AD_pop_and_chdir): Add a parameter to play the role of just-removed
bottom-of-stack cwd-state member.
(AD_pop_and_chdir): No longer return boolean. Adjust caller.
(AD_push_initial): Remove CWD parameter. Adjust caller.
Paul Eggert [Tue, 23 Nov 2004 20:43:47 +0000 (20:43 +0000)]
(posix_date): Remove; not needed as a static var.
All uses rewritten.
(touch): Use new futimens function to operate more efficiently
in some cases. Don't stat/fstat existing file when
(!amtime_now && change_times == (CH_ATIME | CH_MTIME)); the
old time stamps aren't needed in that case.
(main): change_times is int, not bool. Simplify test for
change_times.
Paul Eggert [Tue, 23 Nov 2004 20:42:13 +0000 (20:42 +0000)]
(__attribute__, ATTRIBUTE_UNUSED): New macros.
(futimens): New function, which uses futimes if available.
(futimens, utimens): Support timespec==NULL, with same semantics
as utime and utimens.
Paul Eggert [Wed, 17 Nov 2004 03:41:16 +0000 (03:41 +0000)]
Include <limits.h>, for PATH_MAX.
(xgetcwd): Set errno correctly when failing.
Work around Solaris 9 bug: getcwd sets errno==ERANGE even though
the failure is actually due to a PATH_MAX problem.
Paul Eggert [Wed, 17 Nov 2004 01:02:47 +0000 (01:02 +0000)]
(_getopt_initialize, _getopt_internal_r, _getopt_internal):
New arg POSIXLY_CORRECT. All callers changed.
(getopt): Argv is now char * const *, as per standard.
(_getopt_internal_r, _getopt_internal): Argv is now char **,
not char *__getopt_argv_const *.
Paul Eggert [Tue, 16 Nov 2004 20:29:58 +0000 (20:29 +0000)]
(General output formatting): -x doesn't have
an operand.
(Formatting the file names): Warn that even with -N unprintable
chars are still printed as '?' some times.
(rm invocation): Reword rm -d to note that it's sometimes useful
on non-directories.
(logname invocation, users invocation, who invocation):
The utmp and wtmp file names vary from system to system.
Paul Eggert [Tue, 16 Nov 2004 07:46:08 +0000 (07:46 +0000)]
(C_ASCII, C_EBCDIC, C_IBM, C_BLOCK, C_UNBLOCK,
C_LCASE, C_UCASE, C_SWAB, C_NOERROR, C_NOTRUNC, C_SYNC, C_TWOBUFS,
C_NOCREAT, C_EXCL, C_FDATASYNC, C_FSYNC): Now constants, not
macros.
(STATUS_NOXFER, statuses): New constants.
(usage, print_stats, scanargs): Add support for status=noxfer.
(usage): Update status output to match new behavior.
(print_stats): Always output complete byte count.
Put space between numbers and units, as SI requires.
Use ngettext so that i18n can use plurals for "byte" and "second".
Don't multiply by 1e-9 (inexact); divide by 1e9 (which is exact).
(iflag_error_msgid, oflag_error_msgid): Remove; replace uses by
the string.
Paul Eggert [Mon, 15 Nov 2004 06:49:59 +0000 (06:49 +0000)]
Include "human.h".
(w_bytes, start_time): New vars.
(usage): Document new I/O statistics output
(print_stats): Output new I/O statistics.
(cleanup): Do statistics after closing stdin and stdout, so that
the times are more accurate.
(write_output, dd_copy): Count output bytes.
(main): Get initial value of clock.
Jim Meyering [Sun, 14 Nov 2004 08:56:53 +0000 (08:56 +0000)]
(usage): Put the description of `[-n] STRING'
on two lines, one for `-n STRING' and one for `STRING' so that
help2man properly escapes the `-'. Otherwise, the hyphen is
rendered inappropriately in UTF-8 locales.