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);
49 void clear_database();
51 void print_number_of_items();
53 char *get_surname(char *s);
54 void print_database();
56 #define LAST_ITEM (items - 1)
58 #define itemcpy(dest, src) memmove(dest, src, sizeof(list_item))
60 #define split_emailstr(item, emails) do {\
62 memset(&emails, 0, sizeof(emails) ); \
63 len = strlen(database[item][EMAIL]); \
64 for( _i=0,_j=0, _k=0; _i < len && _j < 4; _i++ ) { \
65 if( database[item][EMAIL][_i] ==',' ) { \
69 if( _k < MAX_EMAIL_LEN -1 ) \
70 emails[_j][_k++] = database[item][EMAIL][_i]; \
74 #define have_multiple_emails(item) \
75 strchr(database[item][EMAIL], ',')