91 lines
1.3 KiB
C
91 lines
1.3 KiB
C
int ibuf1[259];
|
|
int ibuf2[259];
|
|
int eflg;
|
|
int lflg 1;
|
|
int line[2] {0, 1};
|
|
int chr[2] { -1, -1};
|
|
|
|
main(argc, argv)
|
|
char **argv;
|
|
{
|
|
register c1, c2;
|
|
char *arg;
|
|
|
|
if(argc < 3)
|
|
goto narg;
|
|
arg = argv[1];
|
|
if(arg[0] == '-' && arg[1] == 's') {
|
|
lflg--;
|
|
argv++;
|
|
argc--;
|
|
}
|
|
arg = argv[1];
|
|
if(arg[0] == '-' && arg[1] == 'l') {
|
|
lflg++;
|
|
argv++;
|
|
argc--;
|
|
}
|
|
if(argc < 3)
|
|
goto narg;
|
|
arg = argv[1];
|
|
if( arg[0]=='-' && arg[1]==0 )
|
|
ibuf1[0] = dup(0);
|
|
else if(fopen(arg, ibuf1) < 0)
|
|
goto barg;
|
|
arg = argv[2];
|
|
if(fopen(arg, ibuf2) < 0)
|
|
goto barg;
|
|
|
|
loop:
|
|
if (++chr[1]==0)
|
|
chr[0]++;
|
|
c1 = getc(ibuf1);
|
|
c2 = getc(ibuf2);
|
|
if(c1 == c2) {
|
|
if (c1 == '\n')
|
|
if (++line[1]==0)
|
|
line[0]++;
|
|
if(c1 == -1) {
|
|
if(eflg)
|
|
exit(1);
|
|
exit(0);
|
|
}
|
|
goto loop;
|
|
}
|
|
if(lflg == 0)
|
|
exit(1);
|
|
if(c1 == -1) {
|
|
arg = argv[1];
|
|
goto earg;
|
|
}
|
|
if(c2 == -1)
|
|
goto earg;
|
|
if(lflg == 1) {
|
|
printf("%s %s differ: char %s, line ", argv[1], arg,
|
|
locv(chr[0], chr[1]));
|
|
printf("%s\n", locv(line[0], line[1]));
|
|
exit(1);
|
|
}
|
|
eflg = 1;
|
|
printf("%5s %3o %3o\n", locv(chr[0], chr[1]), c1, c2);
|
|
goto loop;
|
|
|
|
narg:
|
|
printf("arg count\n");
|
|
exit(2);
|
|
|
|
barg:
|
|
printf("cannot open %s\n", arg);
|
|
exit(2);
|
|
|
|
earg:
|
|
printf("EOF on %s\n", arg);
|
|
exit(1);
|
|
}
|
|
|
|
putchar(c)
|
|
{
|
|
|
|
write(1, &c, 1);
|
|
}
|