X-Git-Url: https://git.deb.at/w?a=blobdiff_plain;f=abook.c;h=05ec4293d37290d4644ddd22b74782528864d93a;hb=db05da322d7ef6bd94e097fb95af1ffead328b96;hp=85210584003ff10914d0e04ea2229229c1287bdc;hpb=6e4a7610dcb671089f011061603a6bc7c604881d;p=pkg%2Fabook.git diff --git a/abook.c b/abook.c index 8521058..05ec429 100644 --- a/abook.c +++ b/abook.c @@ -377,6 +377,11 @@ parse_command_line(int argc, char **argv) set_convert_var(informat); break; case OPT_OUTFORMAT: + if(mode != MODE_CONVERT && mode != MODE_QUERY) { + fprintf(stderr, + _("please use option --outformat after --convert or --mutt-query option\n")); + exit(EXIT_FAILURE); + } // ascii-name is stored, it's used to traverse // e_filters[] in MODE_CONVERT (see export_file()) outformat = optarg; @@ -410,7 +415,11 @@ parse_command_line(int argc, char **argv) } if(! selected_item_filter.func) selected_item_filter = select_output_item_filter("muttq"); - else if (! strcmp(outformat, "custom") && *custom_format) { + else if (! strcmp(outformat, "custom")) { + if(! *custom_format) { + fprintf(stderr, _("Invalid custom format string\n")); + exit(EXIT_FAILURE); + } parsed_custom_format = (char *)malloc(FORMAT_STRING_LEN * sizeof(char*)); custom_format_fields = (enum field_types *)malloc(FORMAT_STRING_MAX_FIELDS * sizeof(enum field_types *)); parse_custom_format(custom_format, parsed_custom_format, custom_format_fields); @@ -460,6 +469,8 @@ show_usage() puts (_(" (default: text)")); puts (_(" --outfile destination file")); puts (_(" (default: stdout)")); + puts (_(" --outformatstr format to use for \"custom\" --outformat")); + puts (_(" (default: \"{nick} ({name}): {mobile}\")")); puts (_(" --formats list available formats")); } @@ -491,7 +502,12 @@ mutt_query(char *str) printf("Not found\n"); quit_mutt_query(EXIT_FAILURE); } - putchar('\n'); + // mutt expects a leading line containing + // a message about the query. + // Others output filter supporting query (vcard, custom) + // don't needs this. + if(!strcmp(selected_item_filter.filtname, "muttq")) + putchar('\n'); while(i >= 0) { e_write_item(stdout, i, selected_item_filter.func); i = find_item(str, i + 1, search_fields);