[scan] Fix date_released being set to 0 on platforms with musl

%F for ISO date format is only glibc. May affect other date parsing.

Closes #1730
This commit is contained in:
ejurgensen 2024-03-21 21:04:21 +01:00
parent b1a3941226
commit 9b12618b93

View File

@ -149,10 +149,11 @@ parse_date(struct media_file_info *mfi, const char *date_string)
if ((*year == 0) && (safe_atou32(date_string, year) == 0)) if ((*year == 0) && (safe_atou32(date_string, year) == 0))
ret++; ret++;
if ( strptime(date_string, "%FT%T%z", &tm) // ISO 8601, %F=%Y-%m-%d, %T=%H:%M:%S // musl doesn't support %F, so %Y-%m-%d is used instead
|| strptime(date_string, "%F %T", &tm) if ( strptime(date_string, "%Y-%m-%dT%T%z", &tm) // ISO 8601, %T=%H:%M:%S
|| strptime(date_string, "%F %H:%M", &tm) || strptime(date_string, "%Y-%m-%d %T", &tm)
|| strptime(date_string, "%F", &tm) || strptime(date_string, "%Y-%m-%d %H:%M", &tm)
|| strptime(date_string, "%Y-%m-%d", &tm)
) )
{ {
*date_released = mktime(&tm); *date_released = mktime(&tm);
@ -162,7 +163,7 @@ parse_date(struct media_file_info *mfi, const char *date_string)
if ((*date_released == 0) && (*year != 0)) if ((*date_released == 0) && (*year != 0))
{ {
snprintf(year_string, sizeof(year_string), "%" PRIu32 "-01-01T12:00:00", *year); snprintf(year_string, sizeof(year_string), "%" PRIu32 "-01-01T12:00:00", *year);
if (strptime(year_string, "%FT%T", &tm)) if (strptime(year_string, "%Y-%m-%dT%T", &tm))
{ {
*date_released = mktime(&tm); *date_released = mktime(&tm);
ret++; ret++;