summary refs log tree commit diff
path: root/src/cd.c
diff options
context:
space:
mode:
authorHerbert Xu <herbert@gondor.apana.org.au>2008-05-02 14:23:47 +0800
committerHerbert Xu <herbert@gondor.apana.org.au>2008-05-02 14:23:47 +0800
commitf0f930d60cd62f5fe5ba28460b43f333e8062b94 (patch)
treecd5cf2363e169277d8f30e7914600acfb3de3265 /src/cd.c
parent[JOBS] Fix cmdtxt crash on if statements (diff)
downloaddash-f0f930d60cd62f5fe5ba28460b43f333e8062b94.tar.gz
dash-f0f930d60cd62f5fe5ba28460b43f333e8062b94.zip
[CD] Restored non-glibc getcwd support
These days dash is expected to build with libraries other than
glibc so we need to support the old way of calling getcwd again.

Thanks to Dan McGee for reporting this bug when dash is built with
klibc.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to '')
-rw-r--r--src/cd.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/cd.c b/src/cd.c
index 1849c69..cb6e24d 100644
--- a/src/cd.c
+++ b/src/cd.c
@@ -241,8 +241,6 @@ updatepwd(const char *dir)
 }
 
 
-#define MAXPWD 256
-
 /*
  * Find out what the current directory is. If we already know the current
  * directory, this routine returns immediately.
@@ -251,8 +249,13 @@ inline
 STATIC char *
 getpwd()
 {
+#ifdef _GNU_SOURCE
 	char *dir = getcwd(0, 0);
 	return dir ? dir : nullstr;
+#else
+	char buf[PATH_MAX];
+	return getcwd(buf, sizeof(buf)) ? savestr(buf) : nullstr;
+#endif
 }
 
 int