Annotation of 41BSD/cmd/uucp/expfile.c, revision 1.1.1.1

1.1       root        1: #include "uucp.h"
                      2: #include <sys/types.h>
                      3: #include <sys/stat.h>
                      4: 
                      5: 
                      6: /*******
                      7:  *     expfile(file)   expand file name
                      8:  *     char *file;
                      9:  *
                     10:  *     return codes:  none
                     11:  */
                     12: 
                     13: expfile(file)
                     14: char *file;
                     15: {
                     16:        char *fpart;
                     17:        char user[20], *up;
                     18:        char full[100];
                     19:        int uid;
                     20: 
                     21:        switch(file[0]) {
                     22:        case '/':
                     23:                return;
                     24:        case '~':
                     25:                for (fpart = file + 1, up = user; *fpart != '\0'
                     26:                        && *fpart != '/'; fpart++)
                     27:                                *up++ = *fpart;
                     28:                *up = '\0';
                     29:                if (gninfo(user, &uid, full) != 0) {
                     30:                        strcpy(full, PUBDIR);
                     31:                }
                     32:        
                     33:                strcat(full, fpart);
                     34:                strcpy(file, full);
                     35:                return;
                     36:        default:
                     37:                strcpy(full, Wrkdir);
                     38:                strcat(full, "/");
                     39:                strcat(full, file);
                     40:                strcpy(file, full);
                     41:                return;
                     42:        }
                     43: }
                     44: 
                     45: 
                     46: /***
                     47:  *     isdir(name)     check if directory name
                     48:  *     char *name;
                     49:  *
                     50:  *     return codes:  0 - not directory  |  1 - is directory
                     51:  */
                     52: 
                     53: isdir(name)
                     54: char *name;
                     55: {
                     56:        int ret;
                     57:        struct stat s;
                     58: 
                     59:        ret = stat(name, &s);
                     60:        if (ret < 0)
                     61:                return(0);
                     62:        if ((s.st_mode & S_IFMT) == S_IFDIR)
                     63:                return(1);
                     64:        return(0);
                     65: }
                     66: 
                     67: 
                     68: /***
                     69:  *     mkdirs(name)    make all necessary directories
                     70:  *     char *name;
                     71:  *
                     72:  *     return 0  |  FAIL
                     73:  */
                     74: 
                     75: mkdirs(name)
                     76: char *name;
                     77: {
                     78:        int ret;
                     79:        char cmd[100], dir[100], *p;
                     80: 
                     81:        for (p = dir + 1;; p++) {
                     82:                strcpy(dir, name);
                     83:                if ((p = index(p, '/')) == NULL)
                     84:                        return(0);
                     85:                *p = '\0';
                     86:                if (isdir(dir))
                     87:                        continue;
                     88:                sprintf(cmd, "mkdir %s;chmod 0777 %s", dir, dir);
                     89:                DEBUG(4, "mkdir - %s\n", dir);
                     90:                ret = shio(cmd, NULL, NULL, User);
                     91:                if (ret != 0)
                     92:                        return(FAIL);
                     93:        }
                     94: }

unix.superglobalmegacorp.com

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