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 p_len;
|
||||||
int i;
|
int i;
|
||||||
uint64_t ui;
|
uint64_t ui;
|
||||||
|
int64_t si;
|
||||||
|
|
||||||
for (; f_idx < f_len && s_idx < size - 1; f_idx++) {
|
for (; f_idx < f_len && s_idx < size - 1; f_idx++) {
|
||||||
if (f[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);
|
FormatUInt64(ui, number);
|
||||||
p_len = strlen_sigsafe(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++)
|
for (i = 0; i < p_len && s_idx < size - 1; i++)
|
||||||
string[s_idx++] = number[i];
|
string[s_idx++] = number[i];
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -242,6 +242,27 @@ static void logging_format(void)
|
||||||
ui <<= 1;
|
ui <<= 1;
|
||||||
} while(ui);
|
} 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 */
|
/* hex number substitution */
|
||||||
ui = 0;
|
ui = 0;
|
||||||
do {
|
do {
|
||||||
|
|
Loading…
Reference in New Issue