From: Todd C. Miller Date: Sat, 20 Mar 1993 12:57:46 +0000 (+0000) Subject: Initial revision X-Git-Tag: SUDO_1_3_0~113 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=fd93ea8d4be12beda55e8769d1e795201069c079;p=sudo Initial revision --- diff --git a/qualify.c b/qualify.c new file mode 100644 index 000000000..399a04f04 --- /dev/null +++ b/qualify.c @@ -0,0 +1,51 @@ +#include +#include +#include + +char * mfq (p) + char * p; /* path to make fully qualified */ +{ + char * tmp1, * tmp2; + static char path[MAXPATHLEN+1]; + int done = 0; + + if ( *p == '/' ) /* starts at root */ + { + path[0] = '\0'; + ++p; + } + else +#ifdef hpux + getcwd(path, (size_t)(MAXPATHLEN+1)); +#else + getwd(path); +#endif + + while ((tmp1 = index(p, '/')) || !done) + { + if (tmp1) + *tmp1 = '\0'; /* only want up to '/' */ + else + done = 1; + + if (!strcmp(p, "..")) + { + tmp2 = rindex(path, '/'); + if (tmp2) + *tmp2 = '\0'; /* nuke last component if it exists */ + } + else if (strcmp(p, ".")) /* not .. or . */ + { + strcat(path, "/"); /* add a '/' */ + strcat(path, p); /* add component form p */ + } + + if (tmp1) + { + *tmp1 = '/'; /* leave p as we found it */ + p = tmp1 + 1; + } + } + + return((char *)path); +}