Fix strftime warning in gcc.

This commit is contained in:
Michael Grant
2026-01-22 14:11:00 +00:00
parent d2e09cb259
commit 0790e74f84
2 changed files with 17 additions and 9 deletions

View File

@@ -454,6 +454,17 @@ format_job_tidy(struct format_job_tree *jobs, int force)
}
}
/* Workaround this needless gcc warning:
* warning: format not a string literal, format string not checked [-Wformat-nonliteral]
*/
static size_t
format_strftime(char *s, size_t max, const char *time_format, const struct tm *tm) {
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wformat-nonliteral"
return strftime(s, max, time_format, tm);
#pragma GCC diagnostic pop
}
/* Tidy old jobs for all clients. */
void
format_tidy_jobs(void)
@@ -3963,7 +3974,7 @@ found:
else {
if (time_format != NULL) {
localtime_r(&t, &tm);
strftime(s, sizeof s, time_format, &tm);
format_strftime(s, sizeof s, time_format, &tm);
} else {
ctime_r(&t, s);
s[strcspn(s, "\n")] = '\0';
@@ -5540,7 +5551,7 @@ format_expand1(struct format_expand_state *es, const char *fmt)
es->time = time(NULL);
localtime_r(&es->time, &es->tm);
}
if (strftime(expanded, sizeof expanded, fmt, &es->tm) == 0) {
if (format_strftime(expanded, sizeof expanded, fmt, &es->tm) == 0) {
format_log(es, "format is too long");
return (xstrdup(""));
}