Re: [PATCH][RFC] vsprintf: unify the format decoding layer for its3 users

From: Frederic Weisbecker
Date: Sat Feb 28 2009 - 03:12:26 EST


On Fri, Feb 27, 2009 at 04:39:37PM -0800, Linus Torvalds wrote:
>
>
> On Fri, 27 Feb 2009, Frederic Weisbecker wrote:
> >
> > Ok, here is a try, I've mostly unified the format decoding bits.
> > Most interesting other helpers were already implemented (pointer(),
> > string() and number()
>
> Ok, I don't think this is beautiful, but neither was the original code,
> so..
>
> However, in order to make it at least a _bit_ more palatable, could we
> please agree to at least clean up this:
>
> > +static int format_decode(const char *fmt, enum format_type *type, int *flags,
> > + int *field_width, int *base, int *precision,
> > + int *qualifier)
>
> To
>
> struct printf_spec {
> enum format_type type;
> int flags, field_width, base, precision, qualifier;
> };
>
> and then pass things around like
>
> static int format_decode(const char *fmt, struct printf_spec *spec)
> {
> ..
>
> instead? Wouldn't that be nicer? I suspect it would make the code look
> nicer too (instead of doing "*base = x", you'd see "spec->base = x" and it
> would look less like line noise in the callee, an the caller could just
> do a single "struct format_spec spec = { 0, }" to initialize that thing).
>
> Linus

You're right, that's much proper.
See the V2 below:
---