Annotation of researchv10dc/cmd/wwb/double.c, revision 1.1.1.1

1.1       root        1: #include <stdio.h>
                      2: #include "cbtype.h"
                      3: char *getl();
                      4: char *filename;
                      5: int lineno;
                      6: char *beg1, *beg2;
                      7: char left = '\0';
                      8: char right = '\0';
                      9: main(argc,argv)
                     10: char *argv[];
                     11: {
                     12:        int doub = 0;
                     13: 
                     14:        if(argc <= 1){
                     15:                filename = "stdin";
                     16:                doub = work();
                     17:        }
                     18:        else {
                     19:                while(argc > 1){
                     20:                        argc--; argv++;
                     21:                        if(freopen(argv[0], "r", stdin) == NULL){
                     22:                                fprintf(stderr,"DOUBLE CANNOT OPEN FILE %s\n",argv[0]);
                     23:                                continue;
                     24:                        }
                     25:                        filename = argv[0];
                     26:                        doub += work();
                     27:                }
                     28:        }
                     29:        exit(doub);
                     30: }
                     31: char buf1[512];
                     32: char buf2[512];
                     33: int toggle;
                     34: char *p1, *p2;
                     35: char word[80], prev[80];
                     36: char delim[] = "delim";
                     37: work()
                     38: {
                     39:        char *b;
                     40:        int doub;
                     41:        int flag, lend;
                     42:        int skip;
                     43:        int l;
                     44:        doub = 0;
                     45:        lend = 1;
                     46:        lineno = 1;
                     47:        skip = 0;
                     48:        beg1 = p1 = getl(buf1);
                     49:        toggle = 1;
                     50:         strcpy(prev,"qqxz");
                     51:        while((flag=getword()) != 0){
                     52:                if(flag == 2)
                     53:                        if(toggle == 1)b=beg2;
                     54:                        else b=beg1;
                     55:                else if(toggle == 1)b = beg1;
                     56:                else b = beg2;
                     57:                if(*b == '.'){
                     58:                        if(strcmp(word,"TS") == 0 || strcmp(word,"EQ")== 0 ||
                     59:                            strcmp(word,"DS") == 0 || strcmp(word,"PS") == 0){
                     60:                                skip++;
                     61:                                continue;
                     62:                        }
                     63:                        else if(strcmp(word, "TE") == 0|| strcmp(word,"EN") == 0 ||
                     64:                              strcmp(word,"DE") == 0 ||strcmp(word,"PE") == 0){
                     65:                                if(--skip < 0)skip = 0;
                     66:                                continue;
                     67:                        }
                     68:                }
                     69:                if(strcmp(word, delim) == 0 && skip){
                     70:                        getdel();
                     71:                        continue;
                     72:                }
                     73:                 if (strcmp(word, prev) ==0 && skip == 0){
                     74:                         if(word[1]=='\0' && word[0] !='a')
                     75:                                 ;
                     76:                        else {
                     77:                                if(lend == 1 && flag != 3){
                     78:                                        if(flag == 2)l=lineno-1;
                     79:                                        else l=lineno;
                     80:                                        printf("%s twice line %d file %s\n",prev,l,filename);
                     81:                                        if(flag == toggle)
                     82:                                                printf("%s\n",buf1);
                     83:                                        else printf("%s\n",buf2);
                     84:                                }
                     85:                                else {
                     86:                                        printf("%s twice beginning line %d file %s\n",prev,lineno-1,filename);
                     87:                                        if(toggle == 2)printf("%s%s\n",buf1,buf2);
                     88:                                        else printf("%s%s\n",buf2,buf1);
                     89:                                }
                     90:                                 doub++;
                     91:                                flag = 1;
                     92:                         }
                     93:                 }
                     94:                 strcpy(prev,word);
                     95:                lend = flag;
                     96:         }
                     97:         return(doub);
                     98: }
                     99: getword()
                    100: {
                    101:        char *p, *w;
                    102:        int reset;
                    103:        int ret;
                    104:        int skip;
                    105:        ret = 1;
                    106:        reset=skip=0;
                    107:        w = word;
                    108:        if(toggle == 1)p=p1;
                    109:        else p=p2;
                    110: rest:
                    111:        while(*p != '\n'){
                    112:                if(*p == left){
                    113:                        if(skip == 1 && *p == right)skip = 0;
                    114:                        else {
                    115:                                skip = 1;
                    116:                                strcpy(prev,"qqxz");
                    117:                        }
                    118:                        p++;
                    119:                        continue;
                    120:                }
                    121:                if(*p == right){
                    122:                        skip = 0;
                    123:                        p++;
                    124:                        continue;
                    125:                }
                    126:                if(skip){
                    127:                        p++;
                    128:                        continue;
                    129:                }
                    130:                if(isalpha(*p) ||(w > word &&(*p == '-' || *p == '\''|| isdigit(*p))))
                    131:                        *w++ = *p++;
                    132:                else if(w == word){
                    133:                        if(*p == '\\'){
                    134:                                p++;
                    135:                                if(*p == '(')p+=2;
                    136:                                strcpy(prev,"qqxz");
                    137:                                ret=1;
                    138:                                reset=1;
                    139:                        }
                    140:                        if(isdigit(*p) || isop(*p)|| *p == '/' || *p == '('){
                    141:                                strcpy(prev,"qqxz");
                    142:                                ret=1;
                    143:                                reset=1;
                    144:                        }
                    145:                        p++;
                    146:                }
                    147:                else {
                    148:                        *w = '\0';
                    149:                        if(toggle == 1)p1 = p;
                    150:                        else p2 = p;
                    151:                        return(ret);
                    152:                }
                    153:         }
                    154:        lineno++;
                    155:        if(toggle == 1){
                    156:                beg2 = p = p2 = getl(buf2);
                    157:                toggle = 2;
                    158:        }
                    159:        else {
                    160:                beg1 = p = p1 = getl(buf1);
                    161:                toggle = 1;
                    162:        }
                    163:        if(p == 0)return(0);
                    164:        if(w == word){
                    165:                if(reset == 0)ret = 3;
                    166:                goto rest;
                    167:        }
                    168:        *w = '\0';
                    169:        return(2);
                    170: }
                    171: char *
                    172: getl(p)
                    173: char *p;
                    174: {
                    175:        int c;
                    176:        char *q;
                    177:        q = p;
                    178:        while((*q++ = c = getchar()) != '\n'){
                    179:                if(q >= p + 511){
                    180:                        printf("out of buffer space\n");
                    181:                        exit(1);
                    182:                }
                    183:                if(c == EOF)
                    184:                        return(0);
                    185:        }
                    186:        *q = '\0';
                    187:        return(p);
                    188: }
                    189: getdel(){
                    190:        char *p;
                    191:        if(toggle == 1)p=p1;
                    192:        else p=p2;
                    193:        while(*p == ' ')p++;
                    194:        left = *p++;
                    195:        right = *p++;
                    196:        if(toggle == 1)p1=p;
                    197:        else p2=p;
                    198: }

unix.superglobalmegacorp.com

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