You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
openwrt/tools/mtd-utils/patches/320-mkfs.jffs2-SOURCE_DATE_...

61 lines
1.4 KiB
Diff

--- a/mkfs.jffs2.c
+++ b/mkfs.jffs2.c
@@ -108,7 +108,7 @@ static char *rootdir = default_rootdir;
static int verbose = 0;
static int squash_uids = 0;
static int squash_perms = 0;
-static int fake_times = 0;
+static time_t fixed_timestamp = -1;
int target_endian = __BYTE_ORDER;
uint32_t find_hardlink(struct filesystem_entry *e)
@@ -249,8 +249,8 @@ static struct filesystem_entry *add_host
mode &= ~(S_ISUID | S_ISGID);
}
}
- if (fake_times) {
- timestamp = 0;
+ if (fixed_timestamp != -1) {
+ timestamp = fixed_timestamp;
}
entry = xcalloc(1, sizeof(struct filesystem_entry));
@@ -1554,6 +1554,20 @@ void parse_image(){
close(in_fd);
}
+static void set_source_date_epoch() {
+ char *env = getenv("SOURCE_DATE_EPOCH");
+ char *endptr = env;
+ errno = 0;
+ if (env && *env) {
+ fixed_timestamp = strtoull(env, &endptr, 10);
+ if (errno || (endptr && *endptr != '\0')) {
+ fprintf(stderr, "Invalid SOURCE_DATE_EPOCH");
+ exit(1);
+ }
+ }
+}
+
+
int main(int argc, char **argv)
{
int c, opt;
@@ -1572,6 +1586,7 @@ int main(int argc, char **argv)
warn_page_size = 1; /* warn user if page size not 4096 */
jffs2_compressors_init();
+ set_source_date_epoch();
while ((opt = getopt_long(argc, argv,
"D:d:r:s:o:qUPfh?vVe:lbp::nc:m:x:X:Lty:i:", long_options, &c)) >= 0)
@@ -1622,7 +1637,7 @@ int main(int argc, char **argv)
break;
case 'f':
- fake_times = 1;
+ fixed_timestamp = 0;
break;
case 'h':