X-Git-Url: https://git.deb.at/?a=blobdiff_plain;f=database.h;h=3bfeb4e385a342fed6cd77ad0a0c7793646c5ecd;hb=208968222b63ab08f95b0ad6d882cfc4ab22dda5;hp=9ab2c0ca3f12212f4739f0289a4256628c0c75fc;hpb=0d3c17d9ab127e5596c8fb97d65122b3b90f6b11;p=pkg%2Fabook.git diff --git a/database.h b/database.h index 9ab2c0c..3bfeb4e 100644 --- a/database.h +++ b/database.h @@ -11,6 +11,7 @@ enum { NAME, EMAIL, ADDRESS, + ADDRESS2, CITY, STATE, ZIP, @@ -21,37 +22,59 @@ enum { MOBILEPHONE, NICK, URL, - NOTES + NOTES, + CUSTOM1, + CUSTOM2, + CUSTOM3, + CUSTOM4, + CUSTOM5, + ITEM_FIELDS /* this is the last */ }; -#define LAST_FIELD NOTES +#define LAST_FIELD (ITEM_FIELDS - 1) -#define ITEM_FIELDS (LAST_FIELD+1) +#define CUSTOM_MIN CUSTOM1 +#define CUSTOM_MAX CUSTOM5 typedef char * list_item[ITEM_FIELDS]; +#define MAX_FIELDNAME_LEN 21 + struct abook_field { char *name; char *key; int tab; }; +enum { + ENUM_ALL, + ENUM_SELECTED +}; + +struct db_enumerator { + int item; + int mode; /* warning: read only */ +}; + +int find_field(const char *field); 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(); int add_item2database(list_item item); void free_list_item(list_item item); -void remove_items(); +void remove_selected_items(); void sort_surname(); -void sort_database(); -void clear_database(); -void find(int next); -void print_number_of_items(); -void read_database(); +void sort_by_field(int field); char *get_surname(char *s); -void print_database(); +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); +int change_custom_field_name(const char *name, int n); #define LAST_ITEM (items - 1) @@ -61,7 +84,7 @@ void print_database(); 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; \ @@ -74,4 +97,7 @@ void print_database(); #define have_multiple_emails(item) \ strchr(database[item][EMAIL], ',') +#define db_enumerate_items(e) \ + while( -1 != (e.item = real_db_enumerate_items(e))) + #endif