Annotation of 43BSD/contrib/ansi/vmsprep.c, revision 1.1

1.1     ! root        1: 
        !             2: #include <stdio.h>
        !             3: #include <ctype.h>
        !             4: #include <strings.h>
        !             5: 
        !             6: main(argc,argv) 
        !             7:        int argc;
        !             8:        char *argv[];
        !             9: 
        !            10: {
        !            11: 
        !            12: char cmd[1000];
        !            13: char *release;
        !            14: FILE *dirs;
        !            15: FILE *files;
        !            16: FILE *mover;
        !            17: FILE *popen();
        !            18: FILE *script;
        !            19: char dirname[1000];
        !            20: char filename[1000];
        !            21: char fixedname[1000];
        !            22: char fixedpath[1000];
        !            23: char tapename[10];
        !            24: char *scriptname = "UNPACK.COM";
        !            25: char *altscript = "/tmp/UNPACK.COMXXXXXX";
        !            26: char *startname = "AAAAAAAAA";
        !            27: int i;
        !            28: int j;
        !            29: char *k;
        !            30: int pathlen;
        !            31: int dot;
        !            32: int pipeout=0;
        !            33: 
        !            34:        if(argc < 2) usage();
        !            35:        if(*argv[1] == '-') {
        !            36:                mover = stdout;
        !            37:                pipeout=1;
        !            38:        } else {
        !            39:                mover = fopen("vmsprep.namelist","w");
        !            40:        }
        !            41:        strcpy(tapename,startname);
        !            42:        if(pipeout) {
        !            43:                mktemp(altscript);
        !            44:                script = fopen(altscript,"w");
        !            45:        } else {
        !            46:                script = fopen(scriptname,"w");
        !            47:        }
        !            48:        for(j=1;j<argc;j++) {
        !            49:                if(j==1 && *argv[j]=='-') continue;
        !            50:                release = argv[j];
        !            51:                strcpy(dirname,release);
        !            52:                for(k=index(dirname,'/');k;k=index(k+1,'/')) {
        !            53:                        *k='\0';
        !            54:                        fprintf(script,"$ CREATE/DIR [.%s] \n",dirname);
        !            55:                        strcpy(dirname,release);
        !            56:                }
        !            57:                sprintf(cmd,
        !            58:                        "find %s \\! \\( -name RCS -o -name \\*,v -o -name SCCS -o -name s.\\* \\) -type d -print\n", release);
        !            59:                dirs = popen(cmd,"r");
        !            60:                while(!feof(dirs)) {
        !            61:                        *dirname = NULL;
        !            62:                        fscanf(dirs," %s ",dirname);
        !            63:                        if(*dirname == NULL) continue;
        !            64:                        for(i=0;i<strlen(dirname);i++) {
        !            65:                                if(dirname[i]=='/') {
        !            66:                                        dirname[i]='.';
        !            67:                                } else if (dirname[i]=='.') {
        !            68:                                        dirname[i]='Z';
        !            69:                                        fprintf(stderr,"vmsprep: warning - dot in filename illegal-");
        !            70:                                        fprintf(stderr,"dot replaced by 'Z' %s\n",filename);
        !            71:                                } else if (!(isalpha(dirname[i]) || isdigit(dirname[i]))) {
        !            72:                                        fprintf(stderr," error:  bad character in directory name %s\n",
        !            73:                                                        dirname);
        !            74:                                } else if(islower(dirname[i])) {
        !            75:                                        dirname[i]=toupper(dirname[i]);
        !            76:                                }
        !            77:                        }
        !            78:                        fprintf(script,"$ CREATE/DIR [.%s] \n",dirname);
        !            79:                }
        !            80:                pclose(dirs);
        !            81: 
        !            82:                sprintf(cmd,
        !            83:                        "find %s \\! \\( -name RCS -o -name \\*,v -o -name SCCS -o -name s.\\* \\) -type f -print\n", release);
        !            84:                files = popen(cmd,"r");
        !            85:                while(!feof(files)) {
        !            86:                        fscanf(files," %s ",filename);
        !            87:                        if(*filename == NULL) continue;
        !            88:                        k = rindex(filename,'/') ;
        !            89:                        if(k != 0) {
        !            90:                                pathlen = k - filename;
        !            91:                        } else {
        !            92:                                pathlen=0;
        !            93:                                k = filename - 1;
        !            94:                        }
        !            95:                        strncpy(fixedpath,filename,pathlen);
        !            96:                        fixedpath[pathlen]='\0';
        !            97:                        strcpy(fixedname,k+1);
        !            98:                        for(i=0;i<pathlen;i++) {
        !            99:                                if(fixedpath[i]=='/') {
        !           100:                                        fixedpath[i]='.';
        !           101:                                } else if (fixedpath[i]=='.') {
        !           102:                                        fixedpath[i]='Z';
        !           103:                                } else if (!(isalpha(fixedpath[i]) || isdigit(fixedpath[i]))) {
        !           104:                                        fprintf(stderr," error:  bad character in file name %s\n",
        !           105:                                                        filename);
        !           106:                                } else if(islower(fixedpath[i])) {
        !           107:                                        fixedpath[i]=toupper(fixedpath[i]);
        !           108:                                }
        !           109:                        }
        !           110:                        for(i=0;i<strlen(fixedname);i++) {
        !           111:                                if(fixedname[i]=='/') {
        !           112:                                        fixedname[i]='.';
        !           113:                                } else if (fixedname[i]=='.') {
        !           114:                                        dot++;
        !           115:                                        if(dot != 1) fixedname[i]='Z';
        !           116:                                } else if (!(isalpha(fixedname[i]) || isdigit(fixedname[i]))) {
        !           117:                                        fprintf(stderr," error:  bad character in file name %s\n",
        !           118:                                                        filename);
        !           119:                                        fixedname[i]='Z';
        !           120:                                } else if(islower(fixedname[i])) {
        !           121:                                        fixedname[i]=toupper(fixedname[i]);
        !           122:                                }
        !           123:                        }
        !           124:                        if(dot >1 ) 
        !           125:                                fprintf(stderr,"error:  too many dots in filename %s \n",
        !           126:                                        fixedname);
        !           127:                        sprintf(cmd,"%s %s.MOV\n", filename,tapename);
        !           128:                        fprintf(mover,"%s",cmd);
        !           129:                        if(*fixedpath != NULL) {
        !           130:                                fprintf(script,"$ RENAME %s.MOV [.%s]%s%s\n",tapename,fixedpath,
        !           131:                                                fixedname,dot==0?".":"");
        !           132:                        } else {
        !           133:                                fprintf(script,"$ RENAME %s.MOV []%s%s\n",tapename,fixedname,
        !           134:                                                dot==0?".":"");
        !           135:                        }
        !           136:                        dot=0;
        !           137:                        bumpname(tapename);
        !           138:                }
        !           139:        pclose(files);
        !           140:        }
        !           141:        fclose(script);
        !           142:        if(pipeout) fprintf(mover,"%s ",altscript);
        !           143:        fprintf(mover,"%s\n",scriptname);
        !           144:        fclose(mover);
        !           145: }
        !           146: 
        !           147: bumpname(name)
        !           148:        char name[10];
        !           149: 
        !           150: {
        !           151: int i;
        !           152:        for(i=8;i>=0;i--) {
        !           153:                name[i]++;
        !           154:                if(name[i] > 'Z') {
        !           155:                        name[i] = 'A';
        !           156:                } else {
        !           157:                        return;
        !           158:                }
        !           159:        }
        !           160: }
        !           161: usage() {
        !           162:        fprintf(stderr,"vmsprep:  usage:  vmsprep dirname [dirname...] \n");
        !           163:        exit();
        !           164: }

unix.superglobalmegacorp.com

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