lib/vsprintf.c: remove %Z support
Now that %z is standartised in C99 there is no reason to support %Z. Unlike %L it doesn't even make format strings smaller. Use BUILD_BUG_ON in a couple ATM drivers. In case anyone didn't notice lib/vsprintf.o is about half of SLUB which is in my opinion is quite an achievement. Hopefully this patch inspires someone else to trim vsprintf.c more. Link: http://lkml.kernel.org/r/20170103230126.GA30170@avx2 Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com> Cc: Andy Shevchenko <andy.shevchenko@gmail.com> Cc: Rasmus Villemoes <linux@rasmusvillemoes.dk> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:

committed by
Linus Torvalds

parent
d7f6724366
commit
5b5e0928f7
@@ -1739,6 +1739,7 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr,
|
||||
* 'h', 'l', or 'L' for integer fields
|
||||
* 'z' support added 23/7/1999 S.H.
|
||||
* 'z' changed to 'Z' --davidm 1/25/99
|
||||
* 'Z' changed to 'z' --adobriyan 2017-01-25
|
||||
* 't' added for ptrdiff_t
|
||||
*
|
||||
* @fmt: the format string
|
||||
@@ -1838,7 +1839,7 @@ qualifier:
|
||||
/* get the conversion qualifier */
|
||||
qualifier = 0;
|
||||
if (*fmt == 'h' || _tolower(*fmt) == 'l' ||
|
||||
_tolower(*fmt) == 'z' || *fmt == 't') {
|
||||
*fmt == 'z' || *fmt == 't') {
|
||||
qualifier = *fmt++;
|
||||
if (unlikely(qualifier == *fmt)) {
|
||||
if (qualifier == 'l') {
|
||||
@@ -1907,7 +1908,7 @@ qualifier:
|
||||
else if (qualifier == 'l') {
|
||||
BUILD_BUG_ON(FORMAT_TYPE_ULONG + SIGN != FORMAT_TYPE_LONG);
|
||||
spec->type = FORMAT_TYPE_ULONG + (spec->flags & SIGN);
|
||||
} else if (_tolower(qualifier) == 'z') {
|
||||
} else if (qualifier == 'z') {
|
||||
spec->type = FORMAT_TYPE_SIZE_T;
|
||||
} else if (qualifier == 't') {
|
||||
spec->type = FORMAT_TYPE_PTRDIFF;
|
||||
@@ -2657,7 +2658,7 @@ int vsscanf(const char *buf, const char *fmt, va_list args)
|
||||
/* get conversion qualifier */
|
||||
qualifier = -1;
|
||||
if (*fmt == 'h' || _tolower(*fmt) == 'l' ||
|
||||
_tolower(*fmt) == 'z') {
|
||||
*fmt == 'z') {
|
||||
qualifier = *fmt++;
|
||||
if (unlikely(qualifier == *fmt)) {
|
||||
if (qualifier == 'h') {
|
||||
@@ -2851,7 +2852,6 @@ int vsscanf(const char *buf, const char *fmt, va_list args)
|
||||
else
|
||||
*va_arg(args, unsigned long long *) = val.u;
|
||||
break;
|
||||
case 'Z':
|
||||
case 'z':
|
||||
*va_arg(args, size_t *) = val.u;
|
||||
break;
|
||||
|
Reference in New Issue
Block a user