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]);