mtd-utils/mkfs.jffs2: honor env SOURCE_DATE_EPOCH
[openwrt/openwrt.git] / tools / mtd-utils / patches / 320-mkfs.jffs2-SOURCE_DATE_EPOCH.patch
1 Index: mtd-utils-1.5.2/mkfs.jffs2.c
2 ===================================================================
3 --- mtd-utils-1.5.2.orig/mkfs.jffs2.c
4 +++ mtd-utils-1.5.2/mkfs.jffs2.c
5 @@ -108,7 +108,7 @@ static char *rootdir = default_rootdir;
6 static int verbose = 0;
7 static int squash_uids = 0;
8 static int squash_perms = 0;
9 -static int fake_times = 0;
10 +static time_t fixed_timestamp = -1;
11 int target_endian = __BYTE_ORDER;
12
13 uint32_t find_hardlink(struct filesystem_entry *e)
14 @@ -249,8 +249,8 @@ static struct filesystem_entry *add_host
15 mode &= ~(S_ISUID | S_ISGID);
16 }
17 }
18 - if (fake_times) {
19 - timestamp = 0;
20 + if (fixed_timestamp != -1) {
21 + timestamp = fixed_timestamp;
22 }
23
24 entry = xcalloc(1, sizeof(struct filesystem_entry));
25 @@ -1554,6 +1554,20 @@ void parse_image(){
26 close(in_fd);
27 }
28
29 +static void set_source_date_epoch() {
30 + char *env = getenv("SOURCE_DATE_EPOCH");
31 + char *endptr = env;
32 + errno = 0;
33 + if (env && *env) {
34 + fixed_timestamp = strtoull(env, &endptr, 10);
35 + if (errno || (endptr && *endptr != '\0')) {
36 + fprintf(stderr, "Invalid SOURCE_DATE_EPOCH");
37 + exit(1);
38 + }
39 + }
40 +}
41 +
42 +
43 int main(int argc, char **argv)
44 {
45 int c, opt;
46 @@ -1572,6 +1586,7 @@ int main(int argc, char **argv)
47 warn_page_size = 1; /* warn user if page size not 4096 */
48
49 jffs2_compressors_init();
50 + set_source_date_epoch();
51
52 while ((opt = getopt_long(argc, argv,
53 "D:d:r:s:o:qUPfh?vVe:lbp::nc:m:x:X:Lty:i:", long_options, &c)) >= 0)
54 @@ -1622,7 +1637,7 @@ int main(int argc, char **argv)
55 break;
56
57 case 'f':
58 - fake_times = 1;
59 + fixed_timestamp = 0;
60 break;
61
62 case 'h':