7
7
8
8
#include "compat.h"
9
9
10
- static void ensure_header (diff_output_t * output ) {
10
+ static void
11
+ ensure_header (diff_output_t * output ) {
11
12
if (output -> archive_names [0 ] != NULL ) {
12
13
printf ("--- %s\n" , output -> archive_names [0 ]);
13
14
printf ("+++ %s\n" , output -> archive_names [1 ]);
@@ -16,63 +17,71 @@ static void ensure_header(diff_output_t *output) {
16
17
}
17
18
}
18
19
19
- void diff_output_init (diff_output_t * output , int verbose , char * const archive_names []) {
20
+ void
21
+ diff_output_init (diff_output_t * output , int verbose , char * const archive_names []) {
20
22
output -> archive_names [0 ] = archive_names [0 ];
21
23
output -> archive_names [1 ] = archive_names [1 ];
22
24
output -> verbose = verbose ;
23
25
output -> file_name = NULL ;
24
26
output -> file_size = 0 ;
25
27
output -> file_crc = 0 ;
28
+ output -> file_mtime = 0 ;
26
29
}
27
30
28
- void diff_output_start_file (diff_output_t * output , const char * name , zip_uint64_t size , zip_uint32_t crc ) {
31
+ void
32
+ diff_output_start_file (diff_output_t * output , const char * name , zip_uint64_t size , zip_uint32_t crc , zip_uint64_t mtime ) {
29
33
output -> file_name = name ;
30
34
output -> file_size = size ;
31
35
output -> file_crc = crc ;
36
+ output -> file_mtime = mtime ;
32
37
}
33
38
34
- void diff_output_end_file (diff_output_t * output ) {
39
+ void
40
+ diff_output_end_file (diff_output_t * output ) {
35
41
output -> file_name = NULL ;
36
42
}
37
43
38
- void diff_output (diff_output_t * output , int side , const char * fmt , ...) {
44
+ void
45
+ diff_output (diff_output_t * output , int side , const char * fmt , ...) {
39
46
va_list ap ;
40
47
41
48
if (!output -> verbose ) {
42
49
return ;
43
50
}
44
51
45
52
ensure_header (output );
46
-
53
+
47
54
if (output -> file_name != NULL ) {
48
- diff_output_file (output , ' ' , output -> file_name , output -> file_size , output -> file_crc );
55
+ diff_output_file (output , ' ' , output -> file_name , output -> file_size , output -> file_crc , output -> file_mtime );
49
56
output -> file_name = NULL ;
50
57
}
51
-
58
+
52
59
printf ("%c " , side );
53
60
va_start (ap , fmt );
54
61
vprintf (fmt , ap );
55
62
va_end (ap );
56
63
printf ("\n" );
57
64
}
58
65
59
- void diff_output_file (diff_output_t * output , char side , const char * name , zip_uint64_t size , zip_uint32_t crc ) {
66
+ void
67
+ diff_output_file (diff_output_t * output , char side , const char * name , zip_uint64_t size , zip_uint32_t crc , zip_uint64_t mtime ) {
60
68
if (!output -> verbose ) {
61
69
return ;
62
70
}
63
-
71
+
64
72
ensure_header (output );
65
-
73
+
66
74
if (size == 0 && crc == 0 && name [0 ] != '\0' && name [strlen (name ) - 1 ] == '/' ) {
67
75
printf ("%c directory '%s'\n" , side , name );
68
76
}
69
77
else {
70
- printf ("%c file '%s', size %" PRIu64 ", crc %08x\n" , side , name , size , crc );
78
+ printf ("%c file '%s', size %" PRIu64 ", crc %08x, mtime %" PRIu64 " \n" , side , name , size , crc , mtime );
71
79
}
72
80
}
73
81
74
82
#define MAX_BYTES 64
75
- void diff_output_data (diff_output_t * output , int side , const zip_uint8_t * data , zip_uint64_t data_length , const char * fmt , ...) {
83
+ void
84
+ diff_output_data (diff_output_t * output , int side , const zip_uint8_t * data , zip_uint64_t data_length , const char * fmt , ...) {
76
85
char prefix [1024 ];
77
86
char hexdata [MAX_BYTES * 3 + 6 ];
78
87
size_t i , offset ;
@@ -81,7 +90,7 @@ void diff_output_data(diff_output_t *output, int side, const zip_uint8_t *data,
81
90
if (!output -> verbose ) {
82
91
return ;
83
92
}
84
-
93
+
85
94
offset = 0 ;
86
95
for (i = 0 ; i < data_length ; i ++ ) {
87
96
hexdata [offset ++ ] = (i == 0 ? '<' : ' ' );
@@ -96,11 +105,11 @@ void diff_output_data(diff_output_t *output, int side, const zip_uint8_t *data,
96
105
97
106
hexdata [offset ++ ] = '>' ;
98
107
hexdata [offset ] = '\0' ;
99
-
108
+
100
109
va_start (ap , fmt );
101
110
vsnprintf (prefix , sizeof (prefix ), fmt , ap );
102
111
va_end (ap );
103
112
prefix [sizeof (prefix ) - 1 ] = '\0' ;
104
-
113
+
105
114
diff_output (output , side , "%s, length %" PRIu64 ", data %s" , prefix , data_length , hexdata );
106
115
}
0 commit comments