From 643d28471fd2f87e85a06875754c57e122bb4848 Mon Sep 17 00:00:00 2001 From: Eric Andersen Date: Mon, 30 Oct 2000 21:42:41 +0000 Subject: getcwd did not include the alloc-space-as-needed-on-NULL-buffer feature which busybox needed. So I added it. --- libc/unistd/getcwd.c | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) (limited to 'libc') diff --git a/libc/unistd/getcwd.c b/libc/unistd/getcwd.c index 12eda45ca..c0be5c39e 100644 --- a/libc/unistd/getcwd.c +++ b/libc/unistd/getcwd.c @@ -1,13 +1,10 @@ - +#include #include #include #include #include -/* - * These functions find the absolute path to the current working directory. - * - * They don't use malloc or large amounts of stack space. - */ + +/* These functions find the absolute path to the current working directory. */ static char *recurser(); /* Routine to go up tree */ static char *search_dir(); /* Routine to find the step back down */ @@ -19,21 +16,28 @@ static ino_t root_ino; static struct stat st; -char *getcwd(buf, size) -char *buf; -int size; +char *getcwd( char *buf, int size) { - path_buf = buf; path_size = size; if (size < 3) { errno = ERANGE; - return 0; + return NULL; } + + if (buf != NULL) + path_buf = buf; + else + { + path_buf = malloc (size); + if (path_buf == NULL) + return NULL; + } + strcpy(path_buf, "."); if (stat("/", &st) < 0) - return 0; + return NULL; root_dev = st.st_dev; root_ino = st.st_ino; -- cgit v1.2.3