[PATCH 2/4] notmuch-dump: convert to notmuch-opts argument handling.

Jani Nikula jani at nikula.org
Tue Dec 6 12:43:38 PST 2011


On Sun,  4 Dec 2011 11:47:53 -0400, David Bremner <david at tethera.net> wrote:
> From: David Bremner <bremner at debian.org>
> 
> The output file is handled via positional arguments. There are
> currently no "normal" options.
> ---
>  notmuch-dump.c |   32 ++++++++++++++++++++------------
>  1 files changed, 20 insertions(+), 12 deletions(-)
> 
> diff --git a/notmuch-dump.c b/notmuch-dump.c
> index a490917..6fbdc81 100644
> --- a/notmuch-dump.c
> +++ b/notmuch-dump.c
> @@ -19,6 +19,7 @@
>   */
>  
>  #include "notmuch-client.h"
> +#include "notmuch-opts.h"
>  
>  int
>  notmuch_dump_command (unused (void *ctx), int argc, char *argv[])
> @@ -41,27 +42,34 @@ notmuch_dump_command (unused (void *ctx), int argc, char *argv[])
>      if (notmuch == NULL)
>  	return 1;
>  
> -    argc--; argv++; /* skip subcommand argument */
> +    char *output_file_name = NULL;
> +    int opt_index;
>  
> -    if (argc && strcmp (argv[0], "--") != 0) {
> +    notmuch_opt_desc_t options[] = {
> +	{ "out-file", 'o', NOTMUCH_OPT_POSITION, 0, &output_file_name },
> +	{ 0, 0, 0, 0, 0 }
> +    };
> +
> +    opt_index = notmuch_parse_args (argc, argv, options, 1);
> +
> +    if (opt_index < 0) {
> +	/* diagnostics already printed */
> +	exit(1);

return 1 rather than exit(1)?

BR,
Jani.

> +    }
> +
> +    if (output_file_name) {
>  	fprintf (stderr, "Warning: the output file argument of dump is deprecated.\n");
> -	output = fopen (argv[0], "w");
> +	output = fopen (output_file_name, "w");
>  	if (output == NULL) {
>  	    fprintf (stderr, "Error opening %s for writing: %s\n",
> -		     argv[0], strerror (errno));
> +		     output_file_name, strerror (errno));
>  	    return 1;
>  	}
> -	argc--;
> -	argv++;
>      }
>  
> -    if (argc && strcmp (argv[0], "--") == 0){
> -	argc--;
> -	argv++;
> -    }
>  
> -    if (argc) {
> -	query_str = query_string_from_args (notmuch, argc, argv);
> +    if (opt_index < argc) {
> +	query_str = query_string_from_args (notmuch, argc-opt_index, argv+opt_index);
>  	if (query_str == NULL) {
>  	    fprintf (stderr, "Out of memory.\n");
>  	    return 1;
> -- 
> 1.7.7.3
> 
> _______________________________________________
> notmuch mailing list
> notmuch at notmuchmail.org
> http://notmuchmail.org/mailman/listinfo/notmuch


More information about the notmuch mailing list