1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
/*
Compare two files line by line, output differences to stderr.
Exit status is 0 if files are the same, 1 if different.
Author: Frederic.Devernay@m4x.org
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(int argc, char **argv)
{
FILE *fp1, *fp2;
char buf1[1024], buf2[1024];
int differences = 0;
if (argc != 3) {
fprintf(stderr,"Usage: %s filename1 filename2\n", argv[0]);
exit(2);
}
fp1 = fopen(argv[1],"r");
if (fp1 == NULL) {
perror("Error: cannot open input file");
exit(1);
}
fp2 = fopen(argv[2], "r");
if (fp2 == NULL) {
perror("Error: cannot open input file");
exit(1);
}
while (fgets(buf1, sizeof(buf1), fp1) != NULL)
{
if(fgets(buf2, sizeof(buf2), fp2) == NULL) {
fprintf(stderr, "<%s", buf1);
++differences;
}
else if(strcmp(buf1, buf2) != 0)
{
fprintf(stderr, "<%s", buf1);
fprintf(stderr, ">%s", buf2);
++differences;
}
}
while(fgets(buf2, sizeof(buf2), fp2) != NULL) {
fprintf(stderr, ">%s", buf2);
++differences;
}
if (differences != 0) {
fprintf(stderr,"Total differences between files '%s' and '%s': %d lines\n",
argv[1], argv[2], differences);
}
exit(differences != 0);
}
|