diff options
author | Tor Andersson <tor@ghostscript.com> | 2005-03-30 08:30:22 +0200 |
---|---|---|
committer | Tor Andersson <tor@ghostscript.com> | 2005-03-30 08:30:22 +0200 |
commit | ee154f16bd09a43359967f7e7b86c3677c09461d (patch) | |
tree | 08896cfa9ff55e05bfe7855965c620d45115d4d5 /util/cleanname.c | |
parent | 460ad7040d67a4a93a153f98095ff952a2b15d37 (diff) | |
download | mupdf-ee154f16bd09a43359967f7e7b86c3677c09461d.tar.xz |
rename part 1 -- files
Diffstat (limited to 'util/cleanname.c')
-rw-r--r-- | util/cleanname.c | 63 |
1 files changed, 0 insertions, 63 deletions
diff --git a/util/cleanname.c b/util/cleanname.c deleted file mode 100644 index e8a8ed86..00000000 --- a/util/cleanname.c +++ /dev/null @@ -1,63 +0,0 @@ -/* - * In place, rewrite name to compress multiple /, eliminate ., and process .. - */ - -#define SEP(x) ((x)=='/' || (x) == 0) - -char * -cleanname(char *name) -{ - char *p, *q, *dotdot; - int rooted; - - rooted = name[0] == '/'; - - /* - * invariants: - * p points at beginning of path element we're considering. - * q points just past the last path element we wrote (no slash). - * dotdot points just past the point where .. cannot backtrack - * any further (no slash). - */ - - p = q = dotdot = name + rooted; - - while (*p) - { - if (p[0] == '/') /* null element */ - p++; - - else if (p[0] == '.' && SEP(p[1])) - p += 1; /* don't count the separator in case it is nul */ - - else if (p[0] == '.' && p[1] == '.' && SEP(p[2])) - { - p += 2; - if (q > dotdot) { /* can backtrack */ - while (--q > dotdot && *q != '/') - ; - } else if (!rooted) { /* /.. is / but ./../ is .. */ - if (q != name) - *q++ = '/'; - *q++ = '.'; - *q++ = '.'; - dotdot = q; - } - } - - else { /* real path element */ - if (q != name + rooted) - *q++ = '/'; - while ((*q = *p) != '/' && *q != 0) - p++, q++; - } - } - - if (q == name) /* empty string is really ``.'' */ - *q++ = '.'; - - *q = '\0'; - - return name; -} - |