Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c5484d7c authored by André Goddard Rosa's avatar André Goddard Rosa Committed by Linus Torvalds
Browse files

vsprintf: factor out skip_space code in a separate function



When converting more caller sites, the inline decision will be left up to gcc.

It decreases code size:
 text    data     bss     dec     hex filename
15710       0       8   15718    3d66 vsprintf.o (ex lib/lib.a-BEFORE)
15534       0       8   15542    3cb6 vsprintf.o (ex lib/lib.a-AFTER)

Signed-off-by: default avatarAndré Goddard Rosa <andre.goddard@gmail.com>
Acked-by: default avatarFrederic Weisbecker <fweisbec@gmail.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent d4be151b
Loading
Loading
Loading
Loading
+11 −8
Original line number Diff line number Diff line
@@ -1786,6 +1786,13 @@ EXPORT_SYMBOL_GPL(bprintf);

#endif /* CONFIG_BINARY_PRINTF */

static noinline char *skip_space(const char *str)
{
	while (isspace(*str))
		++str;
	return (char *)str;
}

/**
 * vsscanf - Unformat a buffer into a list of arguments
 * @buf:	input buffer
@@ -1807,10 +1814,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 */
@@ -1880,8 +1885,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--)
@@ -1923,8 +1927,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 == '-')