lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Wed, 4 Nov 2009 12:49:14 -0200 From: André Goddard Rosa <andre.goddard@...il.com> To: Frederic Weisbecker <fweisbec@...il.com>, laijs@...fujitsu.com, mingo@...e.hu, davem@...emloft.net, akpm@...ux-foundation.org, harvey.harrison@...il.com, linux list <linux-kernel@...r.kernel.org> Cc: me <andre.goddard@...il.com> Subject: [PATCH v3 7/7] vsprintf: factor out skip_space code in a separate function From: André Goddard Rosa <andre.goddard@...il.com> Date: Tue, 3 Nov 2009 11:02:09 -0200 Subject: [PATCH v3 7/7] vsprintf: factor out skip_space code in a separate function MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It decreases code size: text data bss dec hex filename 15719 0 8 15727 3d6f lib/vsprintf.o-before 15543 0 8 15551 3cbf lib/vsprintf.o-after Signed-off-by: André Goddard Rosa <andre.goddard@...il.com> Acked-by: Frederic Weisbecker <fweisbec@...il.com> --- lib/vsprintf.c | 19 +++++++++++-------- 1 files changed, 11 insertions(+), 8 deletions(-) diff --git a/lib/vsprintf.c b/lib/vsprintf.c index f703fdf..566c947 100644 --- a/lib/vsprintf.c +++ b/lib/vsprintf.c @@ -1736,6 +1736,13 @@ EXPORT_SYMBOL_GPL(bprintf); #endif /* CONFIG_BINARY_PRINTF */ +static noinline const char *skip_space(const char *str) +{ + while (isspace(*str)) + ++str; + return str; +} + /** * vsscanf - Unformat a buffer into a list of arguments * @buf: input buffer @@ -1757,10 +1764,8 @@ int vsscanf(const char *buf, const char *fmt, va_list args) * white space, including none, in the input. */ if (isspace(*fmt)) { - while (isspace(*fmt)) - ++fmt; - while (isspace(*str)) - ++str; + fmt = skip_space(fmt); + str = skip_space(str); } /* anything that is not a conversion must match exactly */ @@ -1830,8 +1835,7 @@ int vsscanf(const char *buf, const char *fmt, va_list args) if (field_width == -1) field_width = INT_MAX; /* first, skip leading white space in buffer */ - while (isspace(*str)) - str++; + str = skip_space(str); /* now copy until next white space */ while (*str && !isspace(*str) && field_width--) @@ -1873,8 +1877,7 @@ int vsscanf(const char *buf, const char *fmt, va_list args) /* have some sort of integer conversion. * first, skip white space in buffer. */ - while (isspace(*str)) - str++; + str = skip_space(str); digit = *str; if (is_sign && digit == '-') -- 1.6.5.2.143.g8cc62.dirty -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists