All of lore.kernel.org
 help / color / mirror / Atom feed
From: Frederic Weisbecker <fweisbec@gmail.com>
To: Ingo Molnar <mingo@elte.hu>
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	linux-kernel@vger.kernel.org,
	Steven Rostedt <rostedt@goodmis.org>,
	Lai Jiangshan <laijs@cn.fujitsu.com>,
	Peter Zijlstra <peterz@infradead.org>
Subject: Re: [PATCH][RFC] vsprintf: unify the format decoding layer for its 3 users
Date: Sun, 1 Mar 2009 00:11:37 +0100	[thread overview]
Message-ID: <20090228231137.GB6574@nowhere> (raw)
In-Reply-To: <20090228091305.GA20533@elte.hu>

On Sat, Feb 28, 2009 at 10:13:05AM +0100, Ingo Molnar wrote:
> 
> * Frederic Weisbecker <fweisbec@gmail.com> wrote:
> 
> > > 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:
> 
> Just a few (very) small code style pet peeves:
> 
> > +struct printf_spec {
> > +	enum format_type type;
> > +	int flags;			/* flags to number() */
> > +	int field_width;		/* width of output field */
> > +	int base;
> > +	/* min. # of digits for integers; max number of chars for from string */
> > +	int precision;
> > +	int qualifier;
> > +};
> 
> doesnt it look a bit tidier this way:
> 
>  struct printf_spec {
> 	enum format_type	type;
> 	int			flags;		/* flags to number()     */
> 	int			field_width;	/* width of output field */
> 	int			base;
> 	int			precision;	/* # of digits/chars     */
> 	int			qualifier;
>  };
> 
> ?
> 
> > +		case '+':
> > +			spec->flags |= PLUS;
> > +			break;
> > +		case ' ':
> > +			spec->flags |= SPACE;
> > +			break;
> > +		case '#':
> > +			spec->flags |= SPECIAL;
> > +			break;
> > +		case '0':
> > +			spec->flags |= ZEROPAD;
> > +			break;
> > +		default:
> > +			found = false;
> 
> btw., this is one of the cases where i think the original style 
> was more useful:
> 
> > +		case '+':	spec->flags |= PLUS;  break;
> > +		case ' ':	spec->flags |= SPACE; break;
> [etc.]
> 
> as it's always good to compress repetitive patterns of code.
> 
> (If checkpatch complains about this then ignore checkpatch.)
> 
> > +	case 'n':
> > +		/* FIXME:
> > +		* What does C99 say about the overflow case here? */
> 
> (this comment looks a bit funny.)
> 
> > +		default: {
> > +			enum format_type type = spec.type;
> > +
> > +			if (type == FORMAT_TYPE_LONG_LONG)
> > +				num = get_arg(long long);
> > +			else if (type == FORMAT_TYPE_ULONG)
> > +				num = get_arg(unsigned long);
> > +			else if (type == FORMAT_TYPE_LONG)
> > +				num = get_arg(unsigned long);
> > +			else if (type == FORMAT_TYPE_SIZE_T)
> > +				num = get_arg(size_t);
> > +			else if (type == FORMAT_TYPE_PTRDIFF)
> > +				num = get_arg(ptrdiff_t);
> > +			else if (type == FORMAT_TYPE_USHORT)
> > +				num = get_arg(unsigned short);
> > +			else if (type == FORMAT_TYPE_SHORT)
> > +				num = get_arg(short);
> > +			else if (type == FORMAT_TYPE_UINT)
> > +				num = get_arg(unsigned int);
> > +			else
> > +				num = get_arg(int);
> 
> Wouldnt it be cleaner as a switch() statement and to put into a 
> helper function?
> 
> Also, could you please resend the current stuff with a 0/ 
> description and a diffstat in the 0 mail so that we can all see 
> all the patches again and the total impact?
> 
> 	Ingo

Ok, for all these comments. Except I'm not sure that it is needed to export this part
in a helper, it means 3 new different helpers with two of them having a pointer to a va_list
in their parameters.
A pointer to va_list is legal but doesn't seem to me much proper.

Unless you have some objections, I will repost the new addressed version and if you still
think these parts should be exported to helpers, then I will do it.


  parent reply	other threads:[~2009-02-28 23:11 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-02-24  5:17 [PATCH 1/3] add binary printf Frederic Weisbecker
2009-02-26 13:02 ` Ingo Molnar
2009-02-26 17:05   ` Frederic Weisbecker
2009-02-26 17:43     ` Ingo Molnar
2009-02-26 17:45       ` Frederic Weisbecker
2009-02-26 17:52         ` Ingo Molnar
2009-02-26 18:34           ` Frederic Weisbecker
2009-02-26 18:45             ` Ingo Molnar
2009-02-26 18:52             ` Frederic Weisbecker
2009-02-26 18:56               ` Ingo Molnar
2009-02-26 19:05                 ` Frederic Weisbecker
2009-02-27  6:19                 ` [PATCH][RFC] vsprintf: unify the format decoding layer for its 3 users Frederic Weisbecker
2009-02-27  6:46                   ` Andrew Morton
2009-02-27  7:12                     ` Frederic Weisbecker
2009-02-27  7:39                       ` Andrew Morton
2009-02-27  8:32                         ` Ingo Molnar
2009-02-27  8:45                           ` Andrew Morton
2009-02-27  9:35                             ` Ingo Molnar
2009-02-27  8:20                     ` Ingo Molnar
2009-02-27  8:33                       ` Andrew Morton
2009-02-27 15:03                     ` Steven Rostedt
2009-02-28  0:30                       ` Linus Torvalds
2009-02-28  0:39                   ` Linus Torvalds
2009-02-28  8:11                     ` Frederic Weisbecker
2009-02-28  9:13                       ` Ingo Molnar
2009-02-28 19:45                         ` [PATCH 1/5] add binary printf Frederic Weisbecker
2009-02-28 20:16                         ` [PATCH 2/5] ftrace: infrastructure for supporting binary record Frederic Weisbecker
2009-03-02 16:27                           ` Steven Rostedt
2009-03-02 17:39                             ` Frédéric Weisbecker
2009-02-28 21:30                         ` [PATCH 3/5] ftrace: add ftrace_bprintk() Frederic Weisbecker
2009-03-02 16:34                           ` Steven Rostedt
2009-03-02 17:45                             ` Frédéric Weisbecker
2009-03-02 17:53                               ` Steven Rostedt
2009-03-02 18:06                                 ` Frédéric Weisbecker
2009-03-02 18:23                                   ` Steven Rostedt
2009-03-02 18:55                                     ` Frédéric Weisbecker
2009-02-28 22:16                         ` [PATCH 4/5] tracing/core: drop the old ftrace_printk implementation in favour of ftrace_bprintk Frederic Weisbecker
2009-03-02 16:37                           ` Steven Rostedt
2009-03-02 17:47                             ` Frédéric Weisbecker
2009-02-28 23:11                         ` Frederic Weisbecker [this message]
2009-03-01  2:34                         ` [PATCH 5/5 v3] vsprintf: unify the format decoding layer for its 3 users Frederic Weisbecker
2009-03-01  3:31                         ` [PATCH 0/5] Binary ftrace_printk Frederic Weisbecker
2009-02-28 16:54                       ` [PATCH][RFC] vsprintf: unify the format decoding layer for its 3 users Linus Torvalds
2009-02-28 17:18                         ` Frederic Weisbecker

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20090228231137.GB6574@nowhere \
    --to=fweisbec@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=laijs@cn.fujitsu.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=peterz@infradead.org \
    --cc=rostedt@goodmis.org \
    --cc=torvalds@linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.