From 5242eef8fc54636a41701fd9d7083ba6e4a4e0b3 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 26 Jun 2024 18:18:39 +0200 Subject: Merging upstream version 1:4.15.2. Signed-off-by: Daniel Baumann --- lib/gettime.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 lib/gettime.c (limited to 'lib/gettime.c') diff --git a/lib/gettime.c b/lib/gettime.c new file mode 100644 index 0000000..c61c88c --- /dev/null +++ b/lib/gettime.c @@ -0,0 +1,47 @@ +// SPDX-FileCopyrightText: 2017, Chris Lamb +// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#include + +#ident "$Id$" + +#include +#include +#include + +#include "atoi/a2i.h" +#include "defines.h" +#include "prototypes.h" +#include "shadowlog.h" + + +/* + * gettime() returns the time as the number of seconds since the Epoch + * + * Like time(), gettime() returns the time as the number of seconds since the + * Epoch, 1970-01-01 00:00:00 +0000 (UTC), except that if the SOURCE_DATE_EPOCH + * environment variable is exported it will use that instead. + */ +/*@observer@*/time_t +gettime(void) +{ + char *source_date_epoch; + FILE *shadow_logfd = log_get_logfd(); + time_t fallback, epoch; + + fallback = time (NULL); + source_date_epoch = shadow_getenv ("SOURCE_DATE_EPOCH"); + + if (!source_date_epoch) + return fallback; + + if (a2i(time_t, &epoch, source_date_epoch, NULL, 10, 0, fallback) == -1) { + fprintf(shadow_logfd, + _("Environment variable $SOURCE_DATE_EPOCH: a2i(\"%s\"): %s"), + source_date_epoch, strerror(errno)); + return fallback; + } + return epoch; +} -- cgit v1.2.3