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:
Peter Hutterer 2012-08-13 14:44:44 +10:00
parent 7f8c39c8b5
commit 4912b4adb6
2 changed files with 31 additions and 0 deletions

View File

@ -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;

View File

@ -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 {