diff options
author | hiro <hiro@ee746299-78ed-0310-b773-934348b2243d> | 2010-08-17 07:09:27 +0000 |
---|---|---|
committer | hiro <hiro@ee746299-78ed-0310-b773-934348b2243d> | 2010-08-17 07:09:27 +0000 |
commit | f7027562c816a9e975991020588547dae50efc15 (patch) | |
tree | 3ee185d6bb37ebdd85f7f1003a8225304710730e /src/ldif.c | |
parent | f5a0e4f278175802371808947f67d6d8991bc381 (diff) |
modified ldif parser. Fixed OE import on startup.
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@2672 ee746299-78ed-0310-b773-934348b2243d
Diffstat (limited to 'src/ldif.c')
-rw-r--r-- | src/ldif.c | 15 |
1 files changed, 12 insertions, 3 deletions
@@ -486,7 +486,7 @@ static void ldif_add_user_attr( Ldif_ParsedRec *rec, gchar *tagName, gchar *tagV if( ! fld->selected ) return; name = fld->tagName; - if( fld->userName ) { + if( fld->userName && *(fld->userName) ) { name = fld->userName; } attr = g_new0( Ldif_UserAttr, 1 ); @@ -521,15 +521,22 @@ static void ldif_add_value( Ldif_ParsedRec *rec, gchar *tagName, gchar *tagValue rec->listLName = g_slist_append( rec->listLName, val ); } else if( g_ascii_strcasecmp( nm, LDIF_TAG_NICKNAME ) == 0 || + g_ascii_strcasecmp( nm, LDIF_TAG_NICKNAME2 ) == 0 || g_ascii_strcasecmp( nm, LDIF_TAG_XNICKNAME ) == 0 ) { rec->listNName = g_slist_append( rec->listNName, val ); } else if( g_ascii_strcasecmp( nm, LDIF_TAG_EMAIL ) == 0 ) { - rec->listAddress = g_slist_append( rec->listAddress, val ); + if( g_slist_find_custom( rec->listAddress, val, (GCompareFunc)strcmp2 )) { + /* skip duplicated address */ + g_free( val ); + } else { + rec->listAddress = g_slist_append( rec->listAddress, val ); + } } else { /* Add field as user attribute */ ldif_add_user_attr( rec, tagName, tagValue, hashField ); + g_free( val ); } g_free( nm ); } @@ -796,7 +803,9 @@ static void ldif_hash_add_list( GHashTable *table, GSList *list ) { else if( g_ascii_strcasecmp( tag, LDIF_TAG_LASTNAME ) == 0 ) { rec->reserved = TRUE; } - else if( g_ascii_strcasecmp( tag, LDIF_TAG_NICKNAME ) == 0 ) { + else if( g_ascii_strcasecmp( tag, LDIF_TAG_NICKNAME ) == 0 || + g_ascii_strcasecmp( tag, LDIF_TAG_XNICKNAME) == 0 || + g_ascii_strcasecmp( tag, LDIF_TAG_NICKNAME2) == 0 ) { rec->reserved = TRUE; } else if( g_ascii_strcasecmp( tag, LDIF_TAG_EMAIL ) == 0 ) { |