]> git.deb.at Git - pkg/abook.git/blob - database.h
Merged first 0.4.13pre patch
[pkg/abook.git] / database.h
1 #ifndef _DATABASE_H
2 #define _DATABASE_H
3
4
5 #define MAX_EMAILS              4
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
9
10 enum {
11         NAME,
12         EMAIL,
13         ADDRESS,
14         CITY,
15         STATE,
16         ZIP,
17         COUNTRY,
18         PHONE,
19         WORKPHONE,
20         FAX,
21         MOBILEPHONE,
22         NICK,
23         URL,
24         NOTES
25 };
26
27 #define LAST_FIELD              NOTES
28
29 #define ITEM_FIELDS             (LAST_FIELD+1)
30
31 typedef char * list_item[ITEM_FIELDS];
32
33 struct abook_field {
34         char *name;
35         char *key;
36         int tab;
37 };
38
39 int             parse_database(FILE *in);
40 int             write_database(FILE *out);
41 int             load_database(char *filename);
42 int             save_database();
43 void            close_database();
44 int             add_item2database(list_item item);
45 void            free_list_item(list_item item);
46 void            remove_selected_items();
47 void            sort_surname();
48 void            sort_database();
49 char            *get_surname(char *s);
50 int             find_item(char *str, int start);
51 int             is_selected(int item);
52
53
54 #define LAST_ITEM       (items - 1)
55
56 #define itemcpy(dest, src)      memmove(dest, src, sizeof(list_item))
57
58 #define split_emailstr(item, emails) do {\
59         int _i,_j,_k,len; \
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] ==',' ) { \
64                         _j++; \
65                         _k = 0; \
66                 } else \
67                         if( _k < MAX_EMAIL_LEN -1 ) \
68                                 emails[_j][_k++] = database[item][EMAIL][_i]; \
69         } \
70 } while(0)
71
72 #define have_multiple_emails(item) \
73         strchr(database[item][EMAIL], ',')
74
75 #endif