os

An operating system
git clone https://erai.gay/code/os/
Log | Files | Refs | README | LICENSE

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 }