Annotation of 3BSD/cmd/cmp.c, revision 1.1.1.1

1.1       root        1: #include <stdio.h>
                      2: #include <ctype.h>
                      3: 
                      4: FILE   *file1,*file2;
                      5: int    eflg;
                      6: int    lflg    = 1;
                      7: long   line    = 1;
                      8: long   chr     = 0;
                      9: long   skip1;
                     10: long   skip2;
                     11: 
                     12: long   otoi();
                     13: 
                     14: main(argc, argv)
                     15: char **argv;
                     16: {
                     17:        register c1, c2;
                     18:        char *arg;
                     19: 
                     20:        if(argc < 3)
                     21:                goto narg;
                     22:        arg = argv[1];
                     23:        if(arg[0] == '-' && arg[1] == 's') {
                     24:                lflg--;
                     25:                argv++;
                     26:                argc--;
                     27:        }
                     28:        arg = argv[1];
                     29:        if(arg[0] == '-' && arg[1] == 'l') {
                     30:                lflg++;
                     31:                argv++;
                     32:                argc--;
                     33:        }
                     34:        if(argc < 3)
                     35:                goto narg;
                     36:        arg = argv[1];
                     37:        if( arg[0]=='-' && arg[1]==0 )
                     38:                file1 = stdin;
                     39:        else if((file1 = fopen(arg, "r")) == NULL)
                     40:                goto barg;
                     41:        arg = argv[2];
                     42:        if((file2 = fopen(arg, "r")) == NULL)
                     43:                goto barg;
                     44:        if (argc>3)
                     45:                skip1 = otoi(argv[3]);
                     46:        if (argc>4)
                     47:                skip2 = otoi(argv[4]);
                     48:        while (skip1) {
                     49:                if ((c1 = getc(file1)) == EOF) {
                     50:                        arg = argv[1];
                     51:                        goto earg;
                     52:                }
                     53:                skip1--;
                     54:        }
                     55:        while (skip2) {
                     56:                if ((c2 = getc(file2)) == EOF) {
                     57:                        arg = argv[2];
                     58:                        goto earg;
                     59:                }
                     60:                skip2--;
                     61:        }
                     62: 
                     63: loop:
                     64:        chr++;
                     65:        c1 = getc(file1);
                     66:        c2 = getc(file2);
                     67:        if(c1 == c2) {
                     68:                if (c1 == '\n')
                     69:                        line++;
                     70:                if(c1 == EOF) {
                     71:                        if(eflg)
                     72:                                exit(1);
                     73:                        exit(0);
                     74:                }
                     75:                goto loop;
                     76:        }
                     77:        if(lflg == 0)
                     78:                exit(1);
                     79:        if(c1 == EOF) {
                     80:                arg = argv[1];
                     81:                goto earg;
                     82:        }
                     83:        if(c2 == EOF)
                     84:                goto earg;
                     85:        if(lflg == 1) {
                     86:                printf("%s %s differ: char %ld, line %ld\n", argv[1], arg,
                     87:                        chr, line);
                     88:                exit(1);
                     89:        }
                     90:        eflg = 1;
                     91:        printf("%6ld %3o %3o\n", chr, c1, c2);
                     92:        goto loop;
                     93: 
                     94: narg:
                     95:        printf("cmp: arg count\n");
                     96:        exit(2);
                     97: 
                     98: barg:
                     99:        if (lflg)
                    100:        printf("cmp: cannot open %s\n", arg);
                    101:        exit(2);
                    102: 
                    103: earg:
                    104:        printf("cmp: EOF on %s\n", arg);
                    105:        exit(1);
                    106: }
                    107: 
                    108: long otoi(s)
                    109: char *s;
                    110: {
                    111:        long v;
                    112:        int base;
                    113: 
                    114:        v = 0;
                    115:        base = 10;
                    116:        if (*s == '0')
                    117:                base = 8;
                    118:        while(isdigit(*s))
                    119:                v = v*base + *s++ - '0';
                    120:        return(v);
                    121: }

unix.superglobalmegacorp.com

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