diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2010-12-09 12:17:25 -0500 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2010-12-09 12:17:25 -0500 |
commit | d834a9dcecae834cd6b2bc5e50e1907738d9cf6a (patch) | |
tree | 0589d753465d3fe359ba451ba6cb7798df03aaa2 /lib/vsprintf.c | |
parent | a38c5380ef9f088be9f49b6e4c5d80af8b1b5cd4 (diff) | |
parent | f658bcfb2607bf0808966a69cf74135ce98e5c2d (diff) |
Merge branch 'x86/amd-nb' into x86/apic-cleanups
Reason: apic cleanup series depends on x86/apic, x86/amd-nb x86/platform
Conflicts:
arch/x86/include/asm/io_apic.h
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'lib/vsprintf.c')
-rw-r--r-- | lib/vsprintf.c | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/lib/vsprintf.c b/lib/vsprintf.c index 7af9d841c43b..c150d3dafff4 100644 --- a/lib/vsprintf.c +++ b/lib/vsprintf.c | |||
@@ -988,8 +988,15 @@ static noinline_for_stack | |||
988 | char *pointer(const char *fmt, char *buf, char *end, void *ptr, | 988 | char *pointer(const char *fmt, char *buf, char *end, void *ptr, |
989 | struct printf_spec spec) | 989 | struct printf_spec spec) |
990 | { | 990 | { |
991 | if (!ptr) | 991 | if (!ptr) { |
992 | /* | ||
993 | * Print (null) with the same width as a pointer so it makes | ||
994 | * tabular output look nice. | ||
995 | */ | ||
996 | if (spec.field_width == -1) | ||
997 | spec.field_width = 2 * sizeof(void *); | ||
992 | return string(buf, end, "(null)", spec); | 998 | return string(buf, end, "(null)", spec); |
999 | } | ||
993 | 1000 | ||
994 | switch (*fmt) { | 1001 | switch (*fmt) { |
995 | case 'F': | 1002 | case 'F': |
@@ -1031,7 +1038,7 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr, | |||
1031 | } | 1038 | } |
1032 | spec.flags |= SMALL; | 1039 | spec.flags |= SMALL; |
1033 | if (spec.field_width == -1) { | 1040 | if (spec.field_width == -1) { |
1034 | spec.field_width = 2*sizeof(void *); | 1041 | spec.field_width = 2 * sizeof(void *); |
1035 | spec.flags |= ZEROPAD; | 1042 | spec.flags |= ZEROPAD; |
1036 | } | 1043 | } |
1037 | spec.base = 16; | 1044 | spec.base = 16; |
@@ -1497,7 +1504,7 @@ EXPORT_SYMBOL(snprintf); | |||
1497 | * @...: Arguments for the format string | 1504 | * @...: Arguments for the format string |
1498 | * | 1505 | * |
1499 | * The return value is the number of characters written into @buf not including | 1506 | * The return value is the number of characters written into @buf not including |
1500 | * the trailing '\0'. If @size is <= 0 the function returns 0. | 1507 | * the trailing '\0'. If @size is == 0 the function returns 0. |
1501 | */ | 1508 | */ |
1502 | 1509 | ||
1503 | int scnprintf(char *buf, size_t size, const char *fmt, ...) | 1510 | int scnprintf(char *buf, size_t size, const char *fmt, ...) |
@@ -1509,7 +1516,11 @@ int scnprintf(char *buf, size_t size, const char *fmt, ...) | |||
1509 | i = vsnprintf(buf, size, fmt, args); | 1516 | i = vsnprintf(buf, size, fmt, args); |
1510 | va_end(args); | 1517 | va_end(args); |
1511 | 1518 | ||
1512 | return (i >= size) ? (size - 1) : i; | 1519 | if (likely(i < size)) |
1520 | return i; | ||
1521 | if (size != 0) | ||
1522 | return size - 1; | ||
1523 | return 0; | ||
1513 | } | 1524 | } |
1514 | EXPORT_SYMBOL(scnprintf); | 1525 | EXPORT_SYMBOL(scnprintf); |
1515 | 1526 | ||