1/*
2 * Copyright 1999 by The XFree86 Project, Inc.
3 */
4
5/*
6 * Reverse a pathname.  It returns a relative path that can be used to undo
7 * 'cd argv[1]'.
8 *
9 * It is impossible to do this in general, but this handles the cases that
10 * come up in imake.  Maybe imake should use an absolute path for $(TOP)
11 * instead of a relative path so that this problem can be avoided?
12 */
13
14#include <stdio.h>
15#include <string.h>
16#include <stdlib.h>
17
18int
19main(int argc, char *argv[])
20{
21    int levels = 0;
22    char *p;
23
24    /* Silently ignore invalid usage */
25    if (argc != 2)
26	exit(0);
27
28    /* Split the path and count the levels */
29    p = strtok(argv[1], "/");
30    while (p) {
31	if (strcmp(p, ".") == 0)
32	    ;
33	else if (strcmp(p, "..") == 0)
34	    levels--;
35	else
36	    levels++;
37	p = strtok(NULL, "/");
38    }
39
40    while (levels-- > 0)
41	printf("../");
42
43    printf("\n");
44
45    exit(0);
46}
47