Annotation of 43BSD/contrib/icon/bin/ixhdr.c, revision 1.1.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.