]> git.deb.at Git - pkg/abook.git/blob - database.h
Initial revision
[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_items();
47 void            sort_surname();
48 void            sort_database();
49 void            clear_database();
50 void            find(int next);
51 void            print_number_of_items();
52 void            read_database();
53 char            *get_surname(char *s);
54 void            print_database();
55
56 #define LAST_ITEM       (items - 1)
57
58 #define itemcpy(dest, src)      memmove(dest, src, sizeof(list_item))
59
60 #define split_emailstr(item, emails) do {\
61         int _i,_j,_k,len; \
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] ==',' ) { \
66                         _j++; \
67                         _k = 0; \
68                 } else \
69                         if( _k < MAX_EMAIL_LEN -1 ) \
70                                 emails[_j][_k++] = database[item][EMAIL][_i]; \
71         } \
72 } while(0)
73
74 #define have_multiple_emails(item) \
75         strchr(database[item][EMAIL], ',')
76
77 #endif