9 main (int argc
, char *argv
[])
15 printf ("usage: cmp A B\n");
20 fd
[0] = open (argv
[1]);
23 printf ("%s: open failed\n", argv
[1]);
26 fd
[1] = open (argv
[2]);
29 printf ("%s: open failed\n", argv
[1]);
43 bytes_read
[0] = read (fd
[0], buffer
[0], sizeof buffer
[0]);
44 bytes_read
[1] = read (fd
[1], buffer
[1], sizeof buffer
[1]);
45 min_read
= bytes_read
[0] < bytes_read
[1] ? bytes_read
[0] : bytes_read
[1];
49 for (i
= 0; i
< min_read
; i
++)
50 if (buffer
[0][i
] != buffer
[1][i
])
52 printf ("Byte %d is %02hhx ('%c') in %s but %02hhx ('%c') in %s\n",
54 buffer
[0][i
], buffer
[0][i
], argv
[1],
55 buffer
[1][i
], buffer
[1][i
], argv
[2]);
59 if (min_read
< bytes_read
[1])
60 printf ("%s is shorter than %s\n", argv
[1], argv
[2]);
61 else if (min_read
< bytes_read
[0])
62 printf ("%s is shorter than %s\n", argv
[2], argv
[1]);
65 printf ("%s and %s are identical\n", argv
[1], argv
[2]);