Annotation of 41BSD/cmd/uucp/expfile.c, revision 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.