aboutsummaryrefslogtreecommitdiff
path: root/realpath
diff options
context:
space:
mode:
authorChristopher Vogt <oss.nsp@cvogt.org>2016-02-06 13:03:36 -0500
committerChristopher Vogt <oss.nsp@cvogt.org>2016-03-04 15:06:30 -0500
commit974942db43ff2d1fa7ba71ad60f9bb9eae2d8631 (patch)
treed7235df9d4d6a67753dc2a20ab6bfcb7a24dc74c /realpath
downloadcbt-974942db43ff2d1fa7ba71ad60f9bb9eae2d8631.tar.gz
cbt-974942db43ff2d1fa7ba71ad60f9bb9eae2d8631.tar.bz2
cbt-974942db43ff2d1fa7ba71ad60f9bb9eae2d8631.zip
CBT Version 1.0-BETA
Diffstat (limited to 'realpath')
-rw-r--r--realpath/realpath.c35
-rwxr-xr-xrealpath/realpath.sh18
2 files changed, 53 insertions, 0 deletions
diff --git a/realpath/realpath.c b/realpath/realpath.c
new file mode 100644
index 0000000..055dbcf
--- /dev/null
+++ b/realpath/realpath.c
@@ -0,0 +1,35 @@
+// http://stackoverflow.com/questions/284662/how-do-you-normalize-a-file-path-in-bash
+// realpath.c: display the absolute path to a file or directory.
+// Adam Liss, August, 2007
+// This program is provided "as-is" to the public domain, without express or
+// implied warranty, for any non-profit use, provided this notice is maintained.
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <libgen.h>
+#include <limits.h>
+
+static char *s_pMyName;
+void usage(void);
+
+int main(int argc, char *argv[])
+{
+ char
+ sPath[PATH_MAX];
+
+
+ s_pMyName = strdup(basename(argv[0]));
+
+ if (argc < 2)
+ usage();
+
+ printf("%s\n", realpath(argv[1], sPath));
+ return 0;
+}
+
+void usage(void)
+{
+ fprintf(stderr, "usage: %s PATH\n", s_pMyName);
+ exit(1);
+} \ No newline at end of file
diff --git a/realpath/realpath.sh b/realpath/realpath.sh
new file mode 100755
index 0000000..de4d964
--- /dev/null
+++ b/realpath/realpath.sh
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+# is there a realiable cross-platform was to do this without relying on compiling C code?
+
+DIR=$(dirname $(readlink "$0") 2>/dev/null || dirname "$0" 2>/dev/null )
+which realpath 2>&1 > /dev/null
+REALPATH_INSTALLED=$?
+
+if [ ! $REALPATH_INSTALLED -eq 0 ]; then
+ if [ ! -f $DIR/realpath ]; then
+ >&2 echo "Compiling realpath"
+ gcc $DIR/realpath.c -o $DIR/realpath
+ chmod u+x $DIR/realpath
+ fi
+ $DIR/realpath $1
+else
+ realpath $1
+fi