diff options
| author | Daniel Friesel <derf@finalrewind.org> | 2011-10-09 19:22:54 +0200 | 
|---|---|---|
| committer | Daniel Friesel <derf@finalrewind.org> | 2011-10-09 19:22:54 +0200 | 
| commit | b89a5f593d0a7739bb196be04af3d6c023f1b1d1 (patch) | |
| tree | a03fad09fe50daee9691a2e1080c0321cc2daa63 /src | |
| parent | 477f1c2261820633fb66a4435f945d6984210981 (diff) | |
slideshow.c: Warn about unknown format specifiers, fix handling of trailing % and \
Diffstat (limited to 'src')
| -rw-r--r-- | src/slideshow.c | 12 | 
1 files 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 | 
