diff options
author | Ingo Molnar <mingo@elte.hu> | 2009-03-10 17:17:32 +0100 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-03-10 17:17:32 +0100 |
commit | 2395037e5dd6841a6fa23afbb31e79d92e549cd1 (patch) | |
tree | 953ad725344aca1f89da86358737e5dc0b93b46e /lib | |
parent | bbcd3063597a3824357cd83c501c2a2aa21ef37b (diff) | |
parent | 39e874f8afbdb3745e2406ce4ecbde9ac4cbaa78 (diff) |
Merge branch 'core/printk' into tracing/ftrace
Diffstat (limited to 'lib')
-rw-r--r-- | lib/vsprintf.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/lib/vsprintf.c b/lib/vsprintf.c index 25f01578c856..dc1674377009 100644 --- a/lib/vsprintf.c +++ b/lib/vsprintf.c @@ -768,7 +768,6 @@ static char *pointer(const char *fmt, char *buf, char *end, void *ptr, static int format_decode(const char *fmt, struct printf_spec *spec) { const char *start = fmt; - bool sign = false; /* we finished early by reading the field width */ if (spec->type == FORMAT_TYPE_WITDH) { @@ -900,7 +899,7 @@ qualifier: case 'd': case 'i': - sign = true; + spec->flags |= SIGN; case 'u': break; @@ -912,7 +911,7 @@ qualifier: if (spec->qualifier == 'L') spec->type = FORMAT_TYPE_LONG_LONG; else if (spec->qualifier == 'l') { - if (sign) + if (spec->flags & SIGN) spec->type = FORMAT_TYPE_LONG; else spec->type = FORMAT_TYPE_ULONG; @@ -921,12 +920,12 @@ qualifier: } else if (spec->qualifier == 't') { spec->type = FORMAT_TYPE_PTRDIFF; } else if (spec->qualifier == 'h') { - if (sign) + if (spec->flags & SIGN) spec->type = FORMAT_TYPE_SHORT; else spec->type = FORMAT_TYPE_USHORT; } else { - if (sign) + if (spec->flags & SIGN) spec->type = FORMAT_TYPE_INT; else spec->type = FORMAT_TYPE_UINT; @@ -1101,8 +1100,8 @@ int vsnprintf(char *buf, size_t size, const char *fmt, va_list args) case FORMAT_TYPE_SHORT: num = (short) va_arg(args, int); break; - case FORMAT_TYPE_UINT: - num = va_arg(args, unsigned int); + case FORMAT_TYPE_INT: + num = (int) va_arg(args, int); break; default: num = va_arg(args, unsigned int); |