Annotation of 43BSD/contrib/icon/bin/ixhdr.c, revision 1.1

1.1     ! root        1: #include <sys/types.h>
        !             2: #include <sys/stat.h>
        !             3: #include "../h/config.h"
        !             4: #define ICONX Iconx
        !             5: char *pptr;
        !             6: main(argc,argv)
        !             7: int argc;
        !             8: char **argv;
        !             9:    {
        !            10: 
        !            11:    char *path, *getenv();
        !            12:    char file[256];
        !            13:    char *name;
        !            14:    
        !            15:    name = argv[0];
        !            16:    /*
        !            17:     * If the name contains any slashes we skip the path search and
        !            18:     *  just try to run the file.
        !            19:     */
        !            20:    if (index(name,'/'))
        !            21:       doiconx(argv,name);
        !            22:    
        !            23:    pptr = path = getenv("PATH");
        !            24:    if (index(path,'.') == 0) {
        !            25:       if (canrun(name))
        !            26:          doiconx(argv,name);
        !            27:       }
        !            28:    while (trypath(name,file)) {
        !            29:       if (canrun(file))
        !            30:          doiconx(argv,file);
        !            31:       }
        !            32:    /*
        !            33:     * If we can't find it, we assume that it must exist somewhere
        !            34:     *  and infer that it's in the current directory.
        !            35:     */
        !            36:    if (canrun(name))
        !            37:       doiconx(argv,name);
        !            38:    exit(100);
        !            39:    }
        !            40: canrun(file)
        !            41: char *file;
        !            42:    {
        !            43:    struct stat statb;
        !            44:    if (access(file,5) == 0) {
        !            45:       stat(file,&statb);
        !            46:       if (statb.st_mode & S_IFREG)
        !            47:          return 1;
        !            48:       }
        !            49:    return 0;
        !            50:    }
        !            51: doiconx(av,file)
        !            52: char **av; char *file;
        !            53:    {
        !            54:    av[0] = file;
        !            55:    av[-1] = "-iconx";
        !            56:    execv(ICONX,&av[-1]);
        !            57:    exit(200);
        !            58:    }
        !            59: trypath(name,file)
        !            60: char *name, *file;
        !            61:    {
        !            62:    char *n, c;
        !            63:    
        !            64:    while (*pptr == ':')
        !            65:       pptr++;
        !            66:    if (!*pptr)
        !            67:       return 0;
        !            68:    do {
        !            69:       c = (*file++ = *pptr++);
        !            70:       } while (c != ':' && c);
        !            71:    pptr--;
        !            72:    file--;
        !            73:    
        !            74:    *file++ = '/';
        !            75:    while (*file++ = *name++);
        !            76:    *file = 0;
        !            77:    }
        !            78: exit(c)
        !            79:    {
        !            80:    _exit(c);
        !            81:    }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.