diff --git a/src/Build/Tools/source_date_epoch.sh b/src/Build/Tools/source_date_epoch.sh index f9d14956..9e25aa1a 100755 --- a/src/Build/Tools/source_date_epoch.sh +++ b/src/Build/Tools/source_date_epoch.sh @@ -59,12 +59,6 @@ fi RELEASE_EPOCH=$(awk ' function leap(y) { return ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0)) } - function month_number(name) { - return (name == "January" ? 1 : name == "February" ? 2 : name == "March" ? 3 : - name == "April" ? 4 : name == "May" ? 5 : name == "June" ? 6 : - name == "July" ? 7 : name == "August" ? 8 : name == "September" ? 9 : - name == "October" ? 10 : name == "November" ? 11 : name == "December" ? 12 : 0); - } function mdays(m, y) { return (m == 2 ? 28 + leap(y) : (m == 4 || m == 6 || m == 9 || m == 11 ? 30 : 31)) } function epoch(y, m, d, days, i) { days = 0; @@ -75,17 +69,6 @@ RELEASE_EPOCH=$(awk ' } function is_number(value) { return (value ~ /^[0-9]+$/) } - /^[[:space:]]*#define[[:space:]]+TC_STR_RELEASE_DATE[[:space:]]+L"/ { - date = $0; - sub(/^.*L"/, "", date); - sub(/".*$/, "", date); - split(date, parts, /[ ,]+/); - if (month_number(parts[1]) == 0 || !is_number(parts[2]) || !is_number(parts[3])) exit 1; - date_month = month_number(parts[1]); - date_day = parts[2] + 0; - date_year = parts[3] + 0; - seen_date = 1; - } /^[[:space:]]*#define[[:space:]]+TC_RELEASE_DATE_YEAR[[:space:]]+/ { if (!is_number($3)) exit 1; year = $3 + 0; @@ -102,9 +85,8 @@ RELEASE_EPOCH=$(awk ' seen_day = 1; } END { - if (!seen_date || !seen_year || !seen_month || !seen_day) exit 1; + if (!seen_year || !seen_month || !seen_day) exit 1; if (year < 1970 || month < 1 || month > 12 || day < 1 || day > mdays(month, year)) exit 1; - if (date_month != month || date_day != day || date_year != year) exit 1; printf "%d", epoch(year, month, day); }' "$TCDEFS_H") || { echo "Error: unable to derive SOURCE_DATE_EPOCH from $TCDEFS_H" >&2 diff --git a/src/Common/Tcdefs.h b/src/Common/Tcdefs.h index 45e7e7a0..9f56795f 100644 --- a/src/Common/Tcdefs.h +++ b/src/Common/Tcdefs.h @@ -73,7 +73,6 @@ extern unsigned short _rotl16(unsigned short value, unsigned char shift); #define VERSION_NUM 0x0126 // Release date -#define TC_STR_RELEASE_DATE L"June 9, 2026" #define TC_RELEASE_DATE_YEAR 2026 #define TC_RELEASE_DATE_MONTH 6 #define TC_RELEASE_DATE_DAY 9 @@ -406,7 +405,26 @@ void EraseMemory (void *memory, int size); #define TC_MAX_PATH 260 /* Includes the null terminator */ #endif -#define TC_STR_RELEASED_BY L"Released by AM Crypto on " TC_STR_RELEASE_DATE +#define TC_RELEASE_DATE_MONTH_NAME_1 L"January" +#define TC_RELEASE_DATE_MONTH_NAME_2 L"February" +#define TC_RELEASE_DATE_MONTH_NAME_3 L"March" +#define TC_RELEASE_DATE_MONTH_NAME_4 L"April" +#define TC_RELEASE_DATE_MONTH_NAME_5 L"May" +#define TC_RELEASE_DATE_MONTH_NAME_6 L"June" +#define TC_RELEASE_DATE_MONTH_NAME_7 L"July" +#define TC_RELEASE_DATE_MONTH_NAME_8 L"August" +#define TC_RELEASE_DATE_MONTH_NAME_9 L"September" +#define TC_RELEASE_DATE_MONTH_NAME_10 L"October" +#define TC_RELEASE_DATE_MONTH_NAME_11 L"November" +#define TC_RELEASE_DATE_MONTH_NAME_12 L"December" +#define TC_RELEASE_DATE_MONTH_NAME_(m) TC_RELEASE_DATE_MONTH_NAME_##m +#define TC_RELEASE_DATE_MONTH_NAME(m) TC_RELEASE_DATE_MONTH_NAME_(m) + +#define TC_RELEASE_DATE_WSTR2(x) L##x +#define TC_RELEASE_DATE_WSTR1(x) TC_RELEASE_DATE_WSTR2(#x) +#define TC_RELEASE_DATE_WSTR(x) TC_RELEASE_DATE_WSTR1(x) + +#define TC_STR_RELEASED_BY L"Released by AM Crypto on " TC_RELEASE_DATE_MONTH_NAME(TC_RELEASE_DATE_MONTH) L" " TC_RELEASE_DATE_WSTR(TC_RELEASE_DATE_DAY) L", " TC_RELEASE_DATE_WSTR(TC_RELEASE_DATE_YEAR) #define MAX_URL_LENGTH 2084 /* Internet Explorer limit. Includes the terminating null character. */