1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <string.h>
4 #include <gx_validation_compare_file_data.h>
5 
6 #define GX_SUCCESS 0
7 #define GX_FAILURE 1
8 
cleanup_file(FILE * file,char * buffer)9 static void cleanup_file(FILE *file, char * buffer)
10 {
11     if(file)
12         fclose(file);
13 
14     if(buffer)
15         free(buffer);
16 }
17 
gx_validation_compare_file_data(char * golden_file_name,char * output_file_name)18 int  gx_validation_compare_file_data(char *golden_file_name, char *output_file_name)
19 {
20     FILE *golden_file, *output_file;
21     int size1, size2;
22     char *output_frame_buffer=NULL, *golden_frame_buffer=NULL;
23 
24     golden_file = fopen(golden_file_name, "rb");
25     output_file = fopen(output_file_name, "rb");
26     if(!golden_file)
27     {
28         printf("Cannot open file: %s\n", golden_file_name);
29         return(GX_FAILURE);
30     }
31 
32     if(!output_file)
33     {
34         printf("Cannot open file: %s\n", output_file_name);
35         fclose(golden_file);
36         return(GX_FAILURE);
37     }
38 
39     fseek(golden_file, 0, SEEK_END);
40     size1 = ftell(golden_file);
41 
42 
43     fseek(output_file, 0, SEEK_END);
44     size2 = ftell(output_file);
45 
46     if(size1 != size2)
47     {
48         cleanup_file(golden_file, golden_frame_buffer );
49         cleanup_file(output_file, output_frame_buffer );
50         return GX_FAILURE;
51     }
52 
53     output_frame_buffer = (char*)malloc(sizeof(char)*size1);
54     if(output_frame_buffer == NULL)
55     {
56         cleanup_file(output_file, output_frame_buffer );
57         return GX_FAILURE;
58     }
59 
60     golden_frame_buffer = (char*)malloc(sizeof(char)*size2);
61 
62     if(golden_frame_buffer == NULL)
63     {
64         cleanup_file(golden_file, golden_frame_buffer );
65         return GX_FAILURE;
66     }
67 
68     rewind(golden_file);
69     rewind(output_file);
70 
71     size2 = fread(golden_frame_buffer, 1,size1,golden_file);
72     if(size1 != size2)
73     {
74         cleanup_file(golden_file, golden_frame_buffer );
75         cleanup_file(output_file, output_frame_buffer );
76         return GX_FAILURE;
77     }
78 
79     size2 = fread(output_frame_buffer, 1,size1,output_file);
80     if(size1 != size2)
81     {
82         cleanup_file(golden_file, golden_frame_buffer );
83         cleanup_file(output_file, output_frame_buffer );
84         return GX_FAILURE;
85     }
86 
87     if(memcmp(output_frame_buffer, golden_frame_buffer, size1))
88     {
89         cleanup_file(golden_file, golden_frame_buffer );
90         cleanup_file(output_file, output_frame_buffer );
91         return GX_FAILURE;
92     }
93     else
94     {
95         cleanup_file(golden_file, golden_frame_buffer );
96         cleanup_file(output_file, output_frame_buffer );
97         return GX_SUCCESS;
98     }
99 }
100