cmp.om (863B)
1 func main(argc: int, argv: **byte, envp: **byte) { 2 var a: int; 3 var b: int; 4 var alloc: alloc; 5 var fa: *file; 6 var fb: *file; 7 var out: *file; 8 var c: int; 9 var i: int; 10 11 setup_alloc(&alloc); 12 13 out = fopen(1, &alloc); 14 15 if argc != 3 { 16 die("usage: cmp file1 file2"); 17 } 18 19 a = open(argv[1], 0, 0); 20 if a < 0 { 21 fputs(out, "failed to open: "); 22 fputs(out, argv[1]); 23 fputs(out, "\n"); 24 exit(2); 25 } 26 27 b = open(argv[2], 0, 0); 28 if b < 0 { 29 fputs(out, "failed to open: "); 30 fputs(out, argv[2]); 31 fputs(out, "\n"); 32 exit(2); 33 } 34 35 fa = fopen(a, &alloc); 36 fb = fopen(b, &alloc); 37 38 i = 0; 39 loop { 40 c = fgetc(fa); 41 42 if c != fgetc(fb) { 43 fputs(out, argv[1]); 44 fputc(out, ' '); 45 fputs(out, argv[2]); 46 fputc(out, ' '); 47 fputs(out, "differ: byte "); 48 fputd(out, i); 49 fputc(out, '\n'); 50 exit(1); 51 } 52 53 if c == -1 { 54 break; 55 } 56 57 i = i + 1; 58 } 59 }