From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751938AbdAMOvH (ORCPT ); Fri, 13 Jan 2017 09:51:07 -0500 Received: from mail.kernel.org ([198.145.29.136]:44598 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751844AbdAMOvF (ORCPT ); Fri, 13 Jan 2017 09:51:05 -0500 Date: Fri, 13 Jan 2017 11:50:59 -0300 From: Arnaldo Carvalho de Melo To: Soramichi AKIYAMA Cc: linux-kernel@vger.kernel.org, peterz@infradead.org, mingo@redhat.com, alexander.shishkin@linux.intel.com Subject: Re: [PATCH] tools/lib/subcmd: Fix missing member name Message-ID: <20170113145059.GA32549@kernel.org> References: <20170113215623.32fb1ac2d862af0048c30fe6@m.soramichi.jp> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20170113215623.32fb1ac2d862af0048c30fe6@m.soramichi.jp> X-Url: http://acmel.wordpress.com User-Agent: Mutt/1.7.1 (2016-10-04) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Em Fri, Jan 13, 2017 at 09:56:23PM +0900, Soramichi AKIYAMA escreveu: > This patch adds missing member names to struct initializations. > Although in C99 for struct S {int x, int y} two init codes > struct S s = {.x = (a), (b)} and struct S s = {.x = (a), .y = (b)} > are the same, it is better to explicitly write .y (.argh in this patch) > for readability and robustness against language/compiler evolutions. Ouch, of course, applied. Thanks, - Arnaldo > Signed-off-by: Soramichi Akiyama > --- > tools/lib/subcmd/parse-options.h | 18 +++++++++--------- > 1 file changed, 9 insertions(+), 9 deletions(-) > > diff --git a/tools/lib/subcmd/parse-options.h b/tools/lib/subcmd/parse-options.h > index 37e2d1a..f054ca1 100644 > --- a/tools/lib/subcmd/parse-options.h > +++ b/tools/lib/subcmd/parse-options.h > @@ -133,32 +133,32 @@ struct option { > #define OPT_UINTEGER(s, l, v, h) { .type = OPTION_UINTEGER, .short_name = (s), .long_name = (l), .value = check_vtype(v, unsigned int *), .help = (h) } > #define OPT_LONG(s, l, v, h) { .type = OPTION_LONG, .short_name = (s), .long_name = (l), .value = check_vtype(v, long *), .help = (h) } > #define OPT_U64(s, l, v, h) { .type = OPTION_U64, .short_name = (s), .long_name = (l), .value = check_vtype(v, u64 *), .help = (h) } > -#define OPT_STRING(s, l, v, a, h) { .type = OPTION_STRING, .short_name = (s), .long_name = (l), .value = check_vtype(v, const char **), (a), .help = (h) } > +#define OPT_STRING(s, l, v, a, h) { .type = OPTION_STRING, .short_name = (s), .long_name = (l), .value = check_vtype(v, const char **), .argh = (a), .help = (h) } > #define OPT_STRING_OPTARG(s, l, v, a, h, d) \ > { .type = OPTION_STRING, .short_name = (s), .long_name = (l), \ > - .value = check_vtype(v, const char **), (a), .help = (h), \ > + .value = check_vtype(v, const char **), .argh =(a), .help = (h), \ > .flags = PARSE_OPT_OPTARG, .defval = (intptr_t)(d) } > #define OPT_STRING_OPTARG_SET(s, l, v, os, a, h, d) \ > { .type = OPTION_STRING, .short_name = (s), .long_name = (l), \ > - .value = check_vtype(v, const char **), (a), .help = (h), \ > + .value = check_vtype(v, const char **), .argh = (a), .help = (h), \ > .flags = PARSE_OPT_OPTARG, .defval = (intptr_t)(d), \ > .set = check_vtype(os, bool *)} > -#define OPT_STRING_NOEMPTY(s, l, v, a, h) { .type = OPTION_STRING, .short_name = (s), .long_name = (l), .value = check_vtype(v, const char **), (a), .help = (h), .flags = PARSE_OPT_NOEMPTY} > +#define OPT_STRING_NOEMPTY(s, l, v, a, h) { .type = OPTION_STRING, .short_name = (s), .long_name = (l), .value = check_vtype(v, const char **), .argh = (a), .help = (h), .flags = PARSE_OPT_NOEMPTY} > #define OPT_DATE(s, l, v, h) \ > { .type = OPTION_CALLBACK, .short_name = (s), .long_name = (l), .value = (v), .argh = "time", .help = (h), .callback = parse_opt_approxidate_cb } > #define OPT_CALLBACK(s, l, v, a, h, f) \ > - { .type = OPTION_CALLBACK, .short_name = (s), .long_name = (l), .value = (v), (a), .help = (h), .callback = (f) } > + { .type = OPTION_CALLBACK, .short_name = (s), .long_name = (l), .value = (v), .argh = (a), .help = (h), .callback = (f) } > #define OPT_CALLBACK_NOOPT(s, l, v, a, h, f) \ > - { .type = OPTION_CALLBACK, .short_name = (s), .long_name = (l), .value = (v), (a), .help = (h), .callback = (f), .flags = PARSE_OPT_NOARG } > + { .type = OPTION_CALLBACK, .short_name = (s), .long_name = (l), .value = (v), .argh = (a), .help = (h), .callback = (f), .flags = PARSE_OPT_NOARG } > #define OPT_CALLBACK_DEFAULT(s, l, v, a, h, f, d) \ > - { .type = OPTION_CALLBACK, .short_name = (s), .long_name = (l), .value = (v), (a), .help = (h), .callback = (f), .defval = (intptr_t)d, .flags = PARSE_OPT_LASTARG_DEFAULT } > + { .type = OPTION_CALLBACK, .short_name = (s), .long_name = (l), .value = (v), .argh = (a), .help = (h), .callback = (f), .defval = (intptr_t)d, .flags = PARSE_OPT_LASTARG_DEFAULT } > #define OPT_CALLBACK_DEFAULT_NOOPT(s, l, v, a, h, f, d) \ > { .type = OPTION_CALLBACK, .short_name = (s), .long_name = (l),\ > - .value = (v), (a), .help = (h), .callback = (f), .defval = (intptr_t)d,\ > + .value = (v), .arg = (a), .help = (h), .callback = (f), .defval = (intptr_t)d,\ > .flags = PARSE_OPT_LASTARG_DEFAULT | PARSE_OPT_NOARG} > #define OPT_CALLBACK_OPTARG(s, l, v, d, a, h, f) \ > { .type = OPTION_CALLBACK, .short_name = (s), .long_name = (l), \ > - .value = (v), (a), .help = (h), .callback = (f), \ > + .value = (v), .argh = (a), .help = (h), .callback = (f), \ > .flags = PARSE_OPT_OPTARG, .data = (d) } > > /* parse_options() will filter out the processed options and leave the > -- > 2.1.4