summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--os/log.c3
-rw-r--r--test/signal-logging.c5
2 files changed, 8 insertions, 0 deletions
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);