diff options
-rw-r--r-- | addressbook/ChangeLog | 7 | ||||
-rw-r--r-- | addressbook/importers/evolution-ldif-importer.c | 13 |
2 files changed, 19 insertions, 1 deletions
diff --git a/addressbook/ChangeLog b/addressbook/ChangeLog index c42cfb50d5..b9f6e746fb 100644 --- a/addressbook/ChangeLog +++ b/addressbook/ChangeLog @@ -1,3 +1,10 @@ +2004-06-14 Not Zed <NotZed@Ximian.com> + + * importers/evolution-ldif-importer.c (parseLine): handle LIST + field types. + (ldif_fields[]): Add a list type. E_CONTACT_EMAIL is a list field + type. See #58855. + 2004-06-08 Chris Toshok <toshok@ximian.com> * gui/widgets/e-addressbook-model.c (get_view_idle): new diff --git a/addressbook/importers/evolution-ldif-importer.c b/addressbook/importers/evolution-ldif-importer.c index eb6fb63825..31bf39e7f6 100644 --- a/addressbook/importers/evolution-ldif-importer.c +++ b/addressbook/importers/evolution-ldif-importer.c @@ -52,11 +52,12 @@ static struct { char *ldif_attribute; EContactField contact_field; #define FLAG_ADDRESS 0x01 +#define FLAG_LIST 0x02 int flags; } ldif_fields[] = { { "cn", E_CONTACT_FULL_NAME }, - { "mail", E_CONTACT_EMAIL }, + { "mail", E_CONTACT_EMAIL, FLAG_LIST }, #if 0 { "givenname", E_CONTACT_GIVEN_NAME }, #endif @@ -260,6 +261,16 @@ parseLine (EContact *contact, EContactAddress *address, char **buf) else if (!g_ascii_strcasecmp (ptr, "streetaddress")) address->street = g_strdup (ldif_value->str); } + else if (ldif_fields[i].flags & FLAG_LIST) { + GList *list; + + list = e_contact_get (contact, ldif_fields[i].contact_field); + list = g_list_append (list, g_strdup (ldif_value->str)); + e_contact_set (contact, ldif_fields[i].contact_field, list); + + g_list_foreach (list, (GFunc) g_free, NULL); + g_list_free (list); + } else { /* FIXME is everything a string? */ e_contact_set (contact, ldif_fields[i].contact_field, ldif_value->str); |