aboutsummaryrefslogtreecommitdiffstats
path: root/addressbook/tools/evolution-addressbook-export-list-cards.c
diff options
context:
space:
mode:
authorMilan Crha <mcrha@redhat.com>2008-10-17 13:26:25 +0800
committerBharath Acharya <abharath@src.gnome.org>2008-10-17 13:26:25 +0800
commitb23dbcc068e12130fdf013b977856fabfbb86ff1 (patch)
treeffd913fe8dcdff47364ac7e5acb5cb86bdaca9c1 /addressbook/tools/evolution-addressbook-export-list-cards.c
parent5ce1bbbbc83a42532b43788839321f2fac831dd1 (diff)
downloadgsoc2013-evolution-b23dbcc068e12130fdf013b977856fabfbb86ff1.tar
gsoc2013-evolution-b23dbcc068e12130fdf013b977856fabfbb86ff1.tar.gz
gsoc2013-evolution-b23dbcc068e12130fdf013b977856fabfbb86ff1.tar.bz2
gsoc2013-evolution-b23dbcc068e12130fdf013b977856fabfbb86ff1.tar.lz
gsoc2013-evolution-b23dbcc068e12130fdf013b977856fabfbb86ff1.tar.xz
gsoc2013-evolution-b23dbcc068e12130fdf013b977856fabfbb86ff1.tar.zst
gsoc2013-evolution-b23dbcc068e12130fdf013b977856fabfbb86ff1.zip
** Fix for bug #511918
2008-10-17 Milan Crha <mcrha@redhat.com> ** Fix for bug #511918 * tools/evolution-addressbook-export-list-cards.c: (struct _EContactCSVFieldData), (csv_field_data[]), (e_contact_csv_get_data_type), (e_contact_csv_get): Use TRUE/FALSE texts for boolean values and do not free returned value for them, otherwise it crashes. svn path=/trunk/; revision=36632
Diffstat (limited to 'addressbook/tools/evolution-addressbook-export-list-cards.c')
-rw-r--r--addressbook/tools/evolution-addressbook-export-list-cards.c181
1 files changed, 85 insertions, 96 deletions
diff --git a/addressbook/tools/evolution-addressbook-export-list-cards.c b/addressbook/tools/evolution-addressbook-export-list-cards.c
index 285f1dc9bc..4b98bc77ac 100644
--- a/addressbook/tools/evolution-addressbook-export-list-cards.c
+++ b/addressbook/tools/evolution-addressbook-export-list-cards.c
@@ -139,115 +139,96 @@ enum _EContactFieldCSV
E_CONTACT_CSV_LAST
};
+typedef enum {
+ DT_STRING,
+ DT_BOOLEAN
+} EContactCSVDataType;
+
struct _EContactCSVFieldData
{
gint csv_field;
gint contact_field;
gchar *csv_name;
+ EContactCSVDataType data_type;
};
#define NOMAP -1
static EContactCSVFieldData csv_field_data[] = {
- {E_CONTACT_CSV_FILE_AS, E_CONTACT_FILE_AS, ""},
- {E_CONTACT_CSV_FULL_NAME, E_CONTACT_CSV_FULL_NAME, ""},
- {E_CONTACT_CSV_EMAIL_1, E_CONTACT_EMAIL_1, ""},
- {E_CONTACT_CSV_EMAIL_2, E_CONTACT_EMAIL_2, ""},
- {E_CONTACT_CSV_EMAIL_3, E_CONTACT_EMAIL_3, ""},
- {E_CONTACT_CSV_EMAIL_4, E_CONTACT_EMAIL_4, ""},
- {E_CONTACT_CSV_PHONE_PRIMARY, E_CONTACT_PHONE_PRIMARY,
- ""},
- {E_CONTACT_CSV_PHONE_ASSISTANT,
- E_CONTACT_PHONE_ASSISTANT, ""},
- {E_CONTACT_CSV_PHONE_BUSINESS,
- E_CONTACT_PHONE_BUSINESS, ""},
- {E_CONTACT_CSV_PHONE_CALLBACK,
- E_CONTACT_PHONE_CALLBACK, ""},
- {E_CONTACT_CSV_PHONE_COMPANY, E_CONTACT_PHONE_COMPANY,
- ""},
- {E_CONTACT_CSV_PHONE_HOME, E_CONTACT_PHONE_HOME, ""},
- {E_CONTACT_CSV_ORG, E_CONTACT_ORG, ""},
+ {E_CONTACT_CSV_FILE_AS, E_CONTACT_FILE_AS, "", DT_STRING},
+ {E_CONTACT_CSV_FULL_NAME, E_CONTACT_CSV_FULL_NAME, "", DT_STRING},
+ {E_CONTACT_CSV_EMAIL_1, E_CONTACT_EMAIL_1, "", DT_STRING},
+ {E_CONTACT_CSV_EMAIL_2, E_CONTACT_EMAIL_2, "", DT_STRING},
+ {E_CONTACT_CSV_EMAIL_3, E_CONTACT_EMAIL_3, "", DT_STRING},
+ {E_CONTACT_CSV_EMAIL_4, E_CONTACT_EMAIL_4, "", DT_STRING},
+ {E_CONTACT_CSV_PHONE_PRIMARY, E_CONTACT_PHONE_PRIMARY, "", DT_STRING},
+ {E_CONTACT_CSV_PHONE_ASSISTANT, E_CONTACT_PHONE_ASSISTANT, "", DT_STRING},
+ {E_CONTACT_CSV_PHONE_BUSINESS, E_CONTACT_PHONE_BUSINESS, "", DT_STRING},
+ {E_CONTACT_CSV_PHONE_CALLBACK, E_CONTACT_PHONE_CALLBACK, "", DT_STRING},
+ {E_CONTACT_CSV_PHONE_COMPANY, E_CONTACT_PHONE_COMPANY, "", DT_STRING},
+ {E_CONTACT_CSV_PHONE_HOME, E_CONTACT_PHONE_HOME, "", DT_STRING},
+ {E_CONTACT_CSV_ORG, E_CONTACT_ORG, "", DT_STRING},
/*E_CONTACT_CSV_ADDRESS_BUSINESS, */
- {E_CONTACT_CSV_ADDRESS_BUSINESS_STREET, NOMAP,
- "Business Address"},
- {E_CONTACT_CSV_ADDRESS_BUSINESS_EXT, NOMAP,
- "Business Address2"},
- {E_CONTACT_CSV_ADDRESS_BUSINESS_CITY, NOMAP,
- "Business Address City"},
- {E_CONTACT_CSV_ADDRESS_BUSINESS_REGION, NOMAP,
- "Business Address State"},
- {E_CONTACT_CSV_ADDRESS_BUSINESS_POSTCODE, NOMAP,
- "Business Address PostCode"},
- {E_CONTACT_CSV_ADDRESS_BUSINESS_COUNTRY, NOMAP,
- "Business Address Country"},
+ {E_CONTACT_CSV_ADDRESS_BUSINESS_STREET, NOMAP, "Business Address", DT_STRING},
+ {E_CONTACT_CSV_ADDRESS_BUSINESS_EXT, NOMAP, "Business Address2", DT_STRING},
+ {E_CONTACT_CSV_ADDRESS_BUSINESS_CITY, NOMAP, "Business Address City", DT_STRING},
+ {E_CONTACT_CSV_ADDRESS_BUSINESS_REGION, NOMAP, "Business Address State", DT_STRING},
+ {E_CONTACT_CSV_ADDRESS_BUSINESS_POSTCODE, NOMAP, "Business Address PostCode", DT_STRING},
+ {E_CONTACT_CSV_ADDRESS_BUSINESS_COUNTRY, NOMAP, "Business Address Country", DT_STRING},
/*E_CONTACT_CSV_ADDRESS_HOME, */
- {E_CONTACT_CSV_ADDRESS_HOME_STREET, NOMAP, "Home Address"},
- {E_CONTACT_CSV_ADDRESS_HOME_EXT, NOMAP, "Home Address2"},
- {E_CONTACT_CSV_ADDRESS_HOME_CITY, NOMAP, "Home Address City"},
- {E_CONTACT_CSV_ADDRESS_HOME_REGION, NOMAP,
- "Home Address State"},
- {E_CONTACT_CSV_ADDRESS_HOME_POSTCODE, NOMAP,
- "Home Address PostCode"},
- {E_CONTACT_CSV_ADDRESS_HOME_COUNTRY, NOMAP,
- "Home Address Country"},
- {E_CONTACT_CSV_PHONE_MOBILE, E_CONTACT_PHONE_MOBILE,
- ""},
- {E_CONTACT_CSV_PHONE_CAR, E_CONTACT_PHONE_CAR, ""},
- {E_CONTACT_CSV_PHONE_BUSINESS_FAX,
- E_CONTACT_PHONE_BUSINESS_FAX, ""},
- {E_CONTACT_CSV_PHONE_HOME_FAX,
- E_CONTACT_PHONE_HOME_FAX, ""},
- {E_CONTACT_CSV_PHONE_BUSINESS_2,
- E_CONTACT_PHONE_BUSINESS_2, ""},
- {E_CONTACT_CSV_PHONE_HOME_2, E_CONTACT_PHONE_HOME_2,
- ""},
- {E_CONTACT_CSV_PHONE_ISDN, E_CONTACT_PHONE_ISDN, ""},
- {E_CONTACT_CSV_PHONE_OTHER, E_CONTACT_PHONE_OTHER, ""},
- {E_CONTACT_CSV_PHONE_OTHER_FAX,
- E_CONTACT_PHONE_OTHER_FAX, ""},
- {E_CONTACT_CSV_PHONE_PAGER, E_CONTACT_PHONE_PAGER, ""},
- {E_CONTACT_CSV_PHONE_RADIO, E_CONTACT_PHONE_RADIO, ""},
- {E_CONTACT_CSV_PHONE_TELEX, E_CONTACT_PHONE_TELEX, ""},
- {E_CONTACT_CSV_PHONE_TTYTDD, E_CONTACT_PHONE_TTYTDD,
- ""},
+ {E_CONTACT_CSV_ADDRESS_HOME_STREET, NOMAP, "Home Address", DT_STRING},
+ {E_CONTACT_CSV_ADDRESS_HOME_EXT, NOMAP, "Home Address2", DT_STRING},
+ {E_CONTACT_CSV_ADDRESS_HOME_CITY, NOMAP, "Home Address City", DT_STRING},
+ {E_CONTACT_CSV_ADDRESS_HOME_REGION, NOMAP, "Home Address State", DT_STRING},
+ {E_CONTACT_CSV_ADDRESS_HOME_POSTCODE, NOMAP, "Home Address PostCode", DT_STRING},
+ {E_CONTACT_CSV_ADDRESS_HOME_COUNTRY, NOMAP, "Home Address Country", DT_STRING},
+ {E_CONTACT_CSV_PHONE_MOBILE, E_CONTACT_PHONE_MOBILE, "", DT_STRING},
+ {E_CONTACT_CSV_PHONE_CAR, E_CONTACT_PHONE_CAR, "", DT_STRING},
+ {E_CONTACT_CSV_PHONE_BUSINESS_FAX, E_CONTACT_PHONE_BUSINESS_FAX, "", DT_STRING},
+ {E_CONTACT_CSV_PHONE_HOME_FAX, E_CONTACT_PHONE_HOME_FAX, "", DT_STRING},
+ {E_CONTACT_CSV_PHONE_BUSINESS_2, E_CONTACT_PHONE_BUSINESS_2, "", DT_STRING},
+ {E_CONTACT_CSV_PHONE_HOME_2, E_CONTACT_PHONE_HOME_2, "", DT_STRING},
+ {E_CONTACT_CSV_PHONE_ISDN, E_CONTACT_PHONE_ISDN, "", DT_STRING},
+ {E_CONTACT_CSV_PHONE_OTHER, E_CONTACT_PHONE_OTHER, "", DT_STRING},
+ {E_CONTACT_CSV_PHONE_OTHER_FAX, E_CONTACT_PHONE_OTHER_FAX, "", DT_STRING},
+ {E_CONTACT_CSV_PHONE_PAGER, E_CONTACT_PHONE_PAGER, "", DT_STRING},
+ {E_CONTACT_CSV_PHONE_RADIO, E_CONTACT_PHONE_RADIO, "", DT_STRING},
+ {E_CONTACT_CSV_PHONE_TELEX, E_CONTACT_PHONE_TELEX, "", DT_STRING},
+ {E_CONTACT_CSV_PHONE_TTYTDD, E_CONTACT_PHONE_TTYTDD, "", DT_STRING},
/*E_CONTACT_CSV_ADDRESS_OTHER, */
- {E_CONTACT_CSV_ADDRESS_OTHER_STREET, NOMAP, "Other Address"},
- {E_CONTACT_CSV_ADDRESS_OTHER_EXT, NOMAP, "Other Address2"},
- {E_CONTACT_CSV_ADDRESS_OTHER_CITY, NOMAP,
- "Other Address City"},
- {E_CONTACT_CSV_ADDRESS_OTHER_REGION, NOMAP,
- "Other Address State"},
- {E_CONTACT_CSV_ADDRESS_OTHER_POSTCODE, NOMAP,
- "Other Address PostCode"},
- {E_CONTACT_CSV_ADDRESS_OTHER_COUNTRY, NOMAP,
- "Other Address Country"},
- {E_CONTACT_CSV_HOMEPAGE_URL, E_CONTACT_HOMEPAGE_URL, ""},
- {E_CONTACT_CSV_ORG_UNIT, E_CONTACT_ORG_UNIT, ""},
- {E_CONTACT_CSV_OFFICE, E_CONTACT_OFFICE, ""},
- {E_CONTACT_CSV_TITLE, E_CONTACT_TITLE, ""},
- {E_CONTACT_CSV_ROLE, E_CONTACT_ROLE, ""},
- {E_CONTACT_CSV_MANAGER, E_CONTACT_MANAGER, ""},
- {E_CONTACT_CSV_ASSISTANT, E_CONTACT_ASSISTANT, ""},
- {E_CONTACT_CSV_NICKNAME, E_CONTACT_NICKNAME, ""},
- {E_CONTACT_CSV_SPOUSE, E_CONTACT_SPOUSE, ""},
- {E_CONTACT_CSV_NOTE, E_CONTACT_NOTE, ""},
- {E_CONTACT_CSV_CALENDAR_URI, E_CONTACT_CALENDAR_URI, ""},
- {E_CONTACT_CSV_FREEBUSY_URL, E_CONTACT_FREEBUSY_URL, ""},
+ {E_CONTACT_CSV_ADDRESS_OTHER_STREET, NOMAP, "Other Address", DT_STRING},
+ {E_CONTACT_CSV_ADDRESS_OTHER_EXT, NOMAP, "Other Address2", DT_STRING},
+ {E_CONTACT_CSV_ADDRESS_OTHER_CITY, NOMAP, "Other Address City", DT_STRING},
+ {E_CONTACT_CSV_ADDRESS_OTHER_REGION, NOMAP, "Other Address State", DT_STRING},
+ {E_CONTACT_CSV_ADDRESS_OTHER_POSTCODE, NOMAP, "Other Address PostCode", DT_STRING},
+ {E_CONTACT_CSV_ADDRESS_OTHER_COUNTRY, NOMAP, "Other Address Country", DT_STRING},
+ {E_CONTACT_CSV_HOMEPAGE_URL, E_CONTACT_HOMEPAGE_URL, "", DT_STRING},
+ {E_CONTACT_CSV_ORG_UNIT, E_CONTACT_ORG_UNIT, "", DT_STRING},
+ {E_CONTACT_CSV_OFFICE, E_CONTACT_OFFICE, "", DT_STRING},
+ {E_CONTACT_CSV_TITLE, E_CONTACT_TITLE, "", DT_STRING},
+ {E_CONTACT_CSV_ROLE, E_CONTACT_ROLE, "", DT_STRING},
+ {E_CONTACT_CSV_MANAGER, E_CONTACT_MANAGER, "", DT_STRING},
+ {E_CONTACT_CSV_ASSISTANT, E_CONTACT_ASSISTANT, "", DT_STRING},
+ {E_CONTACT_CSV_NICKNAME, E_CONTACT_NICKNAME, "", DT_STRING},
+ {E_CONTACT_CSV_SPOUSE, E_CONTACT_SPOUSE, "", DT_STRING},
+ {E_CONTACT_CSV_NOTE, E_CONTACT_NOTE, "", DT_STRING},
+ {E_CONTACT_CSV_CALENDAR_URI, E_CONTACT_CALENDAR_URI, "", DT_STRING},
+ {E_CONTACT_CSV_FREEBUSY_URL, E_CONTACT_FREEBUSY_URL, "", DT_STRING},
/*E_CONTACT_ANNIVERSARY, */
- {E_CONTACT_CSV_ANNIVERSARY_YEAR, NOMAP, "Anniversary Year"},
- {E_CONTACT_CSV_ANNIVERSARY_MONTH, NOMAP, "Anniversary Month"},
- {E_CONTACT_CSV_ANNIVERSARY_DAY, NOMAP, "Anniversary Day"},
+ {E_CONTACT_CSV_ANNIVERSARY_YEAR, NOMAP, "Anniversary Year", DT_STRING},
+ {E_CONTACT_CSV_ANNIVERSARY_MONTH, NOMAP, "Anniversary Month", DT_STRING},
+ {E_CONTACT_CSV_ANNIVERSARY_DAY, NOMAP, "Anniversary Day", DT_STRING},
/*E_CONTACT_BIRTH_DATE, */
- {E_CONTACT_CSV_BIRTH_DATE_YEAR, NOMAP, "Birth Year"},
- {E_CONTACT_CSV_BIRTH_DATE_MONTH, NOMAP, "Birth Month"},
- {E_CONTACT_CSV_BIRTH_DATE_DAY, NOMAP, "Birth Day"},
- {E_CONTACT_CSV_MAILER, E_CONTACT_MAILER, ""},
- {E_CONTACT_CSV_NAME_OR_ORG, E_CONTACT_NAME_OR_ORG, ""},
- {E_CONTACT_CSV_CATEGORIES, E_CONTACT_CATEGORIES, ""},
- {E_CONTACT_CSV_FAMILY_NAME, E_CONTACT_FAMILY_NAME, ""},
- {E_CONTACT_CSV_GIVEN_NAME, E_CONTACT_GIVEN_NAME, ""},
- {E_CONTACT_CSV_WANTS_HTML, E_CONTACT_WANTS_HTML, ""},
- {E_CONTACT_CSV_IS_LIST, E_CONTACT_IS_LIST, ""},
- {E_CONTACT_CSV_LAST, NOMAP, ""}
+ {E_CONTACT_CSV_BIRTH_DATE_YEAR, NOMAP, "Birth Year", DT_STRING},
+ {E_CONTACT_CSV_BIRTH_DATE_MONTH, NOMAP, "Birth Month", DT_STRING},
+ {E_CONTACT_CSV_BIRTH_DATE_DAY, NOMAP, "Birth Day", DT_STRING},
+ {E_CONTACT_CSV_MAILER, E_CONTACT_MAILER, "", DT_STRING},
+ {E_CONTACT_CSV_NAME_OR_ORG, E_CONTACT_NAME_OR_ORG, "", DT_STRING},
+ {E_CONTACT_CSV_CATEGORIES, E_CONTACT_CATEGORIES, "", DT_STRING},
+ {E_CONTACT_CSV_FAMILY_NAME, E_CONTACT_FAMILY_NAME, "", DT_STRING},
+ {E_CONTACT_CSV_GIVEN_NAME, E_CONTACT_GIVEN_NAME, "", DT_STRING},
+ {E_CONTACT_CSV_WANTS_HTML, E_CONTACT_WANTS_HTML, "", DT_BOOLEAN},
+ {E_CONTACT_CSV_IS_LIST, E_CONTACT_IS_LIST, "", DT_BOOLEAN},
+ {E_CONTACT_CSV_LAST, NOMAP, "", DT_STRING}
};
@@ -276,6 +257,12 @@ e_contact_csv_get_contact_field (EContactFieldCSV csv_field)
return csv_field_data[csv_field].contact_field;
}
+static EContactCSVDataType
+e_contact_csv_get_data_type (EContactFieldCSV csv_field)
+{
+ return csv_field_data[csv_field].data_type;
+}
+
gchar *
e_contact_csv_get_name (EContactFieldCSV csv_field)
{
@@ -310,8 +297,10 @@ e_contact_csv_get (EContact * contact, EContactFieldCSV csv_field)
if (contact_field != NOMAP) {
field_value = e_contact_get (contact, contact_field);
+ if (e_contact_csv_get_data_type (csv_field) == DT_BOOLEAN) {
+ field_value = g_strdup ((GPOINTER_TO_INT (field_value)) ? "TRUE" : "FALSE");
+ }
} else {
-
switch (csv_field) {
case E_CONTACT_CSV_ADDRESS_HOME_STREET:
delivery_address = e_contact_get (contact, E_CONTACT_ADDRESS_HOME);