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