summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Python/getcwd.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/Python/getcwd.c b/Python/getcwd.c
new file mode 100644
index 0000000..340acab
--- /dev/null
+++ b/Python/getcwd.c
@@ -0,0 +1,35 @@
+/* Quick hack to get posix.getcwd() working for pure BSD 4.3 */
+
+#include "sys/param.h"
+#include "errno.h"
+
+extern int errno;
+
+extern char *getwd();
+
+char *
+getcwd(buf, size)
+ char *buf;
+ int size;
+{
+ char localbuf[MAXPATHLEN+1];
+ char *ret;
+
+ if (size <= 0) {
+ errno = EINVAL;
+ return NULL;
+ }
+ ret = getwd(localbuf);
+ if (ret != NULL && strlen(localbuf) >= size) {
+ errno = ERANGE;
+ return NULL;
+ }
+ if (ret == NULL) {
+ errno = EACCES; /* Most likely error */
+ return NULL;
+ }
+ strncpy(buf, localbuf, size);
+ return buf;
+}
+
+/* PS: for really old systems you must popen /bin/pwd ... */