#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,
URL,
NOTES,
ANNIVERSARY,
+ GROUPS,
ITEM_FIELDS /* this is the last */
};
FIELD_STRING = 1,
FIELD_EMAILS,
FIELD_LIST,
- FIELD_DAY,
+ FIELD_DATE,
};
enum {
#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();
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();
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);
#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
list_item db_item_get(int i);
-/*
- * Various macros
- */
-
-#define have_multiple_emails(item) \
- strchr(db_email_get(item), ',')
-
#endif /* _DATABASE_H */