|
|
1.1 ! root 1: static char *sccsid = "@(#)cmp.c 4.2 (Berkeley) 4/29/83"; ! 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: perror(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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.