[PATCH v6 1/6] cli: command line parsing: allow default for keyword options

Mark Walters markwalters1009 at gmail.com
Mon May 28 12:05:59 PDT 2012


On Mon, 28 May 2012, Peter Wang <novalazy at gmail.com> wrote:
> On Sun, 27 May 2012 09:22:21 +0100, Mark Walters <markwalters1009 at gmail.com> wrote:
>> This changes the parsing for "keyword" options so that if the option
>> is specified with no argument the argument is parsed as if it were
>> passed an empty string. This make it easier to add options to existing
>> boolean arguments (the existing --option can default to TRUE).
>> ---
>>  command-line-arguments.c |   17 +++++++++++++----
>>  1 files changed, 13 insertions(+), 4 deletions(-)
>> 
>> diff --git a/command-line-arguments.c b/command-line-arguments.c
>> index 76b185f..2fb8a1b 100644
>> --- a/command-line-arguments.c
>> +++ b/command-line-arguments.c
>> @@ -11,10 +11,15 @@
>>  */
>>  
>>  static notmuch_bool_t
>> -_process_keyword_arg (const notmuch_opt_desc_t *arg_desc, const char *arg_str) {
>> +_process_keyword_arg (const notmuch_opt_desc_t *arg_desc, char next, const char *arg_str) {
>>  
>>      const notmuch_keyword_t *keywords = arg_desc->keywords;
>>  
>> +    if (next == 0) {
>> +	/* No keyword given */
>> +	arg_str="";
>> +    }
>> +
>
> Whitespace.

Will fix

>>      while (keywords->name) {
>>  	if (strcmp (arg_str, keywords->name) == 0) {
>>  	    if (arg_desc->output_var) {
>> @@ -24,7 +29,10 @@ _process_keyword_arg (const notmuch_opt_desc_t *arg_desc, const char *arg_str) {
>>  	}
>>  	keywords++;
>>      }
>> -    fprintf (stderr, "unknown keyword: %s\n", arg_str);
>> +    if (next!=0)
>
> Whitespace.

Will fix

>> +	fprintf (stderr, "unknown keyword: %s\n", arg_str);
>> +    else
>> +	fprintf (stderr, "option %s needs a keyword\n", arg_desc->name);
>
> I think "keyword argument" is clearer.

I think I agree: the reason I kept it is that the first case is the
existing error message. Any comments from anyone?

Best wishes

Mark


More information about the notmuch mailing list