diff options
author | Jim Meyering <jim@meyering.net> | 2001-09-04 20:28:31 +0000 |
---|---|---|
committer | Jim Meyering <jim@meyering.net> | 2001-09-04 20:28:31 +0000 |
commit | c01a38db4d78aea9457d664430dbd287b0f71907 (patch) | |
tree | 2945b4b11ade8ce93238ed11f33236b019d175dd | |
parent | 1e50f478127d9465b5d41d330018e2f4c8a35de0 (diff) | |
download | coreutils-c01a38db4d78aea9457d664430dbd287b0f71907.tar.xz |
Revert some of the previous change; intead,
fix the HAVE_GETCWD_NULL code to behave more like the
!HAVE_GETCWD_NULL code used to.
Include "xalloc.h".
(xgetcwd): Do not return NULL when memory is exhausted; instead,
invoke xalloc_die.
-rw-r--r-- | lib/xgetcwd.c | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/lib/xgetcwd.c b/lib/xgetcwd.c index 85ac36873..1409bcfba 100644 --- a/lib/xgetcwd.c +++ b/lib/xgetcwd.c @@ -45,6 +45,8 @@ char *getwd (); # define getcwd(Buf, Max) getwd (Buf) #endif +#include "xalloc.h" + /* Return the current directory, newly allocated, arbitrarily long. Return NULL and set errno on error. */ @@ -52,7 +54,10 @@ char * xgetcwd () { #if HAVE_GETCWD_NULL - return getcwd (NULL, 0); + char *cwd = getcwd (NULL, 0); + if (! cwd && errno == ENOMEM) + xalloc_die (); + return cwd; #else /* The initial buffer size for the working directory. A power of 2 @@ -65,12 +70,9 @@ xgetcwd () while (1) { - char *cwd; + char *buf = xmalloc (buf_size); + char *cwd = getcwd (buf, buf_size); int saved_errno; - char *buf = malloc (buf_size); - if (! buf) - return NULL; - cwd = getcwd (buf, buf_size); if (cwd) return cwd; saved_errno = errno; @@ -79,10 +81,7 @@ xgetcwd () return NULL; buf_size *= 2; if (buf_size == 0) - { - errno = ENOMEM; - return NULL; - } + xalloc_die (); } #endif } |