/* * Copyright 1999 by The XFree86 Project, Inc. */ /* * Reverse a pathname. It returns a relative path that can be used to undo * 'cd argv[1]'. * * It is impossible to do this in general, but this handles the cases that * come up in imake. Maybe imake should use an absolute path for $(TOP) * instead of a relative path so that this problem can be avoided? */ #include #include #include int main(int argc, char *argv[]) { int levels = 0; char *p; /* Silently ignore invalid usage */ if (argc != 2) exit(0); /* Split the path and count the levels */ p = strtok(argv[1], "/"); while (p) { if (strcmp(p, ".") == 0) ; else if (strcmp(p, "..") == 0) levels--; else levels++; p = strtok(NULL, "/"); } while (levels-- > 0) printf("../"); printf("\n"); exit(0); }