diff options
author | Christopher Vogt <oss.nsp@cvogt.org> | 2016-02-06 13:03:36 -0500 |
---|---|---|
committer | Christopher Vogt <oss.nsp@cvogt.org> | 2016-03-04 15:06:30 -0500 |
commit | 974942db43ff2d1fa7ba71ad60f9bb9eae2d8631 (patch) | |
tree | d7235df9d4d6a67753dc2a20ab6bfcb7a24dc74c /realpath | |
download | cbt-974942db43ff2d1fa7ba71ad60f9bb9eae2d8631.tar.gz cbt-974942db43ff2d1fa7ba71ad60f9bb9eae2d8631.tar.bz2 cbt-974942db43ff2d1fa7ba71ad60f9bb9eae2d8631.zip |
CBT Version 1.0-BETA
Diffstat (limited to 'realpath')
-rw-r--r-- | realpath/realpath.c | 35 | ||||
-rwxr-xr-x | realpath/realpath.sh | 18 |
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 |