1 #define _LARGEFILE64_SOURCE 1
10 open_file (const char *filename)
14 if (strcmp (filename, "-") == 0)
17 retval = fopen (filename, "r");
20 fprintf (stderr, "Error opening \"%s\": %m\n", filename);
28 close_file (FILE *f, const char *filename)
35 fprintf (stderr, "Error closing \"%s\": %m\n", filename);
41 get_character (FILE *f, const char *filename)
48 fprintf (stderr, "Error reading \"%s\": %m\n", filename);
56 dump_character (int c)
62 fputs (" EOF ", stdout);
65 printf (" (0x%02x %3d ", c, c);
75 main (int argc, char **argv)
82 fputs ("Syntax: cmpx <file1> <file2> [<file3>...]\n", stderr);
86 for (argi = 1; argi <= argc - 2; argi++)
91 char *f1_filename, *f2_filename;
92 int need_header = argc > 3;
94 f1_filename = argv[argi + 0];
95 f2_filename = argv[argi + 1];
97 f1 = open_file (f1_filename);
98 f2 = open_file (f2_filename);
100 for (offset = 0 ;; offset++)
102 c1 = get_character (f1, f1_filename);
103 c2 = get_character (f2, f2_filename);
105 if (c1 == EOF && c2 == EOF)
112 printf ("%s\t%s\n", f1_filename, f2_filename);
115 printf ("0x%08llx", (unsigned long long) offset);
122 close_file (f1, f1_filename);
123 close_file (f2, f2_filename);