6 #define MAX_EMAIL_LEN 80
7 #define MAX_EMAILSTR_LEN (MAX_EMAILS*MAX_EMAIL_LEN + MAX_EMAILS + 1)
8 #define MAX_FIELD_LEN 81
27 #define LAST_FIELD NOTES
29 #define ITEM_FIELDS (LAST_FIELD+1)
31 typedef char * list_item[ITEM_FIELDS];
39 int parse_database(FILE *in);
40 int write_database(FILE *out);
41 int load_database(char *filename);
43 void close_database();
44 int add_item2database(list_item item);
45 void free_list_item(list_item item);
46 void remove_selected_items();
49 char *get_surname(char *s);
50 int find_item(char *str, int start);
51 int is_selected(int item);
54 #define LAST_ITEM (items - 1)
56 #define itemcpy(dest, src) memmove(dest, src, sizeof(list_item))
58 #define split_emailstr(item, emails) do {\
60 memset(&emails, 0, sizeof(emails) ); \
61 len = strlen(database[item][EMAIL]); \
62 for( _i=0,_j=0, _k=0; _i < len && _j < 4; _i++ ) { \
63 if( database[item][EMAIL][_i] ==',' ) { \
67 if( _k < MAX_EMAIL_LEN -1 ) \
68 emails[_j][_k++] = database[item][EMAIL][_i]; \
72 #define have_multiple_emails(item) \
73 strchr(database[item][EMAIL], ',')