]> git.deb.at Git - pkg/abook.git/blobdiff - database.h
build system: updating gnuconfig files to 2013-06-10
[pkg/abook.git] / database.h
index bd86d975a9cce5460d07aa181e22a72c417b2c27..23ee2943f9e3c5fbd7140c9f12ec12a1da65f186 100644 (file)
@@ -6,7 +6,7 @@
 #define MAX_EMAILSTR_LEN       (MAX_LIST_ITEMS * (MAX_EMAIL_LEN + 1) + 1)
 #define MAX_FIELD_LEN          81
 
-enum {
+enum field_types {
        NAME = 0, /* important */
        EMAIL,
        ADDRESS,
@@ -23,6 +23,7 @@ enum {
        URL,
        NOTES,
        ANNIVERSARY,
+       GROUPS,
        ITEM_FIELDS /* this is the last */
 };
 
@@ -43,7 +44,7 @@ enum {
        FIELD_STRING = 1,
        FIELD_EMAILS,
        FIELD_LIST,
-       FIELD_DAY,
+       FIELD_DATE,
 };
 
 enum {
@@ -66,7 +67,7 @@ abook_field *real_find_field(char *key, abook_field_list *list, int *nb);
 #define find_field(key, list)          real_find_field(key, list, NULL)
 #define find_field_number(key, pt_nb)  real_find_field(key, NULL, pt_nb)
 #define find_declared_field(key)       find_field(key,NULL)
-void get_field_keyname(int i, char **key, char **name);
+void get_field_info(int i, char **key, char **name, int *type);
 void add_field(abook_field_list **list, abook_field *f);
 char *declare_new_field(char *key, char *name, char *type, int accept_standard);
 void init_standard_fields();
@@ -80,6 +81,8 @@ int load_database(char *filename);
 int write_database(FILE *out, struct db_enumerator e);
 int save_database();
 void remove_selected_items();
+void merge_selected_items();
+void remove_duplicates();
 void sort_surname();
 void sort_by_field(char *field);
 void close_database();
@@ -88,6 +91,8 @@ char *get_surname(char *s);
 int find_item(char *str, int start, int search_fields[]);
 int is_selected(int item);
 int is_valid_item(int item);
+int last_item();
+int db_n_items();
 
 int real_db_enumerate_items(struct db_enumerator e);
 struct db_enumerator init_db_enumerator(int mode);
@@ -102,6 +107,7 @@ void item_empty(list_item item);
 void item_free(list_item *item);
 void item_copy(list_item dest, list_item src);
 void item_duplicate(list_item dest, list_item src);
+void item_merge(list_item dest, list_item src);
 
 int item_fput(list_item item, int i, char *val);
 char *item_fget(list_item item, int i);
@@ -113,7 +119,7 @@ char *real_db_field_get(int item, int i, int std);
 #define db_fget(item, i)               real_db_field_get(item, i, 1)
 #define db_fget_byid(item, i)          real_db_field_get(item, i, 0)
 #define db_name_get(item)              db_fget(item, NAME)
-#define db_email_get(item)             db_fget(item, EMAIL)
+char *db_email_get(int item); /* memory has to be freed by the caller */
 
 /*
  * database field write
@@ -130,14 +136,5 @@ int real_db_field_put(int item, int i, int std, char *val);
 list_item db_item_get(int i);
 
 
-/*
- * Various macros
- */
-
-#define LAST_ITEM (items - 1)
-
-#define have_multiple_emails(item) \
-       strchr(db_email_get(item), ',')
-
 #endif /* _DATABASE_H */