Annotation of coherent/b/conf/convert/lsys/cvlsys.c, revision 1.1.1.1

1.1       root        1: /* cvlsys.c: convert the information in L.sys and Permissions to
                      2:  * Taylor uucp sys file format. This will also peek into L-devices
                      3:  * if we find an ACU entry in our L.sys entry.
                      4:  */
                      5: 
                      6: #include <stdio.h>
                      7: #include <string.h>
                      8: #include <ctype.h>
                      9: 
                     10: #define PERMISSIONS    "/usr/lib/uucp/Permissions"
                     11: #define LSYS           "/usr/lib/uucp/L.sys"
                     12: #define        TSYS            "/usr/lib/uucp/sys"
                     13: 
                     14: 
                     15: #define MAX            175
                     16: #define BEHEMOTH       1024
                     17: 
                     18: /* this is what we need to parse from our L.sys entry */
                     19: 
                     20: char system[9];                        /* name of system to call/be called by */
                     21: char calltime[45];             /* valid time(s) to call */
                     22: char device[10];               /* device to call on */
                     23: char speed[7];                 /* baud rate */
                     24: char telno[51];                        /* phone number */
                     25: char chat_script[128];         /* chat script to log in with */
                     26: char acudev[15];               /* store ACU device from L-devices*/
                     27: char lsys[254];                        /* line read from L.sys */
                     28: 
                     29: /* stuff from Permissions file: */
                     30: 
                     31: char   request[4];             /* REQUEST files from Permissions */
                     32: char   transfer[4];            /* SEND files from Permissions */
                     33: char   readpath[MAX];          /* READ from Permissions */
                     34: char   no_readpath[MAX];       /* NOREAD from Permissions */
                     35: char   writepath[MAX];         /* WRITE from Permissions */
                     36: char   no_writepath[MAX];      /* NOWRITE from Permissions */
                     37: char   commands[MAX];          /* COMMANDS from Permissions */
                     38: char   myname[10];             /* MYNAME from Permissions */
                     39: 
                     40: char   parseline[BEHEMOTH];    /* this will be our concatenated Permissions */
                     41: 
                     42: int getrest();                 /* complete concatenating Permissions string */
                     43: int parseperm();               /* parse a field out of Permissions string */
                     44: int cvnowritwe();              /* convert NOREAD and NOWRITE to useable format */
                     45: int lsysentry();               /* read entry from L.sys file */
                     46: int permentry();               /* read entry from Permissions */
                     47: int parselsys();               /* parse L.sys entry */
                     48: int parseperm();               /* parse Permissions entry */
                     49: int getACU();                  /* get ACU device from L-devices */
                     50: int readperm();                /* read Permissions file */
                     51: int printsys();                        /* write sys file entry */
                     52: 
                     53: 
                     54: main()
                     55: {
                     56:        FILE *infp;
                     57: 
                     58:        if((infp = fopen(LSYS,"r")) == NULL){
                     59:                printf("Error opening %s for input.\n",LSYS);
                     60:                exit(1);
                     61:        }
                     62: 
                     63:        if(getACU()){
                     64:                printf("failed to find ACU device!\n");
                     65:                exit(1);
                     66:        }
                     67: 
                     68:        while(lsysentry(infp)){
                     69:                if(lsys[0] != '#'){     /* we don't want to process a comment */
                     70:                        readperm(system);       /* get Permissions information */
                     71:                        printsys();             /* print sys file entry */
                     72:                        lsys[0] = '\0';         /* the terminator... he's back */
                     73:                }else{
                     74:                        printf("Skipping comment line in L.sys\n");
                     75:                }
                     76:        }
                     77: 
                     78:        fclose(infp);
                     79: }
                     80: 
                     81: 
                     82: /* lsysentry(): read a line from L.sys and pass it on to be parsed
                     83:  *     into sys entries for use by Taylor uucp.
                     84:  */
                     85: 
                     86: lsysentry(infp)
                     87: FILE *infp;
                     88: {
                     89: 
                     90:        char next_line[80];     /* dummy for possible line continuation */
                     91: 
                     92:        if(fgets(lsys,sizeof(lsys),infp) == NULL){
                     93:                return(0); /* probably hit EOF */
                     94:        }
                     95: #ifdef DEBUG
                     96:        printf("got %s",lsys);
                     97: #endif
                     98:        if(lsys[0] == '#'){     /* skip comments */
                     99:                return(1);
                    100:        }
                    101: 
                    102: 
                    103:        /* check for line continuation. we will read the next line and
                    104:         * concatenate it to the just read lsys line.
                    105:         */
                    106: 
                    107:        if(lsys[strlen(lsys) -2] == 92){        /* 92 = \ */
                    108:                if(fgets(next_line, sizeof(next_line),infp) == NULL){
                    109:                        printf("Error reading continued line in %s.\n",LSYS);
                    110:                        exit(1);
                    111:                }else{
                    112:        /* the next to last character should be the line continuation
                    113:         * character followed by a newline. We'll just terminate our
                    114:         * our string where we expect the continuation to be.
                    115:         */
                    116:                        lsys[strlen(lsys) -2] = '\0';
                    117:                        strcat(lsys,next_line);
                    118:                }
                    119: #ifdef DEBUG
                    120:                printf("Line continuation detected. Just added:\n");
                    121:                printf("%s",next_line);
                    122:                printf("%s",lsys);
                    123: #endif
                    124:        }
                    125: 
                    126:        return(parselsys(lsys));
                    127: }
                    128: 
                    129: 
                    130: /* parselsys(): parses the lsys line just read into the fields needed
                    131:  *     to build a Taylor sys entry.
                    132:  */
                    133: 
                    134: parselsys(lsys)
                    135: char *lsys;
                    136: {
                    137:        char *ptrlsys;
                    138:        char *ptrlentry;
                    139: 
                    140:        strcpy(system,"");
                    141:        strcpy(calltime,"");
                    142:        strcpy(device,"");
                    143:        strcpy(speed,"");
                    144:        strcpy(telno,"");
                    145:        strcpy(chat_script,"");
                    146: 
                    147:        ptrlsys = lsys;
                    148: 
                    149:        /* parse out system name */
                    150:        ptrlentry = system;
                    151:        *ptrlentry = '\0';
                    152:        while(!isspace(*ptrlsys))
                    153:                *ptrlentry++ = *ptrlsys++;
                    154:        *ptrlentry = '\0';
                    155: 
                    156:        printf("Converting L.sys and Permissions entries for system %s.\n",
                    157:                system);
                    158: 
                    159:        while(isspace(*ptrlsys++))      /* skip whitespace */
                    160:                ;
                    161:        
                    162:        /* get calltime */
                    163:        ptrlentry = calltime;
                    164:        *ptrlentry = '\0';
                    165: 
                    166:        ptrlsys--;
                    167: 
                    168:        while(!isspace(*ptrlsys)){
                    169:                *ptrlentry++ = *ptrlsys++;
                    170:        }
                    171:        *ptrlentry = '\0';
                    172: 
                    173:        while(isspace(*ptrlsys++))      /* skip whitespace */
                    174:                ;
                    175: 
                    176:        ptrlsys--;
                    177: 
                    178:        /* get our device */
                    179:        ptrlentry = device;
                    180:        *ptrlentry = '\0';
                    181:        while(!isspace(*ptrlsys))
                    182:                *ptrlentry++ = *ptrlsys++;
                    183:        *ptrlentry = '\0';
                    184: 
                    185:        /* if this is a modem, which would be indicated by ACU in this field,
                    186:         * then copy the name of the ACU device previously fetched into device
                    187:         */
                    188: 
                    189:        if(device[0] == 'A'){
                    190:                if(0 == strcmp(acudev,NULL)){
                    191:                        printf("FATAL Configuration error. No ACU device was.\n");
                    192:                        printf("found in L-devices, yet you have defined an\n");
                    193:                        printf("L.sys entry with an ACU device. Aborting...\n");
                    194:                        exit(1);
                    195:                }
                    196:                strcpy(device, acudev);
                    197:        }
                    198: 
                    199:                        
                    200:        while(isspace(*ptrlsys++))      /* skip whitespace */
                    201:                ;
                    202: 
                    203: 
                    204:        ptrlsys--;
                    205: 
                    206:        /* get the speed (baud rate) */
                    207:        ptrlentry = speed;
                    208:        *ptrlentry = '\0';
                    209:        while(!isspace(*ptrlsys))
                    210:                *ptrlentry++ = *ptrlsys++;
                    211:        *ptrlentry = '\0';
                    212: 
                    213:        while(isspace(*ptrlsys++))      /* skip whitespace */
                    214:                ;
                    215: 
                    216: 
                    217:        ptrlsys--;
                    218: 
                    219:        /* get telephone number */
                    220:        ptrlentry = telno;
                    221:        while(!isspace(*ptrlsys))
                    222:                *ptrlentry++ = *ptrlsys++;
                    223:        *ptrlentry = '\0';
                    224: 
                    225:        /* if no telephone number is found, then make sure the string is NULL */
                    226:        if(strcmp(telno,"\"\"") == 0)
                    227:                strcpy(telno,"");
                    228: 
                    229:        while(isspace(*ptrlsys++))      /* skip whitespace */
                    230:                ;
                    231: 
                    232:        /* the rest is our chat script. We copy up to the newline. */
                    233:        ptrlentry = chat_script;
                    234:        *ptrlentry = '\0';
                    235:        ptrlsys--;
                    236:        while(*ptrlsys != '\n'){
                    237:                *ptrlentry++ = *ptrlsys++;
                    238:        }
                    239:        *ptrlentry = '\0';
                    240: 
                    241: #ifdef DEBUG
                    242:        printf("system %s\n",system);
                    243:        printf("time %s\n",calltime);
                    244:        printf("port %s\n",device);
                    245:        printf("baud %s\n",speed);
                    246:        printf("phone %s\n",telno);
                    247:        printf("chat {%s}\n", chat_script);
                    248: #endif
                    249: 
                    250:        return(1);
                    251: }
                    252: 
                    253: 
                    254: 
                    255: /* printsys(): print out system information to Taylor sys file */
                    256: 
                    257: printsys()
                    258: {
                    259: 
                    260:        FILE *outfp;
                    261: 
                    262:        if((outfp = fopen(TSYS,"a")) == NULL){
                    263:                printf("Could not open %s for writing!\n",TSYS);
                    264:                exit(1);
                    265:        }
                    266: 
                    267:        fprintf(outfp,"system %s\n",system);
                    268:        fprintf(outfp,"time %s\n",calltime);
                    269:        fprintf(outfp,"baud %s\n",speed);
                    270:        fprintf(outfp,"port %s\n",device);
                    271:        
                    272:        if(telno[0] != '\0')
                    273:                fprintf(outfp,"phone %s\n",telno);
                    274: 
                    275:        fprintf(outfp,"chat %s\n",chat_script);
                    276:        fprintf(outfp,"protocol g\nprotocol-parameter g window 3\n");
                    277:        fprintf(outfp,"protocol-parameter g packet-size 64\n");
                    278: 
                    279:        if(myname[0] != '\0')
                    280:                fprintf(outfp,"myname %s\n", myname);
                    281: 
                    282:        if(request[0] != '\0')
                    283:                fprintf(outfp,"request %s\n",request);
                    284: 
                    285:        if(transfer[0] != '\0')
                    286:                fprintf(outfp,"transfer %s\n",transfer);
                    287: 
                    288:        if(readpath[0] != '\0')
                    289:                fprintf(outfp,"remote-send %s %s\n",readpath, no_readpath);
                    290: 
                    291:        if(writepath[0] != '\0')
                    292:                fprintf(outfp,"remote-receive %s %s\n",writepath, no_writepath);
                    293: 
                    294:        if(commands[0] != '\0')
                    295:                fprintf(outfp,"commands %s\n",commands);
                    296: 
                    297:        fprintf(outfp,"\n");
                    298:        fclose(outfp);
                    299: }

unix.superglobalmegacorp.com

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