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