X-Git-Url: https://git.deb.at/?a=blobdiff_plain;f=database.h;h=142d1b01eb7be0666a0e76f6cc437311ee77621e;hb=ceba9214d8bebe32d0c34c7a82916bcb9d798d69;hp=0c47fd49bda38a7e37df61504f0493024e972ba3;hpb=3212da92838c056bcc1cafa57beaf26086e2ac96;p=pkg%2Fabook.git diff --git a/database.h b/database.h index 0c47fd4..142d1b0 100644 --- a/database.h +++ b/database.h @@ -11,6 +11,7 @@ enum { NAME, EMAIL, ADDRESS, + ADDRESS2, CITY, STATE, ZIP, @@ -21,7 +22,7 @@ enum { MOBILEPHONE, NICK, URL, - NOTES + NOTES, }; #define LAST_FIELD NOTES @@ -36,8 +37,18 @@ struct abook_field { int tab; }; +enum { + ENUM_ALL, + ENUM_SELECTED +}; + +struct db_enumerator { + int item; + int mode; /* warning: read only */ +}; + int parse_database(FILE *in); -int write_database(FILE *out); +int write_database(FILE *out, struct db_enumerator e); int load_database(char *filename); int save_database(); void close_database(); @@ -47,9 +58,12 @@ void remove_selected_items(); void sort_surname(); void sort_database(); char *get_surname(char *s); -int find_item(char *str, int start); +int find_item(char *str, int start, int search_fields[]); int is_selected(int item); +int is_valid_item(int item); +int real_db_enumerate_items(struct db_enumerator e); +struct db_enumerator init_db_enumerator(int mode); #define LAST_ITEM (items - 1) @@ -59,7 +73,7 @@ int is_selected(int item); int _i,_j,_k,len; \ memset(&emails, 0, sizeof(emails) ); \ len = strlen(database[item][EMAIL]); \ - for( _i=0,_j=0, _k=0; _i < len && _j < 4; _i++ ) { \ + for( _i=0,_j=0, _k=0; _i < len && _j < MAX_EMAILS; _i++ ) { \ if( database[item][EMAIL][_i] ==',' ) { \ _j++; \ _k = 0; \ @@ -72,4 +86,7 @@ int is_selected(int item); #define have_multiple_emails(item) \ strchr(database[item][EMAIL], ',') +#define db_enumerate_items(e) \ + while( -1 != (e.item = real_db_enumerate_items(e))) + #endif