Annotation of 43BSD/contrib/ansi/vmsprep.c, revision 1.1.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.