X-Git-Url: https://git.deb.at/w?a=blobdiff_plain;f=abook.c;h=e9f8841dccee9c3eb23be9a2e882e3be2fdcb99f;hb=141acfcc1bb611ec8b1bafd229bb34845feadd51;hp=ae69a029987b5874aa55d7c9f44adb8d61d7fde5;hpb=4909ba20244f55ee7326a40d751cf6737c2bc2b6;p=pkg%2Fabook.git diff --git a/abook.c b/abook.c index ae69a02..e9f8841 100644 --- a/abook.c +++ b/abook.c @@ -50,6 +50,8 @@ static void add_email(int); char *datafile = NULL; static char *rcfile = NULL; +struct abook_output_item_filter selected_item_filter; + bool alternative_datafile = FALSE; bool alternative_rcfile = FALSE; @@ -132,6 +134,8 @@ init_abook() signal(SIGTERM, quit_abook_sig); + init_index(); + if(init_ui()) exit(EXIT_FAILURE); @@ -185,9 +189,11 @@ int main(int argc, char **argv) { #if defined(HAVE_SETLOCALE) && defined(HAVE_LOCALE_H) - setlocale(LC_ALL, ""); + setlocale(LC_MESSAGES, ""); + setlocale(LC_TIME, ""); + setlocale(LC_CTYPE, ""); + setlocale(LC_COLLATE, ""); #endif - bindtextdomain(PACKAGE, LOCALEDIR); textdomain(PACKAGE); @@ -299,6 +305,7 @@ parse_command_line(int argc, char **argv) *infile = "-", *outfile = "-"; int c; + selected_item_filter = select_output_item_filter("muttq"); for(;;) { int option_index = 0; @@ -364,7 +371,8 @@ parse_command_line(int argc, char **argv) set_convert_var(informat); break; case OPT_OUTFORMAT: - set_convert_var(outformat); + outformat = optarg; + selected_item_filter = select_output_item_filter(outformat); break; case OPT_INFILE: set_convert_var(infile); @@ -380,6 +388,8 @@ parse_command_line(int argc, char **argv) } } + if(! selected_item_filter.func) + selected_item_filter = select_output_item_filter("muttq"); if(optind < argc) { fprintf(stderr, _("%s: unrecognized arguments on command line\n"), argv[0]); @@ -442,33 +452,13 @@ quit_mutt_query(int status) exit(status); } -static void -muttq_print_item(FILE *file, int item) -{ - abook_list *emails, *e; - - emails = csv_to_abook_list(db_email_get(item)); - - for(e = emails; e; e = e->next) { - fprintf(file, "%s\t%s\t%s\n", e->data, db_name_get(item), - !db_fget(item, NOTES) ?" " :db_fget(item, NOTES) - ); - if(!opt_get_bool(BOOL_MUTT_RETURN_ALL_EMAILS)) - break; - } - abook_list_free(&emails); -} - static void mutt_query(char *str) { init_mutt_query(); if( str == NULL || !strcasecmp(str, "all") ) { - struct db_enumerator e = init_db_enumerator(ENUM_ALL); - printf("All items\n"); - db_enumerate_items(e) - muttq_print_item(stdout, e.item); + export_file("muttq", "-"); } else { int search_fields[] = {NAME, EMAIL, NICK, -1}; int i; @@ -478,7 +468,7 @@ mutt_query(char *str) } putchar('\n'); while(i >= 0) { - muttq_print_item(stdout, i); + e_write_item(stdout, i, selected_item_filter.func); i = find_item(str, i + 1, search_fields); } } @@ -510,7 +500,7 @@ make_mailstr(int item) get_first_email(email, item); - ret = *db_email_get(item) ? + ret = *email ? strdup_printf("%s <%s>", name, email) : xstrdup(name); @@ -704,6 +694,7 @@ init_add_email() check_abook_directory(); init_opts(); load_opts(rcfile); + init_standard_fields(); atexit(free_opts); /*