X-Git-Url: https://git.deb.at/?a=blobdiff_plain;f=database.c;h=5da2e93eced4b440c54ac3accaa2713d9a92d264;hb=7a7531e544d236d58ca077ce56b7d6d0c60faa09;hp=c17adae62b7da64a6d4e19d83040b05729b83ae2;hpb=c4d2f4ab3d5166b75f8fc1bf9e2be776014d391d;p=pkg%2Fabook.git diff --git a/database.c b/database.c index c17adae..5da2e93 100644 --- a/database.c +++ b/database.c @@ -19,6 +19,7 @@ #include "misc.h" #include "options.h" #include "filter.h" +#include "xmalloc.h" #ifdef HAVE_CONFIG_H # include "config.h" #endif @@ -71,9 +72,26 @@ struct abook_field abook_fields[ITEM_FIELDS] = { {"Nickname/Alias", "nick", TAB_OTHER},/* NICK */ {"URL", "url", TAB_OTHER},/* URL */ {"Notes", "notes", TAB_OTHER},/* NOTES */ + {"Custom1", "custom1", TAB_CUSTOM},/* CUSTOM1 */ + {"Custom2", "custom2", TAB_CUSTOM},/* CUSTOM2 */ + {"Custom3", "custom3", TAB_CUSTOM},/* CUSTOM3 */ + {"Custom4", "custom4", TAB_CUSTOM},/* CUSTOM4 */ + {"Custom5", "custom5", TAB_CUSTOM},/* CUSTOM5 */ }; +int +find_field(const char *field) +{ + int i; + + for(i = 0; i < ITEM_FIELDS; i++) + if( !strcmp(abook_fields[i].key, field) ) + return i; + + return -1; +} + int parse_database(FILE *in) { @@ -206,7 +224,7 @@ free_list_item(list_item item) int i; for(i=0; i= 0 && i < ITEM_FIELDS); + + if(strcasecmp(abook_fields[i].name, name)) { /* name differs */ + /* + * check if we are overwriting statically allocated default + */ + if(strcasecmp(abook_fields[i].name, abook_fields[i].key)) + xfree(abook_fields[i].name); + + s = xmalloc_inc(MAX_FIELDNAME_LEN, 1); + snprintf(s, MAX_FIELDNAME_LEN, "%s", name); + abook_fields[i].name = s; + } + + return 0; +} + +int +change_custom_field_name(const char *name, int n) +{ + int i; + char keyname[21]; + + assert(name); + + snprintf(keyname, sizeof(keyname), "custom%d", n); + + for(i = CUSTOM_MIN; i <= CUSTOM_MAX; i++) { + if(!strcasecmp(abook_fields[i].key, keyname)) { + assign_fieldname(name, i); + return i; + } + } + + return -1; +} +