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. */ /* Tidy old jobs for all clients. */
void void
format_tidy_jobs(void) format_tidy_jobs(void)
@@ -3963,7 +3974,7 @@ found:
else { else {
if (time_format != NULL) { if (time_format != NULL) {
localtime_r(&t, &tm); localtime_r(&t, &tm);
strftime(s, sizeof s, time_format, &tm); format_strftime(s, sizeof s, time_format, &tm);
} else { } else {
ctime_r(&t, s); ctime_r(&t, s);
s[strcspn(s, "\n")] = '\0'; s[strcspn(s, "\n")] = '\0';
@@ -5540,7 +5551,7 @@ format_expand1(struct format_expand_state *es, const char *fmt)
es->time = time(NULL); es->time = time(NULL);
localtime_r(&es->time, &es->tm); 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"); format_log(es, "format is too long");
return (xstrdup("")); return (xstrdup(""));
} }

View File

@@ -228,7 +228,6 @@ window_clock_draw_screen(struct window_mode_entry *wme)
struct screen *s = &data->screen; struct screen *s = &data->screen;
struct grid_cell gc; struct grid_cell gc;
char tim[64], *ptr; char tim[64], *ptr;
const char *timeformat;
time_t t; time_t t;
struct tm *tm; struct tm *tm;
u_int i, j, x, y, idx; u_int i, j, x, y, idx;
@@ -242,20 +241,18 @@ window_clock_draw_screen(struct window_mode_entry *wme)
tm = localtime(&t); tm = localtime(&t);
if (style == 0 || style == 2) { if (style == 0 || style == 2) {
if (style == 2) if (style == 2)
timeformat = "%l:%M:%S "; strftime(tim, sizeof tim, "%l:%M:%S ", localtime(&t));
else else
timeformat = "%l:%M "; strftime(tim, sizeof tim, "%l:%M ", localtime(&t));
strftime(tim, sizeof tim, timeformat, localtime(&t));
if (tm->tm_hour >= 12) if (tm->tm_hour >= 12)
strlcat(tim, "PM", sizeof tim); strlcat(tim, "PM", sizeof tim);
else else
strlcat(tim, "AM", sizeof tim); strlcat(tim, "AM", sizeof tim);
} else { } else {
if (style == 3) if (style == 3)
timeformat = "%H:%M:%S"; strftime(tim, sizeof tim, "%H:%M:%S", tm);
else else
timeformat = "%H:%M"; strftime(tim, sizeof tim, "%H:%M", tm);
strftime(tim, sizeof tim, timeformat, tm);
} }
screen_write_clearscreen(&ctx, 8); screen_write_clearscreen(&ctx, 8);