From b89a5f593d0a7739bb196be04af3d6c023f1b1d1 Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Sun, 9 Oct 2011 19:22:54 +0200 Subject: slideshow.c: Warn about unknown format specifiers, fix handling of trailing % and \ --- src/slideshow.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/slideshow.c b/src/slideshow.c index b9d9494..42aaf2e 100644 --- a/src/slideshow.c +++ b/src/slideshow.c @@ -390,7 +390,7 @@ char *feh_printf(char *str, feh_file * file) ret[0] = '\0'; for (c = str; *c != '\0'; c++) { - if (*c == '%') { + if ((*c == '%') && (*(c+1) != '\0')) { c++; switch (*c) { case 'f': @@ -456,18 +456,22 @@ char *feh_printf(char *str, feh_file * file) + 1 : 0); strcat(ret, buf); break; + case '%': + strcat(ret, "%"); + break; default: - strncat(ret, c, 1); + weprintf("Unrecognized format specifier %%%c", *c); + strncat(ret, c - 1, 2); break; } - } else if (*c == '\\') { + } else if ((*c == '\\') && (*(c+1) != '\0')) { c++; switch (*c) { case 'n': strcat(ret, "\n"); break; default: - strncat(ret, c, 1); + strncat(ret, c - 1, 2); break; } } else -- cgit v1.2.3