Age | Commit message (Collapse) | Author |
|
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.
|
|
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 *.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(futimens): New function, which uses futimes if available.
(futimens, utimens): Support timespec==NULL, with same semantics
as utime and utimens.
|
|
|
|
|
|
|
|
|
|
|
|
asking the user to report the problem.
|
|
|
|
|
|
(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.
|
|
|
|
|
|
_getopt_long_r, _getopt_long_only_r): argv is char **,
not char *__getopt_argv_const *.
|
|
_getopt_long_only_r): Argv is now char**, not char *__getopt_argv_const*.
|
|
_getopt_long_only_r): Argv is now char **, not char *__getopt_argv_const*.
|
|
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 *.
|
|
(canon_host): Use getaddrinfo if available, so that IPv6 works.
Use strdup instead of malloc/strcpy to duplicate strings.
|
|
|
|
(day, relunit): Allow it for relative times.
(relative_time_table): Use tORDINAL for ordinals.
|
|
|
|
|
|
(human_space_before_unit): New constant.
|
|
|
|
|
|
closed initially, since some programs don't write to stdout in the
normal course of operation (other than --version and --help), and
we don't want this function to make e.g. `cp 1 2 >&-' fail.
But do fail if it was closed and someone has tried to write to it.
E.g., printf 'foo' >&-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(close_stdout): Always close stdout. I.e., don't
return early when it seems there's nothing to flush.
Don't include __fpending.h.
|
|
|
|
|
|
|
|
|