Messages in this thread Patch in this message | | | Date | Tue, 24 Nov 2015 00:56:27 +0200 | Subject | Re: [PATCH 01/14] lib/vsprintf.c: pull out padding code from dentry_name() | From | Andy Shevchenko <> |
| |
On Mon, Nov 23, 2015 at 11:29 PM, Rasmus Villemoes <linux@rasmusvillemoes.dk> wrote: > Pull out the logic in dentry_name() which handles field width space > padding, in preparation for reusing it from string(). Rename the > widen() helper to move_right(), since it is used for handling the > !(flags & LEFT) case. > > Cc: Al Viro <viro@ZenIV.linux.org.uk> > Cc: Ingo Molnar <mingo@kernel.org> > Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk> > --- > lib/vsprintf.c | 46 +++++++++++++++++++++++++++++++--------------- > 1 file changed, 31 insertions(+), 15 deletions(-) > > diff --git a/lib/vsprintf.c b/lib/vsprintf.c > index f9cee8e1233c..d7452563a6a6 100644 > --- a/lib/vsprintf.c > +++ b/lib/vsprintf.c > @@ -538,7 +538,7 @@ char *string(char *buf, char *end, const char *s, struct printf_spec spec) > return buf; > } > > -static void widen(char *buf, char *end, unsigned len, unsigned spaces) > +static void move_right(char *buf, char *end, unsigned len, unsigned spaces) > { > size_t size; > if (buf >= end) /* nowhere to put anything */ > @@ -556,6 +556,35 @@ static void widen(char *buf, char *end, unsigned len, unsigned spaces) > memset(buf, ' ', spaces); > } > > +/*
Perhaps /**
> + * Handle field width padding for a string. > + * @buf: current buffer position > + * @n: length of string > + * @end: end of output buffer > + * @spec: for field width and flags > + * Returns: new buffer position after padding. > + */ > +static noinline_for_stack > +char *widen_string(char *buf, int n, char *end, struct printf_spec spec) > +{ > + unsigned spaces; > + > + if (likely(n >= spec.field_width))
> + return buf; > + /* we want to pad the sucker */ > + spaces = spec.field_width - n; > + if (!(spec.flags & LEFT)) { > + move_right(buf - n, end, n, spaces); > + return buf + spaces; > + } > + while (spaces--) { > + if (buf < end) > + *buf = ' '; > + ++buf; > + } > + return buf; > +} > + > static noinline_for_stack > char *dentry_name(char *buf, char *end, const struct dentry *d, struct printf_spec spec, > const char *fmt) > @@ -597,20 +626,7 @@ char *dentry_name(char *buf, char *end, const struct dentry *d, struct printf_sp > *buf = c; > } > rcu_read_unlock(); > - if (n < spec.field_width) { > - /* we want to pad the sucker */ > - unsigned spaces = spec.field_width - n; > - if (!(spec.flags & LEFT)) { > - widen(buf - n, end, n, spaces); > - return buf + spaces; > - } > - while (spaces--) { > - if (buf < end) > - *buf = ' '; > - ++buf; > - } > - } > - return buf; > + return widen_string(buf, n, end, spec); > } > > static noinline_for_stack > -- > 2.6.1 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/
-- With Best Regards, Andy Shevchenko
| |