summaryrefslogtreecommitdiff
path: root/libiberty/getcwd.c
diff options
context:
space:
mode:
authorhuderlem <huderlem@gmail.com>2020-02-15 09:06:38 -0600
committerGitHub <noreply@github.com>2020-02-15 09:06:38 -0600
commit74e171579e0bbefbd72b83f3764fe504464bbdbe (patch)
tree8db5aacbe963fef56eb2d9965fc87db1a6642387 /libiberty/getcwd.c
parent27176890c4a688ea7de44d3f55af32827016a9fd (diff)
parentc6bcd24dfe44d58ed1b6bef6653270dbf6cd6bfa (diff)
Merge pull request #30 from camthesaxman/arm_support
Build ARM compiler
Diffstat (limited to 'libiberty/getcwd.c')
-rwxr-xr-xlibiberty/getcwd.c54
1 files changed, 54 insertions, 0 deletions
diff --git a/libiberty/getcwd.c b/libiberty/getcwd.c
new file mode 100755
index 0000000..06d55c0
--- /dev/null
+++ b/libiberty/getcwd.c
@@ -0,0 +1,54 @@
+/* Emulate getcwd using getwd.
+ This function is in the public domain. */
+
+/*
+NAME
+ getcwd -- get absolute pathname for current working directory
+
+SYNOPSIS
+ char *getcwd (char pathname[len], len)
+
+DESCRIPTION
+ Copy the absolute pathname for the current working directory into
+ the supplied buffer and return a pointer to the buffer. If the
+ current directory's path doesn't fit in LEN characters, the result
+ is NULL and errno is set.
+
+BUGS
+ Emulated via the getwd() call, which is reasonable for most
+ systems that do not have getcwd().
+
+*/
+
+#include "config.h"
+
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#include <errno.h>
+
+extern char *getwd ();
+extern int errno;
+
+#ifndef MAXPATHLEN
+#define MAXPATHLEN 1024
+#endif
+
+char *
+getcwd (buf, len)
+ char *buf;
+ int len;
+{
+ char ourbuf[MAXPATHLEN];
+ char *result;
+
+ result = getwd (ourbuf);
+ if (result) {
+ if (strlen (ourbuf) >= len) {
+ errno = ERANGE;
+ return 0;
+ }
+ strcpy (buf, ourbuf);
+ }
+ return buf;
+}