diff --git a/src/main.c b/src/main.c index 14b08d2..e2cc33e 100644 --- a/src/main.c +++ b/src/main.c @@ -3,6 +3,7 @@ #include #include #include +#define __USE_XOPEN #include #include #include "string.h" @@ -66,10 +67,17 @@ static void parse_preamble(struct parser *p) { int section = -1; uint32_t ch; char date[256]; - time_t now; - time(&now); - struct tm *now_tm = localtime(&now); - strftime(date, sizeof(date), "%F", now_tm); + char *source_date_epoch = getenv("SOURCE_DATE_EPOCH"); + if (source_date_epoch != NULL) { + struct tm source_date_epoch_tm; + strptime(source_date_epoch, "%s", &source_date_epoch_tm); + strftime(date, sizeof(date), "%F", &source_date_epoch_tm); + } else { + time_t now; + time(&now); + struct tm *now_tm = localtime(&now); + strftime(date, sizeof(date), "%F", now_tm); + } while ((ch = parser_getch(p)) != UTF8_INVALID) { if ((ch < 0x80 && isalnum(ch)) || ch == '_' || ch == '-' || ch == '.') { assert(str_append_ch(name, ch) != -1); diff --git a/test/preamble b/test/preamble index 03e2d0c..eeb734b 100755 --- a/test/preamble +++ b/test/preamble @@ -38,31 +38,31 @@ EOF end 0 begin "Writes the appropriate header" -scdoc </dev/null +scdoc </dev/null test(8) EOF end 0 begin "Preserves dashes" -scdoc </dev/null +scdoc </dev/null test-manual(8) EOF end 0 begin "Handles extra footer field" -scdoc </dev/null +scdoc </dev/null test-manual(8) "Footer" EOF end 0 begin "Handles both extra fields" -scdoc </dev/null +scdoc </dev/null test-manual(8) "Footer" "Header" EOF end 0 begin "Emits empty footer correctly" -scdoc </dev/null +scdoc </dev/null test-manual(8) "" "Header" EOF end 0