#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 */
};
#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);