#include "utils.h"
#include "addritem.h"
#include "mgutils.h"
+#include "codeconv.h"
/**
* Create new email address item.
* \param value Name.
*/
void addritem_person_set_first_name( ItemPerson *person, const gchar *value ) {
- person->firstName = mgu_replace_string( person->firstName, value );
+ if (!value || g_utf8_validate(value, -1, NULL))
+ person->firstName = mgu_replace_string( person->firstName, value );
+ else {
+ gchar *out = conv_codeset_strdup(value,
+ conv_get_locale_charset_str_no_utf8(),
+ CS_INTERNAL);
+ if (out)
+ person->firstName = mgu_replace_string( person->firstName, out );
+ g_free(out);
+ }
}
/**
* \param value name.
*/
void addritem_person_set_last_name( ItemPerson *person, const gchar *value ) {
- person->lastName = mgu_replace_string( person->lastName, value );
+ if (!value || g_utf8_validate(value, -1, NULL))
+ person->lastName = mgu_replace_string( person->lastName, value );
+ else {
+ gchar *out = conv_codeset_strdup(value,
+ conv_get_locale_charset_str_no_utf8(),
+ CS_INTERNAL);
+ if (out)
+ person->lastName = mgu_replace_string( person->lastName, out );
+ g_free(out);
+ }
}
/**
* \param value name.
*/
void addritem_person_set_nick_name( ItemPerson *person, const gchar *value ) {
- person->nickName = mgu_replace_string( person->nickName, value );
+ if (!value || g_utf8_validate(value, -1, NULL))
+ person->nickName = mgu_replace_string( person->nickName, value );
+ else {
+ gchar *out = conv_codeset_strdup(value,
+ conv_get_locale_charset_str_no_utf8(),
+ CS_INTERNAL);
+ if (out)
+ person->nickName = mgu_replace_string( person->nickName, out );
+ g_free(out);
+ }
}
/**
* \param value name.
*/
void addritem_person_set_common_name( ItemPerson *person, const gchar *value ) {
- ADDRITEM_NAME(person) = mgu_replace_string( ADDRITEM_NAME(person), value );
+ if (!value || g_utf8_validate(value, -1, NULL))
+ ADDRITEM_NAME(person) = mgu_replace_string( ADDRITEM_NAME(person), value );
+ else {
+ gchar *out = conv_codeset_strdup(value,
+ conv_get_locale_charset_str_no_utf8(),
+ CS_INTERNAL);
+ if (out)
+ ADDRITEM_NAME(person) = mgu_replace_string( ADDRITEM_NAME(person), out );
+ g_free(out);
+ }
}
/**
fullName = g_strdup_printf( "%s", lastName );
}
}
+
+ if (!fullName || strlen(fullName) == 0) {
+ g_free(fullName);
+ fullName = NULL;
+ if (rec->listCName)
+ fullName = g_strdup(rec->listCName->data);
+ }
+
if( fullName ) {
g_strchug( fullName ); g_strchomp( fullName );
}
if( lastTag ) {
/* Save record */
fullValue = mgu_list_coalesce( listValue );
-
+ if (fullValue && last64) {
+ gchar *out = g_malloc(strlen(fullValue));
+ int len = 0;
+ if ((len = base64_decode(out, fullValue,
+ strlen(fullValue))) >= 0) {
+ g_free(fullValue);
+ fullValue = out;
+ fullValue[len] = '\0';
+ } else
+ g_free(out);
+ }
/* Base-64 encoded data */
/*
if( last64 ) {
/* Save data */
fullValue =
mgu_list_coalesce( listValue );
+ if (fullValue && last64) {
+ gchar *out = g_malloc(strlen(fullValue));
+ int len = 0;
+ if ((len = base64_decode(out, fullValue,
+ strlen(fullValue))) >= 0) {
+ g_free(fullValue);
+ fullValue = out;
+ fullValue[len] = '\0';
+ } else
+ g_free(out);
+ }
/* Base-64 encoded data */
/*
if( last64 ) {