X-Git-Url: https://git.deb.at/w?a=blobdiff_plain;f=database.c;h=a9e77b55ad15f9d344d9bdae93e052896b50b88e;hb=e731ab4b326a1e7f9ca6d81963b57cf314e97953;hp=138b7f356abf18d1287a4480e025e3459986d27f;hpb=7d7ae6aab5fb6307328b7cfb193ebce3e2870624;p=pkg%2Fabook.git diff --git a/database.c b/database.c index 138b7f3..a9e77b5 100644 --- a/database.c +++ b/database.c @@ -203,9 +203,11 @@ declare_unknown_field(char *key) if(!database) return; - for(i = 0; i < fields_count; i++) - if(database[i]) + for(i = 0; i < items; i++) + if(database[i]) { database[i] = xrealloc(database[i], ITEM_SIZE); + database[i][fields_count - 1] = NULL; + } } /* @@ -541,9 +543,6 @@ surnamecmp(const void *i1, const void *i2) int ret, idx = field_id(NAME); char *n1, *n2, *s1, *s2; - if(idx == 0) - return 0; /* no 'name' field */ - n1 = (*(list_item *)i1)[idx]; n2 = (*(list_item *)i2)[idx]; @@ -835,3 +834,22 @@ db_item_get(int i) return database[i]; } +/* Fetch addresses from all fields of FIELD_EMAILS type */ +/* Memory has to be freed by the caller */ +char * +db_email_get(int item) +{ + int i; + char *res; + abook_field_list *cur; + abook_list *emails = NULL; + + for(cur = fields_list, i = 0; cur; cur = cur->next, i++) + if(cur->field->type == FIELD_EMAILS && *database[item][i]) + abook_list_append(&emails, database[item][i]); + + res = abook_list_to_csv(emails); + abook_list_free(&emails); + return res ? res : xstrdup(""); +} +