// unix cmp util // license: this code is released in the public domain. Do what thou wilt. // @date 2023-03-15 09:41:27Z const std = @import("std"); const debug = std.debug; const assert = debug.assert; const os = std.os; const mem = std.mem; fn usage() void{ debug.print("usage: cmp file-a [file-b]\n compares 2 files bytes\n", .{}); os.exit(1); } pub fn main() !void{ var av = std.process.args(); _ = av.skip(); const fna = av.next() orelse ""; const fnb = av.next() orelse ""; if(0==fna.len) usage(); const fda = try os.open(fna, os.O.RDONLY, 0o444); defer os.close(fda); const fdb = if(0==fnb.len) os.STDIN_FILENO else try os.open(fnb, os.O.RDONLY, 0o444); defer os.close(fdb); const bsz = 64*1024; var bufa: [bsz]u8 = undefined; var bufb: [bsz]u8 = undefined; var offset: usize = 0; var lineno: usize = 1; while(true){ const rsza = try os.read(fda, &bufa); const rszb = try os.read(fdb, &bufb); if(rsza != rszb){ const sfn = if(rsza