From d903d17d7f006fa333265b8476063b189c20d082 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Thu, 14 Feb 2013 16:19:34 +1000 Subject: [PATCH] os: support %c in pnprintf Signed-off-by: Peter Hutterer Reviewed-by: Keith Packard --- os/log.c | 7 +++++++ test/signal-logging.c | 5 +++++ 2 files changed, 12 insertions(+) diff --git a/os/log.c b/os/log.c index e4e9e8b9d..9f95743b5 100644 --- a/os/log.c +++ b/os/log.c @@ -450,6 +450,13 @@ pnprintf(char *string, size_t size, const char *f, va_list args) string[s_idx++] = number[i]; } break; + case 'c': + { + char c = va_arg(args, int); + if (s_idx < size - 1) + string[s_idx++] = c; + } + break; case '%': string[s_idx++] = '%'; break; diff --git a/test/signal-logging.c b/test/signal-logging.c index 65baa456f..b45d8d4f3 100644 --- a/test/signal-logging.c +++ b/test/signal-logging.c @@ -201,6 +201,11 @@ static void logging_format(void) read_log_msg(logmsg); assert(strcmp(logmsg, "(EE) test %\n") == 0); + /* character */ + LogMessageVerbSigSafe(X_ERROR, -1, "test %c\n", 'a'); + read_log_msg(logmsg); + assert(strcmp(logmsg, "(EE) test a\n") == 0); + /* string substitution */ LogMessageVerbSigSafe(X_ERROR, -1, "%s\n", "substituted string"); read_log_msg(logmsg);