2013-02-13 [colin] 3.9.0cvs65
authorColin Leroy <colin@colino.net>
Wed, 13 Feb 2013 20:50:31 +0000 (20:50 +0000)
committerColin Leroy <colin@colino.net>
Wed, 13 Feb 2013 20:50:31 +0000 (20:50 +0000)
* src/plugins/address_dup_finder/placeholder.txt
* src/plugins/synce/placeholder.txt
Removed, deprecated plugins
* src/plugins/Makefile.am
* src/plugins/vcalendar/Makefile.am
* src/plugins/vcalendar/Makefile.in
* src/plugins/vcalendar/common-views.c
* src/plugins/vcalendar/common-views.h
* src/plugins/vcalendar/day-view.c
* src/plugins/vcalendar/icaltime_as_local.c
* src/plugins/vcalendar/icaltime_as_local.h
* src/plugins/vcalendar/month-view.c
* src/plugins/vcalendar/placeholder.txt
* src/plugins/vcalendar/plugin.c
* src/plugins/vcalendar/vcal_dbus.c
* src/plugins/vcalendar/vcal_dbus.h
* src/plugins/vcalendar/vcal_folder.c
* src/plugins/vcalendar/vcal_folder.h
* src/plugins/vcalendar/vcal_interface.h
* src/plugins/vcalendar/vcal_manager.c
* src/plugins/vcalendar/vcal_manager.h
* src/plugins/vcalendar/vcal_meeting_gtk.c
* src/plugins/vcalendar/vcal_meeting_gtk.h
* src/plugins/vcalendar/vcal_prefs.c
* src/plugins/vcalendar/vcal_prefs.h
* src/plugins/vcalendar/vcalendar.c
* src/plugins/vcalendar/vcalendar.h
* src/plugins/vcalendar/version.rc
* src/plugins/vcalendar/libical/.cvsignore
* src/plugins/vcalendar/libical/Makefile.am
* src/plugins/vcalendar/libical/Makefile.in
* src/plugins/vcalendar/libical/design-data/.cvsignore
* src/plugins/vcalendar/libical/design-data/Makefile.am
* src/plugins/vcalendar/libical/design-data/Makefile.in
* src/plugins/vcalendar/libical/design-data/parameters.csv
* src/plugins/vcalendar/libical/design-data/properties.csv
* src/plugins/vcalendar/libical/design-data/restrictions.csv
* src/plugins/vcalendar/libical/design-data/status.txt
* src/plugins/vcalendar/libical/design-data/value-types.csv
* src/plugins/vcalendar/libical/libical/.cvsignore
* src/plugins/vcalendar/libical/libical/Makefile.am
* src/plugins/vcalendar/libical/libical/Makefile.in
* src/plugins/vcalendar/libical/libical/icalattendee.c
* src/plugins/vcalendar/libical/libical/icalattendee.h
* src/plugins/vcalendar/libical/libical/icalcomponent.c
* src/plugins/vcalendar/libical/libical/icalcomponent.h
* src/plugins/vcalendar/libical/libical/icalderivedparameter.c.in
* src/plugins/vcalendar/libical/libical/icalderivedparameter.h.in
* src/plugins/vcalendar/libical/libical/icalderivedproperty.c.in
* src/plugins/vcalendar/libical/libical/icalderivedproperty.h.in
* src/plugins/vcalendar/libical/libical/icalderivedvalue.c.in
* src/plugins/vcalendar/libical/libical/icalderivedvalue.h.in
* src/plugins/vcalendar/libical/libical/icalduration.c
* src/plugins/vcalendar/libical/libical/icalduration.h
* src/plugins/vcalendar/libical/libical/icalenums.c
* src/plugins/vcalendar/libical/libical/icalenums.h
* src/plugins/vcalendar/libical/libical/icalerror.c
* src/plugins/vcalendar/libical/libical/icalerror.h
* src/plugins/vcalendar/libical/libical/icallangbind.c
* src/plugins/vcalendar/libical/libical/icallangbind.h
* src/plugins/vcalendar/libical/libical/icallexer.l
* src/plugins/vcalendar/libical/libical/icalmemory.c
* src/plugins/vcalendar/libical/libical/icalmemory.h
* src/plugins/vcalendar/libical/libical/icalmime.c
* src/plugins/vcalendar/libical/libical/icalmime.h
* src/plugins/vcalendar/libical/libical/icalparameter.c
* src/plugins/vcalendar/libical/libical/icalparameter.h
* src/plugins/vcalendar/libical/libical/icalparameterimpl.h
* src/plugins/vcalendar/libical/libical/icalparser.c
* src/plugins/vcalendar/libical/libical/icalparser.h
* src/plugins/vcalendar/libical/libical/icalperiod.c
* src/plugins/vcalendar/libical/libical/icalperiod.h
* src/plugins/vcalendar/libical/libical/icalproperty.c
* src/plugins/vcalendar/libical/libical/icalproperty.h
* src/plugins/vcalendar/libical/libical/icalrecur.c
* src/plugins/vcalendar/libical/libical/icalrecur.h
* src/plugins/vcalendar/libical/libical/icalrestriction.c.in
* src/plugins/vcalendar/libical/libical/icalrestriction.h
* src/plugins/vcalendar/libical/libical/icaltime.c
* src/plugins/vcalendar/libical/libical/icaltime.h
* src/plugins/vcalendar/libical/libical/icaltypes.c
* src/plugins/vcalendar/libical/libical/icaltypes.h
* src/plugins/vcalendar/libical/libical/icalvalue.c
* src/plugins/vcalendar/libical/libical/icalvalue.h
* src/plugins/vcalendar/libical/libical/icalvalueimpl.h
* src/plugins/vcalendar/libical/libical/icalversion.h
* src/plugins/vcalendar/libical/libical/icalversion.h.in
* src/plugins/vcalendar/libical/libical/icalyacc.output
* src/plugins/vcalendar/libical/libical/icalyacc.y
* src/plugins/vcalendar/libical/libical/pvl.c
* src/plugins/vcalendar/libical/libical/pvl.h
* src/plugins/vcalendar/libical/libical/sspm.c
* src/plugins/vcalendar/libical/libical/sspm.h
* src/plugins/vcalendar/libical/libical/vsnprintf.c
* src/plugins/vcalendar/libical/scripts/.cvsignore
* src/plugins/vcalendar/libical/scripts/Makefile.am
* src/plugins/vcalendar/libical/scripts/Makefile.in
* src/plugins/vcalendar/libical/scripts/mkderivedcomponents.pl
* src/plugins/vcalendar/libical/scripts/mkderivedparameters.pl
* src/plugins/vcalendar/libical/scripts/mkderivedproperties.pl
* src/plugins/vcalendar/libical/scripts/mkderivedvalues.pl
* src/plugins/vcalendar/libical/scripts/mkparameterrestrictions.pl
* src/plugins/vcalendar/libical/scripts/mkrestrictionrecords.pl
* src/plugins/vcalendar/libical/scripts/mkrestrictiontable.pl
* src/plugins/vcalendar/libical/scripts/readvaluesfile.pl
Add vcalendar.

107 files changed:
ChangeLog
PATCHSETS
configure.ac
src/plugins/Makefile.am
src/plugins/address_dup_finder/placeholder.txt [deleted file]
src/plugins/synce/placeholder.txt [deleted file]
src/plugins/vcalendar/Makefile.am [new file with mode: 0644]
src/plugins/vcalendar/Makefile.in [new file with mode: 0644]
src/plugins/vcalendar/common-views.c [new file with mode: 0644]
src/plugins/vcalendar/common-views.h [new file with mode: 0644]
src/plugins/vcalendar/day-view.c [new file with mode: 0644]
src/plugins/vcalendar/icaltime_as_local.c [new file with mode: 0644]
src/plugins/vcalendar/icaltime_as_local.h [new file with mode: 0644]
src/plugins/vcalendar/libical/.cvsignore [new file with mode: 0644]
src/plugins/vcalendar/libical/Makefile.am [new file with mode: 0644]
src/plugins/vcalendar/libical/Makefile.in [new file with mode: 0644]
src/plugins/vcalendar/libical/design-data/.cvsignore [new file with mode: 0644]
src/plugins/vcalendar/libical/design-data/Makefile.am [new file with mode: 0644]
src/plugins/vcalendar/libical/design-data/Makefile.in [new file with mode: 0644]
src/plugins/vcalendar/libical/design-data/parameters.csv [new file with mode: 0644]
src/plugins/vcalendar/libical/design-data/properties.csv [new file with mode: 0644]
src/plugins/vcalendar/libical/design-data/restrictions.csv [new file with mode: 0644]
src/plugins/vcalendar/libical/design-data/status.txt [new file with mode: 0644]
src/plugins/vcalendar/libical/design-data/value-types.csv [new file with mode: 0644]
src/plugins/vcalendar/libical/libical/.cvsignore [new file with mode: 0644]
src/plugins/vcalendar/libical/libical/Makefile.am [new file with mode: 0644]
src/plugins/vcalendar/libical/libical/Makefile.in [new file with mode: 0644]
src/plugins/vcalendar/libical/libical/icalattendee.c [new file with mode: 0644]
src/plugins/vcalendar/libical/libical/icalattendee.h [new file with mode: 0644]
src/plugins/vcalendar/libical/libical/icalcomponent.c [new file with mode: 0644]
src/plugins/vcalendar/libical/libical/icalcomponent.h [new file with mode: 0644]
src/plugins/vcalendar/libical/libical/icalderivedparameter.c.in [new file with mode: 0644]
src/plugins/vcalendar/libical/libical/icalderivedparameter.h.in [new file with mode: 0644]
src/plugins/vcalendar/libical/libical/icalderivedproperty.c.in [new file with mode: 0644]
src/plugins/vcalendar/libical/libical/icalderivedproperty.h.in [new file with mode: 0644]
src/plugins/vcalendar/libical/libical/icalderivedvalue.c.in [new file with mode: 0644]
src/plugins/vcalendar/libical/libical/icalderivedvalue.h.in [new file with mode: 0644]
src/plugins/vcalendar/libical/libical/icalduration.c [new file with mode: 0644]
src/plugins/vcalendar/libical/libical/icalduration.h [new file with mode: 0644]
src/plugins/vcalendar/libical/libical/icalenums.c [new file with mode: 0644]
src/plugins/vcalendar/libical/libical/icalenums.h [new file with mode: 0644]
src/plugins/vcalendar/libical/libical/icalerror.c [new file with mode: 0644]
src/plugins/vcalendar/libical/libical/icalerror.h [new file with mode: 0644]
src/plugins/vcalendar/libical/libical/icallangbind.c [new file with mode: 0644]
src/plugins/vcalendar/libical/libical/icallangbind.h [new file with mode: 0644]
src/plugins/vcalendar/libical/libical/icallexer.l [new file with mode: 0644]
src/plugins/vcalendar/libical/libical/icalmemory.c [new file with mode: 0644]
src/plugins/vcalendar/libical/libical/icalmemory.h [new file with mode: 0644]
src/plugins/vcalendar/libical/libical/icalmime.c [new file with mode: 0644]
src/plugins/vcalendar/libical/libical/icalmime.h [new file with mode: 0644]
src/plugins/vcalendar/libical/libical/icalparameter.c [new file with mode: 0644]
src/plugins/vcalendar/libical/libical/icalparameter.h [new file with mode: 0644]
src/plugins/vcalendar/libical/libical/icalparameterimpl.h [new file with mode: 0644]
src/plugins/vcalendar/libical/libical/icalparser.c [new file with mode: 0644]
src/plugins/vcalendar/libical/libical/icalparser.h [new file with mode: 0644]
src/plugins/vcalendar/libical/libical/icalperiod.c [new file with mode: 0644]
src/plugins/vcalendar/libical/libical/icalperiod.h [new file with mode: 0644]
src/plugins/vcalendar/libical/libical/icalproperty.c [new file with mode: 0644]
src/plugins/vcalendar/libical/libical/icalproperty.h [new file with mode: 0644]
src/plugins/vcalendar/libical/libical/icalrecur.c [new file with mode: 0644]
src/plugins/vcalendar/libical/libical/icalrecur.h [new file with mode: 0644]
src/plugins/vcalendar/libical/libical/icalrestriction.c.in [new file with mode: 0644]
src/plugins/vcalendar/libical/libical/icalrestriction.h [new file with mode: 0644]
src/plugins/vcalendar/libical/libical/icaltime.c [new file with mode: 0644]
src/plugins/vcalendar/libical/libical/icaltime.h [new file with mode: 0644]
src/plugins/vcalendar/libical/libical/icaltypes.c [new file with mode: 0644]
src/plugins/vcalendar/libical/libical/icaltypes.h [new file with mode: 0644]
src/plugins/vcalendar/libical/libical/icalvalue.c [new file with mode: 0644]
src/plugins/vcalendar/libical/libical/icalvalue.h [new file with mode: 0644]
src/plugins/vcalendar/libical/libical/icalvalueimpl.h [new file with mode: 0644]
src/plugins/vcalendar/libical/libical/icalversion.h [new file with mode: 0644]
src/plugins/vcalendar/libical/libical/icalversion.h.in [new file with mode: 0644]
src/plugins/vcalendar/libical/libical/icalyacc.output [new file with mode: 0644]
src/plugins/vcalendar/libical/libical/icalyacc.y [new file with mode: 0644]
src/plugins/vcalendar/libical/libical/pvl.c [new file with mode: 0644]
src/plugins/vcalendar/libical/libical/pvl.h [new file with mode: 0644]
src/plugins/vcalendar/libical/libical/sspm.c [new file with mode: 0644]
src/plugins/vcalendar/libical/libical/sspm.h [new file with mode: 0644]
src/plugins/vcalendar/libical/libical/vsnprintf.c [new file with mode: 0644]
src/plugins/vcalendar/libical/scripts/.cvsignore [new file with mode: 0644]
src/plugins/vcalendar/libical/scripts/Makefile.am [new file with mode: 0644]
src/plugins/vcalendar/libical/scripts/Makefile.in [new file with mode: 0644]
src/plugins/vcalendar/libical/scripts/mkderivedcomponents.pl [new file with mode: 0644]
src/plugins/vcalendar/libical/scripts/mkderivedparameters.pl [new file with mode: 0644]
src/plugins/vcalendar/libical/scripts/mkderivedproperties.pl [new file with mode: 0644]
src/plugins/vcalendar/libical/scripts/mkderivedvalues.pl [new file with mode: 0644]
src/plugins/vcalendar/libical/scripts/mkparameterrestrictions.pl [new file with mode: 0644]
src/plugins/vcalendar/libical/scripts/mkrestrictionrecords.pl [new file with mode: 0644]
src/plugins/vcalendar/libical/scripts/mkrestrictiontable.pl [new file with mode: 0644]
src/plugins/vcalendar/libical/scripts/readvaluesfile.pl [new file with mode: 0644]
src/plugins/vcalendar/month-view.c [new file with mode: 0644]
src/plugins/vcalendar/placeholder.txt [deleted file]
src/plugins/vcalendar/plugin.c [new file with mode: 0644]
src/plugins/vcalendar/vcal_dbus.c [new file with mode: 0644]
src/plugins/vcalendar/vcal_dbus.h [new file with mode: 0644]
src/plugins/vcalendar/vcal_folder.c [new file with mode: 0644]
src/plugins/vcalendar/vcal_folder.h [new file with mode: 0644]
src/plugins/vcalendar/vcal_interface.h [new file with mode: 0644]
src/plugins/vcalendar/vcal_manager.c [new file with mode: 0644]
src/plugins/vcalendar/vcal_manager.h [new file with mode: 0644]
src/plugins/vcalendar/vcal_meeting_gtk.c [new file with mode: 0644]
src/plugins/vcalendar/vcal_meeting_gtk.h [new file with mode: 0644]
src/plugins/vcalendar/vcal_prefs.c [new file with mode: 0644]
src/plugins/vcalendar/vcal_prefs.h [new file with mode: 0644]
src/plugins/vcalendar/vcalendar.c [new file with mode: 0644]
src/plugins/vcalendar/vcalendar.h [new file with mode: 0644]
src/plugins/vcalendar/version.rc [new file with mode: 0644]

index bfc1984..d92eea0 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,112 @@
+2013-02-13 [colin]     3.9.0cvs65
+
+       * src/plugins/address_dup_finder/placeholder.txt
+       * src/plugins/synce/placeholder.txt
+               Removed, deprecated plugins
+       * src/plugins/Makefile.am
+       * src/plugins/vcalendar/Makefile.am
+       * src/plugins/vcalendar/Makefile.in
+       * src/plugins/vcalendar/common-views.c
+       * src/plugins/vcalendar/common-views.h
+       * src/plugins/vcalendar/day-view.c
+       * src/plugins/vcalendar/icaltime_as_local.c
+       * src/plugins/vcalendar/icaltime_as_local.h
+       * src/plugins/vcalendar/month-view.c
+       * src/plugins/vcalendar/placeholder.txt
+       * src/plugins/vcalendar/plugin.c
+       * src/plugins/vcalendar/vcal_dbus.c
+       * src/plugins/vcalendar/vcal_dbus.h
+       * src/plugins/vcalendar/vcal_folder.c
+       * src/plugins/vcalendar/vcal_folder.h
+       * src/plugins/vcalendar/vcal_interface.h
+       * src/plugins/vcalendar/vcal_manager.c
+       * src/plugins/vcalendar/vcal_manager.h
+       * src/plugins/vcalendar/vcal_meeting_gtk.c
+       * src/plugins/vcalendar/vcal_meeting_gtk.h
+       * src/plugins/vcalendar/vcal_prefs.c
+       * src/plugins/vcalendar/vcal_prefs.h
+       * src/plugins/vcalendar/vcalendar.c
+       * src/plugins/vcalendar/vcalendar.h
+       * src/plugins/vcalendar/version.rc
+       * src/plugins/vcalendar/libical/.cvsignore
+       * src/plugins/vcalendar/libical/Makefile.am
+       * src/plugins/vcalendar/libical/Makefile.in
+       * src/plugins/vcalendar/libical/design-data/.cvsignore
+       * src/plugins/vcalendar/libical/design-data/Makefile.am
+       * src/plugins/vcalendar/libical/design-data/Makefile.in
+       * src/plugins/vcalendar/libical/design-data/parameters.csv
+       * src/plugins/vcalendar/libical/design-data/properties.csv
+       * src/plugins/vcalendar/libical/design-data/restrictions.csv
+       * src/plugins/vcalendar/libical/design-data/status.txt
+       * src/plugins/vcalendar/libical/design-data/value-types.csv
+       * src/plugins/vcalendar/libical/libical/.cvsignore
+       * src/plugins/vcalendar/libical/libical/Makefile.am
+       * src/plugins/vcalendar/libical/libical/Makefile.in
+       * src/plugins/vcalendar/libical/libical/icalattendee.c
+       * src/plugins/vcalendar/libical/libical/icalattendee.h
+       * src/plugins/vcalendar/libical/libical/icalcomponent.c
+       * src/plugins/vcalendar/libical/libical/icalcomponent.h
+       * src/plugins/vcalendar/libical/libical/icalderivedparameter.c.in
+       * src/plugins/vcalendar/libical/libical/icalderivedparameter.h.in
+       * src/plugins/vcalendar/libical/libical/icalderivedproperty.c.in
+       * src/plugins/vcalendar/libical/libical/icalderivedproperty.h.in
+       * src/plugins/vcalendar/libical/libical/icalderivedvalue.c.in
+       * src/plugins/vcalendar/libical/libical/icalderivedvalue.h.in
+       * src/plugins/vcalendar/libical/libical/icalduration.c
+       * src/plugins/vcalendar/libical/libical/icalduration.h
+       * src/plugins/vcalendar/libical/libical/icalenums.c
+       * src/plugins/vcalendar/libical/libical/icalenums.h
+       * src/plugins/vcalendar/libical/libical/icalerror.c
+       * src/plugins/vcalendar/libical/libical/icalerror.h
+       * src/plugins/vcalendar/libical/libical/icallangbind.c
+       * src/plugins/vcalendar/libical/libical/icallangbind.h
+       * src/plugins/vcalendar/libical/libical/icallexer.l
+       * src/plugins/vcalendar/libical/libical/icalmemory.c
+       * src/plugins/vcalendar/libical/libical/icalmemory.h
+       * src/plugins/vcalendar/libical/libical/icalmime.c
+       * src/plugins/vcalendar/libical/libical/icalmime.h
+       * src/plugins/vcalendar/libical/libical/icalparameter.c
+       * src/plugins/vcalendar/libical/libical/icalparameter.h
+       * src/plugins/vcalendar/libical/libical/icalparameterimpl.h
+       * src/plugins/vcalendar/libical/libical/icalparser.c
+       * src/plugins/vcalendar/libical/libical/icalparser.h
+       * src/plugins/vcalendar/libical/libical/icalperiod.c
+       * src/plugins/vcalendar/libical/libical/icalperiod.h
+       * src/plugins/vcalendar/libical/libical/icalproperty.c
+       * src/plugins/vcalendar/libical/libical/icalproperty.h
+       * src/plugins/vcalendar/libical/libical/icalrecur.c
+       * src/plugins/vcalendar/libical/libical/icalrecur.h
+       * src/plugins/vcalendar/libical/libical/icalrestriction.c.in
+       * src/plugins/vcalendar/libical/libical/icalrestriction.h
+       * src/plugins/vcalendar/libical/libical/icaltime.c
+       * src/plugins/vcalendar/libical/libical/icaltime.h
+       * src/plugins/vcalendar/libical/libical/icaltypes.c
+       * src/plugins/vcalendar/libical/libical/icaltypes.h
+       * src/plugins/vcalendar/libical/libical/icalvalue.c
+       * src/plugins/vcalendar/libical/libical/icalvalue.h
+       * src/plugins/vcalendar/libical/libical/icalvalueimpl.h
+       * src/plugins/vcalendar/libical/libical/icalversion.h
+       * src/plugins/vcalendar/libical/libical/icalversion.h.in
+       * src/plugins/vcalendar/libical/libical/icalyacc.output
+       * src/plugins/vcalendar/libical/libical/icalyacc.y
+       * src/plugins/vcalendar/libical/libical/pvl.c
+       * src/plugins/vcalendar/libical/libical/pvl.h
+       * src/plugins/vcalendar/libical/libical/sspm.c
+       * src/plugins/vcalendar/libical/libical/sspm.h
+       * src/plugins/vcalendar/libical/libical/vsnprintf.c
+       * src/plugins/vcalendar/libical/scripts/.cvsignore
+       * src/plugins/vcalendar/libical/scripts/Makefile.am
+       * src/plugins/vcalendar/libical/scripts/Makefile.in
+       * src/plugins/vcalendar/libical/scripts/mkderivedcomponents.pl
+       * src/plugins/vcalendar/libical/scripts/mkderivedparameters.pl
+       * src/plugins/vcalendar/libical/scripts/mkderivedproperties.pl
+       * src/plugins/vcalendar/libical/scripts/mkderivedvalues.pl
+       * src/plugins/vcalendar/libical/scripts/mkparameterrestrictions.pl
+       * src/plugins/vcalendar/libical/scripts/mkrestrictionrecords.pl
+       * src/plugins/vcalendar/libical/scripts/mkrestrictiontable.pl
+       * src/plugins/vcalendar/libical/scripts/readvaluesfile.pl
+               Add vcalendar.
+
 2013-02-13 [colin]     3.9.0cvs64
 
        * src/plugins/acpi_notifier/placeholder.txt
index 18f34f3..5def12b 100644 (file)
--- a/PATCHSETS
+++ b/PATCHSETS
 ( cvs diff -u -r 1.654.2.4638 -r 1.654.2.4639 configure.ac;  cvs diff -u -r 1.53.2.39 -r 1.53.2.40 po/POTFILES.in;  cvs diff -u -r 1.8.2.8 -r 1.8.2.9 src/plugins/Makefile.am;  diff -u /dev/null src/plugins/fancy/Makefile.am;  diff -u /dev/null src/plugins/fancy/fancy_prefs.c;  diff -u /dev/null src/plugins/fancy/fancy_prefs.h;  diff -u /dev/null src/plugins/fancy/fancy_viewer.c;  diff -u /dev/null src/plugins/fancy/fancy_viewer.h;  ) > 3.9.0cvs62.patchset
 ( cvs diff -u -r 1.1.2.1 -r 1.1.2.2 src/plugins/fancy/Makefile.am;  ) > 3.9.0cvs63.patchset
 ( diff -u /dev/null src/plugins/acpi_notifier/placeholder.txt;  diff -u /dev/null src/plugins/address_dup_finder/placeholder.txt;  diff -u /dev/null src/plugins/address_keeper/placeholder.txt;  diff -u /dev/null src/plugins/archive/placeholder.txt;  diff -u /dev/null src/plugins/att_remover/placeholder.txt;  diff -u /dev/null src/plugins/attachwarner/placeholder.txt;  diff -u /dev/null src/plugins/bsfilter/placeholder.txt;  diff -u /dev/null src/plugins/clamd/placeholder.txt;  diff -u /dev/null src/plugins/fetchinfo/placeholder.txt;  diff -u /dev/null src/plugins/gdata/placeholder.txt;  diff -u /dev/null src/plugins/geolocation/placeholder.txt;  diff -u /dev/null src/plugins/gtkhtml2_viewer/placeholder.txt;  diff -u /dev/null src/plugins/mailmbox/placeholder.txt;  diff -u /dev/null src/plugins/newmail/placeholder.txt;  diff -u /dev/null src/plugins/notification/placeholder.txt;  diff -u /dev/null src/plugins/pdf_viewer/placeholder.txt;  diff -u /dev/null src/plugins/perl/placeholder.txt;  diff -u /dev/null src/plugins/python/placeholder.txt;  diff -u /dev/null src/plugins/rssyl/placeholder.txt;  diff -u /dev/null src/plugins/spam_report/placeholder.txt;  diff -u /dev/null src/plugins/synce/placeholder.txt;  diff -u /dev/null src/plugins/tnef_parse/placeholder.txt;  diff -u /dev/null src/plugins/vcalendar/placeholder.txt;  ) > 3.9.0cvs64.patchset
+( cvs diff -u -r 1.8.2.9 -r 1.8.2.10 src/plugins/Makefile.am;  cvs diff -u -r -1.1.2.1 -r -1.1.2.2 src/plugins/address_dup_finder/placeholder.txt;  cvs diff -u -r -1.1.2.1 -r -1.1.2.2 src/plugins/synce/placeholder.txt;  diff -u /dev/null src/plugins/vcalendar/Makefile.am;  diff -u /dev/null src/plugins/vcalendar/Makefile.in;  diff -u /dev/null src/plugins/vcalendar/common-views.c;  diff -u /dev/null src/plugins/vcalendar/common-views.h;  diff -u /dev/null src/plugins/vcalendar/day-view.c;  diff -u /dev/null src/plugins/vcalendar/icaltime_as_local.c;  diff -u /dev/null src/plugins/vcalendar/icaltime_as_local.h;  diff -u /dev/null src/plugins/vcalendar/month-view.c;  cvs diff -u -r -1.1.2.1 -r -1.1.2.2 src/plugins/vcalendar/placeholder.txt;  diff -u /dev/null src/plugins/vcalendar/plugin.c;  diff -u /dev/null src/plugins/vcalendar/vcal_dbus.c;  diff -u /dev/null src/plugins/vcalendar/vcal_dbus.h;  diff -u /dev/null src/plugins/vcalendar/vcal_folder.c;  diff -u /dev/null src/plugins/vcalendar/vcal_folder.h;  diff -u /dev/null src/plugins/vcalendar/vcal_interface.h;  diff -u /dev/null src/plugins/vcalendar/vcal_manager.c;  diff -u /dev/null src/plugins/vcalendar/vcal_manager.h;  diff -u /dev/null src/plugins/vcalendar/vcal_meeting_gtk.c;  diff -u /dev/null src/plugins/vcalendar/vcal_meeting_gtk.h;  diff -u /dev/null src/plugins/vcalendar/vcal_prefs.c;  diff -u /dev/null src/plugins/vcalendar/vcal_prefs.h;  diff -u /dev/null src/plugins/vcalendar/vcalendar.c;  diff -u /dev/null src/plugins/vcalendar/vcalendar.h;  diff -u /dev/null src/plugins/vcalendar/version.rc;  diff -u /dev/null src/plugins/vcalendar/libical/.cvsignore;  diff -u /dev/null src/plugins/vcalendar/libical/Makefile.am;  diff -u /dev/null src/plugins/vcalendar/libical/Makefile.in;  diff -u /dev/null src/plugins/vcalendar/libical/design-data/.cvsignore;  diff -u /dev/null src/plugins/vcalendar/libical/design-data/Makefile.am;  diff -u /dev/null src/plugins/vcalendar/libical/design-data/Makefile.in;  diff -u /dev/null src/plugins/vcalendar/libical/design-data/parameters.csv;  diff -u /dev/null src/plugins/vcalendar/libical/design-data/properties.csv;  diff -u /dev/null src/plugins/vcalendar/libical/design-data/restrictions.csv;  diff -u /dev/null src/plugins/vcalendar/libical/design-data/status.txt;  diff -u /dev/null src/plugins/vcalendar/libical/design-data/value-types.csv;  diff -u /dev/null src/plugins/vcalendar/libical/libical/.cvsignore;  diff -u /dev/null src/plugins/vcalendar/libical/libical/Makefile.am;  diff -u /dev/null src/plugins/vcalendar/libical/libical/Makefile.in;  diff -u /dev/null src/plugins/vcalendar/libical/libical/icalattendee.c;  diff -u /dev/null src/plugins/vcalendar/libical/libical/icalattendee.h;  diff -u /dev/null src/plugins/vcalendar/libical/libical/icalcomponent.c;  diff -u /dev/null src/plugins/vcalendar/libical/libical/icalcomponent.h;  diff -u /dev/null src/plugins/vcalendar/libical/libical/icalderivedparameter.c.in;  diff -u /dev/null src/plugins/vcalendar/libical/libical/icalderivedparameter.h.in;  diff -u /dev/null src/plugins/vcalendar/libical/libical/icalderivedproperty.c.in;  diff -u /dev/null src/plugins/vcalendar/libical/libical/icalderivedproperty.h.in;  diff -u /dev/null src/plugins/vcalendar/libical/libical/icalderivedvalue.c.in;  diff -u /dev/null src/plugins/vcalendar/libical/libical/icalderivedvalue.h.in;  diff -u /dev/null src/plugins/vcalendar/libical/libical/icalduration.c;  diff -u /dev/null src/plugins/vcalendar/libical/libical/icalduration.h;  diff -u /dev/null src/plugins/vcalendar/libical/libical/icalenums.c;  diff -u /dev/null src/plugins/vcalendar/libical/libical/icalenums.h;  diff -u /dev/null src/plugins/vcalendar/libical/libical/icalerror.c;  diff -u /dev/null src/plugins/vcalendar/libical/libical/icalerror.h;  diff -u /dev/null src/plugins/vcalendar/libical/libical/icallangbind.c;  diff -u /dev/null src/plugins/vcalendar/libical/libical/icallangbind.h;  diff -u /dev/null src/plugins/vcalendar/libical/libical/icallexer.l;  diff -u /dev/null src/plugins/vcalendar/libical/libical/icalmemory.c;  diff -u /dev/null src/plugins/vcalendar/libical/libical/icalmemory.h;  diff -u /dev/null src/plugins/vcalendar/libical/libical/icalmime.c;  diff -u /dev/null src/plugins/vcalendar/libical/libical/icalmime.h;  diff -u /dev/null src/plugins/vcalendar/libical/libical/icalparameter.c;  diff -u /dev/null src/plugins/vcalendar/libical/libical/icalparameter.h;  diff -u /dev/null src/plugins/vcalendar/libical/libical/icalparameterimpl.h;  diff -u /dev/null src/plugins/vcalendar/libical/libical/icalparser.c;  diff -u /dev/null src/plugins/vcalendar/libical/libical/icalparser.h;  diff -u /dev/null src/plugins/vcalendar/libical/libical/icalperiod.c;  diff -u /dev/null src/plugins/vcalendar/libical/libical/icalperiod.h;  diff -u /dev/null src/plugins/vcalendar/libical/libical/icalproperty.c;  diff -u /dev/null src/plugins/vcalendar/libical/libical/icalproperty.h;  diff -u /dev/null src/plugins/vcalendar/libical/libical/icalrecur.c;  diff -u /dev/null src/plugins/vcalendar/libical/libical/icalrecur.h;  diff -u /dev/null src/plugins/vcalendar/libical/libical/icalrestriction.c.in;  diff -u /dev/null src/plugins/vcalendar/libical/libical/icalrestriction.h;  diff -u /dev/null src/plugins/vcalendar/libical/libical/icaltime.c;  diff -u /dev/null src/plugins/vcalendar/libical/libical/icaltime.h;  diff -u /dev/null src/plugins/vcalendar/libical/libical/icaltypes.c;  diff -u /dev/null src/plugins/vcalendar/libical/libical/icaltypes.h;  diff -u /dev/null src/plugins/vcalendar/libical/libical/icalvalue.c;  diff -u /dev/null src/plugins/vcalendar/libical/libical/icalvalue.h;  diff -u /dev/null src/plugins/vcalendar/libical/libical/icalvalueimpl.h;  diff -u /dev/null src/plugins/vcalendar/libical/libical/icalversion.h;  diff -u /dev/null src/plugins/vcalendar/libical/libical/icalversion.h.in;  diff -u /dev/null src/plugins/vcalendar/libical/libical/icalyacc.output;  diff -u /dev/null src/plugins/vcalendar/libical/libical/icalyacc.y;  diff -u /dev/null src/plugins/vcalendar/libical/libical/pvl.c;  diff -u /dev/null src/plugins/vcalendar/libical/libical/pvl.h;  diff -u /dev/null src/plugins/vcalendar/libical/libical/sspm.c;  diff -u /dev/null src/plugins/vcalendar/libical/libical/sspm.h;  diff -u /dev/null src/plugins/vcalendar/libical/libical/vsnprintf.c;  diff -u /dev/null src/plugins/vcalendar/libical/scripts/.cvsignore;  diff -u /dev/null src/plugins/vcalendar/libical/scripts/Makefile.am;  diff -u /dev/null src/plugins/vcalendar/libical/scripts/Makefile.in;  diff -u /dev/null src/plugins/vcalendar/libical/scripts/mkderivedcomponents.pl;  diff -u /dev/null src/plugins/vcalendar/libical/scripts/mkderivedparameters.pl;  diff -u /dev/null src/plugins/vcalendar/libical/scripts/mkderivedproperties.pl;  diff -u /dev/null src/plugins/vcalendar/libical/scripts/mkderivedvalues.pl;  diff -u /dev/null src/plugins/vcalendar/libical/scripts/mkparameterrestrictions.pl;  diff -u /dev/null src/plugins/vcalendar/libical/scripts/mkrestrictionrecords.pl;  diff -u /dev/null src/plugins/vcalendar/libical/scripts/mkrestrictiontable.pl;  diff -u /dev/null src/plugins/vcalendar/libical/scripts/readvaluesfile.pl;  ) > 3.9.0cvs65.patchset
index 67e6486..79dcf94 100644 (file)
@@ -12,7 +12,7 @@ MINOR_VERSION=9
 MICRO_VERSION=0
 INTERFACE_AGE=0
 BINARY_AGE=0
-EXTRA_VERSION=64
+EXTRA_VERSION=65
 EXTRA_RELEASE=
 EXTRA_GTK2_VERSION=
 
@@ -983,6 +983,11 @@ else
 fi
 AM_CONDITIONAL(BUILD_DILLO_VIEWER_PLUGIN, test x"$ac_cv_enable_dillo_viewer_plugin" = xyes)
 
+dnl Find curl-config, used by fancy, vcalendar
+PKG_CHECK_MODULES(CURL, libcurl)
+AC_SUBST(CURL_LIBS)
+AC_SUBST(CURL_CFLAGS)
+
 
 dnl --- Fancy ---
 AC_MSG_CHECKING([whether to build Fancy plugin])
@@ -1012,11 +1017,6 @@ if test x"$ac_cv_enable_fancy_plugin" = xyes; then
        AC_SUBST(LIBSOUP_GNOME_CFLAGS)
        AC_SUBST(LIBSOUP_GNOME_LIBS)
        
-       dnl Find curl-config
-       PKG_CHECK_MODULES(CURL, libcurl)
-       AC_SUBST(CURL_LIBS)
-       AC_SUBST(CURL_CFLAGS)
-       
        PKG_CHECK_MODULES(GTKPRINTUNIX, gtk+-unix-print-2.0, ac_cv_enable_gtkprint=yes, ac_cv_enable_gtkprint=no)        
        if test x$ac_cv_enable_gtkprint = xyes; then
                AC_DEFINE(USE_PRINTUNIX, 1, Define if you want gtk+-unix-print support)
@@ -1028,6 +1028,17 @@ if test x"$ac_cv_enable_fancy_plugin" = xyes; then
 fi
 AM_CONDITIONAL(BUILD_FANCY_PLUGIN, test x"$ac_cv_enable_fancy_plugin" = xyes)
 
+dnl --- Fancy ---
+AC_MSG_CHECKING([whether to build vCalendar plugin])
+AC_ARG_ENABLE(vcalendar-plugin,
+       [  --disable-vcalendar-plugin     do not build vcalendar plugin for ical rendering],
+       [ac_cv_enable_vcalendar_plugin=$enableval], [ac_cv_enable_vcalendar_plugin=yes])
+if test x"$ac_cv_enable_vcalendar_plugin" = xyes; then
+       AC_MSG_RESULT(yes)
+       PLUGINS="vcalendar $PLUGINS"
+fi
+AM_CONDITIONAL(BUILD_VCALENDAR_PLUGIN, test x"$ac_cv_enable_vcalendar_plugin" = xyes)
+
 dnl --- Demo ---
 AC_ARG_ENABLE(demo-plugin,
        [  --enable-demo-plugin              build demo plugin],
@@ -1125,6 +1136,12 @@ src/plugins/pgpcore/Makefile
 src/plugins/pgpmime/Makefile
 src/plugins/pgpinline/Makefile
 src/plugins/smime/Makefile
+src/plugins/vcalendar/Makefile
+src/plugins/vcalendar/libical/Makefile
+src/plugins/vcalendar/libical/libical/icalversion.h
+src/plugins/vcalendar/libical/libical/Makefile
+src/plugins/vcalendar/libical/design-data/Makefile
+src/plugins/vcalendar/libical/scripts/Makefile
 doc/Makefile
 doc/man/Makefile
 tools/Makefile
index 696176f..56efe51 100644 (file)
@@ -18,6 +18,10 @@ if BUILD_FANCY_PLUGIN
 fancy_dir = fancy
 endif
 
+if BUILD_VCALENDAR_PLUGIN
+vcalendar_dir = vcalendar
+endif
+
 if BUILD_TRAYICON_PLUGIN
 trayicon_dir = trayicon
 endif
@@ -44,4 +48,5 @@ SUBDIRS = $(demo_dir) \
        $(pgpcore_dir) \
        $(pgpmime_dir) \
        $(pgpinline_dir) \
-       $(smime_dir)
+       $(smime_dir) \
+       $(vcalendar_dir)
diff --git a/src/plugins/address_dup_finder/placeholder.txt b/src/plugins/address_dup_finder/placeholder.txt
deleted file mode 100644 (file)
index 3b94f91..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Placeholder
diff --git a/src/plugins/synce/placeholder.txt b/src/plugins/synce/placeholder.txt
deleted file mode 100644 (file)
index 3b94f91..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Placeholder
diff --git a/src/plugins/vcalendar/Makefile.am b/src/plugins/vcalendar/Makefile.am
new file mode 100644 (file)
index 0000000..baca92a
--- /dev/null
@@ -0,0 +1,90 @@
+SUBDIRS = libical
+EXTRA_DIST = claws.def plugin.def version.rc
+
+if OS_WIN32
+
+LTRCCOMPILE = $(LIBTOOL) --mode=compile --tag=RC $(RC) \
+     `echo $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) | \
+     sed -e 's/-I/--include-dir /g;s/-D/--define /g'`
+
+%.lo : %.rc
+       $(LTRCCOMPILE) -i $< -o $@
+
+plugin_res = version.lo
+plugin_res_ldflag = -Wl,.libs/version.o
+
+export_symbols = -export-symbols $(srcdir)/plugin.def
+
+plugin_deps = libclaws.a $(plugin_res) plugin.def
+
+libclaws.a: claws.def
+       $(DLLTOOL) --output-lib $@ --def $<
+
+plugin_ldadd = -L. -lclaws
+
+else
+plugin_res =
+plugin_res_ldflag =
+export_symbols =
+plugin_deps =
+plugin_ldadd =
+endif
+
+if PLATFORM_WIN32
+no_undefined = -no-undefined
+else
+no_undefined =
+endif
+
+if CYGWIN
+cygwin_export_lib = -L$(top_builddir)/src -lclaws-mail
+else
+cygwin_export_lib = 
+endif
+
+plugindir = $(pkglibdir)/plugins
+
+plugin_LTLIBRARIES = vcalendar.la
+
+INCLUDES= \
+       -I$(top_srcdir)/src \
+       -I$(top_srcdir)/src/common \
+       -I$(top_builddir)/src/common \
+       -I$(top_srcdir)/src/gtk \
+       -I$(top_srcdir)/src/plugins/vcalendar/libical/libical
+
+vcalendar_la_SOURCES = \
+       plugin.c \
+       vcalendar.c vcalendar.h \
+       vcal_manager.c vcal_manager.h \
+       vcal_folder.c vcal_folder.h \
+       vcal_meeting_gtk.c vcal_meeting_gtk.h \
+       vcal_prefs.c vcal_prefs.h \
+       vcal_dbus.c vcal_dbus.h \
+       icaltime_as_local.c icaltime_as_local.h \
+       common-views.c common-views.h \
+       day-view.c month-view.c
+
+vcalendarincludedir = $(includedir)/claws-mail/plugins/vcalendar
+vcalendarinclude_HEADERS = \
+       vcal_interface.h
+vcalendar_la_LDFLAGS = \
+       $(plugin_res_ldflag) $(no_undefined) $(export_symbols) \
+       -avoid-version -module \
+       $(GTK_LIBS)
+
+vcalendar_la_DEPENDENCIES = $(plugin_deps)
+
+vcalendar_la_LIBADD = $(plugin_ldadd) $(cygwin_export_lib) \
+       $(GTK_LIBS) \
+        $(top_builddir)/src/plugins/vcalendar/libical/libical/libical.la
+
+AM_CPPFLAGS = \
+       $(CLAWS_MAIL_CFLAGS) \
+       $(GLIB_CFLAGS) \
+       $(GTK_CFLAGS) \
+       -DLOCALEDIR=\""$(localedir)"\"
+
+clean-local:
+       rm -f libclaws.a
diff --git a/src/plugins/vcalendar/Makefile.in b/src/plugins/vcalendar/Makefile.in
new file mode 100644 (file)
index 0000000..e009ae1
--- /dev/null
@@ -0,0 +1,913 @@
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+
+VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \  ]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = src/plugins/vcalendar
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+       $(vcalendarinclude_HEADERS)
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/check-type.m4 \
+       $(top_srcdir)/m4/gnupg-check-typedef.m4 \
+       $(top_srcdir)/m4/gnupg.m4 $(top_srcdir)/m4/gpgme.m4 \
+       $(top_srcdir)/m4/isc-posix.m4 $(top_srcdir)/m4/libtool.m4 \
+       $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+       $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+       $(top_srcdir)/m4/spamassassin.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h \
+       $(top_builddir)/claws-features.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(plugindir)" \
+       "$(DESTDIR)$(vcalendarincludedir)"
+LTLIBRARIES = $(plugin_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+am_vcalendar_la_OBJECTS = plugin.lo vcalendar.lo vcal_manager.lo \
+       vcal_folder.lo vcal_meeting_gtk.lo vcal_prefs.lo vcal_dbus.lo \
+       icaltime_as_local.lo common-views.lo day-view.lo month-view.lo
+vcalendar_la_OBJECTS = $(am_vcalendar_la_OBJECTS)
+vcalendar_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+       $(vcalendar_la_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+       $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+       --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+       $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+       --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+       $(LDFLAGS) -o $@
+SOURCES = $(vcalendar_la_SOURCES)
+DIST_SOURCES = $(vcalendar_la_SOURCES)
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+       html-recursive info-recursive install-data-recursive \
+       install-dvi-recursive install-exec-recursive \
+       install-html-recursive install-info-recursive \
+       install-pdf-recursive install-ps-recursive install-recursive \
+       installcheck-recursive installdirs-recursive pdf-recursive \
+       ps-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+HEADERS = $(vcalendarinclude_HEADERS)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive        \
+  distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+       $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+       distdir
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+COMPFACE_LIBS = @COMPFACE_LIBS@
+CONIC_CFLAGS = @CONIC_CFLAGS@
+CONIC_LIBS = @CONIC_LIBS@
+CONTACTS_CFLAGS = @CONTACTS_CFLAGS@
+CONTACTS_LIBS = @CONTACTS_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
+CURL_CFLAGS = @CURL_CFLAGS@
+CURL_LIBS = @CURL_LIBS@
+CYGPATH_W = @CYGPATH_W@
+DBUS_CFLAGS = @DBUS_CFLAGS@
+DBUS_LIBS = @DBUS_LIBS@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DOCBOOK2HTML = @DOCBOOK2HTML@
+DOCBOOK2PDF = @DOCBOOK2PDF@
+DOCBOOK2PS = @DOCBOOK2PS@
+DOCBOOK2TXT = @DOCBOOK2TXT@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ENCHANT_CFLAGS = @ENCHANT_CFLAGS@
+ENCHANT_LIBS = @ENCHANT_LIBS@
+EXEEXT = @EXEEXT@
+EXTRA_VERSION = @EXTRA_VERSION@
+FGREP = @FGREP@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
+GLIB_LIBS = @GLIB_LIBS@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNOME2_CFLAGS = @GNOME2_CFLAGS@
+GNOME2_LIBS = @GNOME2_LIBS@
+GNOME_CONFIG = @GNOME_CONFIG@
+GNUTLS_CFLAGS = @GNUTLS_CFLAGS@
+GNUTLS_LIBS = @GNUTLS_LIBS@
+GPGME_CFLAGS = @GPGME_CFLAGS@
+GPGME_CONFIG = @GPGME_CONFIG@
+GPGME_LIBS = @GPGME_LIBS@
+GREP = @GREP@
+GTKPRINTUNIX_CFLAGS = @GTKPRINTUNIX_CFLAGS@
+GTKPRINTUNIX_LIBS = @GTKPRINTUNIX_LIBS@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LIBS = @GTK_LIBS@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+JPILOT_LIBS = @JPILOT_LIBS@
+LD = @LD@
+LDAP_LIBS = @LDAP_LIBS@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBETPAN_FLAGS = @LIBETPAN_FLAGS@
+LIBETPAN_LIBS = @LIBETPAN_LIBS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBRESOLV = @LIBRESOLV@
+LIBS = @LIBS@
+LIBSOUP_GNOME_CFLAGS = @LIBSOUP_GNOME_CFLAGS@
+LIBSOUP_GNOME_LIBS = @LIBSOUP_GNOME_LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAEMO_CFLAGS = @MAEMO_CFLAGS@
+MAEMO_LIBS = @MAEMO_LIBS@
+MAINT = @MAINT@
+MAJOR_VERSION = @MAJOR_VERSION@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MICRO_VERSION = @MICRO_VERSION@
+MINOR_VERSION = @MINOR_VERSION@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NETWORKMANAGER_SUPPORT_CFLAGS = @NETWORKMANAGER_SUPPORT_CFLAGS@
+NETWORKMANAGER_SUPPORT_LIBS = @NETWORKMANAGER_SUPPORT_LIBS@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PASSCRYPT_KEY = @PASSCRYPT_KEY@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POSUB = @POSUB@
+PTHREAD_LIBS = @PTHREAD_LIBS@
+RANLIB = @RANLIB@
+RC = @RC@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SM_LIBS = @SM_LIBS@
+STARTUP_NOTIFICATION_CFLAGS = @STARTUP_NOTIFICATION_CFLAGS@
+STARTUP_NOTIFICATION_LIBS = @STARTUP_NOTIFICATION_LIBS@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
+VALGRIND_LIBS = @VALGRIND_LIBS@
+VERSION = @VERSION@
+WEBKIT_CFLAGS = @WEBKIT_CFLAGS@
+WEBKIT_LIBS = @WEBKIT_LIBS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_cv_enable_crash_dialog = @ac_cv_enable_crash_dialog@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gnomedatadir = @gnomedatadir@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libetpanconfig = @libetpanconfig@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+manualdir = @manualdir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+SUBDIRS = libical
+EXTRA_DIST = claws.def plugin.def version.rc
+@OS_WIN32_TRUE@LTRCCOMPILE = $(LIBTOOL) --mode=compile --tag=RC $(RC) \
+@OS_WIN32_TRUE@     `echo $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) | \
+@OS_WIN32_TRUE@     sed -e 's/-I/--include-dir /g;s/-D/--define /g'`
+
+@OS_WIN32_FALSE@plugin_res = 
+@OS_WIN32_TRUE@plugin_res = version.lo
+@OS_WIN32_FALSE@plugin_res_ldflag = 
+@OS_WIN32_TRUE@plugin_res_ldflag = -Wl,.libs/version.o
+@OS_WIN32_FALSE@export_symbols = 
+@OS_WIN32_TRUE@export_symbols = -export-symbols $(srcdir)/plugin.def
+@OS_WIN32_FALSE@plugin_deps = 
+@OS_WIN32_TRUE@plugin_deps = libclaws.a $(plugin_res) plugin.def
+@OS_WIN32_FALSE@plugin_ldadd = 
+@OS_WIN32_TRUE@plugin_ldadd = -L. -lclaws
+@PLATFORM_WIN32_FALSE@no_undefined = 
+@PLATFORM_WIN32_TRUE@no_undefined = -no-undefined
+@CYGWIN_FALSE@cygwin_export_lib = 
+@CYGWIN_TRUE@cygwin_export_lib = -L$(top_builddir)/src -lclaws-mail
+plugindir = $(pkglibdir)/plugins
+plugin_LTLIBRARIES = vcalendar.la
+INCLUDES = \
+       -I$(top_srcdir)/src \
+       -I$(top_srcdir)/src/common \
+       -I$(top_builddir)/src/common \
+       -I$(top_srcdir)/src/gtk \
+       -I$(top_srcdir)/src/plugins/vcalendar/libical/libical
+
+vcalendar_la_SOURCES = \
+       plugin.c \
+       vcalendar.c vcalendar.h \
+       vcal_manager.c vcal_manager.h \
+       vcal_folder.c vcal_folder.h \
+       vcal_meeting_gtk.c vcal_meeting_gtk.h \
+       vcal_prefs.c vcal_prefs.h \
+       vcal_dbus.c vcal_dbus.h \
+       icaltime_as_local.c icaltime_as_local.h \
+       common-views.c common-views.h \
+       day-view.c month-view.c
+
+vcalendarincludedir = $(includedir)/claws-mail/plugins/vcalendar
+vcalendarinclude_HEADERS = \
+       vcal_interface.h
+
+vcalendar_la_LDFLAGS = \
+       $(plugin_res_ldflag) $(no_undefined) $(export_symbols) \
+       -avoid-version -module \
+       $(GTK_LIBS)
+
+vcalendar_la_DEPENDENCIES = $(plugin_deps)
+vcalendar_la_LIBADD = $(plugin_ldadd) $(cygwin_export_lib) \
+       $(GTK_LIBS) \
+        $(top_builddir)/src/plugins/vcalendar/libical/libical/libical.la
+
+AM_CPPFLAGS = \
+       $(CLAWS_MAIL_CFLAGS) \
+       $(GLIB_CFLAGS) \
+       $(GTK_CFLAGS) \
+       -DLOCALEDIR=\""$(localedir)"\"
+
+all: all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/plugins/vcalendar/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --foreign src/plugins/vcalendar/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
+       @$(NORMAL_INSTALL)
+       @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
+       list2=; for p in $$list; do \
+         if test -f $$p; then \
+           list2="$$list2 $$p"; \
+         else :; fi; \
+       done; \
+       test -z "$$list2" || { \
+         echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
+         echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
+         $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
+       }
+
+uninstall-pluginLTLIBRARIES:
+       @$(NORMAL_UNINSTALL)
+       @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
+       for p in $$list; do \
+         $(am__strip_dir) \
+         echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(plugindir)/$$f'"; \
+         $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(plugindir)/$$f"; \
+       done
+
+clean-pluginLTLIBRARIES:
+       -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES)
+       @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \
+         dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+         test "$$dir" != "$$p" || dir=.; \
+         echo "rm -f \"$${dir}/so_locations\""; \
+         rm -f "$${dir}/so_locations"; \
+       done
+vcalendar.la: $(vcalendar_la_OBJECTS) $(vcalendar_la_DEPENDENCIES) $(EXTRA_vcalendar_la_DEPENDENCIES) 
+       $(vcalendar_la_LINK) -rpath $(plugindir) $(vcalendar_la_OBJECTS) $(vcalendar_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/common-views.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/day-view.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icaltime_as_local.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/month-view.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plugin.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vcal_dbus.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vcal_folder.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vcal_manager.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vcal_meeting_gtk.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vcal_prefs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vcalendar.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@   $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+install-vcalendarincludeHEADERS: $(vcalendarinclude_HEADERS)
+       @$(NORMAL_INSTALL)
+       @list='$(vcalendarinclude_HEADERS)'; test -n "$(vcalendarincludedir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(vcalendarincludedir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(vcalendarincludedir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(vcalendarincludedir)'"; \
+         $(INSTALL_HEADER) $$files "$(DESTDIR)$(vcalendarincludedir)" || exit $$?; \
+       done
+
+uninstall-vcalendarincludeHEADERS:
+       @$(NORMAL_UNINSTALL)
+       @list='$(vcalendarinclude_HEADERS)'; test -n "$(vcalendarincludedir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(vcalendarincludedir)'; $(am__uninstall_files_from_dir)
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+       @fail= failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
+       dot_seen=no; \
+       target=`echo $@ | sed s/-recursive//`; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           dot_seen=yes; \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done; \
+       if test "$$dot_seen" = "no"; then \
+         $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+       fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+       @fail= failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
+       dot_seen=no; \
+       case "$@" in \
+         distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+         *) list='$(SUBDIRS)' ;; \
+       esac; \
+       rev=''; for subdir in $$list; do \
+         if test "$$subdir" = "."; then :; else \
+           rev="$$subdir $$rev"; \
+         fi; \
+       done; \
+       rev="$$rev ."; \
+       target=`echo $@ | sed s/-recursive//`; \
+       for subdir in $$rev; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done && test -z "$$fail"
+tags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+       done
+ctags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+       done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       set x; \
+       here=`pwd`; \
+       if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+         include_option=--etags-include; \
+         empty_fix=.; \
+       else \
+         include_option=--include; \
+         empty_fix=; \
+       fi; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test ! -f $$subdir/TAGS || \
+             set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+         fi; \
+       done; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
+       fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+       @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           $(am__make_dryrun) \
+             || test -d "$(distdir)/$$subdir" \
+             || $(MKDIR_P) "$(distdir)/$$subdir" \
+             || exit 1; \
+           dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+           $(am__relativize); \
+           new_distdir=$$reldir; \
+           dir1=$$subdir; dir2="$(top_distdir)"; \
+           $(am__relativize); \
+           new_top_distdir=$$reldir; \
+           echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+           echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+           ($(am__cd) $$subdir && \
+             $(MAKE) $(AM_MAKEFLAGS) \
+               top_distdir="$$new_top_distdir" \
+               distdir="$$new_distdir" \
+               am__remove_distdir=: \
+               am__skip_length_check=: \
+               am__skip_mode_fix=: \
+               distdir) \
+             || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(LTLIBRARIES) $(HEADERS)
+installdirs: installdirs-recursive
+installdirs-am:
+       for dir in "$(DESTDIR)$(plugindir)" "$(DESTDIR)$(vcalendarincludedir)"; do \
+         test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+       done
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool clean-local \
+       clean-pluginLTLIBRARIES mostlyclean-am
+
+distclean: distclean-recursive
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+       distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-pluginLTLIBRARIES \
+       install-vcalendarincludeHEADERS
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+       mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-pluginLTLIBRARIES \
+       uninstall-vcalendarincludeHEADERS
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+       install-am install-strip tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+       all all-am check check-am clean clean-generic clean-libtool \
+       clean-local clean-pluginLTLIBRARIES ctags ctags-recursive \
+       distclean distclean-compile distclean-generic \
+       distclean-libtool distclean-tags distdir dvi dvi-am html \
+       html-am info info-am install install-am install-data \
+       install-data-am install-dvi install-dvi-am install-exec \
+       install-exec-am install-html install-html-am install-info \
+       install-info-am install-man install-pdf install-pdf-am \
+       install-pluginLTLIBRARIES install-ps install-ps-am \
+       install-strip install-vcalendarincludeHEADERS installcheck \
+       installcheck-am installdirs installdirs-am maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-compile \
+       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+       tags tags-recursive uninstall uninstall-am \
+       uninstall-pluginLTLIBRARIES uninstall-vcalendarincludeHEADERS
+
+
+@OS_WIN32_TRUE@%.lo : %.rc
+@OS_WIN32_TRUE@        $(LTRCCOMPILE) -i $< -o $@
+
+@OS_WIN32_TRUE@libclaws.a: claws.def
+@OS_WIN32_TRUE@        $(DLLTOOL) --output-lib $@ --def $<
+
+clean-local:
+       rm -f libclaws.a
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/plugins/vcalendar/common-views.c b/src/plugins/vcalendar/common-views.c
new file mode 100644 (file)
index 0000000..e627c29
--- /dev/null
@@ -0,0 +1,292 @@
+/*
+ * Claws Mail -- a GTK+ based, lightweight, and fast e-mail client
+ *
+ * Copyright (c) 2007-2008 Juha Kautto (juha at xfce.org)
+ * Copyright (c) 2008 Colin Leroy (colin@colino.net)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#  include "config.h"
+#include "claws-features.h"
+#endif
+
+#include <stddef.h>
+#include <glib.h>
+#include <glib/gi18n.h>
+#include "defs.h"
+
+#include <string.h>
+#include <time.h>
+
+#include <glib.h>
+#include <glib/gprintf.h>
+#include <gdk/gdkkeysyms.h>
+#include <gdk/gdk.h>
+#include <gtk/gtk.h>
+
+#include "summaryview.h"
+#include "vcalendar.h"
+#include "vcal_folder.h"
+#include "vcal_prefs.h"
+#include "vcal_manager.h"
+#include "vcal_meeting_gtk.h"
+#include "menu.h"
+
+
+static void view_new_meeting_cb                        (GtkAction      *action,
+                                                gpointer        user_data);
+static void view_edit_meeting_cb               (GtkAction      *action,
+                                                gpointer        user_data);
+static void view_cancel_meeting_cb             (GtkAction      *action,
+                                                gpointer        user_data);
+static void view_go_today_cb                   (GtkAction      *action,
+                                                gpointer        user_data);
+
+static GtkActionEntry view_event_popup_entries[] = 
+{
+       {"VcalViewEvent",               NULL, "VcalViewEvent" },
+       {"VcalViewEvent/EditMeeting",   NULL, N_("_Edit this meeting..."), NULL, NULL, G_CALLBACK(view_edit_meeting_cb) },
+       {"VcalViewEvent/CancelMeeting", NULL, N_("_Cancel this meeting..."), NULL, NULL, G_CALLBACK(view_cancel_meeting_cb) },
+       {"VcalViewEvent/---",           NULL, "---", NULL, NULL, NULL },
+       {"VcalViewEvent/CreateMeeting", NULL, N_("_Create new meeting..."), NULL, NULL, G_CALLBACK(view_new_meeting_cb) },
+
+       {"VcalViewEvent/GoToday",               NULL, N_("_Go to today"), NULL, NULL, G_CALLBACK(view_go_today_cb) },
+};
+
+GtkWidget *build_line(gint start_x, gint start_y
+        , gint width, gint height, GtkWidget *hour_line, GdkColor *line_color)
+{
+    GdkColormap *pic1_cmap;
+    GdkVisual *pic1_vis;
+    GdkPixmap *pic1;
+    GdkGC *pic1_gc;
+    GtkWidget *new_hour_line;
+    gint depth = 16;
+    gboolean first = FALSE;
+
+    /*
+     * GdkPixbuf *scaled;
+    scaled = gdk_pixbuf_scale_simple (pix, w, h, GDK_INTERP_BILINEAR);
+    */
+     
+    pic1_cmap = gdk_colormap_get_system();
+    pic1_vis = gdk_colormap_get_visual(pic1_cmap);
+    depth = pic1_vis->depth;
+    if (hour_line == NULL) {
+        pic1 = gdk_pixmap_new(NULL, width, height, depth);
+        gdk_drawable_set_colormap(pic1, pic1_cmap);
+        first = TRUE;
+    }
+    else
+        gtk_image_get_pixmap(GTK_IMAGE(hour_line), &pic1, NULL);
+    pic1_gc = gdk_gc_new(pic1);
+    if (first) {
+        gdk_gc_set_foreground(pic1_gc, line_color);
+        gdk_draw_rectangle(pic1, pic1_gc, TRUE, start_x, start_y, width, height);
+    }
+    else {
+        gdk_draw_rectangle(pic1, pic1_gc, TRUE, start_x, start_y, width, height);
+    }
+    
+    new_hour_line = gtk_image_new_from_pixmap(pic1, NULL);
+    g_object_unref(pic1_gc);
+    g_object_unref(pic1);
+    return(new_hour_line);
+}
+
+/* move one day forward or backward */
+void orage_move_day(struct tm *t, int day)
+{
+    guint monthdays[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
+
+    t->tm_year += 1900;
+    if (((t->tm_year%4) == 0) 
+    && (((t->tm_year%100) != 0) || ((t->tm_year%400) == 0)))
+        ++monthdays[1]; /* leap year, february has 29 days */
+
+    t->tm_mday += day; /* may be negative */
+    if (t->tm_mday == 0) { /*  we went to previous month */
+        if (--t->tm_mon == -1) { /* previous year */
+            --t->tm_year;
+            t->tm_mon = 11;
+        }
+        t->tm_mday = monthdays[t->tm_mon];
+    }
+    else if (t->tm_mday > (monthdays[t->tm_mon])) { /* next month */
+        if (++t->tm_mon == 12) {
+            ++t->tm_year;
+            t->tm_mon = 0;
+        }
+        t->tm_mday = 1;
+    }
+    t->tm_year -= 1900;
+    t->tm_wday += day; 
+    if (t->tm_wday < 0)
+        t->tm_wday = 6;
+    t->tm_wday %=7;
+}
+
+gint orage_days_between(struct tm *t1, struct tm *t2)
+{
+    GDate *g_t1, *g_t2;
+    gint dd;
+    g_t1 = g_date_new_dmy(t1->tm_mday, t1->tm_mon, t1->tm_year);
+    g_t2 = g_date_new_dmy(t2->tm_mday, t2->tm_mon, t2->tm_year);
+    dd = g_date_days_between(g_t1, g_t2);
+    g_date_free(g_t1);
+    g_date_free(g_t2);
+    return(dd);
+}
+
+gint vcal_view_set_calendar_page(GtkWidget *to_show, GCallback cb, gpointer data)
+{
+    SummaryView *summaryview = NULL;
+    gint selsig = -1;
+    if (mainwindow_get_mainwindow()) {
+       summaryview = mainwindow_get_mainwindow()->summaryview;
+       gtk_container_add(GTK_CONTAINER(summaryview->mainwidget_book),
+               to_show);
+       gtk_notebook_set_current_page(GTK_NOTEBOOK(summaryview->mainwidget_book),
+               gtk_notebook_page_num(GTK_NOTEBOOK(summaryview->mainwidget_book), 
+               to_show));
+       main_window_set_menu_sensitive(mainwindow_get_mainwindow());
+       toolbar_main_set_sensitive(mainwindow_get_mainwindow());
+       selsig = g_signal_connect(G_OBJECT(summaryview->ctree), "tree_select_row",
+                        G_CALLBACK(cb), data);
+    }
+    return selsig;
+}
+
+void vcal_view_set_summary_page(GtkWidget *to_remove, guint selsig)
+{
+    SummaryView *summaryview = NULL;
+    if (mainwindow_get_mainwindow()) {
+       summaryview = mainwindow_get_mainwindow()->summaryview;
+        if (selsig)
+               g_signal_handler_disconnect(G_OBJECT(summaryview->ctree), selsig);
+       gtk_container_remove(GTK_CONTAINER(summaryview->mainwidget_book),
+               to_remove);
+       gtk_notebook_set_current_page(GTK_NOTEBOOK(summaryview->mainwidget_book),
+               gtk_notebook_page_num(GTK_NOTEBOOK(summaryview->mainwidget_book), 
+               summaryview->scrolledwin));
+       main_window_set_menu_sensitive(mainwindow_get_mainwindow());
+       toolbar_main_set_sensitive(mainwindow_get_mainwindow());
+    }
+       
+}
+
+void vcal_view_select_event (const gchar *uid, FolderItem *item, gboolean edit,
+                           GCallback block_cb, gpointer block_data)
+{
+       if (edit) {
+               VCalEvent *event = NULL;
+               event = vcal_manager_load_event(uid);
+               if (event) {
+                       vcal_meeting_create(event);
+                       vcal_manager_free_event(event);
+               }
+       } else {
+               SummaryView *summaryview = NULL;
+               if (mainwindow_get_mainwindow()) {
+                  MsgInfo *info = folder_item_get_msginfo_by_msgid(item, uid);
+                  if (info) {
+                          summaryview = mainwindow_get_mainwindow()->summaryview;
+                          g_signal_handlers_block_by_func(G_OBJECT(summaryview->ctree),
+                                              G_CALLBACK(block_cb), block_data);
+                          summary_select_by_msgnum(summaryview, info->msgnum);
+                          summary_display_msg_selected(summaryview, FALSE);
+                          procmsg_msginfo_free(info);
+                          g_signal_handlers_unblock_by_func(G_OBJECT(summaryview->ctree),
+                                              G_CALLBACK(block_cb), block_data);
+                  }
+               }
+       }
+}
+
+void vcal_view_create_popup_menus(gpointer data, 
+                               GtkWidget **view_menu,
+                               GtkWidget **event_menu, GtkActionGroup **event_group,
+                               GtkUIManager **ui_manager)
+{
+       *ui_manager = gtk_ui_manager_new();
+       *event_group = cm_menu_create_action_group_full(*ui_manager,"VcalViewEvent", view_event_popup_entries,
+                       G_N_ELEMENTS(view_event_popup_entries), (gpointer)data);
+
+       MENUITEM_ADDUI_MANAGER(*ui_manager, "/", "Menus", "Menus", GTK_UI_MANAGER_MENUBAR)
+       MENUITEM_ADDUI_MANAGER(*ui_manager, "/Menus", "VcalView", "VcalViewEvent", GTK_UI_MANAGER_MENU)
+       MENUITEM_ADDUI_MANAGER(*ui_manager, "/Menus/VcalView", "CreateMeeting", "VcalViewEvent/CreateMeeting", GTK_UI_MANAGER_MENUITEM)
+       MENUITEM_ADDUI_MANAGER(*ui_manager, "/Menus/VcalView", "Separator1", "VcalViewEvent/---", GTK_UI_MANAGER_SEPARATOR)
+       MENUITEM_ADDUI_MANAGER(*ui_manager, "/Menus/VcalView", "GoToday", "VcalViewEvent/GoToday", GTK_UI_MANAGER_MENUITEM)
+
+       MENUITEM_ADDUI_MANAGER(*ui_manager, "/Menus", "VcalViewEvent", "VcalViewEvent", GTK_UI_MANAGER_MENU)
+       MENUITEM_ADDUI_MANAGER(*ui_manager, "/Menus/VcalViewEvent", "EditMeeting", "VcalViewEvent/EditMeeting", GTK_UI_MANAGER_MENUITEM)
+       MENUITEM_ADDUI_MANAGER(*ui_manager, "/Menus/VcalViewEvent", "CancelMeeting", "VcalViewEvent/CancelMeeting", GTK_UI_MANAGER_MENUITEM)
+       MENUITEM_ADDUI_MANAGER(*ui_manager, "/Menus/VcalViewEvent", "Separator1", "VcalViewEvent/---", GTK_UI_MANAGER_SEPARATOR)
+       MENUITEM_ADDUI_MANAGER(*ui_manager, "/Menus/VcalViewEvent", "CreateMeeting", "VcalViewEvent/CreateMeeting", GTK_UI_MANAGER_MENUITEM)
+       MENUITEM_ADDUI_MANAGER(*ui_manager, "/Menus/VcalViewEvent", "Separator2", "VcalViewEvent/---", GTK_UI_MANAGER_SEPARATOR)
+       MENUITEM_ADDUI_MANAGER(*ui_manager, "/Menus/VcalViewEvent", "GoToday", "VcalViewEvent/GoToday", GTK_UI_MANAGER_MENUITEM)
+
+       *view_menu = gtk_menu_item_get_submenu(GTK_MENU_ITEM(
+                               gtk_ui_manager_get_widget(*ui_manager, "/Menus/VcalView")) );
+       *event_menu= gtk_menu_item_get_submenu(GTK_MENU_ITEM(
+                               gtk_ui_manager_get_widget(*ui_manager, "/Menus/VcalViewEvent")) );
+}
+
+static void view_new_meeting_cb                        (GtkAction      *action,
+                                                gpointer        user_data)
+{
+       gpointer data_i = g_object_get_data(G_OBJECT(user_data), "menu_data_i");
+       gpointer data_s = g_object_get_data(G_OBJECT(user_data), "menu_data_s");
+       gpointer win = g_object_get_data(G_OBJECT(user_data), "menu_win");
+       void (*cb)(gpointer win, gpointer data_i, gpointer data_s) = 
+               g_object_get_data(G_OBJECT(user_data), "new_meeting_cb");
+       if (cb)
+               cb(win, data_i, data_s);
+}
+static void view_edit_meeting_cb               (GtkAction      *action,
+                                                gpointer        user_data)
+{
+       gpointer data_i = g_object_get_data(G_OBJECT(user_data), "menu_data_i");
+       gpointer data_s = g_object_get_data(G_OBJECT(user_data), "menu_data_s");
+       gpointer win = g_object_get_data(G_OBJECT(user_data), "menu_win");
+       void (*cb)(gpointer win, gpointer data_i, gpointer data_s) = 
+               g_object_get_data(G_OBJECT(user_data), "edit_meeting_cb");
+       if (cb)
+               cb(win, data_i, data_s);
+}
+static void view_cancel_meeting_cb             (GtkAction      *action,
+                                                gpointer        user_data)
+{
+       gpointer data_i = g_object_get_data(G_OBJECT(user_data), "menu_data_i");
+       gpointer data_s = g_object_get_data(G_OBJECT(user_data), "menu_data_s");
+       gpointer win = g_object_get_data(G_OBJECT(user_data), "menu_win");
+       void (*cb)(gpointer win, gpointer data_i, gpointer data_s) = 
+               g_object_get_data(G_OBJECT(user_data), "cancel_meeting_cb");
+       if (cb)
+               cb(win, data_i, data_s);
+}
+static void view_go_today_cb                   (GtkAction      *action,
+                                                gpointer        user_data)
+{
+       gpointer data_i = g_object_get_data(G_OBJECT(user_data), "menu_data_i");
+       gpointer data_s = g_object_get_data(G_OBJECT(user_data), "menu_data_s");
+       gpointer win = g_object_get_data(G_OBJECT(user_data), "menu_win");
+       void (*cb)(gpointer win, gpointer data_i, gpointer data_s) = 
+               g_object_get_data(G_OBJECT(user_data), "go_today_cb");
+       if (cb)
+               cb(win, data_i, data_s);
+}
diff --git a/src/plugins/vcalendar/common-views.h b/src/plugins/vcalendar/common-views.h
new file mode 100644 (file)
index 0000000..6042b3d
--- /dev/null
@@ -0,0 +1,51 @@
+/* Copyright (c) 2007-2008 Juha Kautto (juha at xfce.org)
+ * Copyright (c) 2008 Colin Leroy (colin@colino.net)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __COMMON_VIEWS_H__
+#define __COMMON_VIEWS_H__
+
+#include <string.h>
+#include <time.h>
+
+#include <glib.h>
+#include <glib/gprintf.h>
+#include <gdk/gdkkeysyms.h>
+#include <gdk/gdk.h>
+#include <gtk/gtk.h>
+
+#include "summaryview.h"
+#include "vcalendar.h"
+#include "vcal_folder.h"
+#include "vcal_prefs.h"
+#include "vcal_manager.h"
+#include "vcal_meeting_gtk.h"
+
+GtkWidget *build_line(gint start_x, gint start_y
+        , gint width, gint height, GtkWidget *hour_line, GdkColor *line_color);
+void orage_move_day(struct tm *t, int day);
+gint orage_days_between(struct tm *t1, struct tm *t2);
+gint vcal_view_set_calendar_page(GtkWidget *to_show, GCallback cb, gpointer data);
+void vcal_view_set_summary_page(GtkWidget *to_remove, guint selsig);
+void vcal_view_select_event (const gchar *uid, FolderItem *item, gboolean edit,
+                           GCallback block_cb, gpointer block_data);
+void vcal_view_create_popup_menus(gpointer data, 
+                               GtkWidget **view_menu,
+                               GtkWidget **event_menu, GtkActionGroup **event_group,
+                               GtkUIManager **ui_manager);
+
+#endif
diff --git a/src/plugins/vcalendar/day-view.c b/src/plugins/vcalendar/day-view.c
new file mode 100644 (file)
index 0000000..d8bd717
--- /dev/null
@@ -0,0 +1,931 @@
+/*
+ * Claws Mail -- a GTK+ based, lightweight, and fast e-mail client
+ *
+ * Copyright (c) 2007-2008 Juha Kautto (juha at xfce.org)
+ * Copyright (c) 2008 Colin Leroy (colin@colino.net)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#  include "config.h"
+#include "claws-features.h"
+#endif
+
+#include <stddef.h>
+#include <glib.h>
+#include <glib/gi18n.h>
+#include "defs.h"
+
+#ifdef USE_PTHREAD
+#include <pthread.h>
+#endif
+#include <string.h>
+#include <time.h>
+
+#include <glib.h>
+#include <glib/gprintf.h>
+#include <gdk/gdkkeysyms.h>
+#include <gdk/gdk.h>
+#include <gtk/gtk.h>
+
+#include "summaryview.h"
+#include "vcalendar.h"
+#include "vcal_folder.h"
+#include "vcal_prefs.h"
+#include "vcal_manager.h"
+#include "common-views.h"
+#include "vcal_meeting_gtk.h"
+
+#define MAX_DAYS 40
+struct _day_win
+{
+    GtkAccelGroup *accel_group;
+#if !GTK_CHECK_VERSION(2,12,0)
+    GtkTooltips   *Tooltips;
+#endif
+    GtkWidget *Window;
+    GtkWidget *Vbox;
+
+    GtkWidget *Menubar;
+    GtkWidget *File_menu;
+    GtkWidget *File_menu_new;
+    GtkWidget *File_menu_close;
+    GtkWidget *View_menu;
+    GtkWidget *View_menu_refresh;
+    GtkWidget *Go_menu;
+    GtkWidget *Go_menu_today;
+    GtkWidget *Go_menu_prev;
+    GtkWidget *Go_menu_next;
+
+    GtkWidget *Toolbar;
+    GtkWidget *Create_toolbutton;
+    GtkWidget *Previous_toolbutton;
+    GtkWidget *Today_toolbutton;
+    GtkWidget *Next_toolbutton;
+    GtkWidget *Refresh_toolbutton;
+    GtkWidget *Close_toolbutton;
+
+    GtkWidget *StartDate_button;
+    GtkRequisition StartDate_button_req;
+    GtkWidget *day_spin;
+
+    GtkWidget *day_view_vbox;
+    GtkWidget *scroll_win_h;
+    GtkWidget *dtable_h; /* header of day table */
+    GtkWidget *scroll_win;
+    GtkWidget *dtable;   /* day table */
+    GtkRequisition hour_req;
+
+    GtkWidget *header[MAX_DAYS];
+    GtkWidget *element[24][MAX_DAYS];
+    GtkWidget *line[24][MAX_DAYS];
+
+    guint upd_timer;
+    gdouble scroll_pos; /* remember the scroll position */
+
+    GdkColor bg1, bg2, line_color, bg_today, fg_sunday;
+    GList    *apptw_list; /* keep track of appointments being updated */
+    struct tm startdate;
+    FolderItem *item;
+    gulong selsig;
+    GtkWidget *view_menu;
+    GtkWidget *event_menu;
+    GtkActionGroup *event_group;
+    GtkUIManager *ui_manager;
+};
+
+static gchar *get_locale_date(struct tm *tmdate)
+{
+       gchar *d = g_malloc(100);
+       strftime(d, 99, "%x", tmdate);
+       return d;
+}
+
+static void set_scroll_position(day_win *dw)
+{
+    GtkAdjustment *v_adj;
+
+    v_adj = gtk_scrolled_window_get_vadjustment(
+            GTK_SCROLLED_WINDOW(dw->scroll_win));
+    if (dw->scroll_pos > 0) /* we have old value */
+        gtk_adjustment_set_value(v_adj, dw->scroll_pos);
+    else if (dw->scroll_pos < 0)
+        /* default: let's try to start roughly from line 8 = 8 o'clock */
+        gtk_adjustment_set_value(v_adj, v_adj->upper/3);
+    gtk_adjustment_changed(v_adj);
+}
+
+static gboolean scroll_position_timer(gpointer user_data)
+{
+    set_scroll_position((day_win *)user_data);
+    return(FALSE); /* only once */
+}
+
+static void get_scroll_position(day_win *dw)
+{
+    GtkAdjustment *v_adj;
+
+    v_adj = gtk_scrolled_window_get_vadjustment(
+            GTK_SCROLLED_WINDOW(dw->scroll_win));
+    dw->scroll_pos = gtk_adjustment_get_value(v_adj);
+}
+
+void dw_close_window(day_win *dw)
+{
+    vcal_view_set_summary_page(dw->Vbox, dw->selsig);
+
+#if !(GTK_CHECK_VERSION(2,12,0))
+    gtk_object_destroy(G_OBJECT(dw->Tooltips));
+#endif
+    g_free(dw);
+    dw = NULL;
+}
+
+static char *orage_tm_date_to_i18_date(struct tm *tm_date)
+{
+    static char i18_date[32];
+
+    if (strftime(i18_date, 32, "%x", tm_date) == 0)
+        g_error("Orage: orage_tm_date_to_i18_date too long string in strftime");
+    return(i18_date);
+}
+
+static void changeSelectedDate(day_win *dw, gint day)
+{
+    if (day > 0) {
+     do {
+      orage_move_day(&(dw->startdate), 1);
+     } while (--day > 0);
+    } else {
+     do {
+      orage_move_day(&(dw->startdate), -1);
+     } while (++day < 0);
+    }
+}
+
+static gint on_Previous_clicked(GtkWidget *button, GdkEventButton *event,
+                                   day_win *dw)
+{
+    int days = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(dw->day_spin));
+    changeSelectedDate(dw, -days);
+    refresh_day_win(dw);
+    return TRUE;
+}
+
+static gint on_Next_clicked(GtkWidget *button, GdkEventButton *event,
+                                   day_win *dw)
+{
+    int days = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(dw->day_spin));
+    changeSelectedDate(dw, +days);
+    refresh_day_win(dw);
+    return TRUE;
+}
+
+static void dw_summary_selected(GtkCMCTree *ctree, GtkCMCTreeNode *row,
+                            gint column, day_win *dw)
+{
+       MsgInfo *msginfo = gtk_cmctree_node_get_row_data(ctree, row);
+       int days = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(dw->day_spin));
+       
+       if (msginfo && msginfo->msgid) {
+               VCalEvent *event = vcal_manager_load_event(msginfo->msgid);
+               if (event) {
+                       time_t t_first = mktime(&dw->startdate);
+                       time_t t_start = icaltime_as_timet(icaltime_from_string(event->dtstart));
+                       struct tm tm_start;
+                       gboolean changed = FALSE;
+                       GtkAdjustment *v_adj;
+
+#ifdef G_OS_WIN32
+                       if (t_start < 0)
+                               t_start = 1;
+#endif
+                       localtime_r(&t_start, &tm_start);
+                       tm_start.tm_hour = tm_start.tm_min = tm_start.tm_sec = 0;
+                       t_start = mktime(&tm_start);
+
+                       while (t_start < t_first) {
+                               changeSelectedDate(dw, -days);
+                               t_first = mktime(&dw->startdate);
+                               changed = TRUE;
+                       }
+                       while (t_start > t_first + (days-1)*24*60*60) {
+                               changeSelectedDate(dw, +days);
+                               t_first = mktime(&dw->startdate);
+                               changed = TRUE;
+                       }
+                       
+                       t_start = icaltime_as_timet(icaltime_from_string(event->dtstart));
+#ifdef G_OS_WIN32
+                       if (t_start < 0)
+                               t_start = 1;
+#endif
+                       localtime_r(&t_start, &tm_start);
+                       if (changed) {
+                               debug_print("changed from %s\n", event->summary);
+                               v_adj = gtk_scrolled_window_get_vadjustment(
+                                   GTK_SCROLLED_WINDOW(dw->scroll_win)); 
+#ifdef G_OS_WIN32
+                               if (t_start < 0)
+                                       t_start = 1;
+#endif
+                               localtime_r(&t_start, &tm_start);
+                               if (tm_start.tm_hour > 2)
+                                       gtk_adjustment_set_value(v_adj, 
+                                               (v_adj->upper-v_adj->page_size)/(24/(tm_start.tm_hour-2)));
+                               else
+                                       gtk_adjustment_set_value(v_adj, 0);
+                               gtk_adjustment_changed(v_adj);
+                               refresh_day_win(dw);
+                       }
+               }
+               vcal_manager_free_event(event);
+       }
+}
+
+static void day_view_new_meeting_cb(day_win *dw, gpointer data_i, gpointer data_s)
+{
+    int offset = GPOINTER_TO_INT(data_i);
+    struct tm tm_date = dw->startdate;
+    int offset_h = offset % 1000;
+    int offset_d = (offset-offset_h) / 1000;
+    guint monthdays[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};    
+    int mon = tm_date.tm_mon;
+    
+    if (((tm_date.tm_year%4) == 0) && (((tm_date.tm_year%100) != 0) 
+            || ((tm_date.tm_year%400) == 0)))
+        monthdays[1] = 29;
+
+    if (offset_d > monthdays[mon]) {
+       while (tm_date.tm_mday > 1)
+               orage_move_day(&tm_date, 1);
+       offset_d -= monthdays[mon];
+    }
+
+    while (offset_d > tm_date.tm_mday) {
+           orage_move_day(&tm_date, 1);
+    }
+    while (offset_d < tm_date.tm_mday) {
+           orage_move_day(&tm_date, -1);
+    }
+    tm_date.tm_hour = offset_h;
+    vcal_meeting_create_with_start(NULL, &tm_date);
+}
+
+static void day_view_edit_meeting_cb(day_win *dw, gpointer data_i, gpointer data_s)
+{
+       const gchar *uid = (gchar *)data_s;
+        vcal_view_select_event (uid, dw->item, TRUE,
+                           G_CALLBACK(dw_summary_selected), dw);
+}
+
+static void day_view_cancel_meeting_cb(day_win *dw, gpointer data_i, gpointer data_s)
+{
+       const gchar *uid = (gchar *)data_s;
+       vcalendar_cancel_meeting(dw->item, uid);
+}
+
+static void day_view_today_cb(day_win *dw, gpointer data_i, gpointer data_s)
+{
+    time_t now = time(NULL);
+    struct tm tm_today;
+    localtime_r(&now, &tm_today);
+
+    while (tm_today.tm_wday != 1)
+       orage_move_day(&tm_today, -1);
+    
+    dw->startdate = tm_today;
+    refresh_day_win(dw);
+}
+
+static void header_button_clicked_cb(GtkWidget *button, day_win *dw)
+{
+    int offset = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(button), "offset"));
+
+    day_view_new_meeting_cb(dw, GINT_TO_POINTER(offset), NULL);
+}
+
+static void on_button_press_event_cb(GtkWidget *widget
+        , GdkEventButton *event, gpointer *user_data)
+{
+    day_win *dw = (day_win *)user_data;
+    gchar *uid = g_object_get_data(G_OBJECT(widget), "UID");
+    gpointer offset = g_object_get_data(G_OBJECT(widget), "offset");
+    if (event->button == 1) {
+       if (uid)
+            vcal_view_select_event (uid, dw->item, (event->type==GDK_2BUTTON_PRESS),
+                           G_CALLBACK(dw_summary_selected), dw);
+    }
+    if (event->button == 3) {
+           g_object_set_data(G_OBJECT(dw->Vbox), "menu_win",
+                     dw);
+           g_object_set_data(G_OBJECT(dw->Vbox), "menu_data_i",
+                     offset);
+           g_object_set_data(G_OBJECT(dw->Vbox), "menu_data_s",
+                     uid);
+           g_object_set_data(G_OBJECT(dw->Vbox), "new_meeting_cb",
+                     day_view_new_meeting_cb);
+           g_object_set_data(G_OBJECT(dw->Vbox), "edit_meeting_cb",
+                     day_view_edit_meeting_cb);
+           g_object_set_data(G_OBJECT(dw->Vbox), "cancel_meeting_cb",
+                     day_view_cancel_meeting_cb);
+           g_object_set_data(G_OBJECT(dw->Vbox), "go_today_cb",
+                     day_view_today_cb);
+           if (uid)
+                   gtk_menu_popup(GTK_MENU(dw->event_menu), 
+                          NULL, NULL, NULL, NULL, 
+                          event->button, event->time);    
+           else
+                   gtk_menu_popup(GTK_MENU(dw->view_menu), 
+                          NULL, NULL, NULL, NULL, 
+                          event->button, event->time);    
+    }
+}
+
+static void add_row(day_win *dw, VCalEvent *event, gint days)
+{
+    gint row, start_row, end_row;
+    gint col, start_col, end_col, first_col, last_col;
+    gint height, start_height, end_height;
+    gchar *text, *tip, *start_date, *end_date;
+    GtkWidget *ev, *lab, *hb;
+    time_t t_start, t_end;
+    struct tm tm_first, tm_start, tm_end;
+#if !(GTK_CHECK_VERSION(2,12,0))
+       GtkTooltips *tips = dw->Tooltips;
+#endif
+
+    /* First clarify timings */
+    t_start = icaltime_as_timet(icaltime_from_string(event->dtstart));
+    if (event->dtend && *event->dtend)
+        t_end = icaltime_as_timet(icaltime_from_string(event->dtend));
+    else 
+       t_end = t_start;
+
+#ifdef G_OS_WIN32
+       if (t_start < 0)
+               t_start = 1;
+       if (t_end < 0)
+               t_end = 1;
+#endif
+    localtime_r(&t_start, &tm_start);
+    localtime_r(&t_end, &tm_end);
+    tm_first = dw->startdate;
+   
+    tm_first.tm_year += 1900;
+    tm_first.tm_mon += 1;
+    tm_start.tm_year += 1900;
+    tm_start.tm_mon += 1;
+    tm_end.tm_year += 1900;
+    tm_end.tm_mon += 1;
+
+    start_col = orage_days_between(&tm_first, &tm_start)+1;
+    end_col   = orage_days_between(&tm_first, &tm_end)+1;
+
+    if (end_col < 1)
+       return;
+    if (start_col > days)
+        return;
+
+    else {
+        col = start_col;
+        row = tm_start.tm_hour;
+    }
+
+    /* then add the appointment */
+    text = g_strdup(event->summary?event->summary : _("Unknown"));
+    ev = gtk_event_box_new();
+    lab = gtk_label_new(text);
+    gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.5);
+    gtk_label_set_ellipsize(GTK_LABEL(lab), PANGO_ELLIPSIZE_END);
+    gtk_container_add(GTK_CONTAINER(ev), lab);
+
+    if ((row % 2) == 1)
+        gtk_widget_modify_bg(ev, GTK_STATE_NORMAL, &dw->bg1);
+    else
+        gtk_widget_modify_bg(ev, GTK_STATE_NORMAL, &dw->bg2);
+    if (dw->element[row][col] == NULL) {
+        hb = gtk_hbox_new(TRUE, 3);
+        dw->element[row][col] = hb;
+    }
+    else {
+        hb = dw->element[row][col];
+        /* FIXME: set some real bar here to make it visible that we
+         * have more than 1 appointment here
+         */
+    }
+    if (orage_days_between(&tm_start, &tm_end) == 0)
+        tip = g_strdup_printf("%s\n%02d:%02d-%02d:%02d\n%s"
+                , text, tm_start.tm_hour, tm_start.tm_min
+                , tm_end.tm_hour, tm_end.tm_min, event->description);
+    else {
+/* we took the date in unnormalized format, so we need to do that now */
+        start_date = g_strdup(orage_tm_date_to_i18_date(&tm_start));
+        end_date = g_strdup(orage_tm_date_to_i18_date(&tm_end));
+        tip = g_strdup_printf("%s\n%s %02d:%02d - %s %02d:%02d\n%s"
+                , text
+                , start_date, tm_start.tm_hour, tm_start.tm_min
+                , end_date, tm_end.tm_hour, tm_end.tm_min
+                , event->description);
+        g_free(start_date);
+        g_free(end_date);
+    }
+    CLAWS_SET_TIP(ev, tip);
+    /*
+    gtk_box_pack_start(GTK_BOX(hb2), ev, FALSE, FALSE, 0);
+    gtk_box_pack_start(GTK_BOX(hb), hb2, TRUE, TRUE, 0);
+    */
+    gtk_box_pack_start(GTK_BOX(hb), ev, TRUE, TRUE, 0);
+    g_object_set_data_full(G_OBJECT(ev), "UID", g_strdup(event->uid), g_free);
+    g_object_set_data(G_OBJECT(ev), "offset", GINT_TO_POINTER(tm_start.tm_mday*1000 + tm_start.tm_hour));
+    g_signal_connect((gpointer)ev, "button-press-event"
+            , G_CALLBACK(on_button_press_event_cb), dw);
+    g_free(tip);
+    g_free(text);
+
+    /* and finally draw the line to show how long the appointment is,
+     * but only if it is Busy type event (=availability != 0) 
+     * and it is not whole day event */
+    if (TRUE) {
+        height = dw->StartDate_button_req.height;
+        /*
+         * same_date = !strncmp(start_ical_time, end_ical_time, 8);
+         * */
+        if (start_col < 1)
+            first_col = 1;
+        else
+            first_col = start_col;
+        if (end_col > days)
+            last_col = days;
+        else
+            last_col = end_col;
+        for (col = first_col; col <= last_col; col++) {
+            if (col == start_col)
+                start_row = tm_start.tm_hour;
+            else
+                start_row = 0;
+            if (col == end_col)
+                end_row   = tm_end.tm_hour;
+            else
+                end_row   = 23;
+            for (row = start_row; row <= end_row; row++) {
+                if (row == tm_start.tm_hour && col == start_col)
+                    start_height = tm_start.tm_min*height/60;
+                else
+                    start_height = 0;
+                if (row == tm_end.tm_hour && col == end_col)
+                    end_height = tm_end.tm_min*height/60;
+                else
+                    end_height = height;
+                dw->line[row][col] = build_line(1, start_height
+                        , 2, end_height-start_height, dw->line[row][col]
+                       , &dw->line_color);
+            }
+        }
+    }
+}
+
+static void app_rows(day_win *dw, FolderItem *item)
+{
+   GSList *events = vcal_get_events_list(item);
+   GSList *cur = NULL;
+   int days = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(dw->day_spin));
+   for (cur = events; cur ; cur = cur->next) {
+       VCalEvent *event = (VCalEvent *) (cur->data);
+       add_row(dw, event, days);
+       vcal_manager_free_event(event);
+   }
+   g_slist_free(events);
+}
+
+static void app_data(day_win *dw, FolderItem *item)
+{
+    app_rows(dw, item);
+}
+
+
+static void fill_days(day_win *dw, gint days, FolderItem *item, gint first_col_day)
+{
+    gint row, col, height, width;
+    GtkWidget *ev, *hb;
+
+    height = dw->StartDate_button_req.height;
+    width = dw->StartDate_button_req.width;
+
+    /* first clear the structure */
+    for (col = 1; col <  days+1; col++) {
+        dw->header[col] = NULL;
+        for (row = 0; row < 24; row++) {
+            dw->element[row][col] = NULL;
+    /* gdk_draw_rectangle(, , , left_x, top_y, width, height); */
+            dw->line[row][col] = build_line(0, 0, 3, height, NULL
+                       , &dw->line_color);
+        }
+    }
+
+    app_data(dw, item);
+
+    for (col = 1; col < days+1; col++) {
+        hb = gtk_hbox_new(FALSE, 0);
+        /* check if we have full day events and put them to header */
+        if (dw->header[col]) {
+            gtk_box_pack_start(GTK_BOX(hb), dw->header[col], TRUE, TRUE, 0);
+            gtk_widget_set_size_request(hb, width, -1);
+        }
+        else {
+            ev = gtk_event_box_new();
+            gtk_widget_modify_bg(ev, GTK_STATE_NORMAL, &dw->bg2);
+            gtk_box_pack_start(GTK_BOX(hb), ev, TRUE, TRUE, 0);
+        }
+        gtk_table_attach(GTK_TABLE(dw->dtable_h), hb, col, col+1, 1, 2
+                 , (GTK_FILL), (0), 0, 0);
+
+        /* check rows */
+        for (row = 0; row < 24; row++) {
+            hb = gtk_hbox_new(FALSE, 0);
+            if (row == 0)
+                gtk_widget_set_size_request(hb, width, -1);
+            if (dw->element[row][col]) {
+                gtk_box_pack_start(GTK_BOX(hb), dw->line[row][col]
+                        , FALSE, FALSE, 0);
+                gtk_box_pack_start(GTK_BOX(hb), dw->element[row][col]
+                        , TRUE, TRUE, 0);
+                gtk_widget_set_size_request(hb, width, -1);
+            }
+            else {
+                ev = gtk_event_box_new();
+               g_object_set_data(G_OBJECT(ev), "offset", GINT_TO_POINTER(first_col_day*1000 + row));
+               g_signal_connect((gpointer)ev, "button-press-event"
+                       , G_CALLBACK(on_button_press_event_cb), dw);
+                /*
+                name = gtk_label_new(" ");
+                gtk_container_add(GTK_CONTAINER(ev), name);
+                */
+                if ((row % 2) == 1)
+                    gtk_widget_modify_bg(ev, GTK_STATE_NORMAL, &dw->bg1);
+                else
+                    gtk_widget_modify_bg(ev, GTK_STATE_NORMAL, &dw->bg2);
+                gtk_box_pack_start(GTK_BOX(hb), dw->line[row][col]
+                        , FALSE, FALSE, 0);
+                gtk_box_pack_start(GTK_BOX(hb), ev, TRUE, TRUE, 0);
+            }
+            gtk_table_attach(GTK_TABLE(dw->dtable), hb, col, col+1, row, row+1
+                     , (GTK_FILL), (0), 0, 0);
+        }
+       first_col_day++;
+    }
+}
+
+static void build_day_view_header(day_win *dw, char *start_date)
+{
+    GtkWidget *hbox, *label, *space_label;
+    SummaryView *summaryview = NULL;
+    int avail_w = 0, avail_d = 0;
+
+    hbox = gtk_hbox_new(FALSE, 0);
+
+    label = gtk_label_new(_("Start"));
+    gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 10);
+
+    /* start date button */
+    dw->StartDate_button = gtk_button_new();
+    gtk_box_pack_start(GTK_BOX(hbox), dw->StartDate_button, FALSE, FALSE, 0);
+
+    space_label = gtk_label_new("  ");
+    gtk_box_pack_start(GTK_BOX(hbox), space_label, FALSE, FALSE, 0);
+
+    space_label = gtk_label_new("     ");
+    gtk_box_pack_start(GTK_BOX(hbox), space_label, FALSE, FALSE, 0);
+
+    label = gtk_label_new(_("Show"));
+    gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 10);
+
+    /* show days spin = how many days to show */
+    dw->day_spin = gtk_spin_button_new_with_range(1, MAX_DAYS, 1);
+    gtk_spin_button_set_wrap(GTK_SPIN_BUTTON(dw->day_spin), TRUE);
+    gtk_widget_set_size_request(dw->day_spin, 40, -1);
+    gtk_box_pack_start(GTK_BOX(hbox), dw->day_spin, FALSE, FALSE, 0);
+    label = gtk_label_new(_("days"));
+    gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 5);
+
+    space_label = gtk_label_new("   ");
+    gtk_box_pack_start(GTK_BOX(hbox), space_label, FALSE, FALSE, 0);
+
+    /* sizes */
+    gtk_button_set_label(GTK_BUTTON(dw->StartDate_button)
+            , (const gchar *)start_date);
+    gtk_widget_size_request(dw->StartDate_button, &dw->StartDate_button_req);
+    dw->StartDate_button_req.width += dw->StartDate_button_req.width/10;
+    label = gtk_label_new("00");
+    gtk_widget_size_request(label, &dw->hour_req);
+
+    if (mainwindow_get_mainwindow()) {
+        GtkAllocation allocation;
+       summaryview = mainwindow_get_mainwindow()->summaryview;
+       allocation = summaryview->mainwidget_book->allocation;
+       
+       avail_w = allocation.width - 20 - 2*(dw->hour_req.width);
+       avail_d = avail_w / dw->StartDate_button_req.width;
+    }
+    if (avail_d >= 7) {
+       avail_d = 7;
+       gtk_widget_set_size_request(dw->StartDate_button, avail_w / avail_d, -1);
+       gtk_widget_size_request(dw->StartDate_button, &dw->StartDate_button_req);
+    }
+   
+    /* initial values */
+    if (avail_d)
+        gtk_spin_button_set_value(GTK_SPIN_BUTTON(dw->day_spin), avail_d);
+
+}
+
+static void build_day_view_colours(day_win *dw)
+{
+    GtkStyle *def_style;
+    GdkColormap *pic1_cmap;
+    GtkWidget *ctree = NULL;
+    def_style = gtk_widget_get_default_style();
+    pic1_cmap = gdk_colormap_get_system();
+    
+    if (mainwindow_get_mainwindow()) {
+        ctree = mainwindow_get_mainwindow()->summaryview->ctree;
+    }
+    if (ctree) {
+        dw->bg1 = ctree->style->bg[GTK_STATE_NORMAL];
+        dw->bg2 = ctree->style->bg[GTK_STATE_NORMAL];
+    } else {
+        dw->bg1 = def_style->bg[GTK_STATE_NORMAL];
+        dw->bg2 = def_style->bg[GTK_STATE_NORMAL];
+    }
+    dw->bg1.red +=  (dw->bg1.red < 63000 ? 2000 : -2000);
+    dw->bg1.green += (dw->bg1.green < 63000 ? 2000 : -2000);
+    dw->bg1.blue += (dw->bg1.blue < 63000 ? 2000 : -2000);
+    gdk_colormap_alloc_color(pic1_cmap, &dw->bg1, FALSE, TRUE);
+
+    dw->bg2.red +=  (dw->bg2.red > 1000 ? -1000 : 1000);
+    dw->bg2.green += (dw->bg2.green > 1000 ? -1000 : 1000);
+    dw->bg2.blue += (dw->bg2.blue > 1000 ? -1000 : 1000);
+    gdk_colormap_alloc_color(pic1_cmap, &dw->bg2, FALSE, TRUE);
+
+    if (!gdk_color_parse("white", &dw->line_color)) {
+        dw->line_color.red =  239 * (65535/255);
+        dw->line_color.green = 235 * (65535/255);
+        dw->line_color.blue = 230 * (65535/255);
+    }
+
+    if (!gdk_color_parse("blue", &dw->fg_sunday)) {
+        g_warning("color parse failed: red\n");
+        dw->fg_sunday.red = 10 * (65535/255);
+        dw->fg_sunday.green = 10 * (65535/255);
+        dw->fg_sunday.blue = 255 * (65535/255);
+    }
+
+    if (!gdk_color_parse("gold", &dw->bg_today)) {
+        g_warning("color parse failed: gold\n");
+        dw->bg_today.red = 255 * (65535/255);
+        dw->bg_today.green = 215 * (65535/255);
+        dw->bg_today.blue = 115 * (65535/255);
+    }
+
+    if (ctree) {
+        dw->fg_sunday.red = (dw->fg_sunday.red + ctree->style->fg[GTK_STATE_SELECTED].red)/2;
+        dw->fg_sunday.green = (dw->fg_sunday.green + ctree->style->fg[GTK_STATE_SELECTED].red)/2;
+        dw->fg_sunday.blue = (3*dw->fg_sunday.blue + ctree->style->fg[GTK_STATE_SELECTED].red)/4;
+        dw->bg_today.red = (3*dw->bg_today.red + ctree->style->bg[GTK_STATE_NORMAL].red)/4;
+        dw->bg_today.green = (3*dw->bg_today.green + ctree->style->bg[GTK_STATE_NORMAL].red)/4;
+        dw->bg_today.blue = (3*dw->bg_today.blue + ctree->style->bg[GTK_STATE_NORMAL].red)/4;
+    }
+
+    gdk_colormap_alloc_color(pic1_cmap, &dw->line_color, FALSE, TRUE);
+    gdk_colormap_alloc_color(pic1_cmap, &dw->fg_sunday, FALSE, TRUE);
+    gdk_colormap_alloc_color(pic1_cmap, &dw->bg_today, FALSE, TRUE);
+}
+
+static void fill_hour(day_win *dw, gint col, gint row, char *text)
+{
+    GtkWidget *name, *ev;
+
+    ev = gtk_event_box_new();
+    name = gtk_label_new(text);
+    gtk_container_add(GTK_CONTAINER(ev), name);
+    if ((row % 2) == 1)
+        gtk_widget_modify_bg(ev, GTK_STATE_NORMAL, &dw->bg1);
+    else
+        gtk_widget_modify_bg(ev, GTK_STATE_NORMAL, &dw->bg2);
+    gtk_widget_set_size_request(ev, dw->hour_req.width
+            , dw->StartDate_button_req.height);
+    if (text)
+        gtk_table_attach(GTK_TABLE(dw->dtable), ev, col, col+1, row, row+1
+             , (GTK_FILL), (0), 0, 0);
+    else  /* special, needed for header table full day events */
+        gtk_table_attach(GTK_TABLE(dw->dtable_h), ev, col, col+1, row, row+1
+             , (GTK_FILL), (0), 0, 0);
+}
+
+static void build_day_view_table(day_win *dw)
+{
+    gint days;   /* number of days to show */
+    int year, month, day;
+    gint i = 0;
+    GtkWidget *label, *button;
+    char text[5+1], *date, *today;
+    struct tm tm_date, tm_today;
+    guint monthdays[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
+    GtkWidget *vp;
+    time_t t = time(NULL);
+    GtkWidget *arrow;
+    gchar *tip;
+    gint first_col_day = -1;
+#if !(GTK_CHECK_VERSION(2,12,0))
+       GtkTooltips *tips = dw->Tooltips;
+#endif
+
+#ifdef G_OS_WIN32
+       if (t < 0)
+               t = 1;
+#endif
+    localtime_r(&t, &tm_today);
+    days = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(dw->day_spin));
+    today = get_locale_date(&tm_today);
+    /****** header of day table = days columns ******/
+    dw->scroll_win_h = gtk_scrolled_window_new(NULL, NULL);
+    gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(dw->scroll_win_h)
+            , GTK_POLICY_AUTOMATIC, GTK_POLICY_NEVER);
+    gtk_box_pack_start(GTK_BOX(dw->Vbox), dw->scroll_win_h
+            , TRUE, TRUE, 0);
+    dw->day_view_vbox = gtk_vbox_new(FALSE, 0);
+    gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(dw->scroll_win_h)
+            , dw->day_view_vbox);
+    /*
+    gtk_container_add(GTK_CONTAINER(dw->scroll_win_h), dw->day_view_vbox);
+    */
+    /* row 1= day header buttons 
+     * row 2= full day events after the buttons */
+    dw->dtable_h = gtk_table_new(2 , days+2, FALSE);
+    gtk_box_pack_start(GTK_BOX(dw->day_view_vbox), dw->dtable_h
+            , FALSE, FALSE, 0);
+
+    tm_date = dw->startdate;
+
+    year = tm_date.tm_year + 1900;
+    month = tm_date.tm_mon;
+    day = tm_date.tm_mday;
+    if (((tm_date.tm_year%4) == 0) && (((tm_date.tm_year%100) != 0) 
+            || ((tm_date.tm_year%400) == 0)))
+        monthdays[1] = 29;
+
+
+    i=0;
+    dw->Previous_toolbutton = gtk_event_box_new();
+    gtk_event_box_set_visible_window(GTK_EVENT_BOX(dw->Previous_toolbutton), FALSE);
+    gtk_container_set_border_width(GTK_CONTAINER(dw->Previous_toolbutton), 0);
+    arrow = gtk_arrow_new(GTK_ARROW_LEFT, GTK_SHADOW_NONE);
+    gtk_container_add(GTK_CONTAINER(dw->Previous_toolbutton), arrow);
+    gtk_table_attach(GTK_TABLE(dw->dtable_h), dw->Previous_toolbutton, i, i+1, 0, 1
+                , (GTK_FILL), (0), 0, 0);
+    gtk_widget_show_all(dw->Previous_toolbutton);
+    g_signal_connect((gpointer)dw->Previous_toolbutton, "button_release_event"
+            , G_CALLBACK(on_Previous_clicked), dw);
+    tip = g_strdup_printf("Back %d days", days);
+    CLAWS_SET_TIP(dw->Previous_toolbutton, tip);
+    g_free(tip);
+    for (i = 1; i < days+1; i++) {
+        tip = g_malloc(100);
+       strftime(tip, 99, "%A %d %B %Y", &tm_date);
+       if (first_col_day == -1)
+               first_col_day = tm_date.tm_mday;
+        date = get_locale_date(&tm_date);
+        button = gtk_button_new();
+        gtk_button_set_label(GTK_BUTTON(button), date);
+        if (strcmp(today, date) == 0) {
+            gtk_widget_modify_bg(button, GTK_STATE_NORMAL, &dw->bg_today);
+        }
+
+        if (tm_date.tm_wday % 7 == 0) {
+            label = gtk_bin_get_child(GTK_BIN(button));
+            gtk_widget_modify_fg(label, GTK_STATE_NORMAL, &dw->fg_sunday);
+        }
+        CLAWS_SET_TIP(button, tip);
+       g_free(tip);
+        gtk_widget_set_size_request(button, dw->StartDate_button_req.width, -1);
+        g_signal_connect((gpointer)button, "clicked"
+                , G_CALLBACK(header_button_clicked_cb), dw);
+        g_object_set_data(G_OBJECT(button), "offset", GINT_TO_POINTER(tm_date.tm_mday*1000));
+        gtk_table_attach(GTK_TABLE(dw->dtable_h), button, i, i+1, 0, 1
+                , (GTK_FILL), (0), 0, 0);
+
+        if (++tm_date.tm_mday == (monthdays[tm_date.tm_mon]+1)) {
+            if (++tm_date.tm_mon == 12) {
+                ++tm_date.tm_year;
+                tm_date.tm_mon = 0;
+            }
+            tm_date.tm_mday = 1;
+        }
+       ++tm_date.tm_wday; tm_date.tm_wday %=7;
+       g_free(date);
+    }
+
+    dw->Next_toolbutton = gtk_event_box_new();
+    gtk_event_box_set_visible_window(GTK_EVENT_BOX(dw->Next_toolbutton), FALSE);
+    gtk_container_set_border_width(GTK_CONTAINER(dw->Next_toolbutton), 0);
+    arrow = gtk_arrow_new(GTK_ARROW_RIGHT, GTK_SHADOW_NONE);
+    gtk_container_add(GTK_CONTAINER(dw->Next_toolbutton), arrow);
+    gtk_table_attach(GTK_TABLE(dw->dtable_h), dw->Next_toolbutton, i, i+1, 0, 1
+                , (GTK_FILL), (0), 0, 0);
+    gtk_widget_show_all(dw->Next_toolbutton);
+    g_signal_connect((gpointer)dw->Next_toolbutton, "button_release_event"
+            , G_CALLBACK(on_Next_clicked), dw);
+    tip = g_strdup_printf("Forward %d days", days);
+    CLAWS_SET_TIP(dw->Next_toolbutton, tip);
+    g_free(tip);
+    g_free(today);
+
+    /****** body of day table ******/
+    dw->scroll_win = gtk_scrolled_window_new(NULL, NULL);
+    gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(dw->scroll_win)
+            , GTK_SHADOW_NONE);
+    gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(dw->scroll_win)
+            , GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
+    gtk_scrolled_window_set_placement(GTK_SCROLLED_WINDOW(dw->scroll_win)
+            , GTK_CORNER_TOP_LEFT);
+    gtk_box_pack_start(GTK_BOX(dw->day_view_vbox), dw->scroll_win
+            , TRUE, TRUE, 0);
+    vp = gtk_viewport_new(NULL, NULL);
+    gtk_viewport_set_shadow_type(GTK_VIEWPORT(vp), GTK_SHADOW_NONE);
+    gtk_container_add(GTK_CONTAINER(dw->scroll_win), vp);
+    dw->dtable = gtk_table_new(24, days+2, FALSE);
+    gtk_container_add(GTK_CONTAINER(vp), dw->dtable);
+
+    gtk_widget_show_all(dw->dtable_h);
+    /* hours column = hour rows */
+    for (i = 0; i < 24; i++) {
+        g_sprintf(text, "%02d", i);
+        /* ev is needed for background colour */
+        fill_hour(dw, 0, i, text);
+        fill_hour(dw, days+1, i, text);
+    }
+    fill_days(dw, days, dw->item, first_col_day);
+}
+
+void refresh_day_win(day_win *dw)
+{
+    get_scroll_position(dw);
+    gtk_widget_destroy(dw->scroll_win_h);
+    build_day_view_table(dw);
+    gtk_widget_show_all(dw->scroll_win_h);
+    /* I was not able to get this work without the timer. Ugly yes, but
+     * it works and does not hurt - much */
+    g_timeout_add(100, (GSourceFunc)scroll_position_timer, (gpointer)dw);
+}
+
+day_win *create_day_win(FolderItem *item, struct tm tmdate)
+{
+    day_win *dw;
+    char *start_date = get_locale_date(&tmdate);
+
+    /* initialisation + main window + base vbox */
+    dw = g_new0(day_win, 1);
+    dw->scroll_pos = -1; /* not set */
+#if !(GTK_CHECK_VERSION(2,12,0))
+    dw->Tooltips = tips;
+#endif
+    dw->accel_group = gtk_accel_group_new();
+    
+    while (tmdate.tm_wday != 1)
+       orage_move_day(&tmdate, -1);
+    
+    dw->startdate = tmdate;
+    dw->startdate.tm_hour = 0;
+    dw->startdate.tm_min = 0;
+    dw->startdate.tm_sec = 0;
+    dw->Vbox = gtk_vbox_new(FALSE, 0);
+
+    dw->item = item;
+    build_day_view_colours(dw);
+    build_day_view_header(dw, start_date);
+    build_day_view_table(dw);
+    gtk_widget_show_all(dw->Vbox);
+    dw->selsig = vcal_view_set_calendar_page(dw->Vbox, 
+                   G_CALLBACK(dw_summary_selected), dw);
+    vcal_view_create_popup_menus(dw->Vbox, &dw->view_menu, 
+                                &dw->event_menu, &dw->event_group,
+                                &dw->ui_manager);
+
+    g_timeout_add(100, (GtkFunction)scroll_position_timer, (gpointer)dw);
+
+    return(dw);
+}
diff --git a/src/plugins/vcalendar/icaltime_as_local.c b/src/plugins/vcalendar/icaltime_as_local.c
new file mode 100644 (file)
index 0000000..933b0da
--- /dev/null
@@ -0,0 +1,115 @@
+/* Taken as is from http://dev.w3.org/cvsweb/Ical2html/icaltime_as_local.c
+W3C® SOFTWARE NOTICE AND LICENSE
+
+
+Copyright © 1994-2002 World Wide Web Consortium, (Massachusetts
+Institute of Technology, Institut National de Recherche en
+Informatique et en Automatique, Keio University). All Rights
+Reserved. http://www.w3.org/Consortium/Legal/
+
+This W3C work (including software, documents, or other related items)
+is being provided by the copyright holders under the following
+license. By obtaining, using and/or copying this work, you (the
+licensee) agree that you have read, understood, and will comply with
+the following terms and conditions:
+
+Permission to use, copy, modify, and distribute this software and its
+documentation, with or without modification, for any purpose and
+without fee or royalty is hereby granted, provided that you include
+the following on ALL copies of the software and documentation or
+portions thereof, including modifications, that you make:
+
+The full text of this NOTICE in a location viewable to users of the
+redistributed or derivative work.  Any pre-existing intellectual
+property disclaimers, notices, or terms and conditions. If none exist,
+a short notice of the following form (hypertext is preferred, text is
+permitted) should be used within the body of any redistributed or
+derivative code: "Copyright © [$date-of-software] World Wide Web
+Consortium, (Massachusetts Institute of Technology, Institut National
+de Recherche en Informatique et en Automatique, Keio University). All
+Rights Reserved. http://www.w3.org/Consortium/Legal/" Notice of any
+changes or modifications to the W3C files, including the date changes
+were made. (We recommend you provide URIs to the location from which
+the code is derived.)
+
+THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT
+HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED,
+INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS
+FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR
+DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS,
+TRADEMARKS OR OTHER RIGHTS.
+
+COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL
+OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR
+DOCUMENTATION.
+
+The name and trademarks of copyright holders may NOT be used in
+advertising or publicity pertaining to the software without specific,
+written prior permission. Title to copyright in this software and any
+associated documentation will at all times remain with copyright
+holders.
+
+____________________________________
+
+This formulation of W3C's notice and license became active on August
+14 1998 so as to improve compatibility with GPL. This version ensures
+that W3C software licensing terms are no more restrictive than GPL and
+consequently W3C software may be distributed in GPL packages. See the
+older formulation for the policy prior to this date. Please see our
+Copyright FAQ for common questions about using materials from our
+site, including specific terms and conditions for packages like
+libwww, Amaya, and Jigsaw. Other questions about this notice can be
+directed to site-policy@w3.org.
+*/
+/*
+ * Convert a date/time in UTC to a date/time in the local time zone.
+ * (Seems to be missing from libical v 0.23)
+ *
+ * Author: Bert Bos <bert@w3.org>
+ * Created: 18 Dec 2002
+ * Version: $Id$
+ */
+
+#ifdef HAVE_CONFIG_H
+#  include "config.h"
+#include "claws-features.h"
+#endif
+
+#include <stddef.h>
+#include <glib.h>
+#include <glib/gi18n.h>
+
+#ifdef USE_PTHREAD
+#include <pthread.h>
+#endif
+
+#include "icaltime_as_local.h"
+
+#if !HAVE_ICALTIME_AS_LOCAL
+
+struct icaltimetype icaltime_as_local(struct icaltimetype tt)
+{
+  time_t t;
+  struct tm *tm;
+  struct icaltimetype h;
+  struct tm buft;
+
+  t = icaltime_as_timet(tt);                    /* Convert to epoch */
+#ifdef G_OS_WIN32
+  if (t < 0)
+         t = 1;
+#endif
+  tm = localtime_r(&t, &buft);                  /* Convert to local time */
+  h.year = tm->tm_year + 1900;                  /* Make an icaltimetype */
+  h.month = tm->tm_mon + 1;
+  h.day = tm->tm_mday;
+  h.hour = tt.is_date ? 0 : tm->tm_hour;
+  h.minute = tt.is_date ? 0 : tm->tm_min;
+  h.second = tt.is_date ? 0 : tm->tm_sec;
+  h.is_utc = 0;
+  h.is_date = tt.is_date;
+  return h;
+}
+
+#endif
+
diff --git a/src/plugins/vcalendar/icaltime_as_local.h b/src/plugins/vcalendar/icaltime_as_local.h
new file mode 100644 (file)
index 0000000..302577f
--- /dev/null
@@ -0,0 +1,18 @@
+#ifndef __ICALTIME_AS_LOCAL_H__
+#define __ICALTIME_AS_LOCAL_H__
+#include <time.h>
+#include <ical.h>
+#undef PACKAGE_BUGREPORT        /* Why are they in ical.h? */
+#undef PACKAGE_NAME
+#undef PACKAGE_STRING
+#undef PACKAGE_TARNAME
+#undef PACKAGE_VERSION
+#undef PACKAGE
+#undef VERSION
+
+#if !HAVE_ICALTIME_AS_LOCAL
+
+struct icaltimetype icaltime_as_local(struct icaltimetype tt);
+
+#endif
+#endif
diff --git a/src/plugins/vcalendar/libical/.cvsignore b/src/plugins/vcalendar/libical/.cvsignore
new file mode 100644 (file)
index 0000000..6607302
--- /dev/null
@@ -0,0 +1,6 @@
+.libs
+.deps
+Makefile
+Makefile.in
+*.lo
+*.la
diff --git a/src/plugins/vcalendar/libical/Makefile.am b/src/plugins/vcalendar/libical/Makefile.am
new file mode 100644 (file)
index 0000000..51ef9d6
--- /dev/null
@@ -0,0 +1 @@
+SUBDIRS = libical design-data scripts
diff --git a/src/plugins/vcalendar/libical/Makefile.in b/src/plugins/vcalendar/libical/Makefile.in
new file mode 100644 (file)
index 0000000..2582705
--- /dev/null
@@ -0,0 +1,681 @@
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \  ]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = src/plugins/vcalendar/libical
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/check-type.m4 \
+       $(top_srcdir)/m4/gnupg-check-typedef.m4 \
+       $(top_srcdir)/m4/gnupg.m4 $(top_srcdir)/m4/gpgme.m4 \
+       $(top_srcdir)/m4/isc-posix.m4 $(top_srcdir)/m4/libtool.m4 \
+       $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+       $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+       $(top_srcdir)/m4/spamassassin.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h \
+       $(top_builddir)/claws-features.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+       html-recursive info-recursive install-data-recursive \
+       install-dvi-recursive install-exec-recursive \
+       install-html-recursive install-info-recursive \
+       install-pdf-recursive install-ps-recursive install-recursive \
+       installcheck-recursive installdirs-recursive pdf-recursive \
+       ps-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive        \
+  distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+       $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+       distdir
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+COMPFACE_LIBS = @COMPFACE_LIBS@
+CONIC_CFLAGS = @CONIC_CFLAGS@
+CONIC_LIBS = @CONIC_LIBS@
+CONTACTS_CFLAGS = @CONTACTS_CFLAGS@
+CONTACTS_LIBS = @CONTACTS_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
+CURL_CFLAGS = @CURL_CFLAGS@
+CURL_LIBS = @CURL_LIBS@
+CYGPATH_W = @CYGPATH_W@
+DBUS_CFLAGS = @DBUS_CFLAGS@
+DBUS_LIBS = @DBUS_LIBS@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DOCBOOK2HTML = @DOCBOOK2HTML@
+DOCBOOK2PDF = @DOCBOOK2PDF@
+DOCBOOK2PS = @DOCBOOK2PS@
+DOCBOOK2TXT = @DOCBOOK2TXT@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ENCHANT_CFLAGS = @ENCHANT_CFLAGS@
+ENCHANT_LIBS = @ENCHANT_LIBS@
+EXEEXT = @EXEEXT@
+EXTRA_VERSION = @EXTRA_VERSION@
+FGREP = @FGREP@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
+GLIB_LIBS = @GLIB_LIBS@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNOME2_CFLAGS = @GNOME2_CFLAGS@
+GNOME2_LIBS = @GNOME2_LIBS@
+GNOME_CONFIG = @GNOME_CONFIG@
+GNUTLS_CFLAGS = @GNUTLS_CFLAGS@
+GNUTLS_LIBS = @GNUTLS_LIBS@
+GPGME_CFLAGS = @GPGME_CFLAGS@
+GPGME_CONFIG = @GPGME_CONFIG@
+GPGME_LIBS = @GPGME_LIBS@
+GREP = @GREP@
+GTKPRINTUNIX_CFLAGS = @GTKPRINTUNIX_CFLAGS@
+GTKPRINTUNIX_LIBS = @GTKPRINTUNIX_LIBS@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LIBS = @GTK_LIBS@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+JPILOT_LIBS = @JPILOT_LIBS@
+LD = @LD@
+LDAP_LIBS = @LDAP_LIBS@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBETPAN_FLAGS = @LIBETPAN_FLAGS@
+LIBETPAN_LIBS = @LIBETPAN_LIBS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBRESOLV = @LIBRESOLV@
+LIBS = @LIBS@
+LIBSOUP_GNOME_CFLAGS = @LIBSOUP_GNOME_CFLAGS@
+LIBSOUP_GNOME_LIBS = @LIBSOUP_GNOME_LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAEMO_CFLAGS = @MAEMO_CFLAGS@
+MAEMO_LIBS = @MAEMO_LIBS@
+MAINT = @MAINT@
+MAJOR_VERSION = @MAJOR_VERSION@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MICRO_VERSION = @MICRO_VERSION@
+MINOR_VERSION = @MINOR_VERSION@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NETWORKMANAGER_SUPPORT_CFLAGS = @NETWORKMANAGER_SUPPORT_CFLAGS@
+NETWORKMANAGER_SUPPORT_LIBS = @NETWORKMANAGER_SUPPORT_LIBS@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PASSCRYPT_KEY = @PASSCRYPT_KEY@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POSUB = @POSUB@
+PTHREAD_LIBS = @PTHREAD_LIBS@
+RANLIB = @RANLIB@
+RC = @RC@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SM_LIBS = @SM_LIBS@
+STARTUP_NOTIFICATION_CFLAGS = @STARTUP_NOTIFICATION_CFLAGS@
+STARTUP_NOTIFICATION_LIBS = @STARTUP_NOTIFICATION_LIBS@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
+VALGRIND_LIBS = @VALGRIND_LIBS@
+VERSION = @VERSION@
+WEBKIT_CFLAGS = @WEBKIT_CFLAGS@
+WEBKIT_LIBS = @WEBKIT_LIBS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_cv_enable_crash_dialog = @ac_cv_enable_crash_dialog@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gnomedatadir = @gnomedatadir@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libetpanconfig = @libetpanconfig@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+manualdir = @manualdir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+SUBDIRS = libical design-data scripts
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/plugins/vcalendar/libical/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --foreign src/plugins/vcalendar/libical/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+       @fail= failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
+       dot_seen=no; \
+       target=`echo $@ | sed s/-recursive//`; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           dot_seen=yes; \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done; \
+       if test "$$dot_seen" = "no"; then \
+         $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+       fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+       @fail= failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
+       dot_seen=no; \
+       case "$@" in \
+         distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+         *) list='$(SUBDIRS)' ;; \
+       esac; \
+       rev=''; for subdir in $$list; do \
+         if test "$$subdir" = "."; then :; else \
+           rev="$$subdir $$rev"; \
+         fi; \
+       done; \
+       rev="$$rev ."; \
+       target=`echo $@ | sed s/-recursive//`; \
+       for subdir in $$rev; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done && test -z "$$fail"
+tags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+       done
+ctags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+       done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       set x; \
+       here=`pwd`; \
+       if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+         include_option=--etags-include; \
+         empty_fix=.; \
+       else \
+         include_option=--include; \
+         empty_fix=; \
+       fi; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test ! -f $$subdir/TAGS || \
+             set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+         fi; \
+       done; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
+       fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+       @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           $(am__make_dryrun) \
+             || test -d "$(distdir)/$$subdir" \
+             || $(MKDIR_P) "$(distdir)/$$subdir" \
+             || exit 1; \
+           dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+           $(am__relativize); \
+           new_distdir=$$reldir; \
+           dir1=$$subdir; dir2="$(top_distdir)"; \
+           $(am__relativize); \
+           new_top_distdir=$$reldir; \
+           echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+           echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+           ($(am__cd) $$subdir && \
+             $(MAKE) $(AM_MAKEFLAGS) \
+               top_distdir="$$new_top_distdir" \
+               distdir="$$new_distdir" \
+               am__remove_distdir=: \
+               am__skip_length_check=: \
+               am__skip_mode_fix=: \
+               distdir) \
+             || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+       -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+       install-am install-strip tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+       all all-am check check-am clean clean-generic clean-libtool \
+       ctags ctags-recursive distclean distclean-generic \
+       distclean-libtool distclean-tags distdir dvi dvi-am html \
+       html-am info info-am install install-am install-data \
+       install-data-am install-dvi install-dvi-am install-exec \
+       install-exec-am install-html install-html-am install-info \
+       install-info-am install-man install-pdf install-pdf-am \
+       install-ps install-ps-am install-strip installcheck \
+       installcheck-am installdirs installdirs-am maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-generic \
+       mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
+       uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/plugins/vcalendar/libical/design-data/.cvsignore b/src/plugins/vcalendar/libical/design-data/.cvsignore
new file mode 100644 (file)
index 0000000..6607302
--- /dev/null
@@ -0,0 +1,6 @@
+.libs
+.deps
+Makefile
+Makefile.in
+*.lo
+*.la
diff --git a/src/plugins/vcalendar/libical/design-data/Makefile.am b/src/plugins/vcalendar/libical/design-data/Makefile.am
new file mode 100644 (file)
index 0000000..8f27cd6
--- /dev/null
@@ -0,0 +1,6 @@
+EXTRA_DIST =\
+ properties.csv \
+ parameters.csv \
+ restrictions.csv \
+ status.txt \
+ value-types.csv
diff --git a/src/plugins/vcalendar/libical/design-data/Makefile.in b/src/plugins/vcalendar/libical/design-data/Makefile.in
new file mode 100644 (file)
index 0000000..170e1eb
--- /dev/null
@@ -0,0 +1,488 @@
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \  ]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = src/plugins/vcalendar/libical/design-data
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/check-type.m4 \
+       $(top_srcdir)/m4/gnupg-check-typedef.m4 \
+       $(top_srcdir)/m4/gnupg.m4 $(top_srcdir)/m4/gpgme.m4 \
+       $(top_srcdir)/m4/isc-posix.m4 $(top_srcdir)/m4/libtool.m4 \
+       $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+       $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+       $(top_srcdir)/m4/spamassassin.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h \
+       $(top_builddir)/claws-features.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+COMPFACE_LIBS = @COMPFACE_LIBS@
+CONIC_CFLAGS = @CONIC_CFLAGS@
+CONIC_LIBS = @CONIC_LIBS@
+CONTACTS_CFLAGS = @CONTACTS_CFLAGS@
+CONTACTS_LIBS = @CONTACTS_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
+CURL_CFLAGS = @CURL_CFLAGS@
+CURL_LIBS = @CURL_LIBS@
+CYGPATH_W = @CYGPATH_W@
+DBUS_CFLAGS = @DBUS_CFLAGS@
+DBUS_LIBS = @DBUS_LIBS@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DOCBOOK2HTML = @DOCBOOK2HTML@
+DOCBOOK2PDF = @DOCBOOK2PDF@
+DOCBOOK2PS = @DOCBOOK2PS@
+DOCBOOK2TXT = @DOCBOOK2TXT@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ENCHANT_CFLAGS = @ENCHANT_CFLAGS@
+ENCHANT_LIBS = @ENCHANT_LIBS@
+EXEEXT = @EXEEXT@
+EXTRA_VERSION = @EXTRA_VERSION@
+FGREP = @FGREP@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
+GLIB_LIBS = @GLIB_LIBS@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNOME2_CFLAGS = @GNOME2_CFLAGS@
+GNOME2_LIBS = @GNOME2_LIBS@
+GNOME_CONFIG = @GNOME_CONFIG@
+GNUTLS_CFLAGS = @GNUTLS_CFLAGS@
+GNUTLS_LIBS = @GNUTLS_LIBS@
+GPGME_CFLAGS = @GPGME_CFLAGS@
+GPGME_CONFIG = @GPGME_CONFIG@
+GPGME_LIBS = @GPGME_LIBS@
+GREP = @GREP@
+GTKPRINTUNIX_CFLAGS = @GTKPRINTUNIX_CFLAGS@
+GTKPRINTUNIX_LIBS = @GTKPRINTUNIX_LIBS@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LIBS = @GTK_LIBS@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+JPILOT_LIBS = @JPILOT_LIBS@
+LD = @LD@
+LDAP_LIBS = @LDAP_LIBS@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBETPAN_FLAGS = @LIBETPAN_FLAGS@
+LIBETPAN_LIBS = @LIBETPAN_LIBS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBRESOLV = @LIBRESOLV@
+LIBS = @LIBS@
+LIBSOUP_GNOME_CFLAGS = @LIBSOUP_GNOME_CFLAGS@
+LIBSOUP_GNOME_LIBS = @LIBSOUP_GNOME_LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAEMO_CFLAGS = @MAEMO_CFLAGS@
+MAEMO_LIBS = @MAEMO_LIBS@
+MAINT = @MAINT@
+MAJOR_VERSION = @MAJOR_VERSION@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MICRO_VERSION = @MICRO_VERSION@
+MINOR_VERSION = @MINOR_VERSION@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NETWORKMANAGER_SUPPORT_CFLAGS = @NETWORKMANAGER_SUPPORT_CFLAGS@
+NETWORKMANAGER_SUPPORT_LIBS = @NETWORKMANAGER_SUPPORT_LIBS@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PASSCRYPT_KEY = @PASSCRYPT_KEY@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POSUB = @POSUB@
+PTHREAD_LIBS = @PTHREAD_LIBS@
+RANLIB = @RANLIB@
+RC = @RC@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SM_LIBS = @SM_LIBS@
+STARTUP_NOTIFICATION_CFLAGS = @STARTUP_NOTIFICATION_CFLAGS@
+STARTUP_NOTIFICATION_LIBS = @STARTUP_NOTIFICATION_LIBS@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
+VALGRIND_LIBS = @VALGRIND_LIBS@
+VERSION = @VERSION@
+WEBKIT_CFLAGS = @WEBKIT_CFLAGS@
+WEBKIT_LIBS = @WEBKIT_LIBS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_cv_enable_crash_dialog = @ac_cv_enable_crash_dialog@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gnomedatadir = @gnomedatadir@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libetpanconfig = @libetpanconfig@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+manualdir = @manualdir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = \
+ properties.csv \
+ parameters.csv \
+ restrictions.csv \
+ status.txt \
+ value-types.csv
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/plugins/vcalendar/libical/design-data/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --foreign src/plugins/vcalendar/libical/design-data/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+       -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+       distclean distclean-generic distclean-libtool distdir dvi \
+       dvi-am html html-am info info-am install install-am \
+       install-data install-data-am install-dvi install-dvi-am \
+       install-exec install-exec-am install-html install-html-am \
+       install-info install-info-am install-man install-pdf \
+       install-pdf-am install-ps install-ps-am install-strip \
+       installcheck installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-generic \
+       mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/plugins/vcalendar/libical/design-data/parameters.csv b/src/plugins/vcalendar/libical/design-data/parameters.csv
new file mode 100644 (file)
index 0000000..0adbbe5
--- /dev/null
@@ -0,0 +1,25 @@
+"#Name ","C Type","Enumeration Values"
+"ALTREP","const char*",
+"CHARSET", "const char *",
+"CN","const char*",
+"CUTYPE","icalparameter_cutype","INDIVIDUAL;GROUP;RESOURCE;ROOM;UNKNOWN"
+"DELEGATED-FROM","const char*",
+"DELEGATED-TO","const char*",
+"DIR","const char*",
+"ENCODING","icalparameter_encoding","8BIT;BASE64"
+"FBTYPE","icalparameter_fbtype","FREE;BUSY;BUSYUNAVAILABLE;BUSYTENTATIVE"
+"FMTTYPE","const char*",
+"LANGUAGE","const char*",
+"MEMBER","const char*",
+"PARTSTAT","icalparameter_partstat","NEEDS-ACTION;ACCEPTED;DECLINED;TENTATIVE;DELEGATED;COMPLETED;INPROCESS"
+"RANGE","icalparameter_range","THISANDPRIOR;THISANDFUTURE"
+"RELATED","icalparameter_related","START;END "
+"RELTYPE","icalparameter_reltype","PARENT;CHILD;SIBLING"
+"ROLE","icalparameter_role","CHAIR;REQ-PARTICIPANT;OPT-PARTICIPANT;NON-PARTICIPANT"
+"RSVP","icalparameter_rsvp","TRUE;FALSE"
+"SENT-BY","const char*",
+"TZID","const char*",
+"VALUE","icalparameter_value","BINARY;BOOLEAN;DATE;DURATION;FLOAT;INTEGER;PERIOD;RECUR;TEXT;TIME;URI;ERROR;DATE-TIME;UTC-OFFSET;CAL-ADDRESS"
+"X","const char*",
+"X-LIC-ERRORTYPE","icalparameter_xlicerrortype","COMPONENT-PARSE-ERROR;PROPERTY-PARSE-ERROR;PARAMETER-NAME-PARSE-ERROR;PARAMETER-VALUE-PARSE-ERROR;VALUE-PARSE-ERROR;INVALID-ITIP;UNKNOWN-VCAL-PROP-ERROR;MIME-PARSE-ERROR"
+"X-LIC-COMPARETYPE","icalparameter_xliccomparetype","EQUAL;NOTEQUAL;LESS;GREATER;LESSEQUAL;GREATEREQUAL;REGEX"
diff --git a/src/plugins/vcalendar/libical/design-data/properties.csv b/src/plugins/vcalendar/libical/design-data/properties.csv
new file mode 100644 (file)
index 0000000..dca6810
--- /dev/null
@@ -0,0 +1,66 @@
+,,
+"#Property Name","libical Value type","iCalendar default value"
+"ACTION","ACTION","ACTION"
+"ATTACH","ATTACH","URI"
+"ATTENDEE","CAL-ADDRESS","CAL-ADDRESS"
+"CALSCALE","TEXT","TEXT"
+"CATEGORIES","TEXT","TEXT"
+"CLASS","TEXT","TEXT"
+"COMMENT","TEXT","TEXT"
+"COMPLETED","DATE-TIME","DATE-TIME"
+"CONTACT","TEXT","TEXT"
+"CREATED","DATE-TIME","DATE-TIME"
+"DESCRIPTION","TEXT","TEXT"
+"DTEND","DATE-TIME","DATE-TIME"
+"DTSTAMP","DATE-TIME","DATE-TIME"
+"DTSTART","DATE-TIME","DATE-TIME"
+"DUE","DATE-TIME","DATE-TIME"
+"DURATION","DURATION","DURATION"
+"EXDATE","DATE-TIME","DATE-TIME"
+"EXRULE","RECUR","RECUR"
+"FREEBUSY","PERIOD","PERIOD"
+"GEO","GEO","GEO"
+"LAST-MODIFIED","DATE-TIME","DATE-TIME"
+"LOCATION","TEXT","TEXT"
+"METHOD","METHOD","METHOD"
+"ORGANIZER","CAL-ADDRESS","CAL-ADDRESS"
+"PERCENT-COMPLETE","INTEGER","INTEGER"
+"PRIORITY","INTEGER","INTEGER"
+"PRODID","TEXT","TEXT"
+"RDATE","DATE-TIME-PERIOD","DATE-TIME"
+"RECURRENCE-ID","DATE-TIME","DATE-TIME"
+"RELATED-TO","TEXT","TEXT"
+"REPEAT","INTEGER","INTEGER"
+"REQUEST-STATUS","STRING","STRING"
+"RESOURCES","TEXT","TEXT"
+"RRULE","RECUR","RECUR"
+"SEQUENCE","INTEGER","INTEGER"
+"STATUS","STATUS","STATUS"
+"SUMMARY","TEXT","TEXT"
+"TRANSP","TEXT","TEXT"
+"TRIGGER","TRIGGER","DURATION"
+"TZID","TEXT","TEXT"
+"TZNAME","TEXT","TEXT"
+"TZOFFSETFROM","UTC-OFFSET","UTC-OFFSET"
+"TZOFFSETTO","UTC-OFFSET","UTC-OFFSET"
+"TZURL","URI","URI"
+"UID","TEXT","TEXT"
+"URL","URI","URI"
+"VERSION","TEXT","TEXT"
+"X","TEXT","TEXT"
+"SCOPE","TEXT","TEXT"
+"MAXRESULTS","INTEGER","INTEGER"
+"MAXRESULTSSIZE","INTEGER","INTEGER"
+"QUERY","QUERY","QUERY"
+"QUERYNAME","TEXT","TEXT"
+"TARGET","CAL-ADDRESS","CAL-ADDRESS"
+"X-LIC-ERROR","TEXT","TEXT"
+"X-LIC-CLUSTERCOUNT","STRING","STRING"
+"X-LIC-MIMECONTENTTYPE","STRING","STRING"
+"X-LIC-MIMECHARSET","STRING","STRING"
+"X-LIC-MIMEENCODING","STRING","STRING"
+"X-LIC-MIMEOPTINFO","STRING","STRING"
+"X-LIC-MIMECID","STRING","STRING"
+"X-LIC-MIMEFILENAME","STRING","STRING"
+"ANY","NO","NO"
+"NO","NO","NO"
diff --git a/src/plugins/vcalendar/libical/design-data/restrictions.csv b/src/plugins/vcalendar/libical/design-data/restrictions.csv
new file mode 100644 (file)
index 0000000..1c62e2a
--- /dev/null
@@ -0,0 +1,1348 @@
+# Method, Target component, Property, Sub-component, Restriction
+PUBLISH,VEVENT,NONE,NONE,ONEPLUS
+PUBLISH,VEVENT,DTSTAMP,NONE,ONE
+PUBLISH,VEVENT,DTSTART,NONE,ONE
+PUBLISH,VEVENT,ORGANIZER,NONE,ONE
+PUBLISH,VEVENT,SUMMARY,NONE,ONE
+PUBLISH,VEVENT,UID,NONE,ONE
+PUBLISH,VEVENT,RECURRENCEID,NONE,ZEROORONE,must_be_recurring
+PUBLISH,VEVENT,SEQUENCE,NONE,ZEROORONE
+PUBLISH,VEVENT,ATTACH,NONE,ZEROPLUS
+PUBLISH,VEVENT,CATEGORIES,NONE,ZEROPLUS #Non-standard
+PUBLISH,VEVENT,CLASS,NONE,ZEROORONE
+PUBLISH,VEVENT,COMMENT,NONE,ZEROORONE
+PUBLISH,VEVENT,CONTACT,NONE,ZEROPLUS
+PUBLISH,VEVENT,CREATED,NONE,ZEROORONE
+PUBLISH,VEVENT,DESCRIPTION,NONE,ZEROORONE
+PUBLISH,VEVENT,DTEND,NONE,ZEROORONE
+PUBLISH,VEVENT,DURATION,NONE,ZEROORONE
+PUBLISH,VEVENT,EXDATE,NONE,ZEROPLUS
+PUBLISH,VEVENT,EXRULE,NONE,ZEROPLUS
+PUBLISH,VEVENT,GEO,NONE,ZEROORONE
+PUBLISH,VEVENT,LASTMODIFIED,NONE,ZEROORONE
+PUBLISH,VEVENT,LOCATION,NONE,ZEROORONE
+PUBLISH,VEVENT,PRIORITY,NONE,ZEROORONE
+PUBLISH,VEVENT,RDATE,NONE,ZEROPLUS
+PUBLISH,VEVENT,RELATEDTO,NONE,ZEROPLUS
+PUBLISH,VEVENT,RESOURCES,NONE,ZEROORONE
+PUBLISH,VEVENT,RRULE,NONE,ZEROPLUS
+PUBLISH,VEVENT,STATUS,NONE,ZEROORONE,may_be_tent_conf_cancel
+PUBLISH,VEVENT,TRANSP,NONE,ZEROORONE
+PUBLISH,VEVENT,URL,NONE,ZEROORONE
+PUBLISH,VEVENT,X,NONE,ZEROPLUS
+PUBLISH,VEVENT,ATTENDEE,NONE,ZERO
+PUBLISH,VEVENT,REQUESTSTATUS,NONE,ZERO
+PUBLISH,VEVENT,NONE,VALARM,ZEROPLUS
+PUBLISH,VEVENT,NONE,VFREEBUSY,ZERO
+PUBLISH,VEVENT,NONE,VJOURNAL,ZERO
+PUBLISH,VEVENT,NONE,VTODO,ZERO
+PUBLISH,VEVENT,NONE,VTIMEZONE,ZEROPLUS,must_if_tz_ref
+PUBLISH,VEVENT,NONE,X,ZEROPLUS
+REQUEST,VEVENT,NONE,NONE,ONEPLUS
+REQUEST,VEVENT,ATTENDEE,NONE,ONEPLUS
+REQUEST,VEVENT,DTSTAMP,NONE,ONE
+REQUEST,VEVENT,DTSTART,NONE,ONE
+REQUEST,VEVENT,ORGANIZER,NONE,ONE
+REQUEST,VEVENT,SEQUENCE,NONE,ZEROORONE
+REQUEST,VEVENT,SUMMARY,NONE,ONE
+REQUEST,VEVENT,UID,NONE,ONE
+REQUEST,VEVENT,ATTACH,NONE,ZEROPLUS
+REQUEST,VEVENT,CATEGORIES,NONE,ZEROPLUS #Non-standard
+REQUEST,VEVENT,CLASS,NONE,ZEROORONE
+REQUEST,VEVENT,COMMENT,NONE,ZEROORONE
+REQUEST,VEVENT,CONTACT,NONE,ZEROPLUS
+REQUEST,VEVENT,CREATED,NONE,ZEROORONE
+REQUEST,VEVENT,DESCRIPTION,NONE,ZEROORONE
+REQUEST,VEVENT,DTEND,NONE,ONEEXCLUSIVE,no_duration
+REQUEST,VEVENT,DURATION,NONE,ONEEXCLUSIVE,no_dtend
+REQUEST,VEVENT,EXDATE,NONE,ZEROPLUS
+REQUEST,VEVENT,EXRULE,NONE,ZEROPLUS
+REQUEST,VEVENT,GEO,NONE,ZEROORONE
+REQUEST,VEVENT,LASTMODIFIED,NONE,ZEROORONE
+REQUEST,VEVENT,LOCATION,NONE,ZEROORONE
+REQUEST,VEVENT,PRIORITY,NONE,ZEROORONE
+REQUEST,VEVENT,RDATE,NONE,ZEROPLUS
+REQUEST,VEVENT,RECURRENCEID,NONE,ZEROORONE,must_be_recurring
+REQUEST,VEVENT,RELATEDTO,NONE,ZEROPLUS
+REQUEST,VEVENT,REQUESTSTATUS,NONE,ZEROPLUS
+REQUEST,VEVENT,RESOURCES,NONE,ZEROORONE
+REQUEST,VEVENT,RRULE,NONE,ZEROPLUS
+REQUEST,VEVENT,STATUS,NONE,ZEROORONE,may_be_tent_conf
+REQUEST,VEVENT,TRANSP,NONE,ZEROORONE
+REQUEST,VEVENT,URL,NONE,ZEROORONE
+REQUEST,VEVENT,X,NONE,ZEROPLUS
+REQUEST,VEVENT,NONE,VALARM,ZEROPLUS
+REQUEST,VEVENT,NONE,VTIMEZONE,ZEROPLUS,must_if_tz_ref
+REQUEST,VEVENT,NONE,X,ZEROPLUS
+REQUEST,VEVENT,NONE,VFREEBUSY,ZERO
+REQUEST,VEVENT,NONE,VJOURNAL,ZERO
+REQUEST,VEVENT,NONE,VTODO,ZERO
+REPLY,VEVENT,NONE,NONE,ONEPLUS
+REPLY,VEVENT,ATTENDEE,NONE,ONE
+REPLY,VEVENT,DTSTAMP,NONE,ONE
+REPLY,VEVENT,ORGANIZER,NONE,ONE
+REPLY,VEVENT,RECURRENCEID,NONE,ZEROORONE,must_be_recurring
+REPLY,VEVENT,UID,NONE,ONE
+REPLY,VEVENT,SEQUENCE,NONE,ZEROORONE
+REPLY,VEVENT,ATTACH,NONE,ZEROPLUS
+REPLY,VEVENT,CATEGORIES,NONE,ZEROPLUS #Non-standard
+REPLY,VEVENT,CLASS,NONE,ZEROORONE
+REPLY,VEVENT,COMMENT,NONE,ZEROORONE
+REPLY,VEVENT,CONTACT,NONE,ZEROPLUS
+REPLY,VEVENT,CREATED,NONE,ZEROORONE
+REPLY,VEVENT,DESCRIPTION,NONE,ZEROORONE
+REPLY,VEVENT,DTEND,NONE,ONEEXCLUSIVE,no_duration
+REPLY,VEVENT,DTSTART,NONE,ZEROORONE
+REPLY,VEVENT,DURATION,NONE,ONEEXCLUSIVE,no_dtend
+REPLY,VEVENT,EXDATE,NONE,ZEROPLUS
+REPLY,VEVENT,EXRULE,NONE,ZEROPLUS
+REPLY,VEVENT,GEO,NONE,ZEROORONE
+REPLY,VEVENT,LASTMODIFIED,NONE,ZEROORONE
+REPLY,VEVENT,LOCATION,NONE,ZEROORONE
+REPLY,VEVENT,PRIORITY,NONE,ZEROORONE
+REPLY,VEVENT,RDATE,NONE,ZEROPLUS
+REPLY,VEVENT,RELATEDTO,NONE,ZEROPLUS
+REPLY,VEVENT,RESOURCES,NONE,ZEROORONE
+REPLY,VEVENT,REQUESTSTATUS,NONE,ZEROPLUS
+REPLY,VEVENT,RRULE,NONE,ZEROPLUS
+REPLY,VEVENT,STATUS,NONE,ZEROORONE
+REPLY,VEVENT,SUMMARY,NONE,ZEROORONE
+REPLY,VEVENT,TRANSP,NONE,ZEROORONE
+REPLY,VEVENT,URL,NONE,ZEROORONE
+REPLY,VEVENT,X,NONE,ZEROPLUS
+REPLY,VEVENT,NONE,VTIMEZONE,ZEROORONE,must_if_tz_ref
+REPLY,VEVENT,NONE,X,ZEROPLUS
+REPLY,VEVENT,NONE,VALARM,ZERO
+REPLY,VEVENT,NONE,VFREEBUSY,ZERO
+REPLY,VEVENT,NONE,VJOURNAL,ZERO
+REPLY,VEVENT,NONE,VTODO,ZERO
+ADD,VEVENT,NONE,NONE,ONE
+ADD,VEVENT,DTSTAMP,NONE,ONE
+ADD,VEVENT,DTSTART,NONE,ONE
+ADD,VEVENT,ORGANIZER,NONE,ONE
+ADD,VEVENT,SEQUENCE,NONE,ONE
+ADD,VEVENT,SUMMARY,NONE,ONE
+ADD,VEVENT,UID,NONE,ONE
+ADD,VEVENT,ATTACH,NONE,ZEROPLUS
+ADD,VEVENT,ATTENDEE,NONE,ZEROPLUS
+ADD,VEVENT,CATEGORIES,NONE,ZEROPLUS #Non-standard
+ADD,VEVENT,CLASS,NONE,ZEROORONE
+ADD,VEVENT,COMMENT,NONE,ZEROORONE
+ADD,VEVENT,CONTACT,NONE,ZEROPLUS
+ADD,VEVENT,CREATED,NONE,ZEROORONE
+ADD,VEVENT,DESCRIPTION,NONE,ZEROORONE
+ADD,VEVENT,DTEND,NONE,ONEEXCLUSIVE,no_duration
+ADD,VEVENT,DURATION,NONE,ONEEXCLUSIVE,no_duration
+ADD,VEVENT,EXDATE,NONE,ZEROPLUS
+ADD,VEVENT,EXRULE,NONE,ZEROPLUS
+ADD,VEVENT,GEO,NONE,ZEROORONE
+ADD,VEVENT,LASTMODIFIED,NONE,ZEROORONE
+ADD,VEVENT,LOCATION,NONE,ZEROORONE
+ADD,VEVENT,PRIORITY,NONE,ZEROORONE
+ADD,VEVENT,RDATE,NONE,ZEROPLUS
+ADD,VEVENT,RELATEDTO,NONE,ZEROPLUS
+ADD,VEVENT,RESOURCES,NONE,ZEROORONE
+ADD,VEVENT,RRULE,NONE,ZEROPLUS
+ADD,VEVENT,STATUS,NONE,ZEROORONE,may_be_tent_conf
+ADD,VEVENT,TRANSP,NONE,ZEROORONE
+ADD,VEVENT,URL,NONE,ZEROORONE
+ADD,VEVENT,X,NONE,ZEROPLUS
+ADD,VEVENT,RECURRENCEID,NONE,ZERO,must_be_recurring
+ADD,VEVENT,REQUESTSTATUS,NONE,ZERO
+ADD,VEVENT,NONE,VALARM,ZEROPLUS
+ADD,VEVENT,NONE,VTIMEZONE,ZEROPLUS,must_if_tz_ref
+ADD,VEVENT,NONE,X,ZEROPLUS
+ADD,VEVENT,NONE,VFREEBUSY,ZERO
+ADD,VEVENT,NONE,VTODO,ZERO
+ADD,VEVENT,NONE,VJOURNAL,ZERO
+CANCEL,VEVENT,NONE,NONE,ONEPLUS
+CANCEL,VEVENT,ATTENDEE,NONE,ZEROPLUS
+CANCEL,VEVENT,DTSTAMP,NONE,ONE
+CANCEL,VEVENT,ORGANIZER,NONE,ONE
+CANCEL,VEVENT,SEQUENCE,NONE,ONE
+CANCEL,VEVENT,UID,NONE,ONE
+CANCEL,VEVENT,COMMENT,NONE,ZEROORONE
+CANCEL,VEVENT,ATTACH,NONE,ZEROPLUS
+CANCEL,VEVENT,CATEGORIES,NONE,ZEROPLUS #Non-standard
+CANCEL,VEVENT,CLASS,NONE,ZEROORONE
+CANCEL,VEVENT,CONTACT,NONE,ZEROPLUS
+CANCEL,VEVENT,CREATED,NONE,ZEROORONE
+CANCEL,VEVENT,DESCRIPTION,NONE,ZEROORONE
+CANCEL,VEVENT,DTEND,NONE,ONEEXCLUSIVE ,no_duration
+CANCEL,VEVENT,DTSTART,NONE,ZEROORONE
+CANCEL,VEVENT,DURATION,NONE,ONEEXCLUSIVE,no_duration
+CANCEL,VEVENT,EXDATE,NONE,ZEROPLUS
+CANCEL,VEVENT,EXRULE,NONE,ZEROPLUS
+CANCEL,VEVENT,GEO,NONE,ZEROORONE
+CANCEL,VEVENT,LASTMODIFIED,NONE,ZEROORONE
+CANCEL,VEVENT,LOCATION,NONE,ZEROORONE
+CANCEL,VEVENT,PRIORITY,NONE,ZEROORONE
+CANCEL,VEVENT,RDATE,NONE,ZEROPLUS
+CANCEL,VEVENT,RECURRENCEID,NONE,ZEROORONE,must_be_recurring
+CANCEL,VEVENT,RELATEDTO,NONE,ZEROPLUS
+CANCEL,VEVENT,RESOURCES,NONE,ZEROORONE
+CANCEL,VEVENT,RRULE,NONE,ZEROPLUS
+CANCEL,VEVENT,STATUS,NONE,ZEROORONE,must_be_canceled_no_attendee
+CANCEL,VEVENT,SUMMARY,NONE,ZEROORONE
+CANCEL,VEVENT,TRANSP,NONE,ZEROORONE
+CANCEL,VEVENT,URL,NONE,ZEROORONE
+CANCEL,VEVENT,X,NONE,ZEROPLUS
+CANCEL,VEVENT,REQUESTSTATUS,NONE,ZERO
+CANCEL,VEVENT,NONE,VTIMEZONE,ZEROPLUS,must_if_tz_ref
+CANCEL,VEVENT,NONE,X,ZEROPLUS
+CANCEL,VEVENT,NONE,VTODO,ZERO
+CANCEL,VEVENT,NONE,VJOURNAL,ZERO
+CANCEL,VEVENT,NONE,VFREEBUSY,ZERO
+CANCEL,VEVENT,NONE,VALARM,ZERO
+REFRESH,VEVENT,NONE,NONE,ONE
+REFRESH,VEVENT,ATTENDEE,NONE,ONE
+REFRESH,VEVENT,DTSTAMP,NONE,ONE
+REFRESH,VEVENT,ORGANIZER,NONE,ONE
+REFRESH,VEVENT,UID,NONE,ONE
+REFRESH,VEVENT,COMMENT,NONE,ZEROORONE
+REFRESH,VEVENT,RECURRENCEID,NONE,ZEROORONE,must_be_recurring
+REFRESH,VEVENT,X,NONE,ZEROPLUS
+REFRESH,VEVENT,ATTACH,NONE,ZERO
+REFRESH,VEVENT,CATEGORIES,NONE,ZERO
+REFRESH,VEVENT,CLASS,NONE,ZERO
+REFRESH,VEVENT,CONTACT,NONE,ZERO
+REFRESH,VEVENT,CREATED,NONE,ZERO
+REFRESH,VEVENT,DESCRIPTION,NONE,ZERO
+REFRESH,VEVENT,DTEND,NONE,ZERO
+REFRESH,VEVENT,DTSTART,NONE,ZERO
+REFRESH,VEVENT,DURATION,NONE,ZERO
+REFRESH,VEVENT,EXDATE,NONE,ZERO
+REFRESH,VEVENT,EXRULE,NONE,ZERO
+REFRESH,VEVENT,GEO,NONE,ZERO
+REFRESH,VEVENT,LASTMODIFIED,NONE,ZERO
+REFRESH,VEVENT,LOCATION,NONE,ZERO
+REFRESH,VEVENT,PRIORITY,NONE,ZERO
+REFRESH,VEVENT,RDATE,NONE,ZERO
+REFRESH,VEVENT,RELATEDTO,NONE,ZERO
+REFRESH,VEVENT,REQUESTSTATUS,NONE,ZERO
+REFRESH,VEVENT,RESOURCES,NONE,ZERO
+REFRESH,VEVENT,RRULE,NONE,ZERO
+REFRESH,VEVENT,SEQUENCE,NONE,ZERO
+REFRESH,VEVENT,STATUS,NONE,ZERO
+REFRESH,VEVENT,SUMMARY,NONE,ZERO
+REFRESH,VEVENT,TRANSP,NONE,ZERO
+REFRESH,VEVENT,URL,NONE,ZERO
+REFRESH,VEVENT,NONE,X,ZEROPLUS
+REFRESH,VEVENT,NONE,VTODO,ZERO
+REFRESH,VEVENT,NONE,VJOURNAL,ZERO
+REFRESH,VEVENT,NONE,VFREEBUSY,ZERO
+REFRESH,VEVENT,NONE,VTIMEZONE,ZERO,must_if_tz_ref
+REFRESH,VEVENT,NONE,VALARM,ZERO
+COUNTER,VEVENT,NONE,NONE,ONE
+COUNTER,VEVENT,DTSTAMP,NONE,ONE
+COUNTER,VEVENT,DTSTART,NONE,ONE
+COUNTER,VEVENT,ORGANIZER,NONE,ONE
+COUNTER,VEVENT,SEQUENCE,NONE,ONE
+COUNTER,VEVENT,SUMMARY,NONE,ONE
+COUNTER,VEVENT,UID,NONE,ONE
+COUNTER,VEVENT,ATTACH,NONE,ZEROPLUS
+COUNTER,VEVENT,ATTENDEE,NONE,ZEROPLUS
+COUNTER,VEVENT,CATEGORIES,NONE,ZEROPLUS #Non-standard
+COUNTER,VEVENT,CLASS,NONE,ZEROORONE
+COUNTER,VEVENT,COMMENT,NONE,ZEROORONE
+COUNTER,VEVENT,CONTACT,NONE,ZEROPLUS
+COUNTER,VEVENT,CREATED,NONE,ZEROORONE
+COUNTER,VEVENT,DESCRIPTION,NONE,ZEROORONE
+COUNTER,VEVENT,DTEND,NONE,ONEEXCLUSIVE,no_duration
+COUNTER,VEVENT,DURATION,NONE,ONEEXCLUSIVE,no_duration
+COUNTER,VEVENT,EXDATE,NONE,ZEROPLUS
+COUNTER,VEVENT,EXRULE,NONE,ZEROPLUS
+COUNTER,VEVENT,GEO,NONE,ZEROORONE
+COUNTER,VEVENT,LASTMODIFIED,NONE,ZEROORONE
+COUNTER,VEVENT,LOCATION,NONE,ZEROORONE
+COUNTER,VEVENT,PRIORITY,NONE,ZEROORONE
+COUNTER,VEVENT,RDATE,NONE,ZEROPLUS
+COUNTER,VEVENT,RECURRENCEID,NONE,ZEROORONE,must_be_recurring
+COUNTER,VEVENT,RELATEDTO,NONE,ZEROPLUS
+COUNTER,VEVENT,REQUESTSTATUS,NONE,ZEROPLUS
+COUNTER,VEVENT,RESOURCES,NONE,ZEROORONE
+COUNTER,VEVENT,RRULE,NONE,ZEROPLUS
+COUNTER,VEVENT,STATUS,NONE,ZEROORONE,may_be_tent_conf_cancel
+COUNTER,VEVENT,TRANSP,NONE,ZEROORONE
+COUNTER,VEVENT,URL,NONE,ZEROORONE
+COUNTER,VEVENT,X,NONE,ZEROPLUS
+COUNTER,VEVENT,NONE,VALARM,ZEROPLUS
+COUNTER,VEVENT,NONE,VTIMEZONE,ZEROPLUS,must_if_tz_ref
+COUNTER,VEVENT,NONE,X,ZEROPLUS
+COUNTER,VEVENT,NONE,VTODO,ZERO
+COUNTER,VEVENT,NONE,VJOURNAL,ZERO
+COUNTER,VEVENT,NONE,VFREEBUSY,ZERO
+DECLINECOUNTER,VEVENT,NONE,NONE,ONE
+DECLINECOUNTER,VEVENT,DTSTAMP,NONE,ONE
+DECLINECOUNTER,VEVENT,ORGANIZER,NONE,ONE
+DECLINECOUNTER,VEVENT,UID,NONE,ONE
+DECLINECOUNTER,VEVENT,COMMENT,NONE,ZEROORONE
+DECLINECOUNTER,VEVENT,RECURRENCEID,NONE,ZEROORONE,must_be_recurring
+DECLINECOUNTER,VEVENT,REQUESTSTATUS,NONE,ZEROPLUS
+DECLINECOUNTER,VEVENT,SEQUENCE,NONE,ZERO
+DECLINECOUNTER,VEVENT,X,NONE,ZEROPLUS
+DECLINECOUNTER,VEVENT,ATTACH,NONE,ZERO
+DECLINECOUNTER,VEVENT,ATTENDEE,NONE,ZERO
+DECLINECOUNTER,VEVENT,CATEGORIES,NONE,ZERO
+DECLINECOUNTER,VEVENT,CLASS,NONE,ZERO
+DECLINECOUNTER,VEVENT,CONTACT,NONE,ZERO
+DECLINECOUNTER,VEVENT,CREATED,NONE,ZERO
+DECLINECOUNTER,VEVENT,DESCRIPTION,NONE,ZERO
+DECLINECOUNTER,VEVENT,DTEND,NONE,ZERO
+DECLINECOUNTER,VEVENT,DTSTART,NONE,ZERO
+DECLINECOUNTER,VEVENT,DURATION,NONE,ZERO
+DECLINECOUNTER,VEVENT,EXDATE,NONE,ZERO
+DECLINECOUNTER,VEVENT,EXRULE,NONE,ZERO
+DECLINECOUNTER,VEVENT,GEO,NONE,ZERO
+DECLINECOUNTER,VEVENT,LASTMODIFIED,NONE,ZERO
+DECLINECOUNTER,VEVENT,LOCATION,NONE,ZERO
+DECLINECOUNTER,VEVENT,PRIORITY,NONE,ZERO
+DECLINECOUNTER,VEVENT,RDATE,NONE,ZERO
+DECLINECOUNTER,VEVENT,RELATEDTO,NONE,ZERO
+DECLINECOUNTER,VEVENT,RESOURCES,NONE,ZERO
+DECLINECOUNTER,VEVENT,RRULE,NONE,ZERO
+DECLINECOUNTER,VEVENT,STATUS,NONE,ZERO
+DECLINECOUNTER,VEVENT,SUMMARY,NONE,ZERO
+DECLINECOUNTER,VEVENT,TRANSP,NONE,ZERO
+DECLINECOUNTER,VEVENT,URL,NONE,ZERO
+DECLINECOUNTER,VEVENT,NONE,X,ZEROPLUS
+DECLINECOUNTER,VEVENT,NONE,VTODO,ZERO
+DECLINECOUNTER,VEVENT,NONE,VJOURNAL,ZERO
+DECLINECOUNTER,VEVENT,NONE,VFREEBUSY,ZERO
+DECLINECOUNTER,VEVENT,NONE,VTIMEZONE,ZERO,must_if_tz_ref
+DECLINECOUNTER,VEVENT,NONE,VALARM,ZERO
+PUBLISH,VFREEBUSY,NONE,NONE,ONEPLUS
+PUBLISH,VFREEBUSY,DTSTAMP,NONE,ONE
+PUBLISH,VFREEBUSY,DTSTART,NONE,ONE
+PUBLISH,VFREEBUSY,DTEND,NONE,ONE
+PUBLISH,VFREEBUSY,FREEBUSY,NONE,ONEPLUS
+PUBLISH,VFREEBUSY,ORGANIZER,NONE,ONE
+PUBLISH,VFREEBUSY,COMMENT,NONE,ZEROORONE
+PUBLISH,VFREEBUSY,CONTACT,NONE,ZEROPLUS
+PUBLISH,VFREEBUSY,X,NONE,ZEROPLUS
+PUBLISH,VFREEBUSY,URL,NONE,ZEROORONE
+PUBLISH,VFREEBUSY,ATTENDEE,NONE,ZERO
+PUBLISH,VFREEBUSY,DURATION,NONE,ZERO
+PUBLISH,VFREEBUSY,REQUESTSTATUS,NONE,ZERO
+PUBLISH,VFREEBUSY,UID,NONE,ZERO
+PUBLISH,VFREEBUSY,NONE,X,ZEROPLUS
+PUBLISH,VFREEBUSY,NONE,VEVENT,ZERO
+PUBLISH,VFREEBUSY,NONE,VTODO,ZERO
+PUBLISH,VFREEBUSY,NONE,VJOURNAL,ZERO
+PUBLISH,VFREEBUSY,NONE,VTIMEZONE,ZERO,must_if_tz_ref
+PUBLISH,VFREEBUSY,NONE,VALARM,ZERO
+REQUEST,VFREEBUSY,NONE,NONE,ONE
+REQUEST,VFREEBUSY,ATTENDEE,NONE,ONEPLUS
+REQUEST,VFREEBUSY,DTEND,NONE,ONE
+REQUEST,VFREEBUSY,DTSTAMP,NONE,ONE
+REQUEST,VFREEBUSY,DTSTART,NONE,ONE
+REQUEST,VFREEBUSY,ORGANIZER,NONE,ONE
+REQUEST,VFREEBUSY,UID,NONE,ONE
+REQUEST,VFREEBUSY,COMMENT,NONE,ZEROORONE
+REQUEST,VFREEBUSY,CONTACT,NONE,ZEROPLUS
+REQUEST,VFREEBUSY,X,NONE,ZEROPLUS
+REQUEST,VFREEBUSY,FREEBUSY,NONE,ZERO
+REQUEST,VFREEBUSY,DURATION,NONE,ZERO
+REQUEST,VFREEBUSY,REQUESTSTATUS,NONE,ZERO
+REQUEST,VFREEBUSY,URL,NONE,ZERO
+REQUEST,VFREEBUSY,NONE,X,ZEROPLUS
+REQUEST,VFREEBUSY,NONE,VALARM,ZERO
+REQUEST,VFREEBUSY,NONE,VEVENT,ZERO
+REQUEST,VFREEBUSY,NONE,VTODO,ZERO
+REQUEST,VFREEBUSY,NONE,VJOURNAL,ZERO
+REQUEST,VFREEBUSY,NONE,VTIMEZONE,ZERO
+REPLY,VFREEBUSY,NONE,NONE,ONE
+REPLY,VFREEBUSY,ATTENDEE,NONE,ONE
+REPLY,VFREEBUSY,DTSTAMP,NONE,ONE
+REPLY,VFREEBUSY,DTEND,NONE,ONE
+REPLY,VFREEBUSY,DTSTART,NONE,ONE
+REPLY,VFREEBUSY,FREEBUSY,NONE,ONEPLUS
+REPLY,VFREEBUSY,ORGANIZER,NONE,ONE
+REPLY,VFREEBUSY,UID,NONE,ONE
+REPLY,VFREEBUSY,COMMENT,NONE,ZEROORONE
+REPLY,VFREEBUSY,CONTACT,NONE,ZEROPLUS
+REPLY,VFREEBUSY,REQUESTSTATUS,NONE,ZEROPLUS
+REPLY,VFREEBUSY,URL,NONE,ZEROORONE
+REPLY,VFREEBUSY,X,NONE,ZEROPLUS
+REPLY,VFREEBUSY,DURATION,NONE,ZERO
+REPLY,VFREEBUSY,SEQUENCE,NONE,ZERO
+REPLY,VFREEBUSY,NONE,X,ZEROPLUS
+REPLY,VFREEBUSY,NONE,VALARM,ZERO
+REPLY,VFREEBUSY,NONE,VEVENT,ZERO
+REPLY,VFREEBUSY,NONE,VTODO,ZERO
+REPLY,VFREEBUSY,NONE,VJOURNAL,ZERO
+REPLY,VFREEBUSY,NONE,VTIMEZONE,ZERO
+PUBLISH,VTODO,NONE,NONE,ONEPLUS
+PUBLISH,VTODO,DTSTAMP,NONE,ONE
+PUBLISH,VTODO,DTSTART,NONE,ONE
+PUBLISH,VTODO,ORGANIZER,NONE,ONE
+PUBLISH,VTODO,PRIORITY,NONE,ONE
+PUBLISH,VTODO,SEQUENCE,NONE,ZEROORONE
+PUBLISH,VTODO,SUMMARY,NONE,ONE
+PUBLISH,VTODO,UID,NONE,ONE
+PUBLISH,VTODO,ATTACH,NONE,ZEROPLUS
+PUBLISH,VTODO,CATEGORIES,NONE,ZEROPLUS #Non-Standard
+PUBLISH,VTODO,CLASS,NONE,ZEROORONE
+PUBLISH,VTODO,COMMENT,NONE,ZEROORONE
+PUBLISH,VTODO,CONTACT,NONE,ZEROPLUS
+PUBLISH,VTODO,CREATED,NONE,ZEROORONE
+PUBLISH,VTODO,DESCRIPTION,NONE,ZEROORONE
+PUBLISH,VTODO,DUE,NONE,ZEROORONE
+PUBLISH,VTODO,DURATION,NONE,ZEROORONE
+PUBLISH,VTODO,EXDATE,NONE,ZEROPLUS
+PUBLISH,VTODO,EXRULE,NONE,ZEROPLUS
+PUBLISH,VTODO,GEO,NONE,ZEROORONE
+PUBLISH,VTODO,LASTMODIFIED,NONE,ZEROORONE
+PUBLISH,VTODO,LOCATION,NONE,ZEROORONE
+PUBLISH,VTODO,PERCENTCOMPLETE,NONE,ZEROORONE
+PUBLISH,VTODO,RDATE,NONE,ZEROPLUS
+PUBLISH,VTODO,RECURRENCEID,NONE,ZEROORONE,must_be_recurring
+PUBLISH,VTODO,RELATEDTO,NONE,ZEROPLUS
+PUBLISH,VTODO,RESOURCES,NONE,ZEROORONE
+PUBLISH,VTODO,RRULE,NONE,ZEROPLUS
+PUBLISH,VTODO,STATUS,NONE,ZEROORONE
+PUBLISH,VTODO,URL,NONE,ZEROORONE
+PUBLISH,VTODO,X,NONE,ZEROPLUS
+PUBLISH,VTODO,ATTENDEE,NONE,ZERO
+PUBLISH,VTODO,REQUESTSTATUS,NONE,ZERO
+PUBLISH,VTODO,NONE,VTIMEZONE,ZEROPLUS
+PUBLISH,VTODO,NONE,VALARM,ZEROPLUS
+PUBLISH,VTODO,NONE,X,ZEROPLUS
+PUBLISH,VTODO,NONE,VFREEBUSY,ZERO
+PUBLISH,VTODO,NONE,VEVENT,ZERO
+PUBLISH,VTODO,NONE,VJOURNAL,ZERO
+REQUEST,VTODO,NONE,NONE,ONEPLUS
+REQUEST,VTODO,ATTENDEE,NONE,ONEPLUS
+REQUEST,VTODO,DTSTAMP,NONE,ONE
+REQUEST,VTODO,DTSTART,NONE,ONE
+REQUEST,VTODO,ORGANIZER,NONE,ONE
+REQUEST,VTODO,PRIORITY,NONE,ONE
+REQUEST,VTODO,SEQUENCE,NONE,ZEROORONE
+REQUEST,VTODO,SUMMARY,NONE,ONE
+REQUEST,VTODO,UID,NONE,ONE
+REQUEST,VTODO,ATTACH,NONE,ZEROPLUS
+REQUEST,VTODO,CATEGORIES,NONE,ZEROPLUS #Non-Standard
+REQUEST,VTODO,CLASS,NONE,ZEROORONE
+REQUEST,VTODO,COMMENT,NONE,ZEROORONE
+REQUEST,VTODO,CONTACT,NONE,ZEROPLUS
+REQUEST,VTODO,CREATED,NONE,ZEROORONE
+REQUEST,VTODO,DESCRIPTION,NONE,ZEROORONE
+REQUEST,VTODO,DUE,NONE,ZEROORONE
+REQUEST,VTODO,DURATION,NONE,ZEROORONE
+REQUEST,VTODO,EXDATE,NONE,ZEROPLUS
+REQUEST,VTODO,EXRULE,NONE,ZEROPLUS
+REQUEST,VTODO,GEO,NONE,ZEROORONE
+REQUEST,VTODO,LASTMODIFIED,NONE,ZEROORONE
+REQUEST,VTODO,LOCATION,NONE,ZEROORONE
+REQUEST,VTODO,PERCENTCOMPLETE,NONE,ZEROORONE
+REQUEST,VTODO,RDATE,NONE,ZEROPLUS
+REQUEST,VTODO,RECURRENCEID,NONE,ZEROORONE,must_be_recurring
+REQUEST,VTODO,RELATEDTO,NONE,ZEROPLUS
+REQUEST,VTODO,RESOURCES,NONE,ZEROORONE
+REQUEST,VTODO,RRULE,NONE,ZEROPLUS
+REQUEST,VTODO,STATUS,NONE,ZEROORONE,may_be_comp_need_process
+REQUEST,VTODO,URL,NONE,ZEROORONE
+REQUEST,VTODO,X,NONE,ZEROPLUS
+REQUEST,VTODO,REQUESTSTATUS,NONE,ZERO
+REQUEST,VTODO,NONE,VALARM,ZEROPLUS
+REQUEST,VTODO,NONE,VTIMEZONE,ZEROPLUS
+REQUEST,VTODO,NONE,X,ZEROPLUS
+REQUEST,VTODO,NONE,VEVENT,ZERO
+REQUEST,VTODO,NONE,VFREEBUSY,ZERO
+REQUEST,VTODO,NONE,VJOURNAL,ZERO
+REPLY,VTODO,NONE,NONE,ONEPLUS
+REPLY,VTODO,ATTENDEE,NONE,ONEPLUS
+REPLY,VTODO,DTSTAMP,NONE,ONE
+REPLY,VTODO,ORGANIZER,NONE,ONE
+REPLY,VTODO,REQUESTSTATUS,NONE,ONEPLUS
+REPLY,VTODO,UID,NONE,ONE
+REPLY,VTODO,ATTACH,NONE,ZEROPLUS
+REPLY,VTODO,CATEGORIES,NONE,ZEROPLUS #Non-Standard
+REPLY,VTODO,CLASS,NONE,ZEROORONE
+REPLY,VTODO,COMMENT,NONE,ZEROORONE
+REPLY,VTODO,CONTACT,NONE,ZEROPLUS
+REPLY,VTODO,CREATED,NONE,ZEROORONE
+REPLY,VTODO,DESCRIPTION,NONE,ZEROORONE
+REPLY,VTODO,DTSTART,NONE,ZEROORONE
+REPLY,VTODO,DUE,NONE,ZEROORONE
+REPLY,VTODO,DURATION,NONE,ZEROORONE
+REPLY,VTODO,EXDATE,NONE,ZEROPLUS
+REPLY,VTODO,EXRULE,NONE,ZEROPLUS
+REPLY,VTODO,GEO,NONE,ZEROORONE
+REPLY,VTODO,LASTMODIFIED,NONE,ZEROORONE
+REPLY,VTODO,LOCATION,NONE,ZEROORONE
+REPLY,VTODO,PERCENTCOMPLETE,NONE,ZEROORONE
+REPLY,VTODO,PRIORITY,NONE,ZEROORONE
+REPLY,VTODO,RDATE,NONE,ZEROPLUS
+REPLY,VTODO,RELATEDTO,NONE,ZEROPLUS
+REPLY,VTODO,RESOURCES,NONE,ZEROORONE
+REPLY,VTODO,RRULE,NONE,ZEROPLUS
+REPLY,VTODO,RECURRENCEID,NONE,ZEROORONE,must_be_recurring
+REPLY,VTODO,SEQUENCE,NONE,ZEROORONE
+REPLY,VTODO,STATUS,NONE,ZEROORONE
+REPLY,VTODO,SUMMARY,NONE,ZEROORONE
+REPLY,VTODO,URL,NONE,ZEROORONE
+REPLY,VTODO,X,NONE,ZEROPLUS
+REPLY,VTODO,NONE,VTIMEZONE,ZEROORONE
+REPLY,VTODO,NONE,X,ZEROPLUS
+REPLY,VTODO,NONE,VALARM,ZERO
+REPLY,VTODO,NONE,VEVENT,ZERO
+REPLY,VTODO,NONE,VFREEBUSY,ZERO
+ADD,VTODO,NONE,NONE,ONE
+ADD,VTODO,DTSTAMP,NONE,ONE
+ADD,VTODO,ORGANIZER,NONE,ONE
+ADD,VTODO,PRIORITY,NONE,ONE
+ADD,VTODO,SEQUENCE,NONE,ONE
+ADD,VTODO,SUMMARY,NONE,ONE
+ADD,VTODO,UID,NONE,ONE
+ADD,VTODO,ATTACH,NONE,ZEROPLUS
+ADD,VTODO,ATTENDEE,NONE,ZEROPLUS
+ADD,VTODO,CATEGORIES,NONE,ZEROPLUS
+ADD,VTODO,CLASS,NONE,ZEROORONE
+ADD,VTODO,COMMENT,NONE,ZEROORONE
+ADD,VTODO,CONTACT,NONE,ZEROPLUS
+ADD,VTODO,CREATED,NONE,ZEROORONE
+ADD,VTODO,DESCRIPTION,NONE,ZEROORONE
+ADD,VTODO,DTSTART,NONE,ZEROORONE
+ADD,VTODO,DUE,NONE,ZEROORONE
+ADD,VTODO,DURATION,NONE,ZEROORONE
+ADD,VTODO,EXDATE,NONE,ZEROPLUS
+ADD,VTODO,EXRULE,NONE,ZEROPLUS
+ADD,VTODO,GEO,NONE,ZEROORONE
+ADD,VTODO,LASTMODIFIED,NONE,ZEROORONE
+ADD,VTODO,LOCATION,NONE,ZEROORONE
+ADD,VTODO,PERCENTCOMPLETE,NONE,ZEROORONE
+ADD,VTODO,RDATE,NONE,ZEROPLUS
+ADD,VTODO,RELATEDTO,NONE,ZEROPLUS
+ADD,VTODO,RESOURCES,NONE,ZEROORONE
+ADD,VTODO,RRULE,NONE,ZEROPLUS
+ADD,VTODO,STATUS,NONE,ZEROORONE,may_be_comp_need_process
+ADD,VTODO,URL,NONE,ZEROORONE
+ADD,VTODO,X,NONE,ZEROPLUS
+ADD,VTODO,RECURRENCEID,NONE,ZERO,must_be_recurring
+ADD,VTODO,REQUESTSTATUS,NONE,ZERO
+ADD,VTODO,NONE,VALARM,ZEROPLUS
+ADD,VTODO,NONE,VTIMEZONE,ZEROPLUS
+ADD,VTODO,NONE,X,ZEROPLUS
+ADD,VTODO,NONE,VEVENT,ZERO
+ADD,VTODO,NONE,VJOURNAL,ZERO
+ADD,VTODO,NONE,VFREEBUSY,ZERO
+CANCEL,VTODO,NONE,NONE,ONE
+CANCEL,VTODO,ATTENDEE,NONE,ZEROPLUS
+CANCEL,VTODO,UID,NONE,ONE
+CANCEL,VTODO,DTSTAMP,NONE,ONE
+CANCEL,VTODO,ORGANIZER,NONE,ONE
+CANCEL,VTODO,SEQUENCE,NONE,ONE
+CANCEL,VTODO,ATTACH,NONE,ZEROPLUS
+CANCEL,VTODO,CATEGORIES,NONE,ZEROPLUS #Non-Standard
+CANCEL,VTODO,CLASS,NONE,ZEROORONE
+CANCEL,VTODO,COMMENT,NONE,ZEROORONE
+CANCEL,VTODO,CONTACT,NONE,ZEROPLUS
+CANCEL,VTODO,CREATED,NONE,ZEROORONE
+CANCEL,VTODO,DESCRIPTION,NONE,ZEROORONE
+CANCEL,VTODO,DTSTART,NONE,ZEROORONE
+CANCEL,VTODO,DUE,NONE,ZEROORONE
+CANCEL,VTODO,DURATION,NONE,ZEROORONE
+CANCEL,VTODO,EXDATE,NONE,ZEROPLUS
+CANCEL,VTODO,EXRULE,NONE,ZEROPLUS
+CANCEL,VTODO,GEO,NONE,ZEROORONE
+CANCEL,VTODO,LASTMODIFIED,NONE,ZEROORONE
+CANCEL,VTODO,LOCATION,NONE,ZEROORONE
+CANCEL,VTODO,PERCENTCOMPLETE,NONE,ZEROORONE
+CANCEL,VTODO,RDATE,NONE,ZEROPLUS
+CANCEL,VTODO,RECURRENCEID,NONE,ZEROORONE,must_be_recurring
+CANCEL,VTODO,RELATEDTO,NONE,ZEROPLUS
+CANCEL,VTODO,RESOURCES,NONE,ZEROORONE
+CANCEL,VTODO,RRULE,NONE,ZEROPLUS
+CANCEL,VTODO,PRIORITY,NONE,ZEROORONE
+CANCEL,VTODO,STATUS,NONE,ZEROORONE,must_be_canceled_no_attendee
+CANCEL,VTODO,URL,NONE,ZEROORONE
+CANCEL,VTODO,X,NONE,ZEROPLUS
+CANCEL,VTODO,REQUESTSTATUS,NONE,ZERO
+CANCEL,VTODO,NONE,VTIMEZONE,ZEROORONE
+CANCEL,VTODO,NONE,X,ZEROPLUS
+CANCEL,VTODO,NONE,VALARM,ZERO
+CANCEL,VTODO,NONE,VEVENT,ZERO
+CANCEL,VTODO,NONE,VFREEBUSY,ZERO
+REFRESH,VTODO,NONE,NONE,ONE
+REFRESH,VTODO,ATTENDEE,NONE,ONE
+REFRESH,VTODO,DTSTAMP,NONE,ONE
+REFRESH,VTODO,UID,NONE,ONE
+REFRESH,VTODO,RECURRENCEID,NONE,ZEROORONE,must_be_recurring
+REFRESH,VTODO,X,NONE,ZEROPLUS
+REFRESH,VTODO,ATTACH,NONE,ZERO
+REFRESH,VTODO,CATEGORIES,NONE,ZERO
+REFRESH,VTODO,CLASS,NONE,ZERO
+REFRESH,VTODO,COMMENT,NONE,ZERO
+REFRESH,VTODO,CONTACT,NONE,ZERO
+REFRESH,VTODO,CREATED,NONE,ZERO
+REFRESH,VTODO,DESCRIPTION,NONE,ZERO
+REFRESH,VTODO,DTSTART,NONE,ZERO
+REFRESH,VTODO,DUE,NONE,ZERO
+REFRESH,VTODO,DURATION,NONE,ZERO
+REFRESH,VTODO,EXDATE,NONE,ZERO
+REFRESH,VTODO,EXRULE,NONE,ZERO
+REFRESH,VTODO,GEO,NONE,ZERO
+REFRESH,VTODO,LASTMODIFIED,NONE,ZERO
+REFRESH,VTODO,LOCATION,NONE,ZERO
+REFRESH,VTODO,ORGANIZER,NONE,ZERO
+REFRESH,VTODO,PERCENTCOMPLETE,NONE,ZERO
+REFRESH,VTODO,PRIORITY,NONE,ZERO
+REFRESH,VTODO,RDATE,NONE,ZERO
+REFRESH,VTODO,RELATEDTO,NONE,ZERO
+REFRESH,VTODO,REQUESTSTATUS,NONE,ZERO
+REFRESH,VTODO,RESOURCES,NONE,ZERO
+REFRESH,VTODO,RRULE,NONE,ZERO
+REFRESH,VTODO,SEQUENCE,NONE,ZERO
+REFRESH,VTODO,STATUS,NONE,ZERO
+REFRESH,VTODO,URL,NONE,ZERO
+REFRESH,VTODO,NONE,X,ZEROPLUS
+REFRESH,VTODO,NONE,VALARM,ZERO
+REFRESH,VTODO,NONE,VEVENT,ZERO
+REFRESH,VTODO,NONE,VFREEBUSY,ZERO
+REFRESH,VTODO,NONE,VTIMEZONE,ZERO
+COUNTER,VTODO,NONE,NONE,ONE
+COUNTER,VTODO,ATTENDEE,NONE,ONEPLUS
+COUNTER,VTODO,DTSTAMP,NONE,ONE
+COUNTER,VTODO,ORGANIZER,NONE,ONE
+COUNTER,VTODO,PRIORITY,NONE,ONE
+COUNTER,VTODO,SUMMARY,NONE,ONE
+COUNTER,VTODO,UID,NONE,ONE
+COUNTER,VTODO,ATTACH,NONE,ZEROPLUS
+COUNTER,VTODO,CATEGORIES,NONE,ZEROPLUS #Non-standard
+COUNTER,VTODO,CLASS,NONE,ZEROORONE
+COUNTER,VTODO,COMMENT,NONE,ZEROORONE
+COUNTER,VTODO,CONTACT,NONE,ZEROPLUS
+COUNTER,VTODO,CREATED,NONE,ZEROORONE
+COUNTER,VTODO,DESCRIPTION,NONE,ZEROORONE
+COUNTER,VTODO,DTSTART,NONE,ZEROORONE
+COUNTER,VTODO,DUE,NONE,ZEROORONE
+COUNTER,VTODO,DURATION,NONE,ZEROORONE
+COUNTER,VTODO,EXDATE,NONE,ZEROPLUS
+COUNTER,VTODO,EXRULE,NONE,ZEROPLUS
+COUNTER,VTODO,GEO,NONE,ZEROORONE
+COUNTER,VTODO,LASTMODIFIED,NONE,ZEROORONE
+COUNTER,VTODO,LOCATION,NONE,ZEROORONE
+COUNTER,VTODO,PERCENTCOMPLETE,NONE,ZEROORONE
+COUNTER,VTODO,RDATE,NONE,ZEROPLUS
+COUNTER,VTODO,RECURRENCEID,NONE,ZEROORONE,must_be_recurring
+COUNTER,VTODO,RELATEDTO,NONE,ZEROPLUS
+COUNTER,VTODO,REQUESTSTATUS,NONE,ZEROPLUS
+COUNTER,VTODO,RESOURCES,NONE,ZEROORONE
+COUNTER,VTODO,RRULE,NONE,ZEROORONE
+COUNTER,VTODO,SEQUENCE,NONE,ZEROORONE
+COUNTER,VTODO,STATUS,NONE,ZEROORONE,may_be_comp_need_process
+COUNTER,VTODO,URL,NONE,ZEROORONE
+COUNTER,VTODO,X,NONE,ZEROPLUS
+COUNTER,VTODO,NONE,VALARM,ZEROPLUS
+COUNTER,VTODO,NONE,VTIMEZONE,ZEROORONE
+COUNTER,VTODO,NONE,X,ZEROPLUS
+COUNTER,VTODO,NONE,VEVENT,ZERO
+COUNTER,VTODO,NONE,VFREEBUSY,ZERO
+DECLINECOUNTER,VTODO,NONE,NONE,ONE
+DECLINECOUNTER,VTODO,ATTENDEE,NONE,ONEPLUS
+DECLINECOUNTER,VTODO,DTSTAMP,NONE,ONE
+DECLINECOUNTER,VTODO,ORGANIZER,NONE,ONE
+DECLINECOUNTER,VTODO,SEQUENCE,NONE,ONE
+DECLINECOUNTER,VTODO,UID,NONE,ONE
+DECLINECOUNTER,VTODO,ATTACH,NONE,ZEROPLUS
+DECLINECOUNTER,VTODO,CATEGORIES,NONE,ZEROPLUS #Non-standard
+DECLINECOUNTER,VTODO,CLASS,NONE,ZEROORONE
+DECLINECOUNTER,VTODO,COMMENT,NONE,ZEROORONE
+DECLINECOUNTER,VTODO,CONTACT,NONE,ZEROPLUS
+DECLINECOUNTER,VTODO,CREATED,NONE,ZEROORONE
+DECLINECOUNTER,VTODO,DESCRIPTION,NONE,ZEROORONE
+DECLINECOUNTER,VTODO,DTSTART,NONE,ZEROORONE
+DECLINECOUNTER,VTODO,DUE,NONE,ZEROORONE
+DECLINECOUNTER,VTODO,DURATION,NONE,ZEROORONE
+DECLINECOUNTER,VTODO,EXDATE,NONE,ZEROPLUS
+DECLINECOUNTER,VTODO,EXRULE,NONE,ZEROPLUS
+DECLINECOUNTER,VTODO,GEO,NONE,ZEROORONE
+DECLINECOUNTER,VTODO,LASTMODIFIED,NONE,ZEROORONE
+DECLINECOUNTER,VTODO,LOCATION,NONE,ZEROORONE
+DECLINECOUNTER,VTODO,PERCENTCOMPLETE,NONE,ZEROORONE
+DECLINECOUNTER,VTODO,PRIORITY,NONE,ZEROORONE
+DECLINECOUNTER,VTODO,RDATE,NONE,ZEROPLUS
+DECLINECOUNTER,VTODO,RECURRENCEID,NONE,ZEROORONE,must_be_recurring
+DECLINECOUNTER,VTODO,RELATEDTO,NONE,ZEROPLUS
+DECLINECOUNTER,VTODO,REQUESTSTATUS,NONE,ZEROPLUS
+DECLINECOUNTER,VTODO,RESOURCES,NONE,ZEROORONE
+DECLINECOUNTER,VTODO,RRULE,NONE,ZEROPLUS
+DECLINECOUNTER,VTODO,STATUS,NONE,ZEROORONE
+DECLINECOUNTER,VTODO,URL,NONE,ZEROORONE
+DECLINECOUNTER,VTODO,X,NONE,ZEROPLUS
+DECLINECOUNTER,VTODO,NONE,VTIMEZONE,ZEROPLUS
+DECLINECOUNTER,VTODO,NONE,X,ZEROPLUS
+DECLINECOUNTER,VTODO,NONE,VALARM,ZERO
+DECLINECOUNTER,VTODO,NONE,VEVENT,ZERO
+DECLINECOUNTER,VTODO,NONE,VFREEBUSY,ZERO
+PUBLISH,VJOURNAL,NONE,NONE,ONEPLUS
+PUBLISH,VJOURNAL,DESCRIPTION,NONE,ONE
+PUBLISH,VJOURNAL,DTSTAMP,NONE,ONE
+PUBLISH,VJOURNAL,DTSTART,NONE,ONE
+PUBLISH,VJOURNAL,ORGANIZER,NONE,ONE
+PUBLISH,VJOURNAL,UID,NONE,ONE
+PUBLISH,VJOURNAL,ATTACH,NONE,ZEROPLUS
+PUBLISH,VJOURNAL,CATEGORIES,NONE,ZEROPLUS #Non-standard
+PUBLISH,VJOURNAL,CLASS,NONE,ZEROORONE
+PUBLISH,VJOURNAL,COMMENT,NONE,ZEROORONE
+PUBLISH,VJOURNAL,CONTACT,NONE,ZEROPLUS
+PUBLISH,VJOURNAL,CREATED,NONE,ZEROORONE
+PUBLISH,VJOURNAL,EXDATE,NONE,ZEROPLUS
+PUBLISH,VJOURNAL,EXRULE,NONE,ZEROPLUS
+PUBLISH,VJOURNAL,LASTMODIFIED,NONE,ZEROORONE
+PUBLISH,VJOURNAL,RDATE,NONE,ZEROPLUS
+PUBLISH,VJOURNAL,RECURRENCEID,NONE,ZEROORONE,must_be_recurring
+PUBLISH,VJOURNAL,RELATEDTO,NONE,ZEROPLUS
+PUBLISH,VJOURNAL,RRULE,NONE,ZEROPLUS
+PUBLISH,VJOURNAL,SEQUENCE,NONE,ZEROORONE
+PUBLISH,VJOURNAL,STATUS,NONE,ZEROORONE,may_be_draft_final_canceled
+PUBLISH,VJOURNAL,SUMMARY,NONE,ZEROORONE
+PUBLISH,VJOURNAL,URL,NONE,ZEROORONE
+PUBLISH,VJOURNAL,X,NONE,ZEROPLUS
+PUBLISH,VJOURNAL,ATTENDEE,NONE,ZERO
+PUBLISH,VJOURNAL,NONE,VALARM,ZEROPLUS
+PUBLISH,VJOURNAL,NONE,VTIMEZONE,ZEROPLUS
+PUBLISH,VJOURNAL,NONE,X,ZEROPLUS
+PUBLISH,VJOURNAL,NONE,VEVENT,ZERO
+PUBLISH,VJOURNAL,NONE,VFREEBUSY,ZERO
+PUBLISH,VJOURNAL,NONE,VTODO,ZERO
+ADD,VJOURNAL,NONE,NONE,ONE
+ADD,VJOURNAL,DESCRIPTION,NONE,ONE
+ADD,VJOURNAL,DTSTAMP,NONE,ONE
+ADD,VJOURNAL,DTSTART,NONE,ONE
+ADD,VJOURNAL,ORGANIZER,NONE,ONE
+ADD,VJOURNAL,SEQUENCE,NONE,ONE
+ADD,VJOURNAL,UID,NONE,ONE
+ADD,VJOURNAL,ATTACH,NONE,ZEROPLUS
+ADD,VJOURNAL,CATEGORIES,NONE,ZEROPLUS #Non-standard
+ADD,VJOURNAL,CLASS,NONE,ZEROORONE
+ADD,VJOURNAL,COMMENT,NONE,ZEROORONE
+ADD,VJOURNAL,CONTACT,NONE,ZEROPLUS
+ADD,VJOURNAL,CREATED,NONE,ZEROORONE
+ADD,VJOURNAL,EXDATE,NONE,ZEROPLUS
+ADD,VJOURNAL,EXRULE,NONE,ZEROPLUS
+ADD,VJOURNAL,LASTMODIFIED,NONE,ZEROORONE
+ADD,VJOURNAL,RDATE,NONE,ZEROPLUS
+ADD,VJOURNAL,RELATEDTO,NONE,ZEROPLUS
+ADD,VJOURNAL,RRULE,NONE,ZEROPLUS
+ADD,VJOURNAL,STATUS,NONE,ZEROORONE
+ADD,VJOURNAL,SUMMARY,NONE,ZEROORONE
+ADD,VJOURNAL,URL,NONE,ZEROORONE
+ADD,VJOURNAL,X,NONE,ZEROPLUS
+ADD,VJOURNAL,ATTENDEE,NONE,ZERO
+ADD,VJOURNAL,RECURRENCEID,NONE,ZERO
+ADD,VJOURNAL,NONE,VALARM,ZEROPLUS
+ADD,VJOURNAL,NONE,VTIMEZONE,ZEROORONE
+ADD,VJOURNAL,NONE,X,ZEROPLUS
+ADD,VJOURNAL,NONE,VEVENT,ZERO
+ADD,VJOURNAL,NONE,VFREEBUSY,ZERO
+ADD,VJOURNAL,NONE,VTODO,ZERO
+CANCEL,VJOURNAL,NONE,NONE,ONEPLUS
+CANCEL,VJOURNAL,DTSTAMP,NONE,ONE
+CANCEL,VJOURNAL,ORGANIZER,NONE,ONE
+CANCEL,VJOURNAL,SEQUENCE,NONE,ONE
+CANCEL,VJOURNAL,UID,NONE,ONE
+CANCEL,VJOURNAL,ATTACH,NONE,ZEROPLUS
+CANCEL,VJOURNAL,ATTENDEE,NONE,ZEROPLUS
+CANCEL,VJOURNAL,CATEGORIES,NONE,ZEROPLUS #Non-standard
+CANCEL,VJOURNAL,CLASS,NONE,ZEROORONE
+CANCEL,VJOURNAL,COMMENT,NONE,ZEROORONE
+CANCEL,VJOURNAL,CONTACT,NONE,ZEROPLUS
+CANCEL,VJOURNAL,CREATED,NONE,ZEROORONE
+CANCEL,VJOURNAL,DESCRIPTION,NONE,ZEROORONE
+CANCEL,VJOURNAL,DTSTART,NONE,ZEROORONE
+CANCEL,VJOURNAL,EXDATE,NONE,ZEROPLUS
+CANCEL,VJOURNAL,EXRULE,NONE,ZEROPLUS
+CANCEL,VJOURNAL,LASTMODIFIED,NONE,ZEROORONE
+CANCEL,VJOURNAL,RDATE,NONE,ZEROPLUS
+CANCEL,VJOURNAL,RECURRENCEID,NONE,ZEROORONE,must_be_recurring
+CANCEL,VJOURNAL,RELATEDTO,NONE,ZEROPLUS
+CANCEL,VJOURNAL,RRULE,NONE,ZEROPLUS
+CANCEL,VJOURNAL,STATUS,NONE,ZEROORONE,must_be_cancel_if_present
+CANCEL,VJOURNAL,SUMMARY,NONE,ZEROORONE
+CANCEL,VJOURNAL,URL,NONE,ZEROORONE
+CANCEL,VJOURNAL,X,NONE,ZEROPLUS
+CANCEL,VJOURNAL,REQUESTSTATUS,NONE,ZERO
+CANCEL,VJOURNAL,NONE,VTIMEZONE,ZEROPLUS
+CANCEL,VJOURNAL,NONE,X,ZEROPLUS
+CANCEL,VJOURNAL,NONE,VALARM,ZERO
+CANCEL,VJOURNAL,NONE,VEVENT,ZERO
+CANCEL,VJOURNAL,NONE,VFREEBUSY,ZERO
+CANCEL,VJOURNAL,NONE,VTODO,ZERO
+NONE,VCALENDAR,ACTION,NONE,ZERO
+NONE,VCALENDAR,ATTACH,NONE,ZERO
+NONE,VCALENDAR,ATTENDEE,NONE,ZERO
+NONE,VCALENDAR,CALSCALE,NONE,ZEROORONE
+NONE,VCALENDAR,CATEGORIES,NONE,ZERO
+NONE,VCALENDAR,CLASS,NONE,ZERO
+NONE,VCALENDAR,COMMENT,NONE,ZERO
+NONE,VCALENDAR,COMPLETED,NONE,ZERO
+NONE,VCALENDAR,CONTACT,NONE,ZERO
+NONE,VCALENDAR,CREATED,NONE,ZERO
+NONE,VCALENDAR,DESCRIPTION,NONE,ZERO
+NONE,VCALENDAR,DTEND,NONE,ZERO
+NONE,VCALENDAR,DTSTAMP,NONE,ZERO
+NONE,VCALENDAR,DTSTART,NONE,ZERO
+NONE,VCALENDAR,DUE,NONE,ZERO
+NONE,VCALENDAR,DURATION,NONE,ZERO
+NONE,VCALENDAR,EXDATE,NONE,ZERO
+NONE,VCALENDAR,EXRULE,NONE,ZERO
+NONE,VCALENDAR,FREEBUSY,NONE,ZERO
+NONE,VCALENDAR,GEO,NONE,ZERO
+NONE,VCALENDAR,LASTMODIFIED,NONE,ZERO
+NONE,VCALENDAR,LOCATION,NONE,ZERO
+NONE,VCALENDAR,METHOD,NONE,ZEROORONE
+NONE,VCALENDAR,ORGANIZER,NONE,ZERO
+NONE,VCALENDAR,PERCENTCOMPLETE,NONE,ZERO
+NONE,VCALENDAR,PRIORITY,NONE,ZERO
+NONE,VCALENDAR,PRODID,NONE,ONE
+NONE,VCALENDAR,RDATE,NONE,ZERO
+NONE,VCALENDAR,RECURRENCEID,NONE,ZERO
+NONE,VCALENDAR,RELATEDTO,NONE,ZERO
+NONE,VCALENDAR,REPEAT,NONE,ZERO
+NONE,VCALENDAR,REQUESTSTATUS,NONE,ZERO
+NONE,VCALENDAR,RESOURCES,NONE,ZERO
+NONE,VCALENDAR,RRULE,NONE,ZERO
+NONE,VCALENDAR,SEQUENCE,NONE,ZERO
+NONE,VCALENDAR,STATUS,NONE,ZERO
+NONE,VCALENDAR,SUMMARY,NONE,ZERO
+NONE,VCALENDAR,TRANSP,NONE,ZERO
+NONE,VCALENDAR,TRIGGER,NONE,ZERO
+NONE,VCALENDAR,TZID,NONE,ZERO
+NONE,VCALENDAR,TZNAME,NONE,ZERO
+NONE,VCALENDAR,TZOFFSETFROM,NONE,ZERO
+NONE,VCALENDAR,TZOFFSETTO,NONE,ZERO
+NONE,VCALENDAR,TZURL,NONE,ZERO
+NONE,VCALENDAR,UID,NONE,ZERO
+NONE,VCALENDAR,URL,NONE,ZERO
+NONE,VCALENDAR,VERSION,NONE,ONE
+NONE,VCALENDAR,X,NONE,ZEROPLUS
+NONE,VEVENT,ACTION,NONE,ZERO
+NONE,VEVENT,ATTACH,NONE,ZEROPLUS
+NONE,VEVENT,ATTENDEE,NONE,ZEROPLUS
+NONE,VEVENT,CALSCALE,NONE,ZERO
+NONE,VEVENT,CATEGORIES,NONE,ZEROPLUS
+NONE,VEVENT,CLASS,NONE,ZEROORONE
+NONE,VEVENT,COMMENT,NONE,ZEROPLUS
+NONE,VEVENT,COMPLETED,NONE,ZERO
+NONE,VEVENT,CONTACT,NONE,ZEROPLUS
+NONE,VEVENT,CREATED,NONE,ZEROORONE
+NONE,VEVENT,DESCRIPTION,NONE,ZEROORONE
+NONE,VEVENT,DTEND,NONE,ONEEXCLUSIVE,no_duration
+NONE,VEVENT,DTSTAMP,NONE,ZEROORONE
+NONE,VEVENT,DTSTART,NONE,ZEROORONE
+NONE,VEVENT,DUE,NONE,ZERO
+NONE,VEVENT,DURATION,NONE,ONEEXCLUSIVE,no_duration
+NONE,VEVENT,EXDATE,NONE,ZEROPLUS
+NONE,VEVENT,EXRULE,NONE,ZEROPLUS
+NONE,VEVENT,FREEBUSY,NONE,ZERO
+NONE,VEVENT,GEO,NONE,ZEROORONE
+NONE,VEVENT,LASTMODIFIED,NONE,ZEROORONE
+NONE,VEVENT,LOCATION,NONE,ZEROORONE
+NONE,VEVENT,METHOD,NONE,ZERO
+NONE,VEVENT,ORGANIZER,NONE,ZEROORONE
+NONE,VEVENT,PERCENTCOMPLETE,NONE,ZERO
+NONE,VEVENT,PRIORITY,NONE,ZEROORONE
+NONE,VEVENT,PRODID,NONE,ZERO
+NONE,VEVENT,RDATE,NONE,ZEROPLUS
+NONE,VEVENT,RECURRENCEID,NONE,ZEROORONE,must_be_recurring
+NONE,VEVENT,RELATEDTO,NONE,ZEROPLUS
+NONE,VEVENT,REPEAT,NONE,ZERO
+NONE,VEVENT,REQUESTSTATUS,NONE,ZEROPLUS
+NONE,VEVENT,RESOURCES,NONE,ZEROPLUS
+NONE,VEVENT,RRULE,NONE,ZEROPLUS
+NONE,VEVENT,SEQUENCE,NONE,ZEROORONE
+NONE,VEVENT,STATUS,NONE,ZEROORONE
+NONE,VEVENT,SUMMARY,NONE,ZEROORONE
+NONE,VEVENT,TRANSP,NONE,ZEROORONE
+NONE,VEVENT,TRIGGER,NONE,ZERO
+NONE,VEVENT,TZID,NONE,ZERO
+NONE,VEVENT,TZNAME,NONE,ZERO
+NONE,VEVENT,TZOFFSETFROM,NONE,ZERO
+NONE,VEVENT,TZOFFSETTO,NONE,ZERO
+NONE,VEVENT,TZURL,NONE,ZERO
+NONE,VEVENT,UID,NONE,ZEROORONE
+NONE,VEVENT,URL,NONE,ZEROORONE
+NONE,VEVENT,VERSION,NONE,ZERO
+NONE,VEVENT,X,NONE,ZEROPLUS
+NONE,VTODO,ACTION,NONE,ZERO
+NONE,VTODO,ATTACH,NONE,ZEROPLUS
+NONE,VTODO,ATTENDEE,NONE,ZEROPLUS
+NONE,VTODO,CALSCALE,NONE,ZERO
+NONE,VTODO,CATEGORIES,NONE,ZEROPLUS
+NONE,VTODO,CLASS,NONE,ZEROORONE
+NONE,VTODO,COMMENT,NONE,ZEROPLUS
+NONE,VTODO,COMPLETED,NONE,ZEROORONE
+NONE,VTODO,CONTACT,NONE,ZEROPLUS
+NONE,VTODO,CREATED,NONE,ZEROORONE
+NONE,VTODO,DESCRIPTION,NONE,ZEROORONE
+NONE,VTODO,DTEND,NONE,ZERO
+NONE,VTODO,DTSTAMP,NONE,ZEROORONE
+NONE,VTODO,DTSTART,NONE,ZEROORONE
+NONE,VTODO,DUE,NONE,ONEEXCLUSIVE
+NONE,VTODO,DURATION,NONE,ONEEXCLUSIVE
+NONE,VTODO,EXDATE,NONE,ZEROPLUS
+NONE,VTODO,EXRULE,NONE,ZEROPLUS
+NONE,VTODO,FREEBUSY,NONE,ZERO
+NONE,VTODO,GEO,NONE,ZEROORONE
+NONE,VTODO,LASTMODIFIED,NONE,ZEROORONE
+NONE,VTODO,LOCATION,NONE,ZEROORONE
+NONE,VTODO,METHOD,NONE,ZERO
+NONE,VTODO,ORGANIZER,NONE,ZEROORONE
+NONE,VTODO,PERCENTCOMPLETE,NONE,ZEROORONE
+NONE,VTODO,PRIORITY,NONE,ZEROORONE
+NONE,VTODO,PRODID,NONE,ZERO
+NONE,VTODO,RDATE,NONE,ZEROPLUS
+NONE,VTODO,RECURRENCEID,NONE,ZEROORONE,must_be_recurring
+NONE,VTODO,RELATEDTO,NONE,ZEROPLUS
+NONE,VTODO,REPEAT,NONE,ZERO
+NONE,VTODO,REQUESTSTATUS,NONE,ZEROPLUS
+NONE,VTODO,RESOURCES,NONE,ZEROPLUS
+NONE,VTODO,RRULE,NONE,ZEROPLUS
+NONE,VTODO,SEQUENCE,NONE,ZEROORONE
+NONE,VTODO,STATUS,NONE,ZEROORONE
+NONE,VTODO,SUMMARY,NONE,ZEROORONE
+NONE,VTODO,TRANSP,NONE,ZERO
+NONE,VTODO,TRIGGER,NONE,ZERO
+NONE,VTODO,TZID,NONE,ZERO
+NONE,VTODO,TZNAME,NONE,ZERO
+NONE,VTODO,TZOFFSETFROM,NONE,ZERO
+NONE,VTODO,TZOFFSETTO,NONE,ZERO
+NONE,VTODO,TZURL,NONE,ZERO
+NONE,VTODO,UID,NONE,ZEROORONE
+NONE,VTODO,URL,NONE,ZEROORONE
+NONE,VTODO,VERSION,NONE,ZERO
+NONE,VTODO,X,NONE,ZEROPLUS
+NONE,VJOURNAL,ACTION,NONE,ZERO
+NONE,VJOURNAL,ATTACH,NONE,ZEROPLUS
+NONE,VJOURNAL,ATTENDEE,NONE,ZEROPLUS
+NONE,VJOURNAL,CALSCALE,NONE,ZERO
+NONE,VJOURNAL,CATEGORIES,NONE,ZEROPLUS
+NONE,VJOURNAL,CLASS,NONE,ZEROORONE
+NONE,VJOURNAL,COMMENT,NONE,ZEROPLUS
+NONE,VJOURNAL,COMPLETED,NONE,ZERO
+NONE,VJOURNAL,CONTACT,NONE,ZEROPLUS
+NONE,VJOURNAL,CREATED,NONE,ZEROORONE
+NONE,VJOURNAL,DESCRIPTION,NONE,ZEROORONE
+NONE,VJOURNAL,DTEND,NONE,ZERO
+NONE,VJOURNAL,DTSTAMP,NONE,ZEROORONE
+NONE,VJOURNAL,DTSTART,NONE,ZEROORONE
+NONE,VJOURNAL,DUE,NONE,ONEEXCLUSIVE
+NONE,VJOURNAL,DURATION,NONE,ONEEXCLUSIVE
+NONE,VJOURNAL,EXDATE,NONE,ZEROPLUS
+NONE,VJOURNAL,EXRULE,NONE,ZEROPLUS
+NONE,VJOURNAL,FREEBUSY,NONE,ZERO
+NONE,VJOURNAL,GEO,NONE,ZERO
+NONE,VJOURNAL,LASTMODIFIED,NONE,ZEROORONE
+NONE,VJOURNAL,LOCATION,NONE,ZERO
+NONE,VJOURNAL,METHOD,NONE,ZERO
+NONE,VJOURNAL,ORGANIZER,NONE,ZEROORONE
+NONE,VJOURNAL,PERCENTCOMPLETE,NONE,ZERO
+NONE,VJOURNAL,PRIORITY,NONE,ZERO
+NONE,VJOURNAL,PRODID,NONE,ZERO
+NONE,VJOURNAL,RDATE,NONE,ZEROPLUS
+NONE,VJOURNAL,RECURRENCEID,NONE,ZEROORONE,must_be_recurring
+NONE,VJOURNAL,RELATEDTO,NONE,ZEROPLUS
+NONE,VJOURNAL,REPEAT,NONE,ZERO
+NONE,VJOURNAL,REQUESTSTATUS,NONE,ZEROPLUS
+NONE,VJOURNAL,RESOURCES,NONE,ZERO
+NONE,VJOURNAL,RRULE,NONE,ZEROPLUS
+NONE,VJOURNAL,SEQUENCE,NONE,ZEROORONE
+NONE,VJOURNAL,STATUS,NONE,ZEROORONE
+NONE,VJOURNAL,SUMMARY,NONE,ZEROORONE
+NONE,VJOURNAL,TRANSP,NONE,ZERO
+NONE,VJOURNAL,TRIGGER,NONE,ZERO
+NONE,VJOURNAL,TZID,NONE,ZERO
+NONE,VJOURNAL,TZNAME,NONE,ZERO
+NONE,VJOURNAL,TZOFFSETFROM,NONE,ZERO
+NONE,VJOURNAL,TZOFFSETTO,NONE,ZERO
+NONE,VJOURNAL,TZURL,NONE,ZERO
+NONE,VJOURNAL,UID,NONE,ZEROORONE
+NONE,VJOURNAL,URL,NONE,ZEROORONE
+NONE,VJOURNAL,VERSION,NONE,ZERO
+NONE,VJOURNAL,X,NONE,ZEROPLUS
+NONE,VFREEBUSY,ACTION,NONE,ZERO
+NONE,VFREEBUSY,ATTACH,NONE,ZERO
+NONE,VFREEBUSY,ATTENDEE,NONE,ZEROPLUS
+NONE,VFREEBUSY,CALSCALE,NONE,ZERO
+NONE,VFREEBUSY,CATEGORIES,NONE,ZERO
+NONE,VFREEBUSY,CLASS,NONE,ZERO
+NONE,VFREEBUSY,COMMENT,NONE,ZEROPLUS
+NONE,VFREEBUSY,COMPLETED,NONE,ZERO
+NONE,VFREEBUSY,CONTACT,NONE,ZEROORONE
+NONE,VFREEBUSY,CREATED,NONE,ZERO
+NONE,VFREEBUSY,DESCRIPTION,NONE,ZERO
+NONE,VFREEBUSY,DTEND,NONE,ZEROORONE
+NONE,VFREEBUSY,DTSTAMP,NONE,ZERO
+NONE,VFREEBUSY,DTSTART,NONE,ZEROORONE
+NONE,VFREEBUSY,DUE,NONE,ZERO
+NONE,VFREEBUSY,DURATION,NONE,ZEROORONE
+NONE,VFREEBUSY,EXDATE,NONE,ZERO
+NONE,VFREEBUSY,EXRULE,NONE,ZERO
+NONE,VFREEBUSY,FREEBUSY,NONE,ZEROPLUS
+NONE,VFREEBUSY,GEO,NONE,ZERO
+NONE,VFREEBUSY,LASTMODIFIED,NONE,ZERO
+NONE,VFREEBUSY,LOCATION,NONE,ZERO
+NONE,VFREEBUSY,METHOD,NONE,ZERO
+NONE,VFREEBUSY,ORGANIZER,NONE,ZEROORONE
+NONE,VFREEBUSY,PERCENTCOMPLETE,NONE,ZERO
+NONE,VFREEBUSY,PRIORITY,NONE,ZERO
+NONE,VFREEBUSY,PRODID,NONE,ZERO
+NONE,VFREEBUSY,RDATE,NONE,ZERO
+NONE,VFREEBUSY,RECURRENCEID,NONE,ZERO
+NONE,VFREEBUSY,RELATEDTO,NONE,ZERO
+NONE,VFREEBUSY,REPEAT,NONE,ZERO
+NONE,VFREEBUSY,REQUESTSTATUS,NONE,ZEROPLUS
+NONE,VFREEBUSY,RESOURCES,NONE,ZERO
+NONE,VFREEBUSY,RRULE,NONE,ZERO
+NONE,VFREEBUSY,SEQUENCE,NONE,ZERO
+NONE,VFREEBUSY,STATUS,NONE,ZERO
+NONE,VFREEBUSY,SUMMARY,NONE,ZERO
+NONE,VFREEBUSY,TRANSP,NONE,ZERO
+NONE,VFREEBUSY,TRIGGER,NONE,ZERO
+NONE,VFREEBUSY,TZID,NONE,ZERO
+NONE,VFREEBUSY,TZNAME,NONE,ZERO
+NONE,VFREEBUSY,TZOFFSETFROM,NONE,ZERO
+NONE,VFREEBUSY,TZOFFSETTO,NONE,ZERO
+NONE,VFREEBUSY,TZURL,NONE,ZERO
+NONE,VFREEBUSY,UID,NONE,ZEROORONE
+NONE,VFREEBUSY,URL,NONE,ZEROORONE
+NONE,VFREEBUSY,VERSION,NONE,ZERO
+NONE,VFREEBUSY,X,NONE,ZEROPLUS
+NONE,VTIMEZONE,ACTION,NONE,ZERO
+NONE,VTIMEZONE,ATTACH,NONE,ZERO
+NONE,VTIMEZONE,ATTENDEE,NONE,ZERO
+NONE,VTIMEZONE,CALSCALE,NONE,ZERO
+NONE,VTIMEZONE,CATEGORIES,NONE,ZERO
+NONE,VTIMEZONE,CLASS,NONE,ZERO
+NONE,VTIMEZONE,COMMENT,NONE,ZERO
+NONE,VTIMEZONE,COMPLETED,NONE,ZERO
+NONE,VTIMEZONE,CONTACT,NONE,ZERO
+NONE,VTIMEZONE,CREATED,NONE,ZERO
+NONE,VTIMEZONE,DESCRIPTION,NONE,ZERO
+NONE,VTIMEZONE,DTEND,NONE,ZERO
+NONE,VTIMEZONE,DTSTAMP,NONE,ZERO
+NONE,VTIMEZONE,DTSTART,NONE,ZERO
+NONE,VTIMEZONE,DUE,NONE,ZERO
+NONE,VTIMEZONE,DURATION,NONE,ZERO
+NONE,VTIMEZONE,EXDATE,NONE,ZERO
+NONE,VTIMEZONE,EXRULE,NONE,ZERO
+NONE,VTIMEZONE,FREEBUSY,NONE,ZERO
+NONE,VTIMEZONE,GEO,NONE,ZERO
+NONE,VTIMEZONE,LASTMODIFIED,NONE,ZEROORONE
+NONE,VTIMEZONE,LOCATION,NONE,ZERO
+NONE,VTIMEZONE,METHOD,NONE,ZERO
+NONE,VTIMEZONE,ORGANIZER,NONE,ZERO
+NONE,VTIMEZONE,PERCENTCOMPLETE,NONE,ZERO
+NONE,VTIMEZONE,PRIORITY,NONE,ZERO
+NONE,VTIMEZONE,PRODID,NONE,ZERO
+NONE,VTIMEZONE,RDATE,NONE,ZERO
+NONE,VTIMEZONE,RECURRENCEID,NONE,ZERO
+NONE,VTIMEZONE,RELATEDTO,NONE,ZERO
+NONE,VTIMEZONE,REPEAT,NONE,ZERO
+NONE,VTIMEZONE,REQUESTSTATUS,NONE,ZERO
+NONE,VTIMEZONE,RESOURCES,NONE,ZERO
+NONE,VTIMEZONE,RRULE,NONE,ZERO
+NONE,VTIMEZONE,SEQUENCE,NONE,ZERO
+NONE,VTIMEZONE,STATUS,NONE,ZERO
+NONE,VTIMEZONE,SUMMARY,NONE,ZERO
+NONE,VTIMEZONE,TRANSP,NONE,ZERO
+NONE,VTIMEZONE,TRIGGER,NONE,ZERO
+NONE,VTIMEZONE,TZID,NONE,ONE
+NONE,VTIMEZONE,TZNAME,NONE,ZERO
+NONE,VTIMEZONE,TZOFFSETFROM,NONE,ZERO
+NONE,VTIMEZONE,TZOFFSETTO,NONE,ZERO
+NONE,VTIMEZONE,TZURL,NONE,ZEROPLUS
+NONE,VTIMEZONE,UID,NONE,ZERO
+NONE,VTIMEZONE,URL,NONE,ZERO
+NONE,VTIMEZONE,VERSION,NONE,ZERO
+NONE,VTIMEZONE,X,NONE,ZEROORONE
+NONE,XSTANDARD,ACTION,NONE,ZERO
+NONE,XSTANDARD,ATTACH,NONE,ZERO
+NONE,XSTANDARD,ATTENDEE,NONE,ZERO
+NONE,XSTANDARD,CALSCALE,NONE,ZERO
+NONE,XSTANDARD,CATEGORIES,NONE,ZERO
+NONE,XSTANDARD,CLASS,NONE,ZERO
+NONE,XSTANDARD,COMMENT,NONE,ZEROPLUS
+NONE,XSTANDARD,COMPLETED,NONE,ZERO
+NONE,XSTANDARD,CONTACT,NONE,ZERO
+NONE,XSTANDARD,CREATED,NONE,ZERO
+NONE,XSTANDARD,DESCRIPTION,NONE,ZERO
+NONE,XSTANDARD,DTEND,NONE,ZERO
+NONE,XSTANDARD,DTSTAMP,NONE,ZERO
+NONE,XSTANDARD,DTSTART,NONE,ONE
+NONE,XSTANDARD,DUE,NONE,ZERO
+NONE,XSTANDARD,DURATION,NONE,ZERO
+NONE,XSTANDARD,EXDATE,NONE,ZERO
+NONE,XSTANDARD,EXRULE,NONE,ZERO
+NONE,XSTANDARD,FREEBUSY,NONE,ZERO
+NONE,XSTANDARD,GEO,NONE,ZERO
+NONE,XSTANDARD,LASTMODIFIED,NONE,ZERO
+NONE,XSTANDARD,LOCATION,NONE,ZERO
+NONE,XSTANDARD,METHOD,NONE,ZERO
+NONE,XSTANDARD,ORGANIZER,NONE,ZERO
+NONE,XSTANDARD,PERCENTCOMPLETE,NONE,ZERO
+NONE,XSTANDARD,PRIORITY,NONE,ZERO
+NONE,XSTANDARD,PRODID,NONE,ZERO
+NONE,XSTANDARD,RDATE,NONE,ZEROPLUS
+NONE,XSTANDARD,RECURRENCEID,NONE,ZERO
+NONE,XSTANDARD,RELATEDTO,NONE,ZERO
+NONE,XSTANDARD,REPEAT,NONE,ZERO
+NONE,XSTANDARD,REQUESTSTATUS,NONE,ZERO
+NONE,XSTANDARD,RESOURCES,NONE,ZERO
+NONE,XSTANDARD,RRULE,NONE,ZEROPLUS
+NONE,XSTANDARD,SEQUENCE,NONE,ZERO
+NONE,XSTANDARD,STATUS,NONE,ZERO
+NONE,XSTANDARD,SUMMARY,NONE,ZERO
+NONE,XSTANDARD,TRANSP,NONE,ZERO
+NONE,XSTANDARD,TRIGGER,NONE,ZERO
+NONE,XSTANDARD,TZID,NONE,ZERO
+NONE,XSTANDARD,TZNAME,NONE,ZEROPLUS
+NONE,XSTANDARD,TZOFFSETFROM,NONE,ONE
+NONE,XSTANDARD,TZOFFSETTO,NONE,ONE
+NONE,XSTANDARD,TZURL,NONE,ZERO
+NONE,XSTANDARD,UID,NONE,ZERO
+NONE,XSTANDARD,URL,NONE,ZERO
+NONE,XSTANDARD,VERSION,NONE,ZERO
+NONE,XSTANDARD,X,NONE,ZEROPLUS
+NONE,XDAYLIGHT,ACTION,NONE,ZERO
+NONE,XDAYLIGHT,ATTACH,NONE,ZERO
+NONE,XDAYLIGHT,ATTENDEE,NONE,ZERO
+NONE,XDAYLIGHT,CALSCALE,NONE,ZERO
+NONE,XDAYLIGHT,CATEGORIES,NONE,ZERO
+NONE,XDAYLIGHT,CLASS,NONE,ZERO
+NONE,XDAYLIGHT,COMMENT,NONE,ZEROPLUS
+NONE,XDAYLIGHT,COMPLETED,NONE,ZERO
+NONE,XDAYLIGHT,CONTACT,NONE,ZERO
+NONE,XDAYLIGHT,CREATED,NONE,ZERO
+NONE,XDAYLIGHT,DESCRIPTION,NONE,ZERO
+NONE,XDAYLIGHT,DTEND,NONE,ZERO
+NONE,XDAYLIGHT,DTSTAMP,NONE,ZERO
+NONE,XDAYLIGHT,DTSTART,NONE,ONE
+NONE,XDAYLIGHT,DUE,NONE,ZERO
+NONE,XDAYLIGHT,DURATION,NONE,ZERO
+NONE,XDAYLIGHT,EXDATE,NONE,ZERO
+NONE,XDAYLIGHT,EXRULE,NONE,ZERO
+NONE,XDAYLIGHT,FREEBUSY,NONE,ZERO
+NONE,XDAYLIGHT,GEO,NONE,ZERO
+NONE,XDAYLIGHT,LASTMODIFIED,NONE,ZERO
+NONE,XDAYLIGHT,LOCATION,NONE,ZERO
+NONE,XDAYLIGHT,METHOD,NONE,ZERO
+NONE,XDAYLIGHT,ORGANIZER,NONE,ZERO
+NONE,XDAYLIGHT,PERCENTCOMPLETE,NONE,ZERO
+NONE,XDAYLIGHT,PRIORITY,NONE,ZERO
+NONE,XDAYLIGHT,PRODID,NONE,ZERO
+NONE,XDAYLIGHT,RDATE,NONE,ZEROPLUS
+NONE,XDAYLIGHT,RECURRENCEID,NONE,ZERO
+NONE,XDAYLIGHT,RELATEDTO,NONE,ZERO
+NONE,XDAYLIGHT,REPEAT,NONE,ZERO
+NONE,XDAYLIGHT,REQUESTSTATUS,NONE,ZERO
+NONE,XDAYLIGHT,RESOURCES,NONE,ZERO
+NONE,XDAYLIGHT,RRULE,NONE,ZEROPLUS
+NONE,XDAYLIGHT,SEQUENCE,NONE,ZERO
+NONE,XDAYLIGHT,STATUS,NONE,ZERO
+NONE,XDAYLIGHT,SUMMARY,NONE,ZERO
+NONE,XDAYLIGHT,TRANSP,NONE,ZERO
+NONE,XDAYLIGHT,TRIGGER,NONE,ZERO
+NONE,XDAYLIGHT,TZID,NONE,ZERO
+NONE,XDAYLIGHT,TZNAME,NONE,ZEROPLUS
+NONE,XDAYLIGHT,TZOFFSETFROM,NONE,ONE
+NONE,XDAYLIGHT,TZOFFSETTO,NONE,ONE
+NONE,XDAYLIGHT,TZURL,NONE,ZERO
+NONE,XDAYLIGHT,UID,NONE,ZERO
+NONE,XDAYLIGHT,URL,NONE,ZERO
+NONE,XDAYLIGHT,VERSION,NONE,ZERO
+NONE,XDAYLIGHT,X,NONE,ZEROPLUS
+NONE,XAUDIOALARM,ACTION,NONE,ONE
+NONE,XAUDIOALARM,ATTACH,NONE,ZEROORONE
+NONE,XAUDIOALARM,ATTENDEE,NONE,ZERO
+NONE,XAUDIOALARM,CALSCALE,NONE,ZERO
+NONE,XAUDIOALARM,CATEGORIES,NONE,ZERO
+NONE,XAUDIOALARM,CLASS,NONE,ZERO
+NONE,XAUDIOALARM,COMMENT,NONE,ZERO
+NONE,XAUDIOALARM,COMPLETED,NONE,ZERO
+NONE,XAUDIOALARM,CONTACT,NONE,ZERO
+NONE,XAUDIOALARM,CREATED,NONE,ZERO
+NONE,XAUDIOALARM,DESCRIPTION,NONE,ZERO
+NONE,XAUDIOALARM,DTEND,NONE,ZERO
+NONE,XAUDIOALARM,DTSTAMP,NONE,ZERO
+NONE,XAUDIOALARM,DTSTART,NONE,ZERO
+NONE,XAUDIOALARM,DUE,NONE,ZERO
+NONE,XAUDIOALARM,DURATION,NONE,ONEMUTUAL,must_have_repeat
+NONE,XAUDIOALARM,REPEAT,NONE,ONEMUTUAL,must_have_duration
+NONE,XAUDIOALARM,EXDATE,NONE,ZERO
+NONE,XAUDIOALARM,EXRULE,NONE,ZERO
+NONE,XAUDIOALARM,FREEBUSY,NONE,ZERO
+NONE,XAUDIOALARM,GEO,NONE,ZERO
+NONE,XAUDIOALARM,LASTMODIFIED,NONE,ZERO
+NONE,XAUDIOALARM,LOCATION,NONE,ZERO
+NONE,XAUDIOALARM,METHOD,NONE,ZERO
+NONE,XAUDIOALARM,ORGANIZER,NONE,ZERO
+NONE,XAUDIOALARM,PERCENTCOMPLETE,NONE,ZERO
+NONE,XAUDIOALARM,PRIORITY,NONE,ZERO
+NONE,XAUDIOALARM,PRODID,NONE,ZERO
+NONE,XAUDIOALARM,RDATE,NONE,ZERO
+NONE,XAUDIOALARM,RECURRENCEID,NONE,ZERO
+NONE,XAUDIOALARM,RELATEDTO,NONE,ZERO
+NONE,XAUDIOALARM,REQUESTSTATUS,NONE,ZERO
+NONE,XAUDIOALARM,RESOURCES,NONE,ZERO
+NONE,XAUDIOALARM,RRULE,NONE,ZERO
+NONE,XAUDIOALARM,SEQUENCE,NONE,ZERO
+NONE,XAUDIOALARM,STATUS,NONE,ZERO
+NONE,XAUDIOALARM,SUMMARY,NONE,ZERO
+NONE,XAUDIOALARM,TRANSP,NONE,ZERO
+NONE,XAUDIOALARM,TRIGGER,NONE,ONE
+NONE,XAUDIOALARM,TZID,NONE,ZERO
+NONE,XAUDIOALARM,TZNAME,NONE,ZERO
+NONE,XAUDIOALARM,TZOFFSETFROM,NONE,ZERO
+NONE,XAUDIOALARM,TZOFFSETTO,NONE,ZERO
+NONE,XAUDIOALARM,TZURL,NONE,ZERO
+NONE,XAUDIOALARM,UID,NONE,ZERO
+NONE,XAUDIOALARM,URL,NONE,ZERO
+NONE,XAUDIOALARM,VERSION,NONE,ZERO
+NONE,XAUDIOALARM,X,NONE,ZEROPLUS
+NONE,XDISPLAYALARM,ACTION,NONE,ONE
+NONE,XDISPLAYALARM,ATTACH,NONE,ZERO
+NONE,XDISPLAYALARM,ATTENDEE,NONE,ZERO
+NONE,XDISPLAYALARM,CALSCALE,NONE,ZERO
+NONE,XDISPLAYALARM,CATEGORIES,NONE,ZERO
+NONE,XDISPLAYALARM,CLASS,NONE,ZERO
+NONE,XDISPLAYALARM,COMMENT,NONE,ZERO
+NONE,XDISPLAYALARM,COMPLETED,NONE,ZERO
+NONE,XDISPLAYALARM,CONTACT,NONE,ZERO
+NONE,XDISPLAYALARM,CREATED,NONE,ZERO
+NONE,XDISPLAYALARM,DESCRIPTION,NONE,ONE
+NONE,XDISPLAYALARM,DTEND,NONE,ZERO
+NONE,XDISPLAYALARM,DTSTAMP,NONE,ZERO
+NONE,XDISPLAYALARM,DTSTART,NONE,ZERO
+NONE,XDISPLAYALARM,DUE,NONE,ZERO
+NONE,XDISPLAYALARM,DURATION,NONE,ONEMUTUAL,must_have_repeat
+NONE,XDISPLAYALARM,REPEAT,NONE,ONEMUTUAL,must_have_duration
+NONE,XDISPLAYALARM,EXDATE,NONE,ZERO
+NONE,XDISPLAYALARM,EXRULE,NONE,ZERO
+NONE,XDISPLAYALARM,FREEBUSY,NONE,ZERO
+NONE,XDISPLAYALARM,GEO,NONE,ZERO
+NONE,XDISPLAYALARM,LASTMODIFIED,NONE,ZERO
+NONE,XDISPLAYALARM,LOCATION,NONE,ZERO
+NONE,XDISPLAYALARM,METHOD,NONE,ZERO
+NONE,XDISPLAYALARM,ORGANIZER,NONE,ZERO
+NONE,XDISPLAYALARM,PERCENTCOMPLETE,NONE,ZERO
+NONE,XDISPLAYALARM,PRIORITY,NONE,ZERO
+NONE,XDISPLAYALARM,PRODID,NONE,ZERO
+NONE,XDISPLAYALARM,RDATE,NONE,ZERO
+NONE,XDISPLAYALARM,RECURRENCEID,NONE,ZERO
+NONE,XDISPLAYALARM,RELATEDTO,NONE,ZERO
+NONE,XDISPLAYALARM,REQUESTSTATUS,NONE,ZERO
+NONE,XDISPLAYALARM,RESOURCES,NONE,ZERO
+NONE,XDISPLAYALARM,RRULE,NONE,ZERO
+NONE,XDISPLAYALARM,SEQUENCE,NONE,ZERO
+NONE,XDISPLAYALARM,STATUS,NONE,ZERO
+NONE,XDISPLAYALARM,SUMMARY,NONE,ZERO
+NONE,XDISPLAYALARM,TRANSP,NONE,ZERO
+NONE,XDISPLAYALARM,TRIGGER,NONE,ONE
+NONE,XDISPLAYALARM,TZID,NONE,ZERO
+NONE,XDISPLAYALARM,TZNAME,NONE,ZERO
+NONE,XDISPLAYALARM,TZOFFSETFROM,NONE,ZERO
+NONE,XDISPLAYALARM,TZOFFSETTO,NONE,ZERO
+NONE,XDISPLAYALARM,TZURL,NONE,ZERO
+NONE,XDISPLAYALARM,UID,NONE,ZERO
+NONE,XDISPLAYALARM,URL,NONE,ZERO
+NONE,XDISPLAYALARM,VERSION,NONE,ZERO
+NONE,XDISPLAYALARM,X,NONE,ZEROPLUS
+NONE,XEMAILALARM,ACTION,NONE,ONE
+NONE,XEMAILALARM,ATTACH,NONE,ZEROPLUS
+NONE,XEMAILALARM,ATTENDEE,NONE,ONEPLUS
+NONE,XEMAILALARM,CALSCALE,NONE,ZERO
+NONE,XEMAILALARM,CATEGORIES,NONE,ZERO
+NONE,XEMAILALARM,CLASS,NONE,ZERO
+NONE,XEMAILALARM,COMMENT,NONE,ZERO
+NONE,XEMAILALARM,COMPLETED,NONE,ZERO
+NONE,XEMAILALARM,CONTACT,NONE,ZERO
+NONE,XEMAILALARM,CREATED,NONE,ZERO
+NONE,XEMAILALARM,DESCRIPTION,NONE,ONE
+NONE,XEMAILALARM,DTEND,NONE,ZERO
+NONE,XEMAILALARM,DTSTAMP,NONE,ZERO
+NONE,XEMAILALARM,DTSTART,NONE,ZERO
+NONE,XEMAILALARM,DUE,NONE,ZERO
+NONE,XEMAILALARM,DURATION,NONE,ONEMUTUAL,must_have_repeat
+NONE,XEMAILALARM,REPEAT,NONE,ONEMUTUAL,must_have_duration
+NONE,XEMAILALARM,EXDATE,NONE,ZERO
+NONE,XEMAILALARM,EXRULE,NONE,ZERO
+NONE,XEMAILALARM,FREEBUSY,NONE,ZERO
+NONE,XEMAILALARM,GEO,NONE,ZERO
+NONE,XEMAILALARM,LASTMODIFIED,NONE,ZERO
+NONE,XEMAILALARM,LOCATION,NONE,ZERO
+NONE,XEMAILALARM,METHOD,NONE,ZERO
+NONE,XEMAILALARM,ORGANIZER,NONE,ZERO
+NONE,XEMAILALARM,PERCENTCOMPLETE,NONE,ZERO
+NONE,XEMAILALARM,PRIORITY,NONE,ZERO
+NONE,XEMAILALARM,PRODID,NONE,ZERO
+NONE,XEMAILALARM,RDATE,NONE,ZERO
+NONE,XEMAILALARM,RECURRENCEID,NONE,ZERO
+NONE,XEMAILALARM,RELATEDTO,NONE,ZERO
+NONE,XEMAILALARM,REQUESTSTATUS,NONE,ZERO
+NONE,XEMAILALARM,RESOURCES,NONE,ZERO
+NONE,XEMAILALARM,RRULE,NONE,ZERO
+NONE,XEMAILALARM,SEQUENCE,NONE,ZERO
+NONE,XEMAILALARM,STATUS,NONE,ZERO
+NONE,XEMAILALARM,SUMMARY,NONE,ONE
+NONE,XEMAILALARM,TRANSP,NONE,ZERO
+NONE,XEMAILALARM,TRIGGER,NONE,ONE
+NONE,XEMAILALARM,TZID,NONE,ZERO
+NONE,XEMAILALARM,TZNAME,NONE,ZERO
+NONE,XEMAILALARM,TZOFFSETFROM,NONE,ZERO
+NONE,XEMAILALARM,TZOFFSETTO,NONE,ZERO
+NONE,XEMAILALARM,TZURL,NONE,ZERO
+NONE,XEMAILALARM,UID,NONE,ZERO
+NONE,XEMAILALARM,URL,NONE,ZERO
+NONE,XEMAILALARM,VERSION,NONE,ZERO
+NONE,XEMAILALARM,X,NONE,ZEROPLUS
+NONE,XPROCEDUREALARM,ACTION,NONE,ONE
+NONE,XPROCEDUREALARM,ATTACH,NONE,ZEROORONE
+NONE,XPROCEDUREALARM,ATTENDEE,NONE,ZERO
+NONE,XPROCEDUREALARM,CALSCALE,NONE,ZERO
+NONE,XPROCEDUREALARM,CATEGORIES,NONE,ZERO
+NONE,XPROCEDUREALARM,CLASS,NONE,ZERO
+NONE,XPROCEDUREALARM,COMMENT,NONE,ZERO
+NONE,XPROCEDUREALARM,COMPLETED,NONE,ZERO
+NONE,XPROCEDUREALARM,CONTACT,NONE,ZERO
+NONE,XPROCEDUREALARM,CREATED,NONE,ZERO
+NONE,XPROCEDUREALARM,DESCRIPTION,NONE,ZEROORONE
+NONE,XPROCEDUREALARM,DTEND,NONE,ZERO
+NONE,XPROCEDUREALARM,DTSTAMP,NONE,ZERO
+NONE,XPROCEDUREALARM,DTSTART,NONE,ZERO
+NONE,XPROCEDUREALARM,DUE,NONE,ZERO
+NONE,XPROCEDUREALARM,DURATION,NONE,ONEMUTUAL,must_have_repeat
+NONE,XPROCEDUREALARM,REPEAT,NONE,ONEMUTUAL,must_have_duration
+NONE,XPROCEDUREALARM,EXDATE,NONE,ZERO
+NONE,XPROCEDUREALARM,EXRULE,NONE,ZERO
+NONE,XPROCEDUREALARM,FREEBUSY,NONE,ZERO
+NONE,XPROCEDUREALARM,GEO,NONE,ZERO
+NONE,XPROCEDUREALARM,LASTMODIFIED,NONE,ZERO
+NONE,XPROCEDUREALARM,LOCATION,NONE,ZERO
+NONE,XPROCEDUREALARM,METHOD,NONE,ZERO
+NONE,XPROCEDUREALARM,ORGANIZER,NONE,ZERO
+NONE,XPROCEDUREALARM,PERCENTCOMPLETE,NONE,ZERO
+NONE,XPROCEDUREALARM,PRIORITY,NONE,ZERO
+NONE,XPROCEDUREALARM,PRODID,NONE,ZERO
+NONE,XPROCEDUREALARM,RDATE,NONE,ZERO
+NONE,XPROCEDUREALARM,RECURRENCEID,NONE,ZERO
+NONE,XPROCEDUREALARM,RELATEDTO,NONE,ZERO
+NONE,XPROCEDUREALARM,REQUESTSTATUS,NONE,ZERO
+NONE,XPROCEDUREALARM,RESOURCES,NONE,ZERO
+NONE,XPROCEDUREALARM,RRULE,NONE,ZERO
+NONE,XPROCEDUREALARM,SEQUENCE,NONE,ZERO
+NONE,XPROCEDUREALARM,STATUS,NONE,ZERO
+NONE,XPROCEDUREALARM,SUMMARY,NONE,ZERO
+NONE,XPROCEDUREALARM,TRANSP,NONE,ZERO
+NONE,XPROCEDUREALARM,TRIGGER,NONE,ONE
+NONE,XPROCEDUREALARM,TZID,NONE,ZERO
+NONE,XPROCEDUREALARM,TZNAME,NONE,ZERO
+NONE,XPROCEDUREALARM,TZOFFSETFROM,NONE,ZERO
+NONE,XPROCEDUREALARM,TZOFFSETTO,NONE,ZERO
+NONE,XPROCEDUREALARM,TZURL,NONE,ZERO
+NONE,XPROCEDUREALARM,UID,NONE,ZERO
+NONE,XPROCEDUREALARM,URL,NONE,ZERO
+NONE,XPROCEDUREALARM,VERSION,NONE,ZERO
+NONE,XPROCEDUREALARM,X,NONE,ZEROPLUS
diff --git a/src/plugins/vcalendar/libical/design-data/status.txt b/src/plugins/vcalendar/libical/design-data/status.txt
new file mode 100644 (file)
index 0000000..9e7bbf8
--- /dev/null
@@ -0,0 +1,56 @@
+2.0 STATOK Operation was successfully performed.
+2.0.1 STARTSENDATA Start ICAL input; end with <CRLF>.<CRLF>
+2.0.11 OKDATAFOLLOWS The request was processed successfully. Reply data follows on the next line and terminates with <CRLF>.<CRLF>
+2.0.2 REPLYPENDING A timeout has occurred. The server is still working on the reply. Use CONTINUE to continue waiting for the reply or ABORT to terminate the command.
+2.0.3 ABORTED The  command currently underway was successsfully aborted.
+2.0.4 WILLATTEMPT The specified Calendar is not here but an attempt will be made to deliver the request or reply to the Calendar anyway.
+2.0.5 TRUSTEDWILLQUEUE The request or reply will be queued and delivered to the target calendar when its iRIP server contacts this server and issues the SWITCH command. 
+2.0.6 WILLATTEMPT The specified Calendar is not here but an attempt will be made to deliver the request or reply to the Calendar anyway. 
+2.0.7 QUEUED The message has been queued for delivery.
+2.0.8 QUEUEEMPTY There are no more queued messages.
+2.1 FALLBACK Success. Fallback taken  on one or more property  values.
+2.2 NOCOMMANDINPROGRESS An ABORT or CONTINUE was received when no command was in progress
+2.2 IGPROP Success. Invalid property ignored.
+2.3 IGPARAM Success. invalid property parameter ignored.
+2.4 IGXPROP Success. Unknown non-standard property ignored.
+2.5 IGXPARAM Success. Unknown non standard property value  ignored.
+2.6 IGCOMP Success. Invalid calendar component ignored.
+2.7 FORWARD Success. Request forwarded to Calendar User.
+2.8 ONEEVENT Success. Repeating event ignored. Scheduled as a  single component.
+2.9 TRUNC Success. Truncated end date time to date boundary.
+2.10 ONETODO Success. Repeating VTODO ignored. Scheduled as a  single VTODO.
+2.11 TRUNCRRULE Success. Unbounded RRULE clipped at some finite  number of instances  
+3.0 INVPROPNAME Invalid property name.
+3.1 INVPROPVAL Invalid property value.
+3.2 INVPARAM Invalid property parameter.
+3.3 INVPARAMVAL Invalid property parameter value.
+3.4 INVCOMP Invalid calendar component sequence.
+3.5 INVTIME Invalid date or time.
+3.6 INVRULE Invalid rule.
+3.7 INVCU Invalid Calendar User.
+3.8 NOAUTH No authority.
+3.9 BADVERSION Unsupported version.
+3.10 TOOBIG Request entity too large.
+3.11 MISSREQCOMP Required component or property missing.
+3.12 UNKCOMP Unknown component or property found.
+3.13 BADCOMP Unsupported component or property found
+3.14 NOCAP Unsupported capability.
+4.0 BUSY Event conflict. Date/time  is busy.
+5.0 MAYBE Request MAY supported.
+5.1 UNAVAIL Service unavailable.
+5.2 NOSERVICE Invalid calendar service.
+5.3 NOSCHED No scheduling support for  user.
+6.1 AUTHENTICATEFAILURE Unsupported authentication mechanism, credentials rejected
+6.2 AUTHENTICATIONABORTED Sender aborted authentication, authentication exchange cancelled
+8.0 GENERALFAILURE A failure has occurred in the Receiver that prevents the operation from succeeding.
+8.1 SERVERTOOBUSY The iRIP Receiver is too busy.
+8.2 ICALOBJECTTOOBIG Object has exceeded the server's size limit.
+8.3 DATETOOLARGE A DATETIME value was too far in the future to be represented on this Calendar.
+8.4 DATETOOSMALL A DATETIME value was too far in the past to be represented on this Calendar.
+9.0 INVALIDIRIPCOMMAND An unrecongnized command was received.
+9.1 UNEXPECTEDCOMMAND The command is not allowed for the server's current state. 
+10.1 REFERRAL Accompanied by an alternate address. 
+10.2 SERVERSHUTDOWN The server is shutting down.
+10.3 SERVERSTOPPING FLOOD 2
+10.4 EXCEEDEDQUOTAS The operation would cause a resource to exceed the allocated quota
+10.5 QUEUEDTOOLONG The ITIP message has been queued too long. Delivery has been aborted.
diff --git a/src/plugins/vcalendar/libical/design-data/value-types.csv b/src/plugins/vcalendar/libical/design-data/value-types.csv
new file mode 100644 (file)
index 0000000..cbe6bd9
--- /dev/null
@@ -0,0 +1,31 @@
+"#Name","C type& gen flag","Python","Component Values","Enum Values"
+"BINARY","(a)const char*","file","unitary",
+"BOOLEAN","(a)int","integer","unitary",
+"CAL-ADDRESS","(a)const char*","string","unitary",
+"DATE","(a)struct icaltimetype","Time","unitary",
+"DATE-TIME","(a)struct icaltimetype","Time","unitary",
+"DURATION","(a)struct icaldurationtype","Duration","unitary",
+"FLOAT","(a)float","float","unitary",
+"INTEGER","(a)int","integer","unitary",
+"PERIOD","(a)struct icalperiodtype","Period","unitary",
+"RECUR","(m)struct icalrecurrencetype","RecurrenceSet","unitary",
+"TEXT","(a)const char*","string","unitary",
+"TIME","(a)struct icaltimetype","Time","unitary",
+"URI","(a)const char*","string","unitary",
+"UTC-OFFSET","(a)int","integer","unitary",
+"QUERY","(a)const char*","string","unitary",
+"#Non-standard multi-valued types",,,,
+"ATTACH","(a)struct icalattachtype","none","URI;BINARY",
+"DATE-TIME-DATE","(a)struct icaltimetype","none","DATE-TIME;DATE",
+"DATE-TIME-PERIOD","(m)struct icaldatetimeperiodtype","none","DATE-TIME;PERIOD",
+"TRIGGER","(m)struct icaltriggertype","string","DURATION;DATE-TIME",
+"#Non-standard property enumeration types",,,,
+"METHOD","(a)enum icalproperty_method","string","unitary","PUBLISH;REQUEST;REPLY;ADD;CANCEL;REFRESH;COUNTER;DECLINECOUNTER;CREATE;READ;RESPONSE;MOVE;MODIFY;GENERATEUID;DELETE"
+"ACTION","(a)enum icalproperty_action","string","unitary","AUDIO;DISPLAY;EMAIL;PROCEDURE"
+"STATUS","(a)enum icalproperty_status","string","unitary","TENTATIVE;CONFIRMED;COMPLETED;NEEDS-ACTION;CANCELLED;IN-PROCESS;DRAFT;FINAL"
+"TRANSP","(a)enum icalproperty_transp","string","unitary","OPAQUE;TRANSPARENT"
+"CLASS","(a)enum icalproperty_class","string","unitary","PUBLIC;PRIVATE;CONFIDENTIAL"
+"#Other non-standard",,,,
+"GEO","(a)struct icalgeotype","tuple","unitary",
+"STRING","(a)const char*","string","unitary",
+"X","(m)const char*","string","unitary",
diff --git a/src/plugins/vcalendar/libical/libical/.cvsignore b/src/plugins/vcalendar/libical/libical/.cvsignore
new file mode 100644 (file)
index 0000000..2ca0674
--- /dev/null
@@ -0,0 +1,19 @@
+.libs
+.deps
+Makefile
+Makefile.in
+*.lo
+*.la
+ical.h
+icalderivedparameter.c
+icalderivedparameter.h
+icalderivedproperty.c
+icalderivedproperty.h
+icalderivedvalue.c
+icalderivedvalue.h
+icallexer.c
+icalrestriction.c
+icalversion.h
+icalyacc.c
+icalyacc.h
+icalyacc.output
diff --git a/src/plugins/vcalendar/libical/libical/Makefile.am b/src/plugins/vcalendar/libical/libical/Makefile.am
new file mode 100644 (file)
index 0000000..aac17a0
--- /dev/null
@@ -0,0 +1,226 @@
+#======================================================================
+#  FILE: Makefile.am
+#  CREATOR: eric 
+#  
+#  $Id$
+#
+#
+# (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of either: 
+#
+#    The LGPL as published by the Free Software Foundation, version
+#    2.1, available at: http://www.fsf.org/copyleft/lesser.html
+#
+#  Or:
+#
+#    The Mozilla Public License Version 1.0. You may obtain a copy of
+#    the License at http://www.mozilla.org/MPL/
+#
+#  The original code is icalcomponent.c
+#
+#======================================================================
+
+
+DESIGNDATA = $(top_srcdir)/src/plugins/vcalendar/libical/design-data
+ICALSCRIPTS = $(top_srcdir)/src/plugins/vcalendar/libical/scripts
+
+noinst_LTLIBRARIES = libical.la
+
+YFLAGS = -d -v -t -pical_yy
+LFLAGS = -Pical_yy
+LEX_OUTPUT_ROOT = lex.ical_yy
+
+INCLUDES =                     \
+       -I$(top_builddir)       \
+       -I$(top_srcdir) \
+       -I$(top_builddir)       \
+       -I$(srcdir)             \
+       -I$(top_srcdir)/src/plugins/vcalendar/libical \
+       -I$(top_srcdir)/src/plugins/vcalendar/libical/libical
+
+libical_la_LDFLAGS = -version-info 0:0:0
+
+libical_la_SOURCES =           \
+       icalattendee.h          \
+       icalattendee.c          \
+       icalcomponent.c         \
+       icalcomponent.h         \
+       icalenums.c             \
+       icalenums.h             \
+       icalerror.c             \
+       icalerror.h             \
+       icallexer.l             \
+       icalmemory.c            \
+       icalmemory.h            \
+       icalmime.c              \
+       icalmime.h              \
+       icalparameter.c         \
+       icalparameter.h         \
+       icalparameterimpl.h     \
+       icalderivedparameter.c  \
+       icalderivedparameter.h  \
+       icalparser.c            \
+       icalparser.h            \
+       icalderivedproperty.c   \
+       icalderivedproperty.h   \
+       icalproperty.c          \
+       icalproperty.h          \
+       icalrecur.c             \
+       icalrecur.h             \
+       icalrestriction.c       \
+       icalrestriction.h       \
+       icaltime.c              \
+       icaltime.h              \
+       icalduration.h          \
+       icalduration.c          \
+       icalperiod.h            \
+       icalperiod.c            \
+       icaltypes.c             \
+       icaltypes.h             \
+       icalvalue.c             \
+       icalvalue.h             \
+       icalvalueimpl.h         \
+       icalderivedvalue.c      \
+       icalderivedvalue.h      \
+       icalyacc.h              \
+       icalyacc.y              \
+       pvl.c                   \
+       pvl.h                   \
+       sspm.c                  \
+       sspm.h                  \
+       vsnprintf.c             \
+       icallangbind.h          
+
+libicalincludedir = $(includedir)/claws-mail/plugins/@PACKAGE@
+
+libicalinclude_HEADERS =  ical.h 
+
+# ORDERING OF HEADERS IS SIGNIFICANT. Don't change this ordering. It
+# is required to make the combined header ical.h properly
+COMBINEDHEADERS =                                      \
+       $(top_builddir)/src/plugins/vcalendar/libical/libical/icalversion.h     \
+       $(top_srcdir)/src/plugins/vcalendar/libical/libical/icaltime.h          \
+       $(top_srcdir)/src/plugins/vcalendar/libical/libical/icalduration.h      \
+       $(top_srcdir)/src/plugins/vcalendar/libical/libical/icalperiod.h                \
+       $(top_srcdir)/src/plugins/vcalendar/libical/libical/icalenums.h         \
+       $(top_srcdir)/src/plugins/vcalendar/libical/libical/icaltypes.h         \
+       $(top_srcdir)/src/plugins/vcalendar/libical/libical/icalrecur.h         \
+       icalderivedvalue.h                              \
+       icalderivedparameter.h                          \
+       icalvalue.h                                     \
+       icalparameter.h                                 \
+       icalderivedproperty.h                           \
+       icalproperty.h                                  \
+       $(top_srcdir)/src/plugins/vcalendar/libical/libical/icalattendee.h      \
+       $(top_srcdir)/src/plugins/vcalendar/libical/libical/pvl.h                       \
+       $(top_srcdir)/src/plugins/vcalendar/libical/libical/icalcomponent.h     \
+       $(top_srcdir)/src/plugins/vcalendar/libical/libical/icalparser.h                \
+       $(top_srcdir)/src/plugins/vcalendar/libical/libical/icalmemory.h                \
+       $(top_srcdir)/src/plugins/vcalendar/libical/libical/icalerror.h         \
+       $(top_srcdir)/src/plugins/vcalendar/libical/libical/icalrestriction.h   \
+       $(top_srcdir)/src/plugins/vcalendar/libical/libical/sspm.h              \
+       $(top_srcdir)/src/plugins/vcalendar/libical/libical/icalmime.h          \
+       $(top_srcdir)/src/plugins/vcalendar/libical/libical/icallangbind.h      
+
+BUILT_SOURCES =                        \
+       ical.h                  \
+       icalderivedparameter.c  \
+       icalderivedparameter.h  \
+       icalderivedproperty.c   \
+       icalderivedproperty.h   \
+       icalrestriction.c       \
+       icalderivedvalue.c      \
+       icalderivedvalue.h
+
+ical.h: $(COMBINEDHEADERS)
+       cat $(COMBINEDHEADERS)                          \
+       | egrep -v "#include.*\"ical"                   \
+       | egrep -v "#include.*\"pvl\.h\"" > ical.h
+
+icallexer.c : icalyacc.h
+
+
+# parameters
+
+PARAMETERDEPS =        \
+       $(ICALSCRIPTS)/mkderivedparameters.pl \
+       $(DESIGNDATA)/parameters.csv    \
+       icalderivedparameter.c.in \
+       icalderivedparameter.h.in
+
+icalderivedparameter.h: $(PARAMETERDEPS) 
+       $(PERL) -I $(ICALSCRIPTS) $(ICALSCRIPTS)/mkderivedparameters.pl -i $(srcdir)/icalderivedparameter.h.in -h $(DESIGNDATA)/parameters.csv > icalderivedparameter.h 
+
+icalderivedparameter.c: $(PARAMETERDEPS) icalparameter.h
+       $(PERL) -I $(ICALSCRIPTS) $(ICALSCRIPTS)/mkderivedparameters.pl -i $(srcdir)/icalderivedparameter.c.in -c $(DESIGNDATA)/parameters.csv > icalderivedparameter.c
+
+
+# properties
+
+PROPERTYDEPS =                                 \
+       $(ICALSCRIPTS)/mkderivedproperties.pl   \
+       $(DESIGNDATA)/properties.csv            \
+       $(DESIGNDATA)/value-types.csv           \
+       icalderivedproperty.c.in                \
+       icalderivedproperty.h.in
+
+
+icalderivedproperty.h: $(PROPERTYDEPS)
+       $(PERL)  -I$(ICALSCRIPTS) $(ICALSCRIPTS)/mkderivedproperties.pl \
+               -i $(srcdir)/icalderivedproperty.h.in -h $(DESIGNDATA)/properties.csv\
+               ${DESIGNDATA}/value-types.csv > icalderivedproperty.h 
+
+icalderivedproperty.c: $(PROPERTYDEPS) icalproperty.h 
+       $(PERL)  -I$(ICALSCRIPTS) $(ICALSCRIPTS)/mkderivedproperties.pl \
+               -i $(srcdir)/icalderivedproperty.c.in -c $(DESIGNDATA)/properties.csv \
+               ${DESIGNDATA}/value-types.csv > icalderivedproperty.c
+
+# restrictions
+
+RESTRICTIONDEPS =                              \
+       $(ICALSCRIPTS)/mkrestrictiontable.pl    \
+       $(DESIGNDATA)/restrictions.csv          \
+       icalrestriction.c.in
+
+icalrestriction.c: $(RESTRICTIONDEPS)
+       $(PERL) $(ICALSCRIPTS)/mkrestrictiontable.pl  -i $(srcdir)/icalrestriction.c.in \
+               $(DESIGNDATA)/restrictions.csv > icalrestriction.c
+
+# values
+
+VALUEDEPS =                                    \
+       $(ICALSCRIPTS)/mkderivedvalues.pl       \
+       $(DESIGNDATA)/value-types.csv           \
+       icalderivedvalue.c.in                           \
+       icalderivedvalue.h.in
+
+icalderivedvalue.h: $(VALUEDEPS)
+       $(PERL) -I$(ICALSCRIPTS)  $(ICALSCRIPTS)/mkderivedvalues.pl \
+                -i $(srcdir)/icalderivedvalue.h.in -h $(DESIGNDATA)/value-types.csv > icalderivedvalue.h
+
+icalderivedvalue.c: $(VALUEDEPS) icalderivedvalue.h
+       $(PERL)  -I$(ICALSCRIPTS) $(ICALSCRIPTS)/mkderivedvalues.pl \
+               -i $(srcdir)/icalderivedvalue.c.in -c $(DESIGNDATA)/value-types.csv > icalderivedvalue.c
+
+
+
+# housekeeping
+CONFIG_CLEAN_FILES = y.output
+
+CLEANFILES = $(BUILT_SOURCES)
+
+EXTRA_DIST =                   \
+       icalderivedparameter.c.in \
+       icalderivedparameter.h.in \
+       icalderivedproperty.c.in \
+       icalderivedproperty.h.in \
+       icalrestriction.c.in    \
+       icalderivedvalue.c.in   \
+       icalderivedvalue.h.in   \
+       icalversion.h.in        \
+       icallexer.c             \
+       icalyacc.c
+
+AM_CPPFLAGS = -DNDEBUG $(GLIB_CFLAGS) 
diff --git a/src/plugins/vcalendar/libical/libical/Makefile.in b/src/plugins/vcalendar/libical/libical/Makefile.in
new file mode 100644 (file)
index 0000000..2b96026
--- /dev/null
@@ -0,0 +1,923 @@
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+#======================================================================
+#  FILE: Makefile.am
+#  CREATOR: eric 
+#  
+#  $Id$
+#
+#
+# (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of either: 
+#
+#    The LGPL as published by the Free Software Foundation, version
+#    2.1, available at: http://www.fsf.org/copyleft/lesser.html
+#
+#  Or:
+#
+#    The Mozilla Public License Version 1.0. You may obtain a copy of
+#    the License at http://www.mozilla.org/MPL/
+#
+#  The original code is icalcomponent.c
+#
+#======================================================================
+
+
+VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \  ]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = src/plugins/vcalendar/libical/libical
+DIST_COMMON = $(libicalinclude_HEADERS) $(srcdir)/Makefile.am \
+       $(srcdir)/Makefile.in $(srcdir)/icalversion.h.in icallexer.c \
+       icalyacc.c icalyacc.h
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/check-type.m4 \
+       $(top_srcdir)/m4/gnupg-check-typedef.m4 \
+       $(top_srcdir)/m4/gnupg.m4 $(top_srcdir)/m4/gpgme.m4 \
+       $(top_srcdir)/m4/isc-posix.m4 $(top_srcdir)/m4/libtool.m4 \
+       $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+       $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+       $(top_srcdir)/m4/spamassassin.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h \
+       $(top_builddir)/claws-features.h
+CONFIG_CLEAN_VPATH_FILES =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+libical_la_LIBADD =
+am_libical_la_OBJECTS = icalattendee.lo icalcomponent.lo icalenums.lo \
+       icalerror.lo icallexer.lo icalmemory.lo icalmime.lo \
+       icalparameter.lo icalderivedparameter.lo icalparser.lo \
+       icalderivedproperty.lo icalproperty.lo icalrecur.lo \
+       icalrestriction.lo icaltime.lo icalduration.lo icalperiod.lo \
+       icaltypes.lo icalvalue.lo icalderivedvalue.lo icalyacc.lo \
+       pvl.lo sspm.lo vsnprintf.lo
+libical_la_OBJECTS = $(am_libical_la_OBJECTS)
+libical_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+       $(libical_la_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+       $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+       --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+       $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+       --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+       $(LDFLAGS) -o $@
+@MAINTAINER_MODE_FALSE@am__skiplex = test -f $@ ||
+LEXCOMPILE = $(LEX) $(AM_LFLAGS) $(LFLAGS)
+LTLEXCOMPILE = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+       --mode=compile $(LEX) $(AM_LFLAGS) $(LFLAGS)
+YLWRAP = $(top_srcdir)/config/ylwrap
+@MAINTAINER_MODE_FALSE@am__skipyacc = test -f $@ ||
+YACCCOMPILE = $(YACC) $(AM_YFLAGS) $(YFLAGS)
+LTYACCCOMPILE = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+       --mode=compile $(YACC) $(AM_YFLAGS) $(YFLAGS)
+SOURCES = $(libical_la_SOURCES)
+DIST_SOURCES = $(libical_la_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(libicalincludedir)"
+HEADERS = $(libicalinclude_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+COMPFACE_LIBS = @COMPFACE_LIBS@
+CONIC_CFLAGS = @CONIC_CFLAGS@
+CONIC_LIBS = @CONIC_LIBS@
+CONTACTS_CFLAGS = @CONTACTS_CFLAGS@
+CONTACTS_LIBS = @CONTACTS_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
+CURL_CFLAGS = @CURL_CFLAGS@
+CURL_LIBS = @CURL_LIBS@
+CYGPATH_W = @CYGPATH_W@
+DBUS_CFLAGS = @DBUS_CFLAGS@
+DBUS_LIBS = @DBUS_LIBS@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DOCBOOK2HTML = @DOCBOOK2HTML@
+DOCBOOK2PDF = @DOCBOOK2PDF@
+DOCBOOK2PS = @DOCBOOK2PS@
+DOCBOOK2TXT = @DOCBOOK2TXT@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ENCHANT_CFLAGS = @ENCHANT_CFLAGS@
+ENCHANT_LIBS = @ENCHANT_LIBS@
+EXEEXT = @EXEEXT@
+EXTRA_VERSION = @EXTRA_VERSION@
+FGREP = @FGREP@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
+GLIB_LIBS = @GLIB_LIBS@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNOME2_CFLAGS = @GNOME2_CFLAGS@
+GNOME2_LIBS = @GNOME2_LIBS@
+GNOME_CONFIG = @GNOME_CONFIG@
+GNUTLS_CFLAGS = @GNUTLS_CFLAGS@
+GNUTLS_LIBS = @GNUTLS_LIBS@
+GPGME_CFLAGS = @GPGME_CFLAGS@
+GPGME_CONFIG = @GPGME_CONFIG@
+GPGME_LIBS = @GPGME_LIBS@
+GREP = @GREP@
+GTKPRINTUNIX_CFLAGS = @GTKPRINTUNIX_CFLAGS@
+GTKPRINTUNIX_LIBS = @GTKPRINTUNIX_LIBS@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LIBS = @GTK_LIBS@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+JPILOT_LIBS = @JPILOT_LIBS@
+LD = @LD@
+LDAP_LIBS = @LDAP_LIBS@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = lex.ical_yy
+LIBETPAN_FLAGS = @LIBETPAN_FLAGS@
+LIBETPAN_LIBS = @LIBETPAN_LIBS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBRESOLV = @LIBRESOLV@
+LIBS = @LIBS@
+LIBSOUP_GNOME_CFLAGS = @LIBSOUP_GNOME_CFLAGS@
+LIBSOUP_GNOME_LIBS = @LIBSOUP_GNOME_LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAEMO_CFLAGS = @MAEMO_CFLAGS@
+MAEMO_LIBS = @MAEMO_LIBS@
+MAINT = @MAINT@
+MAJOR_VERSION = @MAJOR_VERSION@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MICRO_VERSION = @MICRO_VERSION@
+MINOR_VERSION = @MINOR_VERSION@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NETWORKMANAGER_SUPPORT_CFLAGS = @NETWORKMANAGER_SUPPORT_CFLAGS@
+NETWORKMANAGER_SUPPORT_LIBS = @NETWORKMANAGER_SUPPORT_LIBS@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PASSCRYPT_KEY = @PASSCRYPT_KEY@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POSUB = @POSUB@
+PTHREAD_LIBS = @PTHREAD_LIBS@
+RANLIB = @RANLIB@
+RC = @RC@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SM_LIBS = @SM_LIBS@
+STARTUP_NOTIFICATION_CFLAGS = @STARTUP_NOTIFICATION_CFLAGS@
+STARTUP_NOTIFICATION_LIBS = @STARTUP_NOTIFICATION_LIBS@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
+VALGRIND_LIBS = @VALGRIND_LIBS@
+VERSION = @VERSION@
+WEBKIT_CFLAGS = @WEBKIT_CFLAGS@
+WEBKIT_LIBS = @WEBKIT_LIBS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+YACC = @YACC@
+YFLAGS = -d -v -t -pical_yy
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_cv_enable_crash_dialog = @ac_cv_enable_crash_dialog@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gnomedatadir = @gnomedatadir@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libetpanconfig = @libetpanconfig@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+manualdir = @manualdir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+DESIGNDATA = $(top_srcdir)/src/plugins/vcalendar/libical/design-data
+ICALSCRIPTS = $(top_srcdir)/src/plugins/vcalendar/libical/scripts
+noinst_LTLIBRARIES = libical.la
+LFLAGS = -Pical_yy
+INCLUDES = \
+       -I$(top_builddir)       \
+       -I$(top_srcdir) \
+       -I$(top_builddir)       \
+       -I$(srcdir)             \
+       -I$(top_srcdir)/src/plugins/vcalendar/libical \
+       -I$(top_srcdir)/src/plugins/vcalendar/libical/libical
+
+libical_la_LDFLAGS = -version-info 0:0:0
+libical_la_SOURCES = \
+       icalattendee.h          \
+       icalattendee.c          \
+       icalcomponent.c         \
+       icalcomponent.h         \
+       icalenums.c             \
+       icalenums.h             \
+       icalerror.c             \
+       icalerror.h             \
+       icallexer.l             \
+       icalmemory.c            \
+       icalmemory.h            \
+       icalmime.c              \
+       icalmime.h              \
+       icalparameter.c         \
+       icalparameter.h         \
+       icalparameterimpl.h     \
+       icalderivedparameter.c  \
+       icalderivedparameter.h  \
+       icalparser.c            \
+       icalparser.h            \
+       icalderivedproperty.c   \
+       icalderivedproperty.h   \
+       icalproperty.c          \
+       icalproperty.h          \
+       icalrecur.c             \
+       icalrecur.h             \
+       icalrestriction.c       \
+       icalrestriction.h       \
+       icaltime.c              \
+       icaltime.h              \
+       icalduration.h          \
+       icalduration.c          \
+       icalperiod.h            \
+       icalperiod.c            \
+       icaltypes.c             \
+       icaltypes.h             \
+       icalvalue.c             \
+       icalvalue.h             \
+       icalvalueimpl.h         \
+       icalderivedvalue.c      \
+       icalderivedvalue.h      \
+       icalyacc.h              \
+       icalyacc.y              \
+       pvl.c                   \
+       pvl.h                   \
+       sspm.c                  \
+       sspm.h                  \
+       vsnprintf.c             \
+       icallangbind.h          
+
+libicalincludedir = $(includedir)/claws-mail/plugins/@PACKAGE@
+libicalinclude_HEADERS = ical.h 
+
+# ORDERING OF HEADERS IS SIGNIFICANT. Don't change this ordering. It
+# is required to make the combined header ical.h properly
+COMBINEDHEADERS = \
+       $(top_builddir)/src/plugins/vcalendar/libical/libical/icalversion.h     \
+       $(top_srcdir)/src/plugins/vcalendar/libical/libical/icaltime.h          \
+       $(top_srcdir)/src/plugins/vcalendar/libical/libical/icalduration.h      \
+       $(top_srcdir)/src/plugins/vcalendar/libical/libical/icalperiod.h                \
+       $(top_srcdir)/src/plugins/vcalendar/libical/libical/icalenums.h         \
+       $(top_srcdir)/src/plugins/vcalendar/libical/libical/icaltypes.h         \
+       $(top_srcdir)/src/plugins/vcalendar/libical/libical/icalrecur.h         \
+       icalderivedvalue.h                              \
+       icalderivedparameter.h                          \
+       icalvalue.h                                     \
+       icalparameter.h                                 \
+       icalderivedproperty.h                           \
+       icalproperty.h                                  \
+       $(top_srcdir)/src/plugins/vcalendar/libical/libical/icalattendee.h      \
+       $(top_srcdir)/src/plugins/vcalendar/libical/libical/pvl.h                       \
+       $(top_srcdir)/src/plugins/vcalendar/libical/libical/icalcomponent.h     \
+       $(top_srcdir)/src/plugins/vcalendar/libical/libical/icalparser.h                \
+       $(top_srcdir)/src/plugins/vcalendar/libical/libical/icalmemory.h                \
+       $(top_srcdir)/src/plugins/vcalendar/libical/libical/icalerror.h         \
+       $(top_srcdir)/src/plugins/vcalendar/libical/libical/icalrestriction.h   \
+       $(top_srcdir)/src/plugins/vcalendar/libical/libical/sspm.h              \
+       $(top_srcdir)/src/plugins/vcalendar/libical/libical/icalmime.h          \
+       $(top_srcdir)/src/plugins/vcalendar/libical/libical/icallangbind.h      
+
+BUILT_SOURCES = \
+       ical.h                  \
+       icalderivedparameter.c  \
+       icalderivedparameter.h  \
+       icalderivedproperty.c   \
+       icalderivedproperty.h   \
+       icalrestriction.c       \
+       icalderivedvalue.c      \
+       icalderivedvalue.h
+
+
+# parameters
+PARAMETERDEPS = \
+       $(ICALSCRIPTS)/mkderivedparameters.pl \
+       $(DESIGNDATA)/parameters.csv    \
+       icalderivedparameter.c.in \
+       icalderivedparameter.h.in
+
+
+# properties
+PROPERTYDEPS = \
+       $(ICALSCRIPTS)/mkderivedproperties.pl   \
+       $(DESIGNDATA)/properties.csv            \
+       $(DESIGNDATA)/value-types.csv           \
+       icalderivedproperty.c.in                \
+       icalderivedproperty.h.in
+
+
+# restrictions
+RESTRICTIONDEPS = \
+       $(ICALSCRIPTS)/mkrestrictiontable.pl    \
+       $(DESIGNDATA)/restrictions.csv          \
+       icalrestriction.c.in
+
+
+# values
+VALUEDEPS = \
+       $(ICALSCRIPTS)/mkderivedvalues.pl       \
+       $(DESIGNDATA)/value-types.csv           \
+       icalderivedvalue.c.in                           \
+       icalderivedvalue.h.in
+
+
+# housekeeping
+CONFIG_CLEAN_FILES = y.output
+CLEANFILES = $(BUILT_SOURCES)
+EXTRA_DIST = \
+       icalderivedparameter.c.in \
+       icalderivedparameter.h.in \
+       icalderivedproperty.c.in \
+       icalderivedproperty.h.in \
+       icalrestriction.c.in    \
+       icalderivedvalue.c.in   \
+       icalderivedvalue.h.in   \
+       icalversion.h.in        \
+       icallexer.c             \
+       icalyacc.c
+
+AM_CPPFLAGS = -DNDEBUG $(GLIB_CFLAGS) 
+all: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .l .lo .o .obj .y
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/plugins/vcalendar/libical/libical/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --foreign src/plugins/vcalendar/libical/libical/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+icalversion.h: $(top_builddir)/config.status $(srcdir)/icalversion.h.in
+       cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+
+clean-noinstLTLIBRARIES:
+       -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+       @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
+         dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+         test "$$dir" != "$$p" || dir=.; \
+         echo "rm -f \"$${dir}/so_locations\""; \
+         rm -f "$${dir}/so_locations"; \
+       done
+icalyacc.h: icalyacc.c
+       @if test ! -f $@; then rm -f icalyacc.c; else :; fi
+       @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) icalyacc.c; else :; fi
+libical.la: $(libical_la_OBJECTS) $(libical_la_DEPENDENCIES) $(EXTRA_libical_la_DEPENDENCIES) 
+       $(libical_la_LINK)  $(libical_la_OBJECTS) $(libical_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icalattendee.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icalcomponent.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icalderivedparameter.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icalderivedproperty.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icalderivedvalue.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icalduration.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icalenums.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icalerror.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icallexer.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icalmemory.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icalmime.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icalparameter.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icalparser.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icalperiod.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icalproperty.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icalrecur.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icalrestriction.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icaltime.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icaltypes.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icalvalue.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icalyacc.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pvl.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sspm.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vsnprintf.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@   $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LTCOMPILE) -c -o $@ $<
+
+.l.c:
+       $(am__skiplex) $(SHELL) $(YLWRAP) $< $(LEX_OUTPUT_ROOT).c $@ -- $(LEXCOMPILE)
+
+.y.c:
+       $(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h $*.h y.output $*.output -- $(YACCCOMPILE)
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+install-libicalincludeHEADERS: $(libicalinclude_HEADERS)
+       @$(NORMAL_INSTALL)
+       @list='$(libicalinclude_HEADERS)'; test -n "$(libicalincludedir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(libicalincludedir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(libicalincludedir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(libicalincludedir)'"; \
+         $(INSTALL_HEADER) $$files "$(DESTDIR)$(libicalincludedir)" || exit $$?; \
+       done
+
+uninstall-libicalincludeHEADERS:
+       @$(NORMAL_UNINSTALL)
+       @list='$(libicalinclude_HEADERS)'; test -n "$(libicalincludedir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(libicalincludedir)'; $(am__uninstall_files_from_dir)
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       set x; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
+       fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) check-am
+all-am: Makefile $(LTLIBRARIES) $(HEADERS)
+installdirs:
+       for dir in "$(DESTDIR)$(libicalincludedir)"; do \
+         test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+       done
+install: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+mostlyclean-generic:
+
+clean-generic:
+       -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+       -rm -f icallexer.c
+       -rm -f icalyacc.c
+       -rm -f icalyacc.h
+       -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+       mostlyclean-am
+
+distclean: distclean-am
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+       distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-libicalincludeHEADERS
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+       mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-libicalincludeHEADERS
+
+.MAKE: all check install install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+       clean-libtool clean-noinstLTLIBRARIES ctags distclean \
+       distclean-compile distclean-generic distclean-libtool \
+       distclean-tags distdir dvi dvi-am html html-am info info-am \
+       install install-am install-data install-data-am install-dvi \
+       install-dvi-am install-exec install-exec-am install-html \
+       install-html-am install-info install-info-am \
+       install-libicalincludeHEADERS install-man install-pdf \
+       install-pdf-am install-ps install-ps-am install-strip \
+       installcheck installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-compile \
+       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+       tags uninstall uninstall-am uninstall-libicalincludeHEADERS
+
+
+ical.h: $(COMBINEDHEADERS)
+       cat $(COMBINEDHEADERS)                          \
+       | egrep -v "#include.*\"ical"                   \
+       | egrep -v "#include.*\"pvl\.h\"" > ical.h
+
+icallexer.c : icalyacc.h
+
+icalderivedparameter.h: $(PARAMETERDEPS) 
+       $(PERL) -I $(ICALSCRIPTS) $(ICALSCRIPTS)/mkderivedparameters.pl -i $(srcdir)/icalderivedparameter.h.in -h $(DESIGNDATA)/parameters.csv > icalderivedparameter.h 
+
+icalderivedparameter.c: $(PARAMETERDEPS) icalparameter.h
+       $(PERL) -I $(ICALSCRIPTS) $(ICALSCRIPTS)/mkderivedparameters.pl -i $(srcdir)/icalderivedparameter.c.in -c $(DESIGNDATA)/parameters.csv > icalderivedparameter.c
+
+icalderivedproperty.h: $(PROPERTYDEPS)
+       $(PERL)  -I$(ICALSCRIPTS) $(ICALSCRIPTS)/mkderivedproperties.pl \
+               -i $(srcdir)/icalderivedproperty.h.in -h $(DESIGNDATA)/properties.csv\
+               ${DESIGNDATA}/value-types.csv > icalderivedproperty.h 
+
+icalderivedproperty.c: $(PROPERTYDEPS) icalproperty.h 
+       $(PERL)  -I$(ICALSCRIPTS) $(ICALSCRIPTS)/mkderivedproperties.pl \
+               -i $(srcdir)/icalderivedproperty.c.in -c $(DESIGNDATA)/properties.csv \
+               ${DESIGNDATA}/value-types.csv > icalderivedproperty.c
+
+icalrestriction.c: $(RESTRICTIONDEPS)
+       $(PERL) $(ICALSCRIPTS)/mkrestrictiontable.pl  -i $(srcdir)/icalrestriction.c.in \
+               $(DESIGNDATA)/restrictions.csv > icalrestriction.c
+
+icalderivedvalue.h: $(VALUEDEPS)
+       $(PERL) -I$(ICALSCRIPTS)  $(ICALSCRIPTS)/mkderivedvalues.pl \
+                -i $(srcdir)/icalderivedvalue.h.in -h $(DESIGNDATA)/value-types.csv > icalderivedvalue.h
+
+icalderivedvalue.c: $(VALUEDEPS) icalderivedvalue.h
+       $(PERL)  -I$(ICALSCRIPTS) $(ICALSCRIPTS)/mkderivedvalues.pl \
+               -i $(srcdir)/icalderivedvalue.c.in -c $(DESIGNDATA)/value-types.csv > icalderivedvalue.c
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/plugins/vcalendar/libical/libical/icalattendee.c b/src/plugins/vcalendar/libical/libical/icalattendee.c
new file mode 100644 (file)
index 0000000..30cb949
--- /dev/null
@@ -0,0 +1,30 @@
+/* -*- Mode: C -*-
+  ======================================================================
+  FILE: icalattendee.c
+  CREATOR: eric 08 Mar 01
+  
+  $Id$
+  $Locker$
+    
+
+ (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of either: 
+
+    The LGPL as published by the Free Software Foundation, version
+    2.1, available at: http://www.fsf.org/copyleft/lesser.html
+
+  Or:
+
+    The Mozilla Public License Version 1.0. You may obtain a copy of
+    the License at http://www.mozilla.org/MPL/
+
+  The original code is icaltypes.c
+
+ ======================================================================*/
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "icalattendee.h"
diff --git a/src/plugins/vcalendar/libical/libical/icalattendee.h b/src/plugins/vcalendar/libical/libical/icalattendee.h
new file mode 100644 (file)
index 0000000..023b307
--- /dev/null
@@ -0,0 +1,68 @@
+/* -*- Mode: C -*- */
+/*======================================================================
+ FILE: icalattendee.h
+ CREATOR: eric 8 Mar 01
+
+
+ (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of either: 
+
+    The LGPL as published by the Free Software Foundation, version
+    2.1, available at: http://www.fsf.org/copyleft/lesser.html
+
+  Or:
+
+    The Mozilla Public License Version 1.0. You may obtain a copy of
+    the License at http://www.mozilla.org/MPL/
+
+  The original code is icaltypes.h
+
+======================================================================*/
+
+#ifndef ICALATTENDEE_H
+#define ICALATTENDEE_H
+
+#include <time.h>
+#include "icalenums.h"
+#include "icaltime.h"
+#include "icalduration.h"
+#include "icalperiod.h"
+#include "icalderivedparameter.h"
+#include "icalderivedvalue.h"
+
+struct icalorganizertype {
+    const char* value;
+    const char* common_name;
+    const char* dir;
+    const char* sentby;
+    const char* language;
+
+};
+
+/* Create a copy of the given organizer. Libical will not own the
+   memory for the strings in the copy; the call must free them */
+struct icalorganizertype icalorganizertype_new_clone(struct icalorganizertype a);
+
+
+struct icalattendeetype {
+    const char* cuid; /* Cal user id, contents of the property value */
+    /*icalparameter_cutype cutype;*/
+    const char* member;
+    /*icalparameter_role role;*/
+    int rsvp;
+    const char* delto;
+    const char* delfrom;
+    const char* sentby;
+    const char* cn;
+    const char* dir;
+    const char* language;
+};
+
+/* Create a copy of the given attendee. Libical will not own the
+   memory for the strings in the copy; the call must free them */
+struct icalattendeetype icalattendeetype_new_clone(struct icalattendeetype a);
+
+
+#endif /* !ICALATTENDEE_H */
diff --git a/src/plugins/vcalendar/libical/libical/icalcomponent.c b/src/plugins/vcalendar/libical/libical/icalcomponent.c
new file mode 100644 (file)
index 0000000..5c8cf16
--- /dev/null
@@ -0,0 +1,1500 @@
+/*======================================================================
+  FILE: icalcomponent.c
+  CREATOR: eric 28 April 1999
+  
+  $Id$
+
+
+ (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of either: 
+
+    The LGPL as published by the Free Software Foundation, version
+    2.1, available at: http://www.fsf.org/copyleft/lesser.html
+
+  Or:
+
+    The Mozilla Public License Version 1.0. You may obtain a copy of
+    the License at http://www.mozilla.org/MPL/
+
+  The original code is icalcomponent.c
+
+======================================================================*/
+
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "icalcomponent.h"
+#include "pvl.h" /* "Pointer-to-void list" */
+#include "icalerror.h"
+#include "icalmemory.h"
+#include "icalenums.h"
+#include "icaltime.h"
+#include "icalduration.h"
+#include "icalperiod.h"
+#include "icalparser.h"
+
+#include <string.h>  /* for strcpy & memset */
+#include <stdlib.h>  /* for malloc */
+#include <stdarg.h> /* for va_list, etc */
+#include <errno.h>
+#include <assert.h>
+#include <stdio.h> /* for fprintf */
+
+#define MAX_TMP 1024
+
+struct icalcomponent_impl 
+{
+       char id[5];
+       icalcomponent_kind kind;
+       char* x_name;
+       pvl_list properties;
+       pvl_elem property_iterator;
+       pvl_list components;
+       pvl_elem component_iterator;
+       icalcomponent* parent;
+};
+
+/* icalproperty functions that only components get to use */
+void icalproperty_set_parent(icalproperty* property,
+                            icalcomponent* component);
+icalcomponent* icalproperty_get_parent(icalproperty* property);
+void icalcomponent_add_children(struct icalcomponent_impl *impl,va_list args);
+icalcomponent* icalcomponent_new_impl (icalcomponent_kind kind);
+int icalcomponent_property_sorter(void *a, void *b);
+
+
+void icalcomponent_add_children(struct icalcomponent_impl *impl,va_list args)
+{
+    void* vp;
+    
+    while((vp = va_arg(args, void*)) != 0) {
+
+       assert (icalcomponent_isa_component(vp) != 0 ||
+               icalproperty_isa_property(vp) != 0 ) ;
+
+       if (icalcomponent_isa_component(vp) != 0 ){
+
+           icalcomponent_add_component((icalcomponent*)impl,
+                                      (icalcomponent*)vp);
+
+       } else if (icalproperty_isa_property(vp) != 0 ){
+
+           icalcomponent_add_property((icalcomponent*)impl,
+                                      (icalproperty*)vp);
+       }
+    }    
+}
+
+icalcomponent*
+icalcomponent_new_impl (icalcomponent_kind kind)
+{
+    struct icalcomponent_impl* comp;
+
+    if ( ( comp = (struct icalcomponent_impl*)
+          malloc(sizeof(struct icalcomponent_impl))) == 0) {
+       icalerror_set_errno(ICAL_NEWFAILED_ERROR);
+       return 0;
+    }
+    
+    strcpy(comp->id,"comp");
+
+    comp->kind = kind;
+    comp->properties = pvl_newlist();
+    comp->property_iterator = 0;
+    comp->components = pvl_newlist();
+    comp->component_iterator = 0;
+    comp->x_name = 0;
+    comp->parent = 0;
+
+    return comp;
+}
+
+icalcomponent*
+icalcomponent_new (icalcomponent_kind kind)
+{
+   return (icalcomponent*)icalcomponent_new_impl(kind);
+}
+
+icalcomponent*
+icalcomponent_vanew (icalcomponent_kind kind, ...)
+{
+   va_list args;
+
+   struct icalcomponent_impl *impl = icalcomponent_new_impl(kind);
+
+    if (impl == 0){
+       return 0;
+    }
+
+   va_start(args,kind);
+   icalcomponent_add_children(impl, args);
+   va_end(args);
+
+   return (icalcomponent*) impl;
+}
+
+icalcomponent* icalcomponent_new_from_string(char* str)
+{
+    return icalparser_parse_string(str);
+}
+
+icalcomponent* icalcomponent_new_clone(icalcomponent* component)
+{
+    struct icalcomponent_impl *old = (struct icalcomponent_impl*)component;
+    struct icalcomponent_impl *new;
+    icalproperty *p;
+    icalcomponent *c;
+    pvl_elem itr;
+
+    icalerror_check_arg_rz( (component!=0), "component");
+
+    new = icalcomponent_new_impl(old->kind);
+
+    if (new == 0){
+       return 0;
+    }
+
+    
+    for( itr = pvl_head(old->properties);
+        itr != 0;
+        itr = pvl_next(itr))
+    {  
+       p = (icalproperty*)pvl_data(itr);
+       icalcomponent_add_property(new,icalproperty_new_clone(p));
+    }
+   
+   
+    for( itr = pvl_head(old->components);
+        itr != 0;
+        itr = pvl_next(itr))
+    {  
+       c = (icalcomponent*)pvl_data(itr);
+       icalcomponent_add_component(new,icalcomponent_new_clone(c));
+    }
+
+   return new;
+
+}
+
+
+void
+icalcomponent_free (icalcomponent* component)
+{
+    icalproperty* prop;
+    icalcomponent* comp;
+    struct icalcomponent_impl *c = (struct icalcomponent_impl*)component;
+
+    icalerror_check_arg_rv( (component!=0), "component");
+
+#ifdef ICAL_FREE_ON_LIST_IS_ERROR
+    icalerror_assert( (c->parent ==0),"Tried to free a component that is still attached to a parent component");
+#else
+    if(c->parent != 0){
+       return;
+    }
+#endif
+
+    if(component != 0 ){
+       
+       while( (prop=pvl_pop(c->properties)) != 0){
+          assert(prop != 0);
+           icalproperty_set_parent(prop,0);
+          icalproperty_free(prop);
+       }
+       
+       pvl_free(c->properties);
+
+       while( (comp=pvl_data(pvl_head(c->components))) != 0){
+          assert(comp!=0);
+          icalcomponent_remove_component(component,comp);
+          icalcomponent_free(comp);
+       }
+       
+       pvl_free(c->components);
+
+       if (c->x_name != 0) {
+           free(c->x_name);
+       }
+
+       c->kind = ICAL_NO_COMPONENT;
+       c->properties = 0;
+       c->property_iterator = 0;
+       c->components = 0;
+       c->component_iterator = 0;
+       c->x_name = 0;  
+       c->id[0] = 'X';
+
+       free(c);
+    }
+}
+
+char*
+icalcomponent_as_ical_string (icalcomponent* component)
+{
+   char* buf, *out_buf;
+   char* tmp_buf;
+   size_t buf_size = 1024;
+   char* buf_ptr = 0;
+    pvl_elem itr;
+    struct icalcomponent_impl *impl = (struct icalcomponent_impl*)component;
+
+#ifdef ICAL_UNIX_NEWLINE    
+    char newline[] = "\n";
+#else
+    char newline[] = "\r\n";
+#endif
+   
+   icalcomponent *c;
+   icalproperty *p;
+   icalcomponent_kind kind = icalcomponent_isa(component);
+
+   const char* kind_string;
+
+   buf = icalmemory_new_buffer(buf_size);
+   buf_ptr = buf; 
+
+   icalerror_check_arg_rz( (component!=0), "component");
+   icalerror_check_arg_rz( (kind!=ICAL_NO_COMPONENT), "component kind is ICAL_NO_COMPONENT");
+   
+   kind_string  = icalenum_component_kind_to_string(kind);
+
+   icalerror_check_arg_rz( (kind_string!=0),"Unknown kind of component");
+
+   icalmemory_append_string(&buf, &buf_ptr, &buf_size, "BEGIN:");
+   icalmemory_append_string(&buf, &buf_ptr, &buf_size, kind_string);
+   icalmemory_append_string(&buf, &buf_ptr, &buf_size, newline);
+   
+
+
+   for( itr = pvl_head(impl->properties);
+        itr != 0;
+        itr = pvl_next(itr))
+    {  
+       p = (icalproperty*)pvl_data(itr);
+       
+       icalerror_assert((p!=0),"Got a null property");
+       tmp_buf = icalproperty_as_ical_string(p);
+       
+       icalmemory_append_string(&buf, &buf_ptr, &buf_size, tmp_buf);
+    }
+   
+   
+   for( itr = pvl_head(impl->components);
+       itr != 0;
+       itr = pvl_next(itr))
+   {   
+       c = (icalcomponent*)pvl_data(itr);
+       
+       tmp_buf = icalcomponent_as_ical_string(c);
+       
+       icalmemory_append_string(&buf, &buf_ptr, &buf_size, tmp_buf);
+       
+   }
+   
+   icalmemory_append_string(&buf, &buf_ptr, &buf_size, "END:");
+   icalmemory_append_string(&buf, &buf_ptr, &buf_size, 
+                           icalenum_component_kind_to_string(kind));
+   icalmemory_append_string(&buf, &buf_ptr, &buf_size, newline);
+
+   out_buf = icalmemory_tmp_copy(buf);
+   free(buf);
+
+   return out_buf;
+}
+
+
+int
+icalcomponent_is_valid (icalcomponent* component)
+{
+    struct icalcomponent_impl *impl = (struct icalcomponent_impl *)component;
+
+       
+    if ( (strcmp(impl->id,"comp") == 0) &&
+        impl->kind != ICAL_NO_COMPONENT){
+       return 1;
+    } else {
+       return 0;
+    }
+
+}
+
+
+icalcomponent_kind
+icalcomponent_isa (icalcomponent* component)
+{
+    struct icalcomponent_impl *impl = (struct icalcomponent_impl *)component;
+    icalerror_check_arg_rz( (component!=0), "component");
+
+   if(component != 0)
+   {
+       return impl->kind;
+   }
+
+   return ICAL_NO_COMPONENT;
+}
+
+
+int
+icalcomponent_isa_component (void* component)
+{
+    struct icalcomponent_impl *impl = (struct icalcomponent_impl *)component;
+
+    icalerror_check_arg_rz( (component!=0), "component");
+
+    if (strcmp(impl->id,"comp") == 0) {
+       return 1;
+    } else {
+       return 0;
+    }
+
+}
+
+int icalcomponent_property_sorter(void *a, void *b)
+{
+    icalproperty_kind kinda, kindb;
+    const char *ksa, *ksb;
+
+    kinda = icalproperty_isa((icalproperty*)a);
+    kindb = icalproperty_isa((icalproperty*)b);
+
+    ksa = icalenum_property_kind_to_string(kinda);
+    ksb = icalenum_property_kind_to_string(kindb);
+
+    return strcmp(ksa,ksb);
+}
+
+
+void
+icalcomponent_add_property (icalcomponent* component, icalproperty* property)
+{
+    struct icalcomponent_impl *impl;
+
+    icalerror_check_arg_rv( (component!=0), "component");
+    icalerror_check_arg_rv( (property!=0), "property");
+
+     impl = (struct icalcomponent_impl*)component;
+
+    icalerror_assert( (!icalproperty_get_parent(property)),"The property has already been added to a component. Remove the property with icalcomponent_remove_property before calling icalcomponent_add_property");
+
+    icalproperty_set_parent(property,component);
+
+#ifdef ICAL_INSERT_ORDERED
+    pvl_insert_ordered(impl->properties,
+                      icalcomponent_property_sorter,property);
+#else
+    pvl_push(impl->properties,property);
+#endif
+
+}
+
+
+void
+icalcomponent_remove_property (icalcomponent* component, icalproperty* property)
+{
+    struct icalcomponent_impl *impl;
+    pvl_elem itr, next_itr;
+    struct icalproperty_impl *pimpl;
+
+    icalerror_check_arg_rv( (component!=0), "component");
+    icalerror_check_arg_rv( (property!=0), "property");
+    
+    impl = (struct icalcomponent_impl*)component;
+
+    pimpl = (struct icalproperty_impl*)property;
+
+    icalerror_assert( (icalproperty_get_parent(property)),"The property is not a member of a component");
+
+    
+    for( itr = pvl_head(impl->properties);
+        itr != 0;
+        itr = next_itr)
+    {
+       next_itr = pvl_next(itr);
+       
+       if( pvl_data(itr) == (void*)property ){
+
+          if (impl->property_iterator == itr){
+              impl->property_iterator = pvl_next(itr);
+          }
+
+          pvl_remove( impl->properties, itr); 
+         icalproperty_set_parent(property,0);
+       }
+    }  
+}
+
+int
+icalcomponent_count_properties (icalcomponent* component, 
+                               icalproperty_kind kind)
+{
+    int count=0;
+    pvl_elem itr;
+    struct icalcomponent_impl *impl = (struct icalcomponent_impl*)component;
+
+    icalerror_check_arg_rz( (component!=0), "component");
+
+    for( itr = pvl_head(impl->properties);
+        itr != 0;
+        itr = pvl_next(itr))
+    {  
+       if(kind == icalproperty_isa((icalproperty*)pvl_data(itr)) ||
+           kind == ICAL_ANY_PROPERTY){
+           count++;
+       }
+    }
+
+
+    return count;
+
+}
+
+icalproperty* icalcomponent_get_current_property (icalcomponent* component)
+{
+
+   struct icalcomponent_impl *c = (struct icalcomponent_impl*)component;
+   icalerror_check_arg_rz( (component!=0),"component");
+
+   if ((c->property_iterator==0)){
+       return 0;
+   }
+
+   return (icalproperty*) pvl_data(c->property_iterator);
+
+}
+
+icalproperty*
+icalcomponent_get_first_property (icalcomponent* component, icalproperty_kind kind)
+{
+   struct icalcomponent_impl *c = (struct icalcomponent_impl*)component;
+   icalerror_check_arg_rz( (component!=0),"component");
+  
+   for( c->property_iterator = pvl_head(c->properties);
+       c->property_iterator != 0;
+       c->property_iterator = pvl_next(c->property_iterator)) {
+           
+       icalproperty *p =  (icalproperty*) pvl_data(c->property_iterator);
+       
+          if (icalproperty_isa(p) == kind || kind == ICAL_ANY_PROPERTY) {
+              
+              return p;
+          }
+   }
+   return 0;
+}
+
+icalproperty*
+icalcomponent_get_next_property (icalcomponent* component, icalproperty_kind kind)
+{
+   struct icalcomponent_impl *c = (struct icalcomponent_impl*)component;
+   icalerror_check_arg_rz( (component!=0),"component");
+
+   if (c->property_iterator == 0){
+       return 0;
+   }
+
+   for( c->property_iterator = pvl_next(c->property_iterator);
+       c->property_iterator != 0;
+       c->property_iterator = pvl_next(c->property_iterator)) {
+           
+       icalproperty *p =  (icalproperty*) pvl_data(c->property_iterator);
+          
+       if (icalproperty_isa(p) == kind || kind == ICAL_ANY_PROPERTY) {
+          
+          return p;
+       }
+   }
+
+   return 0;
+}
+
+
+icalproperty**
+icalcomponent_get_properties (icalcomponent* component, icalproperty_kind kind);
+
+
+void
+icalcomponent_add_component (icalcomponent* parent, icalcomponent* child)
+{
+    struct icalcomponent_impl *impl, *cimpl;
+
+    icalerror_check_arg_rv( (parent!=0), "parent");
+    icalerror_check_arg_rv( (child!=0), "child");
+    
+    impl = (struct icalcomponent_impl*)parent;
+    cimpl = (struct icalcomponent_impl*)child;
+
+    icalerror_assert( (cimpl->parent ==0),"The child component has already been added to a parent component. Remove the component with icalcomponent_remove_component before calling icalcomponent_add_component");
+
+    cimpl->parent = parent;
+
+    pvl_push(impl->components,child);
+}
+
+
+void
+icalcomponent_remove_component (icalcomponent* parent, icalcomponent* child)
+{
+   struct icalcomponent_impl *impl,*cimpl;
+   pvl_elem itr, next_itr;
+
+   icalerror_check_arg_rv( (parent!=0), "parent");
+   icalerror_check_arg_rv( (child!=0), "child");
+   
+   impl = (struct icalcomponent_impl*)parent;
+   cimpl = (struct icalcomponent_impl*)child;
+   
+   for( itr = pvl_head(impl->components);
+       itr != 0;
+       itr = next_itr)
+   {
+       next_itr = pvl_next(itr);
+       
+       if( pvl_data(itr) == (void*)child ){
+
+          if (impl->component_iterator == itr){
+              /* Don't let the current iterator become invalid */
+
+              /* HACK. The semantics for this are troubling. */
+              impl->component_iterator = 
+                  pvl_next(impl->component_iterator);
+                 
+          }
+          pvl_remove( impl->components, itr); 
+          cimpl->parent = 0;
+          break;
+       }
+   }   
+}
+
+
+int
+icalcomponent_count_components (icalcomponent* component, 
+                               icalcomponent_kind kind)
+{
+    int count=0;
+    pvl_elem itr;
+    struct icalcomponent_impl *impl = (struct icalcomponent_impl*)component;
+
+    icalerror_check_arg_rz( (component!=0), "component");
+
+    for( itr = pvl_head(impl->components);
+        itr != 0;
+        itr = pvl_next(itr))
+    {
+       if(kind == icalcomponent_isa((icalcomponent*)pvl_data(itr)) ||
+           kind == ICAL_ANY_COMPONENT){
+           count++;
+       }
+    }
+
+    return count;
+}
+
+icalcomponent*
+icalcomponent_get_current_component(icalcomponent* component)
+{
+   struct icalcomponent_impl *c = (struct icalcomponent_impl*)component;
+
+   icalerror_check_arg_rz( (component!=0),"component");
+
+   if (c->component_iterator == 0){
+       return 0;
+   }
+
+   return (icalcomponent*) pvl_data(c->component_iterator);
+}
+
+icalcomponent*
+icalcomponent_get_first_component (icalcomponent* component, 
+                                  icalcomponent_kind kind)
+{
+   struct icalcomponent_impl *c = (struct icalcomponent_impl*)component;
+
+   icalerror_check_arg_rz( (component!=0),"component");
+  
+   for( c->component_iterator = pvl_head(c->components);
+       c->component_iterator != 0;
+       c->component_iterator = pvl_next(c->component_iterator)) {
+           
+       icalcomponent *p =  (icalcomponent*) pvl_data(c->component_iterator);
+       
+          if (icalcomponent_isa(p) == kind || kind == ICAL_ANY_COMPONENT) {
+              
+              return p;
+          }
+   }
+
+   return 0;
+}
+
+
+icalcomponent*
+icalcomponent_get_next_component (icalcomponent* component, icalcomponent_kind kind)
+{
+   struct icalcomponent_impl *c = (struct icalcomponent_impl*)component;
+
+   icalerror_check_arg_rz( (component!=0),"component");
+  
+   if (c->component_iterator == 0){
+       return 0;
+   }
+
+   for( c->component_iterator = pvl_next(c->component_iterator);
+       c->component_iterator != 0;
+       c->component_iterator = pvl_next(c->component_iterator)) {
+           
+       icalcomponent *p =  (icalcomponent*) pvl_data(c->component_iterator);
+       
+          if (icalcomponent_isa(p) == kind || kind == ICAL_ANY_COMPONENT) {
+              
+              return p;
+          }
+   }
+
+   return 0;
+}
+
+icalcomponent* icalcomponent_get_first_real_component(icalcomponent *c)
+{
+    icalcomponent *comp;
+
+    for(comp = icalcomponent_get_first_component(c,ICAL_ANY_COMPONENT);
+       comp != 0;
+       comp = icalcomponent_get_next_component(c,ICAL_ANY_COMPONENT)){
+
+       icalcomponent_kind kind = icalcomponent_isa(comp);
+
+       if(kind == ICAL_VEVENT_COMPONENT ||
+          kind == ICAL_VTODO_COMPONENT ||
+          kind == ICAL_VJOURNAL_COMPONENT ){
+           return comp;
+       }
+    }
+    return 0;
+}
+
+time_t icalcomponent_convert_time(icalproperty *p)
+{
+    struct icaltimetype sict;
+    time_t convt;
+    icalproperty *tzp;
+        
+
+    /* Though it says _dtstart, it will work for dtend too */
+    sict = icalproperty_get_dtstart(p);
+
+    tzp = icalproperty_get_first_parameter(p,ICAL_TZID_PARAMETER);
+
+    if (sict.is_utc == 1 && tzp != 0){
+       icalerror_warn("icalcomponent_get_span: component has a UTC DTSTART with a timezone specified ");
+       icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR);
+       return 0; 
+    }
+
+    if(sict.is_utc == 1){
+#ifdef TEST_CONVERT_TIME
+       gchar buft[512];
+#endif
+       /* _as_timet will use gmtime() to do the conversion */
+       convt = icaltime_as_timet(sict);
+
+#ifdef TEST_CONVERT_TIME
+       printf("convert time: use as_timet:\n %s\n %s",
+              icalproperty_as_ical_string(p), ctime_r(&convt,buft));
+#endif
+
+    } else if (sict.is_utc == 0 && tzp == 0 ) {
+       time_t offset;
+#ifdef TEST_CONVERT_TIME
+       gchar buft[512];
+#endif
+
+       /* _as_timet will use localtime() to do the conversion */
+       convt = icaltime_as_timet(sict);
+       offset = icaltime_utc_offset(sict,0);
+       convt += offset;
+
+#ifdef TEST_CONVERT_TIME
+       printf("convert time: use as_timet and adjust:\n %s\n %s",
+              icalproperty_as_ical_string(p), ctime_r(&convt,buft));
+#endif
+    } else {
+#ifdef TEST_CONVERT_TIME
+       gchar buft[512];
+#endif
+       /* Convert the time to UTC for the named timezone*/
+       const char* timezone = icalparameter_get_tzid(tzp);
+       convt = icaltime_as_timet(icaltime_as_utc(sict,timezone));
+
+#ifdef TEST_CONVERT_TIME
+       printf("convert time: use _as_utc:\n %s\n %s",
+              icalproperty_as_ical_string(p), ctime_r(&convt,buft));
+#endif
+    }      
+
+    return convt;
+}
+struct icaltime_span icalcomponent_get_span(icalcomponent* comp)
+{
+    icalcomponent *inner;
+    icalproperty *p, *duration;
+    icalcomponent_kind kind;
+    struct icaltime_span span;
+    struct icaltimetype start;
+#ifdef TEST_CONVERT_TIME
+    gchar buft[512];
+#endif
+
+    span.start = 0;
+    span.end = 0;
+    span.is_busy= 1;
+
+    /* initial Error checking */
+
+/*    icalerror_check_arg_rz( (comp!=0),"comp");*/
+
+    kind  = icalcomponent_isa(comp);
+
+    if(kind == ICAL_VCALENDAR_COMPONENT){
+       inner = icalcomponent_get_first_real_component(comp);
+
+       /* Maybe there is a VTIMEZONE in there */
+       if (inner == 0){
+           inner = icalcomponent_get_first_component(comp,
+                              ICAL_VTIMEZONE_COMPONENT);
+       }
+
+    } else {
+       inner = comp;
+    }
+
+    if (inner == 0){
+       icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR);
+       /*icalerror_warn("icalcomponent_get_span: no component specified, or empty VCALENDAR component");*/
+       return span; 
+    }
+    
+    kind  = icalcomponent_isa(inner);
+
+    if( !( kind == ICAL_VEVENT_COMPONENT ||
+          kind == ICAL_VJOURNAL_COMPONENT ||
+          kind == ICAL_VTODO_COMPONENT ||         
+          kind == ICAL_VFREEBUSY_COMPONENT )) {
+       icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR);
+       /*icalerror_warn("icalcomponent_get_span: no component specified, or empty VCALENDAR component");*/
+       return span; 
+       
+    }
+
+
+
+    /* Get to work. starting with DTSTART */
+
+    p = icalcomponent_get_first_property(inner, ICAL_DTSTART_PROPERTY);
+
+    if (p ==0 ) {
+       icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR);
+       /*icalerror_warn("icalcomponent_get_span: component has no DTSTART time");*/
+       return span; 
+    }
+
+
+    start = icalproperty_get_dtstart(p);
+
+    icalerror_clear_errno();
+
+    span.start = icalcomponent_convert_time(p);
+
+#ifdef TEST_CONVERT_TIME
+    printf("convert time:\n %s %s",
+          icalproperty_as_ical_string(p), ctime_r(&span.start, buft));
+#endif
+
+    if(icalerrno != ICAL_NO_ERROR){
+       span.start = 0;
+       return span;
+    }
+
+    /* The end time could be specified as either a DTEND or a DURATION */
+    p = icalcomponent_get_first_property(inner, ICAL_DTEND_PROPERTY);
+    duration = icalcomponent_get_first_property(inner, ICAL_DURATION_PROPERTY);
+
+    if (p==0 && duration == 0 && start.is_date != 1) {
+       icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR);
+       /*icalerror_warn("icalcomponent_get_span: component has neither DTEND nor DURATION time");*/
+       span.start = 0;
+       return span; 
+    } 
+
+    if (p!=0){
+       span.end = icalcomponent_convert_time(p);
+    } else if (start.is_date == 1) {
+       /* Duration is all day */
+       span.end = span.start + 60*60*24;
+    } else {
+       /* Use the duration */
+       struct icaldurationtype dur;
+       time_t durt;
+       
+       
+       dur = icalproperty_get_duration(duration);
+
+       durt = icaldurationtype_as_int(dur);
+       span.end = span.start+durt;
+    }
+
+    return span;
+
+}
+
+
+int icalcomponent_count_errors(icalcomponent* component)
+{
+    int errors = 0;
+    icalproperty *p;
+    icalcomponent *c;
+    pvl_elem itr;
+    struct icalcomponent_impl *impl = (struct icalcomponent_impl*)component;
+
+    for( itr = pvl_head(impl->properties);
+        itr != 0;
+        itr = pvl_next(itr))
+    {  
+       p = (icalproperty*)pvl_data(itr);
+       
+       if(icalproperty_isa(p) == ICAL_XLICERROR_PROPERTY)
+       {
+           errors++;
+       }
+    }
+
+
+    for( itr = pvl_head(impl->components);
+        itr != 0;
+        itr = pvl_next(itr))
+    {  
+       c = (icalcomponent*)pvl_data(itr);
+       
+       errors += icalcomponent_count_errors(c);
+       
+    }
+
+    return errors;
+}
+
+
+void icalcomponent_strip_errors(icalcomponent* component)
+{
+    icalproperty *p;
+    icalcomponent *c;
+    pvl_elem itr, next_itr;
+    struct icalcomponent_impl *impl = (struct icalcomponent_impl*)component;
+
+   for( itr = pvl_head(impl->properties);
+        itr != 0;
+        itr = next_itr)
+    {  
+       p = (icalproperty*)pvl_data(itr);
+       next_itr = pvl_next(itr);
+
+       if(icalproperty_isa(p) == ICAL_XLICERROR_PROPERTY)
+       {
+           icalcomponent_remove_property(component,p);
+       }
+    }
+    
+    for( itr = pvl_head(impl->components);
+        itr != 0;
+        itr = pvl_next(itr))
+    {  
+       c = (icalcomponent*)pvl_data(itr);
+       icalcomponent_strip_errors(c);
+    }
+}
+
+/* Hack. This will change the state of the iterators */
+void icalcomponent_convert_errors(icalcomponent* component)
+{
+    icalproperty *p, *next_p;
+    icalcomponent *c;
+
+    for(p = icalcomponent_get_first_property(component,ICAL_ANY_PROPERTY);
+       p != 0;
+       p = next_p){
+       
+       next_p = icalcomponent_get_next_property(component,ICAL_ANY_PROPERTY);
+
+       if(icalproperty_isa(p) == ICAL_XLICERROR_PROPERTY)
+       {
+           struct icalreqstattype rst;
+           icalparameter *param  = icalproperty_get_first_parameter
+               (p,ICAL_XLICERRORTYPE_PARAMETER);
+
+           rst.code = ICAL_UNKNOWN_STATUS;
+           rst.desc = 0;
+
+           switch(icalparameter_get_xlicerrortype(param)){
+
+               case  ICAL_XLICERRORTYPE_PARAMETERNAMEPARSEERROR: {
+                   rst.code = ICAL_3_2_INVPARAM_STATUS;
+                   break;
+               }
+               case  ICAL_XLICERRORTYPE_PARAMETERVALUEPARSEERROR: {
+                   rst.code = ICAL_3_3_INVPARAMVAL_STATUS;
+                   break;
+               }
+               case  ICAL_XLICERRORTYPE_PROPERTYPARSEERROR: {              
+                   rst.code = ICAL_3_0_INVPROPNAME_STATUS;
+                   break;
+               }
+               case  ICAL_XLICERRORTYPE_VALUEPARSEERROR: {
+                   rst.code = ICAL_3_1_INVPROPVAL_STATUS;
+                   break;
+               }
+               case  ICAL_XLICERRORTYPE_COMPONENTPARSEERROR: {
+                   rst.code = ICAL_3_4_INVCOMP_STATUS;
+                   break;
+               }
+
+               default: {
+               }
+           }
+           if (rst.code != ICAL_UNKNOWN_STATUS){
+               
+               rst.debug = icalproperty_get_xlicerror(p);
+               icalcomponent_add_property(component,
+                                          icalproperty_new_requeststatus(
+                                              icalreqstattype_as_string(rst)
+                                              )
+                   );
+               
+               icalcomponent_remove_property(component,p);
+           }
+       }
+    }
+
+    for(c = icalcomponent_get_first_component(component,ICAL_ANY_COMPONENT);
+       c != 0;
+       c = icalcomponent_get_next_component(component,ICAL_ANY_COMPONENT)){
+       
+       icalcomponent_convert_errors(c);
+    }
+}
+
+
+icalcomponent* icalcomponent_get_parent(icalcomponent* component)
+{
+   struct icalcomponent_impl *c = (struct icalcomponent_impl*)component;
+
+   return c->parent;
+}
+
+void icalcomponent_set_parent(icalcomponent* component, icalcomponent* parent)
+{
+   struct icalcomponent_impl *c = (struct icalcomponent_impl*)component;
+
+   c->parent = parent;
+}
+
+icalcompiter icalcompiter_null = {ICAL_NO_COMPONENT,0};
+
+
+struct icalcomponent_kind_map {
+       icalcomponent_kind kind;
+       char name[20];
+};
+
+  
+
+static struct icalcomponent_kind_map component_map[] = 
+{
+    { ICAL_VEVENT_COMPONENT, "VEVENT" },
+    { ICAL_VTODO_COMPONENT, "VTODO" },
+    { ICAL_VJOURNAL_COMPONENT, "VJOURNAL" },
+    { ICAL_VCALENDAR_COMPONENT, "VCALENDAR" },
+    { ICAL_VFREEBUSY_COMPONENT, "VFREEBUSY" },
+    { ICAL_VTIMEZONE_COMPONENT, "VTIMEZONE" },
+    { ICAL_VALARM_COMPONENT, "VALARM" },
+    { ICAL_XSTANDARD_COMPONENT, "STANDARD" }, /*These are part of RFC2445 */
+    { ICAL_XDAYLIGHT_COMPONENT, "DAYLIGHT" }, /*but are not really components*/
+    { ICAL_X_COMPONENT, "X" },
+    { ICAL_VSCHEDULE_COMPONENT, "SCHEDULE" },
+
+    /* CAP components */
+    { ICAL_VQUERY_COMPONENT, "VQUERY" },  
+    { ICAL_VCAR_COMPONENT, "VCAR" },  
+    { ICAL_VCOMMAND_COMPONENT, "VCOMMAND" },  
+
+    /* libical private components */
+    { ICAL_XLICINVALID_COMPONENT, "X-LIC-UNKNOWN" },  
+    { ICAL_XLICMIMEPART_COMPONENT, "X-LIC-MIME-PART" },  
+    { ICAL_ANY_COMPONENT, "ANY" },  
+    { ICAL_XROOT_COMPONENT, "XROOT" },  
+
+    /* End of list */
+    { ICAL_NO_COMPONENT, "" },
+};
+
+
+
+const char* icalcomponent_kind_to_string(icalcomponent_kind kind)
+{
+    int i;
+
+    for (i=0; component_map[i].kind != ICAL_NO_COMPONENT; i++) {
+       if (component_map[i].kind == kind) {
+           return component_map[i].name;
+       }
+    }
+
+    return 0;
+
+}
+
+icalcomponent_kind icalcomponent_string_to_kind(const char* string)
+{
+    int i;
+
+    if (string ==0 ) { 
+       return ICAL_NO_COMPONENT;
+    }
+
+    for (i=0; component_map[i].kind  != ICAL_NO_COMPONENT; i++) {
+       if (strcmp(component_map[i].name, string) == 0) {
+           return component_map[i].kind;
+       }
+    }
+
+    return ICAL_NO_COMPONENT;
+}
+
+
+
+icalcompiter 
+icalcomponent_begin_component(icalcomponent* component,icalcomponent_kind kind)
+{
+    struct icalcomponent_impl *impl = (struct icalcomponent_impl*)component;
+    icalcompiter itr;
+    pvl_elem i;
+
+    itr.kind = kind;
+
+    icalerror_check_arg_re( (component!=0),"component",icalcompiter_null);
+
+    for( i = pvl_head(impl->components); i != 0; i = pvl_next(itr.iter)) {
+       
+       icalcomponent *c =  (icalcomponent*) pvl_data(i);
+       
+       if (icalcomponent_isa(c) == kind || kind == ICAL_ANY_COMPONENT) {
+           
+           itr.iter = i;
+
+           return itr;
+       }
+    }
+
+    return icalcompiter_null;
+}
+
+icalcompiter
+icalcomponent_end_component(icalcomponent* component,icalcomponent_kind kind)
+{
+    struct icalcomponent_impl *impl = (struct icalcomponent_impl*)component;
+    icalcompiter itr; 
+    pvl_elem i;
+
+    itr.kind = kind;
+
+    icalerror_check_arg_re( (component!=0),"component",icalcompiter_null);
+
+    for( i = pvl_tail(impl->components); i != 0; i = pvl_prior(i)) {
+       
+       icalcomponent *c =  (icalcomponent*) pvl_data(i);
+       
+       if (icalcomponent_isa(c) == kind || kind == ICAL_ANY_COMPONENT) {
+           
+           itr.iter = pvl_next(i);
+
+           return itr;
+       }
+    }
+
+    return icalcompiter_null;;
+}
+
+
+icalcomponent* icalcompiter_next(icalcompiter* i)
+{
+   if (i->iter == 0){
+       return 0;
+   }
+
+   icalerror_check_arg_rz( (i!=0),"i");
+
+   for( i->iter = pvl_next(i->iter);
+       i->iter != 0;
+       i->iter = pvl_next(i->iter)) {
+           
+       icalcomponent *c =  (icalcomponent*) pvl_data(i->iter);
+       
+          if (icalcomponent_isa(c) == i->kind 
+              || i->kind == ICAL_ANY_COMPONENT) {
+              
+              return icalcompiter_deref(i);;
+          }
+   }
+
+   return 0;
+
+}
+
+icalcomponent* icalcompiter_prior(icalcompiter* i)
+{
+   if (i->iter == 0){
+       return 0;
+   }
+
+   for( i->iter = pvl_prior(i->iter);
+       i->iter != 0;
+       i->iter = pvl_prior(i->iter)) {
+           
+       icalcomponent *c =  (icalcomponent*) pvl_data(i->iter);
+       
+          if (icalcomponent_isa(c) == i->kind 
+              || i->kind == ICAL_ANY_COMPONENT) {
+              
+              return icalcompiter_deref(i);;
+          }
+   }
+
+   return 0;
+
+}
+icalcomponent* icalcompiter_deref(icalcompiter* i)
+{
+    if(i->iter ==0){
+       return 0;
+    }
+
+    return pvl_data(i->iter);
+}
+
+icalcomponent* icalcomponent_get_inner(icalcomponent* comp)
+{
+    if (icalcomponent_isa(comp) == ICAL_VCALENDAR_COMPONENT){
+       return icalcomponent_get_first_real_component(comp);
+    } else {
+       return comp;
+    }
+}
+
+
+void icalcomponent_set_dtstart(icalcomponent* comp, struct icaltimetype v)
+{
+
+    icalcomponent *inner = icalcomponent_get_inner(comp); 
+    icalproperty *prop 
+       = icalcomponent_get_first_property(inner, ICAL_DTSTART_PROPERTY);
+
+
+    if (prop == 0){
+       prop = icalproperty_new_dtstart(v);
+       icalcomponent_add_property(inner, prop);
+    }
+    
+    icalproperty_set_dtstart(prop,v);
+
+}
+
+
+struct icaltimetype icalcomponent_get_dtstart(icalcomponent* comp)
+{
+    icalcomponent *inner = icalcomponent_get_inner(comp); 
+    icalproperty *prop 
+       = icalcomponent_get_first_property(inner,ICAL_DTSTART_PROPERTY);
+
+    if (prop == 0){
+       return icaltime_null_time();
+    }
+    
+    return icalproperty_get_dtstart(prop);
+}
+
+
+struct icaltimetype icalcomponent_get_dtend(icalcomponent* comp)
+{
+    icalcomponent *inner = icalcomponent_get_inner(comp); 
+
+    icalproperty *end_prop 
+       = icalcomponent_get_first_property(inner,ICAL_DTEND_PROPERTY);
+
+    icalproperty *dur_prop 
+       = icalcomponent_get_first_property(inner, ICAL_DURATION_PROPERTY);
+
+
+    if( end_prop == 0 && dur_prop == 0){
+       return icaltime_null_time();
+    } else if ( end_prop != 0) {
+       return icalproperty_get_dtend(end_prop);
+    } else if ( dur_prop != 0) { 
+       
+       struct icaltimetype start = 
+           icalcomponent_get_dtstart(inner);
+       struct icaldurationtype duration = 
+           icalproperty_get_duration(dur_prop);
+       
+       struct icaltimetype end = icaltime_add(start,duration);
+
+       return end;
+
+    } else {
+       /* Error, both duration and dtend have been specified */
+       icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR);
+       return icaltime_null_time();
+
+    }
+    
+}
+
+
+void icalcomponent_set_dtend(icalcomponent* comp, struct icaltimetype v)
+{
+    icalcomponent *inner = icalcomponent_get_inner(comp); 
+
+    icalproperty *end_prop 
+       = icalcomponent_get_first_property(inner,ICAL_DTEND_PROPERTY);
+
+    icalproperty *dur_prop 
+       = icalcomponent_get_first_property(inner,ICAL_DURATION_PROPERTY);
+
+
+    if( end_prop == 0 && dur_prop == 0){
+       end_prop = icalproperty_new_dtend(v);
+       icalcomponent_add_property(inner,end_prop);
+    } else if ( end_prop != 0) {
+       icalproperty_set_dtend(end_prop,v);
+    } else if ( dur_prop != 0) { 
+       struct icaltimetype start = 
+           icalcomponent_get_dtstart(inner);
+
+       struct icaltimetype end = 
+           icalcomponent_get_dtend(inner);
+
+       struct icaldurationtype dur 
+           = icaltime_subtract(end,start);
+
+       icalproperty_set_duration(dur_prop,dur);
+
+    } else {
+       /* Error, both duration and dtend have been specified */
+       icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR);
+    }
+}
+
+void icalcomponent_set_duration(icalcomponent* comp, 
+                               struct icaldurationtype v)
+{
+    icalcomponent *inner = icalcomponent_get_inner(comp); 
+
+    icalproperty *end_prop 
+       = icalcomponent_get_first_property(inner,ICAL_DTEND_PROPERTY);
+
+    icalproperty *dur_prop 
+       = icalcomponent_get_first_property(inner,ICAL_DURATION_PROPERTY);
+
+
+    if( end_prop == 0 && dur_prop == 0){
+       dur_prop = icalproperty_new_duration(v);
+       icalcomponent_add_property(inner, dur_prop);
+    } else if ( end_prop != 0) {
+       struct icaltimetype start = 
+           icalcomponent_get_dtstart(inner);
+       
+       struct icaltimetype new_end = icaltime_add(start,v);
+
+       icalproperty_set_dtend(end_prop,new_end);
+
+    } else if ( dur_prop != 0) { 
+       icalproperty_set_duration(dur_prop,v);
+    } else {
+       /* Error, both duration and dtend have been specified */
+       icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR);
+    }
+}
+
+struct icaldurationtype icalcomponent_get_duration(icalcomponent* comp)
+{
+    icalcomponent *inner = icalcomponent_get_inner(comp); 
+
+    icalproperty *end_prop 
+       = icalcomponent_get_first_property(inner,ICAL_DTEND_PROPERTY);
+
+    icalproperty *dur_prop 
+       = icalcomponent_get_first_property(inner,ICAL_DURATION_PROPERTY);
+
+    struct icaldurationtype null_duration;
+    memset(&null_duration,0,sizeof(struct icaldurationtype));
+
+
+    if( end_prop == 0 && dur_prop == 0){
+       return null_duration;
+    } else if ( end_prop != 0) {
+       struct icaltimetype start = 
+           icalcomponent_get_dtstart(inner);
+       time_t startt = icaltime_as_timet(start);
+
+       struct icaltimetype end = 
+           icalcomponent_get_dtend(inner);
+       time_t endt = icaltime_as_timet(end);
+       
+       return icaldurationtype_from_int(endt-startt);
+    } else if ( dur_prop != 0) { 
+       return icalproperty_get_duration(dur_prop);
+    } else {
+       /* Error, both duration and dtend have been specified */
+       icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR);
+       return null_duration;
+    }
+}
+
+void icalcomponent_set_method(icalcomponent* comp, icalproperty_method method)
+{
+    icalproperty *prop 
+       = icalcomponent_get_first_property(comp, ICAL_METHOD_PROPERTY);
+
+
+    if (prop == 0){
+       prop = icalproperty_new_method(method);
+       icalcomponent_add_property(comp, prop);
+    }
+    
+    icalproperty_set_method(prop,method);
+
+}
+
+icalproperty_method icalcomponent_get_method(icalcomponent* comp)
+{
+    icalproperty *prop 
+       = icalcomponent_get_first_property(comp,ICAL_METHOD_PROPERTY);
+
+    if (prop == 0){
+       return ICAL_METHOD_NONE;
+    }
+    
+    return icalproperty_get_method(prop);
+}
+
+void icalcomponent_set_dtstamp(icalcomponent* comp, struct icaltimetype v)
+{
+
+    icalcomponent *inner = icalcomponent_get_inner(comp); 
+    icalproperty *prop 
+       = icalcomponent_get_first_property(inner, ICAL_DTSTAMP_PROPERTY);
+
+
+    if (prop == 0){
+       prop = icalproperty_new_dtstamp(v);
+       icalcomponent_add_property(inner, prop);
+    }
+    
+    icalproperty_set_dtstamp(prop,v);
+
+}
+
+
+struct icaltimetype icalcomponent_get_dtstamp(icalcomponent* comp)
+{
+    icalcomponent *inner = icalcomponent_get_inner(comp); 
+    icalproperty *prop 
+       = icalcomponent_get_first_property(inner,ICAL_DTSTAMP_PROPERTY);
+
+    if (prop == 0){
+       return icaltime_null_time();
+    }
+    
+    return icalproperty_get_dtstamp(prop);
+}
+
+
+void icalcomponent_set_summary(icalcomponent* comp, const char* v)
+{
+    icalcomponent *inner = icalcomponent_get_inner(comp); 
+    icalproperty *prop 
+       = icalcomponent_get_first_property(inner, ICAL_SUMMARY_PROPERTY);
+
+    if (prop == 0){
+       prop = icalproperty_new_summary(v);
+       icalcomponent_add_property(inner, prop);
+    }
+    
+    icalproperty_set_summary(prop,v);
+}
+
+
+const char* icalcomponent_get_summary(icalcomponent* comp)
+{
+    icalcomponent *inner = icalcomponent_get_inner(comp); 
+    icalproperty *prop 
+       = icalcomponent_get_first_property(inner,ICAL_SUMMARY_PROPERTY);
+
+    if (prop == 0){
+       return 0;
+    }
+    
+    return icalproperty_get_summary(prop);
+
+}
+
+void icalcomponent_set_comment(icalcomponent* comp, const char* v);
+const char* icalcomponent_get_comment(icalcomponent* comp);
+
+void icalcomponent_set_uid(icalcomponent* comp, const char* v);
+const char* icalcomponent_get_uid(icalcomponent* comp);
+
+void icalcomponent_set_recurrenceid(icalcomponent* comp, 
+                                   struct icaltimetype v);
+struct icaltimetype icalcomponent_get_recurrenceid(icalcomponent* comp);
+
+
+
+
+icalcomponent* icalcomponent_new_vcalendar()
+{
+    return icalcomponent_new(ICAL_VCALENDAR_COMPONENT);
+}
+icalcomponent* icalcomponent_new_vevent()
+{
+    return icalcomponent_new(ICAL_VEVENT_COMPONENT);
+}
+icalcomponent* icalcomponent_new_vtodo()
+{
+    return icalcomponent_new(ICAL_VTODO_COMPONENT);
+}
+icalcomponent* icalcomponent_new_vjournal()
+{
+    return icalcomponent_new(ICAL_VJOURNAL_COMPONENT);
+}
+icalcomponent* icalcomponent_new_valarm()
+{
+    return icalcomponent_new(ICAL_VALARM_COMPONENT);
+}
+icalcomponent* icalcomponent_new_vfreebusy()
+{
+    return icalcomponent_new(ICAL_VFREEBUSY_COMPONENT);
+}
+icalcomponent* icalcomponent_new_vtimezone()
+{
+    return icalcomponent_new(ICAL_VTIMEZONE_COMPONENT);
+}
+icalcomponent* icalcomponent_new_xstandard()
+{
+    return icalcomponent_new(ICAL_XSTANDARD_COMPONENT);
+}
+icalcomponent* icalcomponent_new_xdaylight()
+{
+    return icalcomponent_new(ICAL_XDAYLIGHT_COMPONENT);
+}
diff --git a/src/plugins/vcalendar/libical/libical/icalcomponent.h b/src/plugins/vcalendar/libical/libical/icalcomponent.h
new file mode 100644 (file)
index 0000000..6046bbe
--- /dev/null
@@ -0,0 +1,240 @@
+/* -*- Mode: C -*- */
+/*======================================================================
+ FILE: icalcomponent.h
+ CREATOR: eric 20 March 1999
+
+
+ (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of either: 
+
+    The LGPL as published by the Free Software Foundation, version
+    2.1, available at: http://www.fsf.org/copyleft/lesser.html
+
+  Or:
+
+    The Mozilla Public License Version 1.0. You may obtain a copy of
+    the License at http://www.mozilla.org/MPL/
+
+  The original code is icalcomponent.h
+
+======================================================================*/
+
+#ifndef ICALCOMPONENT_H
+#define ICALCOMPONENT_H
+
+#include "icalproperty.h"
+#include "icalvalue.h"
+#include "icalenums.h" /* defines icalcomponent_kind */
+#include "icalattendee.h"
+#include "pvl.h"
+
+typedef void icalcomponent;
+
+/* This is exposed so that callers will not have to allocate and
+   deallocate iterators. Pretend that you can't see it. */
+typedef struct icalcompiter
+{
+       icalcomponent_kind kind;
+       pvl_elem iter;
+
+} icalcompiter;
+
+icalcomponent* icalcomponent_new(icalcomponent_kind kind);
+icalcomponent* icalcomponent_new_clone(icalcomponent* component);
+icalcomponent* icalcomponent_new_from_string(char* str);
+icalcomponent* icalcomponent_vanew(icalcomponent_kind kind, ...);
+void icalcomponent_free(icalcomponent* component);
+
+char* icalcomponent_as_ical_string(icalcomponent* component);
+
+int icalcomponent_is_valid(icalcomponent* component);
+
+icalcomponent_kind icalcomponent_isa(icalcomponent* component);
+
+int icalcomponent_isa_component (void* component);
+
+/* 
+ * Working with properties
+ */
+
+void icalcomponent_add_property(icalcomponent* component,
+                               icalproperty* property);
+
+void icalcomponent_remove_property(icalcomponent* component,
+                                  icalproperty* property);
+
+int icalcomponent_count_properties(icalcomponent* component,
+                                  icalproperty_kind kind);
+
+/* Iterate through the properties */
+icalproperty* icalcomponent_get_current_property(icalcomponent* component);
+
+icalproperty* icalcomponent_get_first_property(icalcomponent* component,
+                                             icalproperty_kind kind);
+icalproperty* icalcomponent_get_next_property(icalcomponent* component,
+                                             icalproperty_kind kind);
+
+
+/* 
+ * Working with components
+ */ 
+
+
+/* Return the first VEVENT, VTODO or VJOURNAL sub-component of cop, or
+   comp if it is one of those types */
+
+icalcomponent* icalcomponent_get_inner(icalcomponent* comp);
+
+
+void icalcomponent_add_component(icalcomponent* parent,
+                               icalcomponent* child);
+
+void icalcomponent_remove_component(icalcomponent* parent,
+                               icalcomponent* child);
+
+int icalcomponent_count_components(icalcomponent* component,
+                                  icalcomponent_kind kind);
+
+/* Iteration Routines. There are two forms of iterators, internal and
+external. The internal ones came first, and are almost completely
+sufficient, but they fail badly when you want to construct a loop that
+removes components from the container.*/
+
+
+/* Iterate through components */
+icalcomponent* icalcomponent_get_current_component (icalcomponent* component);
+
+icalcomponent* icalcomponent_get_first_component(icalcomponent* component,
+                                             icalcomponent_kind kind);
+icalcomponent* icalcomponent_get_next_component(icalcomponent* component,
+                                             icalcomponent_kind kind);
+
+/* Using external iterators */
+icalcompiter icalcomponent_begin_component(icalcomponent* component,
+                                          icalcomponent_kind kind);
+icalcompiter icalcomponent_end_component(icalcomponent* component,
+                                        icalcomponent_kind kind);
+icalcomponent* icalcompiter_next(icalcompiter* i);
+icalcomponent* icalcompiter_prior(icalcompiter* i);
+icalcomponent* icalcompiter_deref(icalcompiter* i);
+
+
+
+
+/* Working with embedded error properties */
+
+int icalcomponent_count_errors(icalcomponent* component);
+
+/* Remove all X-LIC-ERROR properties*/
+void icalcomponent_strip_errors(icalcomponent* component);
+
+/* Convert some X-LIC-ERROR properties into RETURN-STATUS properties*/
+void icalcomponent_convert_errors(icalcomponent* component);
+
+/* Internal operations. They are private, and you should not be using them. */
+icalcomponent* icalcomponent_get_parent(icalcomponent* component);
+void icalcomponent_set_parent(icalcomponent* component, 
+                             icalcomponent* parent);
+
+/* Kind conversion routiens */
+
+icalcomponent_kind icalcomponent_string_to_kind(const char* string);
+
+const char* icalcomponent_kind_to_string(icalcomponent_kind kind);
+
+
+/************* Derived class methods.  ****************************
+
+If the code was in an OO language, the remaining routines would be
+members of classes derived from icalcomponent. Don't call them on the
+wrong component subtypes. */
+
+/* For VCOMPONENT: Return a reference to the first VEVENT, VTODO or
+   VJOURNAL */
+icalcomponent* icalcomponent_get_first_real_component(icalcomponent *c);
+
+/* For VEVENT, VTODO, VJOURNAL and VTIMEZONE: report the start and end
+   times of an event in UTC */
+struct icaltime_span icalcomponent_get_span(icalcomponent* comp);
+
+/******************** Convienience routines **********************/
+
+void icalcomponent_set_dtstart(icalcomponent* comp, struct icaltimetype v);
+struct icaltimetype icalcomponent_get_dtstart(icalcomponent* comp);
+
+/* For the icalcomponent routines only, dtend and duration are tied
+   together. If you call the set routine for one and the other exists,
+   the routine will calculate the change to the other. That is, if
+   there is a DTEND and you call set_duration, the routine will modify
+   DTEND to be the sum of DTSTART and the duration. If you call a get
+   routine for one and the other exists, the routine will calculate
+   the return value. If you call a set routine and neither exists, the
+   routine will create the apcompriate comperty */
+
+
+struct icaltimetype icalcomponent_get_dtend(icalcomponent* comp);
+void icalcomponent_set_dtend(icalcomponent* comp, struct icaltimetype v);
+
+void icalcomponent_set_duration(icalcomponent* comp, 
+                               struct icaldurationtype v);
+struct icaldurationtype icalcomponent_get_duration(icalcomponent* comp);
+
+void icalcomponent_set_method(icalcomponent* comp, icalproperty_method method);
+icalproperty_method icalcomponent_get_method(icalcomponent* comp);
+
+struct icaltimetype icalcomponent_get_dtstamp(icalcomponent* comp);
+void icalcomponent_set_dtstamp(icalcomponent* comp, struct icaltimetype v);
+
+
+void icalcomponent_set_summary(icalcomponent* comp, const char* v);
+const char* icalcomponent_get_summary(icalcomponent* comp);
+
+void icalcomponent_set_comment(icalcomponent* comp, const char* v);
+const char* icalcomponent_get_comment(icalcomponent* comp);
+
+void icalcomponent_set_uid(icalcomponent* comp, const char* v);
+const char* icalcomponent_get_uid(icalcomponent* comp);
+
+void icalcomponent_set_recurrenceid(icalcomponent* comp, 
+                                   struct icaltimetype v);
+struct icaltimetype icalcomponent_get_recurrenceid(icalcomponent* comp);
+
+
+void icalcomponent_set_organizer(icalcomponent* comp, 
+                                struct icalorganizertype org);
+                                 struct icalorganizertype icalcomponent_get_organizer(icalcomponent* comp);
+
+
+void icalcomponent_add_attendee(icalcomponent *comp,
+                               struct icalattendeetype attendee);
+
+int icalcomponent_remove_attendee(icalcomponent *comp, char* cuid);
+
+/* Get the Nth attendee. Out of range indices return an attendee
+   with cuid == 0 */
+struct icalattendeetype icalcomponent_get_attendee(icalcomponent *comp,
+  int index);
+
+
+
+
+/*************** Type Specific routines ***************/
+
+icalcomponent* icalcomponent_new_vcalendar();
+icalcomponent* icalcomponent_new_vevent();
+icalcomponent* icalcomponent_new_vtodo();
+icalcomponent* icalcomponent_new_vjournal();
+icalcomponent* icalcomponent_new_valarm();
+icalcomponent* icalcomponent_new_vfreebusy();
+icalcomponent* icalcomponent_new_vtimezone();
+icalcomponent* icalcomponent_new_xstandard();
+icalcomponent* icalcomponent_new_xdaylight();
+
+
+
+#endif /* !ICALCOMPONENT_H */
+
+
+
diff --git a/src/plugins/vcalendar/libical/libical/icalderivedparameter.c.in b/src/plugins/vcalendar/libical/libical/icalderivedparameter.c.in
new file mode 100644 (file)
index 0000000..895ecc4
--- /dev/null
@@ -0,0 +1,211 @@
+/* -*- Mode: C -*-
+  ======================================================================
+  FILE: icalderivedparameters.{c,h}
+  CREATOR: eric 09 May 1999
+  
+  $Id$
+  $Locker$
+    
+
+ (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of either: 
+
+    The LGPL as published by the Free Software Foundation, version
+    2.1, available at: http://www.fsf.org/copyleft/lesser.html
+
+  Or:
+
+    The Mozilla Public License Version 1.0. You may obtain a copy of
+    the License at http://www.mozilla.org/MPL/
+
+  The original code is icalderivedparameters.{c,h}
+
+  Contributions from:
+     Graham Davison (g.m.davison@computer.org)
+
+ ======================================================================*/
+/*#line 29 "icalparameter.c.in"*/
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+
+#include "icalparameter.h"
+#include "icalparameterimpl.h"
+
+#include "icalproperty.h"
+#include "icalerror.h"
+#include "icalmemory.h"
+
+#include <stdlib.h> /* for malloc() */
+#include <errno.h>
+#include <string.h> /* for memset() */
+
+icalvalue_kind icalparameter_value_to_value_kind(icalparameter_value value);
+
+struct icalparameter_impl* icalparameter_new_impl(icalparameter_kind kind);
+
+/* This map associates each of the parameters with the string
+   representation of the paramter's name */
+struct icalparameter_kind_map {
+    icalparameter_kind kind;
+    char *name;
+    
+};
+
+static struct icalparameter_kind_map parameter_map[];
+
+
+const char* icalparameter_kind_to_string(icalparameter_kind kind)
+{
+    int i;
+
+    for (i=0; parameter_map[i].kind != ICAL_NO_PARAMETER; i++) {
+       if (parameter_map[i].kind == kind) {
+           return parameter_map[i].name;
+       }
+    }
+
+    return 0;
+
+}
+
+icalparameter_kind icalparameter_string_to_kind(const char* string)
+{
+    int i;
+
+    if (string ==0 ) { 
+       return ICAL_NO_PARAMETER;
+    }
+
+    for (i=0; parameter_map[i].kind  != ICAL_NO_PARAMETER; i++) {
+
+       if (strcmp(parameter_map[i].name, string) == 0) {
+           return parameter_map[i].kind;
+       }
+    }
+
+    if(strncmp(string,"X-",2)==0){
+       return ICAL_X_PARAMETER;
+    }
+
+    return ICAL_NO_PARAMETER;
+}
+
+/* This map associates the enumerations for the VALUE parameter with
+   the kinds of VALUEs. */
+
+struct icalparameter_value_kind_map {
+    icalparameter_value value; 
+    icalvalue_kind kind; 
+};
+
+static struct icalparameter_value_kind_map value_kind_map[];
+
+
+icalvalue_kind icalparameter_value_to_value_kind(icalparameter_value value)
+{
+    int i;
+
+    for (i=0; value_kind_map[i].kind  != ICAL_NO_VALUE; i++) {
+
+       if (value_kind_map[i].value == value) {
+           return value_kind_map[i].kind;
+       }
+    }
+
+    return ICAL_NO_VALUE;
+}
+
+
+/* This map associates the parameter enumerations with a specific parameter and the string representation of the enumeration */
+
+struct icalparameter_map {
+    icalparameter_kind kind;
+    int enumeration;
+    const char* str;
+};
+
+
+static struct icalparameter_map icalparameter_map[];
+
+
+const char* icalparameter_enum_to_string(int e) 
+{
+    int i;
+
+    icalerror_check_arg_rz(e >= ICALPARAMETER_FIRST_ENUM,"e");
+    icalerror_check_arg_rz(e <= ICALPARAMETER_LAST_ENUM,"e");
+
+    for (i=0; icalparameter_map[i].kind != ICAL_NO_PARAMETER; i++){
+        if(e == icalparameter_map[i].enumeration){
+            return icalparameter_map[i].str;
+        }
+    }
+
+    return 0;
+}
+
+int icalparameter_string_to_enum(const char* str)
+{
+    int i;
+
+    icalerror_check_arg_rz(str != 0,"str");
+
+    for (i=0; icalparameter_map[i].kind != ICAL_NO_PARAMETER; i++){
+        if(strcmp(str,icalparameter_map[i].str) == 0) {
+            return icalparameter_map[i].enumeration;
+        }
+    }
+
+    return 0;
+}
+
+icalparameter* icalparameter_new_from_value_string(icalparameter_kind kind,const  char* val)
+{
+
+    struct icalparameter_impl* param=0;
+    int found_kind = 0;
+    int i;
+
+    icalerror_check_arg_rz((val!=0),"val");
+
+    /* Search through the parameter map to find a matching kind */
+
+    param = icalparameter_new_impl(kind);
+
+    for (i=0; icalparameter_map[i].kind != ICAL_NO_PARAMETER; i++){
+        if(kind == icalparameter_map[i].kind) {
+            found_kind = 1;
+            if(strcmp(val,icalparameter_map[i].str) == 0) {
+
+                param->data = (int)icalparameter_map[i].enumeration;
+                return param;
+            }
+        }
+    }
+    
+    if(found_kind == 1){
+        /* The kind was in the parameter map, but the string did not
+           match, so assume that it is an alternate value, like an
+           X-value.*/
+        
+        icalparameter_set_xvalue(param, val);
+
+    } else {
+        /* If the kind was not found, then it must be a string type */
+        
+        ((struct icalparameter_impl*)param)->string = icalmemory_strdup(val);
+
+    }
+
+   return param;
+}
+
+
+
+
+/* Everything below this line is machine generated. Do not edit. */
diff --git a/src/plugins/vcalendar/libical/libical/icalderivedparameter.h.in b/src/plugins/vcalendar/libical/libical/icalderivedparameter.h.in
new file mode 100644 (file)
index 0000000..a291292
--- /dev/null
@@ -0,0 +1,37 @@
+/* -*- Mode: C -*- */
+/*======================================================================
+  FILE: icalparam.h
+  CREATOR: eric 20 March 1999
+
+
+  $Id$
+  $Locker$
+
+  
+
+ (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of either: 
+
+    The LGPL as published by the Free Software Foundation, version
+    2.1, available at: http://www.fsf.org/copyleft/lesser.html
+
+  Or:
+
+    The Mozilla Public License Version 1.0. You may obtain a copy of
+    the License at http://www.mozilla.org/MPL/
+
+  The original code is icalparam.h
+
+  ======================================================================*/
+
+#ifndef ICALDERIVEDPARAMETER_H
+#define ICALDERIVEDPARAMETER_H
+
+
+typedef void icalparameter;
+
+const char* icalparameter_enum_to_string(int e);
+int icalparameter_string_to_enum(const char* str); 
+
diff --git a/src/plugins/vcalendar/libical/libical/icalderivedproperty.c.in b/src/plugins/vcalendar/libical/libical/icalderivedproperty.c.in
new file mode 100644 (file)
index 0000000..9092b6a
--- /dev/null
@@ -0,0 +1,250 @@
+/* -*- Mode: C -*- */
+
+/*======================================================================
+  FILE: icalderivedproperty.c
+  CREATOR: eric 15 Feb 2001
+  
+  $Id$
+
+
+ (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of either: 
+
+    The LGPL as published by the Free Software Foundation, version
+    2.1, available at: http://www.fsf.org/copyleft/lesser.html
+
+  Or:
+
+    The Mozilla Public License Version 1.0. You may obtain a copy of
+    the License at http://www.mozilla.org/MPL/
+
+  The original code is icalproperty.c
+
+======================================================================*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "icalproperty.h"
+#include "icalcomponent.h"
+#include "pvl.h"
+#include "icalenums.h"
+#include "icalerror.h"
+#include "icalmemory.h"
+#include "icalparser.h"
+
+#include <string.h> /* For icalmemory_strdup, rindex */
+#include <assert.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <stdio.h> /* for printf */
+#include <stdarg.h> /* for va_list, va_start, etc. */
+                                               
+#define TMP_BUF_SIZE 1024
+
+struct icalproperty_impl*
+icalproperty_new_impl (icalproperty_kind kind);
+
+/* This map associates the property kinds with the string
+   representation of the property name and the kind of VALUE that the
+   property uses as a default */
+
+struct  icalproperty_map {
+       icalproperty_kind kind;
+       const char *name;
+       icalvalue_kind value;
+
+};
+
+static struct icalproperty_map property_map[];
+
+const char* icalproperty_kind_to_string(icalproperty_kind kind)
+{
+    int i;
+
+    for (i=0; property_map[i].kind != ICAL_NO_PROPERTY; i++) {
+       if (property_map[i].kind == kind) {
+           return property_map[i].name;
+       }
+    }
+
+    return 0;
+
+}
+
+
+icalproperty_kind icalproperty_string_to_kind(const char* string)
+{
+    int i;
+
+    if (string ==0 ) { 
+       return ICAL_NO_PROPERTY;
+    }
+
+
+    for (i=0; property_map[i].kind  != ICAL_NO_PROPERTY; i++) {
+       if (strcmp(property_map[i].name, string) == 0) {
+           return property_map[i].kind;
+       }
+    }
+
+    if(strncmp(string,"X-",2)==0){
+       return ICAL_X_PROPERTY;
+    }
+
+
+    return ICAL_NO_PROPERTY;
+}
+
+
+icalvalue_kind icalproperty_value_kind_to_kind(icalvalue_kind kind)
+{
+    int i;
+
+    for (i=0; property_map[i].kind  != ICAL_NO_PROPERTY; i++) {
+       if ( property_map[i].value == kind ) {
+           return property_map[i].kind;
+       }
+    }
+
+    return ICAL_NO_VALUE;
+}
+
+
+
+icalvalue_kind icalproperty_kind_to_value_kind(icalproperty_kind kind)
+{
+    int i;
+
+    for (i=0; property_map[i].kind  != ICAL_NO_PROPERTY; i++) {
+       if ( property_map[i].kind == kind ) {
+           return property_map[i].value;
+       }
+    }
+
+    return ICAL_NO_VALUE;
+}
+
+
+/* This map associates the property enumerations with the king of
+   property that they are used in and the string representation of the
+   enumeration */
+
+struct icalproperty_enum_map {
+    icalproperty_kind prop;
+    int prop_enum;
+    const char* str;
+}; 
+
+static struct icalproperty_enum_map enum_map[];
+
+
+const char* icalproperty_enum_to_string(int e)
+{
+    icalerror_check_arg_rz(e >= ICALPROPERTY_FIRST_ENUM,"e");
+    icalerror_check_arg_rz(e <= ICALPROPERTY_LAST_ENUM,"e");
+
+    return enum_map[e-ICALPROPERTY_FIRST_ENUM].str;
+}
+
+int icalproperty_string_to_enum(const char* str)
+{
+    int i;
+
+    icalerror_check_arg_rz(str!=0,"str")
+
+    while(*str == ' '){
+       str++;
+    }
+
+    for (i=ICALPROPERTY_FIRST_ENUM; i != ICALPROPERTY_LAST_ENUM; i++) {
+       if ( strcmp(enum_map[i-ICALPROPERTY_FIRST_ENUM].str, str) == 0) {
+           return enum_map[i-ICALPROPERTY_FIRST_ENUM].prop_enum;
+       }
+    }
+
+    return 0;
+}
+
+int icalproperty_enum_belongs_to_property(icalproperty_kind kind, int e)
+{
+    int i;
+
+
+    for (i=ICALPROPERTY_FIRST_ENUM; i != ICALPROPERTY_LAST_ENUM; i++) {
+        if(enum_map[i-ICALPROPERTY_FIRST_ENUM].prop_enum == e && 
+           enum_map[i-ICALPROPERTY_FIRST_ENUM].prop == kind ){
+            return 1;
+        }
+    }
+
+    return 0;
+}
+
+
+const char* icalproperty_method_to_string(icalproperty_method method)
+{
+    icalerror_check_arg_rz(method >= ICAL_METHOD_X,"method");
+    icalerror_check_arg_rz(method <= ICAL_METHOD_NONE,"method");
+
+    return enum_map[method-ICALPROPERTY_FIRST_ENUM].str;
+}
+
+icalproperty_method icalproperty_string_to_method(const char* str)
+{
+    int i;
+
+    icalerror_check_arg_rx(str!=0,"str",ICAL_METHOD_NONE)
+
+    while(*str == ' '){
+       str++;
+    }
+
+    for (i=ICAL_METHOD_X-ICALPROPERTY_FIRST_ENUM; 
+         i != ICAL_METHOD_NONE-ICALPROPERTY_FIRST_ENUM;
+         i++) {
+       if ( strcmp(enum_map[i].str, str) == 0) {
+           return (icalproperty_method)enum_map[i].prop_enum;
+       }
+    }
+
+    return ICAL_METHOD_NONE;
+}
+
+
+const char* icalenum_status_to_string(icalproperty_status status)
+{
+    icalerror_check_arg_rz(status >= ICAL_STATUS_X,"status");
+    icalerror_check_arg_rz(status <= ICAL_STATUS_NONE,"status");
+
+    return enum_map[status-ICALPROPERTY_FIRST_ENUM].str;
+}
+
+icalproperty_status icalenum_string_to_status(const char* str)
+{
+    int i;
+
+    icalerror_check_arg_rx(str!=0,"str",ICAL_STATUS_NONE)
+
+    while(*str == ' '){
+       str++;
+    }
+
+    for (i=ICAL_STATUS_X-ICALPROPERTY_FIRST_ENUM; 
+         i != ICAL_STATUS_NONE-ICALPROPERTY_FIRST_ENUM;
+         i++) {
+       if ( strcmp(enum_map[i].str, str) == 0) {
+           return (icalproperty_method)enum_map[i].prop_enum;
+       }
+    }
+
+    return ICAL_STATUS_NONE;
+
+}
+
+
+
+/* Everything below this line is machine generated. Do not edit. */
diff --git a/src/plugins/vcalendar/libical/libical/icalderivedproperty.h.in b/src/plugins/vcalendar/libical/libical/icalderivedproperty.h.in
new file mode 100644 (file)
index 0000000..2295f39
--- /dev/null
@@ -0,0 +1,23 @@
+/* -*- Mode: C -*-
+  ======================================================================
+  FILE: icalderivedproperties.{c,h}
+  CREATOR: eric 09 May 1999
+  
+  $Id$
+    
+ (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org
+ ======================================================================*/
+
+
+#ifndef ICALDERIVEDPROPERTY_H
+#define ICALDERIVEDPROPERTY_H
+
+#include <time.h>
+#include "icalparameter.h"
+#include "icalderivedvalue.h"  
+#include "icalrecur.h"
+
+typedef void icalproperty;
+
+
+/* Everything below this line is machine generated. Do not edit. */
diff --git a/src/plugins/vcalendar/libical/libical/icalderivedvalue.c.in b/src/plugins/vcalendar/libical/libical/icalderivedvalue.c.in
new file mode 100644 (file)
index 0000000..519673b
--- /dev/null
@@ -0,0 +1,298 @@
+/* -*- Mode: C -*- */
+/*======================================================================
+  FILE: icalvalue.c
+  CREATOR: eric 02 May 1999
+  
+  $Id$
+
+
+ (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of either: 
+
+    The LGPL as published by the Free Software Foundation, version
+    2.1, available at: http://www.fsf.org/copyleft/lesser.html
+
+  Or:
+
+    The Mozilla Public License Version 1.0. You may obtain a copy of
+    the License at http://www.mozilla.org/MPL/
+
+  The original code is icalvalue.c
+
+  Contributions from:
+     Graham Davison (g.m.davison@computer.org)
+
+
+======================================================================*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "icalerror.h"
+#include "icalmemory.h"
+#include "icalparser.h"
+#include "icalenums.h"
+
+#include "icalvalueimpl.h"
+
+#include <stdlib.h> /* for malloc */
+#include <stdio.h> /* for sprintf */
+#include <string.h> /* For memset, others */
+#include <stddef.h> /* For offsetof() macro */
+#include <errno.h>
+#include <time.h> /* for mktime */
+#include <stdlib.h> /* for atoi and atof */
+#include <limits.h> /* for SHRT_MAX */         
+
+
+
+#define TMP_BUF_SIZE 1024
+
+struct icalvalue_impl*  icalvalue_new_impl(icalvalue_kind kind);
+
+/* This map associates each of the value types with its string
+   representation */
+struct icalvalue_kind_map {
+       icalvalue_kind kind;
+       char name[20];
+};
+
+static struct icalvalue_kind_map value_map[]; 
+
+const char* icalvalue_kind_to_string(icalvalue_kind kind)
+{
+    int i;
+
+    for (i=0; value_map[i].kind != ICAL_NO_VALUE; i++) {
+       if (value_map[i].kind == kind) {
+           return value_map[i].name;
+       }
+    }
+
+    return 0;
+}
+
+icalvalue_kind icalvalue_string_to_kind(const char* str)
+{
+    int i;
+
+    for (i=0; value_map[i].kind != ICAL_NO_VALUE; i++) {
+       if (strcmp(value_map[i].name,str) == 0) {
+           return value_map[i].kind;
+       }
+    }
+
+    return  value_map[i].kind;
+
+}
+
+icalvalue* icalvalue_new_x (const char* v){
+   struct icalvalue_impl* impl = icalvalue_new_impl(ICAL_X_VALUE);
+   icalerror_check_arg_rz( (v!=0),"v");
+
+   icalvalue_set_x((icalvalue*)impl,v);
+   return (icalvalue*)impl;
+}
+void icalvalue_set_x(icalvalue* value, const char* v) {
+    struct icalvalue_impl* impl; 
+    icalerror_check_arg_rv( (value!=0),"value");
+    icalerror_check_arg_rv( (v!=0),"v");
+
+    impl = (struct icalvalue_impl*)value;
+    if(impl->x_value!=0) {free((void*)impl->x_value);}
+
+    impl->x_value = icalmemory_strdup(v);
+
+    if (impl->x_value == 0){
+      errno = ENOMEM;
+    }
+ }
+const char* icalvalue_get_x(icalvalue* value) {
+
+    icalerror_check_arg_rz( (value!=0),"value");
+    icalerror_check_value_type(value, ICAL_X_VALUE);
+    return ((struct icalvalue_impl*)value)->x_value;
+}
+
+/* Recur is a special case, so it is not auto generated. */
+icalvalue*
+icalvalue_new_recur (struct icalrecurrencetype v)
+{
+   struct icalvalue_impl* impl = icalvalue_new_impl(ICAL_RECUR_VALUE);
+    
+   icalvalue_set_recur((icalvalue*)impl,v);
+
+   return (icalvalue*)impl;
+}
+
+void
+icalvalue_set_recur(icalvalue* value, struct icalrecurrencetype v)
+{
+    struct icalvalue_impl* impl; 
+    
+    icalerror_check_arg_rv( (value!=0),"value");
+    icalerror_check_value_type(value, ICAL_RECUR_VALUE);
+
+    impl = (struct icalvalue_impl*)value;
+
+    if (impl->data.v_recur != 0){
+       free(impl->data.v_recur);
+       impl->data.v_recur = 0;
+    }
+
+    impl->data.v_recur = malloc(sizeof(struct icalrecurrencetype));
+
+    if (impl->data.v_recur == 0){
+       icalerror_set_errno(ICAL_NEWFAILED_ERROR);
+       return;
+    } else {
+       memcpy(impl->data.v_recur, &v, sizeof(struct icalrecurrencetype));
+    }
+              
+}
+
+struct icalrecurrencetype
+icalvalue_get_recur(icalvalue* value)
+{
+    icalerror_check_arg( (value!=0),"value");
+    icalerror_check_value_type(value, ICAL_RECUR_VALUE);
+  
+    return *(((struct icalvalue_impl*)value)->data.v_recur);
+}
+
+
+
+
+icalvalue*
+icalvalue_new_trigger (struct icaltriggertype v)
+{
+   struct icalvalue_impl* impl = icalvalue_new_impl(ICAL_TRIGGER_VALUE);
+   icalvalue_set_trigger((icalvalue*)impl,v);
+
+   return (icalvalue*)impl;
+}
+
+void
+icalvalue_set_trigger(icalvalue* value, struct icaltriggertype v)
+{
+    struct icalvalue_impl* impl; 
+    
+    icalerror_check_arg_rv( (value!=0),"value");
+    
+    impl = (struct icalvalue_impl*)value;
+
+   if(!icaltime_is_null_time(v.time)){
+       icalvalue_set_datetime((icalvalue*)impl,v.time);
+       impl->kind = ICAL_DATETIME_VALUE;
+   } else {
+       icalvalue_set_duration((icalvalue*)impl,v.duration);
+       impl->kind = ICAL_DURATION_VALUE;
+   }
+
+}
+
+struct icaltriggertype
+icalvalue_get_trigger(icalvalue* value)
+{
+    struct icalvalue_impl *impl = (struct icalvalue_impl*)value;
+    struct icaltriggertype tr;
+
+    icalerror_check_arg( (value!=0),"value");
+
+    if(impl->kind == ICAL_DATETIME_VALUE){
+        tr.duration = icaldurationtype_from_int(0);
+        tr.time = impl->data.v_time;
+    } else if(impl->kind == ICAL_DURATION_VALUE){
+       tr.time = icaltime_null_time();
+       tr.duration = impl->data.v_duration;
+    } else {
+       tr.duration = icaldurationtype_from_int(0);
+       tr.time = icaltime_null_time();
+       icalerror_set_errno(ICAL_BADARG_ERROR);
+    }
+
+    return tr;
+}
+
+/* DATE-TIME-PERIOD is a special case, and is not auto generated */
+
+icalvalue*
+icalvalue_new_datetimeperiod (struct icaldatetimeperiodtype v)
+{
+   struct icalvalue_impl* impl = icalvalue_new_impl(ICAL_DATETIMEPERIOD_VALUE);
+
+   icalvalue_set_datetimeperiod((icalvalue*)impl,v);
+
+   return (icalvalue*)impl;
+}
+
+void
+icalvalue_set_datetimeperiod(icalvalue* value, struct icaldatetimeperiodtype v)
+{
+    struct icalvalue_impl* impl = (struct icalvalue_impl*)value;
+    
+    icalerror_check_arg_rv( (value!=0),"value");
+    
+    icalerror_check_value_type(value, ICAL_DATETIMEPERIOD_VALUE);
+
+    if(!icaltime_is_null_time(v.time)){
+       if(!icaltime_is_valid_time(v.time)){
+           icalerror_set_errno(ICAL_BADARG_ERROR);
+           return;
+       }
+       impl->kind = ICAL_DATETIME_VALUE;
+       icalvalue_set_datetime(impl,v.time);
+    } else if (!icalperiodtype_is_null_period(v.period)) {
+       if(!icalperiodtype_is_valid_period(v.period)){
+           icalerror_set_errno(ICAL_BADARG_ERROR);
+           return;
+       }
+       impl->kind = ICAL_PERIOD_VALUE;
+       icalvalue_set_period(impl,v.period);
+    } else {
+       icalerror_set_errno(ICAL_BADARG_ERROR);
+    }
+}
+
+struct icaldatetimeperiodtype
+icalvalue_get_datetimeperiod(icalvalue* value)
+{
+  struct icaldatetimeperiodtype dtp;
+  
+  struct icalvalue_impl* impl = (struct icalvalue_impl*)value;
+  icalerror_check_arg( (value!=0),"value");
+  icalerror_check_value_type(value, ICAL_DATETIMEPERIOD_VALUE);
+  
+  if(impl->kind == ICAL_DATETIME_VALUE){
+      dtp.period = icalperiodtype_null_period();
+      dtp.time = impl->data.v_time;
+  } else if(impl->kind == ICAL_PERIOD_VALUE) {
+      dtp.period = impl->data.v_period;
+      dtp.time = icaltime_null_time();
+  } else {
+      dtp.period = icalperiodtype_null_period();
+      dtp.time = icaltime_null_time();
+      icalerror_set_errno(ICAL_BADARG_ERROR);
+  }    
+
+  return dtp;
+}
+
+
+
+
+
+
+
+
+
+/* The remaining interfaces are 'new', 'set' and 'get' for each of the value
+   types */
+
+
+/* Everything below this line is machine generated. Do not edit. */
diff --git a/src/plugins/vcalendar/libical/libical/icalderivedvalue.h.in b/src/plugins/vcalendar/libical/libical/icalderivedvalue.h.in
new file mode 100644 (file)
index 0000000..c1aba7f
--- /dev/null
@@ -0,0 +1,58 @@
+/* -*- Mode: C -*- */
+/*======================================================================
+  FILE: icalvalue.h
+  CREATOR: eric 20 March 1999
+
+
+  $Id$
+  $Locker$
+
+  
+
+ (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of either: 
+
+    The LGPL as published by the Free Software Foundation, version
+    2.1, available at: http://www.fsf.org/copyleft/lesser.html
+
+  Or:
+
+    The Mozilla Public License Version 1.0. You may obtain a copy of
+    the License at http://www.mozilla.org/MPL/
+
+  The original code is icalvalue.h
+
+  ======================================================================*/
+
+#ifndef ICALDERIVEDVALUE_H
+#define ICALDERIVEDVALUE_H
+
+#include "icaltypes.h"
+#include "icalrecur.h"
+#include "icaltime.h"
+#include "icalduration.h"
+#include "icalperiod.h"
+     
+typedef void icalvalue;
+
+
+
+void icalvalue_set_x(icalvalue* value, const char* v);
+icalvalue* icalvalue_new_x(const char* v);
+const char* icalvalue_get_x(icalvalue* value);
+
+icalvalue* icalvalue_new_recur (struct icalrecurrencetype v);
+void icalvalue_set_recur(icalvalue* value, struct icalrecurrencetype v);
+struct icalrecurrencetype icalvalue_get_recur(icalvalue* value);
+
+icalvalue* icalvalue_new_trigger (struct icaltriggertype v);
+void icalvalue_set_trigger(icalvalue* value, struct icaltriggertype v);
+struct icaltriggertype icalvalue_get_trigger(icalvalue* value);
+
+icalvalue* icalvalue_new_datetimeperiod (struct icaldatetimeperiodtype v);
+void icalvalue_set_datetimeperiod(icalvalue* value, struct icaldatetimeperiodtype v);
+struct icaldatetimeperiodtype icalvalue_get_datetimeperiod(icalvalue* value);
+
+/* Everything below this line is machine generated. Do not edit. */
diff --git a/src/plugins/vcalendar/libical/libical/icalduration.c b/src/plugins/vcalendar/libical/libical/icalduration.c
new file mode 100644 (file)
index 0000000..18a7439
--- /dev/null
@@ -0,0 +1,320 @@
+/* -*- Mode: C -*-
+  ======================================================================
+  FILE: icaltime.c
+  CREATOR: eric 02 June 2000
+  
+  $Id$
+  $Locker$
+    
+ (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of either: 
+
+    The LGPL as published by the Free Software Foundation, version
+    2.1, available at: http://www.fsf.org/copyleft/lesser.html
+
+  Or:
+
+    The Mozilla Public License Version 1.0. You may obtain a copy of
+    the License at http://www.mozilla.org/MPL/
+
+ The Original Code is eric. The Initial Developer of the Original
+ Code is Eric Busboom
+
+
+ ======================================================================*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "icalduration.h"
+
+#include <assert.h>
+#include <string.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+#ifdef ICAL_NO_LIBICAL
+#define icalerror_set_errno(x)
+#define  icalerror_check_arg_rv(x,y)
+#define  icalerror_check_arg_re(x,y,z)
+#else
+#include "icalerror.h"
+#include "icalmemory.h"
+#endif
+
+
+
+
+/* From Seth Alves,  <alves@hungry.com>   */
+struct icaldurationtype icaldurationtype_from_int(int t)
+{
+        struct icaldurationtype dur;
+        int used = 0;
+
+        dur = icaldurationtype_null_duration();
+
+        if(t < 0){
+            dur.is_neg = 1;
+            t = -t;
+        }
+
+        dur.weeks = (t - used) / (60 * 60 * 24 * 7);
+        used += dur.weeks * (60 * 60 * 24 * 7);
+        dur.days = (t - used) / (60 * 60 * 24);
+        used += dur.days * (60 * 60 * 24);
+        dur.hours = (t - used) / (60 * 60);
+        used += dur.hours * (60 * 60);
+        dur.minutes = (t - used) / (60);
+        used += dur.minutes * (60);
+        dur.seconds = (t - used);
+        return dur;
+}
+
+#ifndef ICAL_NO_LIBICAL
+#include "icalvalue.h"
+struct icaldurationtype icaldurationtype_from_string(const char* str)
+{
+
+    int i;
+    int begin_flag = 0;
+    int time_flag = 0;
+    int date_flag = 0;
+    int week_flag = 0;
+    int digits=-1;
+    int scan_size = -1;
+    int size = strlen(str);
+    char p;
+    struct icaldurationtype d;
+
+    memset(&d, 0, sizeof(struct icaldurationtype));
+
+    for(i=0;i != size;i++){
+       p = str[i];
+       
+       switch(p) 
+           {
+           case '-': {
+               if(i != 0 || begin_flag == 1) goto error;
+
+               d.is_neg = 1;
+               break;
+           }
+
+           case 'P': {
+               if (i != 0 && i !=1 ) goto error;
+               begin_flag = 1;
+               break;
+           }
+
+           case 'T': {
+               time_flag = 1;
+               break;
+           }
+
+           case '0':
+           case '1':
+           case '2':
+           case '3':
+           case '4':
+           case '5':
+           case '6':
+           case '7':
+           case '8':
+           case '9':
+               { 
+                   
+                   /* HACK. Skip any more digits if the l;ast one
+                       read has not been assigned */
+                   if(digits != -1){
+                       break;
+                   }
+
+                   if (begin_flag == 0) goto error;
+                   /* Get all of the digits, not one at a time */
+                   scan_size = sscanf((char*)(str+i),"%d",&digits);
+                   if(scan_size == 0) goto error;
+                   break;
+               }
+
+           case 'H': { 
+               if (time_flag == 0||week_flag == 1||d.hours !=0||digits ==-1) 
+                   goto error;
+               d.hours = digits; digits = -1;
+               break;
+           }
+           case 'M': {
+               if (time_flag == 0||week_flag==1||d.minutes != 0||digits ==-1) 
+                   goto error;
+               d.minutes = digits; digits = -1;            
+               break;
+           }
+           case 'S': {
+               if (time_flag == 0||week_flag==1||d.seconds!=0||digits ==-1) 
+                   goto error;
+               d.seconds = digits; digits = -1;            
+               break;
+           }
+           case 'W': {
+               if (time_flag==1||date_flag==1||d.weeks!=0||digits ==-1) 
+                   goto error;
+               week_flag = 1;  
+               d.weeks = digits; digits = -1;      
+               break;
+           }
+           case 'D': {
+               if (time_flag==1||week_flag==1||d.days!=0||digits ==-1) 
+                   goto error;
+               date_flag = 1;
+               d.days = digits; digits = -1;       
+               break;
+           }
+           default: {
+               goto error;
+           }
+
+           }
+    }
+
+    return d;
+       
+
+ error:
+    icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR);
+    memset(&d, 0, sizeof(struct icaldurationtype));
+    return d;
+
+}
+
+#define TMP_BUF_SIZE 1024
+void append_duration_segment(char** buf, char** buf_ptr, size_t* buf_size, 
+                            char* sep, unsigned int value) {
+
+    char temp[TMP_BUF_SIZE];
+
+    sprintf(temp,"%d",value);
+
+    icalmemory_append_string(buf, buf_ptr, buf_size, temp);
+    icalmemory_append_string(buf, buf_ptr, buf_size, sep);
+    
+}
+
+char* icaldurationtype_as_ical_string(struct icaldurationtype d) 
+{
+
+    char *buf, *output_line;
+    size_t buf_size = 256;
+    char* buf_ptr = 0;
+    int seconds;
+
+    buf = (char*)icalmemory_new_buffer(buf_size);
+    buf_ptr = buf;
+    
+
+    seconds = icaldurationtype_as_int(d);
+
+    if(seconds !=0){
+       
+       if(d.is_neg == 1){
+           icalmemory_append_char(&buf, &buf_ptr, &buf_size, '-'); 
+       }
+
+       icalmemory_append_char(&buf, &buf_ptr, &buf_size, 'P');
+    
+       if (d.weeks != 0 ) {
+           append_duration_segment(&buf, &buf_ptr, &buf_size, "W", d.weeks);
+       }
+       
+       if (d.days != 0 ) {
+           append_duration_segment(&buf, &buf_ptr, &buf_size, "D", d.days);
+       }
+       
+       if (d.hours != 0 || d.minutes != 0 || d.seconds != 0) {
+           
+           icalmemory_append_string(&buf, &buf_ptr, &buf_size, "T");
+           
+           if (d.hours != 0 ) {
+               append_duration_segment(&buf, &buf_ptr, &buf_size, "H", d.hours);
+           }
+           if (d.minutes != 0 ) {
+               append_duration_segment(&buf, &buf_ptr, &buf_size, "M", 
+                                       d.minutes);
+           }
+           if (d.seconds != 0 ) {
+               append_duration_segment(&buf, &buf_ptr, &buf_size, "S", 
+                                       d.seconds);
+           }
+           
+       }
+    } else {
+       icalmemory_append_string(&buf, &buf_ptr, &buf_size, "PTS0");
+    }
+    output_line = icalmemory_tmp_copy(buf);
+    icalmemory_free_buffer(buf);
+
+    return output_line;
+    
+}
+
+#endif
+
+
+/* From Russel Steinthal */
+int icaldurationtype_as_int(struct icaldurationtype dur)
+{
+    return (int)( (dur.seconds +
+                  (60 * dur.minutes) +
+                  (60 * 60 * dur.hours) +
+                  (60 * 60 * 24 * dur.days) +
+                  (60 * 60 * 24 * 7 * dur.weeks))
+                 * (dur.is_neg==1? -1 : 1) ) ;
+} 
+
+struct icaldurationtype icaldurationtype_null_duration()
+{
+    struct icaldurationtype d;
+    
+    memset(&d,0,sizeof(struct icaldurationtype));
+    
+    return d;
+}
+
+int icaldurationtype_is_null_duration(struct icaldurationtype d)
+{
+    if(icaldurationtype_as_int(d) == 0){
+       return 1;
+    } else {
+       return 0;
+    }
+}
+
+
+
+struct icaltimetype  icaltime_add(struct icaltimetype t,
+                                 struct icaldurationtype  d)
+{
+    int dt = icaldurationtype_as_int(d);
+    
+    t.second += dt;
+    
+    t = icaltime_normalize(t);
+    
+    return t;
+}
+
+struct icaldurationtype  icaltime_subtract(struct icaltimetype t1,
+                                          struct icaltimetype t2)
+{
+
+    time_t t1t = icaltime_as_timet(t1);
+    time_t t2t = icaltime_as_timet(t2);
+
+    return icaldurationtype_from_int(t1t-t2t);
+
+
+}
+
diff --git a/src/plugins/vcalendar/libical/libical/icalduration.h b/src/plugins/vcalendar/libical/libical/icalduration.h
new file mode 100644 (file)
index 0000000..dd6e311
--- /dev/null
@@ -0,0 +1,60 @@
+/* -*- Mode: C -*- */
+/*======================================================================
+ FILE: icalduration.h
+ CREATOR: eric 26 Jan 2001
+
+
+ $Id$
+ $Locker$
+
+ (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of either: 
+
+    The LGPL as published by the Free Software Foundation, version
+    2.1, available at: http://www.fsf.org/copyleft/lesser.html
+
+  Or:
+
+    The Mozilla Public License Version 1.0. You may obtain a copy of
+    the License at http://www.mozilla.org/MPL/
+
+ The Original Code is eric. The Initial Developer of the Original
+ Code is Eric Busboom
+
+
+======================================================================*/
+
+#ifndef ICALDURATION_H
+#define ICALDURATION_H
+
+#include "icaltime.h"
+
+struct icaldurationtype
+{
+       int is_neg;
+       unsigned int days;
+       unsigned int weeks;
+       unsigned int hours;
+       unsigned int minutes;
+       unsigned int seconds;
+};
+
+struct icaldurationtype icaldurationtype_from_int(int t);
+struct icaldurationtype icaldurationtype_from_string(const char*);
+int icaldurationtype_as_int(struct icaldurationtype duration);
+char* icaldurationtype_as_ical_string(struct icaldurationtype d);
+struct icaldurationtype icaldurationtype_null_duration();
+int icaldurationtype_is_null_duration(struct icaldurationtype d);
+
+struct icaltimetype  icaltime_add(struct icaltimetype t,
+                                 struct icaldurationtype  d);
+
+struct icaldurationtype  icaltime_subtract(struct icaltimetype t1,
+                                          struct icaltimetype t2);
+
+#endif /* !ICALDURATION_H */
+
+
+
diff --git a/src/plugins/vcalendar/libical/libical/icalenums.c b/src/plugins/vcalendar/libical/libical/icalenums.c
new file mode 100644 (file)
index 0000000..6751933
--- /dev/null
@@ -0,0 +1,135 @@
+/* -*- Mode: C -*- */
+/*======================================================================
+  FILE: icalenum.c
+  CREATOR: eric 29 April 1999
+  
+  $Id$
+
+
+ (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of either: 
+
+    The LGPL as published by the Free Software Foundation, version
+    2.1, available at: http://www.fsf.org/copyleft/lesser.html
+
+  Or:
+
+    The Mozilla Public License Version 1.0. You may obtain a copy of
+    the License at http://www.mozilla.org/MPL/
+
+  The original code is icalenum.c
+
+  ======================================================================*/
+
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "icalenums.h"
+
+#include <stdio.h> /* For fprintf */
+#include <stdio.h> /* For stderr */
+#include <string.h> /* For strncmp */
+#include <assert.h>
+
+
+
+struct {
+        enum icalrequeststatus kind;
+       int major;
+       int minor;
+       const char* str;
+} request_status_map[] = {
+    {ICAL_2_0_SUCCESS_STATUS, 2,0,"Success."},
+    {ICAL_2_1_FALLBACK_STATUS, 2,1,"Success but fallback taken  on one or more property  values."},
+    {ICAL_2_2_IGPROP_STATUS, 2,2,"Success, invalid property ignored."},
+    {ICAL_2_3_IGPARAM_STATUS, 2,3,"Success, invalid property parameter ignored."},
+    {ICAL_2_4_IGXPROP_STATUS, 2,4,"Success, unknown non-standard property ignored."},
+    {ICAL_2_5_IGXPARAM_STATUS, 2,5,"Success, unknown non standard property value  ignored."},
+    {ICAL_2_6_IGCOMP_STATUS, 2,6,"Success, invalid calendar component ignored."},
+    {ICAL_2_7_FORWARD_STATUS, 2,7,"Success, request forwarded to Calendar User."},
+    {ICAL_2_8_ONEEVENT_STATUS, 2,8,"Success, repeating event ignored. Scheduled as a  single component."},
+    {ICAL_2_9_TRUNC_STATUS, 2,9,"Success, truncated end date time to date boundary."},
+    {ICAL_2_10_ONETODO_STATUS, 2,10,"Success, repeating VTODO ignored. Scheduled as a  single VTODO."},
+    {ICAL_2_11_TRUNCRRULE_STATUS, 2,11,"Success, unbounded RRULE clipped at some finite  number of instances  "},
+    {ICAL_3_0_INVPROPNAME_STATUS, 3,0,"Invalid property name."},
+    {ICAL_3_1_INVPROPVAL_STATUS, 3,1,"Invalid property value."},
+    {ICAL_3_2_INVPARAM_STATUS, 3,2,"Invalid property parameter."},
+    {ICAL_3_3_INVPARAMVAL_STATUS, 3,3,"Invalid property parameter  value."},
+    {ICAL_3_4_INVCOMP_STATUS, 3,4,"Invalid calendar component."},
+    {ICAL_3_5_INVTIME_STATUS, 3,5,"Invalid date or time."},
+    {ICAL_3_6_INVRULE_STATUS, 3,6,"Invalid rule."},
+    {ICAL_3_7_INVCU_STATUS, 3,7,"Invalid Calendar User."},
+    {ICAL_3_8_NOAUTH_STATUS, 3,8,"No authority."},
+    {ICAL_3_9_BADVERSION_STATUS, 3,9,"Unsupported version."},
+    {ICAL_3_10_TOOBIG_STATUS, 3,10,"Request entity too large."},
+    {ICAL_3_11_MISSREQCOMP_STATUS, 3,11,"Required component or property missing."},
+    {ICAL_3_12_UNKCOMP_STATUS, 3,12,"Unknown component or property found."},
+    {ICAL_3_13_BADCOMP_STATUS, 3,13,"Unsupported component or property found"},
+    {ICAL_3_14_NOCAP_STATUS, 3,14,"Unsupported capability."},
+    {ICAL_4_0_BUSY_STATUS, 4,0,"Event conflict. Date/time  is busy."},
+    {ICAL_5_0_MAYBE_STATUS, 5,0,"Request MAY supported."},
+    {ICAL_5_1_UNAVAIL_STATUS, 5,1,"Service unavailable."},
+    {ICAL_5_2_NOSERVICE_STATUS, 5,2,"Invalid calendar service."},
+    {ICAL_5_3_NOSCHED_STATUS, 5,3,"No scheduling support for  user."},
+    {ICAL_UNKNOWN_STATUS, 0,0,"Error: Unknown request status"}
+};
+
+
+const char* icalenum_reqstat_desc(icalrequeststatus stat)
+{
+
+    int i;
+
+    for (i=0; request_status_map[i].kind  != ICAL_UNKNOWN_STATUS; i++) {
+       if ( request_status_map[i].kind ==  stat) {
+           return request_status_map[i].str;
+       }
+    }
+
+    return 0;
+}
+
+
+short icalenum_reqstat_major(icalrequeststatus stat)
+{
+    int i;
+
+    for (i=0; request_status_map[i].kind  != ICAL_UNKNOWN_STATUS; i++) {
+       if ( request_status_map[i].kind ==  stat) {
+           return request_status_map[i].major;
+       }
+    }
+    return -1;
+}
+
+short icalenum_reqstat_minor(icalrequeststatus stat)
+{
+    int i;
+
+    for (i=0; request_status_map[i].kind  != ICAL_UNKNOWN_STATUS; i++) {
+       if ( request_status_map[i].kind ==  stat) {
+           return request_status_map[i].minor;
+       }
+    }
+    return -1;
+}
+
+
+icalrequeststatus icalenum_num_to_reqstat(short major, short minor)
+{
+    int i;
+
+    for (i=0; request_status_map[i].kind  != ICAL_UNKNOWN_STATUS; i++) {
+       if ( request_status_map[i].major ==  major && request_status_map[i].minor ==  minor) {
+           return request_status_map[i].kind;
+       }
+    }
+    return 0;
+}
+
+
+
diff --git a/src/plugins/vcalendar/libical/libical/icalenums.h b/src/plugins/vcalendar/libical/libical/icalenums.h
new file mode 100644 (file)
index 0000000..21031dd
--- /dev/null
@@ -0,0 +1,157 @@
+
+/* -*- Mode: C -*-*/
+/*======================================================================
+ FILE: icalenums.h
+
+
+ (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of either: 
+
+    The LGPL as published by the Free Software Foundation, version
+    2.1, available at: http://www.fsf.org/copyleft/lesser.html
+
+  Or:
+
+    The Mozilla Public License Version 1.0. You may obtain a copy of
+    the License at http://www.mozilla.org/MPL/
+
+  The original code is icalenums.h
+
+  Contributions from:
+     Graham Davison (g.m.davison@computer.org)
+
+======================================================================*/
+
+#ifndef ICALENUMS_H
+#define ICALENUMS_H
+
+
+
+/***********************************************************************
+ * Component enumerations
+**********************************************************************/
+
+typedef enum icalcomponent_kind {
+    ICAL_NO_COMPONENT,
+    ICAL_ANY_COMPONENT,        /* Used to select all components*/
+    ICAL_XROOT_COMPONENT,
+    ICAL_XATTACH_COMPONENT, /* MIME attached data, returned by parser. */
+    ICAL_VEVENT_COMPONENT,
+    ICAL_VTODO_COMPONENT,
+    ICAL_VJOURNAL_COMPONENT,
+    ICAL_VCALENDAR_COMPONENT,
+    ICAL_VFREEBUSY_COMPONENT,
+    ICAL_VALARM_COMPONENT,
+    ICAL_XAUDIOALARM_COMPONENT,  
+    ICAL_XDISPLAYALARM_COMPONENT,
+    ICAL_XEMAILALARM_COMPONENT,
+    ICAL_XPROCEDUREALARM_COMPONENT,
+    ICAL_VTIMEZONE_COMPONENT,
+    ICAL_XSTANDARD_COMPONENT,
+    ICAL_XDAYLIGHT_COMPONENT,
+    ICAL_X_COMPONENT,
+    ICAL_VSCHEDULE_COMPONENT,
+    ICAL_VQUERY_COMPONENT,
+    ICAL_VCAR_COMPONENT,
+    ICAL_VCOMMAND_COMPONENT,
+    ICAL_XLICINVALID_COMPONENT,
+    ICAL_XLICMIMEPART_COMPONENT /* a non-stardard component that mirrors
+                               structure of MIME data */
+
+} icalcomponent_kind;
+
+
+
+/***********************************************************************
+ * Request Status codes
+ **********************************************************************/
+
+typedef enum icalrequeststatus {
+    ICAL_UNKNOWN_STATUS,
+    ICAL_2_0_SUCCESS_STATUS,
+    ICAL_2_1_FALLBACK_STATUS,
+    ICAL_2_2_IGPROP_STATUS,
+    ICAL_2_3_IGPARAM_STATUS,
+    ICAL_2_4_IGXPROP_STATUS,
+    ICAL_2_5_IGXPARAM_STATUS,
+    ICAL_2_6_IGCOMP_STATUS,
+    ICAL_2_7_FORWARD_STATUS,
+    ICAL_2_8_ONEEVENT_STATUS,
+    ICAL_2_9_TRUNC_STATUS,
+    ICAL_2_10_ONETODO_STATUS,
+    ICAL_2_11_TRUNCRRULE_STATUS,
+    ICAL_3_0_INVPROPNAME_STATUS,
+    ICAL_3_1_INVPROPVAL_STATUS,
+    ICAL_3_2_INVPARAM_STATUS,
+    ICAL_3_3_INVPARAMVAL_STATUS,
+    ICAL_3_4_INVCOMP_STATUS,
+    ICAL_3_5_INVTIME_STATUS,
+    ICAL_3_6_INVRULE_STATUS,
+    ICAL_3_7_INVCU_STATUS,
+    ICAL_3_8_NOAUTH_STATUS,
+    ICAL_3_9_BADVERSION_STATUS,
+    ICAL_3_10_TOOBIG_STATUS,
+    ICAL_3_11_MISSREQCOMP_STATUS,
+    ICAL_3_12_UNKCOMP_STATUS,
+    ICAL_3_13_BADCOMP_STATUS,
+    ICAL_3_14_NOCAP_STATUS,
+    ICAL_4_0_BUSY_STATUS,
+    ICAL_5_0_MAYBE_STATUS,
+    ICAL_5_1_UNAVAIL_STATUS,
+    ICAL_5_2_NOSERVICE_STATUS,
+    ICAL_5_3_NOSCHED_STATUS
+} icalrequeststatus;
+
+
+const char* icalenum_reqstat_desc(icalrequeststatus stat);
+short icalenum_reqstat_major(icalrequeststatus stat);
+short icalenum_reqstat_minor(icalrequeststatus stat);
+icalrequeststatus icalenum_num_to_reqstat(short major, short minor);
+
+/***********************************************************************
+ * Conversion functions
+**********************************************************************/
+
+
+/* Thse routines used to be in icalenums.c, but were moved into the
+   icalproperty, icalparameter, icalvalue, or icalcomponent modules. */
+
+/* const char* icalproperty_kind_to_string(icalproperty_kind kind);*/
+#define icalenum_property_kind_to_string(x) icalproperty_kind_to_string(x)
+
+/*icalproperty_kind icalproperty_string_to_kind(const char* string)*/
+#define icalenum_string_to_property_kind(x) icalproperty_string_to_kind(x)
+
+/*icalvalue_kind icalproperty_kind_to_value_kind(icalproperty_kind kind);*/
+#define icalenum_property_kind_to_value_kind(x) icalproperty_kind_to_value_kind(x)
+
+/*const char* icalenum_method_to_string(icalproperty_method);*/
+#define icalenum_method_to_string(x) icalproperty_method_to_string(x)
+
+/*icalproperty_method icalenum_string_to_method(const char* string);*/
+#define icalenum_string_to_method(x) icalproperty_string_to_method(x)
+
+/*const char* icalenum_status_to_string(icalproperty_status);*/
+#define icalenum_status_to_string(x) icalproperty_status_to_string(x)
+
+/*icalproperty_status icalenum_string_to_status(const char* string);*/
+#define icalenum_string_to_status(x) icalproperty_string_to_status(x)
+
+/*icalvalue_kind icalenum_string_to_value_kind(const char* str);*/
+#define icalenum_string_to_value_kind(x) icalvalue_string_to_kind(x)
+
+/*const char* icalenum_value_kind_to_string(icalvalue_kind kind);*/
+#define icalenum_value_kind_to_string(x) icalvalue_kind_to_string(x)
+
+/*const char* icalenum_component_kind_to_string(icalcomponent_kind kind);*/
+#define icalenum_component_kind_to_string(x) icalcomponent_kind_to_string(x)
+
+/*icalcomponent_kind icalenum_string_to_component_kind(const char* string);*/
+#define icalenum_string_to_component_kind(x) icalcomponent_string_to_kind(x)
+
+
+#endif /* !ICALENUMS_H */
+
diff --git a/src/plugins/vcalendar/libical/libical/icalerror.c b/src/plugins/vcalendar/libical/libical/icalerror.c
new file mode 100644 (file)
index 0000000..c1fecf4
--- /dev/null
@@ -0,0 +1,195 @@
+/* -*- Mode: C -*-
+  ======================================================================
+  FILE: icalerror.c
+  CREATOR: eric 16 May 1999
+  
+  $Id$
+  $Locker$
+    
+
+ (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of either: 
+
+    The LGPL as published by the Free Software Foundation, version
+    2.1, available at: http://www.fsf.org/copyleft/lesser.html
+
+  Or:
+
+    The Mozilla Public License Version 1.0. You may obtain a copy of
+    the License at http://www.mozilla.org/MPL/
+
+  The original code is icalerror.c
+
+ ======================================================================*/
+
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <string.h>
+#include "icalerror.h"
+
+icalerrorenum icalerrno;
+
+int foo;
+void icalerror_stop_here(void)
+{
+    foo++; /* Keep optimizers from removing routine */
+}
+
+void icalerror_crash_here(void)
+{
+    int *p=0;
+    *p = 1;
+
+    assert( *p);
+}
+
+
+void icalerror_clear_errno() {
+    
+    icalerrno = ICAL_NO_ERROR;
+}
+
+#ifdef ICAL_ERRORS_ARE_FATAL
+int icalerror_errors_are_fatal = 1;
+#else
+int icalerror_errors_are_fatal = 0;
+#endif
+
+struct icalerror_state {
+    icalerrorenum error;
+    icalerrorstate state; 
+};
+
+struct icalerror_state error_state_map[] = 
+{ 
+    { ICAL_BADARG_ERROR,ICAL_ERROR_DEFAULT},
+    { ICAL_NEWFAILED_ERROR,ICAL_ERROR_DEFAULT},
+    { ICAL_MALFORMEDDATA_ERROR,ICAL_ERROR_DEFAULT}, 
+    { ICAL_PARSE_ERROR,ICAL_ERROR_DEFAULT},
+    { ICAL_INTERNAL_ERROR,ICAL_ERROR_DEFAULT}, 
+    { ICAL_FILE_ERROR,ICAL_ERROR_DEFAULT},
+    { ICAL_USAGE_ERROR,ICAL_ERROR_DEFAULT},
+    { ICAL_UNIMPLEMENTED_ERROR,ICAL_ERROR_DEFAULT},
+    { ICAL_UNKNOWN_ERROR,ICAL_ERROR_DEFAULT},
+    { ICAL_NO_ERROR,ICAL_ERROR_DEFAULT}
+
+};
+
+struct icalerror_string_map {
+    const char* str;
+    icalerrorenum error;
+    char name[160];
+};
+
+static struct icalerror_string_map string_map[] = 
+{
+    {"BADARG",ICAL_BADARG_ERROR,"BADARG: Bad argument to function"},
+    { "NEWFAILED",ICAL_NEWFAILED_ERROR,"NEWFAILED: Failed to create a new object via a *_new() routine"},
+    {"MALFORMEDDATA",ICAL_MALFORMEDDATA_ERROR,"MALFORMEDDATA: An input string was not correctly formed or a component has missing or extra properties"},
+    { "PARSE",ICAL_PARSE_ERROR,"PARSE: Failed to parse a part of an iCal component"},
+    {"INTERNAL",ICAL_INTERNAL_ERROR,"INTERNAL: Random internal error. This indicates an error in the library code, not an error in use"}, 
+    { "FILE",ICAL_FILE_ERROR,"FILE: An operation on a file failed. Check errno for more detail."},
+    { "USAGE",ICAL_USAGE_ERROR,"USAGE: Failed to propertyl sequence calls to a set of interfaces"},
+    { "UNIMPLEMENTED",ICAL_UNIMPLEMENTED_ERROR,"UNIMPLEMENTED: This feature has not been implemented"},
+    { "NO",ICAL_NO_ERROR,"NO: No error"},
+    {"UNKNOWN",ICAL_UNKNOWN_ERROR,"UNKNOWN: Unknown error type -- icalerror_strerror() was probably given bad input"}
+};
+
+
+icalerrorenum icalerror_error_from_string(const char* str){
+    icalerrorenum e = ICAL_UNKNOWN_ERROR;
+    int i = 0;
+
+    for( i = 0; string_map[i].error != ICAL_NO_ERROR; i++){
+        if (strcmp(string_map[i].str,str) == 0){
+            e = string_map[i].error;
+        }
+    }
+
+    return e;
+}
+
+icalerrorstate icalerror_supress(const char* error){
+
+    icalerrorenum e = icalerror_error_from_string(error);
+    icalerrorstate es;
+
+     if (e == ICAL_NO_ERROR){
+        return ICAL_ERROR_UNKNOWN;
+    }
+
+
+    es = icalerror_get_error_state(e);
+    icalerror_set_error_state(e,ICAL_ERROR_NONFATAL);
+
+    return es;
+}
+
+char* icalerror_perror()
+{
+    return icalerror_strerror(icalerrno);
+}
+
+void icalerror_restore(const char* error, icalerrorstate es){
+
+
+    icalerrorenum e = icalerror_error_from_string(error);
+
+    if (e != ICAL_NO_ERROR){
+        icalerror_set_error_state(e,es);
+    }
+
+}
+
+
+
+void icalerror_set_error_state( icalerrorenum error, 
+                               icalerrorstate state)
+{
+    int i;
+
+    for(i = ICAL_BADARG_ERROR; error_state_map[i].error!= ICAL_NO_ERROR;i++){
+       if(error_state_map[i].error == error){
+           error_state_map[i].state = state;   
+       }
+    }
+}
+
+icalerrorstate icalerror_get_error_state( icalerrorenum error)
+{
+    int i;
+
+    for(i = ICAL_BADARG_ERROR; error_state_map[i].error!= ICAL_NO_ERROR;i++){
+       if(error_state_map[i].error == error){
+           return error_state_map[i].state;    
+       }
+    }
+