os: add support for %d and %i to pnprintf
The mouse driver uses %i in some debug messages Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Chase Douglas <chase.douglas@canonical.com>
This commit is contained in:
parent
7f8c39c8b5
commit
4912b4adb6
10
os/log.c
10
os/log.c
|
@ -290,6 +290,7 @@ pnprintf(char *string, size_t size, const char *f, va_list args)
|
|||
int p_len;
|
||||
int i;
|
||||
uint64_t ui;
|
||||
int64_t si;
|
||||
|
||||
for (; f_idx < f_len && s_idx < size - 1; f_idx++) {
|
||||
if (f[f_idx] != '%') {
|
||||
|
@ -311,6 +312,15 @@ pnprintf(char *string, size_t size, const char *f, va_list args)
|
|||
FormatUInt64(ui, number);
|
||||
p_len = strlen_sigsafe(number);
|
||||
|
||||
for (i = 0; i < p_len && s_idx < size - 1; i++)
|
||||
string[s_idx++] = number[i];
|
||||
break;
|
||||
case 'i':
|
||||
case 'd':
|
||||
si = va_arg(args, int);
|
||||
FormatInt64(si, number);
|
||||
p_len = strlen_sigsafe(number);
|
||||
|
||||
for (i = 0; i < p_len && s_idx < size - 1; i++)
|
||||
string[s_idx++] = number[i];
|
||||
break;
|
||||
|
|
|
@ -242,6 +242,27 @@ static void logging_format(void)
|
|||
ui <<= 1;
|
||||
} while(ui);
|
||||
|
||||
/* signed number substitution */
|
||||
i = 0;
|
||||
do {
|
||||
char expected[30];
|
||||
sprintf(expected, "(EE) %d\n", i);
|
||||
LogMessageVerbSigSafe(X_ERROR, -1, "%d\n", i);
|
||||
read_log_msg(logmsg);
|
||||
assert(strcmp(logmsg, expected) == 0);
|
||||
|
||||
|
||||
sprintf(expected, "(EE) %d\n", i | INT_MIN);
|
||||
LogMessageVerbSigSafe(X_ERROR, -1, "%d\n", i | INT_MIN);
|
||||
read_log_msg(logmsg);
|
||||
assert(strcmp(logmsg, expected) == 0);
|
||||
|
||||
if (i == 0)
|
||||
i = 1;
|
||||
else
|
||||
i <<= 1;
|
||||
} while(i > INT_MIN);
|
||||
|
||||
/* hex number substitution */
|
||||
ui = 0;
|
||||
do {
|
||||
|
|
Loading…
Reference in New Issue
Block a user