From 58ef34ee6d0f68aa28f6f1a26e56f49ec85ed9bf Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Thu, 14 Feb 2013 16:13:22 +1000 Subject: [PATCH] os: support %% in pnprintf Signed-off-by: Peter Hutterer Reviewed-by: Keith Packard --- os/log.c | 3 +++ test/signal-logging.c | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/os/log.c b/os/log.c index df025fbca..e4e9e8b9d 100644 --- a/os/log.c +++ b/os/log.c @@ -450,6 +450,9 @@ pnprintf(char *string, size_t size, const char *f, va_list args) string[s_idx++] = number[i]; } break; + case '%': + string[s_idx++] = '%'; + break; default: va_arg(args, char*); string[s_idx++] = '%'; diff --git a/test/signal-logging.c b/test/signal-logging.c index 9038cf81f..65baa456f 100644 --- a/test/signal-logging.c +++ b/test/signal-logging.c @@ -196,6 +196,11 @@ static void logging_format(void) read_log_msg(logmsg); assert(strcmp(logmsg, "(EE) %s %d %u %% %p %i\n") == 0); + /* literal % */ + LogMessageVerbSigSafe(X_ERROR, -1, "test %%\n"); + read_log_msg(logmsg); + assert(strcmp(logmsg, "(EE) test %\n") == 0); + /* string substitution */ LogMessageVerbSigSafe(X_ERROR, -1, "%s\n", "substituted string"); read_log_msg(logmsg);