Add original unix v6
This commit is contained in:
@@ -0,0 +1,90 @@
|
||||
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);
|
||||
}
|
||||
Reference in New Issue
Block a user