"NICKNAME", /* NICK */
"URL", /* URL */
"NOTE", /* NOTES */
+ "BDAY", /* ANNIVERSARY */
"N", /* NAME: special case/mapping in vcard_parse_line() */
- NULL /* not implemented: ANNIVERSARY, ITEM_FIELDS */
+ NULL /* ITEM_FIELDS */
};
enum {
// vCard(post office box) - not used
strsep(&value, ";");
+ if(!value) return;
+
// vCard(the extended address)
item_fput(item, ADDRESS2, xstrdup(strsep(&value, ";")));
+ if(!value) return;
+
// vCard(the street address)
item_fput(item, ADDRESS, xstrdup(strsep(&value, ";")));
+ if(!value) return;
+
// vCard(the locality)
item_fput(item, CITY, xstrdup(strsep(&value, ";")));
+ if(!value) return;
+
// vCard(the region)
item_fput(item, STATE, xstrdup(strsep(&value, ";")));
+ if(!value) return;
+
// vCard(the postal code)
item_fput(item, ZIP, xstrdup(strsep(&value, ";")));
+ if(!value) return;
+
// vCard(the country name)
item_fput(item, COUNTRY, xstrdup(strsep(&value, ";")));
- if(*value) xfree(value);
+ // support of optional trailing ";" to the ADR field
+ if(value && *value) xfree(value);
}
static void
free(name);
+ if(db_fget(item, NICK))
+ fprintf(out, "NICKNAME:%s\r\n",
+ safe_str(db_fget(item, NICK)));
+ if(db_fget(item, ANNIVERSARY))
+ fprintf(out, "BDAY:%s\r\n",
+ safe_str(db_fget(item, ANNIVERSARY)));
+
// see rfc6350 section 6.3.1
if(db_fget(item, ADDRESS)) {
fprintf(out, "ADR:;%s;%s;%s;%s;%s;%s\r\n",