[PATCH] cli: command line option parser cleanup

Tomi Ollila tomi.ollila at iki.fi
Tue Feb 25 11:24:58 PST 2014


On Mon, Feb 24 2014, Jani Nikula <jani at nikula.org> wrote:

> Reduce the indentation for clarity. No functional changes.
>
> ---

LGTM. I like the style.

Tomi


>
> I've had this around for a while now, in preparation for something
> else that was never needed...
> ---
>  command-line-arguments.c | 69 ++++++++++++++++++++++++------------------------
>  1 file changed, 35 insertions(+), 34 deletions(-)
>
> diff --git a/command-line-arguments.c b/command-line-arguments.c
> index bf9aecabe869..844d6c3d18bf 100644
> --- a/command-line-arguments.c
> +++ b/command-line-arguments.c
> @@ -129,40 +129,41 @@ parse_option (const char *arg,
>  
>      const notmuch_opt_desc_t *try;
>      for (try = options; try->opt_type != NOTMUCH_OPT_END; try++) {
> -	if (try->name && strncmp (arg, try->name, strlen (try->name)) == 0) {
> -	    char next = arg[strlen (try->name)];
> -	    const char *value= arg+strlen(try->name)+1;
> -
> -	    /* If we have not reached the end of the argument
> -	       (i.e. the next character is not a space or delimiter)
> -	       then the argument could still match a longer option
> -	       name later in the option table.
> -	    */
> -	    if (next != '=' && next != ':' && next != '\0')
> -		continue;
> -
> -	    if (try->output_var == NULL)
> -		INTERNAL_ERROR ("output pointer NULL for option %s", try->name);
> -
> -	    switch (try->opt_type) {
> -	    case NOTMUCH_OPT_KEYWORD:
> -		return _process_keyword_arg (try, next, value);
> -		break;
> -	    case NOTMUCH_OPT_BOOLEAN:
> -		return _process_boolean_arg (try, next, value);
> -		break;
> -	    case NOTMUCH_OPT_INT:
> -		return _process_int_arg (try, next, value);
> -		break;
> -	    case NOTMUCH_OPT_STRING:
> -		return _process_string_arg (try, next, value);
> -		break;
> -	    case NOTMUCH_OPT_POSITION:
> -	    case NOTMUCH_OPT_END:
> -	    default:
> -		INTERNAL_ERROR ("unknown or unhandled option type %d", try->opt_type);
> -		/*UNREACHED*/
> -	    }
> +	if (! try->name)
> +	    continue;
> +
> +	if (strncmp (arg, try->name, strlen (try->name)) != 0)
> +	    continue;
> +
> +	char next = arg[strlen (try->name)];
> +	const char *value = arg + strlen(try->name) + 1;
> +
> +	/*
> +	 * If we have not reached the end of the argument (i.e. the
> +	 * next character is not a space or delimiter) then the
> +	 * argument could still match a longer option name later in
> +	 * the option table.
> +	 */
> +	if (next != '=' && next != ':' && next != '\0')
> +	    continue;
> +
> +	if (try->output_var == NULL)
> +	    INTERNAL_ERROR ("output pointer NULL for option %s", try->name);
> +
> +	switch (try->opt_type) {
> +	case NOTMUCH_OPT_KEYWORD:
> +	    return _process_keyword_arg (try, next, value);
> +	case NOTMUCH_OPT_BOOLEAN:
> +	    return _process_boolean_arg (try, next, value);
> +	case NOTMUCH_OPT_INT:
> +	    return _process_int_arg (try, next, value);
> +	case NOTMUCH_OPT_STRING:
> +	    return _process_string_arg (try, next, value);
> +	case NOTMUCH_OPT_POSITION:
> +	case NOTMUCH_OPT_END:
> +	default:
> +	    INTERNAL_ERROR ("unknown or unhandled option type %d", try->opt_type);
> +	    /*UNREACHED*/
>  	}
>      }
>      fprintf (stderr, "Unrecognized option: --%s\n", arg);
> -- 
> 1.8.5.3
>
> _______________________________________________
> notmuch mailing list
> notmuch at notmuchmail.org
> http://notmuchmail.org/mailman/listinfo/notmuch


More information about the notmuch mailing list