X-Git-Url: http://git.openwrt.org/?a=blobdiff_plain;f=tools%2Ffirmware-utils%2Fsrc%2Fmkdlinkfw-lib.c;h=3b71fda7db4196f42d69f07539667266ce23d0f9;hb=e428b127e7c9964a20cfd4cfb30b43262a10bfbe;hp=a661c0bc821fc132d847098ddba504a21aa05bbb;hpb=f4aa9d8839958c39d24d7cca3d3215efad98a1e2;p=openwrt%2Fstaging%2Fnoltari.git diff --git a/tools/firmware-utils/src/mkdlinkfw-lib.c b/tools/firmware-utils/src/mkdlinkfw-lib.c index a661c0bc82..3b71fda7db 100644 --- a/tools/firmware-utils/src/mkdlinkfw-lib.c +++ b/tools/firmware-utils/src/mkdlinkfw-lib.c @@ -34,9 +34,24 @@ extern char *progname; uint32_t jboot_timestamp(void) { - time_t rawtime; - time(&rawtime); - return (((uint32_t) rawtime) - TIMESTAMP_MAGIC) >> 2; + char *env = getenv("SOURCE_DATE_EPOCH"); + char *endptr = env; + time_t fixed_timestamp = -1; + errno = 0; + + if (env && *env) { + fixed_timestamp = strtoull(env, &endptr, 10); + + if (errno || (endptr && *endptr != '\0')) { + fprintf(stderr, "Invalid SOURCE_DATE_EPOCH"); + fixed_timestamp = -1; + } + } + + if (fixed_timestamp == -1) + time(&fixed_timestamp); + + return (((uint32_t) fixed_timestamp) - TIMESTAMP_MAGIC) >> 2; } uint16_t jboot_checksum(uint16_t start_val, uint16_t *data, int size)