Edit

IABSD.fr/xenocara/util/imake/revpath.c

Branch :

  • Show log

    Commit

  • Author : matthieu
    Date : 2006-11-25 16:15:45
    Hash : 782466d3
    Message : import from X.Org 7.2RC2

  • util/imake/revpath.c
  • /*
     * Copyright 1999 by The XFree86 Project, Inc.
     */
    /* $XFree86: xc/config/util/revpath.c,v 1.2 1999/02/01 11:55:49 dawes Exp $ */
    
    /*
     * 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 <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    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);
    }