X-Git-Url: https://git.deb.at/w?a=blobdiff_plain;f=abook.c;h=e01eb427b4a399e78dda5f616191ae5b8a310240;hb=ea5b79b21b3e6b5d009dca4afcab7f3ed9cabdd5;hp=f61368e445ce59875adab0aef9900c3fd3eb2672;hpb=453d7cb813423efa8344c90b1a1a40ac947fd4d0;p=pkg%2Fabook.git diff --git a/abook.c b/abook.c index f61368e..e01eb42 100644 --- a/abook.c +++ b/abook.c @@ -84,7 +84,7 @@ quit_abook() { if( options_get_int("autosave") ) save_database(); - else if( statusline_ask_boolean("Save database", FALSE) ) + else if( statusline_ask_boolean("Save database", TRUE) ) save_database(); close_config(); @@ -224,73 +224,28 @@ muttq_print_item(int item) ); } -static int -mutt_query_name(char *str) -{ - int i, j; - char *tmp; - - for(i = 0, j = 0 ; i < items; i++) { - tmp = strdup(database[i][NAME]); - if( strstr( strupper(tmp), strupper(str) ) != NULL ) { - if( !j ) - putchar('\n'); - muttq_print_item(i); - j++; - } - free(tmp); - } - - return j; -} - -static int -mutt_query_email(char *str) -{ - int i, j, k; - char *tmp, emails[MAX_EMAILS][MAX_EMAIL_LEN]; - - for(i = 0, j = 0; i < items; i++) { - split_emailstr(i, emails); - for(k = 0; k < MAX_EMAILS; k++) { - if( *emails[k] ) { - tmp = strdup( emails[k] ); - if( strstr( strupper(tmp), strupper(str) ) != NULL ) { - if( !j ) - putchar('\n'); - j++; - if( options_get_int("mutt_return_all_emails") ) { - muttq_print_item(i); - free(tmp); - break; - } else - printf("%s\t%s\n", emails[k], - database[i][NAME]); - } - free(tmp); - } - } - } - - return j; -} - static void mutt_query(char *str) { - int i; - init_mutt_query(); if( str == NULL || !strcasecmp(str, "all") ) { + struct db_enumerator e = init_db_enumerator(ENUM_ALL); printf("All items\n"); - for(i = 0; i < items; i++) - muttq_print_item(i); + db_enumerate_items(e) + muttq_print_item(e.item); } else { - if( !mutt_query_name(str) && !mutt_query_email(str) ) { + int search_fields[] = {NAME, EMAIL, NICK, -1}; + int i; + if( (i = find_item(str, 0, search_fields)) < 0 ) { printf("Not found\n"); quit_mutt_query(1); } + putchar('\n'); + while(i >= 0) { + muttq_print_item(i); + i = find_item(str, i+1, search_fields); + } } quit_mutt_query(0); @@ -320,14 +275,14 @@ quit_mutt_query(int status) void -launch_mutt() +launch_mutt(int item) { int i; char email[MAX_EMAIL_LEN]; char *cmd; char *tmp = options_get_str("mutt_command"); - if( list_is_empty() ) + if( !is_valid_item(item) ) return; cmd = strconcat(tmp, " '", NULL ); @@ -356,21 +311,20 @@ launch_mutt() system(cmd); free(cmd); - refresh_screen(); } void -launch_lynx() +launch_wwwbrowser(int item) { char *cmd = NULL; - if( list_is_empty() ) + if( !is_valid_item(item) ) return; - if( database[list_current_item()][URL] ) + if( database[item][URL] ) cmd = mkstr("%s '%s'", options_get_str("www_command"), - safe_str(database[list_current_item()][URL])); + safe_str(database[item][URL])); else return; @@ -378,7 +332,6 @@ launch_lynx() system(cmd); free(cmd); - refresh_screen(); } void *