aboutsummaryrefslogtreecommitdiffstats
path: root/guts/getcwd.c
diff options
context:
space:
mode:
Diffstat (limited to 'guts/getcwd.c')
-rw-r--r--guts/getcwd.c40
1 files changed, 40 insertions, 0 deletions
diff --git a/guts/getcwd.c b/guts/getcwd.c
new file mode 100644
index 0000000..d8f4d36
--- /dev/null
+++ b/guts/getcwd.c
@@ -0,0 +1,40 @@
+/*
+ * static char *
+ * wrap_getcwd(char *buf, size_t size) {
+ * char * rc = NULL;
+ */
+ pseudo_debug(2, "wrap_getcwd: %p, %lu\n",
+ (void *) buf, (unsigned long) size);
+ if (!pseudo_cwd) {
+ pseudo_diag("Asked for CWD, but don't have it!\n");
+ errno = EACCES;
+ return NULL;
+ }
+ /* emulate Linux semantics in case of non-Linux systems. */
+ if (!buf) {
+ /* if we don't have one, something's very wrong... */
+ if (!size) {
+ size = pseudo_cwd_len;
+ }
+ if (size) {
+ buf = malloc(size);
+ } else {
+ pseudo_diag("can't figure out CWD: length %ld\n",
+ (unsigned long) pseudo_cwd_len);
+ }
+ if (!buf) {
+ pseudo_diag("couldn't allocate requested CWD buffer - need %ld byes\n",
+ (unsigned long) size);
+ errno = ENOMEM;
+ return NULL;
+ }
+ }
+ rc = buf;
+ memcpy(buf, pseudo_cwd, pseudo_cwd_len + 1);
+ if (!*buf) {
+ strcpy(buf, "/");
+ }
+
+/* return rc;
+ * }
+ */