|
|
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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.