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

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

unix.superglobalmegacorp.com

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