diff options
Diffstat (limited to 'gnu/packages/patches')
-rw-r--r-- | gnu/packages/patches/ttfautohint-source-date-epoch.patch | 70 |
1 files changed, 0 insertions, 70 deletions
diff --git a/gnu/packages/patches/ttfautohint-source-date-epoch.patch b/gnu/packages/patches/ttfautohint-source-date-epoch.patch deleted file mode 100644 index e42fdbf6b0..0000000000 --- a/gnu/packages/patches/ttfautohint-source-date-epoch.patch +++ /dev/null @@ -1,70 +0,0 @@ -Honour an external definition of SOURCE_DATE_EPOCH when updating the embedded -modification date in TTF/TTC files. - ---- a/lib/tatime.c -+++ b/lib/tatime.c -@@ -15,6 +15,8 @@ - - #include <time.h> - #include <stdint.h> -+#include <errno.h> -+#include <limits.h> - - #include "ta.h" - -@@ -27,12 +29,51 @@ TA_get_current_time(FT_ULong* high, - { - /* there have been 24107 days between January 1st, 1904 (the epoch of */ - /* OpenType), and January 1st, 1970 (the epoch of the `time' function) */ -- TA_ULongLong seconds_to_1970 = 24107 * 24 * 60 * 60; -- TA_ULongLong seconds_to_today = seconds_to_1970 + (TA_ULongLong)time(NULL); -+ const TA_ULongLong seconds_to_1970 = 24107 * 24 * 60 * 60; -+ TA_ULongLong seconds_to_build; - -+ time_t now; -+ char *source_date_epoch, *endptr; -+ TA_ULongLong epoch; -+ source_date_epoch = getenv("SOURCE_DATE_EPOCH"); -+ if (source_date_epoch) { -+ errno = 0; -+ epoch = strtoull(source_date_epoch, &endptr, 10); -+ if ((errno == ERANGE && (epoch == ULLONG_MAX || epoch == 0)) -+ || (errno != 0 && epoch == 0)) { -+ fprintf(stderr, -+ "Environment variable $SOURCE_DATE_EPOCH: strtoull: %s\n", -+ strerror(errno)); -+ exit(EXIT_FAILURE); -+ } -+ if (endptr == source_date_epoch) { -+ fprintf(stderr, -+ "Environment variable $SOURCE_DATE_EPOCH: No digits were found: %s\n", -+ endptr); -+ exit(EXIT_FAILURE); -+ } -+ if (*endptr != '\0') { -+ fprintf(stderr, -+ "Environment variable $SOURCE_DATE_EPOCH: Trailing garbage: %s\n", -+ endptr); -+ exit(EXIT_FAILURE); -+ } -+ if (epoch > ULONG_MAX) { -+ fprintf(stderr, -+ "Environment variable $SOURCE_DATE_EPOCH: value must be smaller " -+ "than or equal to: %lu but was found to be: %llu \n", -+ ULONG_MAX, epoch); -+ exit(EXIT_FAILURE); -+ } -+ now = epoch; -+ } else { -+ now = time(NULL); -+ } - -- *high = (FT_ULong)(seconds_to_today >> 32); -- *low = (FT_ULong)seconds_to_today; -+ seconds_to_build = seconds_to_1970 + (TA_ULongLong)now; -+ -+ *high = (FT_ULong)(seconds_to_build >> 32); -+ *low = (FT_ULong)seconds_to_build; - } - - /* end of tatime.c */ |