aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/importers
diff options
context:
space:
mode:
authorSuman Manjunath <msuman@src.gnome.org>2008-10-20 12:21:19 +0800
committerSuman Manjunath <msuman@src.gnome.org>2008-10-20 12:21:19 +0800
commitdff84c06b09b4883e73758a08b3b285185c6f120 (patch)
tree04a9cee86edb569a6dad84e426f49678f1ff9076 /calendar/importers
parent028310948a0a646b85f6d6b0621c531a5512a474 (diff)
downloadgsoc2013-evolution-dff84c06b09b4883e73758a08b3b285185c6f120.tar
gsoc2013-evolution-dff84c06b09b4883e73758a08b3b285185c6f120.tar.gz
gsoc2013-evolution-dff84c06b09b4883e73758a08b3b285185c6f120.tar.bz2
gsoc2013-evolution-dff84c06b09b4883e73758a08b3b285185c6f120.tar.lz
gsoc2013-evolution-dff84c06b09b4883e73758a08b3b285185c6f120.tar.xz
gsoc2013-evolution-dff84c06b09b4883e73758a08b3b285185c6f120.tar.zst
gsoc2013-evolution-dff84c06b09b4883e73758a08b3b285185c6f120.zip
Milan Crha <mcrha@redhat.com> ** Fix for bug #528816 (Disable vCalendar importer when we can parse proper iCalendar from the given file).
svn path=/trunk/; revision=36659
Diffstat (limited to 'calendar/importers')
-rw-r--r--calendar/importers/icalendar-importer.c34
1 files changed, 23 insertions, 11 deletions
diff --git a/calendar/importers/icalendar-importer.c b/calendar/importers/icalendar-importer.c
index da10434890..eb751d07a3 100644
--- a/calendar/importers/icalendar-importer.c
+++ b/calendar/importers/icalendar-importer.c
@@ -474,22 +474,34 @@ vcal_supported(EImport *ei, EImportTarget *target, EImportImporter *im)
if (g_file_get_contents(filename, &contents, NULL, NULL)) {
VObject *vcal;
+ icalcomponent *icalcomp;
- /* parse the file */
- vcal = Parse_MIME (contents, strlen (contents));
- g_free (contents);
+ icalcomp = e_cal_util_parse_ics_string (contents);
- if (vcal) {
- icalcomponent *icalcomp;
+ if (icalcomp && icalcomponent_is_valid (icalcomp)) {
+ /* If we can create proper iCalendar from the file, then
+ rather use ics importer, because it knows to read more
+ information than older version, the vCalendar. */
+ ret = FALSE;
+ g_free (contents);
+ } else {
+ if (icalcomp)
+ icalcomponent_free (icalcomp);
- icalcomp = icalvcal_convert (vcal);
+ /* parse the file */
+ vcal = Parse_MIME (contents, strlen (contents));
+ g_free (contents);
- if (icalcomp) {
- icalcomponent_free (icalcomp);
- ret = TRUE;
- }
+ if (vcal) {
+ icalcomp = icalvcal_convert (vcal);
- cleanVObject (vcal);
+ if (icalcomp) {
+ icalcomponent_free (icalcomp);
+ ret = TRUE;
+ }
+
+ cleanVObject (vcal);
+ }
}
}
g_free (filename);