From 5bc4d521deb7f627f35b73926d46b81e77ce2df3 Mon Sep 17 00:00:00 2001 From: nobody Date: Wed, 27 Sep 2000 22:20:05 +0000 Subject: This commit was manufactured by cvs2svn to create tag 'GNOME_PRINT_0_24'. svn path=/tags/GNOME_PRINT_0_24/; revision=5606 --- calendar/gui/alarm-notify/alarm-notify-dialog.c | 225 -- calendar/gui/alarm-notify/alarm-notify-dialog.h | 44 - calendar/gui/alarm-notify/alarm-notify.glade | 230 -- calendar/gui/evolution-calendar-control.c | 201 -- doc/devel/calendar/public-reference.sgml | 24 - e-util/e-text-event-processor-emacs-like.c | 390 --- e-util/e-text-event-processor-emacs-like.h | 68 - e-util/e-text-event-processor-types.h | 140 - e-util/e-text-event-processor.c | 104 - e-util/e-text-event-processor.h | 74 - help/devel/calendar/public-reference.sgml | 24 - libical/.cvsignore | 19 - libical/AUTHORS | 0 libical/COPYING | 0 libical/ChangeLog | 181 - libical/INSTALL | 24 - libical/Makefile.am | 9 - libical/NEWS | 315 -- libical/README | 101 - libical/TEST | 4 - libical/THANKS | 24 - libical/TODO | 36 - libical/acconfig.h | 7 - libical/autogen.sh | 80 - libical/configure.in | 51 - libical/configure.scan | 30 - libical/design-data/.cvsignore | 2 - libical/design-data/Makefile.am | 10 - libical/design-data/components.txt | 22 - libical/design-data/param-c-types.txt | 23 - libical/design-data/params-in-prop.txt | 55 - libical/design-data/prop-to-value.txt | 57 - libical/design-data/property-tokens.txt | 65 - libical/design-data/restrictions.csv | 1348 -------- libical/design-data/status.txt | 56 - libical/design-data/value-c-types.txt | 22 - libical/design-data/value-mem-semantics.txt | 19 - libical/doc/.cvsignore | 2 - libical/doc/Makefile.am | 1 - libical/doc/UsingLibical.lyx | 1555 --------- libical/doc/UsingLibical.ps | 1605 --------- libical/doc/UsingLibical.txt | 819 ----- libical/examples/.cvsignore | 5 - libical/examples/Makefile.am | 13 - libical/examples/access_components.c | 325 -- .../examples/access_properties_and_parameters.c | 145 - libical/examples/errors.c | 70 - libical/examples/main.c | 9 - libical/examples/parse_text.c | 73 - libical/install-sh | 119 - libical/missing | 190 -- libical/mkinstalldirs | 40 - libical/scripts/.cvsignore | 2 - libical/scripts/Makefile.am | 8 - libical/scripts/mkderivedcomponents.pl | 170 - libical/scripts/mkderivedparameters.pl | 277 -- libical/scripts/mkderivedproperties.pl | 290 -- libical/scripts/mkderivedvalues.pl | 315 -- libical/scripts/mkparameterrestrictions.pl | 85 - libical/scripts/mkrestrictionrecords.pl | 109 - libical/scripts/mkrestrictiontable.pl | 94 - libical/src/.cvsignore | 2 - libical/src/Makefile.am | 1 - libical/src/libical/.cvsignore | 14 - libical/src/libical/Makefile.am | 106 - libical/src/libical/ical.h | 50 - libical/src/libical/icalcomponent.c | 925 ------ libical/src/libical/icalcomponent.h | 152 - libical/src/libical/icalenums.c | 618 ---- libical/src/libical/icalenums.h | 480 --- libical/src/libical/icalerror.c | 99 - libical/src/libical/icalerror.h | 141 - libical/src/libical/icallexer.l | 286 -- libical/src/libical/icalmemory.c | 299 -- libical/src/libical/icalmemory.h | 102 - libical/src/libical/icalmime.c | 325 -- libical/src/libical/icalmime.h | 41 - libical/src/libical/icalparameter.c | 2037 ------------ libical/src/libical/icalparameter.h | 173 - libical/src/libical/icalparser.c | 1004 ------ libical/src/libical/icalparser.h | 90 - libical/src/libical/icalproperty.c | 3467 -------------------- libical/src/libical/icalproperty.h | 396 --- libical/src/libical/icalrecur.c | 1174 ------- libical/src/libical/icalrecur.h | 44 - libical/src/libical/icalrestriction.c | 1587 --------- libical/src/libical/icalrestriction.h | 71 - libical/src/libical/icaltime.c | 199 -- libical/src/libical/icaltime.h | 75 - libical/src/libical/icaltypes.c | 297 -- libical/src/libical/icaltypes.h | 178 - libical/src/libical/icalvalue.c | 2134 ------------ libical/src/libical/icalvalue.h | 168 - libical/src/libical/icalversion.h.in | 3 - libical/src/libical/icalyacc.c | 1727 ---------- libical/src/libical/icalyacc.y | 490 --- libical/src/libical/pvl.c | 761 ----- libical/src/libical/pvl.h | 94 - libical/src/libical/sspm.c | 1191 ------- libical/src/libical/sspm.h | 138 - libical/src/libicalss/.cvsignore | 6 - libical/src/libicalss/Makefile.am | 36 - libical/src/libicalss/icalcalendar.c | 265 -- libical/src/libicalss/icalcalendar.h | 67 - libical/src/libicalss/icalcomponent.h | 115 - libical/src/libicalss/icalcsdb.h | 67 - libical/src/libicalss/icalcstp.h | 138 - libical/src/libicalss/icaldirset.c | 718 ---- libical/src/libicalss/icaldirset.h | 84 - libical/src/libicalss/icalfileset.c | 427 --- libical/src/libicalss/icalfileset.h | 90 - libical/src/libicalss/icalfilesetimpl.h | 42 - libical/src/libicalss/icalgauge.c | 208 -- libical/src/libicalss/icalgauge.h | 37 - libical/src/libicalss/icalset.c | 86 - libical/src/libicalss/icalset.h | 100 - libical/src/libicalvcal/.cvsignore | 11 - libical/src/libicalvcal/Makefile.am | 17 - libical/src/libicalvcal/README.TXT | 951 ------ libical/src/libicalvcal/icalvcal.c | 498 --- libical/src/libicalvcal/icalvcal.h | 39 - libical/src/libicalvcal/port.h | 88 - libical/src/libicalvcal/vcaltest.c | 118 - libical/src/libicalvcal/vcaltmp.c | 337 -- libical/src/libicalvcal/vcaltmp.h | 128 - libical/src/libicalvcal/vcc.c | 2141 ------------ libical/src/libicalvcal/vcc.h | 80 - libical/src/libicalvcal/vcc.y | 1218 ------- libical/src/libicalvcal/vctest.c | 95 - libical/src/libicalvcal/vobject.c | 1452 -------- libical/src/libicalvcal/vobject.h | 366 --- libical/src/test/.cvsignore | 18 - libical/src/test/Makefile.am | 23 - libical/src/test/copycluster.c | 113 - libical/src/test/findobj.c | 72 - libical/src/test/icaltestparser.c | 123 - libical/src/test/recur.c | 96 - libical/src/test/regression.c | 1568 --------- libical/src/test/storage.c | 465 --- libical/src/test/stow.c | 849 ----- libical/src/test/testmime.c | 339 -- libical/src/test/testvcal.c | 56 - libical/test-data/.cvsignore | 2 - libical/test-data/0 | 9 - libical/test-data/1 | 39 - libical/test-data/1.1 | 13 - libical/test-data/2 | 22 - libical/test-data/2445.ics | 321 -- libical/test-data/2446.ics | 998 ------ libical/test-data/3 | 21 - libical/test-data/4 | 23 - libical/test-data/5 | 16 - libical/test-data/6 | 12 - libical/test-data/7 | 14 - libical/test-data/Makefile.am | 20 - libical/test-data/complex-mime.txt | 81 - libical/test-data/recur.txt | 632 ---- libical/test-data/simple-mime.txt | 26 - libical/test-data/smallcluster.ics | 13 - libical/test-data/stresstest.ics | 178 - libical/test-data/user-cal.vcf | 76 - macros/.cvsignore | 4 - macros/ChangeLog | 1049 ------ macros/Makefile.am | 42 - macros/aclocal-include.m4 | 16 - macros/autogen.sh | 179 - macros/compiler-flags.m4 | 109 - macros/curses.m4 | 318 -- macros/gnome-bonobo-check.m4 | 166 - macros/gnome-common.m4 | 14 - macros/gnome-cxx-check.m4 | 10 - macros/gnome-fileutils.m4 | 414 --- macros/gnome-gettext.m4 | 336 -- macros/gnome-ghttp-check.m4 | 14 - macros/gnome-gnorba-check.m4 | 35 - macros/gnome-guile-checks.m4 | 119 - macros/gnome-libgtop-check.m4 | 217 -- macros/gnome-objc-checks.m4 | 83 - macros/gnome-orbit-check.m4 | 33 - macros/gnome-pilot.m4 | 137 - macros/gnome-print-check.m4 | 171 - macros/gnome-pthread-check.m4 | 16 - macros/gnome-support.m4 | 68 - macros/gnome-undelfs.m4 | 20 - macros/gnome-vfs.m4 | 120 - macros/gnome-x-checks.m4 | 80 - macros/gnome-xml-check.m4 | 30 - macros/gnome.m4 | 128 - macros/gperf-check.m4 | 79 - macros/linger.m4 | 28 - macros/need-declaration.m4 | 42 - widgets/text/e-table-text-model.c | 225 -- widgets/text/e-table-text-model.h | 61 - 193 files changed, 52170 deletions(-) delete mode 100644 calendar/gui/alarm-notify/alarm-notify-dialog.c delete mode 100644 calendar/gui/alarm-notify/alarm-notify-dialog.h delete mode 100644 calendar/gui/alarm-notify/alarm-notify.glade delete mode 100644 calendar/gui/evolution-calendar-control.c delete mode 100644 doc/devel/calendar/public-reference.sgml delete mode 100644 e-util/e-text-event-processor-emacs-like.c delete mode 100644 e-util/e-text-event-processor-emacs-like.h delete mode 100644 e-util/e-text-event-processor-types.h delete mode 100644 e-util/e-text-event-processor.c delete mode 100644 e-util/e-text-event-processor.h delete mode 100644 help/devel/calendar/public-reference.sgml delete mode 100644 libical/.cvsignore delete mode 100644 libical/AUTHORS delete mode 100644 libical/COPYING delete mode 100644 libical/ChangeLog delete mode 100644 libical/INSTALL delete mode 100644 libical/Makefile.am delete mode 100644 libical/NEWS delete mode 100644 libical/README delete mode 100644 libical/TEST delete mode 100644 libical/THANKS delete mode 100644 libical/TODO delete mode 100644 libical/acconfig.h delete mode 100755 libical/autogen.sh delete mode 100644 libical/configure.in delete mode 100644 libical/configure.scan delete mode 100644 libical/design-data/.cvsignore delete mode 100644 libical/design-data/Makefile.am delete mode 100644 libical/design-data/components.txt delete mode 100644 libical/design-data/param-c-types.txt delete mode 100644 libical/design-data/params-in-prop.txt delete mode 100644 libical/design-data/prop-to-value.txt delete mode 100644 libical/design-data/property-tokens.txt delete mode 100644 libical/design-data/restrictions.csv delete mode 100644 libical/design-data/status.txt delete mode 100644 libical/design-data/value-c-types.txt delete mode 100644 libical/design-data/value-mem-semantics.txt delete mode 100644 libical/doc/.cvsignore delete mode 100644 libical/doc/Makefile.am delete mode 100644 libical/doc/UsingLibical.lyx delete mode 100644 libical/doc/UsingLibical.ps delete mode 100644 libical/doc/UsingLibical.txt delete mode 100644 libical/examples/.cvsignore delete mode 100644 libical/examples/Makefile.am delete mode 100644 libical/examples/access_components.c delete mode 100644 libical/examples/access_properties_and_parameters.c delete mode 100644 libical/examples/errors.c delete mode 100644 libical/examples/main.c delete mode 100644 libical/examples/parse_text.c delete mode 100755 libical/install-sh delete mode 100755 libical/missing delete mode 100644 libical/mkinstalldirs delete mode 100644 libical/scripts/.cvsignore delete mode 100644 libical/scripts/Makefile.am delete mode 100755 libical/scripts/mkderivedcomponents.pl delete mode 100755 libical/scripts/mkderivedparameters.pl delete mode 100755 libical/scripts/mkderivedproperties.pl delete mode 100755 libical/scripts/mkderivedvalues.pl delete mode 100755 libical/scripts/mkparameterrestrictions.pl delete mode 100755 libical/scripts/mkrestrictionrecords.pl delete mode 100755 libical/scripts/mkrestrictiontable.pl delete mode 100644 libical/src/.cvsignore delete mode 100644 libical/src/Makefile.am delete mode 100644 libical/src/libical/.cvsignore delete mode 100644 libical/src/libical/Makefile.am delete mode 100644 libical/src/libical/ical.h delete mode 100644 libical/src/libical/icalcomponent.c delete mode 100644 libical/src/libical/icalcomponent.h delete mode 100644 libical/src/libical/icalenums.c delete mode 100644 libical/src/libical/icalenums.h delete mode 100644 libical/src/libical/icalerror.c delete mode 100644 libical/src/libical/icalerror.h delete mode 100644 libical/src/libical/icallexer.l delete mode 100644 libical/src/libical/icalmemory.c delete mode 100644 libical/src/libical/icalmemory.h delete mode 100644 libical/src/libical/icalmime.c delete mode 100644 libical/src/libical/icalmime.h delete mode 100644 libical/src/libical/icalparameter.c delete mode 100644 libical/src/libical/icalparameter.h delete mode 100644 libical/src/libical/icalparser.c delete mode 100644 libical/src/libical/icalparser.h delete mode 100644 libical/src/libical/icalproperty.c delete mode 100644 libical/src/libical/icalproperty.h delete mode 100644 libical/src/libical/icalrecur.c delete mode 100644 libical/src/libical/icalrecur.h delete mode 100644 libical/src/libical/icalrestriction.c delete mode 100644 libical/src/libical/icalrestriction.h delete mode 100644 libical/src/libical/icaltime.c delete mode 100644 libical/src/libical/icaltime.h delete mode 100644 libical/src/libical/icaltypes.c delete mode 100644 libical/src/libical/icaltypes.h delete mode 100644 libical/src/libical/icalvalue.c delete mode 100644 libical/src/libical/icalvalue.h delete mode 100644 libical/src/libical/icalversion.h.in delete mode 100644 libical/src/libical/icalyacc.c delete mode 100644 libical/src/libical/icalyacc.y delete mode 100644 libical/src/libical/pvl.c delete mode 100644 libical/src/libical/pvl.h delete mode 100644 libical/src/libical/sspm.c delete mode 100644 libical/src/libical/sspm.h delete mode 100644 libical/src/libicalss/.cvsignore delete mode 100644 libical/src/libicalss/Makefile.am delete mode 100644 libical/src/libicalss/icalcalendar.c delete mode 100644 libical/src/libicalss/icalcalendar.h delete mode 100644 libical/src/libicalss/icalcomponent.h delete mode 100644 libical/src/libicalss/icalcsdb.h delete mode 100644 libical/src/libicalss/icalcstp.h delete mode 100644 libical/src/libicalss/icaldirset.c delete mode 100644 libical/src/libicalss/icaldirset.h delete mode 100644 libical/src/libicalss/icalfileset.c delete mode 100644 libical/src/libicalss/icalfileset.h delete mode 100644 libical/src/libicalss/icalfilesetimpl.h delete mode 100644 libical/src/libicalss/icalgauge.c delete mode 100644 libical/src/libicalss/icalgauge.h delete mode 100644 libical/src/libicalss/icalset.c delete mode 100644 libical/src/libicalss/icalset.h delete mode 100644 libical/src/libicalvcal/.cvsignore delete mode 100644 libical/src/libicalvcal/Makefile.am delete mode 100644 libical/src/libicalvcal/README.TXT delete mode 100644 libical/src/libicalvcal/icalvcal.c delete mode 100644 libical/src/libicalvcal/icalvcal.h delete mode 100644 libical/src/libicalvcal/port.h delete mode 100644 libical/src/libicalvcal/vcaltest.c delete mode 100644 libical/src/libicalvcal/vcaltmp.c delete mode 100644 libical/src/libicalvcal/vcaltmp.h delete mode 100644 libical/src/libicalvcal/vcc.c delete mode 100644 libical/src/libicalvcal/vcc.h delete mode 100644 libical/src/libicalvcal/vcc.y delete mode 100644 libical/src/libicalvcal/vctest.c delete mode 100644 libical/src/libicalvcal/vobject.c delete mode 100644 libical/src/libicalvcal/vobject.h delete mode 100644 libical/src/test/.cvsignore delete mode 100644 libical/src/test/Makefile.am delete mode 100644 libical/src/test/copycluster.c delete mode 100644 libical/src/test/findobj.c delete mode 100644 libical/src/test/icaltestparser.c delete mode 100644 libical/src/test/recur.c delete mode 100644 libical/src/test/regression.c delete mode 100644 libical/src/test/storage.c delete mode 100644 libical/src/test/stow.c delete mode 100644 libical/src/test/testmime.c delete mode 100644 libical/src/test/testvcal.c delete mode 100644 libical/test-data/.cvsignore delete mode 100644 libical/test-data/0 delete mode 100644 libical/test-data/1 delete mode 100644 libical/test-data/1.1 delete mode 100644 libical/test-data/2 delete mode 100644 libical/test-data/2445.ics delete mode 100644 libical/test-data/2446.ics delete mode 100644 libical/test-data/3 delete mode 100644 libical/test-data/4 delete mode 100644 libical/test-data/5 delete mode 100644 libical/test-data/6 delete mode 100644 libical/test-data/7 delete mode 100644 libical/test-data/Makefile.am delete mode 100644 libical/test-data/complex-mime.txt delete mode 100644 libical/test-data/recur.txt delete mode 100644 libical/test-data/simple-mime.txt delete mode 100644 libical/test-data/smallcluster.ics delete mode 100644 libical/test-data/stresstest.ics delete mode 100644 libical/test-data/user-cal.vcf delete mode 100644 macros/.cvsignore delete mode 100644 macros/ChangeLog delete mode 100644 macros/Makefile.am delete mode 100644 macros/aclocal-include.m4 delete mode 100644 macros/autogen.sh delete mode 100644 macros/compiler-flags.m4 delete mode 100644 macros/curses.m4 delete mode 100644 macros/gnome-bonobo-check.m4 delete mode 100644 macros/gnome-common.m4 delete mode 100644 macros/gnome-cxx-check.m4 delete mode 100644 macros/gnome-fileutils.m4 delete mode 100644 macros/gnome-gettext.m4 delete mode 100644 macros/gnome-ghttp-check.m4 delete mode 100644 macros/gnome-gnorba-check.m4 delete mode 100644 macros/gnome-guile-checks.m4 delete mode 100644 macros/gnome-libgtop-check.m4 delete mode 100644 macros/gnome-objc-checks.m4 delete mode 100644 macros/gnome-orbit-check.m4 delete mode 100644 macros/gnome-pilot.m4 delete mode 100644 macros/gnome-print-check.m4 delete mode 100644 macros/gnome-pthread-check.m4 delete mode 100644 macros/gnome-support.m4 delete mode 100644 macros/gnome-undelfs.m4 delete mode 100644 macros/gnome-vfs.m4 delete mode 100644 macros/gnome-x-checks.m4 delete mode 100644 macros/gnome-xml-check.m4 delete mode 100644 macros/gnome.m4 delete mode 100644 macros/gperf-check.m4 delete mode 100644 macros/linger.m4 delete mode 100644 macros/need-declaration.m4 delete mode 100644 widgets/text/e-table-text-model.c delete mode 100644 widgets/text/e-table-text-model.h diff --git a/calendar/gui/alarm-notify/alarm-notify-dialog.c b/calendar/gui/alarm-notify/alarm-notify-dialog.c deleted file mode 100644 index 7d8357599c..0000000000 --- a/calendar/gui/alarm-notify/alarm-notify-dialog.c +++ /dev/null @@ -1,225 +0,0 @@ -/* Evolution calendar - alarm notification dialog - * - * Copyright (C) 2000 Helix Code, Inc. - * - * Author: Federico Mena-Quintero - * - * 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 2 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. - */ - -#include -#include -#include -#include "alarm-notify-dialog.h" - - - -/* The useful contents of the alarm notify dialog */ -typedef struct { - GladeXML *xml; - - GtkWidget *dialog; - GtkWidget *close; - GtkWidget *snooze; - GtkWidget *edit; - GtkWidget *heading; - GtkWidget *summary; - GtkWidget *snooze_time; - - AlarmNotifyFunc func; - gpointer func_data; -} AlarmNotify; - - - -/* Callback used when the notify dialog is destroyed */ -static void -dialog_destroy_cb (GtkObject *object, gpointer data) -{ - AlarmNotify *an; - - an = data; - gtk_object_unref (GTK_OBJECT (an->xml)); - g_free (an); -} - -/* Delete_event handler for the alarm notify dialog */ -static gint -delete_event_cb (GtkWidget *widget, GdkEvent *event, gpointer data) -{ - AlarmNotify *an; - - an = data; - g_assert (an->func != NULL); - - (* an->func) (ALARM_NOTIFY_CLOSE, -1, an->func_data); - - gtk_widget_destroy (widget); - return TRUE; -} - -/* Callback for the close button */ -static void -close_clicked_cb (GtkWidget *widget, gpointer data) -{ - AlarmNotify *an; - - an = data; - g_assert (an->func != NULL); - - (* an->func) (ALARM_NOTIFY_CLOSE, -1, an->func_data); - - gtk_widget_destroy (an->dialog); -} - -/* Callback for the snooze button */ -static void -snooze_clicked_cb (GtkWidget *widget, gpointer data) -{ - AlarmNotify *an; - int snooze_time; - - an = data; - g_assert (an->func != NULL); - - snooze_time = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (an->snooze_time)); - (* an->func) (ALARM_NOTIFY_SNOOZE, snooze_time, an->func_data); - - gtk_widget_destroy (an->dialog); -} - -/* Callback for the edit button */ -static void -edit_clicked_cb (GtkWidget *widget, gpointer data) -{ - AlarmNotify *an; - - an = data; - g_assert (an->func != NULL); - - (* an->func) (ALARM_NOTIFY_EDIT, -1, an->func_data); - - gtk_widget_destroy (an->dialog); -} - -/** - * alarm_notify_dialog: - * @trigger: Trigger time for the alarm. - * @occur: Occurrence time for the event. - * @comp: Calendar component object which corresponds to the alarm. - * @func: Function to be called when a dialog action is invoked. - * @func_data: Closure data for @func. - * - * Runs the alarm notification dialog. The specified @func will be used to - * notify the client about result of the actions in the dialog. - * - * Return value: TRUE on success, FALSE if the dialog could not be created. - **/ -gboolean -alarm_notify_dialog (time_t trigger, time_t occur, CalComponent *comp, - AlarmNotifyFunc func, gpointer func_data) -{ - AlarmNotify *an; - char buf[256]; - struct tm tm_trigger; - struct tm tm_occur; - CalComponentText summary; - - g_return_val_if_fail (trigger != -1, FALSE); - g_return_val_if_fail (occur != -1, FALSE); - g_return_val_if_fail (comp != NULL, FALSE); - g_return_val_if_fail (IS_CAL_COMPONENT (comp), FALSE); - g_return_val_if_fail (func != NULL, FALSE); - - an = g_new0 (AlarmNotify, 1); - - an->func = func; - an->func_data = func_data; - - an->xml = glade_xml_new (EVOLUTION_GLADEDIR "/alarm-notify.glade", NULL); - if (!an->xml) { - g_message ("alarm_notify_dialog(): Could not load the Glade XML file!"); - g_free (an); - return FALSE; - } - - an->dialog = glade_xml_get_widget (an->xml, "alarm-notify"); - an->close = glade_xml_get_widget (an->xml, "close"); - an->snooze = glade_xml_get_widget (an->xml, "snooze"); - an->edit = glade_xml_get_widget (an->xml, "edit"); - an->heading = glade_xml_get_widget (an->xml, "heading"); - an->summary = glade_xml_get_widget (an->xml, "summary"); - an->snooze_time = glade_xml_get_widget (an->xml, "snooze-time"); - - if (!(an->dialog && an->close && an->snooze && an->edit && an->heading && an->summary - && an->snooze_time)) { - g_message ("alarm_notify_dialog(): Could not find all widgets in Glade file!"); - gtk_object_unref (GTK_OBJECT (an->xml)); - g_free (an); - return FALSE; - } - - gtk_object_set_data (GTK_OBJECT (an->dialog), "alarm-notify", an); - gtk_signal_connect (GTK_OBJECT (an->dialog), "destroy", - GTK_SIGNAL_FUNC (dialog_destroy_cb), an); - - /* Title */ - - /* FIXME: use am_pm_flag or 24-hour time */ - - tm_trigger = *localtime (&trigger); - strftime (buf, sizeof (buf), _("Alarm on %A %b %d %Y %H:%M"), &tm_trigger); - gtk_window_set_title (GTK_WINDOW (an->dialog), buf); - - /* Heading */ - - tm_occur = *localtime (&occur); - strftime (buf, sizeof (buf), - _("Notification about your appointment on %A %b %d %Y %H:%M"), - &tm_occur); - gtk_label_set_text (GTK_LABEL (an->heading), buf); - - /* Summary */ - - cal_component_get_summary (comp, &summary); - - if (summary.value) - gtk_label_set_text (GTK_LABEL (an->summary), summary.value); - else - gtk_label_set_text (GTK_LABEL (an->summary), _("No summary available.")); - - /* Connect actions */ - - gtk_signal_connect (GTK_OBJECT (an->dialog), "delete_event", - GTK_SIGNAL_FUNC (delete_event_cb), - an); - - gtk_signal_connect (GTK_OBJECT (an->close), "clicked", - GTK_SIGNAL_FUNC (close_clicked_cb), - an); - - gtk_signal_connect (GTK_OBJECT (an->snooze), "clicked", - GTK_SIGNAL_FUNC (snooze_clicked_cb), - an); - - gtk_signal_connect (GTK_OBJECT (an->edit), "clicked", - GTK_SIGNAL_FUNC (edit_clicked_cb), - an); - - /* Run! */ - - gtk_widget_show (an->dialog); - return TRUE; -} diff --git a/calendar/gui/alarm-notify/alarm-notify-dialog.h b/calendar/gui/alarm-notify/alarm-notify-dialog.h deleted file mode 100644 index 1e56f1c586..0000000000 --- a/calendar/gui/alarm-notify/alarm-notify-dialog.h +++ /dev/null @@ -1,44 +0,0 @@ -/* Evolution calendar - alarm notification dialog - * - * Copyright (C) 2000 Helix Code, Inc. - * - * Author: Federico Mena-Quintero - * - * 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 2 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 ALARM_NOTIFY_DIALOG_H -#define ALARM_NOTIFY_DIALOG_H - -#include -#include -#include - - - -typedef enum { - ALARM_NOTIFY_CLOSE, - ALARM_NOTIFY_SNOOZE, - ALARM_NOTIFY_EDIT -} AlarmNotifyResult; - -typedef void (* AlarmNotifyFunc) (AlarmNotifyResult result, int snooze_mins, gpointer data); - -gboolean alarm_notify_dialog (time_t trigger, time_t occur, CalComponent *comp, - AlarmNotifyFunc func, gpointer func_data); - - - -#endif diff --git a/calendar/gui/alarm-notify/alarm-notify.glade b/calendar/gui/alarm-notify/alarm-notify.glade deleted file mode 100644 index 32d7e03f8b..0000000000 --- a/calendar/gui/alarm-notify/alarm-notify.glade +++ /dev/null @@ -1,230 +0,0 @@ - - - - - Evolution Calendar - evolution-calendar - - src - pixmaps - C - True - True - False - True - True - True - True - interface.c - interface.h - callbacks.c - callbacks.h - support.c - support.h - True - alarm-notify.glade.h - - - - GtkWindow - alarm-notify - True - - GTK_WINDOW_DIALOG - GTK_WIN_POS_CENTER - False - False - False - False - - - GtkVBox - vbox2 - 4 - True - False - 4 - - - GtkHBox - hbox3 - True - False - 8 - - 0 - True - True - - - - GtkVBox - vbox5 - True - False - 4 - - 0 - True - True - - - - GtkLabel - heading - True - - GTK_JUSTIFY_LEFT - True - 0 - 0.5 - 0 - 0 - - 0 - False - False - - - - - GtkLabel - summary - True - - GTK_JUSTIFY_LEFT - True - 0 - 0.5 - 0 - 0 - - 0 - False - False - - - - - - GtkVBox - vbox4 - True - False - 4 - - 0 - True - True - - - - GtkButton - close - True - True - - - 0 - False - False - - - - - GtkButton - snooze - True - True - - - 0 - False - False - - - - - GtkButton - edit - True - True - - - 0 - False - False - - - - - - - GtkHSeparator - hseparator1 - True - - 0 - True - True - - - - - GtkHBox - hbox4 - True - False - 4 - - 0 - True - True - - - - GtkLabel - label4 - True - - GTK_JUSTIFY_CENTER - False - 0 - 0.5 - 0 - 0 - - 0 - False - False - - - - - GtkSpinButton - snooze-time - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 5 - 1 - 1440 - 1 - 5 - 5 - - 0 - False - False - - - - - - - diff --git a/calendar/gui/evolution-calendar-control.c b/calendar/gui/evolution-calendar-control.c deleted file mode 100644 index 7ebe2b5f8e..0000000000 --- a/calendar/gui/evolution-calendar-control.c +++ /dev/null @@ -1,201 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ - -#include -#include -#include -#include -#include -#include - -#ifdef USING_OAF -#include -#else -#include -#endif - -#include -#include -#include -#include - -#define PROPERTY_CALENDAR_URI "folder_uri" - -#define PROPERTY_CALENDAR_URI_IDX 1 - -#ifdef USING_OAF -#define CONTROL_FACTORY_ID "OAFIID:control-factory:calendar:f4f90989-0f50-4af2-ad94-8bbdf331f0bc" -#else -#define CONTROL_FACTORY_ID "control-factory:calendar" -#endif - -CORBA_Environment ev; -CORBA_ORB orb; - - -static void -control_activate_cb (BonoboControl *control, - gboolean activate, - gpointer user_data) -{ - if (activate) - calendar_control_activate (control, user_data); - else - calendar_control_deactivate (control); -} - - - -static void -init_bonobo (int *argc, char **argv) -{ -#ifdef USING_OAF - /* FIXME: VERSION instead of "0.0". */ - gnome_init_with_popt_table ("evolution-calendar", "0.0", - *argc, argv, oaf_popt_options, - 0, NULL); - oaf_init (*argc, argv); -#else - gnome_CORBA_init_with_popt_table ( - "evolution-calendar", "0.0", - argc, argv, NULL, 0, NULL, GNORBA_INIT_SERVER_FUNC, &ev); -#endif - - if (bonobo_init (CORBA_OBJECT_NIL, CORBA_OBJECT_NIL, CORBA_OBJECT_NIL) == FALSE) - g_error (_("Could not initialize Bonobo")); - - glade_gnome_init (); -} - - - -static void -get_prop (BonoboPropertyBag *bag, - BonoboArg *arg, - guint arg_id, - gpointer user_data) -{ - /*GnomeCalendar *gcal = user_data;*/ - - switch (arg_id) { - - case PROPERTY_CALENDAR_URI_IDX: - /* - if (fb && fb->uri) - BONOBO_ARG_SET_STRING (arg, fb->uri); - else - BONOBO_ARG_SET_STRING (arg, ""); - */ - break; - - default: - g_warning ("Unhandled arg %d\n", arg_id); - } -} - -static void -set_prop (BonoboPropertyBag *bag, - const BonoboArg *arg, - guint arg_id, - gpointer user_data) -{ - GnomeCalendar *gcal = user_data; - char *filename; - - switch (arg_id) { - - case PROPERTY_CALENDAR_URI_IDX: - printf ("set_prop: '%s'\n", BONOBO_ARG_GET_STRING (arg)); - filename = g_strdup_printf ("%s/calendar.vcf", - BONOBO_ARG_GET_STRING (arg)); - calendar_set_uri (gcal, filename); - g_free (filename); - break; - - default: - g_warning ("Unhandled arg %d\n", arg_id); - break; - } -} - - -static void -calendar_properties_init (GnomeCalendar *gcal) -{ - gcal->properties = bonobo_property_bag_new (get_prop, set_prop, gcal); - - bonobo_property_bag_add (gcal->properties, - PROPERTY_CALENDAR_URI, - PROPERTY_CALENDAR_URI_IDX, - BONOBO_ARG_STRING, - NULL, - _("The URI that the calendar will display"), - 0); - - bonobo_control_set_property_bag (gcal->control, gcal->properties); -} - - - -static BonoboObject * -calendar_control_factory (BonoboGenericFactory *Factory, void *closure) -{ - BonoboControl *control; - - /* Create the control. */ - GnomeCalendar *cal = new_calendar (full_name, NULL, NULL, 0); - - gtk_widget_show (GTK_WIDGET (cal)); - - control = bonobo_control_new (GTK_WIDGET (cal)); - cal->control = control; - - calendar_properties_init (cal); - - gtk_signal_connect (GTK_OBJECT (control), "activate", - control_activate_cb, cal); - - return BONOBO_OBJECT (control); -} - - -static void -calendar_control_factory_init (void) -{ - static BonoboGenericFactory *factory = NULL; - - if (factory != NULL) - return; - - puts ("XXXXXX - initializing calendar factory!!!"); - - factory = bonobo_generic_factory_new (CONTROL_FACTORY_ID, calendar_control_factory, NULL); - - if (factory == NULL) - g_error ("I could not register a Calendar control factory."); -} - - -int -main (int argc, char **argv) -{ - init_bonobo (&argc, argv); - glade_gnome_init (); - alarm_init (); - e_cursors_init (); - - init_calendar (); - - //g_log_set_always_fatal ((GLogLevelFlags) 0xFFFF); - g_log_set_always_fatal (G_LOG_LEVEL_ERROR | - G_LOG_LEVEL_CRITICAL | - G_LOG_LEVEL_WARNING); - - CORBA_exception_init (&ev); - - calendar_control_factory_init (); - component_factory_init (); - - bonobo_main (); - - return 0; -} diff --git a/doc/devel/calendar/public-reference.sgml b/doc/devel/calendar/public-reference.sgml deleted file mode 100644 index f8aa6e848d..0000000000 --- a/doc/devel/calendar/public-reference.sgml +++ /dev/null @@ -1,24 +0,0 @@ - - Calendar Public API Reference - - - - This part presents the class and function reference for the - public APIs of the different components of the Evolution - Calendar. - - - - &CalClient; - &CalComponent; - &cal-util; - &cal-recur; - &timeutil; - - - diff --git a/e-util/e-text-event-processor-emacs-like.c b/e-util/e-text-event-processor-emacs-like.c deleted file mode 100644 index 07c39c93a9..0000000000 --- a/e-util/e-text-event-processor-emacs-like.c +++ /dev/null @@ -1,390 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* e-text-event-processor.c - * Copyright (C) 2000 Helix Code, Inc. - * Author: Chris Lahey - * - * This library 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 2 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 library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#include -#include "e-text-event-processor-emacs-like.h" - -static void e_text_event_processor_emacs_like_init (ETextEventProcessorEmacsLike *card); -static void e_text_event_processor_emacs_like_class_init (ETextEventProcessorEmacsLikeClass *klass); -static gint e_text_event_processor_emacs_like_event (ETextEventProcessor *tep, ETextEventProcessorEvent *event); - -static ETextEventProcessorClass *parent_class = NULL; - -/* The arguments we take */ -enum { - ARG_0 -}; - -static const ETextEventProcessorCommand control_keys[26] = -{ - { E_TEP_START_OF_LINE, E_TEP_MOVE, 0, "" }, /* a */ - { E_TEP_BACKWARD_CHARACTER, E_TEP_MOVE, 0, "" }, /* b */ - { E_TEP_SELECTION, E_TEP_COPY, 0, "" }, /* c */ - { E_TEP_FORWARD_CHARACTER, E_TEP_DELETE, 0, "" }, /* d */ - { E_TEP_END_OF_LINE, E_TEP_MOVE, 0, "" }, /* e */ - { E_TEP_FORWARD_CHARACTER, E_TEP_MOVE, 0, "" }, /* f */ - { E_TEP_SELECTION, E_TEP_NOP, 0, "" }, /* g */ - { E_TEP_BACKWARD_CHARACTER, E_TEP_DELETE, 0, "" }, /* h */ - { E_TEP_SELECTION, E_TEP_NOP, 0, "" }, /* i */ - { E_TEP_SELECTION, E_TEP_NOP, 0, "" }, /* j */ - { E_TEP_END_OF_LINE, E_TEP_DELETE, 0, "" }, /* k */ - { E_TEP_SELECTION, E_TEP_NOP, 0, "" }, /* l */ - { E_TEP_SELECTION, E_TEP_NOP, 0, "" }, /* m */ - { E_TEP_FORWARD_LINE, E_TEP_MOVE, 0, "" }, /* n */ - { E_TEP_SELECTION, E_TEP_NOP, 0, "" }, /* o */ - { E_TEP_BACKWARD_LINE, E_TEP_MOVE, 0, "" }, /* p */ - { E_TEP_SELECTION, E_TEP_NOP, 0, "" }, /* q */ - { E_TEP_SELECTION, E_TEP_NOP, 0, "" }, /* r */ - { E_TEP_SELECTION, E_TEP_NOP, 0, "" }, /* s */ - { E_TEP_SELECTION, E_TEP_NOP, 0, "" }, /* t */ - { E_TEP_START_OF_LINE, E_TEP_DELETE, 0, "" }, /* u */ - { E_TEP_SELECTION, E_TEP_PASTE, 0, "" }, /* v */ - { E_TEP_SELECTION, E_TEP_DELETE, 0, "" }, /* w */ - { E_TEP_SELECTION, E_TEP_DELETE, 0, "" }, /* x */ - { E_TEP_SELECTION, E_TEP_PASTE, 0, "" }, /* y */ - { E_TEP_SELECTION, E_TEP_NOP, 0, "" } /* z */ -}; - -static const ETextEventProcessorCommand alt_keys[26] = -{ - { E_TEP_SELECTION, E_TEP_NOP, 0, "" }, /* a */ - { E_TEP_BACKWARD_WORD, E_TEP_MOVE, 0, "" }, /* b */ - { E_TEP_SELECTION, E_TEP_NOP, 0, "" }, /* c */ - { E_TEP_FORWARD_WORD, E_TEP_DELETE, 0, "" }, /* d */ - { E_TEP_SELECTION, E_TEP_NOP, 0, "" }, /* e */ - { E_TEP_FORWARD_WORD, E_TEP_MOVE, 0, "" }, /* f */ - { E_TEP_SELECTION, E_TEP_NOP, 0, "" }, /* g */ - { E_TEP_SELECTION, E_TEP_NOP, 0, "" }, /* h */ - { E_TEP_SELECTION, E_TEP_NOP, 0, "" }, /* i */ - { E_TEP_SELECTION, E_TEP_NOP, 0, "" }, /* j */ - { E_TEP_SELECTION, E_TEP_NOP, 0, "" }, /* k */ - { E_TEP_SELECTION, E_TEP_NOP, 0, "" }, /* l */ - { E_TEP_SELECTION, E_TEP_NOP, 0, "" }, /* m */ - { E_TEP_SELECTION, E_TEP_NOP, 0, "" }, /* n */ - { E_TEP_SELECTION, E_TEP_NOP, 0, "" }, /* o */ - { E_TEP_SELECTION, E_TEP_NOP, 0, "" }, /* p */ - { E_TEP_SELECTION, E_TEP_NOP, 0, "" }, /* q */ - { E_TEP_SELECTION, E_TEP_NOP, 0, "" }, /* r */ - { E_TEP_SELECTION, E_TEP_NOP, 0, "" }, /* s */ - { E_TEP_SELECTION, E_TEP_NOP, 0, "" }, /* t */ - { E_TEP_SELECTION, E_TEP_NOP, 0, "" }, /* u */ - { E_TEP_SELECTION, E_TEP_NOP, 0, "" }, /* v */ - { E_TEP_SELECTION, E_TEP_NOP, 0, "" }, /* w */ - { E_TEP_SELECTION, E_TEP_NOP, 0, "" }, /* x */ - { E_TEP_SELECTION, E_TEP_NOP, 0, "" }, /* y */ - { E_TEP_SELECTION, E_TEP_NOP, 0, "" } /* z */ - -}; - -GtkType -e_text_event_processor_emacs_like_get_type (void) -{ - static GtkType text_event_processor_emacs_like_type = 0; - - if (!text_event_processor_emacs_like_type) - { - static const GtkTypeInfo text_event_processor_emacs_like_info = - { - "ETextEventProcessorEmacsLike", - sizeof (ETextEventProcessorEmacsLike), - sizeof (ETextEventProcessorEmacsLikeClass), - (GtkClassInitFunc) e_text_event_processor_emacs_like_class_init, - (GtkObjectInitFunc) e_text_event_processor_emacs_like_init, - /* reserved_1 */ NULL, - /* reserved_2 */ NULL, - (GtkClassInitFunc) NULL, - }; - - text_event_processor_emacs_like_type = gtk_type_unique (e_text_event_processor_get_type (), &text_event_processor_emacs_like_info); - } - - return text_event_processor_emacs_like_type; -} - -static void -e_text_event_processor_emacs_like_class_init (ETextEventProcessorEmacsLikeClass *klass) -{ - GtkObjectClass *object_class; - ETextEventProcessorClass *processor_class; - - object_class = (GtkObjectClass*) klass; - processor_class = (ETextEventProcessorClass*) klass; - - parent_class = gtk_type_class (e_text_event_processor_get_type ()); - - processor_class->event = e_text_event_processor_emacs_like_event; -} - -static void -e_text_event_processor_emacs_like_init (ETextEventProcessorEmacsLike *tep) -{ -} - -static gint -e_text_event_processor_emacs_like_event (ETextEventProcessor *tep, ETextEventProcessorEvent *event) -{ - ETextEventProcessorCommand command; - ETextEventProcessorEmacsLike *tep_el = E_TEXT_EVENT_PROCESSOR_EMACS_LIKE(tep); - command.action = E_TEP_NOP; - switch (event->type) { - case GDK_BUTTON_PRESS: - if (event->button.button == 1) { - command.action = E_TEP_GRAB; - command.time = event->button.time; - gtk_signal_emit_by_name (GTK_OBJECT (tep), "command", &command); - if (event->button.state & GDK_SHIFT_MASK) - command.action = E_TEP_SELECT; - else - command.action = E_TEP_MOVE; - command.position = E_TEP_VALUE; - command.value = event->button.position; - command.time = event->button.time; - tep_el->mouse_down = TRUE; - } - break; - case GDK_2BUTTON_PRESS: - if (event->button.button == 1) { - command.action = E_TEP_SELECT; - command.position = E_TEP_SELECT_WORD; - command.time = event->button.time; - } - break; - case GDK_3BUTTON_PRESS: - if (event->button.button == 1) { - command.action = E_TEP_SELECT; - command.position = E_TEP_SELECT_ALL; - command.time = event->button.time; - } - break; - case GDK_BUTTON_RELEASE: - if (event->button.button == 1) { - command.action = E_TEP_UNGRAB; - command.time = event->button.time; - gtk_signal_emit_by_name (GTK_OBJECT (tep), "command", &command); - command.time = event->button.time; - tep_el->mouse_down = FALSE; - command.action = E_TEP_NOP; - } else if (event->button.button == 2) { - command.action = E_TEP_MOVE; - command.position = E_TEP_VALUE; - command.value = event->button.position; - command.time = event->button.time; - gtk_signal_emit_by_name (GTK_OBJECT (tep), "command", &command); - - command.action = E_TEP_GET_SELECTION; - command.position = E_TEP_SELECTION; - command.value = 0; - command.time = event->button.time; - } - break; - case GDK_MOTION_NOTIFY: - if (tep_el->mouse_down) { - command.action = E_TEP_SELECT; - command.position = E_TEP_VALUE; - command.time = event->motion.time; - command.value = event->motion.position; - } - break; - case GDK_KEY_PRESS: - { - ETextEventProcessorEventKey key = event->key; - command.time = event->key.time; - if (key.state & GDK_SHIFT_MASK) - command.action = E_TEP_SELECT; - else - command.action = E_TEP_MOVE; - switch(key.keyval) { - case GDK_Home: - case GDK_KP_Home: - if (key.state & GDK_CONTROL_MASK) - command.position = E_TEP_START_OF_BUFFER; - else - command.position = E_TEP_START_OF_LINE; - break; - case GDK_End: - case GDK_KP_End: - if (key.state & GDK_CONTROL_MASK) - command.position = E_TEP_END_OF_BUFFER; - else - command.position = E_TEP_END_OF_LINE; - break; - case GDK_Page_Up: - case GDK_KP_Page_Up: command.position = E_TEP_BACKWARD_PAGE; break; - - case GDK_Page_Down: - case GDK_KP_Page_Down: command.position = E_TEP_FORWARD_PAGE; break; - /* CUA has Ctrl-Up/Ctrl-Down as paragraph up down */ - case GDK_Up: - case GDK_KP_Up: command.position = E_TEP_BACKWARD_LINE; break; - - case GDK_Down: - case GDK_KP_Down: command.position = E_TEP_FORWARD_LINE; break; - - case GDK_Left: - case GDK_KP_Left: - if (key.state & GDK_CONTROL_MASK) - command.position = E_TEP_BACKWARD_WORD; - else - command.position = E_TEP_BACKWARD_CHARACTER; - break; - case GDK_Right: - case GDK_KP_Right: - if (key.state & GDK_CONTROL_MASK) - command.position = E_TEP_FORWARD_WORD; - else - command.position = E_TEP_FORWARD_CHARACTER; - break; - - case GDK_BackSpace: - command.action = E_TEP_DELETE; - if (key.state & GDK_CONTROL_MASK) - command.position = E_TEP_BACKWARD_WORD; - else - command.position = E_TEP_BACKWARD_CHARACTER; - break; - case GDK_Clear: - command.action = E_TEP_DELETE; - command.position = E_TEP_END_OF_LINE; - break; - case GDK_Insert: - case GDK_KP_Insert: - if (key.state & GDK_SHIFT_MASK) { - command.action = E_TEP_PASTE; - command.position = E_TEP_SELECTION; - } else if (key.state & GDK_CONTROL_MASK) { - command.action = E_TEP_COPY; - command.position = E_TEP_SELECTION; - } else { - /* gtk_toggle_insert(text) -- IMPLEMENT -- FIXME */ - } - break; - case GDK_Delete: - case GDK_KP_Delete: - if (key.state & GDK_CONTROL_MASK){ - command.action = E_TEP_DELETE; - command.position = E_TEP_FORWARD_WORD; - } else if (key.state & GDK_SHIFT_MASK) { - command.action = E_TEP_COPY; - command.position = E_TEP_SELECTION; - gtk_signal_emit_by_name (GTK_OBJECT (tep), "command", &command); - - command.action = E_TEP_DELETE; - command.position = E_TEP_SELECTION; - } else { - command.action = E_TEP_DELETE; - command.position = E_TEP_FORWARD_CHARACTER; - } - break; - case GDK_Tab: - case GDK_KP_Tab: - case GDK_ISO_Left_Tab: - case GDK_3270_BackTab: - /* Don't insert literally */ - command.action = E_TEP_NOP; - command.position = E_TEP_SELECTION; - break; - case GDK_Return: - case GDK_KP_Enter: - if (key.state & GDK_CONTROL_MASK) { - command.action = E_TEP_ACTIVATE; - command.position = E_TEP_SELECTION; - } else { - command.action = E_TEP_INSERT; - command.position = E_TEP_SELECTION; - command.value = 1; - command.string = "\n"; - } - break; - case GDK_Escape: - /* Don't insert literally */ - command.action = E_TEP_NOP; - command.position = E_TEP_SELECTION; - break; - - default: - if (key.state & GDK_CONTROL_MASK) { - if ((key.keyval >= 'A') && (key.keyval <= 'Z')) - key.keyval -= 'A' - 'a'; - - if ((key.keyval >= 'a') && (key.keyval <= 'z')) { - command.position = control_keys[(int) (key.keyval - 'a')].position; - if (control_keys[(int) (key.keyval - 'a')].action != E_TEP_MOVE) - command.action = control_keys[(int) (key.keyval - 'a')].action; - command.value = control_keys[(int) (key.keyval - 'a')].value; - command.string = control_keys[(int) (key.keyval - 'a')].string; - } - - if (key.keyval == 'x' || key.keyval == 'w') { - command.action = E_TEP_COPY; - command.position = E_TEP_SELECTION; - gtk_signal_emit_by_name (GTK_OBJECT (tep), "command", &command); - - command.action = E_TEP_DELETE; - command.position = E_TEP_SELECTION; - } - - break; - } else if (key.state & GDK_MOD1_MASK) { - if ((key.keyval >= 'A') && (key.keyval <= 'Z')) - key.keyval -= 'A' - 'a'; - - if ((key.keyval >= 'a') && (key.keyval <= 'z')) { - command.position = alt_keys[(int) (key.keyval - 'a')].position; - if (alt_keys[(int) (key.keyval - 'a')].action != E_TEP_MOVE) - command.action = alt_keys[(int) (key.keyval - 'a')].action; - command.value = alt_keys[(int) (key.keyval - 'a')].value; - command.string = alt_keys[(int) (key.keyval - 'a')].string; - } - } else if (key.length > 0) { - command.action = E_TEP_INSERT; - command.position = E_TEP_SELECTION; - command.value = strlen(key.string); - command.string = key.string; - - } else { - command.action = E_TEP_NOP; - } - } - break; - case GDK_KEY_RELEASE: - command.time = event->key.time; - command.action = E_TEP_NOP; - break; - default: - command.action = E_TEP_NOP; - break; - } - } - if (command.action != E_TEP_NOP) { - gtk_signal_emit_by_name (GTK_OBJECT (tep), "command", &command); - return 1; - } - else - return 0; -} - -ETextEventProcessor * -e_text_event_processor_emacs_like_new (void) -{ - ETextEventProcessorEmacsLike *retval = gtk_type_new (e_text_event_processor_emacs_like_get_type ()); - return E_TEXT_EVENT_PROCESSOR (retval); -} - diff --git a/e-util/e-text-event-processor-emacs-like.h b/e-util/e-text-event-processor-emacs-like.h deleted file mode 100644 index a2a7bc478c..0000000000 --- a/e-util/e-text-event-processor-emacs-like.h +++ /dev/null @@ -1,68 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* e-text-event-processor-emacs-like.h - * Copyright (C) 2000 Helix Code, Inc. - * Author: Chris Lahey - * - * This library 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 2 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 library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ -#ifndef __E_TEXT_EVENT_PROCESSOR_EMACS_LIKE_H__ -#define __E_TEXT_EVENT_PROCESSOR_EMACS_LIKE_H__ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#pragma } -#endif /* __cplusplus */ - -/* ETextEventProcessorEmacsLike - Turns events on a text widget into commands. Uses an emacs-ish interface. - * - */ - -#define E_TEXT_EVENT_PROCESSOR_EMACS_LIKE_TYPE (e_text_event_processor_emacs_like_get_type ()) -#define E_TEXT_EVENT_PROCESSOR_EMACS_LIKE(obj) (GTK_CHECK_CAST ((obj), E_TEXT_EVENT_PROCESSOR_EMACS_LIKE_TYPE, ETextEventProcessorEmacsLike)) -#define E_TEXT_EVENT_PROCESSOR_EMACS_LIKE_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), E_TEXT_EVENT_PROCESSOR_EMACS_LIKE_TYPE, ETextEventProcessorEmacsLikeClass)) -#define E_IS_TEXT_EVENT_PROCESSOR_EMACS_LIKE(obj) (GTK_CHECK_TYPE ((obj), E_TEXT_EVENT_PROCESSOR_EMACS_LIKE_TYPE)) -#define E_IS_TEXT_EVENT_PROCESSOR_EMACS_LIKE_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((obj), E_TEXT_EVENT_PROCESSOR_EMACS_LIKE_TYPE)) - - -typedef struct _ETextEventProcessorEmacsLike ETextEventProcessorEmacsLike; -typedef struct _ETextEventProcessorEmacsLikeClass ETextEventProcessorEmacsLikeClass; - -struct _ETextEventProcessorEmacsLike -{ - ETextEventProcessor parent; - - /* object specific fields */ - gboolean mouse_down; -}; - -struct _ETextEventProcessorEmacsLikeClass -{ - ETextEventProcessorClass parent_class; -}; - - -GtkType e_text_event_processor_emacs_like_get_type (void); -ETextEventProcessor *e_text_event_processor_emacs_like_new (void); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - - -#endif /* __E_TEXT_EVENT_PROCESSOR_EMACS_LIKE_H__ */ diff --git a/e-util/e-text-event-processor-types.h b/e-util/e-text-event-processor-types.h deleted file mode 100644 index 8f2ffbaf39..0000000000 --- a/e-util/e-text-event-processor-types.h +++ /dev/null @@ -1,140 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* e-text-event-processor.h - * Copyright (C) 2000 Helix Code, Inc. - * Author: Chris Lahey - * - * This library 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 2 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 library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -/* - * Modified by the GTK+ Team and others 1997-1999. See the AUTHORS - * file for a list of people on the GTK+ Team. See the ChangeLog - * files for a list of changes. These files are distributed with - * GTK+ at ftp://ftp.gtk.org/pub/gtk/. - */ - -#ifndef __E_TEXT_EVENT_PROCESSOR_TYPES_H__ -#define __E_TEXT_EVENT_PROCESSOR_TYPES_H__ - -#ifdef __cplusplus -extern "C" { -#pragma } -#endif /* __cplusplus */ - -#include - -typedef enum _ETextEventProcessorCommandPosition ETextEventProcessorCommandPosition; -typedef enum _ETextEventProcessorCommandAction ETextEventProcessorCommandAction; -typedef struct _ETextEventProcessorCommand ETextEventProcessorCommand; - -typedef union _ETextEventProcessorEvent ETextEventProcessorEvent; -typedef struct _ETextEventProcessorEventButton ETextEventProcessorEventButton; -typedef struct _ETextEventProcessorEventKey ETextEventProcessorEventKey; -typedef struct _ETextEventProcessorEventMotion ETextEventProcessorEventMotion; - -enum _ETextEventProcessorCommandPosition { - E_TEP_VALUE, - E_TEP_SELECTION, - - E_TEP_START_OF_BUFFER, - E_TEP_END_OF_BUFFER, - - E_TEP_START_OF_LINE, - E_TEP_END_OF_LINE, - - E_TEP_FORWARD_CHARACTER, - E_TEP_BACKWARD_CHARACTER, - - E_TEP_FORWARD_WORD, - E_TEP_BACKWARD_WORD, - - E_TEP_FORWARD_LINE, - E_TEP_BACKWARD_LINE, - - E_TEP_FORWARD_PARAGRAPH, - E_TEP_BACKWARD_PARAGRAPH, - - E_TEP_FORWARD_PAGE, - E_TEP_BACKWARD_PAGE, - - E_TEP_SELECT_WORD, - E_TEP_SELECT_ALL - -}; - -enum _ETextEventProcessorCommandAction { - E_TEP_MOVE, - E_TEP_SELECT, - E_TEP_DELETE, - E_TEP_INSERT, - - E_TEP_COPY, - E_TEP_PASTE, - E_TEP_GET_SELECTION, - E_TEP_SET_SELECT_BY_WORD, - E_TEP_ACTIVATE, - - E_TEP_GRAB, - E_TEP_UNGRAB, - - E_TEP_NOP -}; - -struct _ETextEventProcessorCommand { - ETextEventProcessorCommandPosition position; - ETextEventProcessorCommandAction action; - int value; - char *string; - guint32 time; -}; - -struct _ETextEventProcessorEventButton { - GdkEventType type; - guint32 time; - guint state; - guint button; - gint position; -}; - -struct _ETextEventProcessorEventKey { - GdkEventType type; - guint32 time; - guint state; - guint keyval; - gint length; - gchar *string; -}; - -struct _ETextEventProcessorEventMotion { - GdkEventType type; - guint32 time; - guint state; - gint position; -}; - -union _ETextEventProcessorEvent { - GdkEventType type; - ETextEventProcessorEventButton button; - ETextEventProcessorEventKey key; - ETextEventProcessorEventMotion motion; -}; - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - - -#endif /* __E_TEXT_EVENT_PROCESSOR_TYPES_H__ */ diff --git a/e-util/e-text-event-processor.c b/e-util/e-text-event-processor.c deleted file mode 100644 index cded8171e6..0000000000 --- a/e-util/e-text-event-processor.c +++ /dev/null @@ -1,104 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* e-text-event-processor.c - * Copyright (C) 2000 Helix Code, Inc. - * Author: Chris Lahey - * - * This library 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 2 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 library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#include -#include "e-text-event-processor.h" - -static void e_text_event_processor_init (ETextEventProcessor *card); -static void e_text_event_processor_class_init (ETextEventProcessorClass *klass); - -static GtkObjectClass *parent_class = NULL; - -/* The arguments we take */ -enum { - ARG_0 -}; - -enum { - E_TEP_EVENT, - E_TEP_LAST_SIGNAL -}; - -static guint e_tep_signals[E_TEP_LAST_SIGNAL] = { 0 }; - -GtkType -e_text_event_processor_get_type (void) -{ - static GtkType text_event_processor_type = 0; - - if (!text_event_processor_type) - { - static const GtkTypeInfo text_event_processor_info = - { - "ETextEventProcessor", - sizeof (ETextEventProcessor), - sizeof (ETextEventProcessorClass), - (GtkClassInitFunc) e_text_event_processor_class_init, - (GtkObjectInitFunc) e_text_event_processor_init, - /* reserved_1 */ NULL, - /* reserved_2 */ NULL, - (GtkClassInitFunc) NULL, - }; - - text_event_processor_type = gtk_type_unique (gtk_object_get_type (), &text_event_processor_info); - } - - return text_event_processor_type; -} - -static void -e_text_event_processor_class_init (ETextEventProcessorClass *klass) -{ - GtkObjectClass *object_class; - - object_class = (GtkObjectClass*) klass; - - parent_class = gtk_type_class (gtk_object_get_type ()); - - e_tep_signals[E_TEP_EVENT] = - gtk_signal_new ("command", - GTK_RUN_LAST, - object_class->type, - GTK_SIGNAL_OFFSET (ETextEventProcessorClass, command), - gtk_marshal_NONE__POINTER, - GTK_TYPE_NONE, 1, - GTK_TYPE_POINTER); - - gtk_object_class_add_signals (object_class, e_tep_signals, E_TEP_LAST_SIGNAL); - - klass->event = NULL; - klass->command = NULL; -} - -static void -e_text_event_processor_init (ETextEventProcessor *tep) -{ -} - -gint -e_text_event_processor_handle_event (ETextEventProcessor *tep, ETextEventProcessorEvent *event) -{ - if (E_TEXT_EVENT_PROCESSOR_CLASS(GTK_OBJECT(tep)->klass)->event) { - return E_TEXT_EVENT_PROCESSOR_CLASS(GTK_OBJECT(tep)->klass)->event(tep, event); - } else { - return 0; - } -} diff --git a/e-util/e-text-event-processor.h b/e-util/e-text-event-processor.h deleted file mode 100644 index d6937383f0..0000000000 --- a/e-util/e-text-event-processor.h +++ /dev/null @@ -1,74 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* e-text-event-processor.h - * Copyright (C) 2000 Helix Code, Inc. - * Author: Chris Lahey - * - * This library 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 2 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 library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ -#ifndef __E_TEXT_EVENT_PROCESSOR_H__ -#define __E_TEXT_EVENT_PROCESSOR_H__ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#pragma } -#endif /* __cplusplus */ - -/* ETextEventProcessor - Turns events on a text widget into commands. - * - */ - -#define E_TEXT_EVENT_PROCESSOR_TYPE (e_text_event_processor_get_type ()) -#define E_TEXT_EVENT_PROCESSOR(obj) (GTK_CHECK_CAST ((obj), E_TEXT_EVENT_PROCESSOR_TYPE, ETextEventProcessor)) -#define E_TEXT_EVENT_PROCESSOR_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), E_TEXT_EVENT_PROCESSOR_TYPE, ETextEventProcessorClass)) -#define E_IS_TEXT_EVENT_PROCESSOR(obj) (GTK_CHECK_TYPE ((obj), E_TEXT_EVENT_PROCESSOR_TYPE)) -#define E_IS_TEXT_EVENT_PROCESSOR_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((obj), E_TEXT_EVENT_PROCESSOR_TYPE)) - - -typedef struct _ETextEventProcessor ETextEventProcessor; -typedef struct _ETextEventProcessorClass ETextEventProcessorClass; - -struct _ETextEventProcessor -{ - GtkObject parent; - - /* object specific fields */ - -}; - -struct _ETextEventProcessorClass -{ - GtkObjectClass parent_class; - - /* signals */ - void (* command) (ETextEventProcessor *tep, ETextEventProcessorCommand *command); - - /* virtual functions */ - gint (* event) (ETextEventProcessor *tep, ETextEventProcessorEvent *event); -}; - - -GtkType e_text_event_processor_get_type (void); -gint e_text_event_processor_handle_event (ETextEventProcessor *tep, ETextEventProcessorEvent *event); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - - -#endif /* __E_TEXT_EVENT_PROCESSOR_H__ */ diff --git a/help/devel/calendar/public-reference.sgml b/help/devel/calendar/public-reference.sgml deleted file mode 100644 index f8aa6e848d..0000000000 --- a/help/devel/calendar/public-reference.sgml +++ /dev/null @@ -1,24 +0,0 @@ - - Calendar Public API Reference - - - - This part presents the class and function reference for the - public APIs of the different components of the Evolution - Calendar. - - - - &CalClient; - &CalComponent; - &cal-util; - &cal-recur; - &timeutil; - - - diff --git a/libical/.cvsignore b/libical/.cvsignore deleted file mode 100644 index 41f3513f40..0000000000 --- a/libical/.cvsignore +++ /dev/null @@ -1,19 +0,0 @@ -*.la -*.lo -.libs -Makefile -Makefile.in -aclocal.m4 -config.cache -config.guess -config.h -config.h.in -config.log -config.status -config.sub -configure -libtool -ltconfig -ltmain.sh -stamp-h -stamp-h.in diff --git a/libical/AUTHORS b/libical/AUTHORS deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/libical/COPYING b/libical/COPYING deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/libical/ChangeLog b/libical/ChangeLog deleted file mode 100644 index 46b70066b0..0000000000 --- a/libical/ChangeLog +++ /dev/null @@ -1,181 +0,0 @@ -2000-09-12 Ettore Perazzoli - - * configure.in: AC_OUTPUT the Makefile in `src' before the stuff - in its subdirs. - -2000-09-12 JP Rosevear - - * test-data/stresstest.ics: Merge missing file for distcheck - - * src/libicalss/icalcstp.h: ditto - - * src/libicalss/icalcsdb.h: ditto - -2000-09-08 JP Rosevear - - * src/libical/icaltime.c (icaltime_compare_date_only): New - function that compares only the dates, not the times as well - - * src/libical/icaltime.h: Add prototype - -2000-09-01 JP Rosevear - - * configure.in: We don't need AC_PROG_RANLIB and - AM_PROG_LIBTOOL - - * src/libical/icalyacc.y (clear_recur): Explicitly - set the week_start to the Monday default in case the - recurrence rule does not. - -2000-08-31 JP Rosevear - - * Kill off more old, dead files - -2000-08-31 JP Rosevear - - * MacOS: This dir is not in 0.19 - -2000-08-31 JP Rosevear - - * src/libical/CHANGES: This file is not in 0.19 - -2000-08-31 JP Rosevear - - * src/libical/.gdb_history: Kill file - - * src/libical/.gdb_history: Kill file - -2000-08-31 JP Rosevear - - * configure.in: Don't list config.h in AC_OUTPUT - -2000-08-31 JP Rosevear - - * src/pvl/Makefile: Kill old file - - * src/test/usecases.c: Kill old file - - * src/test/.cvsignore: Update - - * src/libicalvcal/.cvsignore: Update - - * examples/.cvsignore: Shut up - -2000-08-26 Ettore Perazzoli - - * examples/Makefile.am (INCLUDES): More `$(srcdir)' loving. - - * src/libicalvcal/Makefile.am (INCLUDES): Add `-I - $(srcdir)/../libical' for builddir != srcdir loving. - -2000-08-25 Christopher James Lahey - - * examples/access_properties_and_parameters.c, - src/libicalvcal/vcc.y: Got rid of some warnings. - - * src/libicalvcal/vcc.c: Checking in generated C file. - -2000-08-25 Christopher James Lahey - - * src/libical/icalcomponent.c: Fixed an incorrect struct name. - -2000-08-25 Peter Williams - - * src/libical/icalcomponent.c (icalcomponent_end_component): Compile fix; - use icalerror_check_arg_re so we can return an valid icalcompiter. - (icalcomponent_begin_component): Same. - -2000-08-24 JP Rosevear - - * src/libical/icalvcal.h: Remove this duplicate file to fix build - -2000-08-24 Federico Mena Quintero - - * src/test/Makefile.am: Make it work. - -2000-08-04 - - * stow.c Changed stow to write data to a file ( icalfileset) not a - calendar. Also added MIME parsing capability - - * sspm.c Core of the mime processor. Now handles quoted-printable - and base64 encodings - - * icalmime.h New file that parses mime data and returns an - icalcomponent that includes all of the parts. - - -2000-07-26 - - * icaldirset.h misc bug fixes to get deleting components to work - - * icalcomponent.h Eliminated internal use of _get_first_component - and _get_next_component, since these will reset the interal - iterators. - -2000-07-23 - - * icalcomponent.h Added external iterators to icalcomponent for - subcomponents: icalcompiter. These are still experimental, but they - seem to work OK and have a nice syntax - -2000-07-18 - - * icalset This is a new "superclass" for icalstore, icalcluster, - and others. It merges the interfaces of the old icalstore and - icalcluster - - * icalstore.{c,h} CHanged name to icaldirset - - * icalcluster.{c,h} Changed name to icalfileset - - -2000-06-12 Eric Busboom - - * icalstow.c misc improvements and bug fixes to make it useful. - -2000-06-09 Eric Busboom - - * icalrecur.c More extensive code changes for recurrence rule. - - * icalyacc.y Added support for integers in by day lists - -2000-06-08 Ettore Perazzoli - - * src/test/Makefile.am (INCLUDES): Likewise. - - * src/libicalss/Makefile.am (INCLUDES): Use $(srcdir) to allow - builddir != srcdir. - -2000-06-01 Eric Busboom - - * icalrecur.c moved recur code into new files - -2000-05-30 Eric Busboom - - * icaltypes.c Extensive work on code to expand recurences - - * icaltypes.h Changed signature icaltimetype_from_timet to include - is_utc flag. - - -2000-03-17 Eric Busboom - - * icalstore.c Vastly improved icalstore_test. - -2000-03-16 Eric Busboom - - * icalcluster.c Added compile flag (ICAL_SAFESAVES) to switch how - icalcluster saves files during commits. When the flag is define, - it will write the data to a temorar file and rename the file to - the target file. - - * storage.c Added seterate test suite for sotage components - - * icalparser.c Created parser object, implemented line-oriented - parsering, and made message oriented parsing work in terms f line - oriented parsing. - - * icalparser.c Fixed icalparser_get_line to remove \r in input. - - diff --git a/libical/INSTALL b/libical/INSTALL deleted file mode 100644 index 88e2a5e7d6..0000000000 --- a/libical/INSTALL +++ /dev/null @@ -1,24 +0,0 @@ -Building the library --------------------- - -This distribution is developed on Red Hat Linux 6.0 and usually -compiles on SunOS 5.6 and FreeBSD 2.27. I have reports of success of -previous version on MacOS ( with CodeWarrior ) but I don't know about -any other systems. - -The library is configured with automake. From the root directory, run - - ./configure - -To build all of the Makefiles for your system. If you will be installing the library, you may want to use the --prefix flag to set the directory where the library and header files will be installed. - - ./configure --prefix=/proj/local/ - -If configure runs fine, run "make" to build the library and -"make install" to install it. - -The current version of libical focuses on creating and -manipulating iCal objects. With it, you can parse text representations -of iCal components, add and remove sub-components, properties, -parameters and values, and print the components back out as strings. - diff --git a/libical/Makefile.am b/libical/Makefile.am deleted file mode 100644 index 8dcd95a438..0000000000 --- a/libical/Makefile.am +++ /dev/null @@ -1,9 +0,0 @@ - -EXTRA_DIST = \ - ChangeLog \ - README \ - TEST \ - TODO - -SUBDIRS = design-data doc scripts test-data src examples - diff --git a/libical/NEWS b/libical/NEWS deleted file mode 100644 index fb945eb9a2..0000000000 --- a/libical/NEWS +++ /dev/null @@ -1,315 +0,0 @@ -Version 0.19 6 August 00 (cvs tag libical-0-19) ------------------------------------------------ - -Created a MIME parser in icalmime.c. This will take any complex MIME -encapsulated message and return an icalcomponent with the same -structure. Each MIME part is represented by a component of type -X-LIC-MIMEPART. - -Added MIME partsing to stow.c - -Added external iterators to icalcomponent. See test_iterators() in -test/regression.c - -Refactored icalcluster and icalstore into icalset, icalfileset and -icaldirset, which have a pseudo inheritance relationship between them. - -Fixed more memory leaks. - -Version 0.18a 10 June 00 ( cvs tag libical-0-18a ) ------------------------------------------------ - -Did the final tweaks to stow.c, a program to recieve and store iMIP -messages. - - -Version 0.18 10 June 00 ( cvs tag libical-0-18 ) ------------------------------------------------ - -Added libicalvcal, which includes the Versit code for parsing vCal -files and a routine (icalvcal_convert() ) that converts a vCal object -to an iCal object. The test program is src/test/testvcal. - -Added marginally functional recurrence code. The curent code does not -handle all of the examples in rfc2445 ( which are extracted in -test-data/recur.txt ) but it can do all of the obvious cases. See the -test program in src/test/recur.c for an example. In particular, the -code cannot handle the integer values in BYDAY, nor negative integers -in BYMONTH or BYMONTHDAY. It also cannot handle BYSETPOS. - -Moved some code to the examples directory and improved the comments. - -Did a little more work on the documentation in the doc directory. The -documentation is in LyX source, but there is a text version in -UsingLibical.txt - - -Version 0.17 15 May 00 (cvs tag libical-0-17 ) ---------------------------------------------- - -Fixed two bugs that added extraneous '/' to test values - -Fixed type in internal string for the COUNTER method - -Eliminated a memory leak in icalparser.c - - -Version 0.16a 29 April 00 ----------------------------------------------- - -Fixed bug in icalvalue_new_from_string that caused METHOD value to -choke on non standard input. - -Fixed a memory leak in icalparser_add_line -- failed to free 'line' - - -Version 0.16 5 April 00 ( cvs tag libical-0-16) ----------------------------------------------- - -Now using automake. - -Substantial changes to the parser. New interfaces let you parser -multiple components from a single stream by feading the parser object -one line at a time. - -Added a STRING value type. this type is like TEXT, but does not -backslash magic characters. It is used in PRODID and REQUEST-STATUS, -where the '/' and ';' are literal. - -Added several convience functions for REQUEST-STATUS to icalenums.c - -Addedd a routine to icalcomponent to convert X-LIC errors to -REQUEST-STATUS return values. - -Version 0.15a 5 Mar 00 (cvs tag libical-0-15a) ---------------------- - -Experimented with CVS - -Fixed icalvalue_set_text to convert escaped characters into the proper -values. - -Other minor code tweaks. - - -Version 0.15 7 Feb 00 ---------------------- - -Split the storage classess ( icalstore, icalcluster, icalcalendar ) -into a seperate library, libicalss - -Implemented restriction checking in file icalrestrictions.c. The -checking is not complete, but can handle the bulk of the restrictions -described in RFC 2446. - -Created a new value type, METHOD. Changed METHOD property to use the -new value. The METHOD value uses an enumeration. - - -Version 0.14b -------------- - -Implemented parsing of RECUR values, although it does not handle BYDAY -specs with numbers. - -Fixed error in icalparser_next_line that mangled lines longer than the -temp buffer (1024 chars.) The temp buffer is now 80 chars, and it can -handle (apparently) arbitrary length lines - -Fixed severe brokenness in a value, but I forgot which one. - -Cleaned cruft out of the distribution, so the tarfile is smaller. - - -Version 0.14a 14 Jan 00 ------------------------ - -Fixed bug in ROLE parameter -- missing '-' in the text of allowed values - -Fixed bug in X-parameters - -Version 0.14 11 Jan 00 ----------------------- - -Fixed wrong value type for TRIGGER property - -Added Calendar object. Calendar is an aggregate of two stores and two -clusters, and can store all of the inforamation associated with a -calendar. - -icalcomponent_add_property and icalcomponent_add_component will -complain if you try to add a component or property that is already -part of an other component. The *_free routines wil complain if you try -to free a linked component or property. - -More improvements to error handling. - -Parser is much more robust. - -Minor memory enhancements. - -Regression test runs without memory leaks. - -Version 0.13d 21Dec99 ---------------------- - -Seperated perl interface and library - -Added autoconf support - -Scripts that generate derived properties, values and parameters now -change source and header files inline. - -Changed icalstore to cluster all components with DTSTART in a month -into a single file. This should reduce number of file accesses by a -factor of 60. - -Ran code through Purify and fixed memory leaks. - - -Version 0.13 16Nov99 ---------------------- - -Yet more bug fixes! Yeah! - -Added better error handling. The Parser inserts X-LIC-*ERROR -properties to warn of parsing errors. - -The imip source/sink programs in /src/imip is demonstrably functional. - -Version 0.12b 17Oct99 ---------------------- - -More bug fixes, particularily in parse from string routines - -ICal::Store is mostly functional - -This is version is a checkpoint, not a release. - -Version 0.12a 10Oct99 ---------------------- - -Expanded perl interface: - Added 1/2 of Store module - Fixed bugs - Implemeted get_{first,next}_property - -Extended C interface - Made get_{first,next}_property work properly - Fixed bugs - - -This is version is a checkpoint, not a release. - -Version 0.12 27Aug99 --------------------- - -Added a rudimentatry perl interface - -This is version is a checkpoint, not a release. - - -Version 0.11 11Aug99 --------------------- - -Eliminated most use of flex/bison -- all parsing, except for the -values, is done in C. - -Cleaned up memory leaks. Purify claims that I got them all. - -Moved all derived component/prop/param/value code ( in .inc / .h -files) into main files ( icalcomponent.{c,h}, icalproperty.{c,h}, etc/ -) - -Implemented *_clone routines. - -Fixed a lot of bugs. - -Implemented more value types. Still unimplemeneted are BINARY and RECUR - -Included MacOS/Code Warior files from Graham Davison - - -Version 0.10 8Jul99 -------------------- - -Eliminated shift/reduce and reduce/reduce conflicts in the parser. -This version is almost feature complete -- it has the basic structure -for all of the library's functionality, and it will only require -implementing procedure shells and fixing bugs. I think that all of the -hard work is done... - -Version 0.09a,b 3,7 Jul99 -------------------------- - -Various improvements to the parser, added some functionality. The parser code -is mostly complete, and should be fully functional, except for a horde of -bugs. Also added support for X-Properties. - -Version 0.09 25Jun99 --------------------- - -Added a parser in files src/comp/icalitip.{y,l} The lexer is mostly -functional, but the parser is not. - - -Version 0.08 2Jun99 --------------------- - -All files now have MPL licensing - -Implement enough of the code to perform some rudimentary testing - - -Version 0.07 14May99 --------------------- - -Remove all interfaces that construct object from a string - -Moved most code back into comp directory - -Implemented C files for most headers -- usecases.c now links. - -Many improvements to generation scripts. - - - -Version 0.06 25Apr99 --------------------- - -Expanded distribution to include: - Directory structure that can accomodate future expansion - Several levels of Makefiles - This CHANGES file - -Added headers for irip and parse modules - -Added several files with design information - -Added scripts that I had used to generate much of the ical header code. - -Split C headers from CC headers - -Added data for iTIP and iCAL component restrictions in restrictions.csv - -Version 0.05 11Apr99 ----------------------- - -Changes to ical headers - - Added derived Property classes. - - Improved the interface to the derived property and parameter classes - - Added derived component classes. - - Created usecases.c and ccusecases.cc to demonstrate use - - C++ interface compile - - -Version 0.04 5Apr99 -------------------- - -Version 0.02 30Mar99 --------------------- diff --git a/libical/README b/libical/README deleted file mode 100644 index ce27e309c0..0000000000 --- a/libical/README +++ /dev/null @@ -1,101 +0,0 @@ - -LIBICAL -- An implementation of basic iCAL protocols - -The code and datafiles in this distribution are licensed under the -Mozilla Public License. See http://www.mozilla.org/NPL/MPL-1.0.html -for a copy of the license. Alternately, you may use libical under the -terms of the GNU Library General Public License. See -http://www.fsf.org/copyleft/lesser.html for a copy of the LGPL. - -This dual license ensures that the library can be incorporated into -both proprietary code and GPL'd programs, and will benefit from -improvements made by programmers in both realms. I will only accept -changes into my version of the library if they are similarly -dual-licensed. - -The code in this distribution implements the iCal protocols as -described in RFC2445 and RFC2446. The code is in very early stages of -development. - -Portions of this distribution are (C) Copyright 1996 Apple Computer, -Inc., AT&T Corp., International Business Machines Corporation and -Siemens Rolm Communications Inc. See src/libicalvcal/README.TXT for -details. - -This code is under active development. If you would like to contribute -to the project, you can contact me, Eric Busboom, at -eric@softwarestudio.org. The project has a webpage at - - http://softwarestudio.org/libical/index.html - -and a mailing list that you can join by sending the following mail: - - ------------ - To: minimalist@softwarestudio.org - Subject: subscribe libical - ------------ - - -Building the library --------------------- - -This distribution is developed on Red Hat Linux 6.0 and usually -compiles on SunOS 5.6 and FreeBSD 2.27. I have reports of success of -previous version on MacOS ( with CodeWarrior ) and on UnixWare, but I -don't know about any other systems. - -The library is configured with automake. From the root directory, run - - ./configure - -To build all of the Makefiles for your system. If you will be installing the library, you may want to use the --prefix flag to set the directory where the library and header files will be installed. - - ./configure --prefix=/proj/local/ - -If configure runs fine, run "make" to build the library and -"make install" to install it. - -The current version of libical focuses on creating and -manipulating iCal objects. With it, you can parse text representations -of iCal components, add and remove sub-components, properties, -parameters and values, and print the components back out as strings. - - -Notes for Libical Developers -------------------- - -If you don't want to use gcc as the compiler, and you got the sources -from CVS, you should set the CC variable to the path to the compiler -and run "automake --include-deps" to keep automake from using -gcc-specific automatic dependancy tracking. - - > CC=/pkg/SUNWspro/bin/cc; export CC - > automake --include-deps - > ./configure --prefix=/proj/local/ - > make - -You will not need to re-run automake unless you got the sources from CVS. - - -Perl Library ------------- - -There is a perl language binding of this library, LIBICAL. -It is available from http://www.softwarestudio.org/libical - -Parser ------- - -The parser is a test program that will convert a text representation -of an iCal object to the internal representation and print it back out -as text. It is primarily a test tool, but it is also a good -demonstration of how the library works. - -To use it, cat one of the test components into the parser -executable. For example, from the root of the distribution: - - src/test/icalparser < test-data/1.1 - - -Eric Busboom -eric@softwarestudio.org diff --git a/libical/TEST b/libical/TEST deleted file mode 100644 index 90c3473b31..0000000000 --- a/libical/TEST +++ /dev/null @@ -1,4 +0,0 @@ - -Parser Tests ------------- -Use iCAL keywords as first words of unquoted strings \ No newline at end of file diff --git a/libical/THANKS b/libical/THANKS deleted file mode 100644 index 6e867ffe27..0000000000 --- a/libical/THANKS +++ /dev/null @@ -1,24 +0,0 @@ -Thanks to: - -Allan Clark for testing libical against -UnixWare. - -Graham Davison for MacOS support and -miscelaneous code bits - -Seth Alves for the first cut at the Makefile.am -files and various utility functions. - -Russ Steinthal for several utility functions and -comments. - -Ola Lundqvist for the vCal test data file. - -Colin DuPlantis for new functions in icalparser.c - -Holger Schmidt for all of icalcstp.c, The -CSTP protocol implementation, and modifications to icalcstp.h - -Gisle Hannemyr The decode*() functions in sspm.c -are based on the decode() routine in the mimelite program, Copyright -(c) 1994 Gisle Hannemyr. diff --git a/libical/TODO b/libical/TODO deleted file mode 100644 index 98d0c2d2b1..0000000000 --- a/libical/TODO +++ /dev/null @@ -1,36 +0,0 @@ - -TODOs for libical-0.16 ---------------------- - -libical treats properties with multiple values incorrecty -- it always -seperates multiple values into multiple properties. This is not -acceptable for CATEGORIES and RESOURCES. - -Some TEXT valued properties, like METHOD, have a limited set of valid -values. The code should check that the values of these properites are -valid. ( Although METHOD now uses enums, and is not really TEXT valued ) - -Finish implementing values - ATTACH/BINARY - content_type - language - -Check for buffer overflow on external input. - -Error Handling - - Dates and times: the parser will accept many illegal date time - values - -RECUR values ignore integers in BYDAY clauses, ie 'FREQ=MONTHLY;BYDAY=-1SU' - -Restrictions code does not catch lack of DTEND or DURATION - -For some value types, if there illegal characters in the value ( like -4.56 in an integer value), the parser will output the characters to -stdout. - -Check all uses of strcpy and sprinf for buffer overflows - -Make the mime parsing code in sspm grow the list of parts as needed, -rather than having a hard limit. diff --git a/libical/acconfig.h b/libical/acconfig.h deleted file mode 100644 index e9383f73a4..0000000000 --- a/libical/acconfig.h +++ /dev/null @@ -1,7 +0,0 @@ -/* Define to make icalerror_* calls abort instead of internally - signalling an error */ -#undef ICAL_ERRORS_ARE_FATAL - -/* Define to make icalcluster_commit() save to a temp file and mv to - the original file instead of writing to the orig file directly */ -#undef ICAL_SAFESAVES diff --git a/libical/autogen.sh b/libical/autogen.sh deleted file mode 100755 index e15e4e33a8..0000000000 --- a/libical/autogen.sh +++ /dev/null @@ -1,80 +0,0 @@ -#!/bin/sh -# Run this to generate all the initial makefiles, etc. - -srcdir=`dirname $0` -test -z "$srcdir" && srcdir=. - -ORIGDIR=`pwd` -cd $srcdir -PROJECT=libical -TEST_TYPE=-d -FILE=src - -DIE=0 - -(autoconf --version) < /dev/null > /dev/null 2>&1 || { - echo - echo "You must have autoconf installed to compile $PROJECT." - echo "Download the appropriate package for your distribution," - echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/" - DIE=1 -} - -(automake --version) < /dev/null > /dev/null 2>&1 || { - echo - echo "You must have automake installed to compile $PROJECT." - echo "Get ftp://ftp.cygnus.com/pub/home/tromey/automake-1.2d.tar.gz" - echo "(or a newer version if it is available)" - DIE=1 -} - -if test "$DIE" -eq 1; then - exit 1 -fi - -test $TEST_TYPE $FILE || { - echo "You must run this script in the top-level $PROJECT directory" - exit 1 -} - -if test -z "$*"; then - echo "I am going to run ./configure with no arguments - if you wish " - echo "to pass any to it, please specify them on the $0 command line." -fi - -case $CC in -*xlc | *xlc\ * | *lcc | *lcc\ *) am_opt=--include-deps;; -esac - -if test -z "$ACLOCAL_FLAGS"; then - - acdir=`aclocal --print-ac-dir` - m4list="glib.m4" - - for file in $m4list - do - if [ ! -f "$acdir/$file" ]; then - echo "WARNING: aclocal's directory is $acdir, but..." - echo " no file $acdir/$file" - echo " You may see fatal macro warnings below." - echo " If these files are installed in /some/dir, set the ACLOCAL_FLAGS " - echo " environment variable to \"-I /some/dir\", or install" - echo " $acdir/$file." - echo "" - fi - done -fi - -aclocal $ACLOCAL_FLAGS - -# optionally feature autoheader -(autoheader --version) < /dev/null > /dev/null 2>&1 && autoheader - -automake -a $am_opt -autoconf -cd $ORIGDIR - -$srcdir/configure "$@" - -echo -echo "Now type 'make' to compile $PROJECT." diff --git a/libical/configure.in b/libical/configure.in deleted file mode 100644 index 0c91500602..0000000000 --- a/libical/configure.in +++ /dev/null @@ -1,51 +0,0 @@ -dnl Process this file with autoconf to produce a configure script. -AC_INIT(src/libical/ical.h) -AM_CONFIG_HEADER(config.h) -AM_INIT_AUTOMAKE(libical,0.19) - -dnl Checks for programs. -AC_PROG_YACC -AC_PROG_CC -AM_PROG_LEX -AC_PROG_LN_S -AC_PROG_INSTALL - -dnl Initialize libtool -AM_PROG_LIBTOOL - - -AC_SUBST(AR) -AC_CHECK_PROGS(AR, ar aal, ar) - -AC_DEFINE(ICAL_ERRORS_ARE_FATAL,1) -AC_DEFINE(ICAL_SAFESAVES,1) - -dnl Checks for libraries. -dnl Replace `main' with a function in -lical: -dnl AC_CHECK_LIB(ical, main) - -dnl Checks for header files. -AC_HEADER_STDC -AC_CHECK_HEADERS(time.h sys/types.h assert.h) - -dnl Checks for typedefs, structures, and compiler characteristics. -AC_C_CONST -AC_TYPE_SIZE_T -AC_STRUCT_TM - -dnl Checks for library functions. -AC_CHECK_FUNCS(strdup) - -AC_OUTPUT(\ -src/Makefile \ -src/libical/icalversion.h \ -src/libical/Makefile \ -src/libicalss/Makefile \ -src/libicalvcal/Makefile \ -src/test/Makefile \ -examples/Makefile \ -design-data/Makefile \ -doc/Makefile \ -scripts/Makefile \ -test-data/Makefile \ -Makefile ) diff --git a/libical/configure.scan b/libical/configure.scan deleted file mode 100644 index c07a9f6bf8..0000000000 --- a/libical/configure.scan +++ /dev/null @@ -1,30 +0,0 @@ -dnl Process this file with autoconf to produce a configure script. -AC_INIT(src/comp-cc/usecases.cc) - -dnl Checks for programs. -AC_PROG_YACC -AC_PROG_CC -AC_PROG_LEX -AC_PROG_INSTALL -AC_PROG_LN_S -AC_PROG_RANLIB - -dnl Checks for libraries. -dnl Replace `main' with a function in -lical: -AC_CHECK_LIB(ical, main) - -dnl Checks for header files. -AC_HEADER_DIRENT -AC_HEADER_STDC -AC_CHECK_HEADERS(fcntl.h limits.h malloc.h unistd.h) - -dnl Checks for typedefs, structures, and compiler characteristics. -AC_C_CONST -AC_TYPE_OFF_T -AC_TYPE_SIZE_T -AC_STRUCT_TM - -dnl Checks for library functions. -AC_CHECK_FUNCS(mkdir strdup uname) - -AC_OUTPUT(src/libicalss/Makefile src/test/Makefile src/libical/Makefile src/Makefile src/pvl/Makefile src/comp-cc/Makefile Makefile) diff --git a/libical/design-data/.cvsignore b/libical/design-data/.cvsignore deleted file mode 100644 index 3dda72986f..0000000000 --- a/libical/design-data/.cvsignore +++ /dev/null @@ -1,2 +0,0 @@ -Makefile.in -Makefile diff --git a/libical/design-data/Makefile.am b/libical/design-data/Makefile.am deleted file mode 100644 index 0548974160..0000000000 --- a/libical/design-data/Makefile.am +++ /dev/null @@ -1,10 +0,0 @@ -EXTRA_DIST =\ - components.txt \ - param-c-types.txt \ - params-in-prop.txt \ - prop-to-value.txt \ - property-tokens.txt \ - restrictions.csv \ - status.txt \ - value-c-types.txt \ - value-mem-semantics.txt \ diff --git a/libical/design-data/components.txt b/libical/design-data/components.txt deleted file mode 100644 index ae5cc976ad..0000000000 --- a/libical/design-data/components.txt +++ /dev/null @@ -1,22 +0,0 @@ -VCALENDAR -VEVENT -VTODO -VJOURNAL -VFREEBUSY -VTIMEZONE -XSTANDARDTIME -XDAYLIGHTSAVINGSTIME -VALARM -XAUDIOALARM -XDISPLAYALARM -XEMAILALARM -XPROCEDUREALARM -X -VSCHEDULE -VQUERY -VCAR -VCOMMAND -XLICINVALID -XMIMEPART -ANY - diff --git a/libical/design-data/param-c-types.txt b/libical/design-data/param-c-types.txt deleted file mode 100644 index d2f28e688a..0000000000 --- a/libical/design-data/param-c-types.txt +++ /dev/null @@ -1,23 +0,0 @@ -ALTREP char* -CN char* -CUTYPE icalparameter_cutype -DELEGATED-FROM char* -DELEGATED-TO char* -DIR char* -ENCODING icalparameter_encoding -FBTYPE icalparameter_fbtype -FMTTYPE char* -LANGUAGE char* -MEMBER char* -PARTSTAT icalparameter_partstat -RANGE icalparameter_range -RELATED icalparameter_related -RELTYPE icalparameter_reltype -ROLE icalparameter_role -RSVP int -SENT-BY char* -TZID char* -VALUE icalparameter_value -X char* -X-LIC-ERRORTYPE icalparameter_xlicerrortype -X-LIC-COMPARETYPE icalparameter_xliccomparetype diff --git a/libical/design-data/params-in-prop.txt b/libical/design-data/params-in-prop.txt deleted file mode 100644 index 4d4e133fc3..0000000000 --- a/libical/design-data/params-in-prop.txt +++ /dev/null @@ -1,55 +0,0 @@ -ACTION VALUE X -ATTACH FMTTYPE ENCODING VALUE X -ATTENDEE CN CUTYPE DELEGATED-FROM DELEGATED-TO DIR LANGUAGE MEMBER PARTSTAT ROLE RSVP SENT-BY X -CALSCALE X -CATEGORIES LANGUAGE X -CLASS X -COMMENT ALTREP LANGUAGE X -COMPLETED X -CONTACT ALTREP LANGUAGE X -CREATED X -DESCRIPTION ALTREP LANGUAGE X -DTEND VALUE TZID X -DTSTAMP X -DTSTART VALUE TZID X -DUE VALUE TZID X -DURATION X -EXDATE VALUE TZID X -EXRULE X -FREEBUSY FBTYPE X -GEO X -LAST-MODIFIED X -LOCATION ALTREP LANGUAGE X -METHOD X -ORGANIZER CN DIR LANGUAGE SENT-BY X -PERCENT-COMPLETE X -PRIORITY X -PRODID X -RDATE VALUE TZID X -RECURRENCE-ID VALUE RANGE TZID X -RELATED-TO RELTYPE X -REPEAT X -REQUEST-STATUS LANGUAGE X -RESOURCES ALTREP LANGUAGE X -RRULE X -SEQUENCE X -STATUS X -SUMMARY ALTREP LANGUAGE X -TRANSP X -TRIGGER VALUE RELATED X -TZID X -TZNAME LANGUAGE X -TZOFFSETFROM X -TZOFFSETTO X -TZURL X -UID X -URL X -VERSION X -XPROP LANGUAGE X -X-LIC-ERROR XLICEERRORTYPE X -SCOPE X -MAXRESULTS X -MAXRESULTSSIZE X -QUERY X -QUERYNAME X -TARGET X \ No newline at end of file diff --git a/libical/design-data/prop-to-value.txt b/libical/design-data/prop-to-value.txt deleted file mode 100644 index 4f4bf196ff..0000000000 --- a/libical/design-data/prop-to-value.txt +++ /dev/null @@ -1,57 +0,0 @@ -CALSCALE TEXT -METHOD METHOD # Non-std. RFC2445 specifies TEXT -PRODID TEXT -VERSION TEXT -CATEGORIES TEXT -CLASS TEXT -COMMENT TEXT -DESCRIPTION TEXT -LOCATION TEXT -PERCENT-COMPLETE INTEGER -PRIORITY INTEGER -RESOURCES TEXT -STATUS TEXT -SUMMARY TEXT -COMPLETED DATE-TIME -FREEBUSY PERIOD -TRANSP TEXT -TZNAME TEXT -TZOFFSETFROM UTC-OFFSET -TZOFFSETTO UTC-OFFSET -TZURL URI -TZID TEXT -ATTENDEE CAL-ADDRESS -CONTACT TEXT -ORGANIZER CAL-ADDRESS -RELATED-TO TEXT -URL URI -UID TEXT -EXRULE RECUR -RRULE RECUR -ACTION TEXT -REPEAT INTEGER -CREATED DATE-TIME -DTSTAMP DATE-TIME -LAST-MODIFIED DATE-TIME -SEQUENCE INTEGER -X TEXT -REQUEST-STATUS STRING -ATTACH ATTACH # Non-std: URI or BINARY -GEO GEO # Non-std: Two FLOATS -DTEND DATE-TIME-DATE # Non-std: DATE-TIME or DATE -DUE DATE-TIME-DATE # Non-std: DATE-TIME or DATE -DTSTART DATE-TIME-DATE # Non-std: DATE-TIME or DATE -RECURRENCE-ID DATE-TIME-DATE # Non-std: DATE-TIME or DATE -EXDATE DATE-TIME-DATE # Non-std: DATE-TIME or DATE -RDATE DATE-TIME-PERIOD # Non-std: DATE-TIME or DATE or PERIOD -TRIGGER TRIGGER # Non-std: DURATION or DATE-TIME -DURATION DURATION -QUERY QUERY -X-LIC-ERROR TEXT -X-LIC-CLUSTERCOUNT INTEGER -X-LIC-MIMECONTENTTYPE STRING -X-LIC-MIMECHARSET STRING -X-LIC-MIMEENCODING STRING -X-LIC-MIMEOPTINFO STRING -X-LIC-MIMECID STRING -X-LIC-MIMEFILENAME STRING diff --git a/libical/design-data/property-tokens.txt b/libical/design-data/property-tokens.txt deleted file mode 100644 index f8a95861c4..0000000000 --- a/libical/design-data/property-tokens.txt +++ /dev/null @@ -1,65 +0,0 @@ -8BIT -ACCEPTED -ADD -AUDIO -BASE64 -BINARY -BOOLEAN -BUSY -BUSY-TENTATIVE -BUSY-UNAVAILABLE -CAL-ADDRESS -CANCEL -CANCELLED -CHAIR -CHILD -COMPLETED -CONFIDENTIAL -CONFIRMED -COUNTER -DATE -DATE-TIME -DECLINECOUNTER -DECLINED -DELEGATED -DISPLAY -DRAFT -DURATION -EMAIL -END -FINAL -FLOAT -FREE -GREGORIAN -GROUP -INDIVIDUAL -IN-PROCESS -INTEGER -NEEDS-ACTION -NON-PARTICIPANT -OPAQUE -OPT-PARTICIPANT -PARENT -PERIOD -PRIVATE -PROCEDURE -PUBLIC -PUBLISH -RECUR -REFRESH -REPLY -REQ-PARTICIPANT -REQUEST -RESOURCE -ROOM -SIBLING -START -TENTATIVE -TEXT -THISANDFUTURE -THISANDPRIOR -TIME -TRANSPAENT -UNKNOWN -UTCOFFSET -XNAME diff --git a/libical/design-data/restrictions.csv b/libical/design-data/restrictions.csv deleted file mode 100644 index bf71d96327..0000000000 --- a/libical/design-data/restrictions.csv +++ /dev/null @@ -1,1348 +0,0 @@ -# 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 -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 -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 -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,icalrestriction_check_exclusive -REQUEST,VEVENT,DURATION,NONE,ONEEXCLUSIVE,icalrestriction_check_exclusive -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 -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 -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 -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 -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,icalrestriction_check_exclusive -REPLY,VEVENT,DTSTART,NONE,ZEROORONE -REPLY,VEVENT,DURATION,NONE,ONEEXCLUSIVE,icalrestriction_check_exclusive -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 -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, icalrestriction_check_exclusive -ADD,VEVENT,DURATION,NONE,ONEEXCLUSIVE, icalrestriction_check_exclusive -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 -ADD,VEVENT,TRANSP,NONE,ZEROORONE -ADD,VEVENT,URL,NONE,ZEROORONE -ADD,VEVENT,X,NONE,ZEROPLUS -ADD,VEVENT,RECURRENCEID,NONE,ZERO -ADD,VEVENT,REQUESTSTATUS,NONE,ZERO -ADD,VEVENT,NONE,VALARM,ZEROPLUS -ADD,VEVENT,NONE,VTIMEZONE,ZEROPLUS -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, icalrestriction_check_exclusive -CANCEL,VEVENT,DTSTART,NONE,ZEROORONE -CANCEL,VEVENT,DURATION,NONE,ONEEXCLUSIVE, icalrestriction_check_exclusive -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 -CANCEL,VEVENT,RELATEDTO,NONE,ZEROPLUS -CANCEL,VEVENT,RESOURCES,NONE,ZEROORONE -CANCEL,VEVENT,RRULE,NONE,ZEROPLUS -CANCEL,VEVENT,STATUS,NONE,ZEROORONE -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 -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 -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 -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, icalrestriction_check_exclusive -COUNTER,VEVENT,DURATION,NONE,ONEEXCLUSIVE, icalrestriction_check_exclusive -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 -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 -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 -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 -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 -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 -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 -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 -REQUEST,VTODO,RELATEDTO,NONE,ZEROPLUS -REQUEST,VTODO,RESOURCES,NONE,ZEROORONE -REQUEST,VTODO,RRULE,NONE,ZEROPLUS -REQUEST,VTODO,STATUS,NONE,ZEROORONE -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 -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 -ADD,VTODO,URL,NONE,ZEROORONE -ADD,VTODO,X,NONE,ZEROPLUS -ADD,VTODO,RECURRENCEID,NONE,ZERO -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 -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 -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 -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 -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 -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 -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 -PUBLISH,VJOURNAL,RELATEDTO,NONE,ZEROPLUS -PUBLISH,VJOURNAL,RRULE,NONE,ZEROPLUS -PUBLISH,VJOURNAL,SEQUENCE,NONE,ZEROORONE -PUBLISH,VJOURNAL,STATUS,NONE,ZEROORONE -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 -CANCEL,VJOURNAL,RELATEDTO,NONE,ZEROPLUS -CANCEL,VJOURNAL,RRULE,NONE,ZEROPLUS -CANCEL,VJOURNAL,STATUS,NONE,ZEROORONE -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, icalrestriction_check_exclusive -NONE,VEVENT,DTSTAMP,NONE,ZEROORONE -NONE,VEVENT,DTSTART,NONE,ZEROORONE -NONE,VEVENT,DUE,NONE,ZERO -NONE,VEVENT,DURATION,NONE,ONEEXCLUSIVE, icalrestriction_check_exclusive -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 -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 -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 -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,icalrestriction_check_mutual -NONE,XAUDIOALARM,REPEAT,NONE,ONEMUTUAL,icalrestriction_check_mutual -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,icalrestriction_check_mutual -NONE,XDISPLAYALARM,REPEAT,NONE,ONEMUTUAL,icalrestriction_check_mutual -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,icalrestriction_check_mutual -NONE,XEMAILALARM,REPEAT,NONE,ONEMUTUAL,icalrestriction_check_mutual -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,icalrestriction_check_mutual -NONE,XPROCEDUREALARM,REPEAT,NONE,ONEMUTUAL,icalrestriction_check_mutual -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/libical/design-data/status.txt b/libical/design-data/status.txt deleted file mode 100644 index 9e7bbf83a7..0000000000 --- a/libical/design-data/status.txt +++ /dev/null @@ -1,56 +0,0 @@ -2.0 STATOK Operation was successfully performed. -2.0.1 STARTSENDATA Start ICAL input; end with . -2.0.11 OKDATAFOLLOWS The request was processed successfully. Reply data follows on the next line and terminates with . -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/libical/design-data/value-c-types.txt b/libical/design-data/value-c-types.txt deleted file mode 100644 index c7dd26034f..0000000000 --- a/libical/design-data/value-c-types.txt +++ /dev/null @@ -1,22 +0,0 @@ -ATTACH struct icalattachtype # Non-std -BINARY char* -BOOLEAN int -CAL-ADDRESS char* -DATE struct icaltimetype -DATE-TIME struct icaltimetype -DATE-TIME-DATE struct icaltimetype # Non-std -DATE-TIME-PERIOD struct icalperiodtype # Non-std -DURATION struct icaldurationtype -FLOAT float -GEO struct icalgeotype # Non-std -INTEGER int -METHOD icalproperty_method # Non-std -PERIOD struct icalperiodtype -RECUR struct icalrecurrencetype -STRING char* # Non-std -TEXT char* -TIME struct icaltimetype -TRIGGER union icaltriggertype # Non-std -URI char* -UTC-OFFSET int -QUERY char* diff --git a/libical/design-data/value-mem-semantics.txt b/libical/design-data/value-mem-semantics.txt deleted file mode 100644 index 5948e244f6..0000000000 --- a/libical/design-data/value-mem-semantics.txt +++ /dev/null @@ -1,19 +0,0 @@ -ATTACH struct icalattachtype -BINARY char* -BOOLEAN int -CAL-ADDRESS char* -DATE time_t -DATE-TIME time_t -DATE-TIME-DATE time_t -DATE-TIME-PERIOD struct icalperiodtype -DURATION struct icaldurationtype -FLOAT float -GEO struct icalgeotype -INTEGER int -PERIOD struct icalperiodtype -RECUR struct icalrecurrencetype -TEXT char* -TIME time_t -TRIGGER struct icaltriggertimetype -URI char* -UTC-OFFSET int diff --git a/libical/doc/.cvsignore b/libical/doc/.cvsignore deleted file mode 100644 index 3dda72986f..0000000000 --- a/libical/doc/.cvsignore +++ /dev/null @@ -1,2 +0,0 @@ -Makefile.in -Makefile diff --git a/libical/doc/Makefile.am b/libical/doc/Makefile.am deleted file mode 100644 index 70b008a369..0000000000 --- a/libical/doc/Makefile.am +++ /dev/null @@ -1 +0,0 @@ -EXTRA_DIST = UsingLibical.lyx UsingLibical.ps UsingLibical.txt diff --git a/libical/doc/UsingLibical.lyx b/libical/doc/UsingLibical.lyx deleted file mode 100644 index 868eac93b7..0000000000 --- a/libical/doc/UsingLibical.lyx +++ /dev/null @@ -1,1555 +0,0 @@ -#LyX 1.1 created this file. For more info see http://www.lyx.org/ -\lyxformat 2.16 -\textclass linuxdoc -\language default -\inputencoding default -\fontscheme default -\graphics default -\paperfontsize default -\spacing single -\papersize Default -\paperpackage a4 -\use_geometry 0 -\use_amsmath 0 -\paperorientation portrait -\secnumdepth 3 -\tocdepth 3 -\paragraph_separation indent -\defskip medskip -\quotes_language english -\quotes_times 2 -\papercolumns 1 -\papersides 1 -\paperpagestyle default - -\layout Title - -Using Libical -\layout Author - -Eric Busboom (eric@softwarestudio.org) -\layout Date - -May 2000 -\layout Standard - - -\begin_inset LatexCommand \tableofcontents{} - -\end_inset - - -\layout Section - -Introduction -\layout Standard - -Libical is an Open Source implementation of the iCalendar protocols and - protocol data units. - The iCalendar specification describes how calendar clients can communicate - with calendar servers for users can store their calendar data and arrange - meetings with other users. - -\layout Standard - -Libical implements RFC2445 and RFC2446. - Eventually, it will also implement iRIP and CAP. - -\layout Standard - -This documentation assumes that you are familiar with the iCalendar standards - RFC2445 and RFC2446. - these specifications are online on the CALSCH webpage at: -\layout Verbatim - -http://www.imc.org/ietf-calendar/ -\layout Subsection - -The libical project -\layout Standard - -This code is under active development. - If you would like to contribute to the project, you can contact me, Eric - Busboom, at eric@softwarestudio.org. - The project has a webpage at -\layout Verbatim - -http://softwarestudio.org/libical/index.html -\layout Standard - -and a mailing list that you can join by sending the following mail: -\layout Verbatim - -To: minimalist@softwarestudio.org -\layout Verbatim - -Subject: subscribe libical -\layout Subsection - -License -\layout Standard - -The code and datafiles in this distribution are licensed under the Mozilla - Public License. - See http://www.mozilla.org/NPL/MPL-1.0.html for a copy of the license. - Alternately, you may use libical under the terms of the GNU Library General - Public License. - See http://www.fsf.org/copyleft/lesser.html for a copy of the LGPL. -\layout Standard - -This dual license ensures that the library can be incorporated into both - proprietary code and GPL'd programs, and will benefit from improvements - made by programmers in both realms. - I will only accept changes into my version of the library if they are similarly - dual-licensed. -\layout Subsection - -Example Code -\layout Standard - -A lot of the documentation for this library is in the form of example code. - These examples are in the -\begin_inset Quotes eld -\end_inset - -examples -\begin_inset Quotes erd -\end_inset - - directory of the distribution. - Also look in -\begin_inset Quotes eld -\end_inset - -src/test -\begin_inset Quotes erd -\end_inset - - for more annotated examples. - -\layout Section - -Building the Library -\layout Standard - -Libical uses autoconf to generate makefiles, although it uses none of the - autoconf flags to influence the compilation. - It should built with no adjustments on Linux, FreeBSD and Solaris. - -\layout Section - -Structure -\layout Standard - -The iCal calendar model is based on four types of objects: components, propertie -s, values and parameters. - -\layout Standard - -Properties are the fundamental unit of information in iCal, and they work - a bit like a hash entry, with a constant key and a variable value. - Properties may also have modifiers, called parameters. - In the iCal content line -\layout Verbatim - -ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com -\layout Standard - -The property name is -\begin_inset Quotes eld -\end_inset - -ORGANIZER, -\begin_inset Quotes erd -\end_inset - - the value of the property is -\begin_inset Quotes eld -\end_inset - -mrbig@host.com -\begin_inset Quotes erd -\end_inset - - and the -\begin_inset Quotes eld -\end_inset - -ROLE -\begin_inset Quotes erd -\end_inset - - parameter specifies that Mr Big is the chair of the meetings associated - with this property. - -\layout Standard - -Components are groups of properties that represent the core objects of a - calendar system, such as events or timezones. - -\layout Standard - -The central goal of libical is to parse iTIP data into an internal representatio -n of Components, Properties, Parameters an Values, and to allow the user - to manipulate the data in various ways -\layout Standard -\added_space_bottom 0.3cm -When a component is sent across a network, if it is un-encrypted, it will - look something like: -\layout Verbatim - -BEGIN:VEVENT -\layout Verbatim - -DTSTAMP:19980309T231000Z -\layout Verbatim - -UID:guid-1.host1.com -\layout Verbatim - -ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com -\layout Verbatim - -ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP: -\layout Verbatim - - MAILTO:employee-A@host.com -\layout Verbatim - -DESCRIPTION:Project XYZ Review Meeting -\layout Verbatim - -CATEGORIES:MEETING -\layout Verbatim - -CLASS:PUBLIC -\layout Verbatim - -CREATED:19980309T130000Z -\layout Verbatim - -SUMMARY:XYZ Project Review -\layout Verbatim - -DTSTART;TZID=US-Eastern:19980312T083000 -\layout Verbatim - -DTEND;TZID=US-Eastern:19980312T093000 -\layout Verbatim - -LOCATION:1CP Conference Room 4350 -\layout Verbatim - -END:VEVENT -\layout Subsection - -Core iCal classes -\layout Subsubsection - -Components -\layout Subsubsection - -Properties -\layout Subsubsection - -Values -\layout Subsubsection - -Parameters -\layout Subsection - -Other elements of libical -\layout Standard - -In addition to the core iCal classes, libical has many other types, structures, - classes that aid in creating and using iCal components. - -\layout Subsubsection - -Enumerations -\layout Subsubsection - -Types -\layout Subsubsection - -The Parser -\layout Subsubsection - -Restrictions -\layout Subsubsection - -Error objects -\layout Subsubsection - -Memory Management -\layout Subsubsection - -Storage classes -\layout Section - -Differences From RFCs -\layout Standard - -Libical has been designed to follow the standards as closely as possible, - so that the key objects in the standards are also keey objects in the library. - However, there are a few areas where the specifications are (arguably) - irregular, and following them exactly would result in an unfriendly interface. - These deviations make libical easier to use by maintaining a self-similar - interface. - -\layout Subsection - -Pseudo Components -\layout Standard - -Libical defines components for groups of properties that look and act like - components, but are not defined as components in the specification. - XDAYLIGHT and XSTANDARD are notable examples. - These pseudo components group properties within the VTIMEZONE components. - For instanace, the timezone properties associated with daylight savings - time starts with -\begin_inset Quotes eld -\end_inset - -BEGIN:DAYLIGHT -\begin_inset Quotes erd -\end_inset - - and ends with -\begin_inset Quotes eld -\end_inset - -END:DAYLIGHT, just like other components, but is not defined as a component - in RFC2445. - ( See RFC2445, page 61 ) In Libical,this grouping is represented by the - XDAYLIGHT component. - Standard iCAL components all start with the letter -\begin_inset Quotes eld -\end_inset - -V, -\begin_inset Quotes erd -\end_inset - - while pseudo components start with -\begin_inset Quotes erd -\end_inset - -X. -\begin_inset Quotes erd -\end_inset - - -\layout Standard - -There are also pseudo components that are conceptually derived classess - of VALARM. - RFC2446 defines what properties may be included in each component, and - for VALARM, the set of properties it may have depends on the value of the - ACTION property. - -\layout Standard - -For instance, if a VALARM component has an ACTION property with the value - of -\begin_inset Quotes eld -\end_inset - -AUDIO, -\begin_inset Quotes erd -\end_inset - - the component must also have an -\begin_inset Quotes eld -\end_inset - -ATTACH -\begin_inset Quotes erd -\end_inset - - property. - However, if the ACTION value is -\begin_inset Quotes eld -\end_inset - -DISPLAY, -\begin_inset Quotes erd -\end_inset - - the component must have a DESCRIPTION property. - -\layout Standard - -To handle these various, complex restrictions, libical has pseudo components - for each type of alarm: XAUDIOALARM, XDISPLAYALARM, XEMAILALARM and XPROCEDUREA -LARM. - -\layout Subsection - -Combined Values -\layout Standard - -Many values can take more than one type. - TRIGGER, for instance, can have a value type of with DURATION or of DATE-TIME. - These multiple types make it difficult to create routines to return the - value associated with a property. - -\layout Standard - -It is natural to have interfaces that would return the value of a property, - but it is cumbersone for a single routine to return multiple types. - So, in libical, properties that can have multiple types are given a single - type that is the union of their RFC2445 types. - For instance, in libical, the value of the TRIGGER property resolves to - -\noun on -struct icaltriggertype -\noun default -. - This type is a union of a DURATION and a DATE-TIME. - -\layout Subsection - -Multi-Valued Properties -\layout Standard - -Some properties, such as CATEGORIES have only one value type, but each CATEGORIE -S property can have multiple value instances. - This also results in a cumbersome interface -- CATEGORIES accessors would - have to return a list while all other accessors returned a single value. - In libical, all properties have a single value, and multi-valued properties - are broken down into multiple single valued properties during parsing. - That is, an input line like, -\layout Verbatim - -CATEGORIES: work, home -\layout Standard - -becomes in libical's internal representation -\layout Verbatim - -CATEGORIES: work -\layout Verbatim - -CATEGORIES: home -\layout Standard - -Oddly, RFC2445 allows some multi-valued properties ( like FREEBUSY ) to - exist as both a multi-values property and as multiple single value properties, - while others ( like CATEGORIES ) can only exist as single multi-valued - properties. - This makes the internal representation for CATEGORIES illegal. - However when you convert a component to a string, the library will collect - all of the CATEGORIES properties into one. - -\layout Section - -Implementation Limitations -\layout Section - -Using libical -\layout Subsection - -Creating Components -\layout Standard - -There are three ways to create components in Libical: creating individual - objects and assembling them, building entire objects in massive vaargs - calls, and parsing a text file containing iCalendar data. - -\layout Subsubsection - -Constructor Interfaces -\layout Standard - -Using constructor interfaces, you create each of the objects seperately - and them assemble them in to components: -\layout Code - -icalcomponent *event; -\layout Code - -icalproperty *prop; -\layout Code - -icalparameter *param; -\layout Code - -struct icaltimetype atime; -\layout Code - -event = icalcomponent_new(ICAL_VEVENT_COMPONENT); -\layout Code - -prop = icalproperty_new_dtstamp(atime) ; -\layout Code - -icalcomponent_add_property(event, prop); -\layout Code - -prop = icalproperty_new_uid(strdup("guid-1.host1.com")) ); -\layout Code - -icalcomponent_add_property(event,prop); -\layout Code - -prop=icalproperty_new_organizer(strdup("mrbig@host.com")); -\layout Code - -param = icalparameter_new_role(ICAL_ROLE_CHAIR) -\layout Code - -icalproperty_add_parameter(prop, param); -\layout Code - -icalcomponent_add_property(event,prop); -\layout Standard - -While we are on this example, you should notice that libical uses a semi-object- -oriented style of interface. - Most things you work with are objects, that are instantiated with a constructor - that has -\begin_inset Quotes eld -\end_inset - -new -\begin_inset Quotes erd -\end_inset - - in the name. - Also note that, other than the object reference, most structure data is - passed in to libical routines by value. - Strings, of course, are passed in by reference, but libical will take ownership - of the memory, so you had beter strdup() the data unless you want a core - dump when the memory is freed for the second time. - Libical has some complex but very regular memory handling rules. - These are detailed in section -\begin_inset LatexCommand \ref{sec:memory} - -\end_inset - -. -\layout Standard - -If any of the constructors fail, they will return 0. - If you try to insert 0 into a property or component, or use a zero-valued - object reference, libical will either silently ignore the error or will - abort with an error message. - This behavior is controlled by a compile time flag (ICAL_ERRORS_ARE_FATAL), - and will abort by default. - -\layout Subsubsection - -vaargs Constructors -\layout Standard - -There is another way to create complex components, which is arguable more - elegant, if you are not horrified by varargs. - The varargs constructor interface all you to create intricate components - in a single block of text. - -\layout Verbatim - - calendar = -\layout Verbatim - - icalcomponent_vanew( -\layout Verbatim - - ICAL_VCALENDAR_COMPONENT, -\layout Verbatim - - icalproperty_new_version(strdup("2.0")), -\layout Verbatim - - icalproperty_new_prodid(strdup( -\layout Verbatim - - "-//RDU Software//NONSGML HandCal//EN")), -\layout Verbatim - - icalcomponent_vanew( -\layout Verbatim - - ICAL_VEVENT_COMPONENT, -\layout Verbatim - - icalproperty_new_dtstamp(atime), -\layout Verbatim - - icalproperty_new_uid(strdup("guid-1.host1.com")), -\layout Verbatim - - icalproperty_vanew_organizer( -\layout Verbatim - - strdup("mrbig@host.com"), -\layout Verbatim - - icalparameter_new_role(ICAL_ROLE_CHAIR), -\layout Verbatim - - 0 -\layout Verbatim - - ), -\layout Verbatim - - icalproperty_vanew_attendee( -\layout Verbatim - - strdup("employee-A@host.com"), -\layout Verbatim - - icalparameter_new_role( -\layout Verbatim - - ICAL_ROLE_REQPARTICIPANT), -\layout Verbatim - - icalparameter_new_rsvp(1), -\layout Verbatim - - icalparameter_new_cutype(ICAL_CUTYPE_GROUP), -\layout Verbatim - - 0 -\layout Verbatim - - ), -\layout Verbatim - - icalproperty_new_location(strdup( -\layout Verbatim - - "1CP Conference Room 4350")), -\layout Verbatim - - 0 -\layout Verbatim - - ), -\layout Verbatim - - 0 -\layout Verbatim - - ); -\layout Standard - -This form is similar to the regular constructor, except that they have -\begin_inset Quotes eld -\end_inset - -vanew -\begin_inset Quotes erd -\end_inset - - instead of -\begin_inset Quotes eld -\end_inset - -new -\begin_inset Quotes erd -\end_inset - - in the name. - The arguments are similar too, except that the component contstructor can - have a list of properties, and the property constructor can have a list - or parameters. - Be sure to terminate every list with a '0', or your code will crash, if - you are lucky. - -\layout Subsubsection - -Parsing Text Files -\layout Standard - -The final way to create components will probably be the most common; you - can create components from RFC2445 compliant text. - If you have the string in memory, use -\layout Verbatim - -icalcomponent* icalparser_parse_string(char* str); -\layout Standard - -This may seem wasteful if you want to pull a large component off of the - network; you may prefer to parse the component line by line. - This is possible too by using: -\layout Verbatim - -icalparser* icalparser_new(); -\layout Verbatim - -void icalparser_free(icalparser* parser); -\layout Verbatim - -icalparser_get_line(parser,read_stream); -\layout Verbatim - -icalparser_add_line(parser,line); -\layout Verbatim - -icalparser_set_gen_data(parser,stream) -\layout Standard - -These routines will construct a parser object to which you can add lines - of input and retrieve any components that the parser creates from the input. - For an example: -\layout Verbatim - -char* read_stream(char *s, size_t size, void *d) -\layout Verbatim - -{ -\layout Verbatim - - char *c = fgets(s,size, (FILE*)d); -\layout Verbatim - - return c; -\layout Verbatim - -} -\layout Verbatim - -main() { -\layout Verbatim - - char* line; -\layout Verbatim - - icalcomponent *c; -\layout Verbatim - - icalparser *parser = icalparser_new(); -\layout Verbatim - - FILE* stream = fopen(argv[1],"r"); -\layout Verbatim - - icalparser_set_gen_data(parser,stream); -\layout Verbatim - - do{ -\layout Verbatim - - line = icalparser_get_line(parser,read_stream); -\layout Verbatim - - c = icalparser_add_line(parser,line); -\layout Verbatim - - if (c != 0){ -\layout Verbatim - - printf("%s",icalcomponent_as_ical_string(c)); -\layout Verbatim - - icalparser_claim(parser); -\layout Verbatim - - printf(" -\backslash -n--------------- -\backslash -n"); -\layout Verbatim - - icalcomponent_free(c); -\layout Verbatim - - } -\layout Verbatim - - } while ( line != 0); -\layout Verbatim - -} -\layout Standard - -The parser object parameterizes the routine used to get input lines with - icalparser_set_gen_data() and -\emph on - -\emph default -icalparser_get_line(). - In this example, the routine read_stream() will fetch the next line from - a stream, with the stream passed in as the void* parameter d. - The parser calls read_stream() from icalparser_get_line(), but it also - needs to know what stream to use. - This is set by the call to icalparser_set_gen_data(). - -\layout Standard - -Using the same mechanism, other implmentations could read from memory buffers, - sockets or other interfaces. - -\layout Standard - -Since the example code is a very common way to use the parser, there is - a convienience routine; -\layout Verbatim - -icalcomponent* icalparser_parse(icalparser *parser, -\layout Verbatim - - char* (*line_gen_func)(char *s, size_t sise, void* d)) -\layout Standard - -To use this routine, you still must construct the parser object and pass - in a reference to a line reading routine. - If the parser can create a single component from the input, it will return - a pointer to the newly constructed component. - If the parser can construct multiple cmponents from the input, it will - return a reference to an XROOT component ( of type ICAL_XROOT_COMPONENT.) - This XROOT component will hold all of the components constructed from the - input as children. - See section 6.2.2 for how to iterate through the child components. - -\layout Subsection - -Accessing Components -\layout Standard - -Given a reference to a component, you probably will want to access the propertie -s, parameters and values inside. - Libical interface let you find sub-component, add and remove sub-components, - and do the same three operations on properties. - -\layout Subsubsection - -Finding Components -\layout Standard - -To find a sub-component of a component, use: -\layout Verbatim - -icalcomponent* icalcomponent_get_first_component( -\layout Verbatim - - icalcomponent* component, -\layout Verbatim - - icalcomponent_kind kind); -\layout Standard - -This routine will return a reference to the first component of the type - 'kind.' The key kind values, listed in icalenums.h are: -\layout Verbatim - -ICAL_ANY_COMPONENT -\layout Verbatim - -ICAL_VEVENT_COMPONENT -\layout Verbatim - -ICAL_VTODO_COMPONENT -\layout Verbatim - -ICAL_VJOURNAL_COMPONENT -\layout Verbatim - -ICAL_VCALENDAR_COMPONENT -\layout Verbatim - -ICAL_VFREEBUSY_COMPONENT -\layout Verbatim - -ICAL_VALARM_COMPONENT -\layout Standard - -These are only the most common components; there are many more listed in - icalenums.h. -\layout Standard - -As you might guess, if there is more than one subcomponent of the type you - have chosen, this routine will return only the first. - to get at the others, you need to iterate through the component. - -\layout Subsubsection - -Interating Through Components -\layout Standard - -Iteration requires a second routine to get the next subcomponent after the - first: -\layout Verbatim - -icalcomponent* icalcomponent_get_next_component( -\layout Verbatim - - icalcomponent* component, -\layout Verbatim - - icalcomponent_kind kind); -\layout Standard - -With the 'first' and 'next' routines, you can create a for loop to iterate - through all of a components subcomponents -\layout Verbatim - - for(c = icalcomponent_get_first_component(comp,ICAL_ANY_COMPONENT); -\layout Verbatim - - c != 0; -\layout Verbatim - - c = icalcomponent_get_next_component(comp,ICAL_ANY_COMPONENT)) -\layout Verbatim - -{ -\layout Verbatim - - do_something(c); -\layout Verbatim - -} -\layout Standard - -This code bit wil iterate through all of the subcomponents in 'comp' but - you can select a specific type of component by changing ICAL_ANY_COMPONENT - to another component type. -\layout Subsubsection - -Removing Components -\layout Standard - -Libical component have internal iterators, so you can only have one iteration - over a component at a time. - Removing an element from a list while iterating through the list can cause - problems, since you will probably be removing the element that the internal - iterator points to. - The _remove() routine will keep the iterator valid by moving it to the - next component, but in a normal loop, this will result in two advances - per iteration, and you will remove only every other component. - To avoid the problem, you will need to step the iterator ahead of the - element you are going to remove, like this: -\layout Verbatim - -for(c = icalcomponent_get_first_component(parent_comp,ICAL_ANY_COMPONENT); - -\layout Verbatim - - c != 0; -\layout Verbatim - - c = next -\layout Verbatim - -{ -\layout Verbatim - - next = icalcomponent_get_next_component(parent_comp,ICAL_ANY_COMPONENT); -\layout Verbatim - - icalcomponent_remove_component(parent_comp,c); -\layout Verbatim - -} -\layout Standard - -Another way to remove components is to rely on the side effect of icalcomponent_ -remove_component: if component iterator in the parent component is pointing - to the child that will be removed, it will move the iterator to the component - after the child. - The following code will exploit this behavior: -\layout Verbatim - -icalcomponent_get_first_component(parent_comp,ICAL_VEVENT_COMPONENT); -\layout Verbatim - -while((c=icalcomponent_get_current_component(c)) != 0 ){ -\layout Verbatim - - if(icalcomponent_isa(c) == ICAL_VEVENT_COMPONENT){ -\layout Verbatim - - icalcomponent_remove_component(parent_comp,inner); -\layout Verbatim - - } else { -\layout Verbatim - - icalcomponent_get_next_component(parent_comp,ICAL_VEVENT_COMPONENT); - -\layout Verbatim - - } -\layout Verbatim - -} -\layout Subsubsection - -Working with properties and parameters -\layout Standard - -Finding, iterating and removing properties works the same as it does for - components, using the property-specific or parameter-specific interfaces: - -\layout Verbatim - -icalproperty* icalcomponent_get_first_property( -\layout Verbatim - - icalcomponent* component, -\layout Verbatim - - icalproperty_kind kind); -\layout Verbatim - -icalproperty* icalcomponent_get_next_property( -\layout Verbatim - - icalcomponent* component, -\layout Verbatim - - icalproperty_kind kind); -\layout Verbatim - -void icalcomponent_add_property( -\layout Verbatim - - icalcomponent* component, -\layout Verbatim - - icalproperty* property); -\layout Verbatim - -void icalcomponent_remove_property( -\layout Verbatim - - icalcomponent* component, -\layout Verbatim - - icalproperty* property); -\layout Verbatim - -icalparameter* icalproperty_get_first_parameter( -\layout Verbatim - - icalproperty* prop, -\layout Verbatim - - icalparameter_kind kind); -\layout Verbatim - -icalparameter* icalproperty_get_next_parameter( -\layout Verbatim - - icalproperty* prop, -\layout Verbatim - - icalparameter_kind kind); -\layout Verbatim - -void icalproperty_add_parameter( -\layout Verbatim - - icalproperty* prop, -\layout Verbatim - - icalparameter* parameter); -\layout Verbatim - -void icalproperty_remove_parameter( -\layout Verbatim - - icalproperty* prop, -\layout Verbatim - - icalparameter_kind kind); -\layout Subsubsection - -Getting Values -\layout Subsubsection - -Setting Values -\layout Subsubsection - -Getting Parameters -\layout Subsubsection - -Setting Parameters -\layout Subsubsection - -Removing Parameters -\layout Subsubsection - -Checking Component Validity -\layout Standard - -RFC 2446 defines rules for what properties must exist in a component to - be used for transfering scheduling data. - Most of these rules relate to the existence of properties relative to the - METHOD property, which declares what operation a remote reciever should - use to process a component. - For instance, if the METHOD is REQUEST and the component is a VEVENT, the - sender is probably asking the reciever to join in a meeting. - I this case, RFC2446 says that the component must specify a start time - (DTSTART) and list the reciever as an attendee (ATTENDEE). - -\layout Standard - -Libical can check these restrictions with the routine: -\layout Verbatim - -int icalrestriction_check(icalcomponent* comp); -\layout Standard - -This routine returns 0 if the component does not pass RFC2446 restrictions, - or if the component is malformed. - The component you pass in -\emph on -must -\emph default - be a VCALENDAR, with one or more children, like the examples in RFC2446. - -\layout Standard - -When this routine runs, it will insert new properties into the component - to indicate any errors it finds. - See section 6.5.3, X-LIC-ERROR for more information about these error properties. - -\layout Subsubsection - -Converting Components to Text -\layout Standard - -To create an RFC2445 compliant text representtion of an object, use one - of the *_as_ical_string() routines: -\layout Verbatim - -char* icalcomponent_as_ical_string (icalcomponent* component) -\layout Verbatim - -char* icalproperty_as_ical_string (icalproperty* property) -\layout Verbatim - -char* icalparameter_as_ical_string (icalparameter* parameter) -\layout Verbatim - -char* icalvalue_as_ical_string (icalvalue* value) -\layout Standard - -In most cases, you will only use icalcomponent_as_ical_string (), since - it will cascade and convert all of the parameters, properties and values - that are attached to the root component. -\layout Standard - -Icalproperty_as_ical_string() will terminate each line with the RFC2445 - specified line terminator -\begin_inset Quotes eld -\end_inset - - -\backslash -r -\backslash -n -\begin_inset Quotes erd -\end_inset - - However, if you compile with the symbol ICAL_UNIX_NEWLINE defined, it will - terminate lines with -\begin_inset Quotes eld -\end_inset - - -\backslash -n -\begin_inset Quotes erd -\end_inset - - -\layout Standard - -Remember that the string returned by these routines is owned by the library, - and will eventually be re-written. - You should copy it if you want to preserve it. - -\layout Subsection - -Storing Objects -\layout Standard - -The libical distribution inclues a seperate library, libicalss, that allows - you to store iCal component data to disk in a variety of ways. - This library is documented seperately. - ( & currently, not at all. - ) -\layout Subsection - - -\begin_inset LatexCommand \label{sec:memory} - -\end_inset - -Memory Management -\layout Standard - -Libical relies heavily on dynamic allocation for both the core objects and - for the strings used to hold values. - Some of this memory the library caller owns and must free, and some of - the memory is managed by the library. - Here is a summary of the memory rules. - -\layout Description - -1) If the function name has "new" in it, the caller gets control of the - memory. - ( such as icalcomponent_new(), or icalproperty_new_clone() ) -\layout Description - -2) If you got the memory from a routine with new in it, you must call the - corresponding *_free routine to free the memory. - ( Use icalcomponent_free() to free objects created with icalcomponent_new()) - -\layout Description - -3) If the function name has "add" in it, the caller is transfering control - of the memory to the routine. - ( icalproperty_add_parameter() ) -\layout Description - -4) If the function name has "remove" in it, the caller passes in a pointer - to an object and after the call returns, the caller owns the object. - So, before you call icalcomponent_remove_property(comp,foo), you do not - own "foo" and after the call returns, you do. - -\layout Description - -5) If the routine returns a string, libical owns the memory and will put - it on a ring buffer to reclaim later. - You'd better strdup() it if you want to keep it, and you don't have to - delete it. - -\layout Subsection - -Error Handling -\layout Standard - -Libical has several error handling mechanisms for the varioustypes of programmin -g, semantic and syntactic errors you may encounter. -\layout Subsubsection - -Return values -\layout Standard - -Many library routines signal errors through their return values. - All routines that return a pointer, such as icalcomponent_new(), will return - 0 ( zero ) on a fatal error. - Some routines will return a value of enum icalerrorenum. - -\layout Subsubsection - -icalerrno -\layout Standard - -Most routines will set the global error value icalerrno on errors. - This variable is an enumeration; permissable values can be found in libical/ica -lerror.h. - If the routine returns an enum icalerrorenum, then the return value will - be the same as icalerrno. - You can use icalerror_strerror() to get a string that describes the error -\layout Subsubsection - -X-LIC-ERROR and X-LIC-INVALID-COMPONENT -\layout Standard - -The library handles semantic and syntactic errors in components by inserting - errors properties into the components. - If the parser cannot parse incoming text ( a syntactic error ) or if the - icalrestriction_check() routine indicates that the component does not meet - the requirments of RFC2446 ( a semantic error) the library will insert - properties of the type X-LIC-ERROR to describe the error. - Here is an example of the error property: -\layout Verbatim - -X-LIC-ERROR;X-LIC-ERRORTYPE=INVALID_ITIP :Failed iTIP restrictions for property - DTSTART. - Expected 1 instances of the property and got 0 -\layout Standard - -This error resulted from a call to icalrestriction_check(), which discovered - that the component does not have a DTSTART property, as required by RFC2445. - -\layout Standard - -There are a few routines to manipulate error properties: -\layout Standard -\LyXTable -multicol5 -10 2 0 0 -1 -1 -1 -1 -1 1 0 0 -1 0 0 0 -0 1 1 0 -1 0 0 0 -0 1 1 0 -1 1 0 0 -0 1 1 0 -1 1 0 0 -0 1 1 0 -0 1 1 0 -2 1 0 "" "" -2 1 1 "3in" "" -0 2 1 1 0 0 0 "" "" -0 8 1 0 0 0 0 "" "" -0 2 1 0 0 0 0 "" "" -0 2 1 0 1 0 1 "" "" -0 2 1 0 0 0 0 "" "" -0 2 1 0 0 0 1 "" "" -0 2 1 0 0 0 0 "" "" -0 2 1 0 1 0 0 "" "" -0 2 1 0 0 0 0 "" "" -0 2 1 0 0 0 0 "" "" -0 2 1 0 0 0 0 "" "" -0 2 1 0 1 0 0 "" "" -0 2 1 0 0 0 0 "" "" -0 2 1 0 0 0 0 "" "" -0 2 1 0 0 0 0 "" "" -0 2 1 1 1 0 1 "" "" -0 2 1 0 0 0 0 "" "" -0 2 1 1 1 0 1 "" "" -0 2 1 0 0 0 0 "" "" -0 2 1 1 0 0 1 "" "" - -Routine -\newline -Purpose -\newline -void icalrestriction_check() -\newline -Check a component against RFC2446 and insert -\newline - -\newline -error properties to indicate non compliance -\newline -int icalcomponent_count_errors() -\newline -Return the number of error properties -\newline - -\newline -in a component -\newline -void icalcomponent_strip_errors() -\newline -Remove all error properties in as -\newline - -\newline -component -\newline -void icalcomponent_convert_errors() -\newline -Convert some error properties into -\newline - -\newline -REQUESTS-STATUS to indicate the inability to -\newline - -\newline -process the component as an iTIP request. - -\layout Standard - -The types of errors are listed in icalerror.h. - They are: -\layout Verbatim - -ICAL_XLICERRORTYPE_COMPONENTPARSEERROR -\layout Verbatim - -ICAL_XLICERRORTYPE_PARAMETERVALUEPARSEERROR -\layout Verbatim - -ICAL_XLICERRORTYPE_PARAMETERNAMEPARSEERROR -\layout Verbatim - -ICAL_XLICERRORTYPE_PROPERTYPARSEERROR -\layout Verbatim - -ICAL_XLICERRORTYPE_VALUEPARSEERROR -\layout Verbatim - -ICAL_XLICERRORTYPE_UNKVCALPROP -\layout Verbatim - -ICAL_XLICERRORTYPE_INVALIDITIP -\layout Standard - -The libical parser will generate the error that end in PARSEERROR when it - encounters garbage in the input steam. - ICAL_XLICERRORTYPE_INVALIDITIP is inserted by icalrestriction_check(), - and ICAL_XLICERRORTYPE_UNKVCALPROP is generated by icalvcal_convert() when - it encounters a vCal property that it cannot convert or does not know about. - -\layout Standard - -Icalcomponent_convert_errors() converts some of the error properties ina - component into REQUEST-STATUS properties that indicate a failure. - As of libical version0.18, this routine only convert *PARSEERROR errors - and it always generates a 3.x ( failure ) code. - This makes it more of a good idea than a really useful bit of code. - -\layout Subsection - -Naming Standard -\layout Standard - -Structures that you access with the -\begin_inset Quotes eld -\end_inset - -struct -\begin_inset Quotes erd -\end_inset - - keyword, such as -\begin_inset Quotes eld -\end_inset - -struct icaltimetype -\begin_inset Quotes erd -\end_inset - - are things that you are allowed to see inside and poke at. - -\layout Standard - -Structures that you access though a typedef, such as -\begin_inset Quotes eld -\end_inset - -icalcomponent -\begin_inset Quotes erd -\end_inset - - are things where all of the data is hidden. - -\layout Standard - -Component names that start with -\begin_inset Quotes eld -\end_inset - -V -\begin_inset Quotes erd -\end_inset - - are part of RFC 2445 or another iCal standard. - Component names that start with -\begin_inset Quotes eld -\end_inset - -X -\begin_inset Quotes erd -\end_inset - - are also part of the spec, but they are not actually components in the - spec. - However, they look and act like components, so they are components in libical. - Names that start with -\begin_inset Quotes eld -\end_inset - -XLIC -\begin_inset Quotes erd -\end_inset - - or -\begin_inset Quotes eld -\end_inset - -X-LIC -\begin_inset Quotes erd -\end_inset - - are not part of any iCal spec. - They are used internally by libical. - -\layout Standard - -Enums that identify a component, property, value or parameter end with -\begin_inset Quotes eld -\end_inset - -_COMPONENT, -\begin_inset Quotes erd -\end_inset - - -\begin_inset Quotes eld -\end_inset - -_PROPERTY, -\begin_inset Quotes erd -\end_inset - - -\begin_inset Quotes eld -\end_inset - -_VALUE, -\begin_inset Quotes erd -\end_inset - - or -\begin_inset Quotes eld -\end_inset - -_PARAMETER -\begin_inset Quotes erd -\end_inset - -s -\layout Standard - -Enums that identify a parameter value have the name of the parameter as - the second word. - For instance: ICAL_ROLE_REQPARTICIPANT or ICAL_PARTSTAT_ACCEPTED. -\layout Standard - -The enums for the parts of a recurarance rule and request statuses are irregular. - -\layout Section - -Useful Recipies -\layout Standard - -Iteration -\layout Standard - -Copying components. - Remember that you must clone or remove an object before putting in on another - list. - -\layout Standard - -Finding compliance errors -\layout Section - -Performance -\layout Standard - -Checking restrictions is computationally expensive. -\layout Section - -Hacks and Bugs -\layout Standard - -There are a lot of hacks in the library -- bits of code that I am not proud - of and should propbably be changed. - These are marked with the comment string -\begin_inset Quotes eld -\end_inset - -HACK. -\begin_inset Quotes erd -\end_inset - - -\the_end diff --git a/libical/doc/UsingLibical.ps b/libical/doc/UsingLibical.ps deleted file mode 100644 index 83c8f6203f..0000000000 --- a/libical/doc/UsingLibical.ps +++ /dev/null @@ -1,1605 +0,0 @@ -%!PS-Adobe-2.0 -%%Creator: dvips(k) 5.85 Copyright 1999 Radical Eye Software -%%Title: UsingLibical.dvi -%%Pages: 10 -%%PageOrder: Ascend -%%BoundingBox: 0 0 612 792 -%%EndComments -%DVIPSWebPage: (www.radicaleye.com) -%DVIPSCommandLine: dvips -t letter -o -%+ /usr/local/home/eric/proj/FreeAssociation/libical/doc/UsingLibical.ps -%+ UsingLibical.dvi -%DVIPSParameters: dpi=600, compressed -%DVIPSSource: TeX output 2000.06.10:1815 -%%BeginProcSet: texc.pro -%! -/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S -N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 -mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 -0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ -landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize -mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ -matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round -exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ -statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] -N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin -/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array -/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 -array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N -df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A -definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get -}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} -B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr -1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3 -1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx -0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx -sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{ -rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp -gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B -/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{ -/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{ -A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy -get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse} -ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp -fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17 -{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add -chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{ -1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop} -forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn -/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put -}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ -bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A -mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ -SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ -userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X -1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 -index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N -/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ -/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) -(LaserWriter 16/600)]{A length product length le{A length product exch 0 -exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse -end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask -grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} -imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round -exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto -fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p -delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} -B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ -p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S -rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end - -%%EndProcSet -TeXDict begin 40258431 52099146 1000 600 600 (UsingLibical.dvi) -@start -%DVIPSBitmapFont: Fa ecrm0600 6 1 -/Fa 1 50 df<13E01201120712FF12F91201B3A7487EB512C0A212217AA01E>49 -D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fb ecbx1000 10 55 -/Fb 55 122 df<913A03FF8007FE027F9039F07FFF800103B500FDB512E0010F903A00FF -FE0FF0D93FF8ECF81F90267FE0019038F03FF849485A4816E014804816C00200ED1FF081 -F007C06F91C7FCA8B912E0A4000390C701C0C7FCB3ABB5D8FC3FEBFF80A43D3A7EB938> -27 D<12E07E127C7E7E7F6C7E6C7E12037F6C7E7F12007F137E137FA2EB3F80A214C013 -1F14E0A2130F14F0A4EB07F8A514FCB114F8A5EB0FF0A414E0131FA214C0133F1480A2EB -7F00A2137E13FE5B12015B485A5B1207485A485A90C7FC123E5A12F05A16537BBD25>41 -D45 DI<49B4FC011F13F0017F13FC9038FF83FE4848C67E4848EB7F804848EB -3FC04848EB1FE0A2001F15F0A24848EB0FF8A3007F15FCA400FF15FEB3007F15FCA5003F -15F86D131FA2001F15F0A26C6CEB3FE0000715C06C6CEB7F806C6CEBFF003900FF83FE6D -B45A011F13F0010190C7FC27377CB530>48 D<141E143E14FE1307137FB5FCA3138FEA00 -0FB3B3A5007FB61280A4213679B530>IIII< -001C15C0D81F80130701F8137F90B61280A216005D5D15F05D15804AC7FC14F090C9FCA7 -EB03FE90381FFFE0017F13F89038FE07FC9038F003FFD9C0011380496C13C090C7FC000E -15E0C8127F16F0A216F8A3121FEA3FC0487E12FF7FA316F05B15FFD87F8014E0007EC713 -C0003E5B003F4913806C6C481300390FF01FFE6CB512F8000114E06C6C1380D90FF8C7FC -25377BB530>II<123C123EEA3FE090 -B71280A41700485D5E5E5E5EA2007CC7EA0FC000784A5A4BC7FC00F8147E485C5D14014A -5AC7485A4A5AA24A5A143F4AC8FCA214FEA213015C1303A21307A2130F5CA2131FA5133F -A96D5A6D5A6D5A29397BB730>I<49B47E010F13F0013F13FC9038FE01FF3A01F8007F80 -4848EB3FC04848EB1FE0150F484814F01507121FA27F7F7F6D130F01FF14E014C09138E0 -1FC06CEBF83F9138FE7F806C9038FFFE005D6C14F06C14FC6C14FF6D14806D14C090B612 -E0D803FD14F02607F07F13F848487E261FC00F13FC383F8003007F010013FE90C7127F15 -1F00FE140715031501A21500A216FC7E6C14016D14F86C6C13036DEB07F06C6CEB0FE0D8 -0FFEEB7FC00003B61200C614FC013F13F00103138027377CB530>I -I67 -DIIII73 D76 DI79 DI82 DI<003FB91280A4D9F800EBF003D87FC09238007FC049161F007EC7150FA2007C17 -07A200781703A400F818E0481701A4C892C7FCB3AE010FB7FCA43B387DB742>IIII<007FB5D8F803B512F8A4C66C48C7D80FF0C7FC6D6C5D6D5E6F495A6D6D49C8FC -7F6D6D137E6F5B6DEBF8016D5D6F485A6E6C485A023F130FDA1FFF5BEE9F806E01FFC9FC -805E6E5B6E5B80826F7E153F826F7F5D4B7F92B57EA2DA01F97FDA03F17F03F07F913807 -E07FDA0FC07F021F6D7E4B7E4A486C7F027E8102FE6D7F4A7F49488149486D7F0107804A -6E7E49488149486E7E013F81017F83B60107B61280A441397DB848>I97 -D<13FFB5FCA412077EAF4AB47E020F13F0023F13FC9138FE03FFDAF00013804AEB7FC002 -80EB3FE091C713F0EE1FF8A217FC160FA217FEAA17FCA3EE1FF8A217F06E133F6EEB7FE0 -6E14C0903AFDF001FF80903AF8FC07FE009039F03FFFF8D9E00F13E0D9C00390C7FC2F3A -7EB935>I<903801FFC0010F13FC017F13FFD9FF8013802603FE0013C048485AEA0FF812 -1F13F0123F6E13804848EB7F00151C92C7FC12FFA9127FA27F123FED01E06C7E15036C6C -EB07C06C6C14806C6C131FC69038C07E006DB45A010F13F00101138023257DA42A>II<903803FF8001 -1F13F0017F13FC3901FF83FE3A03FE007F804848133F484814C0001FEC1FE05B003FEC0F -F0A2485A16F8150712FFA290B6FCA301E0C8FCA4127FA36C7E1678121F6C6C14F86D14F0 -00071403D801FFEB0FE06C9038C07FC06DB51200010F13FC010113E025257DA42C>II<161FD907FE -EBFFC090387FFFE348B6EAEFE02607FE07138F260FF801131F48486C138F003F15CF4990 -387FC7C0EEC000007F81A6003F5DA26D13FF001F5D6C6C4890C7FC3907FE07FE48B512F8 -6D13E0261E07FEC8FC90CAFCA2123E123F7F6C7E90B512F8EDFF8016E06C15F86C816C81 -5A001F81393FC0000F48C8138048157F5A163FA36C157F6C16006D5C6C6C495AD81FF0EB -07FCD807FEEB3FF00001B612C06C6C91C7FC010713F02B377DA530>I<13FFB5FCA41207 -7EAFED7FC0913803FFF8020F13FE91381F03FFDA3C01138014784A7E4A14C05CA25CA291 -C7FCB3A3B5D8FC3F13FFA4303A7DB935>II<141FEC7FC0ECFFE0A249 -13F0A56D13E0A2EC7FC0EC1F0091C7FCA9EC0FF0EB0FFFA4EB007F143FB3B0121FEA3F80 -EA7FC0EAFFE0EC7FE0A215C014FF6C481380903883FE006CB45A000F13F0000113801C4B -86BA1D>I<13FFB5FCA412077EAF92380FFFE0A4923803FC0016F0ED0FE0ED1F804BC7FC -157E5DEC03F8EC07E04A5A141FEC7FE04A7E8181A2ECCFFEEC0FFF496C7F806E7F6E7F82 -157F6F7E6F7E82150F82B5D8F83F13F8A42D3A7EB932>I<13FFB5FCA412077EB3B3ACB5 -12FCA4163A7DB91B>I<01FED97FE0EB0FFC00FF902601FFFC90383FFF80020701FF90B5 -12E0DA1F81903983F03FF0DA3C00903887801F000749DACF007F00034914DE6D48D97FFC -6D7E4A5CA24A5CA291C75BB3A3B5D8FC1FB50083B512F0A44C257DA451>I<01FEEB7FC0 -00FF903803FFF8020F13FE91381F03FFDA3C011380000713780003497E6D4814C05CA25C -A291C7FCB3A3B5D8FC3F13FFA430257DA435>I<903801FFC0010F13F8017F13FFD9FF80 -7F3A03FE003FE048486D7E48486D7E48486D7EA2003F81491303007F81A300FF1680A900 -7F1600A3003F5D6D1307001F5DA26C6C495A6C6C495A6C6C495A6C6C6CB45A6C6CB5C7FC -011F13FC010113C029257DA430>I<9039FF01FF80B5000F13F0023F13FC9138FE07FFDA -F00113800003496C13C00280EB7FE091C713F0EE3FF8A2EE1FFCA3EE0FFEAA17FC161FA2 -17F8163F17F06E137F6E14E06EEBFFC0DAF00313809139FC07FE0091383FFFF8020F13E0 -020390C7FC91C9FCACB512FCA42F357EA435>I<9038FE03F000FFEB0FFEEC3FFF91387C -7F809138F8FFC000075B6C6C5A5CA29138807F80ED3F00150C92C7FC91C8FCB3A2B512FE -A422257EA427>114 D<90383FF0383903FFFEF8000F13FF381FC00F383F0003007E1301 -007C130012FC15787E7E6D130013FCEBFFE06C13FCECFF806C14C06C14F06C14F81203C6 -14FC131F9038007FFE140700F0130114007E157E7E157C6C14FC6C14F8EB80019038F007 -F090B512C000F8140038E01FF81F257DA426>I<130FA55BA45BA25B5BA25A1207001FEB -FFE0B6FCA3000390C7FCB21578A815F86CEB80F014816CEBC3E090383FFFC06D13809038 -03FE001D357EB425>I<01FFEC3FC0B5EB3FFFA4000714016C80B3A35DA25DA26C5C6E48 -13E06CD9C03E13FF90387FFFFC011F13F00103138030257DA435>IIIII E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fc ecbx1200 12 41 -/Fc 41 122 df45 DI49 DII<163FA25E5E5D5DA25D5D5D5DA25D92B5FCEC01F7EC03E7140715C7EC0F87 -EC1F07143E147E147C14F8EB01F0EB03E0130714C0EB0F80EB1F00133E5BA25B485A485A -485A120F5B48C7FC123E5A12FCB91280A5C8000F90C7FCAC027FB61280A531417DC038> -I<0007150301E0143F01FFEB07FF91B6FC5E5E5E5E5E16804BC7FC5D15E092C8FC01C0C9 -FCAAEC3FF001C1B5FC01C714C001DF14F09039FFE03FFC9138000FFE01FC6D7E01F06D13 -804915C0497F6C4815E0C8FC6F13F0A317F8A4EA0F80EA3FE0487E12FF7FA317F05B5D6C -4815E05B007EC74813C0123E003F4A1380D81FC0491300D80FF0495AD807FEEBFFFC6CB6 -12F0C65D013F1480010F01FCC7FC010113C02D427BC038>I<4AB47E021F13F0027F13FC -49B6FC01079038807F8090390FFC001FD93FF014C04948137F4948EBFFE048495A5A1400 -485A120FA248486D13C0EE7F80EE1E00003F92C7FCA25B127FA2EC07FC91381FFF8000FF -017F13E091B512F89039F9F01FFC9039FBC007FE9039FF8003FF17804A6C13C05B6F13E0 -A24915F0A317F85BA4127FA5123FA217F07F121FA2000F4A13E0A26C6C15C06D4913806C -018014006C6D485A6C9038E01FFC6DB55A011F5C010714C0010191C7FC9038003FF02D42 -7BC038>I65 D67 -D69 D72 D76 -DII<923807FFC092B512FE0207ECFFC0 -021F15F091267FFE0013FC902601FFF0EB1FFF01070180010313C04990C76C7FD91FFC6E -6C7E49486F7E49486F7E01FF8348496F7E48496F1380A248496F13C0A24890C96C13E0A2 -4819F04982003F19F8A3007F19FC49177FA400FF19FEAD007F19FC6D17FFA3003F19F8A2 -6D5E6C19F0A26E5D6C19E0A26C6D4B13C06C19806E5D6C6D4B13006C6D4B5A6D6C4B5A6D -6C4B5A6D6C4A5B6D01C001075B6D01F0011F5B010101FE90B5C7FC6D90B65A023F15F802 -0715C002004AC8FC030713C047467AC454>II83 D<003FBA12E0A59026FE000FEB8003D8 -7FE09338003FF049171F90C71607A2007E1803007C1801A300781800A400F819F8481978 -A5C81700B3B3A20107B8FCA545437CC24E>I86 -D<903801FFE0011F13FE017F6D7E48B612E03A03FE007FF84848EB1FFC6D6D7E486C6D7E -A26F7FA36F7F6C5A6C5AEA00F090C7FCA40203B5FC91B6FC1307013F13F19038FFFC0100 -0313E0481380381FFE00485A5B127F5B12FF5BA35DA26D5B6C6C5B4B13F0D83FFE013EEB -FFC03A1FFF80FC7F0007EBFFF86CECE01FC66CEB8007D90FFCC9FC322F7DAD36>97 -DIIIIIII<137C48 -B4FC4813804813C0A24813E0A56C13C0A26C13806C1300EA007C90C7FCAAEB7FC0EA7FFF -A512037EB3AFB6FCA518467CC520>II108 -D<90277F8007FEEC0FFCB590263FFFC090387FFF8092B5D8F001B512E002816E4880913D -87F01FFC0FE03FF8913D8FC00FFE1F801FFC0003D99F009026FF3E007F6C019E6D013C13 -0F02BC5D02F86D496D7EA24A5D4A5DA34A5DB3A7B60081B60003B512FEA5572D7CAC5E> -I<90397F8007FEB590383FFF8092B512E0028114F8913987F03FFC91388F801F00039039 -9F000FFE6C139E14BC02F86D7E5CA25CA35CB3A7B60083B512FEA5372D7CAC3E>II<90397FC00FF8B590B57E02C314 -E002CF14F89139DFC03FFC9139FF001FFE000301FCEB07FF6C496D13804A15C04A6D13E0 -5C7013F0A2EF7FF8A4EF3FFCACEF7FF8A318F017FFA24C13E06E15C06E5B6E4913806E49 -13006E495A9139DFC07FFC02CFB512F002C314C002C091C7FCED1FF092C9FCADB67EA536 -407DAC3E>I<90387F807FB53881FFE0028313F0028F13F8ED8FFC91389F1FFE000313BE -6C13BC14F8A214F0ED0FFC9138E007F8ED01E092C7FCA35CB3A5B612E0A5272D7DAC2E> -114 D<90391FFC038090B51287000314FF120F381FF003383FC00049133F48C7121F127E -00FE140FA215077EA27F01E090C7FC13FE387FFFF014FF6C14C015F06C14FC6C80000380 -6C15806C7E010F14C0EB003F020313E0140000F0143FA26C141F150FA27EA26C15C06C14 -1FA26DEB3F8001E0EB7F009038F803FE90B55A00FC5CD8F03F13E026E007FEC7FC232F7C -AD2C>III120 DI -E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fd ectt1000 10 73 -/Fd 73 126 df<121FEA3F80EA7FC0EAFFE0B0EA7FC0AEEA1F00C7FCA7121FEA3F80EA7F -C0EAFFE0A5EA7FC0EA3F80EA1F000B3470B32C>33 D<003C131E007F137F481480A66C14 -00A6007E7FA6003E133EA3003C131E001C131C191977B32C>I<143814FC13011303EB07 -F8EB0FF0EB1FC0EB3F80EB7F0013FE485A485A5B12075B120F5B485AA2123F90C7FCA25A -127EA312FE5AAC7E127EA3127F7EA27F121FA26C7E7F12077F12037F6C7E6C7E137FEB3F -80EB1FC0EB0FF0EB07F8EB03FC130113001438164272B92C>40 D<127012FC7E7E6C7E6C -7EEA0FE06C7E6C7E6C7E6C7E137F7F1480131F14C0130FEB07E0A214F01303A214F81301 -A314FC1300AC130114F8A3130314F0A2130714E0A2EB0FC0131F1480133F14005B13FE48 -5A485A485A485AEA3FC0485A48C7FC5A5A1270164279B92C>II44 D<007FB512F0B612F8A36C14F01D0579942C>I<121FEA3F80EA7FC0EAFFE0A5EA7F -C0EA3F80EA1F000B0B708A2C>I<1507ED0F80A2151F16005D153E157E157CA215FC5D14 -015D14035D14075D140F5D141F92C7FC5C143EA2147E147C14FC5C13015C13035C13075C -130F5C131F91C8FC5B133EA2137E137C13FC5B12015B12035B12075B120F5B121F90C9FC -A25A123E127E127C12FC5AA2127021417BB92C>II<1307497EA2131FA2133F137F13FF5A1207127FB5FC13DF139FEA7C1F1200 -B3AE007FB512E0B612F0A36C14E01C3477B32C>IIII<000FB512FE4880A35D0180C8FCADEB83FE90389FFF8090B512E0 -15F8819038FE03FE9038F000FF01C07F49EB3F8090C7121F6C15C0C8120FA2ED07E0A412 -3C127EB4FC150F16C0A248141F007EEC3F80007FEC7F006C6C5B6D485A391FF80FFC6CB5 -5A6C5C000114C06C6C90C7FCEB0FF823347CB22C>I56 D -I<121FEA3F80EA7FC0EAFFE0A5EA7FC0EA3F80EA1F00C7FCAE121FEA3F80EA7FC0EAFFE0 -A5EA7FC0EA3F80EA1F000B2470A32C>II<007FB612F0B712F8A36C -15F0CAFCA8007FB612F0B712F8A36C15F025127DA12C>61 D64 -D<14FE497EA4497FA214EFA2130781A214C7A2010F7FA314C390381F83F0A590383F01F8 -A490387E00FCA549137E90B512FEA34880A29038F8003FA34848EB1F80A4000715C04913 -0FD87FFEEBFFFC6D5AB514FE6C15FC497E27347EB32C>I<007FB512E015F8B612FE6C80 -16C03903F0003FED0FE0ED07F01503A2ED01F8A6ED03F0A21507ED0FE0ED1FC0EDFF8090 -B612005D5D15FF16C09039F0001FE0ED07F0ED03F81501ED00FCA216FE167EA616FE16FC -1501ED03F8150FED3FF0007FB612E016C0B712806CECFE0015F027337FB22C>I<02FF13 -700107EBE0F84913F9013F13FD4913FFEBFF813901FE007F4848131FD807F0130F150748 -5A491303485A150148C7FCA25A007EEC00F01600A212FE5AAB7E127EA3007F15F06CEC01 -F8A26C7EA26C6C13036D14F06C6C130716E0D803FC131F6C6CEB3FC03A00FF81FF806DB5 -12006D5B010F5B6D13F00100138025357DB32C>I<007FB5FCB612C015F0816C803907E0 -03FEEC00FFED7F80153FED1FC0ED0FE0A2150716F0150316F81501A4ED00FCACED01F8A3 -150316F0A2150716E0150FED1FC0153FED7F80EDFF00EC03FE007FB55AB65A5D15C06C91 -C7FC26337EB22C>I<007FB612F0B712F8A37E3903F00001A7ED00F01600A4EC01E04A7E -A490B5FCA5EBF003A46E5A91C8FCA5163C167EA8007FB612FEB7FCA36C15FC27337EB22C ->I<007FB612F8B712FCA37ED803F0C7FCA716781600A515F04A7EA490B5FCA5EBF001A4 -6E5A92C7FCAD387FFFE0B5FC805C7E26337EB22C>I<903901FC038090390FFF87C04913 -EF017F13FF90B6FC4813073803FC01497E4848137F4848133F49131F121F5B003F140F90 -C7FCA2127EED078092C7FCA212FE5AA8913803FFF84A13FCA27E007E6D13F89138000FC0 -A36C141FA27F121F6D133F120F6D137F6C7E6C6C13FF6D5A3801FF076C90B5FC6D13EF01 -1F13CF6DEB0780D901FCC7FC26357DB32C>II<007FB512F8B612FCA36C14F839000FC000B3B3A5007FB512F8B612FCA36C14F81E -3379B22C>I<0107B512804914C0A36D148090390003F000B3AF1218127EA2B4FCA24A5A -48130F007F131F9038C07FC06CB55A6C91C7FC6C5B000313F838007FC022347BB22C>I< -387FFFE0B57EA36C5BD803F0C8FCB3AE16F0ED01F8A8007FB6FCB7FCA36C15F025337DB2 -2C>76 DI -II<007FB512C0B612F88115FF6C15802603F00013C0153FED0F -E0ED07F0A2150316F81501A6150316F01507A2ED0FE0ED3FC015FF90B61280160015FC5D -15C001F0C8FCB0387FFF80B57EA36C5B25337EB22C>II<387FFFFCB67E15E0 -15F86C803907E007FE1401EC007F6F7E151FA26F7EA64B5AA2153F4BC7FCEC01FE140790 -B55A5D15E081819038E007FCEC01FE1400157F81A8160FEE1F80A5D87FFEEB1FBFB5ECFF -00815E6C486D5AC8EA01F029347EB22C>I<90381FF80790B5EA0F804814CF000714FF5A -381FF01F383FC003497E48C7FC007E147F00FE143F5A151FA46CEC0F00007E91C7FC127F -7FEA3FE0EA1FFCEBFFC06C13FC0003EBFFC06C14F06C6C7F01077F9038007FFEEC07FF02 -001380153FED1FC0A2ED0FE0A20078140712FCA56CEC0FC0A26CEC1F806D133F01E0EB7F -009038FE01FF90B55A5D00F914F0D8F83F13C0D8700790C7FC23357CB32C>I<007FB612 -FCB712FEA43AFC007E007EA70078153CC71400B3AF90383FFFFCA2497F6D5BA227337EB2 -2C>I<3B7FFF803FFFC0B56C4813E0A36C496C13C03B03F00001F800B3AF6D130300015D -A26D130700005D6D130F017F495A6D6C485AECE0FF6DB5C7FC6D5B010313F86D5B903800 -3F802B3480B22C>II<3A3FFF03FFE0484913F0148714076C6D13E03A01F800FE007F0000495A13FE017E -5BEB7F03013F5B1487011F5B14CF010F5B14FF6D5BA26D90C7FCA26D5AA26D5AA2497EA2 -497EA2497F81EB0FCF81EB1FC7EC87F0EB3F83EC03F8EB7F01017E7FEBFE00497F000114 -7E49137F000380491480151FD87FFEEBFFFC6D5AB514FE6C15FC497E27337EB22C>88 -DI<00 -3FB612C04815E0A4007EC7EA1FC0ED3F80A2ED7F00157E15FE4A5A003C5CC712034A5AA2 -4A5A4A5AA24A5A4AC7FCA214FE495AA2495A495AA2495A495AA2495A49C8FCA213FE485A -A24848EB03C049EB07E01207485A5B121F485AA248C7FCB7FCA46C15C023337CB22C>I< -007FB6FCB71280A46C150021067B7D2C>95 D<3801FFF0000713FE001F6D7E15E0488090 -38C01FF81407EC01FC381F80000006C77EC8127EA3ECFFFE131F90B5FC1203120F48EB80 -7E383FF800EA7FC090C7FC12FE5AA47E007F14FEEB8003383FE01F6CB612FC6C15FE6C14 -BF0001EBFE1F3A003FF007FC27247CA32C>97 DI<903803FFE0011F13F8017F13FE -48B5FC48804848C6FCEA0FF0485A49137E4848131890C9FC5A127EA25AA8127EA2127F6C -140F6DEB1F806C7E6D133F6C6CEB7F003907FE03FF6CB55A6C5C6C6C5B011F13E0010390 -C7FC21247AA32C>IIIIII<1307EB1FC0A2497EA36D5AA20107C7FC90C8FC -A7387FFFC080B5FC7EA2EA0007B3A8007FB512FCB612FEA36C14FC1F3479B32C>I<140E -EC3F80A2EC7FC0A3EC3F80A2EC0E0091C7FCA748B512804814C0A37EC7120FB3B3A2141F -003C1480007E133FB414005CEB01FEEBFFFC6C5B5C001F5B000790C7FC1A467CB32C>I< -EA7FE0487EA3127F1201AA91381FFFF04A13F8A36E13F0913800FE004A5A4A5A4A5A4A5A -4A5A4A5A4AC7FC14FEEBF1FC13F3EBF7FE90B5FCA2EC9F80EC0FC001FE7FEBFC07496C7E -496C7E811400157E811680151F3A7FFFC0FFFCB500E113FEA36C01C013FC27337EB22C> -I<387FFFE0B57EA37EEA0003B3B3A5007FB61280B712C0A36C158022337BB22C>I<3A7F -83F007E09039CFFC1FF83AFFDFFE3FFCD87FFF13FF91B57E3A07FE1FFC3E01FCEBF83F49 -6C487E01F013E001E013C0A301C01380B33B7FFC3FF87FF0027F13FFD8FFFE6D13F8D87F -FC4913F0023F137F2D2481A32C>I<397FF01FE039FFF87FFC9038F9FFFE01FB7F6CB6FC -00019038F03F80ECC01F02807FEC000F5B5BA25BB3267FFFE0B5FCB500F11480A36C01E0 -140029247FA32C>II<397FF01FE039FFF8FFF801FB13FE90B6FC6C158000019038 -F07FC09138801FE091380007F049EB03F85BED01FC491300A216FE167EA816FE6D14FCA2 -ED01F86D13036DEB07F0150F9138801FE09138E07FC091B51280160001FB5B01F813F8EC -3FC091C8FCAD387FFFE0B57EA36C5B27367FA32C>I114 D<90387FF8700003B512F8120F5A5A387FC00F -387E00034813015AA36CEB00F0007F140013F0383FFFC06C13FE6CEBFF80000314E0C66C -13F8010113FCEB0007EC00FE0078147F00FC143F151F7EA26C143F6D133E6D13FE9038F0 -07FC90B5FC15F815E000F8148039701FFC0020247AA32C>I<131E133FA9007FB6FCB712 -80A36C1500D8003FC8FCB1ED03C0ED07E0A5EC800F011FEB1FC0ECE07F6DB51280160001 -035B6D13F89038003FE0232E7EAD2C>I<3A7FF003FF80486C487FA3007F7F0001EB000F -B3A3151FA2153F6D137F3900FE03FF90B7FC6D15807F6D13CF902603FE07130029247FA3 -2C>I<3A7FFF01FFFCB514FE148314016C15FC3A03E0000F80A26D131F00011500A26D5B -0000143EA26D137E017C137CA2017E13FC013E5BA2EB3F01011F5BA21483010F5BA214C7 -01075BA214EF01035BA214FF6D90C7FCA26D5A147C27247EA32C>II<3A3FFF03FFF048018713F8A36C010313F03A00FC007E00 -5D90387E01F8013F5BEB1F83EC87E090380FCFC0903807EF80EB03FF6D90C7FC5C6D5A14 -7C14FE130180903803EF80903807CFC0EB0FC7EC83E090381F01F0013F7FEB7E00017C13 -7C49137E0001803A7FFF01FFFC1483B514FE6C15FC140127247EA32C>I<3A7FFF01FFFC -B5008113FE148314816C010113FC3A03E0000F806C7E151F6D140012005D6D133E137C01 -7E137E013E137CA2013F13FC6D5BA2EB0F815DA2EB07C1ECC3E0A2EB03E3ECE7C0130114 -F75DEB00FFA292C7FC80A2143EA2147E147CA214FC5CA2EA0C01003F5BEA7F83EB87E0EA -7E0F495A387FFF806C90C8FC6C5A6C5AEA07E027367EA32C>I<003FB612E04815F0A400 -7EC7EA1FE0ED3FC0ED7F80EDFF004A5A003C495AC7485A4A5A4A5A4A5A4A5A4AC7FCEB01 -FC495AEB0FF0495A495A495A49C8FC4848EB01E04848EB03F0485A485A485A485A485AB7 -FCA46C15E024247DA32C>I<15FF02071380141F147F91B512004913C04AC7FCEB03F85C -B31307EB1FE013FF007F5BB55A49C8FC6D7E6C7FC67F131FEB07F01303B380EB01FEECFF -C06D13FF6E1380141F14070200130021417BB92C>I125 -D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fe ecbx1440 14.4 41 -/Fe 41 122 df27 -D<151E153E15FE1403140F147FEB07FF0003B5FCB6FCA3EBF87FEAFC00C7FCB3B3B3A600 -7FB712FCA52E4E76CD42>49 DI<913807FFC002 -7F13FC0103B67E010F15E090261FF80313F890267FC0007F01FEC7EA3FFE48488148486E -138013FE486C6C6D13C0804817E080A66C5B18C06C5B6C90C75AD80038168090C8FC4C13 -00A24C5A5F4C5A4B5B4B13C0030F5BDB7FFEC7FC91387FFFF816C016FCEEFF80DA000313 -E09238007FF8EE3FFE707E70138018C07013E018F07013F8A218FC82A218FEA3EA03C0EA -0FF0EA3FFC487EA2B5FCA218FCA25E18F8A26C4816F0495C4916E0D83FE04A13C06C485C -D80FF04A1380D807FE91387FFE003B03FFE003FFFC6C90B65A6C6C15E0010F92C7FC0101 -14FCD9001F1380374F7BCD42>I<17FC1601A216031607160FA2161F163F167FA216FF5D -5DA25D5D5D167F153E157E15FC15F8EC01F01403EC07E015C0EC0F80141FEC3F00143E5C -14FC495A5C495A1307495A5C49C7FC5B137E137C5B1201485A5B485A120F485A90C8FC12 -3E127E5ABA1280A5C901FCC7FCAF021FB71280A5394F7CCE42>I<486C150601F0153E01 -FEEC01FED9FFF0133F91B65A5F5F5F5F5F94C7FC16FC5E16E093C8FC15FC01F0138091CA -FCAC913807FF80023F13F891B512FE01F36E7E9026FFFC0113E09139E0007FF891C76C7E -496E7E01F86E7E5B7013804916C0C9FC18E08218F0A418F8A31203EA0FE0EA3FF8487EA2 -12FF7FA218F0A25B5E6C4816E05B01C016C06CC85A18806C6C4A13007FD80FF04A5A6C6C -ECFFFCD803FE4913F02701FFE00F5B6C6CB612806D92C7FC010F14F8010114C09026003F -FCC8FC354F7ACD42>II<121F7F7FEBFF8091B8FCA45A18FE18FC18 -F818F0A218E018C018804817000180C8123E007EC9127E5F007C4B5A4C5A5F16074C5A48 -4B5A4CC7FC167E167CC912FC4B5A4B5AA24B5A150F4B5AA24B5AA24BC8FC5DA25C5D1403 -A214075D140FA3141FA2143FA34A5AA414FFA65BAB6D5B6E5A6E5A6E5A385279D042>I< -913803FFC0023F13FC49B67E010715E090260FFC0013F8D93FE0EB1FFCD97F80EB07FE49 -C76C7E496E1380484880000317C049157F120718E0173F120FA27FA27F7F6E147F02E015 -C08002FC14FF6C01FF15806F481300EDE0036C9138F807FE6F485A6C9138FF1FF06CEDFF -E017806D4AC7FC7F010F6E7E6D81010115F06D81010315FE010F81D93FF71580D97FC115 -C02701FF807F14E048EB001F48486D14F04848010314F848481300496E13FC003F151F49 -1407007F6F13FE491400177F00FF163F49151F170F1707A21703A218FCA27F127F6DED07 -F8A26C6CED0FF07F6C6CED1FE06C6CED3FC06C6CEDFF806C01C0010313006C01FCEB3FFE -6C6CB612F8011F15E001071580010002FCC7FC020F13C0374F7BCD42>I<913807FF8002 -7F13F849B512FE01076E7E90261FFE0113E0903A7FF8003FF049486D7E48496D7E48496D -7E484980486F138091C7FC486F13C05A18E0485A18F0A27013F812FFA318FCA618FEA35E -127FA4003F5DA26C7E5E7E6C6D5B161E6C7F6C6D5B6C6C6C13F890393FFC03F06DB55A01 -074A13FC01001400EC1FF891C8FCA218F85EA301FC16F0487E2607FF8015E05E486D15C0 -A24C1380A24C13005F4A131F6C4B5A49C7485A494A5A6C48495B6D01075B2701FF803F90 -C7FC6C90B512FC013F5C6D14C0010791C8FC9038007FF0374F7BCD42>I66 D<932603FFF01407047F01FF140F0307B6 -00E0131F033F03F8133F92B700FE137F02039126C003FF13FF020F01F8C7EA3FC1023F01 -C0EC0FE391B5C80003B5FC4901FC814949814901E082011F498249498292CA7E49488349 -48835A4A83485B4885A24849187FA2485B1B3FA2485B1B1FA25AA21B0091CDFCA2B5FCAE -7EA280A36C1A1FA36C7FA21B3F6C7F1B3E6C7F1B7E6C6D187C6C1AFC6E18F86C19016D6C -EF03F06D7E6FEE07E06D6DEE0FC001076DEE1F806D01F8EE3F006D6D16FE6D01FF4B5A02 -3F01C0EC07F8020F01FCEC3FF00203903AFFC001FFC0020091B6C7FC033F15FC030715F0 -DB007F1480040301F0C8FC505479D25F>II70 -D72 DI76 -D80 -D82 DI85 D97 -DI<913803 -FFE0023F13FE91B67E010315E0010F9038003FF8D93FFCEB07FC4948497E4948131F4849 -497E485B485BA24890C7FC5A5B003F6F5A705A705A007F92C8FC5BA312FFAD127F7FA312 -3F7F6CEE0F80A26C6D141F18006C6D5C6C6D143E6C6D147E6C6D5C6D6C495A6DB4EB07F0 -010F9038C01FE06D90B5128001014AC7FCD9003F13F80203138031387CB63A>I<943803 -FF80040FB5FCA5EE003F170FB3A4913803FF80023F13F849B512FE0107ECFF8F011F9038 -C03FEF90273FFE0007B5FCD97FF8130149487F484980484980484980488291C8FC5A5B12 -3FA2127F5BA312FFAD127FA37F123FA3121F7F6C5E6C6D5C5F6C6D91B5FC6C6D5B6C6D49 -14E0D97FFCD90FEFEBFF80D91FFFEB7F8F010790B5120F010114FC6D6C13E00207010049 -C7FC41547CD249>I<913807FF80027F13F849B512FE01076E7E011F010313E0903A3FFC -007FF0D97FF06D7E49486D7E4849130F48496D7E48824890C77E1880485A82003F17C0A3 -485A18E082A212FFA290B8FCA401FCCAFCA6127FA37F123FA2EF03E06C7E17076C17C06C -6D140F18806C6D141F6C6DEC3F006C6D147ED97FFC495AD91FFFEB07F86D9038E03FF001 -0390B512C001005D023F01FCC7FC020113E033387CB63C>IIII<133FEBFFC0487F487FA2487FA66C5BA26C5B -6C5B013FC7FC90C8FCAEEB1FF8B5FCA512017EB3B3A6B612F0A51C547CD324>I107 DIII<913801FFC0023F13FE -91B67E010315E0010F018013F8903A3FFC001FFED97FF0EB07FF49486D7F48496D7F4849 -6D7F91C8127F4883488349153F001F83A2003F8349151FA2007F83A400FF1880AC007F18 -00A3003F5F6D153FA2001F5FA26C6C4B5AA26C6D4A5A6C5F6C6D495B6C6D495B6D6C4990 -C7FCD93FFCEB1FFE6DB46CB45A010790B512F0010115C0D9003F49C8FC020313E039387C -B642>II< -90393FF001FCB590380FFF804B13E0037F13F09238FE1FF89138F1F83F00019138F07FFC -6CEBF3E015C0ECF780A2ECFF00EE3FF84AEB1FF0EE0FE093C7FC5CA45CB3ABB612FEA52E -367DB535>114 D<903903FFC00E011FEBFC1E90B6127E000315FE3907FE003FD80FF013 -0F4848130348481301491300127F90C8127EA248153EA27FA27F01F091C7FC13FCEBFF80 -6C13FEECFFF06C14FE6F7E6C15E06C816C15FC6C81C681133F010F15801301D9000F14C0 -EC003F030713E0150100F880167F6C153FA2161F7EA217C07E6D143F17807F6DEC7F0001 -F85C6DEB03FE9039FF801FFC486CB512F0D8F81F14C0D8F00791C7FC39E0007FF02B387C -B634>I<147CA614FCA41301A31303A21307A2130F131F133F137F13FF1203000F90B512 -FEB7FCA426007FFCC8FCB3A9EE0F80ABEE1F006D7EA2011F143E806D6D5A6DEBC1F86DEB -FFF001005C023F1380DA03FEC7FC294D7ECB33>II121 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Ff ecss2074 20.74 10 -/Ff 10 116 df76 -D85 -D<91380FFF8049B512F0010F14FC017F14FF48B712C0000782001F824882DAE0007F49C7 -EA3FFE01F8140FD81FC06E7E90C86C1380121E00186F13C0001081CAFCEF7FE0A318F017 -3FAD93B5FC157F0207B6FC143F49B7FC1307011F153F017FEBF80090B512804801F8C7FC -4813C04890C8FCEA0FFC485A485A5B485A5BA248C9FCA5177FA26D15FFA26C6C5C6D5C6D -140F6C6C5C01FF91B5FC6CEBE00791B612BF6CEDFE3F16FC6C15F06C15C06CECFE006C6C -13F0D91FFCC9FC344C77CA4C>97 DII103 D105 -D108 D110 -D<91380FFFC091B512FE0107ECFFC0011F15F8017F15FE90B812804817C05A489038F000 -3F4890C70003138049EC007FD81FF8151F491507003F16014992C7FCA2485AA77FA26C7E -7F7F6CB4FC6C13C014F86CEBFF806C14FC6CECFFE06C15FC6D14FF6D15C0010F81010315 -F8010081020F80DA007F7F03071480DB003F13C0160F040313E01600EF7FF0173FA2EF1F -F8A2170FA7EF1FF0A20070163F127C007FEE7FE001C015FF01F0020313C0B5020F138002 -F0137F91B712006C5E001F5E000716F0C65E011F1580010302FCC7FCD9000F13C0354C7C -CA3D>115 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fg ecrm0700 7 2 -/Fg 2 66 df<13381378EA01F8121F12FE12E01200B3AB487EB512F8A215267BA521>49 -D<140EA2141FA34A7EA3EC6FC0A2ECEFE014C7A290380183F0A390380301F8A201067F14 -00A249137EA2011C137F01187FA24980013FB5FCA2903960000FC0A201E080491307A248 -486D7EA200038115011207D81FC0497ED8FFF890383FFFE0A22B2A7EA931>65 -D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fh ecrm1000 10 80 -/Fh 80 123 df21 D27 DIII<007C137C00FE13FEEAFF01A3EAFE00A7007E13FC -007C137CA8003C137800381338A700181330171E77BA2A>34 D<141FEC7FC0903801F0E0 -903803C0600107137090380F803090381F00381518A25BA2133E133F15381530A215705D -5D140190381F838092CAFC1487148E02DC49B51280EB0FF85C4A9039003FF8000107ED0F -C06E5D71C7FC6E140E010F150CD91DFC141C01391518D970FE143801E015302601C07F14 -70D803805D00076D6C5BD80F00EBC00148011F5C4890380FE003003E6E48C8FC007E9038 -07F8060203130E00FE6E5A6E6C5A1400ED7F706C4B13036F5A6F7E6C6C6D6C5B7013066C -6C496C130E6DD979FE5B281FF001F07F133C3C07F80FE03FC0F86CB539800FFFF0C69026 -FE000313C0D91FF0D9007FC7FC393E7DBB41>38 D<121C127FEAFF80A213C0A3127F121C -1200A412011380A2120313005A1206120E5A5A5A12600A1979B917>I<146014E0EB01C0 -EB0380EB0700130E131E5B5BA25B485AA2485AA212075B120F90C7FCA25A121EA2123EA3 -5AA65AB2127CA67EA3121EA2121F7EA27F12077F1203A26C7EA26C7E1378A27F7F130E7F -EB0380EB01C0EB00E01460135278BD20>I<12C07E12707E7E7E120F6C7E6C7EA26C7E6C -7EA21378A2137C133C133E131EA2131F7FA21480A3EB07C0A6EB03E0B2EB07C0A6EB0F80 -A31400A25B131EA2133E133C137C1378A25BA2485A485AA2485A48C7FC120E5A5A5A5A5A -13527CBD20>II<121C127FEAFF80A213C0A3127F121C1200A412011380A2120313005A1206120E -5A5A5A12600A19798817>44 DI<121C127FEAFF80A5EA7F0012 -1C0909798817>I<1506A2150E150CA2151C151815381530A215701560A215E015C0A214 -011580A2140315005C1406A2140E140CA2141C1418A214381430A21470146014E05CA213 -015CA2130391C7FCA25B1306A2130E130C131C1318A213381330A213701360A213E05BA2 -12015B120390C8FCA25A1206A2120E120CA2121C1218A21238123012701260A212E05AA2 -1F537BBD2A>IIIII<1538A2157815 -F8A2140114031407A2140F141F141B14331473146314C313011483EB030313071306130C -131C131813301370136013C01201EA038013005A120E120C5A123812305A12E0B712F8A3 -C73803F800AA4A7E0103B512F8A325387EB72A>I<0006140CD80780133C9038F003F890 -B5FC5D5D158092C7FC14FC38067FE090C9FCAAEB07F8EB1FFE9038780F809038E007E039 -07C003F0496C7E130000066D7E81C8FC8181A21680A4121C127F5A7FA390C713005D12FC -00605C12704A5A6C5C6C1303001E495A6C6C485A3907E03F800001B5C7FC38007FFCEB1F -E021397CB62A>II<12301238123E003FB612E0A3 -16C05A168016000070C712060060140E5D5D00E014304814705D5DC712014A5A4AC7FC14 -06140E5CA25C1478147014F05C1301A213035C1307A2130FA3131F5CA2133FA5137FA96D -C8FC131E233A7BB72A>III<121C -127FEAFF80A5EA7F00121CC7FCB2121C127FEAFF80A5EA7F00121C092479A317>I<121C -127FEAFF80A5EA7F00121CC7FCB2121C127FEAFF80A213C0A3127F121C1200A412011380 -A2120313005A1206120E5A5A5A12600A3479A317>I64 -D<1538A3157CA315FEA34A7EA34A6C7EA202077FEC063FA2020E7FEC0C1FA2021C7FEC18 -0FA202387FEC3007A202707FEC6003A202C07F1501A2D901807F81A249C77F167FA20106 -810107B6FCA24981010CC7121FA2496E7EA3496E7EA3496E7EA213E0707E1201486C81D8 -0FFC02071380B56C90B512FEA3373C7DBB3E>II<913A01FF800180 -020FEBE003027F13F8903A01FF807E07903A03FC000F0FD90FF0EB039F4948EB01DFD93F -80EB00FF49C8127F01FE153F12014848151F4848150FA248481507A2485A1703123F5B00 -7F1601A35B00FF93C7FCAD127F6DED0180A3123F7F001F160318006C7E5F6C7E17066C6C -150E6C6C5D00001618017F15386D6C5CD91FE05C6D6CEB03C0D903FCEB0F80902701FF80 -3FC7FC9039007FFFFC020F13F002011380313D7BBA3C>IIIIIII75 DIIIIIIII<003FB812E0A3D9C003EB -001F273E0001FE130348EE01F00078160000701770A300601730A400E01738481718A4C7 -1600B3B0913807FF80011FB612E0A335397DB83C>IIII<007FB590383FFF -FCA3C601F801071380D97FE0D903FCC7FC013FEC01F06D6C5C5F6D6C5C6D6C13034CC8FC -6D6C1306160E6D6C5B6DEB8018163891387FC0306E6C5A16E06E6C5A91380FF18015FB6E -B4C9FC5D14036E7EA26E7F6F7EA24B7E15DF9138019FF09138038FF8150F91380607FC91 -380E03FE140C4A6C7EEC38000230804A6D7E14E04A6D7E49486D7E130391C76C7E01066E -7E130E010C6E7E011C1401013C8101FE822607FF80010713E0B500E0013FEBFF80A33939 -7EB83E>II<003FB7FCA39039FC0001 -FE01C0130349495A003EC7FC003C4A5A5E0038141F00784A5A12704B5A5E006014FF4A90 -C7FCA24A5A5DC712074A5AA24A5A5D143F4A5AA24A5A92C8FC5B495AA2495A5C130F4948 -EB0180A2495A5C137F495A16034890C7FC5B1203485AEE0700485A495C001F5D48485C5E -4848495A49130FB8FCA329397BB833>I<007FB81280B912C0A26C17803204797041>95 -D97 DIIII<147E903803FF8090380FC1E0EB1F8790 -383F0FF0137EA213FCA23901F803C091C7FCADB512FCA3D801F8C7FCB3AB487E387FFFF8 -A31C3B7FBA19>IIII< -EB01C0EB07F0EB0FF8A5EB07F0EB01C090C7FCAAEB01F813FFA313071301B3B3A2123C12 -7E00FF13F01303A214E038FE07C0127C383C0F00EA0FFEEA03F8154984B719>III<2703F00FF0EB1FE000FFD93FFCEB7FF8913AF03F01E0 -7E903BF1C01F83803F3D0FF3800FC7001F802603F70013CE01FE14DC49D907F8EB0FC0A2 -495CA3495CB3A3486C496CEB1FE0B500C1B50083B5FCA340257EA445>I<3903F00FF000 -FFEB3FFCECF03F9039F1C01F803A0FF3800FC03803F70013FE496D7EA25BA35BB3A3486C -497EB500C1B51280A329257EA42E>II<3903F01FE000FFEB7FF89038 -F1E07E9039F3801F803A07F7000FC0D803FEEB07E049EB03F04914F849130116FC150016 -FEA3167FAA16FEA3ED01FCA26DEB03F816F06D13076DEB0FE001F614C09039F7803F0090 -38F1E07E9038F0FFF8EC1FC091C8FCAB487EB512C0A328357EA42E>II<3807E01F00 -FFEB7FC09038E1E3E09038E387F0380FE707EA03E613EE9038EC03E09038FC0080491300 -A45BB3A2487EB512F0A31C257EA421>II<1318A51338A31378A313F8120112031207001FB5FCB6FC -A2D801F8C7FCB215C0A93800FC011580EB7C03017E13006D5AEB0FFEEB01F81A347FB220 ->IIIIII<003FB512FCA2EB8003D83E0013F8003CEB07F00038EB0FE012300070EB -1FC0EC3F800060137F150014FE495AA2C6485A495AA2495A495A495AA290387F000613FE -A2485A485A0007140E5B4848130C4848131CA24848133C48C7127C48EB03FC90B5FCA21F -247EA325>I E -%EndDVIPSBitmapFont -end -%%EndProlog -%%BeginSetup -%%Feature: *Resolution 600dpi -TeXDict begin -%%BeginPaperSize: Letter -letter -%%EndPaperSize - -%%EndSetup -%%Page: 1 1 -1 0 bop 0 162 a Fh(11)17 b(11)h(T)249 180 y(E)295 162 -y(X)h(L)398 145 y Fg(A)435 162 y Fh(T)481 180 y(E)527 -162 y(X)0 353 y Ff(Using)54 b(Libical)p 0 467 3900 24 -v 0 580 a Fh(Eric)28 b(Busb)r(o)r(om)f(\(eric@soft)n(w)n -(arestudio.org\))2054 b(Ma)n(y)26 b(2000)0 1217 y Fe(1)131 -b(In)l(tro)t(duction)0 1456 y Fh(Libical)23 b(is)f(an)h(Op)r(en)g -(Source)f(implemen)n(tation)h(of)g(the)g(iCalendar)f(proto)r(cols)f -(and)i(proto)r(col)e(data)i(units.)35 b(The)23 b(iCalendar)0 -1570 y(sp)r(eci\034cation)k(describ)r(es)g(ho)n(w)f(calendar)g(clien)n -(ts)i(can)f(comm)n(unicate)f(with)i(calendar)e(serv)n(ers)f(for)i -(users)g(can)g(store)f(their)0 1683 y(calendar)g(data)h(and)h(arrange)d -(meetings)i(with)h(other)f(users.)0 1840 y(Libical)g(implemen)n(ts)h -(RF)n(C2445)e(and)h(RF)n(C2446.)35 b(Ev)n(en)n(tually)-7 -b(,)27 b(it)h(will)g(also)e(implemen)n(t)j(iRIP)f(and)f(CAP)-7 -b(.)0 1996 y(This)32 b(do)r(cumen)n(tation)g(assumes)g(that)g(y)n(ou)g -(are)f(familiar)h(with)h(the)f(iCalendar)f(standards)g(RF)n(C2445)g -(and)h(RF)n(C2446.)0 2110 y(these)c(sp)r(eci\034cations)e(are)h(online) -g(on)h(the)g(CALSCH)g(w)n(ebpage)e(at:)0 2308 y Fd(http://www.imc.o)o -(rg)o(/ie)o(tf)o(-c)o(ale)o(nd)o(ar)o(/)0 2706 y Fc(1.1)112 -b(The)38 b(libical)c(pro)6 b(ject)0 2916 y Fh(This)29 -b(co)r(de)g(is)g(under)g(activ)n(e)f(dev)n(elopmen)n(t.)40 -b(If)30 b(y)n(ou)e(w)n(ould)h(lik)n(e)f(to)h(con)n(tribute)g(to)g(the)g -(pro)5 b(ject,)29 b(y)n(ou)f(can)h(con)n(tact)f(me,)0 -3029 y(Eric)g(Busb)r(o)r(om,)f(at)g(eric@soft)n(w)n(arestudio.org.)33 -b(The)27 b(pro)5 b(ject)27 b(has)g(a)g(w)n(ebpage)g(at)0 -3227 y Fd(http://softwares)o(tu)o(dio)o(.o)o(rg)o(/li)o(bi)o(ca)o(l/i)o -(nd)o(ex)o(.ht)o(ml)0 3539 y Fh(and)g(a)h(mailing)f(list)g(that)h(y)n -(ou)f(can)g(join)h(b)n(y)f(sending)g(the)h(follo)n(wing)f(mail:)0 -3737 y Fd(To:)42 b(minimalist@softwa)o(re)o(st)o(udi)o(o.)o(or)o(g)0 -3850 y(Subject:)e(subscribe)g(libical)0 4248 y Fc(1.2)112 -b(License)0 4458 y Fh(The)60 b(co)r(de)f(and)h(data\034les)f(in)h(this) -g(distribution)g(are)e(licensed)i(under)g(the)g(Mozilla)f(Public)h -(License.)133 b(See)0 4572 y(h)n(ttp://www.mozilla.org/NPL/MPL-1.0.h)n -(tml)37 b(for)j(a)h(cop)n(y)f(of)g(the)i(license.)76 -b(Alternately)-7 b(,)44 b(y)n(ou)c(ma)n(y)g(use)g(libical)0 -4686 y(under)32 b(the)g(terms)g(of)g(the)g(GNU)h(Library)d(General)h -(Public)i(License.)50 b(See)32 b(h)n(ttp://www.fsf.org/cop)n -(yleft/lesser.h)n(tml)0 4799 y(for)27 b(a)g(cop)n(y)g(of)g(the)h(LGPL.) -0 4956 y(This)j(dual)g(license)f(ensures)h(that)g(the)g(library)f(can)g -(b)r(e)i(incorp)r(orated)d(in)n(to)i(b)r(oth)g(proprietary)e(co)r(de)i -(and)f(GPL'd)i(pro-)0 5069 y(grams,)23 b(and)h(will)h(b)r(ene\034t)g -(from)f(impro)n(v)n(emen)n(ts)e(made)i(b)n(y)g(programmers)e(in)i(b)r -(oth)h(realms.)34 b(I)25 b(will)f(only)g(accept)g(c)n(hanges)0 -5183 y(in)n(to)j(m)n(y)h(v)n(ersion)e(of)h(the)h(library)e(if)i(they)g -(are)f(similarly)f(dual-licensed.)0 5467 y Fc(1.3)112 -b(Example)37 b(Co)s(de)0 5677 y Fh(A)h(lot)f(of)h(the)g(do)r(cumen)n -(tation)f(for)g(this)h(library)e(is)i(in)g(the)g(form)f(of)g(example)g -(co)r(de.)67 b(These)37 b(examples)g(are)g(in)h(the)0 -5791 y("examples")26 b(directory)g(of)i(the)g(distribution.)36 -b(Also)28 b(lo)r(ok)e(in)i("src/test")e(for)h(more)g(annotated)g -(examples.)0 6122 y Fe(2)131 b(Building)46 b(the)e(Library)0 -6361 y Fh(Libical)37 b(uses)g(auto)r(conf)h(to)f(generate)f(mak)n -(e\034les,)k(although)c(it)i(uses)g(none)f(of)h(the)g(auto)r(conf)f -(\035ags)f(to)i(in\035uence)g(the)0 6474 y(compilation.)e(It)28 -b(should)f(built)i(with)f(no)f(adjustmen)n(ts)h(on)f(Lin)n(ux,)g(F)-7 -b(reeBSD)28 b(and)f(Solaris.)0 6805 y Fe(3)131 b(Structure)0 -7044 y Fh(The)28 b(iCal)f(calendar)f(mo)r(del)i(is)f(based)g(on)h(four) -f(t)n(yp)r(es)g(of)h(ob)5 b(jects:)36 b(comp)r(onen)n(ts,)27 -b(prop)r(erties,)g(v)-5 b(alues)27 b(and)g(parameters.)0 -7201 y(Prop)r(erties)32 b(are)f(the)i(fundamen)n(tal)f(unit)i(of)e -(information)g(in)g(iCal,)i(and)e(they)g(w)n(ork)f(a)h(bit)h(lik)n(e)f -(a)g(hash)g(en)n(try)-7 b(,)34 b(with)e(a)0 7314 y(constan)n(t)21 -b(k)n(ey)h(and)g(a)f(v)-5 b(ariable)21 b(v)-5 b(alue.)35 -b(Prop)r(erties)21 b(ma)n(y)h(also)f(ha)n(v)n(e)g(mo)r(di\034ers,)h -(called)g(parameters.)33 b(In)22 b(the)h(iCal)f(con)n(ten)n(t)0 -7428 y(line)0 7626 y Fd(ORGANIZER;ROLE=C)o(HA)o(IR:)o(MA)o(IL)o(TO:)o -(mr)o(bi)o(g@h)o(os)o(t.)o(com)p eop -%%Page: 2 2 -2 1 bop 0 -167 3900 5 v 0 -200 a Fb(3.)73 b(Structure)3313 -b Fh(2)0 162 y(The)34 b(prop)r(ert)n(y)f(name)h(is)g("OR)n(GANIZER,")g -(the)g(v)-5 b(alue)34 b(of)h(the)f(prop)r(ert)n(y)f(is)h -("mrbig@host.com")e(and)i(the)g("R)n(OLE")0 275 y(parameter)26 -b(sp)r(eci\034es)h(that)h(Mr)g(Big)f(is)g(the)h(c)n(hair)e(of)i(the)g -(meetings)f(asso)r(ciated)f(with)i(this)g(prop)r(ert)n(y)-7 -b(.)0 432 y(Comp)r(onen)n(ts)26 b(are)f(groups)g(of)h(prop)r(erties)f -(that)i(represen)n(t)e(the)i(core)e(ob)5 b(jects)26 b(of)g(a)g -(calendar)f(system,)h(suc)n(h)g(as)g(ev)n(en)n(ts)f(or)0 -545 y(timezones.)0 702 y(The)k(cen)n(tral)f(goal)g(of)h(libical)g(is)g -(to)g(parse)f(iTIP)i(data)e(in)n(to)h(an)g(in)n(ternal)f(represen)n -(tation)g(of)h(Comp)r(onen)n(ts,)g(Prop)r(erties,)0 815 -y(P)n(arameters)d(an)h(V)-7 b(alues,)27 b(and)h(to)f(allo)n(w)g(the)h -(user)f(to)g(manipulate)g(the)h(data)g(in)f(v)-5 b(arious)27 -b(w)n(a)n(ys)0 942 y Fg(1)37 972 y Fh(When)h(a)f(comp)r(onen)n(t)h(is)f -(sen)n(t)h(across)d(a)i(net)n(w)n(ork,)f(if)j(it)f(is)f(un-encrypted,)g -(it)h(will)g(lo)r(ok)f(something)g(lik)n(e:)p 0 1041 -3900 4 v 0 1218 a Fd(BEGIN:VEVENT)0 1331 y(DTSTAMP:19980309)o(T2)o(310) -o(00)o(Z)0 1445 y(UID:guid-1.host1)o(.c)o(om)0 1558 y(ORGANIZER;ROLE=C) -o(HA)o(IR:)o(MA)o(IL)o(TO:)o(mr)o(bi)o(g@h)o(os)o(t.)o(com)0 -1672 y(ATTENDEE;RSVP=TR)o(UE)o(;RO)o(LE)o(=R)o(EQ-)o(PA)o(RT)o(ICI)o -(PA)o(NT)o(;CU)o(TY)o(PE)o(=GR)o(OU)o(P:)87 1786 y(MAILTO:employee-)o -(A@h)o(os)o(t.)o(com)0 1899 y(DESCRIPTION:Proj)o(ec)o(t)38 -b(XYZ)k(Review)f(Meeting)0 2013 y(CATEGORIES:MEETI)o(NG)0 -2126 y(CLASS:PUBLIC)0 2240 y(CREATED:19980309)o(T1)o(300)o(00)o(Z)0 -2353 y(SUMMARY:XYZ)e(Project)i(Review)0 2467 y(DTSTART;TZID=US-)o(Ea)o -(ste)o(rn)o(:1)o(998)o(03)o(12)o(T08)o(30)o(00)0 2581 -y(DTEND;TZID=US-Ea)o(st)o(ern)o(:1)o(99)o(803)o(12)o(T0)o(930)o(00)0 -2694 y(LOCATION:1CP)d(Conference)i(Room)i(4350)0 2808 -y(END:VEVENT)p 0 3008 V 0 3235 a Fc(3.1)112 b(Core)37 -b(iCal)f(classes)0 3446 y Fb(3.1.1)94 b(Comp)s(onen)m(ts)0 -3656 y(3.1.2)g(Prop)s(erties)0 3866 y(3.1.3)g(V)-8 b(alues)0 -4076 y(3.1.4)94 b(P)m(arameters)0 4305 y Fc(3.2)112 b(Other)37 -b(elemen)m(ts)g(of)g(libical)0 4515 y Fh(In)26 b(addition)f(to)h(the)g -(core)e(iCal)h(classes,)g(libical)g(has)g(man)n(y)g(other)g(t)n(yp)r -(es,)h(structures,)g(classes)e(that)i(aid)f(in)h(creating)e(and)0 -4628 y(using)j(iCal)g(comp)r(onen)n(ts.)104 4735 y Fa(1)p -eop -%%Page: 3 3 -3 2 bop 0 -167 3900 5 v 0 -200 a Fb(4.)73 b(Di\033erences)31 -b(F)-8 b(rom)31 b(RF)m(Cs)2732 b Fh(3)0 162 y Fb(3.2.1)94 -b(En)m(umerations)0 372 y(3.2.2)g(T)m(yp)s(es)0 582 y(3.2.3)g(The)32 -b(P)m(arser)0 792 y(3.2.4)94 b(Restrictions)0 1002 y(3.2.5)g(Error)32 -b(ob)5 b(jects)0 1212 y(3.2.6)94 b(Memory)30 b(Managemen)m(t)0 -1422 y(3.2.7)94 b(Storage)32 b(classes)0 1689 y Fe(4)131 -b(Di\033erences)44 b(F)-11 b(rom)43 b(RF)l(Cs)0 1928 -y Fh(Libical)c(has)f(b)r(een)h(designed)g(to)f(follo)n(w)h(the)g -(standards)e(as)i(closely)f(as)g(p)r(ossible,)j(so)e(that)g(the)g(k)n -(ey)f(ob)5 b(jects)39 b(in)g(the)0 2041 y(standards)30 -b(are)g(also)g(k)n(eey)g(ob)5 b(jects)31 b(in)h(the)f(library)-7 -b(.)47 b(Ho)n(w)n(ev)n(er,)30 b(there)h(are)f(a)h(few)g(areas)e(where)i -(the)h(sp)r(eci\034cations)e(are)0 2155 y(\(arguably\))g(irregular,)h -(and)g(follo)n(wing)g(them)h(exactly)f(w)n(ould)g(result)h(in)g(an)f -(unfriendly)h(in)n(terface.)49 b(These)31 b(deviations)0 -2268 y(mak)n(e)c(libical)g(easier)f(to)i(use)f(b)n(y)h(main)n(taining)e -(a)h(self-similar)g(in)n(terface.)0 2560 y Fc(4.1)112 -b(Pseudo)38 b(Comp)s(onen)m(ts)0 2770 y Fh(Libical)29 -b(de\034nes)g(comp)r(onen)n(ts)g(for)g(groups)f(of)h(prop)r(erties)f -(that)i(lo)r(ok)f(and)g(act)g(lik)n(e)g(comp)r(onen)n(ts,)g(but)h(are)e -(not)i(de\034ned)0 2884 y(as)e(comp)r(onen)n(ts)h(in)g(the)g(sp)r -(eci\034cation.)41 b(XD)n(A)-7 b(YLIGHT)30 b(and)f(XST)-7 -b(AND)n(ARD)30 b(are)e(notable)h(examples.)40 b(These)29 -b(pseudo)0 2997 y(comp)r(onen)n(ts)d(group)f(prop)r(erties)g(within)i -(the)g(VTIMEZONE)g(comp)r(onen)n(ts.)36 b(F)-7 b(or)25 -b(instanace,)h(the)h(timezone)f(prop)r(erties)0 3111 -y(asso)r(ciated)f(with)i(da)n(yligh)n(t)e(sa)n(vings)g(time)i(starts)e -(with)i("BEGIN:D)n(A)-7 b(YLIGHT")27 b(and)f(ends)h(with)f("END:D)n(A) --7 b(YLIGHT,)0 3224 y(just)32 b(lik)n(e)g(other)f(comp)r(onen)n(ts,)h -(but)g(is)g(not)g(de\034ned)g(as)f(a)g(comp)r(onen)n(t)g(in)h(RF)n -(C2445.)48 b(\()32 b(See)f(RF)n(C2445,)g(page)g(61)g(\))h(In)0 -3338 y(Libical,this)d(grouping)e(is)i(represen)n(ted)e(b)n(y)i(the)g -(XD)n(A)-7 b(YLIGHT)30 b(comp)r(onen)n(t.)41 b(Standard)28 -b(iCAL)h(comp)r(onen)n(ts)f(all)h(start)0 3451 y(with)f(the)g(letter)g -("V,")f(while)g(pseudo)g(comp)r(onen)n(ts)g(start)g(with"X.")0 -3608 y(There)35 b(are)g(also)g(pseudo)h(comp)r(onen)n(ts)f(that)i(are)e -(conceptually)g(deriv)n(ed)g(classess)f(of)i(V)-9 b(ALARM.)37 -b(RF)n(C2446)d(de\034nes)0 3721 y(what)d(prop)r(erties)f(ma)n(y)g(b)r -(e)h(included)g(in)g(eac)n(h)f(comp)r(onen)n(t,)i(and)e(for)h(V)-9 -b(ALARM,)31 b(the)g(set)g(of)g(prop)r(erties)f(it)h(ma)n(y)f(ha)n(v)n -(e)0 3835 y(dep)r(ends)e(on)f(the)h(v)-5 b(alue)28 b(of)f(the)h(A)n -(CTION)f(prop)r(ert)n(y)-7 b(.)0 3992 y(F)g(or)19 b(instance,)j(if)e(a) -g(V)-9 b(ALARM)20 b(comp)r(onen)n(t)g(has)f(an)h(A)n(CTION)g(prop)r -(ert)n(y)e(with)j(the)f(v)-5 b(alue)20 b(of)g("A)n(UDIO,")f(the)h(comp) -r(onen)n(t)0 4105 y(m)n(ust)h(also)g(ha)n(v)n(e)f(an)h("A)-7 -b(TT)g(A)n(CH")21 b(prop)r(ert)n(y)-7 b(.)34 b(Ho)n(w)n(ev)n(er,)20 -b(if)i(the)g(A)n(CTION)f(v)-5 b(alue)21 b(is)g("DISPLA)-7 -b(Y,")22 b(the)g(comp)r(onen)n(t)f(m)n(ust)0 4219 y(ha)n(v)n(e)26 -b(a)i(DESCRIPTION)g(prop)r(ert)n(y)-7 b(.)0 4375 y(T)g(o)28 -b(handle)g(these)g(v)-5 b(arious,)27 b(complex)h(restrictions,)f -(libical)h(has)g(pseudo)g(comp)r(onen)n(ts)f(for)h(eac)n(h)f(t)n(yp)r -(e)i(of)f(alarm:)37 b(XA)n(U-)0 4489 y(DIO)n(ALARM,)28 -b(XDISPLA)-7 b(Y)g(ALARM,)30 b(XEMAILALARM)f(and)f(XPR)n(OCEDUREALARM.) -0 4780 y Fc(4.2)112 b(Com)m(bined)37 b(V)-9 b(alues)0 -4990 y Fh(Man)n(y)34 b(v)-5 b(alues)34 b(can)g(tak)n(e)g(more)g(than)g -(one)h(t)n(yp)r(e.)58 b(TRIGGER,)35 b(for)f(instance,)i(can)e(ha)n(v)n -(e)g(a)g(v)-5 b(alue)34 b(t)n(yp)r(e)h(of)g(with)g(DU-)0 -5104 y(RA)-7 b(TION)32 b(or)f(of)h(D)n(A)-7 b(TE-TIME.)33 -b(These)f(m)n(ultiple)g(t)n(yp)r(es)g(mak)n(e)f(it)i(di\036cult)g(to)e -(create)g(routines)h(to)f(return)h(the)g(v)-5 b(alue)0 -5217 y(asso)r(ciated)26 b(with)i(a)f(prop)r(ert)n(y)-7 -b(.)0 5374 y(It)30 b(is)g(natural)g(to)f(ha)n(v)n(e)g(in)n(terfaces)g -(that)i(w)n(ould)e(return)h(the)g(v)-5 b(alue)30 b(of)g(a)g(prop)r(ert) -n(y)-7 b(,)29 b(but)i(it)f(is)g(cum)n(b)r(ersone)f(for)h(a)g(single)0 -5488 y(routine)i(to)g(return)g(m)n(ultiple)h(t)n(yp)r(es.)51 -b(So,)33 b(in)g(libical,)g(prop)r(erties)e(that)i(can)f(ha)n(v)n(e)f(m) -n(ultiple)i(t)n(yp)r(es)f(are)f(giv)n(en)h(a)g(single)0 -5601 y(t)n(yp)r(e)26 b(that)g(is)g(the)g(union)g(of)g(their)g(RF)n -(C2445)e(t)n(yp)r(es.)36 b(F)-7 b(or)26 b(instance,)g(in)g(libical,)g -(the)g(v)-5 b(alue)26 b(of)g(the)g(TRIGGER)h(prop)r(ert)n(y)0 -5715 y(resolv)n(es)e(to)j(struct)f(icaltriggert)n(yp)r(e.)35 -b(This)28 b(t)n(yp)r(e)f(is)h(a)f(union)h(of)f(a)g(DURA)-7 -b(TION)29 b(and)e(a)g(D)n(A)-7 b(TE-TIME.)p eop -%%Page: 4 4 -4 3 bop 0 -167 3900 5 v 0 -200 a Fb(5.)73 b(Implemen)m(tation)29 -b(Limitations)2539 b Fh(4)0 162 y Fc(4.3)112 b(Multi-V)-9 -b(alued)36 b(Prop)s(erties)0 372 y Fh(Some)31 b(prop)r(erties,)h(suc)n -(h)f(as)g(CA)-7 b(TEGORIES)33 b(ha)n(v)n(e)d(only)h(one)g(v)-5 -b(alue)32 b(t)n(yp)r(e,)h(but)f(eac)n(h)e(CA)-7 b(TEGORIES)33 -b(prop)r(ert)n(y)d(can)0 485 y(ha)n(v)n(e)24 b(m)n(ultiple)h(v)-5 -b(alue)25 b(instances.)35 b(This)25 b(also)f(results)g(in)h(a)g(cum)n -(b)r(ersome)f(in)n(terface)g(\025)g(CA)-7 b(TEGORIES)26 -b(accessors)d(w)n(ould)0 599 y(ha)n(v)n(e)k(to)i(return)f(a)g(list)g -(while)h(all)f(other)g(accessors)e(returned)i(a)g(single)g(v)-5 -b(alue.)39 b(In)29 b(libical,)g(all)f(prop)r(erties)f(ha)n(v)n(e)h(a)g -(single)0 712 y(v)-5 b(alue,)35 b(and)e(m)n(ulti-v)-5 -b(alued)33 b(prop)r(erties)f(are)h(brok)n(en)f(do)n(wn)g(in)n(to)h(m)n -(ultiple)h(single)f(v)-5 b(alued)33 b(prop)r(erties)g(during)f -(parsing.)0 826 y(That)c(is,)f(an)g(input)i(line)e(lik)n(e,)0 -1035 y Fd(CATEGORIES:)39 b(work,)i(home)0 1357 y Fh(b)r(ecomes)27 -b(in)h(libical's)f(in)n(ternal)g(represen)n(tation)0 -1566 y Fd(CATEGORIES:)39 b(work)0 1680 y(CATEGORIES:)g(home)0 -2002 y Fh(Oddly)-7 b(,)34 b(RF)n(C2445)d(allo)n(ws)g(some)h(m)n(ulti-v) --5 b(alued)33 b(prop)r(erties)f(\()h(lik)n(e)g(FREEBUSY)h(\))f(to)g -(exist)g(as)f(b)r(oth)h(a)f(m)n(ulti-v)-5 b(alues)0 2116 -y(prop)r(ert)n(y)24 b(and)h(as)f(m)n(ultiple)h(single)g(v)-5 -b(alue)24 b(prop)r(erties,)h(while)g(others)f(\()i(lik)n(e)e(CA)-7 -b(TEGORIES)26 b(\))f(can)g(only)g(exist)f(as)h(single)0 -2229 y(m)n(ulti-v)-5 b(alued)32 b(prop)r(erties.)48 b(This)31 -b(mak)n(es)g(the)h(in)n(ternal)f(represen)n(tation)e(for)i(CA)-7 -b(TEGORIES)33 b(illegal.)48 b(Ho)n(w)n(ev)n(er)30 b(when)0 -2343 y(y)n(ou)d(con)n(v)n(ert)f(a)h(comp)r(onen)n(t)g(to)h(a)f(string,) -g(the)h(library)e(will)i(collect)f(all)g(of)h(the)g(CA)-7 -b(TEGORIES)28 b(prop)r(erties)f(in)n(to)g(one.)0 2676 -y Fe(5)131 b(Implemen)l(tation)44 b(Limitations)0 2971 -y(6)131 b(Using)44 b(libical)0 3229 y Fc(6.1)112 b(Creating)37 -b(Comp)s(onen)m(ts)0 3439 y Fh(There)e(are)g(three)h(w)n(a)n(ys)e(to)i -(create)e(comp)r(onen)n(ts)i(in)g(Libical:)53 b(creating)34 -b(individual)i(ob)5 b(jects)35 b(and)h(assem)n(bling)e(them,)0 -3553 y(building)28 b(en)n(tire)f(ob)5 b(jects)27 b(in)h(massiv)n(e)e(v) --5 b(aargs)26 b(calls,)h(and)g(parsing)f(a)h(text)h(\034le)g(con)n -(taining)e(iCalendar)h(data.)0 3820 y Fb(6.1.1)94 b(Constructor)32 -b(In)m(terfaces)0 4030 y Fh(Using)d(constructor)f(in)n(terfaces,)h(y)n -(ou)f(create)h(eac)n(h)f(of)i(the)f(ob)5 b(jects)29 b(sep)r(erately)g -(and)g(them)h(assem)n(ble)e(them)i(in)g(to)f(com-)0 4143 -y(p)r(onen)n(ts:)p 0 4201 3900 4 v 0 4346 a Fd(icalcomponent)38 -b(*event;)0 4460 y(icalproperty)g(*prop;)0 4574 y(icalparameter)g -(*param;)0 4687 y(struct)j(icaltimetype)e(atime;)0 4801 -y(event)i(=)j(icalcomponent_n)o(ew)o(\(IC)o(AL)o(_V)o(EVE)o(NT)o(_C)o -(OMP)o(ON)o(EN)o(T\);)0 4914 y(prop)e(=)h(icalproperty_new)o(_d)o(tst)o -(am)o(p\()o(ati)o(me)o(\))37 b(;)0 5028 y(icalcomponent_ad)o(d_)o(pro)o -(pe)o(rt)o(y\(e)o(ve)o(nt)o(,)h(prop\);)0 5141 y(prop)k(=)h -(icalproperty_new)o(_u)o(id\()o(st)o(rd)o(up\()o("g)o(ui)o(d-1)o(.h)o -(os)o(t1.)o(co)o(m"\))o(\))37 b(\);)0 5255 y(icalcomponent_ad)o(d_)o -(pro)o(pe)o(rt)o(y\(e)o(ve)o(nt)o(,pr)o(op)o(\);)0 5369 -y(prop=icalpropert)o(y_)o(new)o(_o)o(rg)o(ani)o(ze)o(r\()o(str)o(du)o -(p\()o("mr)o(bi)o(g@)o(hos)o(t.)o(com)o("\))o(\);)0 5482 -y(param)k(=)j(icalparameter_n)o(ew)o(_ro)o(le)o(\(I)o(CAL)o(_R)o(OL)o -(E_C)o(HA)o(IR)o(\))0 5596 y(icalproperty_add)o(_p)o(ara)o(me)o(te)o -(r\(p)o(ro)o(p,)37 b(param\);)0 5709 y(icalcomponent_ad)o(d_)o(pro)o -(pe)o(rt)o(y\(e)o(ve)o(nt)o(,pr)o(op)o(\);)p eop -%%Page: 5 5 -5 4 bop 0 -167 3900 5 v 0 -200 a Fb(6.)73 b(Using)32 -b(libical)3190 b Fh(5)p 0 162 3900 4 v 0 312 a(While)31 -b(w)n(e)g(are)f(on)h(this)g(example,)g(y)n(ou)g(should)f(notice)h(that) -g(libical)g(uses)g(a)f(semi-ob)5 b(ject-orien)n(ted)29 -b(st)n(yle)i(of)g(in)n(terface.)0 425 y(Most)23 b(things)h(y)n(ou)f(w)n -(ork)g(with)h(are)f(ob)5 b(jects,)24 b(that)g(are)f(instan)n(tiated)g -(with)h(a)g(constructor)e(that)i(has)f("new")g(in)h(the)g(name.)0 -539 y(Also)h(note)h(that,)g(other)f(than)h(the)g(ob)5 -b(ject)26 b(reference,)f(most)g(structure)g(data)g(is)h(passed)f(in)h -(to)f(libical)h(routines)f(b)n(y)g(v)-5 b(alue.)0 652 -y(Strings,)24 b(of)g(course,)f(are)g(passed)g(in)h(b)n(y)g(reference,)f -(but)i(libical)f(will)g(tak)n(e)f(o)n(wnership)f(of)i(the)g(memory)-7 -b(,)24 b(so)f(y)n(ou)g(had)h(b)r(eter)0 766 y(strdup\(\))30 -b(the)f(data)g(unless)g(y)n(ou)f(w)n(an)n(t)h(a)f(core)g(dump)i(when)f -(the)h(memory)e(is)h(freed)g(for)g(the)g(second)g(time.)42 -b(Libical)29 b(has)0 879 y(some)e(complex)g(but)h(v)n(ery)f(regular)e -(memory)i(handling)g(rules.)37 b(These)27 b(are)f(detailed)i(in)g -(section)f(6.4)g(\(\).)0 1036 y(If)33 b(an)n(y)e(of)h(the)h -(constructors)d(fail,)k(they)f(will)f(return)g(0.)50 -b(If)33 b(y)n(ou)f(try)g(to)g(insert)g(0)f(in)n(to)h(a)g(prop)r(ert)n -(y)f(or)h(comp)r(onen)n(t,)h(or)0 1149 y(use)j(a)g(zero-v)-5 -b(alued)34 b(ob)5 b(ject)36 b(reference,)h(libical)f(will)h(either)f -(silen)n(tly)f(ignore)g(the)i(error)d(or)h(will)h(ab)r(ort)g(with)g(an) -g(error)0 1263 y(message.)61 b(This)36 b(b)r(eha)n(vior)e(is)i(con)n -(trolled)f(b)n(y)g(a)h(compile)g(time)g(\035ag)f(\(ICAL_ERR)n -(ORS_ARE_F)-9 b(A)i(T)g(AL\),)37 b(and)f(will)0 1377 -y(ab)r(ort)27 b(b)n(y)g(default.)0 1649 y Fb(6.1.2)94 -b(v)-5 b(aargs)32 b(Constructors)0 1859 y Fh(There)24 -b(is)h(another)f(w)n(a)n(y)g(to)h(create)f(complex)g(comp)r(onen)n(ts,) -h(whic)n(h)g(is)g(arguable)e(more)h(elegan)n(t,)h(if)g(y)n(ou)f(are)g -(not)h(horri\034ed)0 1973 y(b)n(y)f(v)-5 b(arargs.)33 -b(The)24 b(v)-5 b(arargs)22 b(constructor)g(in)n(terface)i(all)g(y)n -(ou)f(to)h(create)f(in)n(tricate)h(comp)r(onen)n(ts)f(in)i(a)e(single)h -(blo)r(c)n(k)g(of)g(text.)p 0 2042 V 174 2219 a Fd(calendar)40 -b(=)349 2332 y(icalcomponent_v)o(an)o(ew\()523 2446 y(ICAL_VCALENDAR_C) -o(OM)o(PO)o(NEN)o(T,)523 2560 y(icalproperty_new)o(_v)o(er)o(sio)o(n\() -o(st)o(rdu)o(p\()o("2)o(.0")o(\)\))o(,)523 2673 y(icalproperty_new)o -(_p)o(ro)o(did)o(\(s)o(tr)o(dup)o(\(")o(-/)o(/RD)o(U)d -(Software//NONSGML)g(HandCal//EN"\)\),)523 2787 y(icalcomponent_va)o -(ne)o(w\()697 2900 y(ICAL_VEVENT_COMP)o(ONE)o(NT)o(,)697 -3014 y(icalproperty_new)o(_dt)o(st)o(am)o(p\(a)o(ti)o(me)o(\),)697 -3127 y(icalproperty_new)o(_ui)o(d\()o(st)o(rdu)o(p\()o("g)o(uid)o(-1)o -(.ho)o(st)o(1.)o(com)o("\))o(\),)697 3241 y(icalproperty_van)o(ew_)o -(or)o(ga)o(niz)o(er)o(\()872 3355 y(strdup\("mrbig@h)o(os)o(t.)o(com)o -("\))o(,)872 3468 y(icalparameter_n)o(ew)o(_r)o(ole)o(\(I)o(CA)o(L_R)o -(OL)o(E_C)o(HA)o(IR)o(\),)872 3582 y(0)872 3695 y(\),)697 -3809 y(icalproperty_van)o(ew_)o(at)o(te)o(nde)o(e\()872 -3922 y(strdup\("employe)o(e-)o(A@)o(hos)o(t.)o(co)o(m"\))o(,)872 -4036 y(icalparameter_n)o(ew)o(_r)o(ole)o(\(I)o(CA)o(L_R)o(OL)o(E_R)o -(EQ)o(PA)o(RTI)o(CI)o(PA)o(NT\))o(,)872 4150 y(icalparameter_n)o(ew)o -(_r)o(svp)o(\(1)o(\),)872 4263 y(icalparameter_n)o(ew)o(_c)o(uty)o(pe)o -(\(I)o(CAL)o(_C)o(UTY)o(PE)o(_G)o(ROU)o(P\))o(,)872 4377 -y(0)872 4490 y(\),)697 4604 y(icalproperty_new)o(_lo)o(ca)o(ti)o(on\()o -(st)o(rd)o(up\()o("1)o(CP)g(Conference)i(Room)j(4350"\)\),)697 -4717 y(0)697 4831 y(\),)523 4945 y(0)523 5058 y(\);)p -0 5258 V 0 5408 a Fh(This)23 b(form)g(is)h(similar)e(to)i(the)f -(regular)f(constructor,)h(except)g(that)h(they)f(ha)n(v)n(e)g("v)-5 -b(anew")22 b(instead)h(of)g("new")g(in)g(the)h(name.)0 -5522 y(The)32 b(argumen)n(ts)f(are)g(similar)g(to)r(o,)j(except)e(that) -g(the)h(comp)r(onen)n(t)e(con)n(tstructor)g(can)h(ha)n(v)n(e)f(a)g -(list)i(of)f(prop)r(erties,)g(and)0 5635 y(the)f(prop)r(ert)n(y)f -(constructor)f(can)h(ha)n(v)n(e)f(a)i(list)g(or)f(parameters.)44 -b(Be)30 b(sure)g(to)h(terminate)g(ev)n(ery)e(list)i(with)g(a)f('0',)i -(or)d(y)n(our)0 5749 y(co)r(de)e(will)h(crash,)f(if)h(y)n(ou)e(are)h -(luc)n(ky)-7 b(.)p eop -%%Page: 6 6 -6 5 bop 0 -167 3900 5 v 0 -200 a Fb(6.)73 b(Using)32 -b(libical)3190 b Fh(6)0 162 y Fb(6.1.3)94 b(P)m(arsing)32 -b(T)-8 b(ext)32 b(Files)0 372 y Fh(The)g(\034nal)g(w)n(a)n(y)f(to)h -(create)f(comp)r(onen)n(ts)h(will)g(probably)f(b)r(e)h(the)h(most)f -(common;)i(y)n(ou)d(can)h(create)f(comp)r(onen)n(ts)g(from)0 -485 y(RF)n(C2445)26 b(complian)n(t)h(text.)37 b(If)28 -b(y)n(ou)f(ha)n(v)n(e)f(the)i(string)f(in)h(memory)-7 -b(,)26 b(use)0 725 y Fd(icalcomponent*)38 b(icalparser_pars)o(e_)o(str) -o(in)o(g\()o(cha)o(r*)f(str\);)0 1078 y Fh(This)30 b(ma)n(y)f(seem)g(w) -n(asteful)h(if)g(y)n(ou)f(w)n(an)n(t)g(to)g(pull)i(a)e(large)f(comp)r -(onen)n(t)i(o\033)f(of)h(the)g(net)n(w)n(ork;)g(y)n(ou)f(ma)n(y)g -(prefer)g(to)g(parse)0 1191 y(the)f(comp)r(onen)n(t)f(line)h(b)n(y)f -(line.)37 b(This)28 b(is)f(p)r(ossible)g(to)r(o)h(b)n(y)f(using:)0 -1431 y Fd(icalparser_get_l)o(in)o(e\(p)o(ar)o(se)o(r,r)o(ea)o(d_)o(str) -o(ea)o(m\))o(;)0 1545 y(icalparser_add_l)o(in)o(e\(p)o(ar)o(se)o(r,l)o -(in)o(e\))o(;)0 1658 y(icalparser_set_g)o(en)o(_da)o(ta)o(\(p)o(ars)o -(er)o(,s)o(tre)o(am)o(\))0 2011 y Fh(F)-7 b(or)27 b(an)g(example)g(of)h -(ho)n(w)f(to)g(use)h(this)f(t)n(yp)r(e)h(of)g(parsing,)e(see)h -(examples/parse_text.c)e(for)i(an)g(example.)0 2303 y -Fc(6.2)112 b(A)m(ccessing)37 b(Comp)s(onen)m(ts)0 2513 -y Fh(Giv)n(en)30 b(a)g(reference)f(to)i(a)e(comp)r(onen)n(t,)i(y)n(ou)f -(probably)f(will)h(w)n(an)n(t)g(to)g(access)f(the)i(prop)r(erties,)f -(parameters)e(and)j(v)-5 b(alues)0 2626 y(inside.)35 -b(Libical)22 b(in)n(terface)g(let)h(y)n(ou)e(\034nd)i(sub-comp)r(onen)n -(t,)g(add)f(and)g(remo)n(v)n(e)f(sub-comp)r(onen)n(ts,)h(and)h(do)f -(the)h(same)e(three)0 2740 y(op)r(erations)26 b(on)h(prop)r(erties.)0 -3013 y Fb(6.2.1)94 b(Finding)30 b(Comp)s(onen)m(ts)0 -3223 y Fh(T)-7 b(o)27 b(\034nd)h(a)f(sub-comp)r(onen)n(t)g(of)h(a)f -(comp)r(onen)n(t,)g(use:)0 3462 y Fd(icalproperty*)38 -b(icalcomponent_ge)o(t_)o(fir)o(st)o(_c)o(omp)o(on)o(en)o(t\()1482 -3576 y(icalcomponent*)f(component,)1482 3689 y(icalcomponent_k)o(in)o -(d)h(kind\);)0 4042 y Fh(This)27 b(routine)g(will)h(return)f(a)g -(reference)g(to)g(the)h(\034rst)f(comp)r(onen)n(t)g(of)h(the)f(t)n(yp)r -(e)h('kind.')37 b(The)28 b(k)n(ey)e(kind)i(v)-5 b(alues,)27 -b(listed)h(in)0 4156 y(icalen)n(ums.h)f(are:)p 0 4209 -3900 4 v 0 4386 a Fd(ICAL_ANY_COMPONE)o(NT)0 4499 y(ICAL_VEVENT_COMP)o -(ON)o(ENT)0 4613 y(ICAL_VTODO_COMPO)o(NE)o(NT)0 4726 -y(ICAL_VJOURNAL_CO)o(MP)o(ONE)o(NT)0 4840 y(ICAL_VCALENDAR_C)o(OM)o -(PON)o(EN)o(T)0 4954 y(ICAL_VFREEBUSY_C)o(OM)o(PON)o(EN)o(T)0 -5067 y(ICAL_VALARM_COMP)o(ON)o(ENT)p 0 5267 V 0 5417 -a Fh(These)g(are)g(only)g(the)h(most)f(common)g(comp)r(onen)n(ts;)g -(there)h(are)e(man)n(y)h(more)g(listed)h(in)g(icalen)n(ums.h.)0 -5573 y(As)h(y)n(ou)f(migh)n(t)h(guess,)g(if)g(there)g(is)g(more)f(than) -h(one)f(sub)r(comp)r(onen)n(t)h(of)g(the)h(t)n(yp)r(e)f(y)n(ou)f(ha)n -(v)n(e)g(c)n(hosen,)g(this)h(routine)g(will)0 5687 y(return)e(only)g -(the)h(\034rst.)37 b(to)27 b(get)h(at)f(the)h(others,)f(y)n(ou)f(need)i -(to)g(iterate)f(through)f(the)i(comp)r(onen)n(t.)p eop -%%Page: 7 7 -7 6 bop 0 -167 3900 5 v 0 -200 a Fb(6.)73 b(Using)32 -b(libical)3190 b Fh(7)0 162 y Fb(6.2.2)94 b(In)m(terating)32 -b(Through)g(Comp)s(onen)m(ts)0 372 y Fh(Iteration)27 -b(requires)f(a)h(second)g(routine)g(to)h(get)f(the)h(next)g(sub)r(comp) -r(onen)n(t)f(after)g(the)h(\034rst:)0 611 y Fd(icalcomponent*)38 -b(icalcomponent_g)o(et)o(_ne)o(xt)o(_c)o(omp)o(on)o(en)o(t\(i)o(ca)o -(lco)o(mp)o(on)o(ent)o(*)f(component,)0 725 y(icalcomponent_ki)o(nd)g -(kind\);)0 1078 y Fh(With)25 b(the)g('\034rst')f(and)g('next')h -(routines,)g(y)n(ou)e(can)h(create)g(a)g(for)f(lo)r(op)h(to)h(iterate)f -(through)f(all)h(of)h(a)f(comp)r(onen)n(ts)g(sub)r(com-)0 -1191 y(p)r(onen)n(ts)p 0 1261 3900 4 v 87 1444 a Fd(for\(c)42 -b(=)h(icalcomponent_g)o(et_)o(fi)o(rs)o(t_c)o(om)o(po)o(nen)o(t\()o(co) -o(mp,)o(IC)o(AL_)o(AN)o(Y_)o(COM)o(PO)o(NE)o(NT\))o(;)392 -1558 y(c)g(!=)g(0;)392 1671 y(c)g(=)g(icalcomponent_get)o(_n)o(ext)o -(_c)o(om)o(pon)o(en)o(t\()o(com)o(p,)o(ICA)o(L_)o(AN)o(Y_C)o(OM)o(PO)o -(NEN)o(T\))o(\))0 1785 y({)261 1899 y(do_something\(c\);)0 -2012 y(})p 0 2212 V 0 2362 a Fh(This)32 b(co)r(de)f(bit)h(wil)g -(iterate)g(through)f(all)g(of)h(the)g(sub)r(comp)r(onen)n(ts)f(in)h -('comp')g(but)g(y)n(ou)f(can)g(select)h(a)f(sp)r(eci\034c)h(t)n(yp)r(e) -g(of)0 2476 y(comp)r(onen)n(t)27 b(b)n(y)h(c)n(hanging)e -(ICAL_ANY_COMPONENT)i(to)f(another)g(comp)r(onen)n(t)g(t)n(yp)r(e.)0 -2748 y Fb(6.2.3)94 b(Remo)m(ving)29 b(Comp)s(onen)m(ts)0 -2958 y Fh(Libical)h(comp)r(onen)n(t)g(ha)n(v)n(e)f(in)n(ternal)h -(iterators,)f(so)h(y)n(ou)g(can)g(only)g(ha)n(v)n(e)f(one)h(iteration)g -(o)n(v)n(er)e(a)i(comp)r(onen)n(t)g(at)h(a)f(time.)0 -3072 y(Remo)n(ving)23 b(an)h(elemen)n(t)h(from)f(a)g(list)g(while)h -(iterating)e(through)h(the)h(list)f(can)g(cause)g(problems,)g(since)g -(y)n(ou)g(will)g(probably)0 3185 y(b)r(e)e(remo)n(ving)e(the)i(elemen)n -(t)g(that)g(the)g(in)n(ternal)f(iterator)f(p)r(oin)n(ts)i(to.)34 -b(This)22 b(will)g(result)f(in)h(the)g(iteration)f(lo)r(op)h -(terminating)0 3299 y(immediately)29 b(after)f(remo)n(ving)g(the)h -(elemen)n(t.)41 b(T)-7 b(o)28 b(a)n(v)n(oid)g(the)h(problem,)f(y)n(ou)h -(will)g(need)g(to)f(step)h(the)h(iterator)d(ahead)h(of)0 -3413 y(the)g(elemen)n(t)g(y)n(ou)e(are)h(going)f(to)i(remo)n(v)n(e,)e -(lik)n(e)h(this:)p 0 3482 V 0 3665 a Fd(for\(c)41 b(=)j -(icalcomponent_g)o(et)o(_fi)o(rs)o(t_)o(com)o(po)o(ne)o(nt\()o(pa)o(re) -o(nt_)o(co)o(mp,)o(IC)o(AL)o(_AN)o(Y_)o(CO)o(MPO)o(NE)o(NT)o(\);)305 -3779 y(c)f(!=)g(0;)305 3893 y(c)g(=)g(next)0 4006 y({)174 -4120 y(next)f(=)h(icalcomponent_get)o(_n)o(ex)o(t_c)o(om)o(po)o(nen)o -(t\()o(pa)o(ren)o(t_)o(com)o(p,)o(IC)o(AL_)o(AN)o(Y_)o(COM)o(PO)o(NE)o -(NT\))o(;)174 4233 y(icalcomponent_rem)o(ov)o(e_)o(com)o(po)o(ne)o -(nt\()o(pa)o(re)o(nt_)o(co)o(mp)o(,c\))o(;)0 4347 y(})p -0 4547 V 0 4763 a Fb(6.2.4)94 b(W)-8 b(orking)31 b(with)g(prop)s -(erties)g(and)h(parameters)0 4973 y Fh(Finding,)g(iterating)f(and)g -(remo)n(ving)e(prop)r(erties)h(w)n(orks)g(the)h(same)g(as)f(it)i(do)r -(es)e(for)h(comp)r(onen)n(ts,)g(using)g(the)h(prop)r(ert)n(y-)0 -5087 y(sp)r(eci\034c)c(or)e(parameter-sp)r(eci\034c)g(in)n(terfaces:)0 -5326 y Fd(icalproperty*)38 b(icalcomponent_ge)o(t_)o(fir)o(st)o(_p)o -(rop)o(er)o(ty)o(\()218 5440 y(icalcomponent*)g(component,)218 -5553 y(icalproperty_kin)o(d)f(kind\);)0 5667 y(icalproperty*)h -(icalcomponent_ge)o(t_)o(nex)o(t_)o(pr)o(ope)o(rt)o(y\()218 -5780 y(icalcomponent*)g(component,)p eop -%%Page: 8 8 -8 7 bop 0 -167 3900 5 v 0 -200 a Fb(6.)73 b(Using)32 -b(libical)3190 b Fh(8)218 162 y Fd(icalproperty_kin)o(d)37 -b(kind\);)0 275 y(void)42 b(icalcomponent_ad)o(d_)o(pr)o(ope)o(rt)o -(y\()218 389 y(icalcomponent*)c(component,)218 502 y(icalproperty*)g -(property\);)0 616 y(void)k(icalcomponent_re)o(mo)o(ve)o(_pr)o(op)o(er) -o(ty\()218 730 y(icalcomponent*)c(component,)218 843 -y(icalproperty*)g(property\);)0 957 y(icalparameter*)g(icalproperty_ge) -o(t_)o(fir)o(st)o(_p)o(ara)o(me)o(te)o(r\()218 1070 y(icalproperty*)g -(prop,)218 1184 y(icalparameter_ki)o(nd)f(kind\);)0 1297 -y(icalparameter*)h(icalproperty_ge)o(t_)o(nex)o(t_)o(pa)o(ram)o(et)o -(er)o(\()218 1411 y(icalproperty*)g(prop,)218 1525 y(icalparameter_ki)o -(nd)f(kind\);)0 1638 y(void)42 b(icalproperty_add)o(_p)o(ar)o(ame)o(te) -o(r\()218 1752 y(icalproperty*)c(prop,)218 1865 y(icalparameter*)g -(parameter\);)0 1979 y(void)k(icalproperty_rem)o(ov)o(e_)o(par)o(am)o -(et)o(er\()218 2092 y(icalproperty*)c(prop,)218 2206 -y(icalparameter_ki)o(nd)f(kind\);)0 2589 y Fb(6.2.5)94 -b(Getting)31 b(V)-8 b(alues)0 2799 y(6.2.6)94 b(Setting)31 -b(V)-8 b(alues)0 3009 y(6.2.7)94 b(Getting)31 b(P)m(arameters)0 -3219 y(6.2.8)94 b(Setting)31 b(P)m(arameters)0 3429 y(6.2.9)94 -b(Remo)m(ving)29 b(P)m(arameters)0 3639 y(6.2.10)93 b(Chec)m(king)32 -b(Comp)s(onen)m(t)e(V)-8 b(alidit)m(y)0 3868 y Fc(6.3)112 -b(Storing)37 b(Ob)6 b(jects)0 4078 y Fh(The)27 b(libical)g -(distribution)h(inclues)f(a)g(sep)r(erate)f(library)-7 -b(,)26 b(libicalss,)h(that)g(allo)n(ws)f(y)n(ou)g(to)i(store)e(iCal)h -(comp)r(onen)n(t)g(data)f(to)0 4192 y(disk)h(in)h(a)f(v)-5 -b(ariet)n(y)27 b(of)h(w)n(a)n(ys.)35 b(This)27 b(library)g(is)g(do)r -(cumen)n(ted)h(sep)r(erately)-7 b(.)36 b(\()28 b(&)f(curren)n(tly)-7 -b(,)27 b(not)g(at)h(all.)36 b(\))0 4480 y Fc(6.4)112 -b(Memory)37 b(Managemen)m(t)0 4690 y Fh(Libical)25 b(relies)f(hea)n -(vily)g(on)h(dynamic)g(allo)r(cation)f(for)h(b)r(oth)h(the)f(core)f(ob) -5 b(jects)25 b(and)g(for)f(the)i(strings)e(used)h(to)g(hold)g(v)-5 -b(alues.)0 4804 y(Some)34 b(of)f(this)h(memory)f(the)h(library)f -(caller)g(o)n(wns)g(and)g(m)n(ust)h(free,)h(and)f(some)f(of)h(the)g -(memory)f(is)h(managed)e(b)n(y)i(the)0 4917 y(library)-7 -b(.)36 b(Here)27 b(is)g(a)g(summary)g(of)h(the)g(memory)e(rules.)0 -5138 y Fb(1\))208 5281 y Fh(If)k(the)g(function)g(name)g(has)f -Fd(")p Fh(new)p Fd(")g Fh(in)h(it,)h(the)f(caller)f(gets)g(con)n(trol)g -(of)h(the)g(memory)-7 b(.)42 b(\()31 b(suc)n(h)e(as)g(icalcomp)r(onen-) -208 5394 y(t_new\(\),)f(or)e(icalprop)r(ert)n(y_new_clone\(\))f(\))0 -5566 y Fb(2\))208 5709 y Fh(If)j(y)n(ou)g(got)g(the)h(memory)f(from)g -(a)g(routine)g(with)h(new)f(in)h(it,)g(y)n(ou)f(m)n(ust)h(call)f(the)h -(corresp)r(onding)d(*_free)i(routine)208 5823 y(to)f(free)g(the)h -(memory)-7 b(.)36 b(\()28 b(Use)g(icalcomp)r(onen)n(t_free\(\))e(to)i -(free)f(ob)5 b(jects)27 b(created)g(with)h(icalcomp)r(onen)n -(t_new\(\)\))p eop -%%Page: 9 9 -9 8 bop 0 -167 3900 5 v 0 -200 a Fb(6.)73 b(Using)32 -b(libical)3190 b Fh(9)0 162 y Fb(3\))208 307 y Fh(If)29 -b(the)g(function)g(name)f(has)g Fd(")p Fh(add)p Fd(")g -Fh(in)h(it,)g(the)g(caller)e(is)i(transfering)e(con)n(trol)g(of)i(the)g -(memory)f(to)g(the)h(routine.)40 b(\()208 420 y(icalprop)r(ert)n -(y_add_parameter\(\))23 b(\))0 596 y Fb(4\))208 741 y -Fh(If)29 b(the)h(function)g(name)f(has)g Fd(")p Fh(remo)n(v)n(e)p -Fd(")e Fh(in)j(it,)g(the)g(caller)f(passes)f(in)i(a)f(p)r(oin)n(ter)g -(to)g(an)g(ob)5 b(ject)29 b(and)h(after)f(the)g(call)208 -855 y(returns,)j(the)h(caller)e(o)n(wns)g(the)h(ob)5 -b(ject.)50 b(So,)33 b(b)r(efore)f(y)n(ou)f(call)h(icalcomp)r(onen)n -(t_remo)n(v)n(e_prop)r(ert)n(y\(comp,fo)r(o\),)208 968 -y(y)n(ou)26 b(do)i(not)f(o)n(wn)g Fd(")p Fh(fo)r(o)p -Fd(")g Fh(and)g(after)g(the)h(call)f(returns,)g(y)n(ou)g(do.)0 -1145 y Fb(5\))208 1290 y Fh(If)d(the)g(routine)f(returns)g(a)g(string,) -h(libical)g(o)n(wns)f(the)h(memory)f(and)g(will)h(put)g(it)h(on)e(a)g -(ring)g(bu\033er)h(to)g(reclaim)f(later.)208 1403 y(Y)-7 -b(ou'd)27 b(b)r(etter)h(strdup\(\))g(it)g(if)g(y)n(ou)f(w)n(an)n(t)g -(to)h(k)n(eep)f(it,)h(and)f(y)n(ou)g(don't)h(ha)n(v)n(e)e(to)h(delete)h -(it.)0 1693 y Fc(6.5)112 b(Error)36 b(Handling)0 1903 -y Fh(Libical)27 b(has)g(sev)n(eral)e(error)h(handling)h(mec)n(hanisms)f -(for)h(the)h(v)-5 b(arioust)n(yp)r(es)25 b(of)j(programming,)d(seman)n -(tic)i(and)g(syn)n(tactic)0 2017 y(errors)e(y)n(ou)i(ma)n(y)g(encoun)n -(ter.)0 2288 y Fb(6.5.1)94 b(Return)31 b(v)-5 b(alues)0 -2498 y Fh(Man)n(y)29 b(library)f(routines)g(signal)h(errors)e(through)h -(their)h(return)g(v)-5 b(alues.)42 b(All)30 b(routines)e(that)i(return) -f(a)f(p)r(oin)n(ter,)i(suc)n(h)f(as)0 2611 y(icalcomp)r(onen)n -(t_new\(\),)36 b(will)f(return)f(0)g(\()h(zero)f(\))h(on)f(a)g(fatal)h -(error.)56 b(Some)35 b(routines)f(will)g(return)h(a)f(v)-5 -b(alue)34 b(of)h(en)n(um)0 2725 y(icalerroren)n(um.)0 -2996 y Fb(6.5.2)94 b(icalerrno)0 3206 y Fh(Most)23 b(routines)f(will)h -(set)g(the)g(global)f(error)f(v)-5 b(alue)23 b(icalerrno)e(on)h -(errors.)33 b(This)23 b(v)-5 b(ariable)22 b(is)h(an)f(en)n(umeration;)i -(p)r(ermissable)0 3320 y(v)-5 b(alues)21 b(can)h(b)r(e)g(found)g(in)g -(libical/icalerror.h.)32 b(If)22 b(the)g(routine)g(returns)f(an)g(en)n -(um)h(icalerroren)n(um,)f(then)h(the)g(return)f(v)-5 -b(alue)0 3433 y(will)28 b(b)r(e)g(the)g(same)f(as)g(icalerrno.)35 -b(Y)-7 b(ou)27 b(can)g(use)h(icalerror_strerror\(\))22 -b(to)28 b(get)f(a)g(string)g(that)h(describ)r(es)f(the)h(error)0 -3704 y Fb(6.5.3)94 b(X-LIC-ERR)m(OR)0 3914 y Fh(The)38 -b(library)f(handles)g(seman)n(tic)g(and)h(syn)n(tactic)f(errors)f(in)i -(comp)r(onen)n(ts)g(b)n(y)f(inserting)g(errors)f(prop)r(erties)h(in)n -(to)h(the)0 4028 y(comp)r(onen)n(ts.)k(If)30 b(the)g(parser)d(cannot)i -(parse)g(incoming)g(text)g(\()h(a)f(syn)n(tactic)g(error)e(\))j(or)f -(if)h(the)g(icalrestriction_c)n(hec)n(k\(\))0 4141 y(routine)j -(indicates)h(that)f(the)h(comp)r(onen)n(t)g(do)r(es)f(not)h(meet)g(the) -g(requirmen)n(ts)e(of)i(RF)n(C2446)d(\()j(a)g(seman)n(tic)f(error\))f -(the)0 4255 y(library)g(will)h(insert)g(prop)r(erties)f(of)h(the)h(t)n -(yp)r(e)f(X-LIC-ERR)n(OR)g(to)g(describ)r(e)g(the)g(error.)52 -b(Here)33 b(is)g(an)g(example)g(of)g(the)0 4368 y(error)26 -b(prop)r(ert)n(y:)0 4598 y Fd(X-LIC-ERROR;X-LI)o(C-)o(ERR)o(OR)o(TY)o -(PE=)o(IN)o(VA)o(LID)o(_I)o(TI)o(P)38 b(:Failed)i(iTIP)i(restrictions)d -(for)j(property)e(DTSTART.)g(Expected)g(1)k(instances)39 -b(of)k(the)f(property)f(and)h(got)g(0)0 4942 y Fh(This)35 -b(error)f(resulted)h(from)g(a)g(call)g(to)h(icalrestriction_c)n(hec)n -(k\(\),)f(whic)n(h)g(disco)n(v)n(ered)e(that)j(the)g(comp)r(onen)n(t)f -(do)r(es)g(not)0 5056 y(ha)n(v)n(e)26 b(a)i(DTST)-7 b(AR)g(T)28 -b(prop)r(ert)n(y)-7 b(,)27 b(as)g(required)f(b)n(y)h(RF)n(C2445.)0 -5212 y(There)g(are)g(a)g(few)h(routines)e(to)i(manipulate)f(error)f -(prop)r(erties:)0 5369 y(Routine)g(Purp)r(ose)g(v)n(oid)f -(icalrestriction_c)n(hec)n(k\(\))e(Chec)n(k)i(a)h(comp)r(onen)n(t)f -(against)g(RF)n(C2446)e(and)j(insert)g(error)d(prop)r(er-)0 -5482 y(ties)e(to)g(indicate)g(an)n(y)f(non-complianes)g(in)n(t)h -(icalcomp)r(onen)n(t_coun)n(t_errors\(\))d(Return)j(the)g(n)n(um)n(b)r -(er)g(of)g(error)e(prop)r(erties)0 5596 y(in)33 b(a)f(comp)r(onen)n(t)h -(v)n(oid)f(icalcomp)r(onen)n(t_strip_errors\(\))d(Remo)n(v)n(e)j(all)g -(error)f(prop)r(erties)h(in)h(a)f(comp)r(onen)n(t)h(v)n(oid)f(ical-)0 -5709 y(comp)r(onen)n(t_con)n(v)n(ert_errors\(\))18 b(Con)n(v)n(ert)k -(some)g(error)f(prop)r(erties)h(in)n(to)h(REQUEST-ST)-7 -b(A)g(TUS)24 b(prop)r(erties)e(to)h(indicate)0 5823 y(the)28 -b(inabilit)n(y)f(to)h(pro)r(cess)e(the)i(comp)r(onen)n(t)f(as)g(an)h -(iTIP)g(request.)p eop -%%Page: 10 10 -10 9 bop 0 -167 3900 5 v 0 -200 a Fb(7.)73 b(Useful)32 -b(Recipies)3026 b Fh(10)0 162 y Fc(6.6)112 b(Naming)36 -b(Standard)0 372 y Fh(Structures)26 b(that)i(y)n(ou)e(access)f(with)j -(the)f("struct")f(k)n(eyw)n(ord,)f(suc)n(h)h(as)h("struct)f(icaltimet)n -(yp)r(e")g(are)g(things)h(that)g(y)n(ou)f(are)0 485 y(allo)n(w)n(ed)g -(to)i(see)f(inside)g(and)h(p)r(ok)n(e)f(at.)0 642 y(Structures)33 -b(that)h(y)n(ou)e(access)g(though)i(a)f(t)n(yp)r(edef,)i(suc)n(h)e(as)g -("icalcomp)r(onen)n(t")e(are)i(things)g(where)g(all)g(of)h(the)f(data)g -(is)0 755 y(hidden.)0 912 y(Comp)r(onen)n(t)28 b(names)g(that)h(start)f -(with)h("V")f(are)f(part)h(of)h(RF)n(C)f(2445)f(or)g(another)h(iCal)g -(standard.)38 b(Comp)r(onen)n(t)29 b(names)0 1025 y(that)h(start)f -(with)i("X")e(are)g(also)g(part)g(of)h(the)g(sp)r(ec,)g(but)h(they)f -(are)f(not)h(actually)f(comp)r(onen)n(ts)g(in)h(the)g(sp)r(ec.)44 -b(Ho)n(w)n(ev)n(er,)0 1139 y(they)34 b(lo)r(ok)f(and)g(act)h(lik)n(e)f -(comp)r(onen)n(ts,)h(so)f(they)h(are)f(comp)r(onen)n(ts)g(in)h -(libical.)55 b(Names)33 b(that)h(start)f(with)h("XLIC")f(or)0 -1253 y("X-LIC")26 b(are)h(not)h(part)f(of)g(an)n(y)g(iCal)g(sp)r(ec.)37 -b(They)27 b(are)g(used)h(in)n(ternally)e(b)n(y)i(libical.)0 -1409 y(En)n(ums)d(that)f(iden)n(tify)h(a)f(comp)r(onen)n(t,)h(prop)r -(ert)n(y)-7 b(,)24 b(v)-5 b(alue)24 b(or)g(parameter)e(end)j(with)g -("_COMPONENT,")e("_PR)n(OPER-)0 1523 y(TY,")k("_V)-9 -b(ALUE,")28 b(or)e("_P)-7 b(ARAMETER"s)0 1679 y(En)n(ums)31 -b(that)f(iden)n(tify)h(a)f(parameter)f(v)-5 b(alue)30 -b(ha)n(v)n(e)f(the)i(name)f(of)h(the)f(parameter)f(as)h(the)h(second)e -(w)n(ord.)45 b(F)-7 b(or)29 b(instance:)0 1793 y(ICAL_R)n(OLE_REQP)-7 -b(AR)g(TICIP)g(ANT)29 b(or)d(ICAL_P)-7 b(AR)g(TST)g(A)g(T_A)n(CCEPTED.) -0 1949 y(The)28 b(en)n(ums)f(for)g(the)h(parts)f(of)g(a)g(recurarance)e -(rule)j(and)f(request)g(statuses)g(are)f(irregular.)0 -2287 y Fe(7)131 b(Useful)44 b(Recipies)0 2526 y Fh(Iteration)0 -2683 y(Cop)n(ying)24 b(comp)r(onen)n(ts.)36 b(Remem)n(b)r(er)25 -b(that)g(y)n(ou)g(m)n(ust)g(clone)g(or)f(remo)n(v)n(e)g(an)h(ob)5 -b(ject)25 b(b)r(efore)g(putting)h(in)f(on)h(another)e(list.)0 -2839 y(Finding)k(compliance)f(errors)0 3177 y Fe(8)131 -b(P)l(erformance)0 3416 y Fh(Chec)n(king)27 b(restrictions)f(is)h -(computationally)g(exp)r(ensiv)n(e.)0 3754 y Fe(9)131 -b(Hac)l(ks)45 b(and)e(Bugs)0 3993 y Fh(There)22 b(are)f(a)g(lot)h(of)g -(hac)n(ks)f(in)i(the)f(library)f(\025)h(bits)g(of)g(co)r(de)g(that)g(I) -g(am)g(not)g(proud)g(of)g(and)g(should)g(propbably)f(b)r(e)h(c)n -(hanged.)0 4107 y(These)27 b(are)g(mark)n(ed)f(with)i(the)g(commen)n(t) -g(string)e("HA)n(CK.")p eop -%%Trailer -end -userdict /end-hook known{end-hook}if -%%EOF diff --git a/libical/doc/UsingLibical.txt b/libical/doc/UsingLibical.txt deleted file mode 100644 index de803cbfde..0000000000 --- a/libical/doc/UsingLibical.txt +++ /dev/null @@ -1,819 +0,0 @@ - - -Using Libical - -Eric Busboom (eric@softwarestudio.org) - -May 2000 - -\tableofcontents{} - -1 Introduction - -Libical is an Open Source implementation of the iCalendar protocols -and protocol data units. The iCalendar specification describes how -calendar clients can communicate with calendar servers for users can -store their calendar data and arrange meetings with other users. - -Libical implements RFC2445 and RFC2446. Eventually, it will also implement -iRIP and CAP. - -This documentation assumes that you are familiar with the iCalendar -standards RFC2445 and RFC2446. these specifications are online on -the CALSCH webpage at: - -http://www.imc.org/ietf-calendar/ - -1.1 The libical project - -This code is under active development. If you would like to contribute -to the project, you can contact me, Eric Busboom, at eric@softwarestudio.org. -The project has a webpage at - -http://softwarestudio.org/libical/index.html - -and a mailing list that you can join by sending the following mail: - -To: minimalist@softwarestudio.org - -Subject: subscribe libical - -1.2 License - -The code and datafiles in this distribution are licensed under the -Mozilla Public License. See http://www.mozilla.org/NPL/MPL-1.0.html -for a copy of the license. Alternately, you may use libical under -the terms of the GNU Library General Public License. See http://www.fsf.org/copyleft/lesser.html -for a copy of the LGPL. - -This dual license ensures that the library can be incorporated into -both proprietary code and GPL'd programs, and will benefit from improvements -made by programmers in both realms. I will only accept changes into -my version of the library if they are similarly dual-licensed. - -1.3 Example Code - -A lot of the documentation for this library is in the form of example -code. These examples are in the ``examples'' directory of the distribution. -Also look in ``src/test'' for more annotated examples. - -2 Building the Library - -Libical uses autoconf to generate makefiles, although it uses none -of the autoconf flags to influence the compilation. It should built -with no adjustments on Linux, FreeBSD and Solaris. - -3 Structure - -The iCal calendar model is based on four types of objects: components, -properties, values and parameters. - -Properties are the fundamental unit of information in iCal, and they -work a bit like a hash entry, with a constant key and a variable value. -Properties may also have modifiers, called parameters. In the iCal -content line - -ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com - -The property name is ``ORGANIZER,'' the value of the property is ``mrbig@host.com'' -and the ``ROLE'' parameter specifies that Mr Big is the chair of the -meetings associated with this property. - -Components are groups of properties that represent the core objects -of a calendar system, such as events or timezones. - -The central goal of libical is to parse iTIP data into an internal -representation of Components, Properties, Parameters an Values, and -to allow the user to manipulate the data in various ways ([fig] \includegraphics{icaluml.eps} ) When -a component is sent across a network, if it is un-encrypted, it will -look something like: - -BEGIN:VEVENT - -DTSTAMP:19980309T231000Z - -UID:guid-1.host1.com - -ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com - -ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP: - - MAILTO:employee-A@host.com - -DESCRIPTION:Project XYZ Review Meeting - -CATEGORIES:MEETING - -CLASS:PUBLIC - -CREATED:19980309T130000Z - -SUMMARY:XYZ Project Review - -DTSTART;TZID=US-Eastern:19980312T083000 - -DTEND;TZID=US-Eastern:19980312T093000 - -LOCATION:1CP Conference Room 4350 - -END:VEVENT - -3.1 Core iCal classes - -3.1.1 Components - -3.1.2 Properties - -3.1.3 Values - -3.1.4 Parameters - -3.2 Other elements of libical - -In addition to the core iCal classes, libical has many other types, -structures, classes that aid in creating and using iCal components. - -3.2.1 Enumerations - -3.2.2 Types - -3.2.3 The Parser - -3.2.4 Restrictions - -3.2.5 Error objects - -3.2.6 Memory Management - -3.2.7 Storage classes - -4 Differences From RFCs - -Libical has been designed to follow the standards as closely as possible, -so that the key objects in the standards are also keey objects in -the library. However, there are a few areas where the specifications -are (arguably) irregular, and following them exactly would result -in an unfriendly interface. These deviations make libical easier to -use by maintaining a self-similar interface. - -4.1 Pseudo Components - -Libical defines components for groups of properties that look and act -like components, but are not defined as components in the specification. -XDAYLIGHT and XSTANDARD are notable examples. These pseudo components -group properties within the VTIMEZONE components. For instanace, the -timezone properties associated with daylight savings time starts with -``BEGIN:DAYLIGHT'' and ends with ``END:DAYLIGHT, just like other components, -but is not defined as a component in RFC2445. ( See RFC2445, page -61 ) In Libical,this grouping is represented by the XDAYLIGHT component. -Standard iCAL components all start with the letter ``V,'' while pseudo -components start with''X.'' - -There are also pseudo components that are conceptually derived classess -of VALARM. RFC2446 defines what properties may be included in each -component, and for VALARM, the set of properties it may have depends -on the value of the ACTION property. - -For instance, if a VALARM component has an ACTION property with the -value of ``AUDIO,'' the component must also have an ``ATTACH'' property. -However, if the ACTION value is ``DISPLAY,'' the component must have -a DESCRIPTION property. - -To handle these various, complex restrictions, libical has pseudo components -for each type of alarm: XAUDIOALARM, XDISPLAYALARM, XEMAILALARM and -XPROCEDUREALARM. - -4.2 Combined Values - -Many values can take more than one type. TRIGGER, for instance, can -have a value type of with DURATION or of DATE-TIME. These multiple -types make it difficult to create routines to return the value associated -with a property. - -It is natural to have interfaces that would return the value of a property, -but it is cumbersone for a single routine to return multiple types. -So, in libical, properties that can have multiple types are given -a single type that is the union of their RFC2445 types. For instance, -in libical, the value of the TRIGGER property resolves to struct icaltriggertype. -This type is a union of a DURATION and a DATE-TIME. - -4.3 Multi-Valued Properties - -Some properties, such as CATEGORIES have only one value type, but each -CATEGORIES property can have multiple value instances. This also results -in a cumbersome interface -- CATEGORIES accessors would have to return -a list while all other accessors returned a single value. In libical, -all properties have a single value, and multi-valued properties are -broken down into multiple single valued properties during parsing. -That is, an input line like, - -CATEGORIES: work, home - -becomes in libical's internal representation - -CATEGORIES: work - -CATEGORIES: home - -Oddly, RFC2445 allows some multi-valued properties ( like FREEBUSY -) to exist as both a multi-values property and as multiple single -value properties, while others ( like CATEGORIES ) can only exist -as single multi-valued properties. This makes the internal representation -for CATEGORIES illegal. However when you convert a component to a -string, the library will collect all of the CATEGORIES properties -into one. - -5 Implementation Limitations - -6 Using libical - -6.1 Creating Components - -There are three ways to create components in Libical: creating individual -objects and assembling them, building entire objects in massive vaargs -calls, and parsing a text file containing iCalendar data. - -6.1.1 Constructor Interfaces - -Using constructor interfaces, you create each of the objects seperately -and them assemble them in to components: - -icalcomponent *event; - -icalproperty *prop; - -icalparameter *param; - -struct icaltimetype atime; - -event = icalcomponent_new(ICAL_VEVENT_COMPONENT); - -prop = icalproperty_new_dtstamp(atime) ; - -icalcomponent_add_property(event, prop); - -prop = icalproperty_new_uid(strdup("guid-1.host1.com")) ); - -icalcomponent_add_property(event,prop); - -prop=icalproperty_new_organizer(strdup("mrbig@host.com")); - -param = icalparameter_new_role(ICAL_ROLE_CHAIR) - -icalproperty_add_parameter(prop, param); - -icalcomponent_add_property(event,prop); - -While we are on this example, you should notice that libical uses a -semi-object-oriented style of interface. Most things you work with -are objects, that are instantiated with a constructor that has ``new'' -in the name. Also note that, other than the object reference, most -structure data is passed in to libical routines by value. Strings, -of course, are passed in by reference, but libical will take ownership -of the memory, so you had beter strdup() the data unless you want -a core dump when the memory is freed for the second time. Libical -has some complex but very regular memory handling rules. These are -detailed in section \ref{sec:memory}. - -If any of the constructors fail, they will return 0. If you try to -insert 0 into a property or component, or use a zero-valued object -reference, libical will either silently ignore the error or will abort -with an error message. This behavior is controlled by a compile time -flag (ICAL_ERRORS_ARE_FATAL), and will abort by default. - -6.1.2 vaargs Constructors - -There is another way to create complex components, which is arguable -more elegant, if you are not horrified by varargs. The varargs constructor -interface all you to create intricate components in a single block -of text. - - calendar = - - icalcomponent_vanew( - - ICAL_VCALENDAR_COMPONENT, - - icalproperty_new_version(strdup("2.0")), - - icalproperty_new_prodid(strdup("-//RDU Software//NONSGML HandCal//EN")), - - icalcomponent_vanew( - - ICAL_VEVENT_COMPONENT, - - icalproperty_new_dtstamp(atime), - - icalproperty_new_uid(strdup("guid-1.host1.com")), - - icalproperty_vanew_organizer( - - strdup("mrbig@host.com"), - - icalparameter_new_role(ICAL_ROLE_CHAIR), - - 0 - - ), - - icalproperty_vanew_attendee( - - strdup("employee-A@host.com"), - - icalparameter_new_role(ICAL_ROLE_REQPARTICIPANT), - - icalparameter_new_rsvp(1), - - icalparameter_new_cutype(ICAL_CUTYPE_GROUP), - - 0 - - ), - - icalproperty_new_location(strdup("1CP Conference Room 4350")), - - 0 - - ), - - 0 - - ); - -This form is similar to the regular constructor, except that they have -``vanew'' instead of ``new'' in the name. The arguments are similar -too, except that the component contstructor can have a list of properties, -and the property constructor can have a list or parameters. Be sure -to terminate every list with a '0', or your code will crash, if you -are lucky. - -6.1.3 Parsing Text Files - -The final way to create components will probably be the most common; -you can create components from RFC2445 compliant text. If you have -the string in memory, use - -icalcomponent* icalparser_parse_string(char* str); - -This may seem wasteful if you want to pull a large component off of -the network; you may prefer to parse the component line by line. This -is possible too by using: - -icalparser* icalparser_new(); - -void icalparser_free(icalparser* parser); - -icalparser_get_line(parser,read_stream); - -icalparser_add_line(parser,line); - -icalparser_set_gen_data(parser,stream) - -These routines will construct a parser object to which you can add -lines of input and retrieve any components that the parser creates -from the input. For an example: - -char* read_stream(char *s, size_t size, void *d) - -{ - - char *c = fgets(s,size, (FILE*)d); - - return c; - -} - -main() { - - char* line; - - icalcomponent *c; - - icalparser *parser = icalparser_new(); - - FILE* stream = fopen(argv[1],"r"); - - icalparser_set_gen_data(parser,stream); - - do{ - - line = icalparser_get_line(parser,read_stream); - - c = icalparser_add_line(parser,line); - - if (c != 0){ - - printf("%s",icalcomponent_as_ical_string(c)); - - icalparser_claim(parser); - - printf("\n---------------\n"); - - icalcomponent_free(c); - - } - - } while ( line != 0); - -} - -The parser object parameterizes the routine used to get input lines -with icalparser_set_gen_data() and icalparser_get_line(). In this -example, the routine read_stream() will fetch the next line from a -stream, with the stream passed in as the void* parameter d. The parser -calls read_stream() from icalparser_get_line(), but it also needs -to know what stream to use. This is set by the call to icalparser_set_gen_data(). - -Using the same mechanism, other implmentations could read from memory -buffers, sockets or other interfaces. - -Since the example code is a very common way to use the parser, there -is a convienience routine; - -icalcomponent* icalparser_parse(icalparser *parser, - - char* (*line_gen_func)(char *s, size_t size, void* d)) - -To use this routine, you still must construct the parser object and -pass in a reference to a line reading routine. If the parser can create -a single component from the input, it will return a pointer to the -newly constructed component. If the parser can construct multiple -cmponents from the input, it will return a reference to an XROOT component -( of type ICAL_XROOT_COMPONENT.) This XROOT component will hold all -of the components constructed from the input as children. See section -6.2.2 for how to iterate through the child components. - -6.2 Accessing Components - -Given a reference to a component, you probably will want to access -the properties, parameters and values inside. Libical interface let -you find sub-component, add and remove sub-components, and do the -same three operations on properties. - -6.2.1 Finding Components - -To find a sub-component of a component, use: - -icalcomponent* icalcomponent_get_first_component( - - icalcomponent* component, - - icalcomponent_kind kind); - -This routine will return a reference to the first component of the -type 'kind.' The key kind values, listed in icalenums.h are: - -ICAL_ANY_COMPONENT - -ICAL_VEVENT_COMPONENT - -ICAL_VTODO_COMPONENT - -ICAL_VJOURNAL_COMPONENT - -ICAL_VCALENDAR_COMPONENT - -ICAL_VFREEBUSY_COMPONENT - -ICAL_VALARM_COMPONENT - -These are only the most common components; there are many more listed -in icalenums.h. - -As you might guess, if there is more than one subcomponent of the type -you have chosen, this routine will return only the first. to get at -the others, you need to iterate through the component. - -6.2.2 Interating Through Components - -Iteration requires a second routine to get the next subcomponent after -the first: - -icalcomponent* icalcomponent_get_next_component( - - icalcomponent* component, icalcomponent_kind kind); - -With the 'first' and 'next' routines, you can create a for loop to -iterate through all of a components subcomponents - - for(c = icalcomponent_get_first_component(comp,ICAL_ANY_COMPONENT); - - c != 0; - - c = icalcomponent_get_next_component(comp,ICAL_ANY_COMPONENT)) - -{ - - do_something(c); - -} - -This code bit wil iterate through all of the subcomponents in 'comp' -but you can select a specific type of component by changing ICAL_ANY_COMPONENT -to another component type. - -6.2.3 Removing Components - -Libical component have internal iterators, so you can only have one -iteration over a component at a time. Removing an element from a list -while iterating through the list can cause problems, since you will -probably be removing the element that the internal iterator points -to. This will result in the iteration loop terminating immediately -after removing the element. To avoid the problem, you will need to -step the iterator ahead of the element you are going to remove, like -this: - -for(c = icalcomponent_get_first_component(parent_comp,ICAL_ANY_COMPONENT); - - c != 0; - - c = next - -{ - - next = icalcomponent_get_next_component(parent_comp,ICAL_ANY_COMPONENT); - - icalcomponent_remove_component(parent_comp,c); - -} - -6.2.4 Working with properties and parameters - -Finding, iterating and removing properties works the same as it does -for components, using the property-specific or parameter-specific -interfaces: - -icalproperty* icalcomponent_get_first_property( - - icalcomponent* component, - - icalproperty_kind kind); - -icalproperty* icalcomponent_get_next_property( - - icalcomponent* component, - - icalproperty_kind kind); - -void icalcomponent_add_property( - - icalcomponent* component, - - icalproperty* property); - -void icalcomponent_remove_property( - - icalcomponent* component, - - icalproperty* property); - -icalparameter* icalproperty_get_first_parameter( - - icalproperty* prop, - - icalparameter_kind kind); - -icalparameter* icalproperty_get_next_parameter( - - icalproperty* prop, - - icalparameter_kind kind); - -void icalproperty_add_parameter( - - icalproperty* prop, - - icalparameter* parameter); - -void icalproperty_remove_parameter( - - icalproperty* prop, - - icalparameter_kind kind); - -6.2.5 Getting Values - -6.2.6 Setting Values - -6.2.7 Getting Parameters - -6.2.8 Setting Parameters - -6.2.9 Removing Parameters - -6.2.10 Checking Component Validity - -RFC 2446 defines rules for what properties must exist in a component -to be used for transfering scheduling data. Most of these rules relate -to the existence of properties relative to the METHOD property, which -declares what operation a remote reciever should use to process a -component. For instance, if the METHOD is REQUEST and the component -is a VEVENT, the sender is probably asking the reciever to join in -a meeting. I this case, RFC2446 says that the component must specify -a start time (DTSTART) and list the reciever as an attendee (ATTENDEE). - -Libical can check these restrictions with the routine: - -int icalrestriction_check(icalcomponent* comp); - -This routine returns 0 if the component does not pass RFC2446 restrictions, -or if the component is malformed. The component you pass in must be -a VCALENDAR, with one or more children, like the examples in RFC2446. - -When this routine runs, it will insert new properties into the component -to indicate any errors it finds. See section 6.5.3, X-LIC-ERROR for -more information about these error properties. - -6.2.11 Converting Components to Text - -To create an RFC2445 compliant text representtion of an object, use -one of the *_as_ical_string() routines: - -char* icalcomponent_as_ical_string (icalcomponent* component) - -char* icalproperty_as_ical_string (icalproperty* property) - -char* icalparameter_as_ical_string (icalparameter* parameter) - -char* icalvalue_as_ical_string (icalvalue* value) - -In most cases, you will only use icalcomponent_as_ical_string (), since -it will cascade and convert all of the parameters, properties and -values that are attached to the root component. - -Icalproperty_as_ical_string() will terminate each line with the RFC2445 -specified line terminator ``\r\n'' However, if you compile with the -symbol ICAL_UNIX_NEWLINE defined, it will terminate lines with ``\n'' - -Remember that the string returned by these routines is owned by the -library, and will eventually be re-written. You should copy it if -you want to preserve it. - -6.3 Storing Objects - -The libical distribution inclues a seperate library, libicalss, that -allows you to store iCal component data to disk in a variety of ways. -This library is documented seperately. ( & currently, not at all. -) - -6.4 \label{sec:memory}Memory Management - -Libical relies heavily on dynamic allocation for both the core objects -and for the strings used to hold values. Some of this memory the library -caller owns and must free, and some of the memory is managed by the -library. Here is a summary of the memory rules. - -1) If the function name has "new" in it, the caller gets control - of the memory. ( such as icalcomponent_new(), or icalproperty_new_clone() - ) - -2) If you got the memory from a routine with new in it, you must - call the corresponding *_free routine to free the memory. ( Use - icalcomponent_free() to free objects created with icalcomponent_new()) - -3) If the function name has "add" in it, the caller is transfering - control of the memory to the routine. ( icalproperty_add_parameter() ) - -4) If the function name has "remove" in it, the caller passes in - a pointer to an object and after the call returns, the caller owns - the object. So, before you call icalcomponent_remove_property(comp,foo), - you do not own "foo" and after the call returns, you do. - -5) If the routine returns a string, libical owns the memory and will - put it on a ring buffer to reclaim later. You'd better strdup() - it if you want to keep it, and you don't have to delete it. - -6.5 Error Handling - -Libical has several error handling mechanisms for the varioustypes -of programming, semantic and syntactic errors you may encounter. - -6.5.1 Return values - -Many library routines signal errors through their return values. All -routines that return a pointer, such as icalcomponent_new(), will -return 0 ( zero ) on a fatal error. Some routines will return a value -of enum icalerrorenum. - -6.5.2 icalerrno - -Most routines will set the global error value icalerrno on errors. -This variable is an enumeration; permissable values can be found in -libical/icalerror.h. If the routine returns an enum icalerrorenum, -then the return value will be the same as icalerrno. You can use icalerror_strerror() -to get a string that describes the error - -6.5.3 X-LIC-ERROR and X-LIC-INVALID-COMPONENT - -The library handles semantic and syntactic errors in components by -inserting errors properties into the components. If the parser cannot -parse incoming text ( a syntactic error ) or if the icalrestriction_check() -routine indicates that the component does not meet the requirments -of RFC2446 ( a semantic error) the library will insert properties -of the type X-LIC-ERROR to describe the error. Here is an example -of the error property: - -X-LIC-ERROR;X-LIC-ERRORTYPE=INVALID_ITIP :Failed iTIP restrictions -for property DTSTART. Expected 1 instances of the property and got -0 - -This error resulted from a call to icalrestriction_check(), which discovered -that the component does not have a DTSTART property, as required by -RFC2445. - -There are a few routines to manipulate error properties: - -+------------------------------------+--------------------------------+ -|Routine | Purpose | -+------------------------------------+--------------------------------+ -+------------------------------------+--------------------------------+ -|void icalrestriction_check() | Check a component against | -| | RFC2446 and insert error prop­ | -| | erties to indicate non compli­ | -| | ance | -|int icalcomponent_count_errors() | Return the number of error | -| | properties in a component | -|void icalcomponent_strip_errors() | Remove all error properties in | -| | as component | -+------------------------------------+--------------------------------+ -|void icalcomponent_convert_errors() | Convert some error properties | -| | into REQUESTS-STATUS to indi­ | -| | cate the inability to process | -| | the component as an iTIP re­ | -| | quest. | -+------------------------------------+--------------------------------+ -| | | -+------------------------------------+--------------------------------+ - - -The types of errors are listed in icalerror.h. They are: - -ICAL_XLICERRORTYPE_COMPONENTPARSEERROR - -ICAL_XLICERRORTYPE_PARAMETERVALUEPARSEERROR - -ICAL_XLICERRORTYPE_PARAMETERNAMEPARSEERROR - -ICAL_XLICERRORTYPE_PROPERTYPARSEERROR - -ICAL_XLICERRORTYPE_VALUEPARSEERROR - -ICAL_XLICERRORTYPE_UNKVCALPROP - -ICAL_XLICERRORTYPE_INVALIDITIP - -The libical parser will generate the error that end in PARSEERROR when -it encounters garbage in the input steam. ICAL_XLICERRORTYPE_INVALIDITIP -is inserted by icalrestriction_check(), and ICAL_XLICERRORTYPE_UNKVCALPROP -is generated by icalvcal_convert() when it encounters a vCal property -that it cannot convert or does not know about. - -Icalcomponent_convert_errors() converts some of the error properties -ina component into REQUEST-STATUS properties that indicate a failure. -As of libical version0.18, this routine only convert *PARSEERROR errors -and it always generates a 3.x ( failure ) code. This makes it more -of a good idea than a really useful bit of code. - -6.6 Naming Standard - -Structures that you access with the ``struct'' keyword, such as ``struct -icaltimetype'' are things that you are allowed to see inside and poke -at. - -Structures that you access though a typedef, such as ``icalcomponent'' -are things where all of the data is hidden. - -Component names that start with ``V'' are part of RFC 2445 or another -iCal standard. Component names that start with ``X'' are also part -of the spec, but they are not actually components in the spec. However, -they look and act like components, so they are components in libical. -Names that start with ``XLIC'' or ``X-LIC'' are not part of any iCal -spec. They are used internally by libical. - -Enums that identify a component, property, value or parameter end with -``_COMPONENT,'' ``_PROPERTY,'' ``_VALUE,'' or ``_PARAMETER''s - -Enums that identify a parameter value have the name of the parameter -as the second word. For instance: ICAL_ROLE_REQPARTICIPANT or ICAL_PARTSTAT_ACCEPTED. - -The enums for the parts of a recurarance rule and request statuses -are irregular. - -7 Useful Recipies - -Iteration - -Copying components. Remember that you must clone or remove an object -before putting in on another list. - -Finding compliance errors - -8 Performance - -Checking restrictions is computationally expensive. - -9 Hacks and Bugs - -There are a lot of hacks in the library -- bits of code that I am not -proud of and should propbably be changed. These are marked with the -comment string ``HACK.'' diff --git a/libical/examples/.cvsignore b/libical/examples/.cvsignore deleted file mode 100644 index 29ef3ef4c8..0000000000 --- a/libical/examples/.cvsignore +++ /dev/null @@ -1,5 +0,0 @@ -.libs -.deps -Makefile -Makefile.in -doesnothing diff --git a/libical/examples/Makefile.am b/libical/examples/Makefile.am deleted file mode 100644 index e4faf547a7..0000000000 --- a/libical/examples/Makefile.am +++ /dev/null @@ -1,13 +0,0 @@ - -noinst_PROGRAMS = doesnothing - -LDADD = ../src/libical/libical.a ../src/libicalss/libicalss.a ../src/libicalvcal/libicalvcal.a -INCLUDES = -I . -I../src/libical -I$(srcdir)/../src/libical -I../src/libicalss -I../src/libicalvcal - -doesnothing_SOURCES = \ - access_components.c \ - access_properties_and_parameters.c \ - errors.c \ - main.c \ - parse_text.c - diff --git a/libical/examples/access_components.c b/libical/examples/access_components.c deleted file mode 100644 index 6b655b42f7..0000000000 --- a/libical/examples/access_components.c +++ /dev/null @@ -1,325 +0,0 @@ -/* Access_component.c */ - -#include "ical.h" - -#include -#include /* for strdup */ -#include /* for malloc */ -#include /* for printf */ -#include /* for time() */ -#include "icalmemory.h" - -/* Creating iCal Components - - There are two ways to create new component in libical. You can - build the component from primitive parts, or you can create it - from a string. - - There are two variations of the API for building the component from - primitive parts. In the first variation, you add each parameter and - value to a property, and then add each property to a - component. This results in a long series of function calls. This - style is show in create_new_component() - - The second variation uses vargs lists to nest many primitive part - constructors, resulting in a compact, neatly formated way to create - components. This style is shown in create_new_component_with_va_args() - - - -*/ - -icalcomponent* create_new_component() -{ - - /* variable definitions */ - icalcomponent* calendar; - icalcomponent* event; - struct icaltimetype atime = icaltime_from_timet( time(0),0,0); - struct icalperiodtype rtime; - icalproperty* property; - - /* Define a time type that will use as data later. */ - rtime.start = icaltime_from_timet( time(0),0,0); - rtime.end = icaltime_from_timet( time(0),0,0); - rtime.end.hour++; - - /* Create calendar and add properties */ - - calendar = icalcomponent_new(ICAL_VCALENDAR_COMPONENT); - - /* Nearly every libical function call has the same general - form. The first part of the name defines the 'class' for the - function, and the first argument will be a pointer to a struct - of that class. So, icalcomponent_ functions will all take - icalcomponent* as their first argument. */ - - /* The next call creates a new proeprty and immediately adds it to the - 'calendar' component. */ - - icalcomponent_add_property( - calendar, - icalproperty_new_version(strdup("2.0")) - ); - - /* Note the use of strdup() in the previous and next call. All - properties constructors for properties with value types of - TEXT will take control of the string you pass into them. Since - the string '2.0' is a static string, we need to duplicate it in - new memory before giving it to the property */ - - /* Here is the short version of the memory rules: - - If the routine name has "new" in it: - Caller owns the returned memory. - If you pass in a string, the routine takes the memory. - - If the routine name has "add" in it: - The routine takes control of the component, property, - parameter or value memory. - - If the routine returns a string ( "get" and "as_ical_string" ) - The library owns the returned memory. - - There are more rules, so refer to the documentation for more - details. - - */ - - icalcomponent_add_property( - calendar, - icalproperty_new_prodid(strdup("-//RDU Software//NONSGML HandCal//EN")) - ); - - /* Add an event */ - - event = icalcomponent_new(ICAL_VEVENT_COMPONENT); - - icalcomponent_add_property( - event, - icalproperty_new_dtstamp(atime) - ); - - /* In the previous call, atime is a struct, and it is passed in by value. - This is how all compound types of values are handled. */ - - icalcomponent_add_property( - event, - icalproperty_new_uid(strdup("guid-1.host1.com")) - ); - - /* add a property that has parameters */ - property = icalproperty_new_organizer(strdup("mailto:mrbig@host.com")); - - icalproperty_add_parameter( - property, - icalparameter_new_role(ICAL_ROLE_CHAIR) - ); - - icalcomponent_add_property(event,property); - - /* In this style of component creation, you need to use an extra - call to add parameters to properties, but the form of this - operation is the same as adding a property to a component */ - - /* add another property that has parameters */ - property = icalproperty_new_attendee(strdup("mailto:employee-A@host.com")); - - icalproperty_add_parameter( - property, - icalparameter_new_role(ICAL_ROLE_REQPARTICIPANT) - ); - - icalproperty_add_parameter( - property, - icalparameter_new_rsvp(1) - ); - - icalproperty_add_parameter( - property, - icalparameter_new_cutype(ICAL_CUTYPE_GROUP) - ); - - icalcomponent_add_property(event,property); - - - /* more properties */ - - icalcomponent_add_property( - event, - icalproperty_new_description(strdup("Project XYZ Review Meeting")) - ); - - icalcomponent_add_property( - event, - icalproperty_new_categories(strdup("MEETING")) - ); - - icalcomponent_add_property( - event, - icalproperty_new_class(strdup("PUBLIC")) - ); - - icalcomponent_add_property( - event, - icalproperty_new_created(atime) - ); - - icalcomponent_add_property( - event, - icalproperty_new_summary(strdup("XYZ Project Review")) - ); - - property = icalproperty_new_dtstart(atime); - - icalproperty_add_parameter( - property, - icalparameter_new_tzid(strdup("US-Eastern")) - ); - - icalcomponent_add_property(event,property); - - - property = icalproperty_new_dtend(atime); - - icalproperty_add_parameter( - property, - icalparameter_new_tzid(strdup("US-Eastern")) - ); - - icalcomponent_add_property(event,property); - - icalcomponent_add_property( - event, - icalproperty_new_location(strdup("1CP Conference Room 4350")) - ); - - icalcomponent_add_component(calendar,event); - - return calendar; -} - - -/* Now, create the same component as in the previous routine, but use -the constructor style. */ - -icalcomponent* create_new_component_with_va_args() -{ - - /* This is a similar set up to the last routine */ - icalcomponent* calendar; - struct icaltimetype atime = icaltime_from_timet( time(0),0,0); - struct icalperiodtype rtime; - - rtime.start = icaltime_from_timet( time(0),0,0); - rtime.end = icaltime_from_timet( time(0),0,0); - rtime.end.hour++; - - /* Some of these routines are the same as those in the previous - routine, but we've also added several 'vanew' routines. These - 'vanew' routines take a list of properties, parameters or - values and add each of them to the parent property or - component. */ - - calendar = - icalcomponent_vanew( - ICAL_VCALENDAR_COMPONENT, - icalproperty_new_version(strdup("2.0")), - icalproperty_new_prodid(strdup("-//RDU Software//NONSGML HandCal//EN")), - icalcomponent_vanew( - ICAL_VEVENT_COMPONENT, - icalproperty_new_dtstamp(atime), - icalproperty_new_uid(strdup("guid-1.host1.com")), - icalproperty_vanew_organizer( - strdup("mailto:mrbig@host.com"), - icalparameter_new_role(ICAL_ROLE_CHAIR), - 0 - ), - icalproperty_vanew_attendee( - strdup("mailto:employee-A@host.com"), - icalparameter_new_role(ICAL_ROLE_REQPARTICIPANT), - icalparameter_new_rsvp(1), - icalparameter_new_cutype(ICAL_CUTYPE_GROUP), - 0 - ), - icalproperty_new_description(strdup("Project XYZ Review Meeting")), - - /* Again, note the use of strdup to give libical - ownership of a static string. */ - - icalproperty_new_categories(strdup("MEETING")), - icalproperty_new_class(strdup("PUBLIC")), - icalproperty_new_created(atime), - icalproperty_new_summary(strdup("XYZ Project Review")), - icalproperty_vanew_dtstart( - atime, - icalparameter_new_tzid(strdup("US-Eastern")), - 0 - ), - icalproperty_vanew_dtend( - atime, - icalparameter_new_tzid(strdup("US-Eastern")), - 0 - ), - icalproperty_new_location(strdup("1CP Conference Room 4350")), - 0 - ), - 0 - ); - - - /* Note that properties with no parameters can use the regular - 'new' constructor, while those with parameters use the 'vanew' - constructor. And, be sure that the last argument in the 'vanew' - call is a zero. Without, your program will probably crash. */ - - return calendar; -} - - -void find_sub_components(icalcomponent* comp) -{ - icalcomponent *c; - - /* The second parameter to icalcomponent_get_first_component - indicates the type of component to search for. This will - iterate through all sub-components */ - for(c = icalcomponent_get_first_component(comp,ICAL_ANY_COMPONENT); - c != 0; - c = icalcomponent_get_next_component(comp,ICAL_ANY_COMPONENT)){ - - do_something(c); - } - - /* This will iterate only though VEVENT sub-components */ - - for(c = icalcomponent_get_first_component(comp,ICAL_VEVENT_COMPONENT); - c != 0; - c = icalcomponent_get_next_component(comp,ICAL_VEVENT_COMPONENT)){ - - do_something(c); - } - -} - -/* Ical components only have one internal iterator, so removing the - object that the iterator points to can cause problems. Here is the - right way to remove components */ - -void remove_vevent_sub_components(icalcomponent* comp){ - - icalcomponent *c, *next; - - for( c = icalcomponent_get_first_component(comp,ICAL_VEVENT_COMPONENT); - c != 0; - c = next) - { - next = icalcomponent_get_next_component(comp,ICAL_VEVENT_COMPONENT); - - icalcomponent_remove_component(comp,c); - - do_something(c); - } - -} - diff --git a/libical/examples/access_properties_and_parameters.c b/libical/examples/access_properties_and_parameters.c deleted file mode 100644 index 176b49a109..0000000000 --- a/libical/examples/access_properties_and_parameters.c +++ /dev/null @@ -1,145 +0,0 @@ -/* access_properties_and_parameters.c */ - -#include "ical.h" -#include - -/* Get a particular parameter out of a component. This routine will - return a list of strings of all attendees who are required. Note - that this routine assumes that the component that we pass in is a - VEVENT. */ - -void get_required_attendees(icalcomponent* event) -{ - icalproperty* p; - icalparameter* parameter; - int c=0; - - assert(event != 0); - assert(icalcomponent_isa(event) == ICAL_VEVENT_COMPONENT); - - /* This loop iterates over all of the ATTENDEE properties in the - event */ - - /* The iteration routines save their state in the event - struct, so the are not thread safe unless you lock the whole - component. */ - - for( - p = icalcomponent_get_first_property(event,ICAL_ATTENDEE_PROPERTY); - p != 0; - p = icalcomponent_get_next_property(event,ICAL_ATTENDEE_PROPERTY) - ) { - - /* Get the first ROLE parameter in the property. There should - only be one, so we won't bother to iterate over them. But, - you can iterate over parameters just like with properties */ - - parameter = icalproperty_get_first_parameter(p,ICAL_ROLE_PARAMETER); - - /* If the parameter indicates the participant is required, get - the attendees name and stick a copy of it into the output - array */ - - if ( icalparameter_get_role(parameter) == ICAL_ROLE_REQPARTICIPANT) - { - /* Remember, the caller does not own this string, so you - should strdup it if you want to change it. */ - char *attendee = icalproperty_get_attendee(p); - } - } - -} - -/* Here is a similar example. If an attendee has a PARTSTAT of - NEEDSACTION or has no PARTSTAT parameter, change it to - TENTATIVE. */ - -void update_attendees(icalcomponent* event) -{ - icalproperty* p; - icalparameter* parameter; - - assert(event != 0); - assert(icalcomponent_isa(event) == ICAL_VEVENT_COMPONENT); - - for( - p = icalcomponent_get_first_property(event,ICAL_ATTENDEE_PROPERTY); - p != 0; - p = icalcomponent_get_next_property(event,ICAL_ATTENDEE_PROPERTY) - ) { - - parameter = icalproperty_get_first_parameter(p,ICAL_PARTSTAT_PARAMETER); - - if (parameter == 0) { - - /* There was no PARTSTAT parameter, so add one. */ - icalproperty_add_parameter( - p, - icalparameter_new_partstat(ICAL_PARTSTAT_TENTATIVE) - ); - - } else if (icalparameter_get_partstat(parameter) == ICAL_PARTSTAT_NEEDSACTION) { - /* Remove the NEEDSACTION parameter and replace it with - TENTATIVE */ - - icalproperty_remove_parameter(p,ICAL_PARTSTAT_PARAMETER); - - /* Don't forget to free it */ - icalparameter_free(parameter); - - /* Add a new one */ - icalproperty_add_parameter( - p, - icalparameter_new_partstat(ICAL_PARTSTAT_TENTATIVE) - ); - } - - } -} - -/* Here are some examples of manipulating properties */ - -void test_properties() -{ - icalproperty *prop; - icalparameter *param; - icalvalue *value; - - icalproperty *clone; - - /* Create a new property */ - prop = icalproperty_vanew_comment( - strdup("Another Comment"), - icalparameter_new_cn("A Common Name 1"), - icalparameter_new_cn("A Common Name 2"), - icalparameter_new_cn("A Common Name 3"), - icalparameter_new_cn("A Common Name 4"), - 0); - - /* Iterate through all of the parameters in the property */ - for(param = icalproperty_get_first_parameter(prop,ICAL_ANY_PROPERTY); - param != 0; - param = icalproperty_get_next_parameter(prop,ICAL_ANY_PROPERTY)) { - - printf("Prop parameter: %s\n",icalparameter_get_cn(param)); - } - - /* Get a string representation of the property's value */ - printf("Prop value: %s\n",icalproperty_get_comment(prop)); - - /* Spit out the property in its RFC 2445 representation */ - printf("As iCAL string:\n %s\n",icalproperty_as_ical_string(prop)); - - /* Make a copy of the property. Caller owns the memory */ - clone = icalproperty_new_clone(prop); - - /* Get a reference to the value within the clone property */ - value = icalproperty_get_value(clone); - - printf("Value: %s",icalvalue_as_ical_string(value)); - - /* Free the original and the clone */ - icalproperty_free(clone); - icalproperty_free(prop); - -} diff --git a/libical/examples/errors.c b/libical/examples/errors.c deleted file mode 100644 index 071a2de816..0000000000 --- a/libical/examples/errors.c +++ /dev/null @@ -1,70 +0,0 @@ -/* errors.c */ - -#include "ical.h" -#include - -void program_errors() -{ - /*Most routines will set icalerrno on errors. This is an - enumeration defined in icalerror.h */ - - icalcomponent *c; - - icalerror_clear_errno(); - - c = icalcomponent_new(ICAL_VEVENT_COMPONENT); - - if (icalerrno != ICAL_NO_ERROR){ - - fprintf(stderr,"Horrible libical error: %s\n", - icalerror_strerror(icalerrno)); - - } - -} - -void component_errors(icalcomponent *comp) -{ - int errors; - icalproperty *p; - - /* presume that we just got this component from the parser */ - - errors = icalcomponent_count_errors(comp); - - printf("This component has %d parsing errors\n"); - - /* Print out all of the parsing errors. This is not strictly - correct, because it does not descend into any sub-components, - as icalcomponent_count_errors() does. */ - - for(p = icalcomponent_get_first_property(comp,ICAL_XLICERROR_PROPERTY); - p != 0; - p = icalcomponent_get_next_property(comp,ICAL_XLICERROR_PROPERTY)) - { - - printf("-- The error is %s:\n",icalproperty_get_xlicerror(p)); - } - - - - /* Check the component for iTIP compilance, and add more - X-LIC-ERROR properties if it is non-compilant. */ - icalrestriction_check(comp); - - - /* Count the new errors. */ - if(errors != icalcomponent_count_errors(comp)){ - printf(" -- The component also has iTIP restriction errors \n"); - } - - /* Since there are iTIP restriction errors, it may be impossible - to process this component as an iTIP request. In this case, the - X-LIC-ERROR proeprties should be expressed as REQUEST-STATUS - properties in the reply. This following routine makes this - conversion */ - - - icalcomponent_convert_errors(comp); - -} diff --git a/libical/examples/main.c b/libical/examples/main.c deleted file mode 100644 index 88d6621365..0000000000 --- a/libical/examples/main.c +++ /dev/null @@ -1,9 +0,0 @@ -/* This is just to make the code in the example directory link properly. */ - -main() -{ -} - - -int do_something(){ -} diff --git a/libical/examples/parse_text.c b/libical/examples/parse_text.c deleted file mode 100644 index 2761e6f951..0000000000 --- a/libical/examples/parse_text.c +++ /dev/null @@ -1,73 +0,0 @@ -/* parse_text.c - - */ -#include -#include -#include -#include -#include "ical.h" - -#include - -/* The icalparser_get_line routine will create a single *content* line -out of one or more input lines. The content line is all of the -properties and values for a single property, and it can span several -input lines. So, icalparser_get_line will need to be able to get more -data on its own. Read_string is a routine that does this. You can -write your own version of read stream to get data from other types of -files, sockets, etc. */ - -char* read_stream(char *s, size_t size, void *d) -{ - char *c = fgets(s,size, (FILE*)d); - - return c; - -} - -int parse_text(int argc, char* argv[]) -{ - - int lineno = 0; - char* line; - FILE* stream; - icalcomponent *c; - - /* Create a new parser object */ - icalparser *parser = icalparser_new(); - - stream = fopen(argv[1],"r"); - - assert(stream != 0); - - /* Tell the parser what input routie it should use. */ - icalparser_set_gen_data(parser,stream); - - do{ - - /* Get a single content line by making one or more calls to - read_stream()*/ - line = icalparser_get_line(parser,read_stream); - - /* Now, add that line into the parser object. If that line - completes a component, c will be non-zero */ - c = icalparser_add_line(parser,line); - - - if (c != 0){ - printf("%s",icalcomponent_as_ical_string(c)); - - /* Tell the parser that the caller will take ownership of - this component */ - icalparser_claim(parser); - - printf("\n---------------\n"); - - icalcomponent_free(c); - } - - } while ( line != 0); - - - icalparser_free(parser); -} diff --git a/libical/install-sh b/libical/install-sh deleted file mode 100755 index 0ff4b6a08e..0000000000 --- a/libical/install-sh +++ /dev/null @@ -1,119 +0,0 @@ -#!/bin/sh - -# -# install - install a program, script, or datafile -# This comes from X11R5; it is not part of GNU. -# -# $XConsortium: install.sh,v 1.2 89/12/18 14:47:22 jim Exp $ -# -# This script is compatible with the BSD install script, but was written -# from scratch. -# - - -# set DOITPROG to echo to test this script - -# Don't use :- since 4.3BSD and earlier shells don't like it. -doit="${DOITPROG-}" - - -# put in absolute paths if you don't have them in your path; or use env. vars. - -mvprog="${MVPROG-mv}" -cpprog="${CPPROG-cp}" -chmodprog="${CHMODPROG-chmod}" -chownprog="${CHOWNPROG-chown}" -chgrpprog="${CHGRPPROG-chgrp}" -stripprog="${STRIPPROG-strip}" -rmprog="${RMPROG-rm}" - -instcmd="$mvprog" -chmodcmd="" -chowncmd="" -chgrpcmd="" -stripcmd="" -rmcmd="$rmprog -f" -mvcmd="$mvprog" -src="" -dst="" - -while [ x"$1" != x ]; do - case $1 in - -c) instcmd="$cpprog" - shift - continue;; - - -m) chmodcmd="$chmodprog $2" - shift - shift - continue;; - - -o) chowncmd="$chownprog $2" - shift - shift - continue;; - - -g) chgrpcmd="$chgrpprog $2" - shift - shift - continue;; - - -s) stripcmd="$stripprog" - shift - continue;; - - *) if [ x"$src" = x ] - then - src=$1 - else - dst=$1 - fi - shift - continue;; - esac -done - -if [ x"$src" = x ] -then - echo "install: no input file specified" - exit 1 -fi - -if [ x"$dst" = x ] -then - echo "install: no destination specified" - exit 1 -fi - - -# If destination is a directory, append the input filename; if your system -# does not like double slashes in filenames, you may need to add some logic - -if [ -d $dst ] -then - dst="$dst"/`basename $src` -fi - -# Make a temp file name in the proper directory. - -dstdir=`dirname $dst` -dsttmp=$dstdir/#inst.$$# - -# Move or copy the file name to the temp name - -$doit $instcmd $src $dsttmp - -# and set any options; do chmod last to preserve setuid bits - -if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; fi -if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; fi -if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; fi -if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; fi - -# Now rename the file to the real destination. - -$doit $rmcmd $dst -$doit $mvcmd $dsttmp $dst - - -exit 0 diff --git a/libical/missing b/libical/missing deleted file mode 100755 index 7789652e87..0000000000 --- a/libical/missing +++ /dev/null @@ -1,190 +0,0 @@ -#! /bin/sh -# Common stub for a few missing GNU programs while installing. -# Copyright (C) 1996, 1997 Free Software Foundation, Inc. -# Franc,ois Pinard , 1996. - -# 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 2, 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. - -if test $# -eq 0; then - echo 1>&2 "Try \`$0 --help' for more information" - exit 1 -fi - -case "$1" in - - -h|--h|--he|--hel|--help) - echo "\ -$0 [OPTION]... PROGRAM [ARGUMENT]... - -Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an -error status if there is no known handling for PROGRAM. - -Options: - -h, --help display this help and exit - -v, --version output version information and exit - -Supported PROGRAM values: - aclocal touch file \`aclocal.m4' - autoconf touch file \`configure' - autoheader touch file \`config.h.in' - automake touch all \`Makefile.in' files - bison create \`y.tab.[ch]', if possible, from existing .[ch] - flex create \`lex.yy.c', if possible, from existing .c - lex create \`lex.yy.c', if possible, from existing .c - makeinfo touch the output file - yacc create \`y.tab.[ch]', if possible, from existing .[ch]" - ;; - - -v|--v|--ve|--ver|--vers|--versi|--versio|--version) - echo "missing - GNU libit 0.0" - ;; - - -*) - echo 1>&2 "$0: Unknown \`$1' option" - echo 1>&2 "Try \`$0 --help' for more information" - exit 1 - ;; - - aclocal) - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified \`acinclude.m4' or \`configure.in'. You might want - to install the \`Automake' and \`Perl' packages. Grab them from - any GNU archive site." - touch aclocal.m4 - ;; - - autoconf) - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified \`configure.in'. You might want to install the - \`Autoconf' and \`GNU m4' packages. Grab them from any GNU - archive site." - touch configure - ;; - - autoheader) - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified \`acconfig.h' or \`configure.in'. You might want - to install the \`Autoconf' and \`GNU m4' packages. Grab them - from any GNU archive site." - files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' configure.in` - test -z "$files" && files="config.h" - touch_files= - for f in $files; do - case "$f" in - *:*) touch_files="$touch_files "`echo "$f" | - sed -e 's/^[^:]*://' -e 's/:.*//'`;; - *) touch_files="$touch_files $f.in";; - esac - done - touch $touch_files - ;; - - automake) - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified \`Makefile.am', \`acinclude.m4' or \`configure.in'. - You might want to install the \`Automake' and \`Perl' packages. - Grab them from any GNU archive site." - find . -type f -name Makefile.am -print | - sed 's/\.am$/.in/' | - while read f; do touch "$f"; done - ;; - - bison|yacc) - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified a \`.y' file. You may need the \`Bison' package - in order for those modifications to take effect. You can get - \`Bison' from any GNU archive site." - rm -f y.tab.c y.tab.h - if [ $# -ne 1 ]; then - eval LASTARG="\${$#}" - case "$LASTARG" in - *.y) - SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` - if [ -f "$SRCFILE" ]; then - cp "$SRCFILE" y.tab.c - fi - SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` - if [ -f "$SRCFILE" ]; then - cp "$SRCFILE" y.tab.h - fi - ;; - esac - fi - if [ ! -f y.tab.h ]; then - echo >y.tab.h - fi - if [ ! -f y.tab.c ]; then - echo 'main() { return 0; }' >y.tab.c - fi - ;; - - lex|flex) - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified a \`.l' file. You may need the \`Flex' package - in order for those modifications to take effect. You can get - \`Flex' from any GNU archive site." - rm -f lex.yy.c - if [ $# -ne 1 ]; then - eval LASTARG="\${$#}" - case "$LASTARG" in - *.l) - SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` - if [ -f "$SRCFILE" ]; then - cp "$SRCFILE" lex.yy.c - fi - ;; - esac - fi - if [ ! -f lex.yy.c ]; then - echo 'main() { return 0; }' >lex.yy.c - fi - ;; - - makeinfo) - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified a \`.texi' or \`.texinfo' file, or any other file - indirectly affecting the aspect of the manual. The spurious - call might also be the consequence of using a buggy \`make' (AIX, - DU, IRIX). You might want to install the \`Texinfo' package or - the \`GNU make' package. Grab either from any GNU archive site." - file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` - if test -z "$file"; then - file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` - file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` - fi - touch $file - ;; - - *) - echo 1>&2 "\ -WARNING: \`$1' is needed, and you do not seem to have it handy on your - system. You might have modified some files without having the - proper tools for further handling them. Check the \`README' file, - it often tells you about the needed prerequirements for installing - this package. You may also peek at any GNU archive site, in case - some other package would contain this missing \`$1' program." - exit 1 - ;; -esac - -exit 0 diff --git a/libical/mkinstalldirs b/libical/mkinstalldirs deleted file mode 100644 index e61d682697..0000000000 --- a/libical/mkinstalldirs +++ /dev/null @@ -1,40 +0,0 @@ -#! /bin/sh -# mkinstalldirs --- make directory hierarchy -# Author: Noah Friedman -# Created: 1993-05-16 -# Public domain - -# $Id: mkinstalldirs,v 1.4 2000/06/06 22:48:06 alves Exp $ - -errstatus=0 - -for file -do - set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` - shift - - pathcomp= - for d - do - pathcomp="$pathcomp$d" - case "$pathcomp" in - -* ) pathcomp=./$pathcomp ;; - esac - - if test ! -d "$pathcomp"; then - echo "mkdir $pathcomp" 1>&2 - - mkdir "$pathcomp" || lasterr=$? - - if test ! -d "$pathcomp"; then - errstatus=$lasterr - fi - fi - - pathcomp="$pathcomp/" - done -done - -exit $errstatus - -# mkinstalldirs ends here \ No newline at end of file diff --git a/libical/scripts/.cvsignore b/libical/scripts/.cvsignore deleted file mode 100644 index b840c21800..0000000000 --- a/libical/scripts/.cvsignore +++ /dev/null @@ -1,2 +0,0 @@ -Makefile.in -Makefile \ No newline at end of file diff --git a/libical/scripts/Makefile.am b/libical/scripts/Makefile.am deleted file mode 100644 index fd1b053cb6..0000000000 --- a/libical/scripts/Makefile.am +++ /dev/null @@ -1,8 +0,0 @@ -EXTRA_DIST = \ -mkderivedcomponents.pl \ -mkderivedparameters.pl \ -mkderivedproperties.pl \ -mkderivedvalues.pl \ -mkparameterrestrictions.pl \ -mkrestrictionrecords.pl \ -mkrestrictiontable.pl diff --git a/libical/scripts/mkderivedcomponents.pl b/libical/scripts/mkderivedcomponents.pl deleted file mode 100755 index ac4e472250..0000000000 --- a/libical/scripts/mkderivedcomponents.pl +++ /dev/null @@ -1,170 +0,0 @@ -#!/usr/local/bin/perl - -use Getopt::Std; -getopts('chspi:'); - - -# ARG 0 is components.txt -open(PV,"$ARGV[0]") || die "Can't open components file $ARGV[0]:$!"; - -my @components; - -while (){ - - s/#.*//; - - chop; - - push(@components,$_); - -} - -close PV; - -# Write the file inline by copying everything before a demarcation -# line, and putting the generated data after the demarcation - -if ($opt_i) { - - open(IN,$opt_i) || die "Can't open input file \"$opt_i\""; - - while(){ - - if (/Do not edit/){ - last; - } - - print; - - } - - if($opt_i){ - print "# Everything below this line is machine generated. Do not edit. \n"; - } else { - print "/* Everything below this line is machine generated. Do not edit. */\n"; - } - -} - -if ($opt_c or $opt_h and !$opt_i){ - -print < /* for va_arg functions */ - -EOM - -} - -if ($opt_p and !$opt_i){ - -print <1,RANGE=>1,RSVP=>1,XLICERRORTYPE=>1,XLICCOMPARETYPE=>1); - -# Usually, open param-c-types.txt -open(F,"$ARGV[0]") || die "Can't open C parameter types file $ARGV[0]:$!"; - -# Write the file inline by copying everything before a demarcation -# line, and putting the generated data after the demarcation - -if ($opt_i) { - - open(IN,$opt_i) || die "Can't open input file $opt_i"; - - while(){ - - if (/Do not edit/){ - last; - } - - print; - - } - - if($opt_p){ - print "# Everything below this line is machine generated. Do not edit. \n"; - } else { - print "/* Everything below this line is machine generated. Do not edit. */\n"; - } - -} - - - -if (($opt_c or $opt_h) and !$opt_i) { - -print <){ - - chop; - my ($param,$type) = split(/\s{2,}/,$_); - - my $ucf = join("",map {ucfirst(lc($_));} split(/-/,$param)); - - my $lc = lc($ucf); - my $uc = uc($lc); - - my $lctype = lc($type); - - - my $charorenum; - my $set_code; - my $pointer_check; - my $new_pointer_check; - my $new_pointer_check_v; - my $xrange; - - if ($type=~/char/){ - $new_pointer_check = "icalerror_check_arg_rz( (v!=0),\"v\");"; - $new_pointer_check_v = "icalerror_check_arg_rv( (v!=0),\"v\");"; - } - - - if ($type=~/char/ ) { - - $charorenum = " icalerror_check_arg_rz( (param!=0), \"param\");\n return ((struct icalparameter_impl*)param)->string;"; - - $pointer_check = "icalerror_check_arg_rz( (v!=0),\"v\");"; - - $set_code = "((struct icalparameter_impl*)param)->string = strdup(v);" - - } else { - - $xrange =" if ( ((struct icalparameter_impl*)param)->string != 0){\n return ICAL_${uc}_XNAME;\n }\n" if !exists $no_xname{$uc}; - - $charorenum=<data.v_${lc}; -EOM - - $pointer_check = "icalerror_check_arg( (v!=0),\"v\");"; - - $set_code = "((struct icalparameter_impl*)param)->data.v_${lc} = v;"; - - $print_code = "switch (impl->data.v_${lc}) {\ncase ICAL_${uc}_: {\n}\ncase ICAL_${uc}_XNAME: /* Fall Through */\n}\n"; - - } - - - - if ($opt_c) { - - print <[0] = \$p; - - return \$self; -} - -sub get -{ - my \$self = shift; - my \$impl = \$self->_impl(); - - return Net::ICal::icalparameter_as_ical_string(\$impl); - -} - -sub set -{ - # This is hard to implement, so I've punted for now. - die "Set is not implemented"; -} - -EOM - -} - -} - -if ($opt_h){ - -print <){ - - chop; - my @v = split(/\s+/,$_); - - my $prop = shift @v; - my $value = shift @v; - my $comment = join(" ",@v); - - $propmap{$prop} = $value; -} - -close PV; - -# ARG 1 is value-c-types.txt -open(F,"$ARGV[1]") || die "Can't open C parameter types file $ARGV[1 ]:$!"; - -while (){ - - chop; - my @v = split(/\t+/,$_); - - my $value = shift @v; - my $type = shift @v; - my $comment = join(" ",@v); - - $valuemap{$value} = $type; - -} - -close F; - -# Write the file inline by copying everything before a demarcation -# line, and putting the generated data after the demarcation - -if ($opt_i) { - - open(IN,$opt_i) || die "Can't open input file $opt_i"; - - while(){ - - if (/Do not edit/){ - last; - } - - print; - - } - - if($opt_p){ - print "# Everything below this line is machine generated. Do not edit. \n"; - } else { - print "/* Everything below this line is machine generated. Do not edit. */\n"; - } - -} - - -if ( ($opt_h or $opt_s) and !$opt_i ){ - -print <_add_elements(\\\@_); - - return bless \$self, \$package; -} - -sub set_value -{ - my \$self = shift; - my \$v = shift; - - my \$impl = \$self->_impl(); - - - if ( ref \$v && Net::ICal::icalvalue_isa_value(\$v->_impl())){ - Net::ICal::icalproperty_set_value(\$impl,\$v->_impl); - } else { - my \$value = Net::ICal::icalvalue_new_from_string(\$Net::ICal::ICAL_${ucvalue}_VALUE,\$v); - die if !\$impl; - Net::ICal::icalproperty_set_value(\$impl,\$value) unless !\$value; - } - -} - -sub get_value -{ - my \$self = shift; - my \$impl = \$self->_impl(); - - if (defined \$impl){ - my \$value = Net::ICal::icalproperty_get_value(\$impl); - return "" if !\$value; - return Net::ICal::icalvalue_as_ical_string(\$value); - } else { - return ""; - } -} - -EOM - -} elsif ($opt_m) { # Generate a map - -print "\'${uc}\' => \'Net::ICal::Property::${ucf},\'\n"; - -} - -} # This brace terminates the main loop - - - -# Add things to the end of the output. - -if ($opt_p) -{ - print "1;\n"; -} - -if ($opt_h){ - -print < generate c code file -# h-> generate header file -# s -> generate switch statement - -# Open with value-c-types.txt - - -open(F,"$ARGV[0]") || die "Can't open values data file $ARGV[0]:$!"; - - -# Write the file inline by copying everything before a demarcation -# line, and putting the generated data after the demarcation - -if ($opt_i) { - - open(IN,$opt_i) || die "Can't open input file $opt_i"; - - while(){ - - if (/Do not edit/){ - last; - } - - print; - - } - - if($opt_p){ - print "# Everything below this line is machine generated. Do not edit. \n"; - } else { - print "/* Everything below this line is machine generated. Do not edit. */\n"; - } - -} - - -if (($opt_c || $opt_h) and !$opt_i) { -print < 'int', - CALADDRESS=>'string', - DATE=>'time', - DATETIME=>'time', - DATETIMEDATE=>'time', - DATETIMEPERIOD=>'period', - DURATION=>'duration', - INTEGER=>'int', - TEXT=>'string', - URI=>'string', - UTCOFFSET=>'int', - QUERY=>'string', - BINARY=>'string' - ); - -while() -{ - - chop; - my @v = split(/\t+/,$_); - - my $value = shift @v; - my $type = shift @v; - my $comment = join(" ",@v); - - my $ucf = join("",map {ucfirst(lc($_));} split(/-/,$value)); - - my $lc = lc($ucf); - my $uc = uc($lc); - - my $pointer_check = "icalerror_check_arg_rz( (v!=0),\"v\");\n" if $type =~ /\*/; - my $pointer_check_rv = "icalerror_check_arg_rv( (v!=0),\"v\");\n" if $type =~ /\*/; - - my $assign; - - if ($type =~ /char/){ - $assign = "strdup(v);\n\n if (impl->data.v_string == 0){\n errno = ENOMEM;\n }\n"; - } else { - $assign = "v;"; - } - - my $union_data; - - if (exists $union_map{$uc} ){ - $union_data=$union_map{$uc}; - } else { - $union_data = $lc; - } - - if ($opt_c) { -print <data.v_${union_data}!=0) {free(impl->data.v_${union_data});}\n"; -} - -print <data.v_${union_data} = $assign -} - -$type -icalvalue_get_${lc}(icalvalue* value) -{ - icalerror_check_arg( (value!=0),"value"); - icalerror_check_value_type(value, ICAL_${uc}_VALUE); - - return ((struct icalvalue_impl*)value)->data.v_${union_data}; -} - -EOM - -} elsif($opt_h) { - - print <data.v_${union_data} - - str = strdup(temp); - - return str; -} - -EOM - -} -} elsif ($opt_p) { # Generate perl code - -print <[0] = \$p; - - return \$self; -} - -sub set -{ - my \$self = shift; - my \$v = shift; - - my \$impl = \$self->_impl(); - - if (\$v) { - my \$new_value = Net::ICal::icalvalue_new_from_string(\$Net::ICal::ICAL_${uc}_VALUE,\$v); - if (\$new_value){ - Net::ICal::icalvalue_free(\$self->[0]); - \$self->[0] = \$new_value; - } - - } - -} - -sub get -{ - my \$self = shift; - my \$impl = \$self->[0]; - - if (defined \$impl){ - - return Net::ICal::icalvalue_as_ical_string(\$impl); - - } -} - -EOM -} - - - -} - -if ($opt_p) -{ - print "1;\n"; -} - - -if ($opt_h){ - -print < - - -# usually open params-in-prop.txt -open(F,"$ARGV[0]") || die "Can't open restriction file $ARGV[0]:$!"; - -print <) -{ - chop; - - # split line by whitespace - my @v = split(/\s+/,$_); - # property is first item on line - my $prop = shift @v; - my $prop_name = $prop; - if (substr($prop,0,1) eq "X") { $prop = "X"; } - $prop = join("",split(/-/,$prop)); - -print < - -# usually open restrictions.csv -open(F,"$ARGV[0]") || die "Can't open restriction file $ARGV[0]:$!"; - -print <) -{ - chop; - - # split line at commas - my ($method,$component,$property,$subcomponent,$restriction)=split(/\,/,$_); - - # - #put in code to generate comments here! - # - if ($method ne $last_method) - { - $need_header = 1; - $last_method = $method; - } - if ($component ne $last_component) - { - $need_header = 1; - $last_component = $component; - } - - if ($need_header) - { - print "\n\t/* METHOD: ${method}, COMPONENT: ${component} */\n"; - $need_header = 0; - } - - foreach $item ($component,$property,$subcomponent,$restriction) - { - # handle special cases. - if ($item eq "NONE") - { $item = "NO"; } - else { if (substr($item,0,1) eq "X") - { $item = "X"; }} - - # strip out dashes - $item = join("",split(/-/,$item)); - } - # strip leading V from component names - $component =~ s/^(V?)(\w+?)((SAVINGS)?)((TIME)?)$/$2/; - $subcomponent =~ s/^V(\w+)/$1/; - - print "\t\{ICAL_METHOD_${method},ICAL_${component}_COMPONENT,"; - print "ICAL_${property}_PROPERTY,ICAL_${subcomponent}_COMPONENT,"; - print "ICAL_RESTRICTION_${restriction}\},\n"; - -} - -print <){ - - if (/Do not edit/){ - last; - } - - print; - - } - - print "/* Everything below this line is machine generated. Do not edit. */\n"; - - - close IN; -} - -# First build the property restriction table -print "icalrestriction_property_record icalrestriction_property_records[] = {\n"; - -while() -{ - - chop; - - s/\#.*$//; - - my($method,$targetcomp,$prop,$subcomp,$restr,$sub) = split(/,/,$_); - - next if !$method; - - if(!$sub) { - $sub = "0"; - } - - if($prop ne "NONE"){ - print(" \{ICAL_METHOD_${method},ICAL_${targetcomp}_COMPONENT,ICAL_${prop}_PROPERTY,ICAL_RESTRICTION_${restr},$sub\},\n"); - } - -} - - -# Print the terminating line -print " {ICAL_METHOD_NONE,ICAL_NO_COMPONENT,ICAL_NO_PROPERTY,ICAL_RESTRICTION_NONE}\n"; - -print "};\n"; - -print "icalrestriction_component_record icalrestriction_component_records[] = {\n"; - - -# Go back through the entire file and build the component restriction table -close(F); -open(F,"$ARGV[0]") || die "Can't open restriction data file $ARGV[0]:$!"; - -while() -{ - - chop; - - s/\#.*$//; - - my($method,$targetcomp,$prop,$subcomp,$restr,$sub) = split(/,/,$_); - - next if !$method; - - if(!$sub) { - $sub = "0"; - } - - - if($subcomp ne "NONE"){ - print(" \{ICAL_METHOD_${method},ICAL_${targetcomp}_COMPONENT,ICAL_${subcomp}_COMPONENT,ICAL_RESTRICTION_${restr},$sub\},\n"); - } - -} - -# print the terminating line -print " {ICAL_METHOD_NONE,ICAL_NO_COMPONENT,ICAL_NO_COMPONENT,ICAL_RESTRICTION_NONE}\n"; -print "};\n"; diff --git a/libical/src/.cvsignore b/libical/src/.cvsignore deleted file mode 100644 index c038ed7864..0000000000 --- a/libical/src/.cvsignore +++ /dev/null @@ -1,2 +0,0 @@ -Makefile -Makefile.in \ No newline at end of file diff --git a/libical/src/Makefile.am b/libical/src/Makefile.am deleted file mode 100644 index 4edf2a1d14..0000000000 --- a/libical/src/Makefile.am +++ /dev/null @@ -1 +0,0 @@ -SUBDIRS = libical libicalss libicalvcal test diff --git a/libical/src/libical/.cvsignore b/libical/src/libical/.cvsignore deleted file mode 100644 index 708af857d7..0000000000 --- a/libical/src/libical/.cvsignore +++ /dev/null @@ -1,14 +0,0 @@ -Makefile -Makefile.in -icalitipy.c -icalitipy.h -icalitipl.c -icallexer.c -icalyacc.c -icalyacc.h -y.output -*.lo -*.la -.libs -.deps -icalversion.h diff --git a/libical/src/libical/Makefile.am b/libical/src/libical/Makefile.am deleted file mode 100644 index 35a08effc7..0000000000 --- a/libical/src/libical/Makefile.am +++ /dev/null @@ -1,106 +0,0 @@ - -#AUTOMAKE_OPTIONS = no-dependencies - -#noinst_LTLIBRARIES = libical.la -lib_LIBRARIES = libical.a - -YFLAGS =-d -v -t - -libical_a_SOURCES = \ - ical.h \ - icalcomponent.c \ - icalcomponent.h \ - icalenums.c \ - icalenums.h \ - icalerror.c \ - icalerror.h \ - icalyacc.y \ - icallexer.l \ - icalmemory.c \ - icalmemory.h \ - icalparameter.c \ - icalparameter.h \ - icalparser.c \ - icalparser.h \ - icalproperty.c \ - icalproperty.h \ - icalrestriction.c \ - icalrestriction.h \ - icaltypes.c \ - icaltypes.h \ - icalvalue.c \ - icalvalue.h \ - icalrecur.c \ - icalrecur.h \ - icaltime.h \ - icaltime.c \ - pvl.c \ - pvl.h \ - sspm.c \ - sspm.h \ - icalmime.c \ - icalmime.h - -include_HEADERS=\ - ical.h \ - icalcomponent.h \ - icalenums.h \ - icalerror.h \ - icalmemory.h \ - icalparameter.h \ - icalparser.h \ - icalproperty.h \ - icalrestriction.h \ - icaltypes.h \ - icalvalue.h \ - icalrecur.h \ - icalversion.h \ - icaltime.h \ - pvl.h \ - sspm.h \ - icalmime.h - - -# -# static convenience library for use in conduits -# - -noinst_LTLIBRARIES = libical-static.la -libical_static_la_SOURCES = $(libical_a_SOURCES) -libical_static_la_LDFLAGS = --all-static - -EXTRA_DIST = icallexer.c icalyacc.c icalyacc.h - -CONFIG_CLEAN_FILES = y.output *~ - -DESIGNDATA = ../../design-data -ICALSCRIPTS = ../../scripts -derived: icalproperty icalparameter icalvalue icalrestriction - -icalproperty: - $(ICALSCRIPTS)/mkderivedproperties.pl -i icalproperty.h -h $(DESIGNDATA)/prop-to-value.txt ${DESIGNDATA}/value-c-types.txt > icalproperty.newh - mv icalproperty.newh icalproperty.h - - $(ICALSCRIPTS)/mkderivedproperties.pl -i icalproperty.c -c $(DESIGNDATA)/prop-to-value.txt ${DESIGNDATA}/value-c-types.txt > icalproperty.newc - mv icalproperty.newc icalproperty.c - - -icalparameter: - $(ICALSCRIPTS)/mkderivedparameters.pl -i icalparameter.h -h $(DESIGNDATA)/param-c-types.txt > icalparameter.newh - mv icalparameter.newh icalparameter.h - - $(ICALSCRIPTS)/mkderivedparameters.pl -i icalparameter.c -c $(DESIGNDATA)/param-c-types.txt > icalparameter.newc - mv icalparameter.newc icalparameter.c - -icalvalue: - $(ICALSCRIPTS)/mkderivedvalues.pl -i icalvalue.h -h $(DESIGNDATA)/value-c-types.txt > icalvalue.newh - mv icalvalue.newh icalvalue.h - - $(ICALSCRIPTS)/mkderivedvalues.pl -i icalvalue.c -c $(DESIGNDATA)/value-c-types.txt > icalvalue.newc - mv icalvalue.newc icalvalue.c - -icalrestriction: - $(ICALSCRIPTS)/mkrestrictiontable.pl -i icalrestriction.c $(DESIGNDATA)/restrictions.csv > icalrestriction.newc - mv icalrestriction.newc icalrestriction.c - - diff --git a/libical/src/libical/ical.h b/libical/src/libical/ical.h deleted file mode 100644 index 05e7ca82bc..0000000000 --- a/libical/src/libical/ical.h +++ /dev/null @@ -1,50 +0,0 @@ -/* -*- Mode: C -*- */ -/*====================================================================== - FILE: ical.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 ical.h - -======================================================================*/ - -#ifndef ICAL_H -#define ICAL_H - -#include "icalversion.h" -#include "icalenums.h" -#include "icalvalue.h" -#include "icalparameter.h" -#include "icalproperty.h" -#include "icalcomponent.h" -#include "icaltypes.h" -#include "icalparser.h" -#include "icalmemory.h" -#include "icalerror.h" -#include "icalrestriction.h" -#include "icaltime.h" -#include "icalrecur.h" - -#ifdef DMALLOC -#include "dmalloc.h" -#endif - - - -#endif /* !ICAL_H */ - - - diff --git a/libical/src/libical/icalcomponent.c b/libical/src/libical/icalcomponent.c deleted file mode 100644 index 65d1d55e36..0000000000 --- a/libical/src/libical/icalcomponent.c +++ /dev/null @@ -1,925 +0,0 @@ -/*====================================================================== - 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 "ical.h" -#include "pvl.h" /* "Pointer-to-void list" */ -#include /* for malloc */ -#include /* for va_list, etc */ -#include -#include "icalerror.h" -#include -#include /* for fprintf */ -#include "icalmemory.h" -#include "icalenums.h" - -#define MAX_TMP 1024 - - -/* icalproperty functions that only components get to use */ -void icalproperty_set_parent(icalproperty* property, - icalcomponent* component); - -icalcomponent* icalproperty_get_parent(icalproperty* property); - - - -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; -}; - -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) -{ - icalcomponent_kind kind; - - icalerror_check_arg_rz( (str!=0), "str"); - - kind = icalenum_string_to_component_kind(str); - - if (kind == ICAL_NO_COMPONENT){ - return 0; - } - - return icalcomponent_new(kind); -} - -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_rv( (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); - - 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; - 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_componenet 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; -} - - -icalproperty** -icalcomponent_get_component (icalcomponent* component, icalproperty_kind kind); - - -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}; - -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; - } - - 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); -} diff --git a/libical/src/libical/icalcomponent.h b/libical/src/libical/icalcomponent.h deleted file mode 100644 index b0d1e33630..0000000000 --- a/libical/src/libical/icalcomponent.h +++ /dev/null @@ -1,152 +0,0 @@ -/* -*- 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 "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); - -/* Return a null-terminated array of icalproperties*/ - -icalproperty** icalcomponent_get_properties(icalcomponent* component, - icalproperty_kind kind); - - -/* - * Working with components - */ - - -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. - -The internal iterators are deprecated. */ - -/* Using external iterators */ -icalcompiter icalcomponent_begin_component(icalcomponent* component, - icalcomponent_kind kind); - -icalcompiter icalcomponent_end_component(icalcomponent* component, - icalcomponent_kind kind); - -/* 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); - - - -/* Return a null-terminated array of icalproperties*/ -icalproperty** icalcomponent_get_component(icalcomponent* component, - icalproperty_kind kind); - -/* 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. You don't see these... */ -icalcomponent* icalcomponent_get_parent(icalcomponent* component); -void icalcomponent_set_parent(icalcomponent* component, - icalcomponent* parent); - - - -/* External component iterator */ -icalcomponent* icalcompiter_next(icalcompiter* i); -icalcomponent* icalcompiter_prior(icalcompiter* i); -icalcomponent* icalcompiter_deref(icalcompiter* i); - - -#endif /* !ICALCOMPONENT_H */ - - - diff --git a/libical/src/libical/icalenums.c b/libical/src/libical/icalenums.c deleted file mode 100644 index 50d23c8d41..0000000000 --- a/libical/src/libical/icalenums.c +++ /dev/null @@ -1,618 +0,0 @@ -/* -*- 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" - -struct icalproperty_kind_map { - icalproperty_kind kind; - char *name; -}; - -static struct icalproperty_kind_map property_map[] = -{ - { ICAL_ACTION_PROPERTY, "ACTION"}, - { ICAL_ATTACH_PROPERTY, "ATTACH"}, - { ICAL_ATTENDEE_PROPERTY, "ATTENDEE"}, - { ICAL_CALSCALE_PROPERTY, "CALSCALE"}, - { ICAL_CATEGORIES_PROPERTY, "CATEGORIES"}, - { ICAL_CLASS_PROPERTY, "CLASS"}, - { ICAL_COMMENT_PROPERTY, "COMMENT"}, - { ICAL_COMPLETED_PROPERTY, "COMPLETED"}, - { ICAL_CONTACT_PROPERTY, "CONTACT"}, - { ICAL_CREATED_PROPERTY, "CREATED"}, - { ICAL_DESCRIPTION_PROPERTY, "DESCRIPTION"}, - { ICAL_DTEND_PROPERTY, "DTEND"}, - { ICAL_DTSTAMP_PROPERTY, "DTSTAMP"}, - { ICAL_DTSTART_PROPERTY, "DTSTART"}, - { ICAL_DUE_PROPERTY, "DUE"}, - { ICAL_DURATION_PROPERTY, "DURATION"}, - { ICAL_EXDATE_PROPERTY, "EXDATE"}, - { ICAL_EXRULE_PROPERTY, "EXRULE"}, - { ICAL_FREEBUSY_PROPERTY, "FREEBUSY"}, - { ICAL_GEO_PROPERTY, "GEO"}, - { ICAL_LASTMODIFIED_PROPERTY, "LAST-MODIFIED"}, - { ICAL_LOCATION_PROPERTY, "LOCATION"}, - { ICAL_METHOD_PROPERTY, "METHOD"}, - { ICAL_ORGANIZER_PROPERTY, "ORGANIZER"}, - { ICAL_PERCENTCOMPLETE_PROPERTY, "PERCENT-COMPLETE"}, - { ICAL_PRIORITY_PROPERTY, "PRIORITY"}, - { ICAL_PRODID_PROPERTY, "PRODID"}, - { ICAL_RDATE_PROPERTY, "RDATE"}, - { ICAL_RECURRENCEID_PROPERTY, "RECURRENCE-ID"}, - { ICAL_RELATEDTO_PROPERTY, "RELATED-TO"}, - { ICAL_REPEAT_PROPERTY, "REPEAT"}, - { ICAL_REQUESTSTATUS_PROPERTY, "REQUEST-STATUS"}, - { ICAL_RESOURCES_PROPERTY, "RESOURCES"}, - { ICAL_RRULE_PROPERTY, "RRULE"}, - { ICAL_SEQUENCE_PROPERTY, "SEQUENCE"}, - { ICAL_STATUS_PROPERTY, "STATUS"}, - { ICAL_SUMMARY_PROPERTY, "SUMMARY"}, - { ICAL_TRANSP_PROPERTY, "TRANSP"}, - { ICAL_TRIGGER_PROPERTY, "TRIGGER"}, - { ICAL_TZID_PROPERTY, "TZID"}, - { ICAL_TZNAME_PROPERTY, "TZNAME"}, - { ICAL_TZOFFSETFROM_PROPERTY, "TZOFFSETFROM"}, - { ICAL_TZOFFSETTO_PROPERTY, "TZOFFSETTO"}, - { ICAL_TZURL_PROPERTY, "TZURL"}, - { ICAL_UID_PROPERTY, "UID"}, - { ICAL_URL_PROPERTY, "URL"}, - { ICAL_VERSION_PROPERTY, "VERSION"}, - { ICAL_X_PROPERTY,"X_PROPERTY"}, - - /* CAP Object Properties */ - - { ICAL_SCOPE_PROPERTY, "SCOPE"}, - { ICAL_MAXRESULTS_PROPERTY, "MAXRESULTS"}, - { ICAL_MAXRESULTSSIZE_PROPERTY, "MAXRESULTSSIZE"}, - { ICAL_QUERY_PROPERTY, "QUERY" }, - { ICAL_QUERYNAME_PROPERTY, "QUERYNAME" }, - { ICAL_TARGET_PROPERTY, "TARGET"}, - - /* libical private properties */ - { ICAL_XLICERROR_PROPERTY,"X-LIC-ERROR"}, - { ICAL_XLICMIMECONTENTTYPE_PROPERTY,"X-LIC-MIME-CONTENT-TYPE"}, - { ICAL_XLICMIMEENCODING_PROPERTY,"X-LIC-MIME-ENCODING"}, - { ICAL_XLICMIMEOPTINFO_PROPERTY,"X-LIC-MIME-OPT-INFO"}, - { ICAL_XLICMIMECHARSET_PROPERTY,"X-LIC-MIME-CHARSET"}, - { ICAL_XLICCLUSTERCOUNT_PROPERTY,"X-LIC-CLUSTERCOUNT"}, - - /* End of the list */ - { ICAL_NO_PROPERTY, ""} -}; - - -char* icalenum_property_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 icalenum_string_to_property_kind(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; - } - } - - return ICAL_NO_PROPERTY; -} - - - - -struct icalparameter_kind_map { - icalparameter_kind kind; - char name[20]; -}; - -static struct icalparameter_kind_map parameter_map[] = -{ - { ICAL_ALTREP_PARAMETER, "ALTREP"}, - { ICAL_CN_PARAMETER, "CN"}, - { ICAL_CUTYPE_PARAMETER, "CUTYPE"}, - { ICAL_DELEGATEDFROM_PARAMETER, "DELEGATED-FROM"}, - { ICAL_DELEGATEDTO_PARAMETER, "DELEGATED-TO"}, - { ICAL_DIR_PARAMETER, "DIR"}, - { ICAL_ENCODING_PARAMETER, "ENCODING"}, - { ICAL_FBTYPE_PARAMETER, "FBTYPE"}, - { ICAL_FMTTYPE_PARAMETER, "FMTTYPE"}, - { ICAL_LANGUAGE_PARAMETER, "LANGUAGE"}, - { ICAL_MEMBER_PARAMETER, "MEMBER"}, - { ICAL_PARTSTAT_PARAMETER, "PARTSTAT"}, - { ICAL_RANGE_PARAMETER, "RANGE"}, - { ICAL_RELATED_PARAMETER, "RELATED"}, - { ICAL_RELTYPE_PARAMETER, "RELTYPE"}, - { ICAL_ROLE_PARAMETER, "ROLE"}, - { ICAL_RSVP_PARAMETER, "RSVP"}, - { ICAL_SENTBY_PARAMETER, "SENT-BY"}, - { ICAL_TZID_PARAMETER, "TZID"}, - { ICAL_VALUE_PARAMETER, "VALUE"}, - - /* CAP parameters */ - - /* libical private parameters */ - { ICAL_XLICERRORTYPE_PARAMETER, "X-LIC-ERRORTYPE"}, - { ICAL_XLICCOMPARETYPE_PARAMETER, "X-LIC-COMPARETYPE"}, - - /* End of list */ - { ICAL_NO_PARAMETER, ""} -}; - -char* icalenum_parameter_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 icalenum_string_to_parameter_kind(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; - } - } - - return ICAL_NO_PARAMETER; -} - -struct icalvalue_kind_map { - icalvalue_kind kind; - char name[20]; -}; - -static struct icalvalue_kind_map value_map[] = -{ - { ICAL_BINARY_VALUE, "BINARY"}, - { ICAL_BOOLEAN_VALUE, "BOOLEAN"}, - { ICAL_CALADDRESS_VALUE, "CAL-ADDRESS"}, - { ICAL_DATE_VALUE, "DATE"}, - { ICAL_DATETIME_VALUE, "DATE-TIME"}, - { ICAL_DURATION_VALUE, "DURATION"}, - { ICAL_FLOAT_VALUE, "FLOAT"}, - { ICAL_INTEGER_VALUE, "INTEGER"}, - { ICAL_PERIOD_VALUE, "PERIOD"}, - { ICAL_RECUR_VALUE, "RECUR"}, - { ICAL_TEXT_VALUE, "TEXT"}, - { ICAL_TIME_VALUE, "TIME"}, - { ICAL_URI_VALUE, "URI"}, - { ICAL_UTCOFFSET_VALUE, "UTC-OFFSET"}, - { ICAL_METHOD_VALUE, "METHOD"}, /* Not an RFC2445 type */ - { ICAL_GEO_VALUE, "FLOAT"}, /* Not an RFC2445 type */ - { ICAL_ATTACH_VALUE, "XATTACH"}, /* Not an RFC2445 type */ - { ICAL_DATETIMEDATE_VALUE, "XDATETIMEDATE"}, /* Not an RFC2445 type */ - { ICAL_DATETIMEPERIOD_VALUE, "XDATETIMEPERIOD"}, /* Not an RFC2445 type */ - { ICAL_QUERY_VALUE, "QUERY"}, - { ICAL_NO_VALUE, ""}, -}; - -char* icalenum_value_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 icalenum_value_kind_by_prop(icalproperty_kind kind) -{ - - return ICAL_NO_VALUE; -} - - -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, "" }, -}; - -char* icalenum_component_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 icalenum_string_to_component_kind(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; -} - -struct icalproperty_kind_value_map { - icalproperty_kind prop; - icalvalue_kind value; -}; - -static struct icalproperty_kind_value_map propval_map[] = -{ - { ICAL_CALSCALE_PROPERTY, ICAL_TEXT_VALUE }, - { ICAL_METHOD_PROPERTY, ICAL_METHOD_VALUE }, - { ICAL_PRODID_PROPERTY, ICAL_TEXT_VALUE }, - { ICAL_VERSION_PROPERTY, ICAL_TEXT_VALUE }, - { ICAL_CATEGORIES_PROPERTY, ICAL_TEXT_VALUE }, - { ICAL_CLASS_PROPERTY, ICAL_TEXT_VALUE }, - { ICAL_COMMENT_PROPERTY, ICAL_TEXT_VALUE }, - { ICAL_DESCRIPTION_PROPERTY, ICAL_TEXT_VALUE }, - { ICAL_LOCATION_PROPERTY, ICAL_TEXT_VALUE }, - { ICAL_PERCENTCOMPLETE_PROPERTY, ICAL_INTEGER_VALUE }, - { ICAL_PRIORITY_PROPERTY, ICAL_INTEGER_VALUE }, - { ICAL_RESOURCES_PROPERTY, ICAL_TEXT_VALUE }, - { ICAL_STATUS_PROPERTY, ICAL_TEXT_VALUE }, - { ICAL_SUMMARY_PROPERTY, ICAL_TEXT_VALUE }, - { ICAL_COMPLETED_PROPERTY, ICAL_DATETIME_VALUE }, - { ICAL_FREEBUSY_PROPERTY, ICAL_PERIOD_VALUE }, - { ICAL_TRANSP_PROPERTY, ICAL_TEXT_VALUE }, - { ICAL_TZNAME_PROPERTY, ICAL_TEXT_VALUE }, - { ICAL_TZOFFSETFROM_PROPERTY, ICAL_UTCOFFSET_VALUE }, - { ICAL_TZOFFSETTO_PROPERTY, ICAL_UTCOFFSET_VALUE }, - { ICAL_TZURL_PROPERTY, ICAL_URI_VALUE }, - { ICAL_TZID_PROPERTY, ICAL_TEXT_VALUE }, - { ICAL_ATTENDEE_PROPERTY, ICAL_CALADDRESS_VALUE }, - { ICAL_CONTACT_PROPERTY, ICAL_TEXT_VALUE }, - { ICAL_ORGANIZER_PROPERTY, ICAL_CALADDRESS_VALUE }, - { ICAL_RELATEDTO_PROPERTY, ICAL_TEXT_VALUE }, - { ICAL_URL_PROPERTY, ICAL_URI_VALUE }, - { ICAL_UID_PROPERTY, ICAL_TEXT_VALUE }, - { ICAL_EXRULE_PROPERTY, ICAL_RECUR_VALUE }, - { ICAL_RRULE_PROPERTY, ICAL_RECUR_VALUE }, - { ICAL_ACTION_PROPERTY, ICAL_TEXT_VALUE }, - { ICAL_REPEAT_PROPERTY, ICAL_INTEGER_VALUE }, - { ICAL_CREATED_PROPERTY, ICAL_DATETIME_VALUE }, - { ICAL_DTSTAMP_PROPERTY, ICAL_DATETIME_VALUE }, - { ICAL_LASTMODIFIED_PROPERTY, ICAL_DATETIME_VALUE }, - { ICAL_SEQUENCE_PROPERTY, ICAL_INTEGER_VALUE }, - { ICAL_X_PROPERTY, ICAL_TEXT_VALUE }, - { ICAL_REQUESTSTATUS_PROPERTY, ICAL_STRING_VALUE }, - { ICAL_ATTACH_PROPERTY, ICAL_URI_VALUE }, - { ICAL_GEO_PROPERTY, ICAL_GEO_VALUE }, - { ICAL_DTEND_PROPERTY, ICAL_DATETIME_VALUE }, - { ICAL_DUE_PROPERTY, ICAL_DATETIME_VALUE }, - { ICAL_DTSTART_PROPERTY, ICAL_DATETIME_VALUE }, - { ICAL_RECURRENCEID_PROPERTY, ICAL_DATETIME_VALUE }, - { ICAL_EXDATE_PROPERTY, ICAL_DATETIME_VALUE }, - { ICAL_RDATE_PROPERTY, ICAL_DATETIME_VALUE }, - { ICAL_TRIGGER_PROPERTY, ICAL_DURATION_VALUE }, - { ICAL_DURATION_PROPERTY, ICAL_DURATION_VALUE }, - - /* CAP properties */ - { ICAL_SCOPE_PROPERTY, ICAL_TEXT_VALUE }, - { ICAL_MAXRESULTS_PROPERTY, ICAL_INTEGER_VALUE}, - { ICAL_MAXRESULTSSIZE_PROPERTY, ICAL_INTEGER_VALUE}, - { ICAL_QUERY_PROPERTY, ICAL_QUERY_VALUE }, - { ICAL_QUERYNAME_PROPERTY, ICAL_TEXT_VALUE }, - { ICAL_TARGET_PROPERTY, ICAL_CALADDRESS_VALUE }, - - - /* libical private properties */ - { ICAL_XLICERROR_PROPERTY,ICAL_TEXT_VALUE}, - { ICAL_XLICCLUSTERCOUNT_PROPERTY,ICAL_INTEGER_VALUE}, - - - /* End of list */ - { ICAL_NO_PROPERTY, ICAL_NO_PROPERTY} -}; - - -icalvalue_kind icalenum_property_kind_to_value_kind(icalproperty_kind kind) -{ - int i; - - for (i=0; propval_map[i].value != ICAL_NO_VALUE; i++) { - if ( propval_map[i].prop == kind ) { - return propval_map[i].value; - } - } - - return ICAL_NO_VALUE; -} - -struct {icalrecurrencetype_weekday wd; char * str; } -wd_map[] = { - {ICAL_SUNDAY_WEEKDAY,"SU"}, - {ICAL_MONDAY_WEEKDAY,"MO"}, - {ICAL_TUESDAY_WEEKDAY,"TU"}, - {ICAL_WEDNESDAY_WEEKDAY,"WE"}, - {ICAL_THURSDAY_WEEKDAY,"TH"}, - {ICAL_FRIDAY_WEEKDAY,"FR"}, - {ICAL_SATURDAY_WEEKDAY,"SA"}, - {ICAL_NO_WEEKDAY,0} -}; - -char* icalenum_weekday_to_string(icalrecurrencetype_weekday kind) -{ - int i; - - for (i=0; wd_map[i].wd != ICAL_NO_WEEKDAY; i++) { - if ( wd_map[i].wd == kind) { - return wd_map[i].str; - } - } - - return 0; -} - - -struct { - icalrecurrencetype_frequency kind; - char* str; -} freq_map[] = { - {ICAL_SECONDLY_RECURRENCE,"SECONDLY"}, - {ICAL_MINUTELY_RECURRENCE,"MINUTELY"}, - {ICAL_HOURLY_RECURRENCE,"HOURLY"}, - {ICAL_DAILY_RECURRENCE,"DAILY"}, - {ICAL_WEEKLY_RECURRENCE,"WEEKLY"}, - {ICAL_MONTHLY_RECURRENCE,"MONTHLY"}, - {ICAL_YEARLY_RECURRENCE,"YEARLY"}, - {ICAL_NO_RECURRENCE,0} -}; - -char* icalenum_recurrence_to_string(icalrecurrencetype_frequency kind) -{ - int i; - - for (i=0; freq_map[i].kind != ICAL_NO_RECURRENCE ; i++) { - if ( freq_map[i].kind == kind ) { - return freq_map[i].str; - } - } - return 0; -} - - -struct { - icalrecurrencetype_frequency kind; - int major; - int minor; - char* str; -} 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"} -}; - - -char* icalenum_reqstat_desc(icalrequeststatus stat) -{ - - int i; - - for (i=0; status_map[i].kind != ICAL_UNKNOWN_STATUS; i++) { - if ( status_map[i].kind == stat) { - return status_map[i].str; - } - } - - return 0; -} - - -short icalenum_reqstat_major(icalrequeststatus stat) -{ - int i; - - for (i=0; status_map[i].kind != ICAL_UNKNOWN_STATUS; i++) { - if ( status_map[i].kind == stat) { - return status_map[i].major; - } - } - return -1; -} - -short icalenum_reqstat_minor(icalrequeststatus stat) -{ - int i; - - for (i=0; status_map[i].kind != ICAL_UNKNOWN_STATUS; i++) { - if ( status_map[i].kind == stat) { - return status_map[i].minor; - } - } - return -1; -} - - -icalrequeststatus icalenum_num_to_reqstat(short major, short minor) -{ - int i; - - for (i=0; status_map[i].kind != ICAL_UNKNOWN_STATUS; i++) { - if ( status_map[i].major == major && status_map[i].minor == minor) { - return status_map[i].kind; - } - } - return 0; -} - - - -struct {icalproperty_method method; char* str;} method_map[] = { - {ICAL_METHOD_PUBLISH,"PUBLISH"}, - {ICAL_METHOD_REQUEST,"REQUEST"}, - {ICAL_METHOD_REPLY,"REPLY"}, - {ICAL_METHOD_ADD,"ADD"}, - {ICAL_METHOD_CANCEL,"CANCEL"}, - {ICAL_METHOD_REFRESH,"REFRESH"}, - {ICAL_METHOD_COUNTER,"COUNTER"}, - {ICAL_METHOD_DECLINECOUNTER,"DECLINECOUNTER"}, - /* CAP Methods */ - {ICAL_METHOD_CREATE,"CREATE"}, - {ICAL_METHOD_READ,"READ"}, - {ICAL_METHOD_RESPONSE,"RESPONSE"}, - {ICAL_METHOD_MOVE,"MOVE"}, - {ICAL_METHOD_MODIFY,"MODIFY"}, - {ICAL_METHOD_GENERATEUID,"GENERATEUID"}, - {ICAL_METHOD_DELETE,"DELETE"}, - {ICAL_METHOD_NONE,"NONE"} -}; - - -char* icalenum_method_to_string(icalproperty_method method) -{ - int i; - - for (i=0; method_map[i].method != ICAL_METHOD_NONE; i++) { - if ( method_map[i].method == method) { - return method_map[i].str; - } - } - - return method_map[i].str; /* should be ICAL_METHOD_NONE */ -} - -icalproperty_method icalenum_string_to_method(char* str) -{ - int i; - - while(*str == ' '){ - str++; - } - - - for (i=0; method_map[i].method != ICAL_METHOD_NONE; i++) { - if ( strcmp(method_map[i].str, str) == 0) { - return method_map[i].method; - } - } - - return ICAL_METHOD_NONE; -} diff --git a/libical/src/libical/icalenums.h b/libical/src/libical/icalenums.h deleted file mode 100644 index ba3137803e..0000000000 --- a/libical/src/libical/icalenums.h +++ /dev/null @@ -1,480 +0,0 @@ - -/* -*- 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; - -/*********************************************************************** - * Property Enumerations -**********************************************************************/ - -typedef enum icalproperty_kind { - ICAL_ANY_PROPERTY = 0, /* This must be the first enum, for iteration */ - ICAL_CALSCALE_PROPERTY, - ICAL_METHOD_PROPERTY, - ICAL_PRODID_PROPERTY, - ICAL_VERSION_PROPERTY, - ICAL_ATTACH_PROPERTY, - ICAL_CATEGORIES_PROPERTY, - ICAL_CLASS_PROPERTY, - ICAL_COMMENT_PROPERTY, - ICAL_DESCRIPTION_PROPERTY, - ICAL_GEO_PROPERTY, - ICAL_LOCATION_PROPERTY, - ICAL_PERCENTCOMPLETE_PROPERTY, - ICAL_PRIORITY_PROPERTY, - ICAL_RESOURCES_PROPERTY, - ICAL_STATUS_PROPERTY, - ICAL_SUMMARY_PROPERTY, - ICAL_COMPLETED_PROPERTY, - ICAL_DTEND_PROPERTY, - ICAL_DUE_PROPERTY, - ICAL_DTSTART_PROPERTY, - ICAL_DURATION_PROPERTY, - ICAL_FREEBUSY_PROPERTY, - ICAL_TRANSP_PROPERTY, - ICAL_TZID_PROPERTY, - ICAL_TZNAME_PROPERTY, - ICAL_TZOFFSETFROM_PROPERTY, - ICAL_TZOFFSETTO_PROPERTY, - ICAL_TZURL_PROPERTY, - ICAL_ATTENDEE_PROPERTY, - ICAL_CONTACT_PROPERTY, - ICAL_ORGANIZER_PROPERTY, - ICAL_RECURRENCEID_PROPERTY, - ICAL_RELATEDTO_PROPERTY, - ICAL_URL_PROPERTY, - ICAL_UID_PROPERTY, - ICAL_EXDATE_PROPERTY, - ICAL_EXRULE_PROPERTY, - ICAL_RDATE_PROPERTY, - ICAL_RRULE_PROPERTY, - ICAL_ACTION_PROPERTY, - ICAL_REPEAT_PROPERTY, - ICAL_TRIGGER_PROPERTY, - ICAL_CREATED_PROPERTY, - ICAL_DTSTAMP_PROPERTY, - ICAL_LASTMODIFIED_PROPERTY, - ICAL_SEQUENCE_PROPERTY, - ICAL_REQUESTSTATUS_PROPERTY, - ICAL_X_PROPERTY, - - /* CAP Properties */ - ICAL_SCOPE_PROPERTY, - ICAL_MAXRESULTS_PROPERTY, - ICAL_MAXRESULTSSIZE_PROPERTY, - ICAL_QUERY_PROPERTY, - ICAL_QUERYNAME_PROPERTY, - ICAL_TARGET_PROPERTY, - - /* libical private properties */ - ICAL_XLICERROR_PROPERTY, - ICAL_XLICCLUSTERCOUNT_PROPERTY, - ICAL_XLICMIMECONTENTTYPE_PROPERTY, - ICAL_XLICMIMEENCODING_PROPERTY, - ICAL_XLICMIMECID_PROPERTY, - ICAL_XLICMIMEFILENAME_PROPERTY, - ICAL_XLICMIMECHARSET_PROPERTY, - ICAL_XLICMIMEOPTINFO_PROPERTY, - - ICAL_NO_PROPERTY /* This must be the last enum, for iteration */ - -} icalproperty_kind; - -/*********************************************************************** - * Enumerations for the values of properties - ***********************************************************************/ - -typedef enum icalproperty_method { - ICAL_METHOD_PUBLISH, - ICAL_METHOD_REQUEST, - ICAL_METHOD_REPLY, - ICAL_METHOD_ADD, - ICAL_METHOD_CANCEL, - ICAL_METHOD_REFRESH, - ICAL_METHOD_COUNTER, - ICAL_METHOD_DECLINECOUNTER, - /* CAP Methods */ - ICAL_METHOD_CREATE, - ICAL_METHOD_READ, - ICAL_METHOD_RESPONSE, - ICAL_METHOD_MOVE, - ICAL_METHOD_MODIFY, - ICAL_METHOD_GENERATEUID, - ICAL_METHOD_DELETE, - ICAL_METHOD_NONE -} icalproperty_method ; - -typedef enum icalproperty_transp { - ICAL_TRANSP_OPAQUE, - ICAL_TRANS_TRANSPARENT -} icalproperty_trans; - -typedef enum icalproperty_calscale { - ICAL_CALSCALE_GREGORIAN -} icalproperty_calscale ; - - -typedef enum icalproperty_class { - ICAL_CLASS_PUBLIC, - ICAL_CLASS_PRIVATE, - ICAL_CLASS_CONFIDENTIAL, - ICAL_CLASS_XNAME -} icalproperty_class; - - -typedef enum icalproperty_status { - ICAL_STATUS_TENTATIVE, - ICAL_STATUS_CONFIRMED, - ICAL_STATUS_CANCELLED, /* CANCELED? SIC */ - ICAL_STATUS_NEEDSACTION, - ICAL_STATUS_COMPLETED, - ICAL_STATUS_INPROCESS, - ICAL_STATUS_DRAFT, - ICAL_STATUS_FINAL -} icalproperty_status; - -typedef enum icalproperty_action { - ICAL_ACTION_AUDIO, - ICAL_ACTION_DISPLAY, - ICAL_ACTION_EMAIL, - ICAL_ACTION_PROCEDURE, - ICAL_ACTION_XNAME -} icalproperty_action; - -/*********************************************************************** - * Value enumerations -**********************************************************************/ - -typedef enum icalvalue_kind { - ICAL_NO_VALUE, - ICAL_ATTACH_VALUE, /* Non-Standard*/ - ICAL_BINARY_VALUE, - ICAL_BOOLEAN_VALUE, - ICAL_CALADDRESS_VALUE, - ICAL_DATE_VALUE, - ICAL_DATETIME_VALUE, - ICAL_DATETIMEDATE_VALUE, /* Non-Standard */ - ICAL_DATETIMEPERIOD_VALUE, /* Non-Standard */ - ICAL_DURATION_VALUE, - ICAL_FLOAT_VALUE, - ICAL_GEO_VALUE, /* Non-Standard */ - ICAL_INTEGER_VALUE, - ICAL_METHOD_VALUE, /* Non-Standard */ - ICAL_PERIOD_VALUE, - ICAL_RECUR_VALUE, - ICAL_STRING_VALUE, /* Non-Standard */ - ICAL_TEXT_VALUE, - ICAL_TIME_VALUE, - ICAL_TRIGGER_VALUE, /* Non-Standard */ - ICAL_URI_VALUE, - ICAL_UTCOFFSET_VALUE, - ICAL_QUERY_VALUE, - ICAL_XNAME_VALUE -} icalvalue_kind; - - -/*********************************************************************** - * Parameter Enumerations - **********************************************************************/ - - -typedef enum icalparameter_kind { - ICAL_NO_PARAMETER, - ICAL_ANY_PARAMETER, - ICAL_ALTREP_PARAMETER, /* DQUOTE uri DQUOTE */ - ICAL_CN_PARAMETER, /* text */ - ICAL_CUTYPE_PARAMETER, /*INDIVIDUAL, GROUP, RESOURCE,ROOM,UNKNOWN, x-name*/ - ICAL_DELEGATEDFROM_PARAMETER, /* *("," DQUOTE cal-address DQUOTE) */ - ICAL_DELEGATEDTO_PARAMETER, /* *("," DQUOTE cal-address DQUOTE) */ - ICAL_DIR_PARAMETER, /* DQUOTE uri DQUOTE */ - ICAL_ENCODING_PARAMETER, /* *BIT, BASE64, x-name */ - ICAL_FMTTYPE_PARAMETER, /* registered MINE content type */ - ICAL_FBTYPE_PARAMETER, /* FREE, BUSY, BUSY-UNAVAILABLE, BUSY-TENTATIVE,x-name */ - ICAL_LANGUAGE_PARAMETER, /* text from RFC 1766 */ - ICAL_MEMBER_PARAMETER, /* DQUOTE cal-address DQUOTE */ - ICAL_PARTSTAT_PARAMETER, /* NEEDS-ACTION, ACCEPTED, DECLINED, TENTATIVE, DELEGATED, x-name */ - ICAL_RANGE_PARAMETER, /* THISANDPRIOR, THISANDFUTURE */ - ICAL_RELATED_PARAMETER, /* START, END */ - ICAL_RELTYPE_PARAMETER, /* PARENT, CHILD, SIBLING,x-name */ - ICAL_ROLE_PARAMETER, /* CHAIR, REQ_PARTICIPANT, OPT_PARTICIPANT, NON_PARTICIPANT, x-name */ - ICAL_RSVP_PARAMETER, /* TRUE. FALSE */ - ICAL_SENTBY_PARAMETER, /* DQUOTE uri DQUOTE */ - ICAL_TZID_PARAMETER, /* [tzidprefix] paramtext CRLF */ - ICAL_VALUE_PARAMETER, /* BINARY, BOOLEAN, CAL_ADDRESS, DATE, DATE-TIME, DURATION, FLOAT, INTEGER, PERIOD, RECUR, TEXT, TIME, UTC_OFFSET, x-name */ - ICAL_XLICERRORTYPE_PARAMETER, /*ICAL_XLICERROR_PARSE_ERROR,ICAL_XLICERROR_INVALID_ITIP*/ - ICAL_XLICCOMPARETYPE_PARAMETER, /**/ - ICAL_X_PARAMETER /* text */ -} icalparameter_kind; - -typedef enum icalparameter_cutype { - ICAL_CUTYPE_INDIVIDUAL, - ICAL_CUTYPE_GROUP, - ICAL_CUTYPE_RESOURCE, - ICAL_CUTYPE_ROOM, - ICAL_CUTYPE_UNKNOWN, - ICAL_CUTYPE_XNAME -} icalparameter_cutype; - - -typedef enum icalparameter_encoding { - ICAL_ENCODING_8BIT, - ICAL_ENCODING_BASE64, - ICAL_ENCODING_XNAME -} icalparameter_encoding; - -typedef enum icalparameter_fbtype { - ICAL_FBTYPE_FREE, - ICAL_FBTYPE_BUSY, - ICAL_FBTYPE_BUSYUNAVAILABLE, - ICAL_FBTYPE_BUSYTENTATIVE, - ICAL_FBTYPE_XNAME -} icalparameter_fbtype; - -typedef enum icalparameter_partstat { - ICAL_PARTSTAT_NEEDSACTION, - ICAL_PARTSTAT_ACCEPTED, - ICAL_PARTSTAT_DECLINED, - ICAL_PARTSTAT_TENTATIVE, - ICAL_PARTSTAT_DELEGATED, - ICAL_PARTSTAT_COMPLETED, - ICAL_PARTSTAT_INPROCESS, - ICAL_PARTSTAT_XNAME -} icalparameter_partstat; - -typedef enum icalparameter_range { - ICAL_RANGE_THISANDPRIOR, - ICAL_RANGE_THISANDFUTURE -} icalparameter_range; - -typedef enum icalparameter_related { - ICAL_RELATED_START, - ICAL_RELATED_END -} icalparameter_related; - -typedef enum icalparameter_reltype { - ICAL_RELTYPE_PARENT, - ICAL_RELTYPE_CHILD, - ICAL_RELTYPE_SIBLING, - ICAL_RELTYPE_XNAME -} icalparameter_reltype; - -typedef enum icalparameter_role { - ICAL_ROLE_CHAIR, - ICAL_ROLE_REQPARTICIPANT, - ICAL_ROLE_OPTPARTICIPANT, - ICAL_ROLE_NONPARTICIPANT, - ICAL_ROLE_XNAME -} icalparameter_role; - -typedef enum icalparameter_xlicerrortype { - ICAL_XLICERRORTYPE_COMPONENTPARSEERROR, - ICAL_XLICERRORTYPE_PARAMETERVALUEPARSEERROR, - ICAL_XLICERRORTYPE_PARAMETERNAMEPARSEERROR, - ICAL_XLICERRORTYPE_PROPERTYPARSEERROR, - ICAL_XLICERRORTYPE_VALUEPARSEERROR, - ICAL_XLICERRORTYPE_UNKVCALPROP, - ICAL_XLICERRORTYPE_INVALIDITIP, - ICAL_XLICERRORTYPE_MIMEPARSEERROR, -} icalparameter_xlicerrortype; - -typedef enum icalparameter_xliccomparetype { - ICAL_XLICCOMPARETYPE_EQUAL=0, - ICAL_XLICCOMPARETYPE_LESS=-1, - ICAL_XLICCOMPARETYPE_LESSEQUAL=2, - ICAL_XLICCOMPARETYPE_GREATER=1, - ICAL_XLICCOMPARETYPE_GREATEREQUAL=3, - ICAL_XLICCOMPARETYPE_NOTEQUAL=4, - ICAL_XLICCOMPARETYPE_REGEX=5 -} icalparameter_xliccomparetype; - -typedef enum icalparameter_value { - ICAL_VALUE_XNAME = ICAL_XNAME_VALUE, - ICAL_VALUE_BINARY = ICAL_BINARY_VALUE, - ICAL_VALUE_BOOLEAN = ICAL_BOOLEAN_VALUE, - ICAL_VALUE_CALADDRESS = ICAL_CALADDRESS_VALUE, - ICAL_VALUE_DATE = ICAL_DATE_VALUE, - ICAL_VALUE_DATETIME = ICAL_DATETIME_VALUE, - ICAL_VALUE_DURATION = ICAL_DURATION_VALUE, - ICAL_VALUE_FLOAT = ICAL_FLOAT_VALUE, - ICAL_VALUE_INTEGER = ICAL_INTEGER_VALUE, - ICAL_VALUE_PERIOD = ICAL_PERIOD_VALUE, - ICAL_VALUE_RECUR = ICAL_RECUR_VALUE, - ICAL_VALUE_TEXT = ICAL_TEXT_VALUE, - ICAL_VALUE_TIME = ICAL_TIME_VALUE, - ICAL_VALUE_UTCOFFSET = ICAL_UTCOFFSET_VALUE, - ICAL_VALUE_URI = ICAL_URI_VALUE, - ICAL_VALUE_ERROR = ICAL_NO_VALUE -} icalparameter_value; - -/*********************************************************************** - * Recurrances -**********************************************************************/ - -typedef enum icalrecurrencetype_frequency -{ - /* These enums are used to index an array, so don't change the - order or the integers */ - - ICAL_SECONDLY_RECURRENCE=0, - ICAL_MINUTELY_RECURRENCE=1, - ICAL_HOURLY_RECURRENCE=2, - ICAL_DAILY_RECURRENCE=3, - ICAL_WEEKLY_RECURRENCE=4, - ICAL_MONTHLY_RECURRENCE=5, - ICAL_YEARLY_RECURRENCE=6, - ICAL_NO_RECURRENCE=7 - -} icalrecurrencetype_frequency; - -typedef enum icalrecurrencetype_weekday -{ - ICAL_NO_WEEKDAY, - ICAL_SUNDAY_WEEKDAY, - ICAL_MONDAY_WEEKDAY, - ICAL_TUESDAY_WEEKDAY, - ICAL_WEDNESDAY_WEEKDAY, - ICAL_THURSDAY_WEEKDAY, - ICAL_FRIDAY_WEEKDAY, - ICAL_SATURDAY_WEEKDAY -} icalrecurrencetype_weekday; - -enum { - ICAL_RECURRENCE_ARRAY_MAX = 0x7f7f, - ICAL_RECURRENCE_ARRAY_MAX_BYTE = 0x7f -}; - - -char* icalenum_recurrence_to_string(icalrecurrencetype_frequency kind); -char* icalenum_weekday_to_string(icalrecurrencetype_weekday 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; - - -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 -**********************************************************************/ - -char* icalenum_property_kind_to_string(icalproperty_kind kind); -icalproperty_kind icalenum_string_to_property_kind(char* string); - -char* icalenum_value_kind_to_string(icalvalue_kind kind); -icalvalue_kind icalenum_value_kind_by_prop(icalproperty_kind kind); - -char* icalenum_parameter_kind_to_string(icalparameter_kind kind); -icalparameter_kind icalenum_string_to_parameter_kind(char* string); - -char* icalenum_component_kind_to_string(icalcomponent_kind kind); -icalcomponent_kind icalenum_string_to_component_kind(char* string); - -icalvalue_kind icalenum_property_kind_to_value_kind(icalproperty_kind kind); - -char* icalenum_method_to_string(icalproperty_method); -icalproperty_method icalenum_string_to_method(char* string); - -#endif /* !ICALENUMS_H */ - - - diff --git a/libical/src/libical/icalerror.c b/libical/src/libical/icalerror.c deleted file mode 100644 index c7641da504..0000000000 --- a/libical/src/libical/icalerror.c +++ /dev/null @@ -1,99 +0,0 @@ -/* -*- 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 "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; -} - -void icalerror_set_errno(icalerrorenum e) { - - icalerror_stop_here(); - icalerrno = e; -} - - -struct icalerror_string_map { - icalerrorenum error; - char name[160]; -}; - -static struct icalerror_string_map string_map[] = -{ - {ICAL_BADARG_ERROR,"Bad argumnet to function"}, - {ICAL_NEWFAILED_ERROR,"Failed to create a new object via a *_new() routine"}, - {ICAL_MALFORMEDDATA_ERROR,"An input string was not correctly formed"}, - {ICAL_PARSE_ERROR,"Failed to parse a part of an iCal componet"}, - {ICAL_INTERNAL_ERROR,"Random internal error. This indicates an error in the library code, not an error in use"}, - {ICAL_FILE_ERROR,"An operation on a file failed. Check errno for more detail."}, - {ICAL_ALLOCATION_ERROR,"Failed to allocate memory"}, - {ICAL_USAGE_ERROR,"The caller failed to properly sequence called to an object's interface"}, - {ICAL_NO_ERROR,"No error"}, - {ICAL_UNKNOWN_ERROR,"Unknown error type -- icalerror_strerror() was probably given bad input"} -}; - - -char* icalerror_strerror(icalerrorenum e) { - - int i; - - for (i=0; string_map[i].error != ICAL_UNKNOWN_ERROR; i++) { - if (string_map[i].error == e) { - return string_map[i].name; - } - } - - return string_map[i].name; /* Return string for ICAL_UNKNOWN_ERROR*/ - -} - - - diff --git a/libical/src/libical/icalerror.h b/libical/src/libical/icalerror.h deleted file mode 100644 index fbf6076dd6..0000000000 --- a/libical/src/libical/icalerror.h +++ /dev/null @@ -1,141 +0,0 @@ -/* -*- Mode: C -*- */ -/*====================================================================== - FILE: icalerror.h - CREATOR: eric 09 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 icalerror.h - -======================================================================*/ - - -#ifndef ICALERROR_H -#define ICALERROR_H - -#include -#include /* For icalerror_warn() */ - -/* This routine is called before any error is triggered. It is called - by icalerror_set_errno, so it does not appear in all of the macros - below */ -void icalerror_stop_here(void); - -void icalerror_crash_here(void); - -#ifdef ICAL_ERRORS_ARE_FATAL -#undef NDEBUG -#endif - -#define icalerror_check_value_type(value,type); -#define icalerror_check_property_type(value,type); -#define icalerror_check_parameter_type(value,type); -#define icalerror_check_component_type(value,type); - -/* Assert with a message */ -#ifdef ICAL_ERRORS_ARE_FATAL - -#ifdef __GNUC__ -#define icalerror_assert(test,message) if(!(test)){fprintf(stderr,"%s(), %s:%d: %s\n",__FUNCTION__,__FILE__,__LINE__,message);icalerror_stop_here(); abort();} -#else /*__GNUC__*/ -#define icalerror_assert(test,message) if(!(test)){fprintf(stderr,"%s:%d: %s\n",__FILE__,__LINE__,message);icalerror_stop_here(); abort();} -#endif /*__GNUC__*/ -#else -#define icalerror_assert(test,message) -#endif - - -/* Check & abort if check fails */ -#ifdef ICAL_ERRORS_ARE_FATAL -#define icalerror_check_arg(test,arg) icalerror_stop_here();assert(test) -#else -#define icalerror_check_arg(test,arg) -#endif -/* Check & return void if check failes*/ - -#ifdef ICAL_ERRORS_ARE_FATAL -#define icalerror_check_arg_rv(test,arg) icalerror_stop_here();assert(test); -#else -#define icalerror_check_arg_rv(test,arg) if(!(test)) { icalerror_set_errno(ICAL_BADARG_ERROR); return; } -#endif - -/* Check & return 0 if check failes*/ -#ifdef ICAL_ERRORS_ARE_FATAL -#define icalerror_check_arg_rz(test,arg) icalerror_stop_here();assert(test); -#else -#define icalerror_check_arg_rz(test,arg) if(!(test)) {icalerror_set_errno(ICAL_BADARG_ERROR); return 0;} -#endif - - -/* Check & return an error if check failes*/ -#ifdef ICAL_ERRORS_ARE_FATAL -#define icalerror_check_arg_re(test,arg,error) icalerror_stop_here();assert(test); -#else -#define icalerror_check_arg_re(test,arg,error) if(!(test)) {icalerror_stop_here(); return error;} -#endif - - -/* Warning messages */ - -#ifdef ICAL_ERRORS_ARE_FATAL - -#ifdef __GNUC__ -#define icalerror_warn(message) {fprintf(stderr,"%s(), %s:%d: %s\n",__FUNCTION__,__FILE__,__LINE__,message); abort();} -#else /* __GNU_C__ */ -#define icalerror_warn(message) {fprintf(stderr,"%s:%d: %s\n",__FILE__,__LINE__,message); abort();} -#endif /* __GNU_C__ */ - -#else /*ICAL_ERRORS_ARE_FATAL */ - -#ifdef __GNUC__ -#define icalerror_warn(message) {fprintf(stderr,"%s(), %s:%d: %s\n",__FUNCTION__,__FILE__,__LINE__,message);} -#else /* __GNU_C__ */ -#define icalerror_warn(message) {fprintf(stderr,"%s:%d: %s\n",__FILE__,__LINE__,message);} -#endif /* __GNU_C__ */ - -#endif /*ICAL_ERRORS_ARE_FATAL*/ - -typedef enum icalerrorenum { - - ICAL_BADARG_ERROR, - ICAL_NEWFAILED_ERROR, - ICAL_MALFORMEDDATA_ERROR, - ICAL_PARSE_ERROR, - ICAL_INTERNAL_ERROR, /* Like assert --internal consist. prob */ - ICAL_FILE_ERROR, - ICAL_ALLOCATION_ERROR, - ICAL_USAGE_ERROR, - ICAL_NO_ERROR, - ICAL_MULTIPLEINCLUSION_ERROR, - ICAL_TIMEDOUT_ERROR, - ICAL_UNKNOWN_ERROR /* Used for problems in input to icalerror_strerror()*/ - -} icalerrorenum; - -extern icalerrorenum icalerrno; - - -void icalerror_clear_errno(); -void icalerror_set_errno(icalerrorenum); - -char* icalerror_strerror(icalerrorenum e); - - -#endif /* !ICALERROR_H */ - - - diff --git a/libical/src/libical/icallexer.l b/libical/src/libical/icallexer.l deleted file mode 100644 index 8a6db2f93b..0000000000 --- a/libical/src/libical/icallexer.l +++ /dev/null @@ -1,286 +0,0 @@ -%{ -/* -*- Mode: C -*- - ====================================================================== - FILE: icallexer.l - CREATOR: eric 10 June 1999 - - DESCRIPTION: - - $Id: icallexer.l,v 1.4 2000/06/06 22:48:09 alves Exp $ - $Locker: $ - - (C) COPYRIGHT 1999 Eric Busboom - http://www.softwarestudio.org - - The contents of this file are subject to the Mozilla Public License - Version 1.0 (the "License"); you may not use this file except in - compliance with the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - - Software distributed under the License is distributed on an "AS IS" - basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See - the License for the specific language governing rights and - limitations under the License. - - The original author is Eric Busboom - The original code is icalitip.y - - - - ======================================================================*/ -#include "icalyacc.h" -#include "icalparser.h" -#include "icalenums.h" -#include "icalmemory.h" -#include "assert.h" - -#include /* For strdup() */ - -int icalparser_flex_input(char* buf, int max_size); -void icalparser_clear_flex_input(); - - -#define ICAL_MAX_STR_CONST 1024 - -#undef YY_INPUT -#define YY_INPUT(b,r,ms) ( r= icalparser_flex_input(b,ms)) -#undef yywrap - -#undef YY_FATAL_ERROR -#define YY_FATAL_ERROR(msg) yyerror(msg) - -icalvalue_kind value_kind=ICAL_NO_VALUE; -void set_parser_value_state(); -extern int yydebug; - -void yyerror(char *s); - -void init_str_buf(); - -int last_state; - -char *str_buf; -char *str_buf_p; -size_t buf_sz; /* = ICAL_MAX_STR_CONST;*/ - - -%} - -crlf \x0D?\x0A -space [ ] -qsafechar [^\x00-\x1F\"] -safechar [^\x00-\x1F\"\:\;\,] -tsafechar [\x20-\x21\x23-\x2B\x2D-\x39\x3C-\x5B\x5D-\x7E] -valuechar [^\x00-\x08\x10-\x1F] -xname X-[a-zA-Z0-9\-]+ -xname2 [a-zA-Z0-9\-\ ] -paramtext {safechar}+ -value {valuechar}+ -quotedstring \"{qsafechar}+\" -digit [0-9] - -%array /* Make yytext an array. Slow, but handy. HACK */ - -%option caseless - -%s quoted_string -%s binary_value boolean_value uri_value time_value duration_value number_value period_value recur_value text_value utcoffset_value -%s enum_param_value string_param_value stringlist_param_value keyword line_start component seperator parameter end_of_value paramtext - - - -%% - -%{ -%} - - -{ -.* { yylval.v_string= icalmemory_tmp_copy(yytext); - return STRING;} -{crlf} { return EOL;} - -} - -{ -. { return CHARACTER; } -{crlf} { return EOL;} - -} - -{ -.* { yylval.v_string= icalmemory_tmp_copy(yytext); - return STRING;} -{crlf} { return EOL;} - -} - - -{ -{digit}* { yylval.v_string= icalmemory_tmp_copy(yytext); - return DIGITS; } -T { return TIME_CHAR; } -Z { return UTC_CHAR; } -{crlf} { return EOL;} -. { return CHARACTER; } - -} - -{ -{digit}+ { yylval.v_string =icalmemory_tmp_copy(yytext); - return DIGITS; } -T { return TIME_CHAR; } -[\+\-PTWHMSD] { return yytext[0]; } -{crlf} { return EOL;} - -} - -{ -[\+\-\.0-9]+ { yylval.v_int=atoi(yytext); return INTNUMBER; } -{crlf} { return EOL;} -. { return CHARACTER; } - -} - -{ -{digit}+ { yylval.v_string =icalmemory_tmp_copy(yytext) ; - return DIGITS; } -T { return TIME_CHAR; } -Z { return UTC_CHAR; } -[\/\+\-PWHMSD] { return yytext[0]; } -{crlf} { return EOL;} - -} - -{ -INTERVAL { return INTERVAL; } -COUNT { return COUNT; } -UNTIL { return UNTIL; } -FREQ { return FREQ; } -BYDAY { return BYDAY; } -BYHOUR { return BYHOUR; } -BYMINUTE { return BYMINUTE; } -BYMONTH { return BYMONTH; } -BYMONTHDAY { return BYMONTHDAY; } -BYSECOND { return BYSECOND; } -BYSETPOS { return BYSETPOS; } -BYWEEKNO { return BYWEEKNO; } -BYYEARDAY { return BYYEARDAY; } -DAILY { return DAILY; } -SECONDLY { return SECONDLY; } -MINUTELY { return MINUTELY; } -HOURLY { return HOURLY; } -MONTHLY { return MONTHLY; } -WEEKLY { return WEEKLY; } -YEARLY { return YEARLY; } -WKST { return WKST; } -MO { return MO; } -SA { return SA; } -SU { return SU; } -TU { return TU; } -WE { return WE; } -TH { return TH; } -FR { return FR; } -= { return EQUALS; } -, { return COMMA; } -; { return SEMICOLON; } -[\-\+0-9]+ { yylval.v_string= icalmemory_tmp_copy(yytext); - return DIGITS; } -T { return TIME_CHAR; } -Z { return UTC_CHAR; } -{crlf} { return EOL;} -} - -{ -{crlf} { return EOL;} -\-|\+ { return yytext[0]; } -{digit}{digit} { yylval.v_int=atoi(yytext); return INTNUMBER; } - -} - -{ -. { return CHARACTER; } -{crlf} { return EOL;} - -} - -{ -, { BEGIN(last_state); return COMMA; } -} - - -%% - -int yywrap() -{ - return 1; -} - - -void set_parser_value_state(icalvalue_kind kind) -{ - - switch (kind){ - - case ICAL_ATTACH_VALUE: - case ICAL_BINARY_VALUE: - {BEGIN(binary_value);break;} - - case ICAL_BOOLEAN_VALUE: - case ICAL_INTEGER_VALUE: - case ICAL_FLOAT_VALUE: - {BEGIN(number_value);break;} - - case ICAL_UTCOFFSET_VALUE: - {BEGIN(utcoffset_value);break;} - - case ICAL_TEXT_VALUE: - {BEGIN(text_value); - init_str_buf(); - break;} - - case ICAL_CALADDRESS_VALUE: - case ICAL_URI_VALUE: - {BEGIN(uri_value);break;} - - case ICAL_DATE_VALUE: - case ICAL_DATETIME_VALUE: - case ICAL_DATETIMEDATE_VALUE: - case ICAL_DATETIMEPERIOD_VALUE: - case ICAL_TIME_VALUE: - {BEGIN(time_value);break;} - - case ICAL_DURATION_VALUE: - {BEGIN(duration_value);break;} - - case ICAL_PERIOD_VALUE: - {BEGIN(period_value);break;} - - case ICAL_GEO_VALUE: - case ICAL_QUERY_VALUE: - {BEGIN(text_value);break;} - - case ICAL_RECUR_VALUE: - {BEGIN(recur_value);break;} - - case ICAL_NO_VALUE: - { - /* The value is probably actually a component name */ - {BEGIN(component); break;} - } - default: - { - assert(1==0); - } - } -} - -void init_str_buf() -{ - str_buf = icalmemory_tmp_buffer(ICAL_MAX_STR_CONST); - str_buf_p = str_buf; - buf_sz = ICAL_MAX_STR_CONST; - - -} - diff --git a/libical/src/libical/icalmemory.c b/libical/src/libical/icalmemory.c deleted file mode 100644 index e13c2c42ca..0000000000 --- a/libical/src/libical/icalmemory.c +++ /dev/null @@ -1,299 +0,0 @@ -/* -*- Mode: C -*- - ====================================================================== - FILE: icalmemory.c - CREATOR: eric 30 June 1999 - - $Id$ - - $Locker$ - - The contents of this file are subject to the Mozilla Public License - Version 1.0 (the "License"); you may not use this file except in - compliance with the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - - Software distributed under the License is distributed on an "AS IS" - basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See - the License for the specific language governing rights and - limitations under the License. - - - 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 icalmemory.h - - 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 Initial Developer of the Original Code is Eric Busboom - - (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org - ======================================================================*/ - -/* libical often passes strings back to the caller. To make these - * interfaces simple, I did not want the caller to have to pass in a - * memory buffer, but having libical pass out newly allocated memory - * makes it difficult to de-allocate the memory. - * - * The ring buffer in this scheme makes it possible for libical to pass - * out references to memory which the caller does not own, and be able - * to de-allocate the memory later. The ring allows libical to have - * several buffers active simultaneously, which is handy when creating - * string representations of components. */ - -#define ICALMEMORY_C - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#ifdef DMALLOC -#include "dmalloc.h" -#endif - -#include "icalmemory.h" -#include "icalerror.h" - -#include /* for printf (debugging) */ -#include /* for malloc, realloc */ -#include /* for memset() */ - -#define BUFFER_RING_SIZE 25 -#define MIN_BUFFER_SIZE 200 - -/* HACK. Not threadsafe */ -void* buffer_ring[BUFFER_RING_SIZE]; -int buffer_pos = -1; -int initialized = 0; - -/* Add an existing buffer to the buffer ring */ -void icalmemory_add_tmp_buffer(void* buf) -{ - /* I don't think I need this -- I think static arrays are - initialized to 0 as a standard part of C, but I am not sure. */ - if (initialized == 0){ - int i; - for(i=0; i= (size_t) *buf_size) { - - - *buf_size = (*buf_size) * 2 + final_length; - - new_buf = realloc(*buf,*buf_size); - - new_pos = (void*)((size_t)new_buf + data_length); - - *pos = new_pos; - *buf = new_buf; - } - - strcpy(*pos, string); - - *pos += string_length; -} - - -void -icalmemory_append_char(char** buf, char** pos, size_t* buf_size, - char ch) -{ - char *new_buf; - char *new_pos; - - size_t data_length, final_length; - -#ifndef ICAL_NO_INTERNAL_DEBUG - icalerror_check_arg_rv( (buf!=0),"buf"); - icalerror_check_arg_rv( (*buf!=0),"*buf"); - icalerror_check_arg_rv( (pos!=0),"pos"); - icalerror_check_arg_rv( (*pos!=0),"*pos"); - icalerror_check_arg_rv( (buf_size!=0),"buf_size"); - icalerror_check_arg_rv( (*buf_size!=0),"*buf_size"); -#endif - - data_length = (size_t)*pos - (size_t)*buf; - - final_length = data_length + 2; - - if ( final_length > (size_t) *buf_size ) { - - - *buf_size = (*buf_size) * 2 + final_length +1; - - new_buf = realloc(*buf,*buf_size); - - new_pos = (void*)((size_t)new_buf + data_length); - - *pos = new_pos; - *buf = new_buf; - } - - **pos = ch; - *pos += 1; - **pos = 0; -} diff --git a/libical/src/libical/icalmemory.h b/libical/src/libical/icalmemory.h deleted file mode 100644 index 6c974cdc95..0000000000 --- a/libical/src/libical/icalmemory.h +++ /dev/null @@ -1,102 +0,0 @@ -/* -*- Mode: C -*- */ -/*====================================================================== - FILE: icalmemory.h - CREATOR: eric 30 June 1999 - - - $Id$ - $Locker$ - - The contents of this file are subject to the Mozilla Public License - Version 1.0 (the "License"); you may not use this file except in - compliance with the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - - Software distributed under the License is distributed on an "AS IS" - basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See - the License for the specific language governing rights and - limitations under the License. - - - 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 icalmemory.h - - 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 Initial Developer of the Original Code is Eric Busboom - - (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org -======================================================================*/ - -#ifndef ICALMEMORY_H -#define ICALMEMORY_H - -#include /* for size_t */ - -/* Tmp buffers are managed by ical. References can be returned to the - caller, although the caller will not own the memory. */ - -void* icalmemory_tmp_buffer(size_t size); -char* icalmemory_tmp_copy(char* str); - -/* Add an externally allocated buffer to the ring. */ -void icalmemory_add_tmp_buffer(void*); - - -/* Free all memory used in the ring */ -void icalmemory_free_ring(); - -/* Non-tmp buffers must be freed. These are mostly wrappers around - * malloc, etc, but are used so the caller can change the memory - * allocators in a future version of the library */ - -void* icalmemory_new_buffer(size_t size); -void* icalmemory_resize_buffer(void* buf, size_t size); -void icalmemory_free_buffer(void* buf); - -/* icalmemory_append_string will copy the string 'string' to the - buffer 'buf' starting at position 'pos', reallocing 'buf' if it is - too small. 'buf_size' is the size of 'buf' and will be changed if - 'buf' is reallocated. 'pos' will point to the last byte of the new - string in 'buf', usually a '\0' */ - -/* THESE ROUTINES CAN NOT BE USED ON TMP BUFFERS. Only use them on - normally allocated memory, or on buffers created from - icalmemory_new_buffer, never with buffers created by - icalmemory_tmp_buffer. If icalmemory_append_string has to resize a - buffer on the ring, the ring will loose track of it an you will - have memory problems. */ - -void icalmemory_append_string(char** buf, char** pos, size_t* buf_size, - char* string); - -/* icalmemory_append_char is similar, but is appends a character instead of a string */ -void icalmemory_append_char(char** buf, char** pos, size_t* buf_size, - char ch); - -/* A wrapper around strdup */ -char* icalmemory_strdup(const char *s); - -#endif /* !ICALMEMORY_H */ - - - diff --git a/libical/src/libical/icalmime.c b/libical/src/libical/icalmime.c deleted file mode 100644 index a3fb7deaef..0000000000 --- a/libical/src/libical/icalmime.c +++ /dev/null @@ -1,325 +0,0 @@ -/* -*- Mode: C -*-*/ -/*====================================================================== - FILE: icalmime.c - CREATOR: eric 26 July 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 - - -======================================================================*/ - -#include "icalmime.h" -#include "sspm.h" -#include "stdlib.h" - -#ifdef DMALLOC -#include "dmalloc.h" -#endif - - -/* These *_part routines are called by the MIME parser via the - local_action_map */ - -struct text_part -{ - char* buf; - char* buf_pos; - size_t buf_size; -}; - -void* icalmime_text_new_part() -{ - -#define BUF_SIZE 2048 - - struct text_part* impl; - - if ( ( impl = (struct text_part*) - malloc(sizeof(struct text_part))) == 0) { - return 0; - } - - impl->buf = icalmemory_new_buffer(BUF_SIZE); - impl->buf_pos = impl->buf; - impl->buf_size = BUF_SIZE; - - return impl; -} -void icalmime_text_add_line(void *part, - struct sspm_header *header, - char* line, size_t size) -{ - struct text_part* impl = (struct text_part*) part; - - icalmemory_append_string(&(impl->buf),&(impl->buf_pos), - &(impl->buf_size),line); - -} - -void* icalmime_textcalendar_end_part(void* part) -{ - - struct text_part* impl = (struct text_part*) part; - icalcomponent *c = icalparser_parse_string(impl->buf); - - icalmemory_free_buffer(impl->buf); - free(impl); - - return c; - -} - -void* icalmime_text_end_part(void* part) -{ - struct text_part* impl = ( struct text_part*) part; - - icalmemory_add_tmp_buffer(impl->buf); - free(impl); - - return impl->buf; -} - -void icalmime_text_free_part(void *part) -{ -} - - -/* Ignore Attachments for now */ - -void* icalmime_attachment_new_part() -{ - return 0; -} -void icalmime_attachment_add_line(void *part, struct sspm_header *header, - char* line, size_t size) -{ -} - -void* icalmime_attachment_end_part(void* part) -{ - return 0; -} - -void icalmime_attachment_free_part(void *part) -{ -} - - - - -struct sspm_action_map icalmime_local_action_map[] = -{ - {SSPM_TEXT_MAJOR_TYPE,SSPM_CALENDAR_MINOR_TYPE,icalmime_text_new_part,icalmime_text_add_line,icalmime_textcalendar_end_part,icalmime_text_free_part}, - {SSPM_TEXT_MAJOR_TYPE,SSPM_ANY_MINOR_TYPE,icalmime_text_new_part,icalmime_text_add_line,icalmime_text_end_part,icalmime_text_free_part}, - {SSPM_APPLICATION_MAJOR_TYPE,SSPM_CALENDAR_MINOR_TYPE,icalmime_attachment_new_part,icalmime_attachment_add_line,icalmime_attachment_end_part,icalmime_attachment_free_part}, - {SSPM_IMAGE_MAJOR_TYPE,SSPM_CALENDAR_MINOR_TYPE,icalmime_attachment_new_part,icalmime_attachment_add_line,icalmime_attachment_end_part,icalmime_attachment_free_part}, - {SSPM_AUDIO_MAJOR_TYPE,SSPM_CALENDAR_MINOR_TYPE,icalmime_attachment_new_part,icalmime_attachment_add_line,icalmime_attachment_end_part,icalmime_attachment_free_part}, - {SSPM_IMAGE_MAJOR_TYPE,SSPM_CALENDAR_MINOR_TYPE,icalmime_attachment_new_part,icalmime_attachment_add_line,icalmime_attachment_end_part,icalmime_attachment_free_part}, - {SSPM_UNKNOWN_MAJOR_TYPE,SSPM_UNKNOWN_MINOR_TYPE,0,0,0,0} -}; - - -icalcomponent* icalmime_parse(char* (*get_string)(char *s, size_t size, - void *d), - void *data) -{ - -#define NUM_PARTS 100 /* HACK. Hard Limit */ - - struct sspm_part *parts; - int i, last_level=0; - icalcomponent *root=0, *parent=0, *comp=0, *last = 0; - - if ( (parts = (struct sspm_part *) - malloc(NUM_PARTS*sizeof(struct sspm_part)))==0) { - icalerror_set_errno(ICAL_NEWFAILED_ERROR); - return 0; - } - - memset(parts,0,sizeof(parts)); - - sspm_parse_mime(parts, - NUM_PARTS, /* Max parts */ - icalmime_local_action_map, /* Actions */ - get_string, - data, /* data for get_string*/ - 0 /* First header */); - - - - for(i = 0; i last_level){ - - parent = last; - icalcomponent_add_component(parent,comp); - - last_level = parts[i].level; - - } else if (parts[i].level < last_level){ - - parent = icalcomponent_get_parent(parent); - icalcomponent_add_component(parent,comp); - - last_level = parts[i].level; - } else { - assert(0); - } - - last = comp; - last_level = parts[i].level; - assert(parts[i].data == 0); - } - - sspm_free_parts(parts,NUM_PARTS); - free(parts); - - return root; -} - - - diff --git a/libical/src/libical/icalmime.h b/libical/src/libical/icalmime.h deleted file mode 100644 index d301debf7b..0000000000 --- a/libical/src/libical/icalmime.h +++ /dev/null @@ -1,41 +0,0 @@ -// -*- Mode: C -*- -/*====================================================================== - FILE: icalmime.h - CREATOR: eric 26 July 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 - - -======================================================================*/ - -#ifndef ICALMIME_H -#define ICALMIME_H - -#include "ical.h" - -icalcomponent* icalmime_parse( char* (*line_gen_func)(char *s, size_t size, - void *d), - void *data); - -#endif /* !ICALMIME_H */ - - - diff --git a/libical/src/libical/icalparameter.c b/libical/src/libical/icalparameter.c deleted file mode 100644 index c77c223f1c..0000000000 --- a/libical/src/libical/icalparameter.c +++ /dev/null @@ -1,2037 +0,0 @@ -/* -*- 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) - - ======================================================================*/ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include "ical.h" -#include "icalerror.h" -#include /* for malloc() */ -#include -#include /* for memset() */ -#include "icalmemory.h" - -struct icalparameter_impl -{ - icalparameter_kind kind; - char id[5]; - int size; - char* string; - char* x_name; - icalproperty* parent; - - union data { - int v_int; - int v_rsvp; - icalparameter_cutype v_cutype; - icalparameter_encoding v_encoding; - icalparameter_fbtype v_fbtype; - icalparameter_partstat v_partstat; - icalparameter_range v_range; - icalparameter_related v_related; - icalparameter_reltype v_reltype; - icalparameter_role v_role; - icalparameter_value v_value; - icalparameter_xlicerrortype v_xlicerrortype; - icalparameter_xliccomparetype v_xliccomparetype; - } data; -}; - -struct icalparameter_impl* icalparameter_new_impl(icalparameter_kind kind) -{ - struct icalparameter_impl* v; - - if ( ( v = (struct icalparameter_impl*) - malloc(sizeof(struct icalparameter_impl))) == 0) { - icalerror_set_errno(ICAL_NEWFAILED_ERROR); - return 0; - } - - strcpy(v->id,"para"); - - v->kind = kind; - v->size = 0; - v->string = 0; - v->x_name = 0; - v->parent = 0; - memset(&(v->data),0,sizeof(v->data)); - - return v; -} - -icalparameter* -icalparameter_new (icalparameter_kind kind) -{ - struct icalparameter_impl* v = icalparameter_new_impl(kind); - - return (icalparameter*) v; - -} - -icalparameter* -icalparameter_new_clone(icalparameter* param) -{ - struct icalparameter_impl *old; - struct icalparameter_impl *new; - - old = (struct icalparameter_impl *)param; - new = icalparameter_new_impl(old->kind); - - icalerror_check_arg_rz((param!=0),"param"); - - if (new == 0){ - return 0; - } - - memcpy(new,old,sizeof(struct icalparameter_impl)); - - if (old->string != 0){ - new->string = icalmemory_strdup(old->string); - if (new->string == 0){ - icalparameter_free(new); - return 0; - } - } - - if (old->x_name != 0){ - new->x_name = icalmemory_strdup(old->x_name); - if (new->x_name == 0){ - icalparameter_free(new); - return 0; - } - } - - return new; -} - -#if 0 - -struct param_string_map { - icalparameter_kind kind; - int val; /* Actually, union of several types of enums */ - char* str; -} param_string_map[] = -{ - {ICAL_CUTYPE_PARAMETER,ICAL_CUTYPE_INDIVIDUAL,"INDIVIDUAL"}, - {ICAL_CUTYPE_PARAMETER,ICAL_CUTYPE_GROUP,"GROUP"}, - {ICAL_CUTYPE_PARAMETER,ICAL_CUTYPE_RESOURCE,"RESOURCE"}, - {ICAL_CUTYPE_PARAMETER,ICAL_CUTYPE_ROOM,"ROOM"}, - {ICAL_CUTYPE_PARAMETER,ICAL_CUTYPE_UNKNOWN,"UNKNOWN"}, - {ICAL_FBTYPE_PARAMETER,ICAL_FBTYPE_FREE,"FREE"}, - {ICAL_FBTYPE_PARAMETER,ICAL_FBTYPE_BUSY,"BUSY"}, - {ICAL_FBTYPE_PARAMETER,ICAL_FBTYPE_BUSYUNAVAILABLE,"BUSYUNAVAILABLE"}, - {ICAL_FBTYPE_PARAMETER,ICAL_FBTYPE_BUSYTENTATIVE,"BUSYTENTATIVE"}, - {ICAL_PARTSTAT_PARAMETER,ICAL_PARTSTAT_NEEDSACTION,"NEEDSACTION"}, - {ICAL_PARTSTAT_PARAMETER,ICAL_PARTSTAT_ACCEPTED,"ACCEPTED"}, - {ICAL_PARTSTAT_PARAMETER,ICAL_PARTSTAT_DECLINED,"DECLINED"}, - {ICAL_PARTSTAT_PARAMETER,ICAL_PARTSTAT_TENTATIVE,"TENTATIVE"}, - {ICAL_PARTSTAT_PARAMETER,ICAL_PARTSTAT_DELEGATED,"DELEGATED"}, - {ICAL_PARTSTAT_PARAMETER,ICAL_PARTSTAT_COMPLETED,"COMPLETED"}, - {ICAL_PARTSTAT_PARAMETER,ICAL_PARTSTAT_INPROCESS,"INPROCESS"}, - {ICAL_RANGE_PARAMETER,ICAL_RANGE_THISANDPRIOR,"THISANDPRIOR"}, - {ICAL_RANGE_PARAMETER,ICAL_RANGE_THISANDFUTURE,"THISANDFUTURE"}, - {ICAL_RELATED_PARAMETER,ICAL_RELATED_START,"START"}, - {ICAL_RELATED_PARAMETER,ICAL_RELATED_END,"END"}, - {ICAL_RELTYPE_PARAMETER,ICAL_RELTYPE_PARENT,"PARENT"}, - {ICAL_RELTYPE_PARAMETER,ICAL_RELTYPE_CHILD,"CHILD"}, - {ICAL_RELTYPE_PARAMETER,ICAL_RELTYPE_SIBLING,"SIBLING"}, - {ICAL_ROLE_PARAMETER,ICAL_ROLE_CHAIR,"CHAIR"}, - {ICAL_RSVP_PARAMETER,ICAL_RSVP_PARAMETER,"TRUE"}, - {ICAL_RSVP_PARAMETER,ICAL_RSVP_PARAMETER,"FALSE"}, - {ICAL_VALUE_PARAMETER,ICAL_VALUE_BINARY,"BINARY"}, - {ICAL_VALUE_PARAMETER,ICAL_VALUE_BOOLEAN,"BOOLEAN"}, - {ICAL_VALUE_PARAMETER,ICAL_VALUE_DATE,"DATE"}, - {ICAL_VALUE_PARAMETER,ICAL_VALUE_DURATION,"DURATION"}, - {ICAL_VALUE_PARAMETER,ICAL_VALUE_FLOAT,"FLOAT"}, - {ICAL_VALUE_PARAMETER,ICAL_VALUE_INTEGER,"INTEGER"}, - {ICAL_VALUE_PARAMETER,ICAL_VALUE_PERIOD,"PERIOD"}, - {ICAL_VALUE_PARAMETER,ICAL_VALUE_RECUR,"RECUR"}, - {ICAL_VALUE_PARAMETER,ICAL_VALUE_TEXT,"TEXT"}, - {ICAL_VALUE_PARAMETER,ICAL_VALUE_TIME,"TIME"}, - {ICAL_VALUE_PARAMETER,ICAL_VALUE_URI,"URI"}, - {ICAL_VALUE_PARAMETER,ICAL_VALUE_XNAME,"ERROR"}, - {ICAL_XLICERRORTYPE_PARAMETER,ICAL_XLICERRORTYPE_COMPONENTPARSEERROR,"COMPONENT_PARSE_ERROR"}, - {ICAL_XLICERRORTYPE_PARAMETER,ICAL_XLICERRORTYPE_PROPERTYPARSEERROR,"PROPERTY_PARSE_ERROR"}, - {ICAL_XLICERRORTYPE_PARAMETER,ICAL_XLICERRORTYPE_PARAMETERNAMEPARSEERROR,"PARAMETER_NAME_PARSE_ERROR"}, - {ICAL_XLICERRORTYPE_PARAMETER,ICAL_XLICERRORTYPE_PARAMETERVALUEPARSEERROR,"PARAMETER_VALUE_PARSE_ERROR"}, - {ICAL_XLICERRORTYPE_PARAMETER,ICAL_XLICERRORTYPE_VALUEPARSEERROR,"VALUE_PARSE_ERROR"}, - {ICAL_XLICERRORTYPE_PARAMETER,ICAL_XLICERRORTYPE_INVALIDITIP,"INVALID_ITIP"}, - {ICAL_XLICERRORTYPE_PARAMETER,ICAL_XLICERRORTYPE_UNKVCALPROP,"UNKNOWN_VCAL_PROP_ERROR"}, - {ICAL_XLICERRORTYPE_PARAMETER,ICAL_XLICERRORTYPE_MIMEPARSEERROR,"MIME_PARSE_ERROR"}, - {ICAL_XLICCOMPARETYPE_PARAMETER,ICAL_XLICCOMPARETYPE_EQUAL,"EQUAL"}, - {ICAL_XLICCOMPARETYPE_PARAMETER,ICAL_XLICCOMPARETYPE_NOTEQUAL,"NOTEQUAL"}, - {ICAL_XLICCOMPARETYPE_PARAMETER,ICAL_XLICCOMPARETYPE_LESS,"LESS"}, - {ICAL_XLICCOMPARETYPE_PARAMETER,ICAL_XLICCOMPARETYPE_GREATER,"GREATER"}, - {ICAL_XLICCOMPARETYPE_PARAMETER,ICAL_XLICCOMPARETYPE_LESSEQUAL,"LESSEQUAL"}, - {ICAL_XLICCOMPARETYPE_PARAMETER,ICAL_XLICCOMPARETYPE_GREATEREQUAL,"GREATEREQUAL"}, - {ICAL_XLICCOMPARETYPE_PARAMETER,ICAL_XLICCOMPARETYPE_REGEX,"REGEX"}, - {ICAL_NO_PARAMETER,0,""}, - -}; - - -icalparameter* icalparameter_new_from_string(icalparameter_kind kind, char* val) -{ - int i =0; - icalparameter* param=0; - - icalerror_check_arg_rz((val!=0),"val"); - - switch(kind){ - case ICAL_SENTBY_PARAMETER: - case ICAL_TZID_PARAMETER: - case ICAL_X_PARAMETER: - case ICAL_FMTTYPE_PARAMETER: - case ICAL_LANGUAGE_PARAMETER: - case ICAL_MEMBER_PARAMETER: - case ICAL_DELEGATEDFROM_PARAMETER: - case ICAL_DELEGATEDTO_PARAMETER: - case ICAL_DIR_PARAMETER: - case ICAL_ALTREP_PARAMETER: - case ICAL_CN_PARAMETER: - { - if (impl->string == 0){ return no_parameter;} - strcpy(tend,impl->string);break; - break; - } - - case ICAL_NO_PARAMETER: - case ICAL_ANY_PARAMETER: - { - } - - default: { - /* All other types are enumerated */ - for(i = 0; param_string_map[i].kind != ICAL_NO_PARAMETER){ - if(kind == param_string_map[i].kind && - strcmp(val,param_string_map[i].str) == 0){ - - - } - } - } -} - -#endif - - -icalparameter* icalparameter_new_from_string(icalparameter_kind kind, char* val) -{ - - icalparameter* param=0; - - icalerror_check_arg_rz((val!=0),"val"); - - switch (kind) { - case ICAL_ALTREP_PARAMETER: - { - param = icalparameter_new_altrep(val); - - break; - } - case ICAL_CN_PARAMETER: - { - param = icalparameter_new_cn(val); - - break; - } - case ICAL_CUTYPE_PARAMETER: - { - if(strcmp(val,"INDIVIDUAL") == 0){ - param = icalparameter_new_cutype(ICAL_CUTYPE_INDIVIDUAL); - } - else if(strcmp(val,"GROUP") == 0){ - param = icalparameter_new_cutype(ICAL_CUTYPE_GROUP); - } - else if(strcmp(val,"RESOURCE") == 0){ - param = icalparameter_new_cutype(ICAL_CUTYPE_RESOURCE); - } - else if(strcmp(val,"ROOM") == 0){ - param = icalparameter_new_cutype(ICAL_CUTYPE_ROOM); - } - else if(strcmp(val,"UNKNOWN") == 0){ - param = icalparameter_new_cutype(ICAL_CUTYPE_UNKNOWN); - } - else { - param = icalparameter_new_cutype(ICAL_CUTYPE_XNAME); - icalparameter_set_xvalue(param,val); - } - break; - } - - case ICAL_DELEGATEDFROM_PARAMETER: - { - param = icalparameter_new_delegatedfrom(val); - - break; - } - case ICAL_DELEGATEDTO_PARAMETER: - { - param = icalparameter_new_delegatedto(val); - - break; - } - case ICAL_DIR_PARAMETER: - { - param = icalparameter_new_dir(val); - - break; - } - case ICAL_ENCODING_PARAMETER: - { - if(strcmp(val,"BIT8") == 0){ - param = icalparameter_new_encoding(ICAL_ENCODING_8BIT); - } - else if(strcmp(val,"BASE64") == 0){ - param = icalparameter_new_encoding(ICAL_ENCODING_BASE64); - } - else { - param = icalparameter_new_encoding(ICAL_ENCODING_XNAME); - icalparameter_set_xvalue(param,val); - } - break; - } - case ICAL_FBTYPE_PARAMETER: - { - if(strcmp(val,"FREE") == 0){ - param = icalparameter_new_fbtype(ICAL_FBTYPE_FREE); - } - else if(strcmp(val,"BUSY") == 0){ - param = icalparameter_new_fbtype(ICAL_FBTYPE_BUSY); - } - else if(strcmp(val,"BUSYUNAVAILABLE") == 0){ - param = icalparameter_new_fbtype(ICAL_FBTYPE_BUSYUNAVAILABLE); - } - else if(strcmp(val,"BUSYTENTATIVE") == 0){ - param = icalparameter_new_fbtype(ICAL_FBTYPE_BUSYTENTATIVE); - } - else { - param = icalparameter_new_fbtype(ICAL_FBTYPE_XNAME); - icalparameter_set_xvalue(param,val); - } - break; - } - case ICAL_FMTTYPE_PARAMETER: - { - param = icalparameter_new_fmttype(val); - break; - } - case ICAL_LANGUAGE_PARAMETER: - { - param = icalparameter_new_language(val); - - break; - } - case ICAL_MEMBER_PARAMETER: - { - param = icalparameter_new_member(val); - - break; - } - case ICAL_PARTSTAT_PARAMETER: - { - if(strcmp(val,"NEEDSACTION") == 0){ - param = icalparameter_new_partstat(ICAL_PARTSTAT_NEEDSACTION); - } - else if(strcmp(val,"ACCEPTED") == 0){ - param = icalparameter_new_partstat(ICAL_PARTSTAT_ACCEPTED); - } - else if(strcmp(val,"DECLINED") == 0){ - param = icalparameter_new_partstat(ICAL_PARTSTAT_DECLINED); - } - else if(strcmp(val,"TENTATIVE") == 0){ - param = icalparameter_new_partstat(ICAL_PARTSTAT_TENTATIVE); - } - else if(strcmp(val,"DELEGATED") == 0){ - param = icalparameter_new_partstat(ICAL_PARTSTAT_DELEGATED); - } - else if(strcmp(val,"COMPLETED") == 0){ - param = icalparameter_new_partstat(ICAL_PARTSTAT_COMPLETED); - } - else if(strcmp(val,"INPROCESS") == 0){ - param = icalparameter_new_partstat(ICAL_PARTSTAT_INPROCESS); - } - else { - param = icalparameter_new_partstat(ICAL_PARTSTAT_XNAME); - icalparameter_set_xvalue(param,val); - } - break; - } - case ICAL_RANGE_PARAMETER: - { - if(strcmp(val,"THISANDFUTURE") == 0){ - param = icalparameter_new_range(ICAL_RANGE_THISANDFUTURE); - } - else if(strcmp(val,"THISANDPRIOR") == 0){ - param = icalparameter_new_range(ICAL_RANGE_THISANDPRIOR); - } - - break; - } - case ICAL_RELATED_PARAMETER: - { - if(strcmp(val,"START") == 0){ - param = icalparameter_new_related(ICAL_RELATED_START); - } - else if(strcmp(val,"END") == 0){ - param = icalparameter_new_related(ICAL_RELATED_END); - } - - break; - } - case ICAL_RELTYPE_PARAMETER: - { - if(strcmp(val,"PARENT") == 0){ - param = icalparameter_new_reltype(ICAL_RELTYPE_PARENT); - } - else if(strcmp(val,"CHILD") == 0){ - param = icalparameter_new_reltype(ICAL_RELTYPE_CHILD); - } - else if(strcmp(val,"SIBLING") == 0){ - param = icalparameter_new_reltype(ICAL_RELTYPE_SIBLING); - } - else { - param = icalparameter_new_reltype(ICAL_RELTYPE_XNAME); - icalparameter_set_xvalue(param,val); - } - break; - } - case ICAL_ROLE_PARAMETER: - { - if(strcmp(val,"CHAIR") == 0){ - param = icalparameter_new_role(ICAL_ROLE_CHAIR); - } - else if(strcmp(val,"REQ-PARTICIPANT") == 0){ - param = icalparameter_new_role(ICAL_ROLE_REQPARTICIPANT); - } - else if(strcmp(val,"OPT-PARTICIPANT") == 0){ - param = icalparameter_new_role(ICAL_ROLE_OPTPARTICIPANT); - } - else if(strcmp(val,"NON-PARTICIPANT") == 0){ - param = icalparameter_new_role(ICAL_ROLE_NONPARTICIPANT); - } - else { - param = icalparameter_new_role(ICAL_ROLE_XNAME); - icalparameter_set_xvalue(param,val); - } - break; - } - case ICAL_RSVP_PARAMETER: - { - if(strcmp(val,"TRUE") == 0){ - param = icalparameter_new_rsvp(1); - } - else if(strcmp(val,"FALSE") == 0){ - param = icalparameter_new_rsvp(0); - } - - break; - } - case ICAL_SENTBY_PARAMETER: - { - param = icalparameter_new_sentby(val); - - break; - } - case ICAL_TZID_PARAMETER: - { - param = icalparameter_new_tzid(val); - - break; - } - case ICAL_VALUE_PARAMETER: - { - if(strcmp(val,"BINARY") == 0){ - param = icalparameter_new_value(ICAL_VALUE_BINARY); - } - else if(strcmp(val,"BOOLEAN") == 0){ - param = icalparameter_new_value(ICAL_VALUE_BOOLEAN); - } - else if(strcmp(val,"CAL-ADDRESS") == 0){ - param = icalparameter_new_value(ICAL_VALUE_CALADDRESS); - } - else if(strcmp(val,"DATE") == 0){ - param = icalparameter_new_value(ICAL_VALUE_DATE); - } - else if(strcmp(val,"DATE-TIME") == 0){ - param = icalparameter_new_value(ICAL_VALUE_DATETIME); - } - else if(strcmp(val,"DURATION") == 0){ - param = icalparameter_new_value(ICAL_VALUE_DURATION); - } - else if(strcmp(val,"FLOAT") == 0){ - param = icalparameter_new_value(ICAL_VALUE_FLOAT); - } - else if(strcmp(val,"INTEGER") == 0){ - param = icalparameter_new_value(ICAL_VALUE_INTEGER); - } - else if(strcmp(val,"PERIOD") == 0){ - param = icalparameter_new_value(ICAL_VALUE_PERIOD); - } - else if(strcmp(val,"RECUR") == 0){ - param = icalparameter_new_value(ICAL_VALUE_RECUR); - } - else if(strcmp(val,"TEXT") == 0){ - param = icalparameter_new_value(ICAL_VALUE_TEXT); - } - else if(strcmp(val,"TIME") == 0){ - param = icalparameter_new_value(ICAL_VALUE_TIME); - } - else if(strcmp(val,"URI") == 0){ - param = icalparameter_new_value(ICAL_VALUE_URI); - } - else if(strcmp(val,"UTC-OFFSET") == 0){ - param = icalparameter_new_value(ICAL_VALUE_UTCOFFSET); - } - else { - param = 0; - } - break; - } - case ICAL_XLICERRORTYPE_PARAMETER: - { - - if(strcmp(val,"COMPONENT_PARSE_ERROR") == 0){ - param = icalparameter_new_xlicerrortype(ICAL_XLICERRORTYPE_COMPONENTPARSEERROR); - } - else if(strcmp(val,"PROPERTY_PARSE_ERROR") == 0){ - param = icalparameter_new_xlicerrortype(ICAL_XLICERRORTYPE_PROPERTYPARSEERROR); - } - else if(strcmp(val,"PARAMETER_NAME_PARSE_ERROR") == 0){ - param = icalparameter_new_xlicerrortype(ICAL_XLICERRORTYPE_PARAMETERNAMEPARSEERROR); - } - else if(strcmp(val,"PARAMETER_VALUE_PARSE_ERROR") == 0){ - param = icalparameter_new_xlicerrortype(ICAL_XLICERRORTYPE_PARAMETERVALUEPARSEERROR); - } - else if(strcmp(val,"VALUE_PARSE_ERROR") == 0){ - param = icalparameter_new_xlicerrortype(ICAL_XLICERRORTYPE_VALUEPARSEERROR); - } - else if(strcmp(val,"INVALID_ITIP") == 0){ - param = icalparameter_new_xlicerrortype(ICAL_XLICERRORTYPE_INVALIDITIP); - } - else if(strcmp(val,"MIME_PARSE_ERROR") == 0){ - param = icalparameter_new_xlicerrortype(ICAL_XLICERRORTYPE_MIMEPARSEERROR); - } - else if(strcmp(val,"UNKNOWN_VCAL_PROP_ERROR") == 0){ - param = icalparameter_new_xlicerrortype(ICAL_XLICERRORTYPE_UNKVCALPROP); - } - break; - } - - case ICAL_XLICCOMPARETYPE_PARAMETER: - { - - if(strcmp(val,"EQUAL") == 0){ - param = icalparameter_new_xliccomparetype(ICAL_XLICCOMPARETYPE_EQUAL); - } - else if(strcmp(val,"NOTEQUAL") == 0){ - param = icalparameter_new_xliccomparetype(ICAL_XLICCOMPARETYPE_NOTEQUAL); - } - else if(strcmp(val,"LESS") == 0){ - param = icalparameter_new_xliccomparetype(ICAL_XLICCOMPARETYPE_LESS); - } - else if(strcmp(val,"GREATER") == 0){ - param = icalparameter_new_xliccomparetype(ICAL_XLICCOMPARETYPE_GREATER); - } - else if(strcmp(val,"LESSEQUAL") == 0){ - param = icalparameter_new_xliccomparetype(ICAL_XLICCOMPARETYPE_LESSEQUAL); - } - else if(strcmp(val,"GREATEREQUAL") == 0){ - param = icalparameter_new_xliccomparetype(ICAL_XLICCOMPARETYPE_GREATEREQUAL); - } - else if(strcmp(val,"REGEX") == 0){ - param = icalparameter_new_xliccomparetype(ICAL_XLICCOMPARETYPE_REGEX); - } else { - param = 0; - } - break; - } - - - case ICAL_X_PARAMETER: - { - param = icalparameter_new(ICAL_FBTYPE_PARAMETER); - icalparameter_set_xvalue(param,val); - break; - } - - case ICAL_NO_PARAMETER: - default: - { - return 0; - } - - - } - - return param; -} - -void -icalparameter_free (icalparameter* parameter) -{ - struct icalparameter_impl * impl; - - impl = (struct icalparameter_impl*)parameter; - -/* HACK. This always triggers, even when parameter is non-zero - icalerror_check_arg_rv((parameter==0),"parameter");*/ - - -#ifdef ICAL_FREE_ON_LIST_IS_ERROR - icalerror_assert( (impl->parent ==0),"Tried to free a parameter that is still attached to a component. "); - -#else - if(impl->parent !=0){ - return; - } -#endif - - - if (impl->string != 0){ - free (impl->string); - } - - if (impl->x_name != 0){ - free (impl->x_name); - } - - memset(impl,0,sizeof(impl)); - - impl->parent = 0; - impl->id[0] = 'X'; - free(impl); -} - - -char no_parameter[]="Error: No Parameter"; -char* -icalparameter_as_ical_string (icalparameter* parameter) -{ - struct icalparameter_impl* impl; - size_t buf_size = 1024; - char* buf; - char* buf_ptr; - char *out_buf; - char *kind_string; - - char tend[1024]; /* HACK . Should be using memory buffer ring */ - - icalerror_check_arg_rz( (parameter!=0), "parameter"); - - /* Create new buffer that we can append names, parameters and a - value to, and reallocate as needed. Later, this buffer will be - copied to a icalmemory_tmp_buffer, which is managed internally - by libical, so it can be given to the caller without fear of - the caller forgetting to free it */ - - buf = icalmemory_new_buffer(buf_size); - buf_ptr = buf; - impl = (struct icalparameter_impl*)parameter; - - kind_string = icalenum_parameter_kind_to_string(impl->kind); - - if (impl->kind == ICAL_NO_PARAMETER || - impl->kind == ICAL_ANY_PARAMETER || - kind_string == 0) - { - icalerror_set_errno(ICAL_BADARG_ERROR); - return 0; - } - - /* Put the parameter name into the string */ - icalmemory_append_string(&buf, &buf_ptr, &buf_size, kind_string); - icalmemory_append_string(&buf, &buf_ptr, &buf_size, "="); - - switch (impl->kind) { - case ICAL_CUTYPE_PARAMETER: - { - switch (impl->data.v_cutype) { - case ICAL_CUTYPE_INDIVIDUAL: { - strcpy(tend,"INDIVIDUAL");break; - } - case ICAL_CUTYPE_GROUP:{ - strcpy(tend,"GROUP");break; - } - case ICAL_CUTYPE_RESOURCE: { - strcpy(tend,"RESOURCE");break; - } - case ICAL_CUTYPE_ROOM:{ - strcpy(tend,"ROOM");break; - } - case ICAL_CUTYPE_UNKNOWN:{ - strcpy(tend,"UNKNOWN");break; - } - case ICAL_CUTYPE_XNAME:{ - if (impl->string == 0){ return no_parameter;} - strcpy(tend,impl->string);break; - } - default:{ - icalerror_set_errno(ICAL_BADARG_ERROR);break; - } - } - break; - - } - case ICAL_ENCODING_PARAMETER: - { - switch (impl->data.v_encoding) { - case ICAL_ENCODING_8BIT: { - strcpy(tend,"8BIT");break; - } - case ICAL_ENCODING_BASE64:{ - strcpy(tend,"BASE64");break; - } - default:{ - icalerror_set_errno(ICAL_BADARG_ERROR);break; - } - } - break; - } - - case ICAL_FBTYPE_PARAMETER: - { - switch (impl->data.v_fbtype) { - case ICAL_FBTYPE_FREE:{ - strcpy(tend,"FREE");break; - } - case ICAL_FBTYPE_BUSY: { - strcpy(tend,"BUSY");break; - } - case ICAL_FBTYPE_BUSYUNAVAILABLE:{ - strcpy(tend,"BUSYUNAVAILABLE");break; - } - case ICAL_FBTYPE_BUSYTENTATIVE:{ - strcpy(tend,"BUSYTENTATIVE");break; - } - case ICAL_FBTYPE_XNAME:{ - if (impl->string == 0){ return no_parameter;} - strcpy(tend,impl->string);break; - } - default:{ - icalerror_set_errno(ICAL_BADARG_ERROR);break; - } - } - break; - - } - case ICAL_PARTSTAT_PARAMETER: - { - switch (impl->data.v_partstat) { - case ICAL_PARTSTAT_NEEDSACTION: { - strcpy(tend,"NEEDSACTION");break; - } - case ICAL_PARTSTAT_ACCEPTED: { - strcpy(tend,"ACCEPTED");break; - } - case ICAL_PARTSTAT_DECLINED:{ - strcpy(tend,"DECLINED");break; - } - case ICAL_PARTSTAT_TENTATIVE:{ - strcpy(tend,"TENTATIVE");break; - } - case ICAL_PARTSTAT_DELEGATED:{ - strcpy(tend,"DELEGATED");break; - } - case ICAL_PARTSTAT_COMPLETED:{ - strcpy(tend,"COMPLETED");break; - } - case ICAL_PARTSTAT_INPROCESS:{ - strcpy(tend,"INPROCESS");break; - } - case ICAL_PARTSTAT_XNAME:{ - if (impl->string == 0){ return no_parameter;} - strcpy(tend,impl->string);break; - } - default:{ - icalerror_set_errno(ICAL_BADARG_ERROR);break; - } - } - break; - - } - case ICAL_RANGE_PARAMETER: - { - switch (impl->data.v_range) { - case ICAL_RANGE_THISANDPRIOR: { - strcpy(tend,"THISANDPRIOR");break; - } - case ICAL_RANGE_THISANDFUTURE: { - strcpy(tend,"THISANDFUTURE");break; - } - default:{ - icalerror_set_errno(ICAL_BADARG_ERROR);break; - } - } - break; - } - case ICAL_RELATED_PARAMETER: - { - switch (impl->data.v_related) { - case ICAL_RELATED_START: { - strcpy(tend,"START");break; - } - case ICAL_RELATED_END: { - strcpy(tend,"END");break; - } - default:{ - icalerror_set_errno(ICAL_BADARG_ERROR);break; - } - } - break; - } - case ICAL_RELTYPE_PARAMETER: - { - switch (impl->data.v_reltype) { - case ICAL_RELTYPE_PARENT: { - strcpy(tend,"PARENT");break; - } - case ICAL_RELTYPE_CHILD:{ - strcpy(tend,"CHILD");break; - } - case ICAL_RELTYPE_SIBLING:{ - strcpy(tend,"SIBLING");break; - } - case ICAL_RELTYPE_XNAME:{ - if (impl->string == 0){ return no_parameter;} - strcpy(tend,impl->string);break; - } - default:{ - icalerror_set_errno(ICAL_BADARG_ERROR);break; - } - } - break; - } - case ICAL_ROLE_PARAMETER: - { - switch (impl->data.v_role) { - case ICAL_ROLE_CHAIR: { - strcpy(tend,"CHAIR");break; - } - case ICAL_ROLE_REQPARTICIPANT: { - strcpy(tend,"REQ-PARTICIPANT");break; - } - case ICAL_ROLE_OPTPARTICIPANT: { - strcpy(tend,"OPT-PARTICIPANT");break; - } - case ICAL_ROLE_NONPARTICIPANT: { - strcpy(tend,"NON-PARTICIPANT");break; - } - case ICAL_ROLE_XNAME:{ - if (impl->string == 0){ return no_parameter;} - strcpy(tend,impl->string);break; - } - default:{ - icalerror_set_errno(ICAL_BADARG_ERROR);break; - } - } - break; - } - case ICAL_RSVP_PARAMETER: - { - switch (impl->data.v_rsvp) { - case 1: { - strcpy(tend,"TRUE");break; - } - case 0: { - strcpy(tend,"FALSE");break; - } - default:{ - icalerror_set_errno(ICAL_BADARG_ERROR);break; - } - } - break; - } - case ICAL_VALUE_PARAMETER: - { - switch (impl->data.v_value) { - case ICAL_VALUE_BINARY: { - strcpy(tend,"BINARY");break; - } - case ICAL_VALUE_BOOLEAN: { - strcpy(tend,"BOOLEAN");break; - } - case ICAL_VALUE_CALADDRESS: { - strcpy(tend,"CAL-ADDRESS");break; - } - case ICAL_VALUE_DATE: { - strcpy(tend,"DATE");break; - } - case ICAL_VALUE_DATETIME: { - strcpy(tend,"DATE-TIME");break; - } - case ICAL_VALUE_DURATION: { - strcpy(tend,"DURATION");break; - } - case ICAL_VALUE_FLOAT: { - strcpy(tend,"FLOAT");break; - } - case ICAL_VALUE_INTEGER: { - strcpy(tend,"INTEGER");break; - } - case ICAL_VALUE_PERIOD: { - strcpy(tend,"PERIOD");break; - } - case ICAL_VALUE_RECUR: { - strcpy(tend,"RECUR");break; - } - case ICAL_VALUE_TEXT: { - strcpy(tend,"TEXT");break; - } - case ICAL_VALUE_TIME: { - strcpy(tend,"TIME");break; - } - case ICAL_VALUE_URI: { - strcpy(tend,"URI");break; - } - case ICAL_VALUE_UTCOFFSET: { - strcpy(tend,"UTC-OFFSET");break; - } - case ICAL_VALUE_XNAME: { - if (impl->string == 0){ return no_parameter;} - strcpy(tend,impl->string);break; - } - default:{ - strcpy(tend,"ERROR"); - icalerror_set_errno(ICAL_BADARG_ERROR);break; - } - } - break; - } - - - case ICAL_XLICERRORTYPE_PARAMETER: - { - switch (impl->data.v_xlicerrortype) { - case ICAL_XLICERRORTYPE_COMPONENTPARSEERROR: - { - strcpy(tend,"COMPONENT_PARSE_ERROR");break; - } - case ICAL_XLICERRORTYPE_PROPERTYPARSEERROR: - { - strcpy(tend,"PROPERTY_PARSE_ERROR");break; - } - case ICAL_XLICERRORTYPE_PARAMETERNAMEPARSEERROR: - { - strcpy(tend,"PARAMETER_NAME_PARSE_ERROR");break; - } - case ICAL_XLICERRORTYPE_PARAMETERVALUEPARSEERROR: - { - strcpy(tend,"PARAMETER_VALUE_PARSE_ERROR");break; - } - case ICAL_XLICERRORTYPE_VALUEPARSEERROR: - { - strcpy(tend,"VALUE_PARSE_ERROR");break; - } - case ICAL_XLICERRORTYPE_INVALIDITIP: - { - strcpy(tend,"INVALID_ITIP");break; - } - case ICAL_XLICERRORTYPE_UNKVCALPROP: - { - strcpy(tend,"UNKNOWN_VCAL_PROP_ERROR");break; - } - case ICAL_XLICERRORTYPE_MIMEPARSEERROR: - { - strcpy(tend,"MIME_PARSE_ERROR");break; - } - } - break; - } - - case ICAL_XLICCOMPARETYPE_PARAMETER: - { - switch (impl->data.v_xliccomparetype) { - case ICAL_XLICCOMPARETYPE_EQUAL: - { - strcpy(tend,"EQUAL");break; - } - case ICAL_XLICCOMPARETYPE_NOTEQUAL: - { - strcpy(tend,"NOTEQUAL");break; - } - case ICAL_XLICCOMPARETYPE_LESS: - { - strcpy(tend,"LESS");break; - } - case ICAL_XLICCOMPARETYPE_GREATER: - { - strcpy(tend,"GREATER");break; - } - case ICAL_XLICCOMPARETYPE_LESSEQUAL: - { - strcpy(tend,"LESSEQUAL");break; - } - case ICAL_XLICCOMPARETYPE_GREATEREQUAL: - { - strcpy(tend,"GREATEREQUAL");break; - } - case ICAL_XLICCOMPARETYPE_REGEX: - { - strcpy(tend,"REGEX");break; - } - break; - } - - default:{ - icalerror_set_errno(ICAL_BADARG_ERROR);break; - } - break; - } - - - case ICAL_SENTBY_PARAMETER: - case ICAL_TZID_PARAMETER: - case ICAL_X_PARAMETER: - case ICAL_FMTTYPE_PARAMETER: - case ICAL_LANGUAGE_PARAMETER: - case ICAL_MEMBER_PARAMETER: - case ICAL_DELEGATEDFROM_PARAMETER: - case ICAL_DELEGATEDTO_PARAMETER: - case ICAL_DIR_PARAMETER: - case ICAL_ALTREP_PARAMETER: - case ICAL_CN_PARAMETER: - { - if (impl->string == 0){ return no_parameter;} - strcpy(tend,impl->string);break; - break; - } - - case ICAL_NO_PARAMETER: - case ICAL_ANY_PARAMETER: - { - /* These are actually handled before the case/switch - clause */ - } - - } - - icalmemory_append_string(&buf, &buf_ptr, &buf_size, tend); - - /* Now, copy the buffer to a tmp_buffer, which is safe to give to - the caller without worring about de-allocating it. */ - - - out_buf = icalmemory_tmp_buffer(strlen(buf)); - strcpy(out_buf, buf); - - icalmemory_free_buffer(buf); - - return out_buf; - -} - - -int -icalparameter_is_valid (icalparameter* parameter); - - -icalparameter_kind -icalparameter_isa (icalparameter* parameter) -{ - if(parameter == 0){ - return ICAL_NO_PARAMETER; - } - - return ((struct icalparameter_impl *)parameter)->kind; -} - - -int -icalparameter_isa_parameter (void* parameter) -{ - struct icalparameter_impl *impl = (struct icalparameter_impl *)parameter; - - if (parameter == 0){ - return 0; - } - - if (strcmp(impl->id,"para") == 0) { - return 1; - } else { - return 0; - } -} - - -void -icalparameter_set_xname (icalparameter* param, char* v) -{ - struct icalparameter_impl *impl = (struct icalparameter_impl*)param; - icalerror_check_arg_rv( (param!=0),"param"); - icalerror_check_arg_rv( (v!=0),"v"); - - if (impl->x_name != 0){ - free(impl->x_name); - } - - impl->x_name = icalmemory_strdup(v); - - if (impl->x_name == 0){ - errno = ENOMEM; - } - -} - -char* -icalparameter_get_xname (icalparameter* param) -{ - struct icalparameter_impl *impl = (struct icalparameter_impl*)param; - icalerror_check_arg_rz( (param!=0),"param"); - - return impl->x_name; -} - -void -icalparameter_set_xvalue (icalparameter* param, char* v) -{ - struct icalparameter_impl *impl = (struct icalparameter_impl*)param; - - icalerror_check_arg_rv( (param!=0),"param"); - icalerror_check_arg_rv( (v!=0),"v"); - - if (impl->string != 0){ - free(impl->string); - } - - impl->string = icalmemory_strdup(v); - - if (impl->string == 0){ - errno = ENOMEM; - } - -} - -char* -icalparameter_get_xvalue (icalparameter* param) -{ - struct icalparameter_impl *impl = (struct icalparameter_impl*)param; - - icalerror_check_arg_rz( (param!=0),"param"); - - return impl->string; - -} - -void icalparameter_set_parent(icalparameter* param, - icalproperty* property) -{ - struct icalparameter_impl *impl = (struct icalparameter_impl*)param; - - icalerror_check_arg_rv( (param!=0),"param"); - - impl->parent = property; -} - -icalproperty* icalparameter_get_parent(icalparameter* param) -{ - struct icalparameter_impl *impl = (struct icalparameter_impl*)param; - - icalerror_check_arg_rv( (param!=0),"param"); - - return impl->parent; -} - - -/* Everything below this line is machine generated. Do not edit. */ -/* ALTREP */ -icalparameter* icalparameter_new_altrep(char* v) -{ - struct icalparameter_impl *impl; - icalerror_clear_errno(); - icalerror_check_arg_rz( (v!=0),"v"); - impl = icalparameter_new_impl(ICAL_ALTREP_PARAMETER); - if (impl == 0) { - return 0; - } - - icalparameter_set_altrep((icalparameter*) impl,v); - if (icalerrno != ICAL_NO_ERROR) { - icalparameter_free((icalparameter*) impl); - return 0; - } - - return (icalparameter*) impl; -} - -char* icalparameter_get_altrep(icalparameter* param) -{ - icalerror_clear_errno(); - icalerror_check_arg_rz( (param!=0), "param"); - return ((struct icalparameter_impl*)param)->string; -} - -void icalparameter_set_altrep(icalparameter* param, char* v) -{ - icalerror_check_arg_rv( (v!=0),"v"); - icalerror_check_arg_rv( (param!=0), "param"); - icalerror_clear_errno(); - - ((struct icalparameter_impl*)param)->string = icalmemory_strdup(v); -} - -/* CN */ -icalparameter* icalparameter_new_cn(char* v) -{ - struct icalparameter_impl *impl; - icalerror_clear_errno(); - icalerror_check_arg_rz( (v!=0),"v"); - impl = icalparameter_new_impl(ICAL_CN_PARAMETER); - if (impl == 0) { - return 0; - } - - icalparameter_set_cn((icalparameter*) impl,v); - if (icalerrno != ICAL_NO_ERROR) { - icalparameter_free((icalparameter*) impl); - return 0; - } - - return (icalparameter*) impl; -} - -char* icalparameter_get_cn(icalparameter* param) -{ - icalerror_clear_errno(); - icalerror_check_arg_rz( (param!=0), "param"); - return ((struct icalparameter_impl*)param)->string; -} - -void icalparameter_set_cn(icalparameter* param, char* v) -{ - icalerror_check_arg_rv( (v!=0),"v"); - icalerror_check_arg_rv( (param!=0), "param"); - icalerror_clear_errno(); - - ((struct icalparameter_impl*)param)->string = icalmemory_strdup(v); -} - -/* CUTYPE */ -icalparameter* icalparameter_new_cutype(icalparameter_cutype v) -{ - struct icalparameter_impl *impl; - icalerror_clear_errno(); - - impl = icalparameter_new_impl(ICAL_CUTYPE_PARAMETER); - if (impl == 0) { - return 0; - } - - icalparameter_set_cutype((icalparameter*) impl,v); - if (icalerrno != ICAL_NO_ERROR) { - icalparameter_free((icalparameter*) impl); - return 0; - } - - return (icalparameter*) impl; -} - -icalparameter_cutype icalparameter_get_cutype(icalparameter* param) -{ - icalerror_clear_errno(); - icalerror_check_arg( (param!=0), "param"); - if ( ((struct icalparameter_impl*)param)->string != 0){ - return ICAL_CUTYPE_XNAME; - } - - return ((struct icalparameter_impl*)param)->data.v_cutype; - -} - -void icalparameter_set_cutype(icalparameter* param, icalparameter_cutype v) -{ - - icalerror_check_arg_rv( (param!=0), "param"); - icalerror_clear_errno(); - - ((struct icalparameter_impl*)param)->data.v_cutype = v; -} - -/* DELEGATED-FROM */ -icalparameter* icalparameter_new_delegatedfrom(char* v) -{ - struct icalparameter_impl *impl; - icalerror_clear_errno(); - icalerror_check_arg_rz( (v!=0),"v"); - impl = icalparameter_new_impl(ICAL_DELEGATEDFROM_PARAMETER); - if (impl == 0) { - return 0; - } - - icalparameter_set_delegatedfrom((icalparameter*) impl,v); - if (icalerrno != ICAL_NO_ERROR) { - icalparameter_free((icalparameter*) impl); - return 0; - } - - return (icalparameter*) impl; -} - -char* icalparameter_get_delegatedfrom(icalparameter* param) -{ - icalerror_clear_errno(); - icalerror_check_arg_rz( (param!=0), "param"); - return ((struct icalparameter_impl*)param)->string; -} - -void icalparameter_set_delegatedfrom(icalparameter* param, char* v) -{ - icalerror_check_arg_rv( (v!=0),"v"); - icalerror_check_arg_rv( (param!=0), "param"); - icalerror_clear_errno(); - - ((struct icalparameter_impl*)param)->string = icalmemory_strdup(v); -} - -/* DELEGATED-TO */ -icalparameter* icalparameter_new_delegatedto(char* v) -{ - struct icalparameter_impl *impl; - icalerror_clear_errno(); - icalerror_check_arg_rz( (v!=0),"v"); - impl = icalparameter_new_impl(ICAL_DELEGATEDTO_PARAMETER); - if (impl == 0) { - return 0; - } - - icalparameter_set_delegatedto((icalparameter*) impl,v); - if (icalerrno != ICAL_NO_ERROR) { - icalparameter_free((icalparameter*) impl); - return 0; - } - - return (icalparameter*) impl; -} - -char* icalparameter_get_delegatedto(icalparameter* param) -{ - icalerror_clear_errno(); - icalerror_check_arg_rz( (param!=0), "param"); - return ((struct icalparameter_impl*)param)->string; -} - -void icalparameter_set_delegatedto(icalparameter* param, char* v) -{ - icalerror_check_arg_rv( (v!=0),"v"); - icalerror_check_arg_rv( (param!=0), "param"); - icalerror_clear_errno(); - - ((struct icalparameter_impl*)param)->string = icalmemory_strdup(v); -} - -/* DIR */ -icalparameter* icalparameter_new_dir(char* v) -{ - struct icalparameter_impl *impl; - icalerror_clear_errno(); - icalerror_check_arg_rz( (v!=0),"v"); - impl = icalparameter_new_impl(ICAL_DIR_PARAMETER); - if (impl == 0) { - return 0; - } - - icalparameter_set_dir((icalparameter*) impl,v); - if (icalerrno != ICAL_NO_ERROR) { - icalparameter_free((icalparameter*) impl); - return 0; - } - - return (icalparameter*) impl; -} - -char* icalparameter_get_dir(icalparameter* param) -{ - icalerror_clear_errno(); - icalerror_check_arg_rz( (param!=0), "param"); - return ((struct icalparameter_impl*)param)->string; -} - -void icalparameter_set_dir(icalparameter* param, char* v) -{ - icalerror_check_arg_rv( (v!=0),"v"); - icalerror_check_arg_rv( (param!=0), "param"); - icalerror_clear_errno(); - - ((struct icalparameter_impl*)param)->string = icalmemory_strdup(v); -} - -/* ENCODING */ -icalparameter* icalparameter_new_encoding(icalparameter_encoding v) -{ - struct icalparameter_impl *impl; - icalerror_clear_errno(); - - impl = icalparameter_new_impl(ICAL_ENCODING_PARAMETER); - if (impl == 0) { - return 0; - } - - icalparameter_set_encoding((icalparameter*) impl,v); - if (icalerrno != ICAL_NO_ERROR) { - icalparameter_free((icalparameter*) impl); - return 0; - } - - return (icalparameter*) impl; -} - -icalparameter_encoding icalparameter_get_encoding(icalparameter* param) -{ - icalerror_clear_errno(); - icalerror_check_arg( (param!=0), "param"); - if ( ((struct icalparameter_impl*)param)->string != 0){ - return ICAL_ENCODING_XNAME; - } - - return ((struct icalparameter_impl*)param)->data.v_encoding; - -} - -void icalparameter_set_encoding(icalparameter* param, icalparameter_encoding v) -{ - - icalerror_check_arg_rv( (param!=0), "param"); - icalerror_clear_errno(); - - ((struct icalparameter_impl*)param)->data.v_encoding = v; -} - -/* FBTYPE */ -icalparameter* icalparameter_new_fbtype(icalparameter_fbtype v) -{ - struct icalparameter_impl *impl; - icalerror_clear_errno(); - - impl = icalparameter_new_impl(ICAL_FBTYPE_PARAMETER); - if (impl == 0) { - return 0; - } - - icalparameter_set_fbtype((icalparameter*) impl,v); - if (icalerrno != ICAL_NO_ERROR) { - icalparameter_free((icalparameter*) impl); - return 0; - } - - return (icalparameter*) impl; -} - -icalparameter_fbtype icalparameter_get_fbtype(icalparameter* param) -{ - icalerror_clear_errno(); - icalerror_check_arg( (param!=0), "param"); - if ( ((struct icalparameter_impl*)param)->string != 0){ - return ICAL_FBTYPE_XNAME; - } - - return ((struct icalparameter_impl*)param)->data.v_fbtype; - -} - -void icalparameter_set_fbtype(icalparameter* param, icalparameter_fbtype v) -{ - - icalerror_check_arg_rv( (param!=0), "param"); - icalerror_clear_errno(); - - ((struct icalparameter_impl*)param)->data.v_fbtype = v; -} - -/* FMTTYPE */ -icalparameter* icalparameter_new_fmttype(char* v) -{ - struct icalparameter_impl *impl; - icalerror_clear_errno(); - icalerror_check_arg_rz( (v!=0),"v"); - impl = icalparameter_new_impl(ICAL_FMTTYPE_PARAMETER); - if (impl == 0) { - return 0; - } - - icalparameter_set_fmttype((icalparameter*) impl,v); - if (icalerrno != ICAL_NO_ERROR) { - icalparameter_free((icalparameter*) impl); - return 0; - } - - return (icalparameter*) impl; -} - -char* icalparameter_get_fmttype(icalparameter* param) -{ - icalerror_clear_errno(); - icalerror_check_arg_rz( (param!=0), "param"); - return ((struct icalparameter_impl*)param)->string; -} - -void icalparameter_set_fmttype(icalparameter* param, char* v) -{ - icalerror_check_arg_rv( (v!=0),"v"); - icalerror_check_arg_rv( (param!=0), "param"); - icalerror_clear_errno(); - - ((struct icalparameter_impl*)param)->string = icalmemory_strdup(v); -} - -/* LANGUAGE */ -icalparameter* icalparameter_new_language(char* v) -{ - struct icalparameter_impl *impl; - icalerror_clear_errno(); - icalerror_check_arg_rz( (v!=0),"v"); - impl = icalparameter_new_impl(ICAL_LANGUAGE_PARAMETER); - if (impl == 0) { - return 0; - } - - icalparameter_set_language((icalparameter*) impl,v); - if (icalerrno != ICAL_NO_ERROR) { - icalparameter_free((icalparameter*) impl); - return 0; - } - - return (icalparameter*) impl; -} - -char* icalparameter_get_language(icalparameter* param) -{ - icalerror_clear_errno(); - icalerror_check_arg_rz( (param!=0), "param"); - return ((struct icalparameter_impl*)param)->string; -} - -void icalparameter_set_language(icalparameter* param, char* v) -{ - icalerror_check_arg_rv( (v!=0),"v"); - icalerror_check_arg_rv( (param!=0), "param"); - icalerror_clear_errno(); - - ((struct icalparameter_impl*)param)->string = icalmemory_strdup(v); -} - -/* MEMBER */ -icalparameter* icalparameter_new_member(char* v) -{ - struct icalparameter_impl *impl; - icalerror_clear_errno(); - icalerror_check_arg_rz( (v!=0),"v"); - impl = icalparameter_new_impl(ICAL_MEMBER_PARAMETER); - if (impl == 0) { - return 0; - } - - icalparameter_set_member((icalparameter*) impl,v); - if (icalerrno != ICAL_NO_ERROR) { - icalparameter_free((icalparameter*) impl); - return 0; - } - - return (icalparameter*) impl; -} - -char* icalparameter_get_member(icalparameter* param) -{ - icalerror_clear_errno(); - icalerror_check_arg_rz( (param!=0), "param"); - return ((struct icalparameter_impl*)param)->string; -} - -void icalparameter_set_member(icalparameter* param, char* v) -{ - icalerror_check_arg_rv( (v!=0),"v"); - icalerror_check_arg_rv( (param!=0), "param"); - icalerror_clear_errno(); - - ((struct icalparameter_impl*)param)->string = icalmemory_strdup(v); -} - -/* PARTSTAT */ -icalparameter* icalparameter_new_partstat(icalparameter_partstat v) -{ - struct icalparameter_impl *impl; - icalerror_clear_errno(); - - impl = icalparameter_new_impl(ICAL_PARTSTAT_PARAMETER); - if (impl == 0) { - return 0; - } - - icalparameter_set_partstat((icalparameter*) impl,v); - if (icalerrno != ICAL_NO_ERROR) { - icalparameter_free((icalparameter*) impl); - return 0; - } - - return (icalparameter*) impl; -} - -icalparameter_partstat icalparameter_get_partstat(icalparameter* param) -{ - icalerror_clear_errno(); - icalerror_check_arg( (param!=0), "param"); - if ( ((struct icalparameter_impl*)param)->string != 0){ - return ICAL_PARTSTAT_XNAME; - } - - return ((struct icalparameter_impl*)param)->data.v_partstat; - -} - -void icalparameter_set_partstat(icalparameter* param, icalparameter_partstat v) -{ - - icalerror_check_arg_rv( (param!=0), "param"); - icalerror_clear_errno(); - - ((struct icalparameter_impl*)param)->data.v_partstat = v; -} - -/* RANGE */ -icalparameter* icalparameter_new_range(icalparameter_range v) -{ - struct icalparameter_impl *impl; - icalerror_clear_errno(); - - impl = icalparameter_new_impl(ICAL_RANGE_PARAMETER); - if (impl == 0) { - return 0; - } - - icalparameter_set_range((icalparameter*) impl,v); - if (icalerrno != ICAL_NO_ERROR) { - icalparameter_free((icalparameter*) impl); - return 0; - } - - return (icalparameter*) impl; -} - -icalparameter_range icalparameter_get_range(icalparameter* param) -{ - icalerror_clear_errno(); - icalerror_check_arg( (param!=0), "param"); - - return ((struct icalparameter_impl*)param)->data.v_range; - -} - -void icalparameter_set_range(icalparameter* param, icalparameter_range v) -{ - - icalerror_check_arg_rv( (param!=0), "param"); - icalerror_clear_errno(); - - ((struct icalparameter_impl*)param)->data.v_range = v; -} - -/* RELATED */ -icalparameter* icalparameter_new_related(icalparameter_related v) -{ - struct icalparameter_impl *impl; - icalerror_clear_errno(); - - impl = icalparameter_new_impl(ICAL_RELATED_PARAMETER); - if (impl == 0) { - return 0; - } - - icalparameter_set_related((icalparameter*) impl,v); - if (icalerrno != ICAL_NO_ERROR) { - icalparameter_free((icalparameter*) impl); - return 0; - } - - return (icalparameter*) impl; -} - -icalparameter_related icalparameter_get_related(icalparameter* param) -{ - icalerror_clear_errno(); - icalerror_check_arg( (param!=0), "param"); - - return ((struct icalparameter_impl*)param)->data.v_related; - -} - -void icalparameter_set_related(icalparameter* param, icalparameter_related v) -{ - - icalerror_check_arg_rv( (param!=0), "param"); - icalerror_clear_errno(); - - ((struct icalparameter_impl*)param)->data.v_related = v; -} - -/* RELTYPE */ -icalparameter* icalparameter_new_reltype(icalparameter_reltype v) -{ - struct icalparameter_impl *impl; - icalerror_clear_errno(); - - impl = icalparameter_new_impl(ICAL_RELTYPE_PARAMETER); - if (impl == 0) { - return 0; - } - - icalparameter_set_reltype((icalparameter*) impl,v); - if (icalerrno != ICAL_NO_ERROR) { - icalparameter_free((icalparameter*) impl); - return 0; - } - - return (icalparameter*) impl; -} - -icalparameter_reltype icalparameter_get_reltype(icalparameter* param) -{ - icalerror_clear_errno(); - icalerror_check_arg( (param!=0), "param"); - if ( ((struct icalparameter_impl*)param)->string != 0){ - return ICAL_RELTYPE_XNAME; - } - - return ((struct icalparameter_impl*)param)->data.v_reltype; - -} - -void icalparameter_set_reltype(icalparameter* param, icalparameter_reltype v) -{ - - icalerror_check_arg_rv( (param!=0), "param"); - icalerror_clear_errno(); - - ((struct icalparameter_impl*)param)->data.v_reltype = v; -} - -/* ROLE */ -icalparameter* icalparameter_new_role(icalparameter_role v) -{ - struct icalparameter_impl *impl; - icalerror_clear_errno(); - - impl = icalparameter_new_impl(ICAL_ROLE_PARAMETER); - if (impl == 0) { - return 0; - } - - icalparameter_set_role((icalparameter*) impl,v); - if (icalerrno != ICAL_NO_ERROR) { - icalparameter_free((icalparameter*) impl); - return 0; - } - - return (icalparameter*) impl; -} - -icalparameter_role icalparameter_get_role(icalparameter* param) -{ - icalerror_clear_errno(); - icalerror_check_arg( (param!=0), "param"); - if ( ((struct icalparameter_impl*)param)->string != 0){ - return ICAL_ROLE_XNAME; - } - - return ((struct icalparameter_impl*)param)->data.v_role; - -} - -void icalparameter_set_role(icalparameter* param, icalparameter_role v) -{ - - icalerror_check_arg_rv( (param!=0), "param"); - icalerror_clear_errno(); - - ((struct icalparameter_impl*)param)->data.v_role = v; -} - -/* RSVP */ -icalparameter* icalparameter_new_rsvp(int v) -{ - struct icalparameter_impl *impl; - icalerror_clear_errno(); - - impl = icalparameter_new_impl(ICAL_RSVP_PARAMETER); - if (impl == 0) { - return 0; - } - - icalparameter_set_rsvp((icalparameter*) impl,v); - if (icalerrno != ICAL_NO_ERROR) { - icalparameter_free((icalparameter*) impl); - return 0; - } - - return (icalparameter*) impl; -} - -int icalparameter_get_rsvp(icalparameter* param) -{ - icalerror_clear_errno(); - icalerror_check_arg( (param!=0), "param"); - - return ((struct icalparameter_impl*)param)->data.v_rsvp; - -} - -void icalparameter_set_rsvp(icalparameter* param, int v) -{ - - icalerror_check_arg_rv( (param!=0), "param"); - icalerror_clear_errno(); - - ((struct icalparameter_impl*)param)->data.v_rsvp = v; -} - -/* SENT-BY */ -icalparameter* icalparameter_new_sentby(char* v) -{ - struct icalparameter_impl *impl; - icalerror_clear_errno(); - icalerror_check_arg_rz( (v!=0),"v"); - impl = icalparameter_new_impl(ICAL_SENTBY_PARAMETER); - if (impl == 0) { - return 0; - } - - icalparameter_set_sentby((icalparameter*) impl,v); - if (icalerrno != ICAL_NO_ERROR) { - icalparameter_free((icalparameter*) impl); - return 0; - } - - return (icalparameter*) impl; -} - -char* icalparameter_get_sentby(icalparameter* param) -{ - icalerror_clear_errno(); - icalerror_check_arg_rz( (param!=0), "param"); - return ((struct icalparameter_impl*)param)->string; -} - -void icalparameter_set_sentby(icalparameter* param, char* v) -{ - icalerror_check_arg_rv( (v!=0),"v"); - icalerror_check_arg_rv( (param!=0), "param"); - icalerror_clear_errno(); - - ((struct icalparameter_impl*)param)->string = icalmemory_strdup(v); -} - -/* TZID */ -icalparameter* icalparameter_new_tzid(char* v) -{ - struct icalparameter_impl *impl; - icalerror_clear_errno(); - icalerror_check_arg_rz( (v!=0),"v"); - impl = icalparameter_new_impl(ICAL_TZID_PARAMETER); - if (impl == 0) { - return 0; - } - - icalparameter_set_tzid((icalparameter*) impl,v); - if (icalerrno != ICAL_NO_ERROR) { - icalparameter_free((icalparameter*) impl); - return 0; - } - - return (icalparameter*) impl; -} - -char* icalparameter_get_tzid(icalparameter* param) -{ - icalerror_clear_errno(); - icalerror_check_arg_rz( (param!=0), "param"); - return ((struct icalparameter_impl*)param)->string; -} - -void icalparameter_set_tzid(icalparameter* param, char* v) -{ - icalerror_check_arg_rv( (v!=0),"v"); - icalerror_check_arg_rv( (param!=0), "param"); - icalerror_clear_errno(); - - ((struct icalparameter_impl*)param)->string = icalmemory_strdup(v); -} - -/* VALUE */ -icalparameter* icalparameter_new_value(icalparameter_value v) -{ - struct icalparameter_impl *impl; - icalerror_clear_errno(); - - impl = icalparameter_new_impl(ICAL_VALUE_PARAMETER); - if (impl == 0) { - return 0; - } - - icalparameter_set_value((icalparameter*) impl,v); - if (icalerrno != ICAL_NO_ERROR) { - icalparameter_free((icalparameter*) impl); - return 0; - } - - return (icalparameter*) impl; -} - -icalparameter_value icalparameter_get_value(icalparameter* param) -{ - icalerror_clear_errno(); - icalerror_check_arg( (param!=0), "param"); - if ( ((struct icalparameter_impl*)param)->string != 0){ - return ICAL_VALUE_XNAME; - } - - return ((struct icalparameter_impl*)param)->data.v_value; - -} - -void icalparameter_set_value(icalparameter* param, icalparameter_value v) -{ - - icalerror_check_arg_rv( (param!=0), "param"); - icalerror_clear_errno(); - - ((struct icalparameter_impl*)param)->data.v_value = v; -} - -/* X */ -icalparameter* icalparameter_new_x(char* v) -{ - struct icalparameter_impl *impl; - icalerror_clear_errno(); - icalerror_check_arg_rz( (v!=0),"v"); - impl = icalparameter_new_impl(ICAL_X_PARAMETER); - if (impl == 0) { - return 0; - } - - icalparameter_set_x((icalparameter*) impl,v); - if (icalerrno != ICAL_NO_ERROR) { - icalparameter_free((icalparameter*) impl); - return 0; - } - - return (icalparameter*) impl; -} - -char* icalparameter_get_x(icalparameter* param) -{ - icalerror_clear_errno(); - icalerror_check_arg_rz( (param!=0), "param"); - return ((struct icalparameter_impl*)param)->string; -} - -void icalparameter_set_x(icalparameter* param, char* v) -{ - icalerror_check_arg_rv( (v!=0),"v"); - icalerror_check_arg_rv( (param!=0), "param"); - icalerror_clear_errno(); - - ((struct icalparameter_impl*)param)->string = icalmemory_strdup(v); -} - -/* X-LIC-ERRORTYPE */ -icalparameter* icalparameter_new_xlicerrortype(icalparameter_xlicerrortype v) -{ - struct icalparameter_impl *impl; - icalerror_clear_errno(); - - impl = icalparameter_new_impl(ICAL_XLICERRORTYPE_PARAMETER); - if (impl == 0) { - return 0; - } - - icalparameter_set_xlicerrortype((icalparameter*) impl,v); - if (icalerrno != ICAL_NO_ERROR) { - icalparameter_free((icalparameter*) impl); - return 0; - } - - return (icalparameter*) impl; -} - -icalparameter_xlicerrortype icalparameter_get_xlicerrortype(icalparameter* param) -{ - icalerror_clear_errno(); - icalerror_check_arg( (param!=0), "param"); - - return ((struct icalparameter_impl*)param)->data.v_xlicerrortype; - -} - -void icalparameter_set_xlicerrortype(icalparameter* param, icalparameter_xlicerrortype v) -{ - - icalerror_check_arg_rv( (param!=0), "param"); - icalerror_clear_errno(); - - ((struct icalparameter_impl*)param)->data.v_xlicerrortype = v; -} - -/* X-LIC-COMPARETYPE */ -icalparameter* icalparameter_new_xliccomparetype(icalparameter_xliccomparetype v) -{ - struct icalparameter_impl *impl; - icalerror_clear_errno(); - - impl = icalparameter_new_impl(ICAL_XLICCOMPARETYPE_PARAMETER); - if (impl == 0) { - return 0; - } - - icalparameter_set_xliccomparetype((icalparameter*) impl,v); - if (icalerrno != ICAL_NO_ERROR) { - icalparameter_free((icalparameter*) impl); - return 0; - } - - return (icalparameter*) impl; -} - -icalparameter_xliccomparetype icalparameter_get_xliccomparetype(icalparameter* param) -{ - icalerror_clear_errno(); - icalerror_check_arg( (param!=0), "param"); - - return ((struct icalparameter_impl*)param)->data.v_xliccomparetype; - -} - -void icalparameter_set_xliccomparetype(icalparameter* param, icalparameter_xliccomparetype v) -{ - - icalerror_check_arg_rv( (param!=0), "param"); - icalerror_clear_errno(); - - ((struct icalparameter_impl*)param)->data.v_xliccomparetype = v; -} - diff --git a/libical/src/libical/icalparameter.h b/libical/src/libical/icalparameter.h deleted file mode 100644 index ad97f34e58..0000000000 --- a/libical/src/libical/icalparameter.h +++ /dev/null @@ -1,173 +0,0 @@ -/* -*- 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 ICALPARAM_H -#define ICALPARAM_H - -#include "icalenums.h" /* defined icalparameter_kind and other enums */ - -typedef void icalparameter; - -icalparameter* icalparameter_new(icalparameter_kind kind); -icalparameter* icalparameter_new_clone(icalparameter* p); -icalparameter* icalparameter_new_from_string(icalparameter_kind kind, char* value); - -void icalparameter_free(icalparameter* parameter); - -char* icalparameter_as_ical_string(icalparameter* parameter); - -int icalparameter_is_valid(icalparameter* parameter); - -icalparameter_kind icalparameter_isa(icalparameter* parameter); - -int icalparameter_isa_parameter(void* param); - -/* Acess the name of an X parameer */ -void icalparameter_set_xname (icalparameter* param, char* v); -char* icalparameter_get_xname(icalparameter* param); -void icalparameter_set_xvalue (icalparameter* param, char* v); -char* icalparameter_get_xvalue(icalparameter* param); - - -/* Everything below this line is machine generated. Do not edit. */ -/* ALTREP */ -icalparameter* icalparameter_new_altrep(char* v); -char* icalparameter_get_altrep(icalparameter* value); -void icalparameter_set_altrep(icalparameter* value, char* v); - -/* CN */ -icalparameter* icalparameter_new_cn(char* v); -char* icalparameter_get_cn(icalparameter* value); -void icalparameter_set_cn(icalparameter* value, char* v); - -/* CUTYPE */ -icalparameter* icalparameter_new_cutype(icalparameter_cutype v); -icalparameter_cutype icalparameter_get_cutype(icalparameter* value); -void icalparameter_set_cutype(icalparameter* value, icalparameter_cutype v); - -/* DELEGATED-FROM */ -icalparameter* icalparameter_new_delegatedfrom(char* v); -char* icalparameter_get_delegatedfrom(icalparameter* value); -void icalparameter_set_delegatedfrom(icalparameter* value, char* v); - -/* DELEGATED-TO */ -icalparameter* icalparameter_new_delegatedto(char* v); -char* icalparameter_get_delegatedto(icalparameter* value); -void icalparameter_set_delegatedto(icalparameter* value, char* v); - -/* DIR */ -icalparameter* icalparameter_new_dir(char* v); -char* icalparameter_get_dir(icalparameter* value); -void icalparameter_set_dir(icalparameter* value, char* v); - -/* ENCODING */ -icalparameter* icalparameter_new_encoding(icalparameter_encoding v); -icalparameter_encoding icalparameter_get_encoding(icalparameter* value); -void icalparameter_set_encoding(icalparameter* value, icalparameter_encoding v); - -/* FBTYPE */ -icalparameter* icalparameter_new_fbtype(icalparameter_fbtype v); -icalparameter_fbtype icalparameter_get_fbtype(icalparameter* value); -void icalparameter_set_fbtype(icalparameter* value, icalparameter_fbtype v); - -/* FMTTYPE */ -icalparameter* icalparameter_new_fmttype(char* v); -char* icalparameter_get_fmttype(icalparameter* value); -void icalparameter_set_fmttype(icalparameter* value, char* v); - -/* LANGUAGE */ -icalparameter* icalparameter_new_language(char* v); -char* icalparameter_get_language(icalparameter* value); -void icalparameter_set_language(icalparameter* value, char* v); - -/* MEMBER */ -icalparameter* icalparameter_new_member(char* v); -char* icalparameter_get_member(icalparameter* value); -void icalparameter_set_member(icalparameter* value, char* v); - -/* PARTSTAT */ -icalparameter* icalparameter_new_partstat(icalparameter_partstat v); -icalparameter_partstat icalparameter_get_partstat(icalparameter* value); -void icalparameter_set_partstat(icalparameter* value, icalparameter_partstat v); - -/* RANGE */ -icalparameter* icalparameter_new_range(icalparameter_range v); -icalparameter_range icalparameter_get_range(icalparameter* value); -void icalparameter_set_range(icalparameter* value, icalparameter_range v); - -/* RELATED */ -icalparameter* icalparameter_new_related(icalparameter_related v); -icalparameter_related icalparameter_get_related(icalparameter* value); -void icalparameter_set_related(icalparameter* value, icalparameter_related v); - -/* RELTYPE */ -icalparameter* icalparameter_new_reltype(icalparameter_reltype v); -icalparameter_reltype icalparameter_get_reltype(icalparameter* value); -void icalparameter_set_reltype(icalparameter* value, icalparameter_reltype v); - -/* ROLE */ -icalparameter* icalparameter_new_role(icalparameter_role v); -icalparameter_role icalparameter_get_role(icalparameter* value); -void icalparameter_set_role(icalparameter* value, icalparameter_role v); - -/* RSVP */ -icalparameter* icalparameter_new_rsvp(int v); -int icalparameter_get_rsvp(icalparameter* value); -void icalparameter_set_rsvp(icalparameter* value, int v); - -/* SENT-BY */ -icalparameter* icalparameter_new_sentby(char* v); -char* icalparameter_get_sentby(icalparameter* value); -void icalparameter_set_sentby(icalparameter* value, char* v); - -/* TZID */ -icalparameter* icalparameter_new_tzid(char* v); -char* icalparameter_get_tzid(icalparameter* value); -void icalparameter_set_tzid(icalparameter* value, char* v); - -/* VALUE */ -icalparameter* icalparameter_new_value(icalparameter_value v); -icalparameter_value icalparameter_get_value(icalparameter* value); -void icalparameter_set_value(icalparameter* value, icalparameter_value v); - -/* X */ -icalparameter* icalparameter_new_x(char* v); -char* icalparameter_get_x(icalparameter* value); -void icalparameter_set_x(icalparameter* value, char* v); - -/* X-LIC-ERRORTYPE */ -icalparameter* icalparameter_new_xlicerrortype(icalparameter_xlicerrortype v); -icalparameter_xlicerrortype icalparameter_get_xlicerrortype(icalparameter* value); -void icalparameter_set_xlicerrortype(icalparameter* value, icalparameter_xlicerrortype v); - -/* X-LIC-COMPARETYPE */ -icalparameter* icalparameter_new_xliccomparetype(icalparameter_xliccomparetype v); -icalparameter_xliccomparetype icalparameter_get_xliccomparetype(icalparameter* value); -void icalparameter_set_xliccomparetype(icalparameter* value, icalparameter_xliccomparetype v); - -#endif ICALPARAMETER_H diff --git a/libical/src/libical/icalparser.c b/libical/src/libical/icalparser.c deleted file mode 100644 index b4563e23c9..0000000000 --- a/libical/src/libical/icalparser.c +++ /dev/null @@ -1,1004 +0,0 @@ -/* -*- Mode: C -*- - ====================================================================== - FILE: icalparser.c - CREATOR: eric 04 August 1999 - - $Id$ - - $Locker$ - - The contents of this file are subject to the Mozilla Public License - Version 1.0 (the "License"); you may not use this file except in - compliance with the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - - Software distributed under the License is distributed on an "AS IS" - basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See - the License for the specific language governing rights and - limitations under the License. - - - 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 Initial Developer of the Original Code is Eric Busboom - - (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org - ======================================================================*/ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - - -#include "ical.h" -#include "pvl.h" -#include "icalparser.h" -#include "icalmemory.h" -#include /* For strncpy & size_t */ -#include /* For FILE and fgets and sprintf */ -#include /* for free */ - - -extern icalvalue* icalparser_yy_value; -void set_parser_value_state(icalvalue_kind kind); -int ical_yy_parse(void); - -char* icalparser_get_next_char(char c, char *str); -char* icalparser_get_next_parameter(char* line,char** end); -char* icalparser_get_next_value(char* line, char **end, icalvalue_kind kind); -char* icalparser_get_prop_name(char* line, char** end); -char* icalparser_get_param_name(char* line, char **end); - -#define TMP_BUF_SIZE 80 - -struct icalparser_impl -{ - int buffer_full; - size_t tmp_buf_size; - char temp[TMP_BUF_SIZE]; - icalcomponent *root_component; - icalcomponent *tail; - int version; - int level; - int lineno; - icalparser_state state; - pvl_list components; - - void *line_gen_data; - -}; - - -icalparser* icalparser_new() -{ - struct icalparser_impl* impl = 0; - - if ( ( impl = (struct icalparser_impl*) - malloc(sizeof(struct icalparser_impl))) == 0) { - icalerror_set_errno(ICAL_NEWFAILED_ERROR); - return 0; - } - - impl->root_component = 0; - impl->components = pvl_newlist(); - impl->level = 0; - impl->state = ICALPARSER_SUCCESS; - - impl->tmp_buf_size = TMP_BUF_SIZE; - impl->buffer_full = 0; - impl->lineno = 0; - - memset(impl->temp,0, TMP_BUF_SIZE); - - return (icalparser*)impl; -} - - -void icalparser_free(icalparser* parser) -{ - struct icalparser_impl* impl = (struct icalparser_impl*)parser; - icalcomponent *c; - - if (impl->root_component != 0){ - icalcomponent_free(impl->root_component); - } - - while( (c=pvl_pop(impl->components)) != 0){ - icalcomponent_free(c); - } - - pvl_free(impl->components); - - free(impl); -} - -void icalparser_set_gen_data(icalparser* parser, void* data) -{ - struct icalparser_impl* impl = (struct icalparser_impl*)parser; - - impl->line_gen_data = data; -} - - -icalvalue* icalvalue_new_From_string_with_error(icalvalue_kind kind, - char* str, - icalproperty **error); - - - -char* icalparser_get_next_char(char c, char *str) -{ - int quote_mode = 0; - char* p; - - - for(p=str; *p!=0; p++){ - - if ( quote_mode == 0 && *p=='"' && *(p-1) != '\\' ){ - quote_mode =1; - continue; - } - - if ( quote_mode == 1 && *p=='"' && *(p-1) != '\\' ){ - quote_mode =0; - continue; - } - - if (quote_mode == 0 && *p== c && *(p-1) != '\\' ){ - return p; - } - - } - - return 0; -} - -/* make a new tmp buffer out of a substring */ -char* make_segment(char* start, char* end) -{ - char *buf; - size_t size = (size_t)end - (size_t)start; - - buf = icalmemory_tmp_buffer(size+1); - - - strncpy(buf,start,size); - *(buf+size) = 0; - - return buf; - -} - -char* input_buffer; -char* input_buffer_p; -#define min(a,b) ((a) < (b) ? (a) : (b)) - -int icalparser_flex_input(char* buf, int max_size) -{ - int n = min(max_size,strlen(input_buffer_p)); - - if (n > 0){ - memcpy(buf, input_buffer_p, n); - input_buffer_p += n; - return n; - } else { - return 0; - } -} - -void icalparser_clear_flex_input() -{ - input_buffer_p = input_buffer+strlen(input_buffer); -} - -/* Cal the flex parser to parse a complex value */ - -icalvalue* icalparser_parse_value(icalvalue_kind kind, - char* str, icalproperty** error) -{ - int r; - input_buffer_p = input_buffer = str; - - set_parser_value_state(kind); - icalparser_yy_value = 0; - - r = ical_yy_parse(); - - /* Error. Parse failed */ - if( icalparser_yy_value == 0 || r != 0){ - - if(icalparser_yy_value !=0){ - icalvalue_free(icalparser_yy_value); - icalparser_yy_value = 0; - } - - return 0; - } - - if (error != 0){ - *error = 0; - } - - return icalparser_yy_value; -} - -char* icalparser_get_prop_name(char* line, char** end) -{ - char* p; - char* v; - char *str; - - p = icalparser_get_next_char(';',line); - v = icalparser_get_next_char(':',line); - if (p== 0 && v == 0) { - return 0; - } - - /* There is no ';' or, it is after the ';' that marks the beginning of - the value */ - if (v!=0 && ( p == 0 || p > v)){ - str = make_segment(line,v); - *end = v+1; - } else { - str = make_segment(line,p); - *end = p+1; - } - - return str; -} - -char* icalparser_get_param_name(char* line, char **end) -{ - - char* next; - char *str; - - next = icalparser_get_next_char('=',line); - - if (next == 0) { - return 0; - } - - str = make_segment(line,next); - *end = next+1; - return str; - -} - -char* icalparser_get_next_paramvalue(char* line, char **end) -{ - - char* next; - char *str; - - next = icalparser_get_next_char(',',line); - - if (next == 0){ - next = (char*)(size_t)line+(size_t)strlen(line);\ - } - - if (next == line){ - return 0; - } else { - str = make_segment(line,next); - *end = next+1; - return str; - } - -} - -/* A property may have multiple values, if the values are seperated by - commas in the content line. This routine will look for the next - comma after line and will set the next place to start searching in - end. */ - -char* icalparser_get_next_value(char* line, char **end, icalvalue_kind kind) -{ - - char* next; - char *p; - char *str; - size_t length = strlen(line); - - p = line; - while(1){ - - next = icalparser_get_next_char(',',p); - - /* Unforunately, RFC2445 says that for the RECUR value, COMMA - can both seperate digits in a list, and it can seperate - multiple recurrence specifications. This is not a friendly - part of the spec. This weirdness tries to - distinguish the two uses. it is probably a HACK*/ - - if( kind == ICAL_RECUR_VALUE ) { - if ( next != 0 && - (*end+length) > next+5 && - strncmp(next,"FREQ",4) == 0 - ) { - /* The COMMA was followed by 'FREQ', is it a real seperator*/ - /* Fall through */ - } else if (next != 0){ - /* Not real, get the next COMMA */ - p = next+1; - next = 0; - continue; - } - } - - /* If the comma is preceeded by a '\', then it is a literal and - not a value seperator*/ - - if ( (next!=0 && *(next-1) == '\\') || - (next!=0 && *(next-3) == '\\') - ) - /*second clause for '/' is on prev line. HACK may be out of bounds */ - { - p = next+1; - } else { - break; - } - - } - - if (next == 0){ - next = (char*)(size_t)line+length; - *end = next; - } else { - *end = next+1; - } - - if (next == line){ - return 0; - } - - - str = make_segment(line,next); - return str; - -} - -char* icalparser_get_next_parameter(char* line,char** end) -{ - char *next; - char *v; - char *str; - - v = icalparser_get_next_char(':',line); - next = icalparser_get_next_char(';', line); - - /* There is no ';' or, it is after the ':' that marks the beginning of - the value */ - - if (next == 0 || next > v) { - next = icalparser_get_next_char(':', line); - } - - if (next != 0) { - str = make_segment(line,next); - *end = next+1; - return str; - } else { - *end = line; - return 0; - } -} - -/* Get a single property line, from the property name through the - final new line, and include any continuation lines */ - -char* icalparser_get_line(icalparser *parser, - char* (*line_gen_func)(char *s, size_t size, void *d)) -{ - char *line; - char *line_p; - struct icalparser_impl* impl = (struct icalparser_impl*)parser; - size_t buf_size = impl->tmp_buf_size; - - - line_p = line = icalmemory_new_buffer(buf_size); - line[0] = '\0'; - - while(1) { - - /* The buffer is not clear, so transfer the data in it to the - output. This may be left over from a previous call */ - if (impl->temp[0] != '\0' ) { - - /* If the last position in the temp buffer is occupied, - mark the buffer as full. The means we will do another - read later, because the line is not finished */ - if (impl->temp[impl->tmp_buf_size-1] == 0 && - impl->temp[impl->tmp_buf_size-2] != '\n'){ - impl->buffer_full = 1; - } else { - impl->buffer_full = 0; - } - - /* Copy the temp to the output and clear the temp buffer. */ - icalmemory_append_string(&line,&line_p,&buf_size,impl->temp); - impl->temp[0] = '\0' ; - } - - impl->temp[impl->tmp_buf_size-1] = 1; /* Mark end of buffer */ - - if ((*line_gen_func)(impl->temp,impl->tmp_buf_size,impl->line_gen_data) - ==0){/* Get more data */ - - /* If the first position is clear, it means we didn't get - any more data from the last call to line_ge_func*/ - if (impl->temp[0] == '\0'){ - - if(line[0] != '\0'){ - /* There is data in the output, so fall trhough and process it*/ - break; - } else { - /* No data in output; return and signal that there - is no more input*/ - free(line); - return 0; - } - } - } - - - /* If the output line ends in a '\n' and the temp buffer - begins with a ' ', then the buffer holds a continuation - line, so keep reading. */ - - if ( line_p > line+1 && *(line_p-1) == '\n' && impl->temp[0] == ' ') { - - /* back up the pointer to erase the continuation characters */ - line_p--; - - if ( *(line_p-1) == '\r'){ - line_p--; - } - - /* shift the temp buffer down to eliminate the leading space*/ - memmove(&(impl->temp[0]),&(impl->temp[1]),impl->tmp_buf_size); - - impl->temp[impl->tmp_buf_size-1] = impl->temp[impl->tmp_buf_size-2]; - - } else if ( impl->buffer_full == 1 ) { - - /* The buffer was filled on the last read, so read again */ - - } else { - - /* Looks like the end of this content line, so break */ - break; - } - - - } - - /* Erase the final newline and/or carriage return*/ - if ( line_p > line+1 && *(line_p-1) == '\n') { - *(line_p-1) = '\0'; - if ( *(line_p-2) == '\r'){ - *(line_p-2) = '\0'; - } - - } else { - *(line_p) = '\0'; - } - - return line; - -} - -void insert_error(icalcomponent* comp, char* text, - char* message, icalparameter_xlicerrortype type) -{ - char temp[1024]; - - if (text == 0){ - snprintf(temp,1024,"%s:",message); - } else { - snprintf(temp,1024,"%s: \'%s\'",message,text); - } - - icalcomponent_add_property - (comp, - icalproperty_vanew_xlicerror( - temp, - icalparameter_new_xlicerrortype(type), - 0)); -} - -icalcomponent* icalparser_parse(icalparser *parser, - char* (*line_gen_func)(char *s, size_t size, - void* d)) -{ - - char* line; - icalcomponent *c=0; - icalcomponent *root_component=0; - - icalerror_check_arg_rz((parser !=0),"parser"); - - do{ - line = icalparser_get_line(parser, line_gen_func); - if ((c = icalparser_add_line(parser,line)) != 0){ - if (root_component == 0){ - /* Just one component */ - icalparser_claim(parser); - root_component = c; - } else if(icalcomponent_isa(root_component) - != ICAL_XROOT_COMPONENT) { - /*Got a second component, so move the two components under - an XROOT container */ - icalcomponent *tempc; - tempc = icalcomponent_new(ICAL_XROOT_COMPONENT); - icalcomponent_add_component(tempc, root_component); - icalparser_claim(parser); - icalcomponent_add_component(tempc, c); - root_component = tempc; - } else { - /* Already have an XROOT container, so add the component - to it*/ - icalcomponent_add_component(root_component, c); - icalparser_claim(parser); - } - } - if(line != 0){ - free(line); - } - } while ( line != 0); - - return root_component; - -} - -icalcomponent* icalparser_add_line(icalparser* parser, - char* line) -{ - char *p; - char *str; - char *end; - int vcount = 0; - icalproperty *prop; - icalvalue *value; - icalvalue_kind value_kind = ICAL_NO_VALUE; - - - struct icalparser_impl *impl = (struct icalparser_impl*)parser; - icalerror_check_arg_rz((parser != 0),"parser"); - - - if (line == 0) - { - impl->state = ICALPARSER_ERROR; - return 0; - } - - /* Begin by getting the property name at the start of the line. The - property name may end up being "BEGIN" or "END" in which case it - is not really a property, but the marker for the start or end of - a component */ - - end = 0; - str = icalparser_get_prop_name(line, &end); - - if (str == 0){ - /* Could not get a property name */ - icalcomponent *tail = pvl_data(pvl_tail(impl->components)); - - if (tail){ - insert_error(tail,line, - "Got a data line, but could not find a property name or component begin tag", - ICAL_XLICERRORTYPE_COMPONENTPARSEERROR); - } - tail = 0; - impl->state = ICALPARSER_ERROR; - return 0; - } - - /********************************************************************** - * Handle begin and end of components - **********************************************************************/ - /* If the property name is BEGIN or END, we are actually - starting or ending a new component */ - - if(strcmp(str,"BEGIN") == 0){ - icalcomponent *c; - - impl->level++; - str = icalparser_get_next_value(end,&end, value_kind); - - c = icalcomponent_new_from_string(str); - - if (c == 0){ - c = icalcomponent_new(ICAL_XLICINVALID_COMPONENT); - insert_error(c,str,"Parse error in component name", - ICAL_XLICERRORTYPE_COMPONENTPARSEERROR); - } - - pvl_push(impl->components,c); - - impl->state = ICALPARSER_BEGIN_COMP; - return 0; - - } else if (strcmp(str,"END") == 0 ) { - icalcomponent* tail; - - impl->level--; - str = icalparser_get_next_value(end,&end, value_kind); - - impl->root_component = pvl_pop(impl->components); - - tail = pvl_data(pvl_tail(impl->components)); - - if(tail != 0){ - icalcomponent_add_component(tail,impl->root_component); - } - - tail = 0; - - /* Return the component if we are back to the 0th level */ - if (impl->level == 0){ - impl->state = ICALPARSER_SUCCESS; - return impl->root_component; - } else { - impl->state = ICALPARSER_END_COMP; - return 0; - } - } - - - /* There is no point in continuing if we have not seen a - component yet */ - - if(pvl_data(pvl_tail(impl->components)) == 0){ - impl->state = ICALPARSER_ERROR; - return 0; - } - - - /********************************************************************** - * Handle property names - **********************************************************************/ - /* At this point, the property name really is a property name, - (Not a component name) so make a new property and add it to - the component */ - - prop = icalproperty_new_from_string(str); - - if (prop != 0){ - icalcomponent *tail = pvl_data(pvl_tail(impl->components)); - - icalcomponent_add_property(tail, prop); - - /* Set the value kind for the default for this type of - property. This may be re-set by a VALUE parameter */ - value_kind = - icalenum_property_kind_to_value_kind( - icalproperty_isa(prop)); - - } else { - icalcomponent* tail = pvl_data(pvl_tail(impl->components)); - - insert_error(tail,str,"Parse error in property name", - ICAL_XLICERRORTYPE_PROPERTYPARSEERROR); - - tail = 0; - impl->state = ICALPARSER_ERROR; - return 0; - } - - /********************************************************************** - * Handle parameter values - **********************************************************************/ - - /* Now, add any parameters to the last property */ - - p = 0; - while(1) { - - if (*(end-1) == ':'){ - /* if the last seperator was a ":" and the value is a - URL, icalparser_get_next_parameter will find the - ':' in the URL, so better break now. */ - break; - } - - str = icalparser_get_next_parameter(end,&end); - - if (str != 0){ - char* name; - char* pvalue; - - icalparameter *param = 0; - icalparameter_kind kind; - icalcomponent *tail = pvl_data(pvl_tail(impl->components)); - - name = icalparser_get_param_name(str,&pvalue); - - if (name == 0){ - /* 'tail' defined above */ - insert_error(tail, str, "Can't parse parameter name", - ICAL_XLICERRORTYPE_PARAMETERNAMEPARSEERROR); - tail = 0; - break; - } - - kind = icalenum_string_to_parameter_kind(name); - - if (kind != ICAL_NO_PARAMETER){ - param = icalparameter_new_from_string(kind,pvalue); - } else { - /* Error. Failed to parse the parameter*/ - /* 'tail' defined above */ - insert_error(tail, str, "Can't parse parameter name", - ICAL_XLICERRORTYPE_PARAMETERNAMEPARSEERROR); - tail = 0; - impl->state = ICALPARSER_ERROR; - return 0; - } - - if (param == 0){ - /* 'tail' defined above */ - insert_error(tail,str,"Can't parse parameter value", - ICAL_XLICERRORTYPE_PARAMETERVALUEPARSEERROR); - - tail = 0; - impl->state = ICALPARSER_ERROR; - continue; - } - - /* If it is a VALUE parameter, set the kind of value*/ - if (icalparameter_isa(param)==ICAL_VALUE_PARAMETER){ - - value_kind = (icalvalue_kind) - icalparameter_get_value(param); - - if (value_kind == ICAL_NO_VALUE){ - - /* Ooops, could not parse the value of the - parameter ( it was not one of the defined - values ), so reset the value_kind */ - - insert_error( - tail, str, - "Got a VALUE parameter with an unknown type", - ICAL_XLICERRORTYPE_PARAMETERVALUEPARSEERROR); - icalparameter_free(param); - - value_kind = - icalenum_property_kind_to_value_kind( - icalproperty_isa(prop)); - - icalparameter_free(param); - tail = 0; - impl->state = ICALPARSER_ERROR; - return 0; - } - } - - /* Everything is OK, so add the parameter */ - icalproperty_add_parameter(prop,param); - tail = 0; - - } else { /* if ( str != 0) */ - /* If we did not get a param string, go on to looking - for a value */ - break; - } /* if ( str != 0) */ - - } /* while(1) */ - - /********************************************************************** - * Handle values - **********************************************************************/ - - /* Look for values. If there are ',' characters in the values, - then there are multiple values, so clone the current - parameter and add one part of the value to each clone */ - - vcount=0; - while(1) { - str = icalparser_get_next_value(end,&end, value_kind); - - if (str != 0){ - - if (vcount > 0){ - /* Actually, only clone after the second value */ - icalproperty* clone = icalproperty_new_clone(prop); - icalcomponent* tail = pvl_data(pvl_tail(impl->components)); - - icalcomponent_add_property(tail, clone); - prop = clone; - tail = 0; - } - - value = icalvalue_new_from_string(value_kind, str); - - /* Don't add properties without value */ - if (value == 0){ - char temp[200]; /* HACK */ - - icalproperty_kind prop_kind = icalproperty_isa(prop); - icalcomponent* tail = pvl_data(pvl_tail(impl->components)); - - sprintf(temp,"Can't parse as %s value in %s property. Removing entire property", - icalenum_value_kind_to_string(value_kind), - icalenum_property_kind_to_string(prop_kind)); - - insert_error(tail, str, temp, - ICAL_XLICERRORTYPE_VALUEPARSEERROR); - - /* Remove the troublesome property */ - icalcomponent_remove_property(tail,prop); - icalproperty_free(prop); - prop = 0; - tail = 0; - impl->state = ICALPARSER_ERROR; - return 0; - - } else { - vcount++; - icalproperty_set_value(prop, value); - } - - - } else { - if (vcount == 0){ - char temp[200]; /* HACK */ - - icalproperty_kind prop_kind = icalproperty_isa(prop); - icalcomponent *tail = pvl_data(pvl_tail(impl->components)); - - sprintf(temp,"No value for %s property. Removing entire property", - icalenum_property_kind_to_string(prop_kind)); - - insert_error(tail, str, temp, - ICAL_XLICERRORTYPE_VALUEPARSEERROR); - - /* Remove the troublesome property */ - icalcomponent_remove_property(tail,prop); - icalproperty_free(prop); - prop = 0; - tail = 0; - impl->state = ICALPARSER_ERROR; - return 0; - } else { - - break; - } - } - } - - /**************************************************************** - * End of component parsing. - *****************************************************************/ - - if (pvl_data(pvl_tail(impl->components)) == 0 && - impl->level == 0){ - impl->state = ICALPARSER_SUCCESS; - return impl->root_component; - } else { - impl->state = ICALPARSER_IN_PROGRESS; - return 0; - } - -} - -icalparser_state icalparser_get_state(icalparser* parser) -{ - struct icalparser_impl* impl = (struct icalparser_impl*) parser; - return impl->state; - -} - -icalcomponent* icalparser_claim(icalparser* parser) -{ - struct icalparser_impl* impl = (struct icalparser_impl*) parser; - icalcomponent *c = impl->root_component; - - impl->root_component = 0; - - return c; - -} - - -icalcomponent* icalparser_clean(icalparser* parser) -{ - struct icalparser_impl* impl = (struct icalparser_impl*) parser; - icalcomponent *tail = pvl_data(pvl_tail(impl->components)); - - icalerror_check_arg_rz((parser != 0 ),"parser"); - - /* We won't get a clean exit if some components did not have an - "END" tag. Clear off any component that may be left in the list */ - - - while((tail=pvl_data(pvl_tail(impl->components))) != 0){ - - insert_error(tail," ", - "Missing END tag for this component. Closing component at end of input.", - ICAL_XLICERRORTYPE_COMPONENTPARSEERROR); - - - impl->root_component = pvl_pop(impl->components); - tail=pvl_data(pvl_tail(impl->components)); - - if(tail != 0){ - icalcomponent_add_component(tail,impl->root_component); - } - } - - return impl->root_component; - -} - -struct slg_data { - char* pos; - char* str; -}; - -char* string_line_generator(char *out, size_t buf_size, void *d) -{ - char *n; - size_t size; - struct slg_data* data = (struct slg_data*)d; - - if(data->pos==0){ - data->pos=data->str; - } - - /* If the pointer is at the end of the string, we are done */ - if (*(data->pos)==0){ - return 0; - } - - n = strchr(data->pos,'\n'); - - if (n == 0){ - size = strlen(data->pos); - } else { - n++; /* include newline in output */ - size = (n-data->pos); - } - - if (size > buf_size-1){ - size = buf_size-1; - } - - - strncpy(out,data->pos,size); - - *(out+size) = '\0'; - - data->pos += size; - - return out; -} - -icalcomponent* icalparser_parse_string(char* str) -{ - icalcomponent *c; - struct slg_data d; - icalparser *p; - - d.pos = 0; - d.str = str; - - p = icalparser_new(); - icalparser_set_gen_data(p,&d); - c = icalparser_parse(p,string_line_generator); - icalparser_free(p); - - return c; - -} diff --git a/libical/src/libical/icalparser.h b/libical/src/libical/icalparser.h deleted file mode 100644 index 161127379f..0000000000 --- a/libical/src/libical/icalparser.h +++ /dev/null @@ -1,90 +0,0 @@ -/* -*- Mode: C -*- */ -/*====================================================================== - FILE: icalparser.h - CREATOR: eric 20 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 icalparser.h - -======================================================================*/ - - -#ifndef ICALPARSER_H -#define ICALPARSER_H - -#include "ical.h" -#include /* For FILE* */ - -typedef void* icalparser; - - -/*********************************************************************** - * Line-oriented parsing. - * - * Create a new parser via icalparse_new_parser, then add ines one at - * a time with icalparse_add_line(). icalparser_add_line() will return - * non-zero when it has finished with a component. - ***********************************************************************/ - -typedef enum icalparser_state { - ICALPARSER_ERROR, - ICALPARSER_SUCCESS, - ICALPARSER_BEGIN_COMP, - ICALPARSER_END_COMP, - ICALPARSER_IN_PROGRESS -} icalparser_state; - -icalparser* icalparser_new(); -icalcomponent* icalparser_add_line(icalparser* parser, char* str ); -icalcomponent* icalparser_claim(icalparser* parser); -icalcomponent* icalparser_clean(icalparser* parser); -icalparser_state icalparser_get_state(icalparser* parser); -void icalparser_free(icalparser* parser); - - -/*********************************************************************** - * Message oriented parsing. icalparser_parse takes a string that - * holds the text ( in RFC 2445 format ) and returns a pointer to an - * icalcomponent. The caller owns the memory. line_gen_func is a - * pointer to a function that returns one content line per invocation - **********************************************************************/ - -icalcomponent* icalparser_parse(icalparser *parser, - char* (*line_gen_func)(char *s, size_t size, void *d)); - -/* Set the data that icalparser_parse will give to the line_gen_func - as the parameter 'd'*/ -void icalparser_set_gen_data(icalparser* parser, void* data); - - -icalcomponent* icalparser_parse_string(char* str); - - -/*********************************************************************** - * Parser support functions - ***********************************************************************/ - -/* Use the flex/bison parser to turn a string into a value type */ -icalvalue* icalparser_parse_value(icalvalue_kind kind, char* str, icalcomponent** errors); - -/* Given a line generator function, return a single iCal content line.*/ -char* icalparser_get_line(icalparser* parser, char* (*line_gen_func)(char *s, size_t size, void *d)); - -char* string_line_generator(char *out, size_t buf_size, void *d); - -#endif /* !ICALPARSE_H */ diff --git a/libical/src/libical/icalproperty.c b/libical/src/libical/icalproperty.c deleted file mode 100644 index 1040215108..0000000000 --- a/libical/src/libical/icalproperty.c +++ /dev/null @@ -1,3467 +0,0 @@ -/* -*- Mode: C -*- */ - -/*====================================================================== - FILE: icalproperty.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 icalproperty.c - -======================================================================*/ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include /* For icalmemory_strdup, rindex */ -#include -#include -#include -#include /* for printf */ -#include /* for va_list, va_start, etc. */ - -#include "ical.h" -#include "pvl.h" -#include "icalenums.h" -#include "icalerror.h" -#include "icalmemory.h" - -#define TMP_BUF_SIZE 1024 - -/* Private routines for icalproperty */ -void icalvalue_set_parent(icalvalue* value, - icalproperty* property); -icalproperty* icalvalue_get_parent(icalvalue* value); - -void icalparameter_set_parent(icalparameter* param, - icalproperty* property); -icalproperty* icalparameter_get_parent(icalparameter* value); - - -void icalproperty_set_x_name(icalproperty* prop, char* name); - -struct icalproperty_impl -{ - char id[5]; - icalproperty_kind kind; - char* x_name; - pvl_list parameters; - pvl_elem parameter_iterator; - icalvalue* value; - icalcomponent *parent; -}; - -void icalproperty_add_parameters(struct icalproperty_impl *impl,va_list args) -{ - - void* vp; - - while((vp = va_arg(args, void*)) != 0) { - - if (icalvalue_isa_value(vp) != 0 ){ - } else if (icalparameter_isa_parameter(vp) != 0 ){ - - icalproperty_add_parameter((icalproperty*)impl, - (icalparameter*)vp); - } else { - assert(0); - } - - } - - -} - -struct icalproperty_impl* -icalproperty_new_impl (icalproperty_kind kind) -{ - struct icalproperty_impl* prop; - - if ( ( prop = (struct icalproperty_impl*) - malloc(sizeof(struct icalproperty_impl))) == 0) { - icalerror_set_errno(ICAL_NEWFAILED_ERROR); - return 0; - } - - strcpy(prop->id,"prop"); - - prop->kind = kind; - prop->parameters = pvl_newlist(); - prop->parameter_iterator = 0; - prop->value = 0; - prop->x_name = 0; - prop->parent = 0; - - return prop; -} - - -icalproperty* -icalproperty_new (icalproperty_kind kind) -{ - icalproperty *prop = (icalproperty*)icalproperty_new_impl(kind); - - return prop; -} - - -icalproperty* -icalproperty_new_clone(icalproperty* prop) -{ - struct icalproperty_impl *old = (struct icalproperty_impl*)prop; - struct icalproperty_impl *new = icalproperty_new_impl(old->kind); - pvl_elem p; - - icalerror_check_arg_rz((prop!=0),"Prop"); - icalerror_check_arg_rz((old!=0),"old"); - icalerror_check_arg_rz((new!=0),"new"); - - if (old->value !=0) { - new->value = icalvalue_new_clone(old->value); - } - - if (old->x_name != 0) { - - new->x_name = icalmemory_strdup(old->x_name); - - if (new->x_name == 0) { - icalproperty_free(new); - icalerror_set_errno(ICAL_NEWFAILED_ERROR); - return 0; - } - } - - for(p=pvl_head(old->parameters);p != 0; p = pvl_next(p)){ - icalparameter *param = icalparameter_new_clone(pvl_data(p)); - - if (param == 0){ - icalproperty_free(new); - icalerror_set_errno(ICAL_NEWFAILED_ERROR); - return 0; - } - - pvl_push(new->parameters,param); - - } - - return new; - -} - -/* This one works a little differently from the other *_from_string - routines; the string input is the name of the property, not the - data associated with the property, as it is in - icalvalue_from_string. All of the parsing associated with - properties is driven by routines in icalparse.c */ - -icalproperty* icalproperty_new_from_string(char* str) -{ - icalproperty_kind kind; - - icalerror_check_arg_rz( (str!=0),"str"); - - kind = icalenum_string_to_property_kind(str); - - if (kind == ICAL_NO_PROPERTY){ - - if( str[0] == 'X' && str[1] == '-'){ - icalproperty *p = icalproperty_new(ICAL_X_PROPERTY); - icalproperty_set_x_name(p,str); - return p; - } else { - icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR); - return 0; - } - - } else { - return icalproperty_new(kind); - } -} - -void -icalproperty_free (icalproperty* prop) -{ - struct icalproperty_impl *p; - - icalparameter* param; - - icalerror_check_arg_rv((prop!=0),"prop"); - - p = (struct icalproperty_impl*)prop; - -#ifdef ICAL_FREE_ON_LIST_IS_ERROR - icalerror_assert( (p->parent ==0),"Tried to free a property that is still attached to a component. "); - -#else - if(p->parent !=0){ - return; - } -#endif - - if (p->value != 0){ - icalvalue_set_parent(p->value,0); - icalvalue_free(p->value); - } - - while( (param = pvl_pop(p->parameters)) != 0){ - icalparameter_free(param); - } - - pvl_free(p->parameters); - - if (p->x_name != 0) { - free(p->x_name); - } - - p->kind = ICAL_NO_PROPERTY; - p->parameters = 0; - p->parameter_iterator = 0; - p->value = 0; - p->x_name = 0; - p->id[0] = 'X'; - - free(p); - -} - - -char* -icalproperty_as_ical_string (icalproperty* prop) -{ - icalparameter *param; - - /* Create new buffer that we can append names, parameters and a - value to, and reallocate as needed. Later, this buffer will be - copied to a icalmemory_tmp_buffer, which is managed internally - by libical, so it can be given to the caller without fear of - the caller forgetting to free it */ - - char* property_name = 0; - size_t buf_size = 1024; - char* buf = icalmemory_new_buffer(buf_size); - char* buf_ptr = buf; - icalvalue* value; - char *out_buf; - -#ifdef ICAL_UNIX_NEWLINE - char newline[] = "\n"; -#else - char newline[] = "\r\n"; -#endif - - struct icalproperty_impl *impl = (struct icalproperty_impl*)prop; - - icalerror_check_arg_rz( (prop!=0),"prop"); - - - /* Append property name */ - - if (impl->kind == ICAL_X_PROPERTY && impl->x_name != 0){ - property_name = impl->x_name; - } else { - property_name = icalenum_property_kind_to_string(impl->kind); - } - - if (property_name == 0 ) { - icalerror_warn("Got a property of an unknown kind."); - icalmemory_free_buffer(buf); - return 0; - - } - - - icalmemory_append_string(&buf, &buf_ptr, &buf_size, property_name); - icalmemory_append_string(&buf, &buf_ptr, &buf_size, newline); - - /* Append parameters */ - for(param = icalproperty_get_first_parameter(prop,ICAL_ANY_PARAMETER); - param != 0; - param = icalproperty_get_next_parameter(prop,ICAL_ANY_PARAMETER)) { - - char* kind_string = icalparameter_as_ical_string(param); - - if (kind_string == 0 ) { - char temp[TMP_BUF_SIZE]; - snprintf(temp, TMP_BUF_SIZE,"Got a parameter of unknown kind in %s property",property_name); - icalerror_warn(temp); - continue; - } - - icalmemory_append_string(&buf, &buf_ptr, &buf_size, " ;"); - icalmemory_append_string(&buf, &buf_ptr, &buf_size, kind_string); - icalmemory_append_string(&buf, &buf_ptr, &buf_size, newline); - - } - - /* Append value */ - - icalmemory_append_string(&buf, &buf_ptr, &buf_size, " :"); - - value = icalproperty_get_value(prop); - - if (value != 0){ - char *str = icalvalue_as_ical_string(value); - icalerror_assert((str !=0),"Could not get string representation of a value"); - icalmemory_append_string(&buf, &buf_ptr, &buf_size, str); - } else { - icalmemory_append_string(&buf, &buf_ptr, &buf_size,"ERROR: No Value"); - - } - - icalmemory_append_string(&buf, &buf_ptr, &buf_size, newline); - - /* Now, copy the buffer to a tmp_buffer, which is safe to give to - the caller without worring about de-allocating it. */ - - - out_buf = icalmemory_tmp_buffer(strlen(buf)+1); - strcpy(out_buf, buf); - - icalmemory_free_buffer(buf); - - return out_buf; -} - - - -icalproperty_kind -icalproperty_isa (icalproperty* property) -{ - struct icalproperty_impl *p = (struct icalproperty_impl*)property; - - if(property != 0){ - return p->kind; - } - - return ICAL_NO_PROPERTY; -} - -int -icalproperty_isa_property (void* property) -{ - struct icalproperty_impl *impl = (struct icalproperty_impl*)property; - - icalerror_check_arg_rz( (property!=0), "property"); - - if (strcmp(impl->id,"prop") == 0) { - return 1; - } else { - return 0; - } -} - - -void -icalproperty_add_parameter (icalproperty* prop,icalparameter* parameter) -{ - struct icalproperty_impl *p = (struct icalproperty_impl*)prop; - - icalerror_check_arg_rv( (prop!=0),"prop"); - icalerror_check_arg_rv( (parameter!=0),"parameter"); - - pvl_push(p->parameters, parameter); - -} - - -void -icalproperty_remove_parameter (icalproperty* prop, icalparameter_kind kind) -{ - icalerror_check_arg_rv((prop!=0),"prop"); - - assert(0); /* This routine is not implemented */ -} - - -int -icalproperty_count_parameters (icalproperty* prop) -{ - struct icalproperty_impl *p = (struct icalproperty_impl*)prop; - - if(prop != 0){ - return pvl_count(p->parameters); - } - - icalerror_set_errno(ICAL_USAGE_ERROR); - return -1; -} - - -icalparameter* -icalproperty_get_first_parameter (icalproperty* prop, icalparameter_kind kind) -{ - struct icalproperty_impl *p = (struct icalproperty_impl*)prop; - - icalerror_check_arg_rz( (prop!=0),"prop"); - - p->parameter_iterator = pvl_head(p->parameters); - - if (p->parameter_iterator == 0) { - return 0; - } - - return (icalparameter*) pvl_data(p->parameter_iterator); -} - - -icalparameter* -icalproperty_get_next_parameter (icalproperty* prop, icalparameter_kind kind) -{ - struct icalproperty_impl *p = (struct icalproperty_impl*)prop; - icalerror_check_arg_rz( (prop!=0),"prop"); - - if (p->parameter_iterator == 0 ) { - return 0; - } - - p->parameter_iterator = pvl_next(p->parameter_iterator); - - if (p->parameter_iterator == 0 ) { - return 0; - } - - return (icalparameter*) pvl_data(p->parameter_iterator); -} - -void -icalproperty_set_value (icalproperty* prop, icalvalue* value) -{ - struct icalproperty_impl *p = (struct icalproperty_impl*)prop; - - icalerror_check_arg_rv((prop !=0),"prop"); - icalerror_check_arg_rv((value !=0),"value"); - - if (p->value != 0){ - icalvalue_set_parent(p->value,0); - icalvalue_free(p->value); - p->value = 0; - } - - p->value = value; - - icalvalue_set_parent(value,prop); -} - - -icalvalue* -icalproperty_get_value (icalproperty* prop) -{ - struct icalproperty_impl *p = (struct icalproperty_impl*)prop; - - icalerror_check_arg_rz( (prop!=0),"prop"); - - return p->value; -} - - -void icalproperty_set_x_name(icalproperty* prop, char* name) -{ - struct icalproperty_impl *impl = (struct icalproperty_impl*)prop; - - icalerror_check_arg_rv( (name!=0),"name"); - icalerror_check_arg_rv( (prop!=0),"prop"); - - if (impl->x_name != 0) { - free(impl->x_name); - } - - impl->x_name = icalmemory_strdup(name); - - if(impl->x_name == 0){ - icalerror_set_errno(ICAL_ALLOCATION_ERROR); - } - -} - -char* icalproperty_get_x_name(icalproperty* prop){ - - struct icalproperty_impl *impl = (struct icalproperty_impl*)prop; - - icalerror_check_arg_rz( (prop!=0),"prop"); - - return impl->x_name; -} - - -void icalproperty_set_parent(icalproperty* property, - icalcomponent* component) -{ - struct icalproperty_impl *impl = (struct icalproperty_impl*)property; - - icalerror_check_arg_rv( (property!=0),"property"); - - impl->parent = component; -} - -icalcomponent* icalproperty_get_parent(icalproperty* property) -{ - struct icalproperty_impl *impl = (struct icalproperty_impl*)property; - - icalerror_check_arg_rv( (property!=0),"property"); - - return impl->parent; -} - - -/* Everything below this line is machine generated. Do not edit. */ - -/* METHOD */ - -icalproperty* icalproperty_new_method(icalproperty_method v) -{ - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_METHOD_PROPERTY); - - - icalproperty_set_method((icalproperty*)impl,v); - - return (icalproperty*)impl; -} - -icalproperty* icalproperty_vanew_method(icalproperty_method v, ...) -{ - va_list args; - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_METHOD_PROPERTY); - - - icalproperty_set_method((icalproperty*)impl,v); - - va_start(args,v); - icalproperty_add_parameters(impl, args); - va_end(args); - - return (icalproperty*)impl; -} - -void icalproperty_set_method(icalproperty* prop, icalproperty_method v) -{ - icalvalue *value; - - - icalerror_check_arg_rv( (prop!=0),"prop"); - - value = icalvalue_new_method(v); - - icalproperty_set_value(prop,value); - -} - -icalproperty_method icalproperty_get_method(icalproperty* prop) -{ - icalvalue *value; - icalerror_check_arg( (prop!=0),"prop"); - - value = icalproperty_get_value(prop); - - return icalvalue_get_method(value); -} - -/* X-LIC-MIMECID */ - -icalproperty* icalproperty_new_xlicmimecid(char* v) -{ - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_XLICMIMECID_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_xlicmimecid((icalproperty*)impl,v); - - return (icalproperty*)impl; -} - -icalproperty* icalproperty_vanew_xlicmimecid(char* v, ...) -{ - va_list args; - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_XLICMIMECID_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_xlicmimecid((icalproperty*)impl,v); - - va_start(args,v); - icalproperty_add_parameters(impl, args); - va_end(args); - - return (icalproperty*)impl; -} - -void icalproperty_set_xlicmimecid(icalproperty* prop, char* v) -{ - icalvalue *value; - - icalerror_check_arg_rv( (v!=0),"v"); - - icalerror_check_arg_rv( (prop!=0),"prop"); - - value = icalvalue_new_string(v); - - icalproperty_set_value(prop,value); - -} - -char* icalproperty_get_xlicmimecid(icalproperty* prop) -{ - icalvalue *value; - icalerror_check_arg( (prop!=0),"prop"); - - value = icalproperty_get_value(prop); - - return icalvalue_get_string(value); -} - -/* LAST-MODIFIED */ - -icalproperty* icalproperty_new_lastmodified(struct icaltimetype v) -{ - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_LASTMODIFIED_PROPERTY); - - - icalproperty_set_lastmodified((icalproperty*)impl,v); - - return (icalproperty*)impl; -} - -icalproperty* icalproperty_vanew_lastmodified(struct icaltimetype v, ...) -{ - va_list args; - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_LASTMODIFIED_PROPERTY); - - - icalproperty_set_lastmodified((icalproperty*)impl,v); - - va_start(args,v); - icalproperty_add_parameters(impl, args); - va_end(args); - - return (icalproperty*)impl; -} - -void icalproperty_set_lastmodified(icalproperty* prop, struct icaltimetype v) -{ - icalvalue *value; - - - icalerror_check_arg_rv( (prop!=0),"prop"); - - value = icalvalue_new_datetime(v); - - icalproperty_set_value(prop,value); - -} - -struct icaltimetype icalproperty_get_lastmodified(icalproperty* prop) -{ - icalvalue *value; - icalerror_check_arg( (prop!=0),"prop"); - - value = icalproperty_get_value(prop); - - return icalvalue_get_datetime(value); -} - -/* UID */ - -icalproperty* icalproperty_new_uid(char* v) -{ - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_UID_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_uid((icalproperty*)impl,v); - - return (icalproperty*)impl; -} - -icalproperty* icalproperty_vanew_uid(char* v, ...) -{ - va_list args; - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_UID_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_uid((icalproperty*)impl,v); - - va_start(args,v); - icalproperty_add_parameters(impl, args); - va_end(args); - - return (icalproperty*)impl; -} - -void icalproperty_set_uid(icalproperty* prop, char* v) -{ - icalvalue *value; - - icalerror_check_arg_rv( (v!=0),"v"); - - icalerror_check_arg_rv( (prop!=0),"prop"); - - value = icalvalue_new_text(v); - - icalproperty_set_value(prop,value); - -} - -char* icalproperty_get_uid(icalproperty* prop) -{ - icalvalue *value; - icalerror_check_arg( (prop!=0),"prop"); - - value = icalproperty_get_value(prop); - - return icalvalue_get_text(value); -} - -/* PRODID */ - -icalproperty* icalproperty_new_prodid(char* v) -{ - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_PRODID_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_prodid((icalproperty*)impl,v); - - return (icalproperty*)impl; -} - -icalproperty* icalproperty_vanew_prodid(char* v, ...) -{ - va_list args; - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_PRODID_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_prodid((icalproperty*)impl,v); - - va_start(args,v); - icalproperty_add_parameters(impl, args); - va_end(args); - - return (icalproperty*)impl; -} - -void icalproperty_set_prodid(icalproperty* prop, char* v) -{ - icalvalue *value; - - icalerror_check_arg_rv( (v!=0),"v"); - - icalerror_check_arg_rv( (prop!=0),"prop"); - - value = icalvalue_new_text(v); - - icalproperty_set_value(prop,value); - -} - -char* icalproperty_get_prodid(icalproperty* prop) -{ - icalvalue *value; - icalerror_check_arg( (prop!=0),"prop"); - - value = icalproperty_get_value(prop); - - return icalvalue_get_text(value); -} - -/* STATUS */ - -icalproperty* icalproperty_new_status(char* v) -{ - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_STATUS_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_status((icalproperty*)impl,v); - - return (icalproperty*)impl; -} - -icalproperty* icalproperty_vanew_status(char* v, ...) -{ - va_list args; - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_STATUS_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_status((icalproperty*)impl,v); - - va_start(args,v); - icalproperty_add_parameters(impl, args); - va_end(args); - - return (icalproperty*)impl; -} - -void icalproperty_set_status(icalproperty* prop, char* v) -{ - icalvalue *value; - - icalerror_check_arg_rv( (v!=0),"v"); - - icalerror_check_arg_rv( (prop!=0),"prop"); - - value = icalvalue_new_text(v); - - icalproperty_set_value(prop,value); - -} - -char* icalproperty_get_status(icalproperty* prop) -{ - icalvalue *value; - icalerror_check_arg( (prop!=0),"prop"); - - value = icalproperty_get_value(prop); - - return icalvalue_get_text(value); -} - -/* DESCRIPTION */ - -icalproperty* icalproperty_new_description(char* v) -{ - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_DESCRIPTION_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_description((icalproperty*)impl,v); - - return (icalproperty*)impl; -} - -icalproperty* icalproperty_vanew_description(char* v, ...) -{ - va_list args; - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_DESCRIPTION_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_description((icalproperty*)impl,v); - - va_start(args,v); - icalproperty_add_parameters(impl, args); - va_end(args); - - return (icalproperty*)impl; -} - -void icalproperty_set_description(icalproperty* prop, char* v) -{ - icalvalue *value; - - icalerror_check_arg_rv( (v!=0),"v"); - - icalerror_check_arg_rv( (prop!=0),"prop"); - - value = icalvalue_new_text(v); - - icalproperty_set_value(prop,value); - -} - -char* icalproperty_get_description(icalproperty* prop) -{ - icalvalue *value; - icalerror_check_arg( (prop!=0),"prop"); - - value = icalproperty_get_value(prop); - - return icalvalue_get_text(value); -} - -/* DURATION */ - -icalproperty* icalproperty_new_duration(struct icaldurationtype v) -{ - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_DURATION_PROPERTY); - - - icalproperty_set_duration((icalproperty*)impl,v); - - return (icalproperty*)impl; -} - -icalproperty* icalproperty_vanew_duration(struct icaldurationtype v, ...) -{ - va_list args; - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_DURATION_PROPERTY); - - - icalproperty_set_duration((icalproperty*)impl,v); - - va_start(args,v); - icalproperty_add_parameters(impl, args); - va_end(args); - - return (icalproperty*)impl; -} - -void icalproperty_set_duration(icalproperty* prop, struct icaldurationtype v) -{ - icalvalue *value; - - - icalerror_check_arg_rv( (prop!=0),"prop"); - - value = icalvalue_new_duration(v); - - icalproperty_set_value(prop,value); - -} - -struct icaldurationtype icalproperty_get_duration(icalproperty* prop) -{ - icalvalue *value; - icalerror_check_arg( (prop!=0),"prop"); - - value = icalproperty_get_value(prop); - - return icalvalue_get_duration(value); -} - -/* CATEGORIES */ - -icalproperty* icalproperty_new_categories(char* v) -{ - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_CATEGORIES_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_categories((icalproperty*)impl,v); - - return (icalproperty*)impl; -} - -icalproperty* icalproperty_vanew_categories(char* v, ...) -{ - va_list args; - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_CATEGORIES_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_categories((icalproperty*)impl,v); - - va_start(args,v); - icalproperty_add_parameters(impl, args); - va_end(args); - - return (icalproperty*)impl; -} - -void icalproperty_set_categories(icalproperty* prop, char* v) -{ - icalvalue *value; - - icalerror_check_arg_rv( (v!=0),"v"); - - icalerror_check_arg_rv( (prop!=0),"prop"); - - value = icalvalue_new_text(v); - - icalproperty_set_value(prop,value); - -} - -char* icalproperty_get_categories(icalproperty* prop) -{ - icalvalue *value; - icalerror_check_arg( (prop!=0),"prop"); - - value = icalproperty_get_value(prop); - - return icalvalue_get_text(value); -} - -/* VERSION */ - -icalproperty* icalproperty_new_version(char* v) -{ - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_VERSION_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_version((icalproperty*)impl,v); - - return (icalproperty*)impl; -} - -icalproperty* icalproperty_vanew_version(char* v, ...) -{ - va_list args; - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_VERSION_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_version((icalproperty*)impl,v); - - va_start(args,v); - icalproperty_add_parameters(impl, args); - va_end(args); - - return (icalproperty*)impl; -} - -void icalproperty_set_version(icalproperty* prop, char* v) -{ - icalvalue *value; - - icalerror_check_arg_rv( (v!=0),"v"); - - icalerror_check_arg_rv( (prop!=0),"prop"); - - value = icalvalue_new_text(v); - - icalproperty_set_value(prop,value); - -} - -char* icalproperty_get_version(icalproperty* prop) -{ - icalvalue *value; - icalerror_check_arg( (prop!=0),"prop"); - - value = icalproperty_get_value(prop); - - return icalvalue_get_text(value); -} - -/* TZOFFSETFROM */ - -icalproperty* icalproperty_new_tzoffsetfrom(int v) -{ - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_TZOFFSETFROM_PROPERTY); - - - icalproperty_set_tzoffsetfrom((icalproperty*)impl,v); - - return (icalproperty*)impl; -} - -icalproperty* icalproperty_vanew_tzoffsetfrom(int v, ...) -{ - va_list args; - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_TZOFFSETFROM_PROPERTY); - - - icalproperty_set_tzoffsetfrom((icalproperty*)impl,v); - - va_start(args,v); - icalproperty_add_parameters(impl, args); - va_end(args); - - return (icalproperty*)impl; -} - -void icalproperty_set_tzoffsetfrom(icalproperty* prop, int v) -{ - icalvalue *value; - - - icalerror_check_arg_rv( (prop!=0),"prop"); - - value = icalvalue_new_utcoffset(v); - - icalproperty_set_value(prop,value); - -} - -int icalproperty_get_tzoffsetfrom(icalproperty* prop) -{ - icalvalue *value; - icalerror_check_arg( (prop!=0),"prop"); - - value = icalproperty_get_value(prop); - - return icalvalue_get_utcoffset(value); -} - -/* RRULE */ - -icalproperty* icalproperty_new_rrule(struct icalrecurrencetype v) -{ - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_RRULE_PROPERTY); - - - icalproperty_set_rrule((icalproperty*)impl,v); - - return (icalproperty*)impl; -} - -icalproperty* icalproperty_vanew_rrule(struct icalrecurrencetype v, ...) -{ - va_list args; - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_RRULE_PROPERTY); - - - icalproperty_set_rrule((icalproperty*)impl,v); - - va_start(args,v); - icalproperty_add_parameters(impl, args); - va_end(args); - - return (icalproperty*)impl; -} - -void icalproperty_set_rrule(icalproperty* prop, struct icalrecurrencetype v) -{ - icalvalue *value; - - - icalerror_check_arg_rv( (prop!=0),"prop"); - - value = icalvalue_new_recur(v); - - icalproperty_set_value(prop,value); - -} - -struct icalrecurrencetype icalproperty_get_rrule(icalproperty* prop) -{ - icalvalue *value; - icalerror_check_arg( (prop!=0),"prop"); - - value = icalproperty_get_value(prop); - - return icalvalue_get_recur(value); -} - -/* ATTENDEE */ - -icalproperty* icalproperty_new_attendee(char* v) -{ - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_ATTENDEE_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_attendee((icalproperty*)impl,v); - - return (icalproperty*)impl; -} - -icalproperty* icalproperty_vanew_attendee(char* v, ...) -{ - va_list args; - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_ATTENDEE_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_attendee((icalproperty*)impl,v); - - va_start(args,v); - icalproperty_add_parameters(impl, args); - va_end(args); - - return (icalproperty*)impl; -} - -void icalproperty_set_attendee(icalproperty* prop, char* v) -{ - icalvalue *value; - - icalerror_check_arg_rv( (v!=0),"v"); - - icalerror_check_arg_rv( (prop!=0),"prop"); - - value = icalvalue_new_caladdress(v); - - icalproperty_set_value(prop,value); - -} - -char* icalproperty_get_attendee(icalproperty* prop) -{ - icalvalue *value; - icalerror_check_arg( (prop!=0),"prop"); - - value = icalproperty_get_value(prop); - - return icalvalue_get_caladdress(value); -} - -/* CONTACT */ - -icalproperty* icalproperty_new_contact(char* v) -{ - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_CONTACT_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_contact((icalproperty*)impl,v); - - return (icalproperty*)impl; -} - -icalproperty* icalproperty_vanew_contact(char* v, ...) -{ - va_list args; - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_CONTACT_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_contact((icalproperty*)impl,v); - - va_start(args,v); - icalproperty_add_parameters(impl, args); - va_end(args); - - return (icalproperty*)impl; -} - -void icalproperty_set_contact(icalproperty* prop, char* v) -{ - icalvalue *value; - - icalerror_check_arg_rv( (v!=0),"v"); - - icalerror_check_arg_rv( (prop!=0),"prop"); - - value = icalvalue_new_text(v); - - icalproperty_set_value(prop,value); - -} - -char* icalproperty_get_contact(icalproperty* prop) -{ - icalvalue *value; - icalerror_check_arg( (prop!=0),"prop"); - - value = icalproperty_get_value(prop); - - return icalvalue_get_text(value); -} - -/* X-LIC-MIMECONTENTTYPE */ - -icalproperty* icalproperty_new_xlicmimecontenttype(char* v) -{ - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_XLICMIMECONTENTTYPE_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_xlicmimecontenttype((icalproperty*)impl,v); - - return (icalproperty*)impl; -} - -icalproperty* icalproperty_vanew_xlicmimecontenttype(char* v, ...) -{ - va_list args; - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_XLICMIMECONTENTTYPE_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_xlicmimecontenttype((icalproperty*)impl,v); - - va_start(args,v); - icalproperty_add_parameters(impl, args); - va_end(args); - - return (icalproperty*)impl; -} - -void icalproperty_set_xlicmimecontenttype(icalproperty* prop, char* v) -{ - icalvalue *value; - - icalerror_check_arg_rv( (v!=0),"v"); - - icalerror_check_arg_rv( (prop!=0),"prop"); - - value = icalvalue_new_string(v); - - icalproperty_set_value(prop,value); - -} - -char* icalproperty_get_xlicmimecontenttype(icalproperty* prop) -{ - icalvalue *value; - icalerror_check_arg( (prop!=0),"prop"); - - value = icalproperty_get_value(prop); - - return icalvalue_get_string(value); -} - -/* X-LIC-MIMEOPTINFO */ - -icalproperty* icalproperty_new_xlicmimeoptinfo(char* v) -{ - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_XLICMIMEOPTINFO_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_xlicmimeoptinfo((icalproperty*)impl,v); - - return (icalproperty*)impl; -} - -icalproperty* icalproperty_vanew_xlicmimeoptinfo(char* v, ...) -{ - va_list args; - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_XLICMIMEOPTINFO_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_xlicmimeoptinfo((icalproperty*)impl,v); - - va_start(args,v); - icalproperty_add_parameters(impl, args); - va_end(args); - - return (icalproperty*)impl; -} - -void icalproperty_set_xlicmimeoptinfo(icalproperty* prop, char* v) -{ - icalvalue *value; - - icalerror_check_arg_rv( (v!=0),"v"); - - icalerror_check_arg_rv( (prop!=0),"prop"); - - value = icalvalue_new_string(v); - - icalproperty_set_value(prop,value); - -} - -char* icalproperty_get_xlicmimeoptinfo(icalproperty* prop) -{ - icalvalue *value; - icalerror_check_arg( (prop!=0),"prop"); - - value = icalproperty_get_value(prop); - - return icalvalue_get_string(value); -} - -/* RELATED-TO */ - -icalproperty* icalproperty_new_relatedto(char* v) -{ - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_RELATEDTO_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_relatedto((icalproperty*)impl,v); - - return (icalproperty*)impl; -} - -icalproperty* icalproperty_vanew_relatedto(char* v, ...) -{ - va_list args; - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_RELATEDTO_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_relatedto((icalproperty*)impl,v); - - va_start(args,v); - icalproperty_add_parameters(impl, args); - va_end(args); - - return (icalproperty*)impl; -} - -void icalproperty_set_relatedto(icalproperty* prop, char* v) -{ - icalvalue *value; - - icalerror_check_arg_rv( (v!=0),"v"); - - icalerror_check_arg_rv( (prop!=0),"prop"); - - value = icalvalue_new_text(v); - - icalproperty_set_value(prop,value); - -} - -char* icalproperty_get_relatedto(icalproperty* prop) -{ - icalvalue *value; - icalerror_check_arg( (prop!=0),"prop"); - - value = icalproperty_get_value(prop); - - return icalvalue_get_text(value); -} - -/* ORGANIZER */ - -icalproperty* icalproperty_new_organizer(char* v) -{ - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_ORGANIZER_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_organizer((icalproperty*)impl,v); - - return (icalproperty*)impl; -} - -icalproperty* icalproperty_vanew_organizer(char* v, ...) -{ - va_list args; - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_ORGANIZER_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_organizer((icalproperty*)impl,v); - - va_start(args,v); - icalproperty_add_parameters(impl, args); - va_end(args); - - return (icalproperty*)impl; -} - -void icalproperty_set_organizer(icalproperty* prop, char* v) -{ - icalvalue *value; - - icalerror_check_arg_rv( (v!=0),"v"); - - icalerror_check_arg_rv( (prop!=0),"prop"); - - value = icalvalue_new_caladdress(v); - - icalproperty_set_value(prop,value); - -} - -char* icalproperty_get_organizer(icalproperty* prop) -{ - icalvalue *value; - icalerror_check_arg( (prop!=0),"prop"); - - value = icalproperty_get_value(prop); - - return icalvalue_get_caladdress(value); -} - -/* COMMENT */ - -icalproperty* icalproperty_new_comment(char* v) -{ - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_COMMENT_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_comment((icalproperty*)impl,v); - - return (icalproperty*)impl; -} - -icalproperty* icalproperty_vanew_comment(char* v, ...) -{ - va_list args; - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_COMMENT_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_comment((icalproperty*)impl,v); - - va_start(args,v); - icalproperty_add_parameters(impl, args); - va_end(args); - - return (icalproperty*)impl; -} - -void icalproperty_set_comment(icalproperty* prop, char* v) -{ - icalvalue *value; - - icalerror_check_arg_rv( (v!=0),"v"); - - icalerror_check_arg_rv( (prop!=0),"prop"); - - value = icalvalue_new_text(v); - - icalproperty_set_value(prop,value); - -} - -char* icalproperty_get_comment(icalproperty* prop) -{ - icalvalue *value; - icalerror_check_arg( (prop!=0),"prop"); - - value = icalproperty_get_value(prop); - - return icalvalue_get_text(value); -} - -/* X-LIC-ERROR */ - -icalproperty* icalproperty_new_xlicerror(char* v) -{ - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_XLICERROR_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_xlicerror((icalproperty*)impl,v); - - return (icalproperty*)impl; -} - -icalproperty* icalproperty_vanew_xlicerror(char* v, ...) -{ - va_list args; - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_XLICERROR_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_xlicerror((icalproperty*)impl,v); - - va_start(args,v); - icalproperty_add_parameters(impl, args); - va_end(args); - - return (icalproperty*)impl; -} - -void icalproperty_set_xlicerror(icalproperty* prop, char* v) -{ - icalvalue *value; - - icalerror_check_arg_rv( (v!=0),"v"); - - icalerror_check_arg_rv( (prop!=0),"prop"); - - value = icalvalue_new_text(v); - - icalproperty_set_value(prop,value); - -} - -char* icalproperty_get_xlicerror(icalproperty* prop) -{ - icalvalue *value; - icalerror_check_arg( (prop!=0),"prop"); - - value = icalproperty_get_value(prop); - - return icalvalue_get_text(value); -} - -/* TRIGGER */ - -icalproperty* icalproperty_new_trigger(union icaltriggertype v) -{ - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_TRIGGER_PROPERTY); - - - icalproperty_set_trigger((icalproperty*)impl,v); - - return (icalproperty*)impl; -} - -icalproperty* icalproperty_vanew_trigger(union icaltriggertype v, ...) -{ - va_list args; - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_TRIGGER_PROPERTY); - - - icalproperty_set_trigger((icalproperty*)impl,v); - - va_start(args,v); - icalproperty_add_parameters(impl, args); - va_end(args); - - return (icalproperty*)impl; -} - -void icalproperty_set_trigger(icalproperty* prop, union icaltriggertype v) -{ - icalvalue *value; - - - icalerror_check_arg_rv( (prop!=0),"prop"); - - value = icalvalue_new_trigger(v); - - icalproperty_set_value(prop,value); - -} - -union icaltriggertype icalproperty_get_trigger(icalproperty* prop) -{ - icalvalue *value; - icalerror_check_arg( (prop!=0),"prop"); - - value = icalproperty_get_value(prop); - - return icalvalue_get_trigger(value); -} - -/* CLASS */ - -icalproperty* icalproperty_new_class(char* v) -{ - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_CLASS_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_class((icalproperty*)impl,v); - - return (icalproperty*)impl; -} - -icalproperty* icalproperty_vanew_class(char* v, ...) -{ - va_list args; - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_CLASS_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_class((icalproperty*)impl,v); - - va_start(args,v); - icalproperty_add_parameters(impl, args); - va_end(args); - - return (icalproperty*)impl; -} - -void icalproperty_set_class(icalproperty* prop, char* v) -{ - icalvalue *value; - - icalerror_check_arg_rv( (v!=0),"v"); - - icalerror_check_arg_rv( (prop!=0),"prop"); - - value = icalvalue_new_text(v); - - icalproperty_set_value(prop,value); - -} - -char* icalproperty_get_class(icalproperty* prop) -{ - icalvalue *value; - icalerror_check_arg( (prop!=0),"prop"); - - value = icalproperty_get_value(prop); - - return icalvalue_get_text(value); -} - -/* X */ - -icalproperty* icalproperty_new_x(char* v) -{ - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_X_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_x((icalproperty*)impl,v); - - return (icalproperty*)impl; -} - -icalproperty* icalproperty_vanew_x(char* v, ...) -{ - va_list args; - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_X_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_x((icalproperty*)impl,v); - - va_start(args,v); - icalproperty_add_parameters(impl, args); - va_end(args); - - return (icalproperty*)impl; -} - -void icalproperty_set_x(icalproperty* prop, char* v) -{ - icalvalue *value; - - icalerror_check_arg_rv( (v!=0),"v"); - - icalerror_check_arg_rv( (prop!=0),"prop"); - - value = icalvalue_new_text(v); - - icalproperty_set_value(prop,value); - -} - -char* icalproperty_get_x(icalproperty* prop) -{ - icalvalue *value; - icalerror_check_arg( (prop!=0),"prop"); - - value = icalproperty_get_value(prop); - - return icalvalue_get_text(value); -} - -/* TZOFFSETTO */ - -icalproperty* icalproperty_new_tzoffsetto(int v) -{ - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_TZOFFSETTO_PROPERTY); - - - icalproperty_set_tzoffsetto((icalproperty*)impl,v); - - return (icalproperty*)impl; -} - -icalproperty* icalproperty_vanew_tzoffsetto(int v, ...) -{ - va_list args; - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_TZOFFSETTO_PROPERTY); - - - icalproperty_set_tzoffsetto((icalproperty*)impl,v); - - va_start(args,v); - icalproperty_add_parameters(impl, args); - va_end(args); - - return (icalproperty*)impl; -} - -void icalproperty_set_tzoffsetto(icalproperty* prop, int v) -{ - icalvalue *value; - - - icalerror_check_arg_rv( (prop!=0),"prop"); - - value = icalvalue_new_utcoffset(v); - - icalproperty_set_value(prop,value); - -} - -int icalproperty_get_tzoffsetto(icalproperty* prop) -{ - icalvalue *value; - icalerror_check_arg( (prop!=0),"prop"); - - value = icalproperty_get_value(prop); - - return icalvalue_get_utcoffset(value); -} - -/* TRANSP */ - -icalproperty* icalproperty_new_transp(char* v) -{ - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_TRANSP_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_transp((icalproperty*)impl,v); - - return (icalproperty*)impl; -} - -icalproperty* icalproperty_vanew_transp(char* v, ...) -{ - va_list args; - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_TRANSP_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_transp((icalproperty*)impl,v); - - va_start(args,v); - icalproperty_add_parameters(impl, args); - va_end(args); - - return (icalproperty*)impl; -} - -void icalproperty_set_transp(icalproperty* prop, char* v) -{ - icalvalue *value; - - icalerror_check_arg_rv( (v!=0),"v"); - - icalerror_check_arg_rv( (prop!=0),"prop"); - - value = icalvalue_new_text(v); - - icalproperty_set_value(prop,value); - -} - -char* icalproperty_get_transp(icalproperty* prop) -{ - icalvalue *value; - icalerror_check_arg( (prop!=0),"prop"); - - value = icalproperty_get_value(prop); - - return icalvalue_get_text(value); -} - -/* X-LIC-MIMEENCODING */ - -icalproperty* icalproperty_new_xlicmimeencoding(char* v) -{ - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_XLICMIMEENCODING_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_xlicmimeencoding((icalproperty*)impl,v); - - return (icalproperty*)impl; -} - -icalproperty* icalproperty_vanew_xlicmimeencoding(char* v, ...) -{ - va_list args; - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_XLICMIMEENCODING_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_xlicmimeencoding((icalproperty*)impl,v); - - va_start(args,v); - icalproperty_add_parameters(impl, args); - va_end(args); - - return (icalproperty*)impl; -} - -void icalproperty_set_xlicmimeencoding(icalproperty* prop, char* v) -{ - icalvalue *value; - - icalerror_check_arg_rv( (v!=0),"v"); - - icalerror_check_arg_rv( (prop!=0),"prop"); - - value = icalvalue_new_string(v); - - icalproperty_set_value(prop,value); - -} - -char* icalproperty_get_xlicmimeencoding(icalproperty* prop) -{ - icalvalue *value; - icalerror_check_arg( (prop!=0),"prop"); - - value = icalproperty_get_value(prop); - - return icalvalue_get_string(value); -} - -/* SEQUENCE */ - -icalproperty* icalproperty_new_sequence(int v) -{ - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_SEQUENCE_PROPERTY); - - - icalproperty_set_sequence((icalproperty*)impl,v); - - return (icalproperty*)impl; -} - -icalproperty* icalproperty_vanew_sequence(int v, ...) -{ - va_list args; - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_SEQUENCE_PROPERTY); - - - icalproperty_set_sequence((icalproperty*)impl,v); - - va_start(args,v); - icalproperty_add_parameters(impl, args); - va_end(args); - - return (icalproperty*)impl; -} - -void icalproperty_set_sequence(icalproperty* prop, int v) -{ - icalvalue *value; - - - icalerror_check_arg_rv( (prop!=0),"prop"); - - value = icalvalue_new_integer(v); - - icalproperty_set_value(prop,value); - -} - -int icalproperty_get_sequence(icalproperty* prop) -{ - icalvalue *value; - icalerror_check_arg( (prop!=0),"prop"); - - value = icalproperty_get_value(prop); - - return icalvalue_get_integer(value); -} - -/* LOCATION */ - -icalproperty* icalproperty_new_location(char* v) -{ - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_LOCATION_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_location((icalproperty*)impl,v); - - return (icalproperty*)impl; -} - -icalproperty* icalproperty_vanew_location(char* v, ...) -{ - va_list args; - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_LOCATION_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_location((icalproperty*)impl,v); - - va_start(args,v); - icalproperty_add_parameters(impl, args); - va_end(args); - - return (icalproperty*)impl; -} - -void icalproperty_set_location(icalproperty* prop, char* v) -{ - icalvalue *value; - - icalerror_check_arg_rv( (v!=0),"v"); - - icalerror_check_arg_rv( (prop!=0),"prop"); - - value = icalvalue_new_text(v); - - icalproperty_set_value(prop,value); - -} - -char* icalproperty_get_location(icalproperty* prop) -{ - icalvalue *value; - icalerror_check_arg( (prop!=0),"prop"); - - value = icalproperty_get_value(prop); - - return icalvalue_get_text(value); -} - -/* REQUEST-STATUS */ - -icalproperty* icalproperty_new_requeststatus(char* v) -{ - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_REQUESTSTATUS_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_requeststatus((icalproperty*)impl,v); - - return (icalproperty*)impl; -} - -icalproperty* icalproperty_vanew_requeststatus(char* v, ...) -{ - va_list args; - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_REQUESTSTATUS_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_requeststatus((icalproperty*)impl,v); - - va_start(args,v); - icalproperty_add_parameters(impl, args); - va_end(args); - - return (icalproperty*)impl; -} - -void icalproperty_set_requeststatus(icalproperty* prop, char* v) -{ - icalvalue *value; - - icalerror_check_arg_rv( (v!=0),"v"); - - icalerror_check_arg_rv( (prop!=0),"prop"); - - value = icalvalue_new_string(v); - - icalproperty_set_value(prop,value); - -} - -char* icalproperty_get_requeststatus(icalproperty* prop) -{ - icalvalue *value; - icalerror_check_arg( (prop!=0),"prop"); - - value = icalproperty_get_value(prop); - - return icalvalue_get_string(value); -} - -/* EXDATE */ - -icalproperty* icalproperty_new_exdate(struct icaltimetype v) -{ - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_EXDATE_PROPERTY); - - - icalproperty_set_exdate((icalproperty*)impl,v); - - return (icalproperty*)impl; -} - -icalproperty* icalproperty_vanew_exdate(struct icaltimetype v, ...) -{ - va_list args; - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_EXDATE_PROPERTY); - - - icalproperty_set_exdate((icalproperty*)impl,v); - - va_start(args,v); - icalproperty_add_parameters(impl, args); - va_end(args); - - return (icalproperty*)impl; -} - -void icalproperty_set_exdate(icalproperty* prop, struct icaltimetype v) -{ - icalvalue *value; - - - icalerror_check_arg_rv( (prop!=0),"prop"); - - value = icalvalue_new_datetimedate(v); - - icalproperty_set_value(prop,value); - -} - -struct icaltimetype icalproperty_get_exdate(icalproperty* prop) -{ - icalvalue *value; - icalerror_check_arg( (prop!=0),"prop"); - - value = icalproperty_get_value(prop); - - return icalvalue_get_datetimedate(value); -} - -/* TZID */ - -icalproperty* icalproperty_new_tzid(char* v) -{ - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_TZID_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_tzid((icalproperty*)impl,v); - - return (icalproperty*)impl; -} - -icalproperty* icalproperty_vanew_tzid(char* v, ...) -{ - va_list args; - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_TZID_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_tzid((icalproperty*)impl,v); - - va_start(args,v); - icalproperty_add_parameters(impl, args); - va_end(args); - - return (icalproperty*)impl; -} - -void icalproperty_set_tzid(icalproperty* prop, char* v) -{ - icalvalue *value; - - icalerror_check_arg_rv( (v!=0),"v"); - - icalerror_check_arg_rv( (prop!=0),"prop"); - - value = icalvalue_new_text(v); - - icalproperty_set_value(prop,value); - -} - -char* icalproperty_get_tzid(icalproperty* prop) -{ - icalvalue *value; - icalerror_check_arg( (prop!=0),"prop"); - - value = icalproperty_get_value(prop); - - return icalvalue_get_text(value); -} - -/* RESOURCES */ - -icalproperty* icalproperty_new_resources(char* v) -{ - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_RESOURCES_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_resources((icalproperty*)impl,v); - - return (icalproperty*)impl; -} - -icalproperty* icalproperty_vanew_resources(char* v, ...) -{ - va_list args; - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_RESOURCES_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_resources((icalproperty*)impl,v); - - va_start(args,v); - icalproperty_add_parameters(impl, args); - va_end(args); - - return (icalproperty*)impl; -} - -void icalproperty_set_resources(icalproperty* prop, char* v) -{ - icalvalue *value; - - icalerror_check_arg_rv( (v!=0),"v"); - - icalerror_check_arg_rv( (prop!=0),"prop"); - - value = icalvalue_new_text(v); - - icalproperty_set_value(prop,value); - -} - -char* icalproperty_get_resources(icalproperty* prop) -{ - icalvalue *value; - icalerror_check_arg( (prop!=0),"prop"); - - value = icalproperty_get_value(prop); - - return icalvalue_get_text(value); -} - -/* TZURL */ - -icalproperty* icalproperty_new_tzurl(char* v) -{ - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_TZURL_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_tzurl((icalproperty*)impl,v); - - return (icalproperty*)impl; -} - -icalproperty* icalproperty_vanew_tzurl(char* v, ...) -{ - va_list args; - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_TZURL_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_tzurl((icalproperty*)impl,v); - - va_start(args,v); - icalproperty_add_parameters(impl, args); - va_end(args); - - return (icalproperty*)impl; -} - -void icalproperty_set_tzurl(icalproperty* prop, char* v) -{ - icalvalue *value; - - icalerror_check_arg_rv( (v!=0),"v"); - - icalerror_check_arg_rv( (prop!=0),"prop"); - - value = icalvalue_new_uri(v); - - icalproperty_set_value(prop,value); - -} - -char* icalproperty_get_tzurl(icalproperty* prop) -{ - icalvalue *value; - icalerror_check_arg( (prop!=0),"prop"); - - value = icalproperty_get_value(prop); - - return icalvalue_get_uri(value); -} - -/* REPEAT */ - -icalproperty* icalproperty_new_repeat(int v) -{ - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_REPEAT_PROPERTY); - - - icalproperty_set_repeat((icalproperty*)impl,v); - - return (icalproperty*)impl; -} - -icalproperty* icalproperty_vanew_repeat(int v, ...) -{ - va_list args; - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_REPEAT_PROPERTY); - - - icalproperty_set_repeat((icalproperty*)impl,v); - - va_start(args,v); - icalproperty_add_parameters(impl, args); - va_end(args); - - return (icalproperty*)impl; -} - -void icalproperty_set_repeat(icalproperty* prop, int v) -{ - icalvalue *value; - - - icalerror_check_arg_rv( (prop!=0),"prop"); - - value = icalvalue_new_integer(v); - - icalproperty_set_value(prop,value); - -} - -int icalproperty_get_repeat(icalproperty* prop) -{ - icalvalue *value; - icalerror_check_arg( (prop!=0),"prop"); - - value = icalproperty_get_value(prop); - - return icalvalue_get_integer(value); -} - -/* PRIORITY */ - -icalproperty* icalproperty_new_priority(int v) -{ - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_PRIORITY_PROPERTY); - - - icalproperty_set_priority((icalproperty*)impl,v); - - return (icalproperty*)impl; -} - -icalproperty* icalproperty_vanew_priority(int v, ...) -{ - va_list args; - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_PRIORITY_PROPERTY); - - - icalproperty_set_priority((icalproperty*)impl,v); - - va_start(args,v); - icalproperty_add_parameters(impl, args); - va_end(args); - - return (icalproperty*)impl; -} - -void icalproperty_set_priority(icalproperty* prop, int v) -{ - icalvalue *value; - - - icalerror_check_arg_rv( (prop!=0),"prop"); - - value = icalvalue_new_integer(v); - - icalproperty_set_value(prop,value); - -} - -int icalproperty_get_priority(icalproperty* prop) -{ - icalvalue *value; - icalerror_check_arg( (prop!=0),"prop"); - - value = icalproperty_get_value(prop); - - return icalvalue_get_integer(value); -} - -/* FREEBUSY */ - -icalproperty* icalproperty_new_freebusy(struct icalperiodtype v) -{ - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_FREEBUSY_PROPERTY); - - - icalproperty_set_freebusy((icalproperty*)impl,v); - - return (icalproperty*)impl; -} - -icalproperty* icalproperty_vanew_freebusy(struct icalperiodtype v, ...) -{ - va_list args; - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_FREEBUSY_PROPERTY); - - - icalproperty_set_freebusy((icalproperty*)impl,v); - - va_start(args,v); - icalproperty_add_parameters(impl, args); - va_end(args); - - return (icalproperty*)impl; -} - -void icalproperty_set_freebusy(icalproperty* prop, struct icalperiodtype v) -{ - icalvalue *value; - - - icalerror_check_arg_rv( (prop!=0),"prop"); - - value = icalvalue_new_period(v); - - icalproperty_set_value(prop,value); - -} - -struct icalperiodtype icalproperty_get_freebusy(icalproperty* prop) -{ - icalvalue *value; - icalerror_check_arg( (prop!=0),"prop"); - - value = icalproperty_get_value(prop); - - return icalvalue_get_period(value); -} - -/* DTSTART */ - -icalproperty* icalproperty_new_dtstart(struct icaltimetype v) -{ - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_DTSTART_PROPERTY); - - - icalproperty_set_dtstart((icalproperty*)impl,v); - - return (icalproperty*)impl; -} - -icalproperty* icalproperty_vanew_dtstart(struct icaltimetype v, ...) -{ - va_list args; - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_DTSTART_PROPERTY); - - - icalproperty_set_dtstart((icalproperty*)impl,v); - - va_start(args,v); - icalproperty_add_parameters(impl, args); - va_end(args); - - return (icalproperty*)impl; -} - -void icalproperty_set_dtstart(icalproperty* prop, struct icaltimetype v) -{ - icalvalue *value; - - - icalerror_check_arg_rv( (prop!=0),"prop"); - - value = icalvalue_new_datetimedate(v); - - icalproperty_set_value(prop,value); - -} - -struct icaltimetype icalproperty_get_dtstart(icalproperty* prop) -{ - icalvalue *value; - icalerror_check_arg( (prop!=0),"prop"); - - value = icalproperty_get_value(prop); - - return icalvalue_get_datetimedate(value); -} - -/* RECURRENCE-ID */ - -icalproperty* icalproperty_new_recurrenceid(struct icaltimetype v) -{ - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_RECURRENCEID_PROPERTY); - - - icalproperty_set_recurrenceid((icalproperty*)impl,v); - - return (icalproperty*)impl; -} - -icalproperty* icalproperty_vanew_recurrenceid(struct icaltimetype v, ...) -{ - va_list args; - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_RECURRENCEID_PROPERTY); - - - icalproperty_set_recurrenceid((icalproperty*)impl,v); - - va_start(args,v); - icalproperty_add_parameters(impl, args); - va_end(args); - - return (icalproperty*)impl; -} - -void icalproperty_set_recurrenceid(icalproperty* prop, struct icaltimetype v) -{ - icalvalue *value; - - - icalerror_check_arg_rv( (prop!=0),"prop"); - - value = icalvalue_new_datetimedate(v); - - icalproperty_set_value(prop,value); - -} - -struct icaltimetype icalproperty_get_recurrenceid(icalproperty* prop) -{ - icalvalue *value; - icalerror_check_arg( (prop!=0),"prop"); - - value = icalproperty_get_value(prop); - - return icalvalue_get_datetimedate(value); -} - -/* SUMMARY */ - -icalproperty* icalproperty_new_summary(char* v) -{ - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_SUMMARY_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_summary((icalproperty*)impl,v); - - return (icalproperty*)impl; -} - -icalproperty* icalproperty_vanew_summary(char* v, ...) -{ - va_list args; - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_SUMMARY_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_summary((icalproperty*)impl,v); - - va_start(args,v); - icalproperty_add_parameters(impl, args); - va_end(args); - - return (icalproperty*)impl; -} - -void icalproperty_set_summary(icalproperty* prop, char* v) -{ - icalvalue *value; - - icalerror_check_arg_rv( (v!=0),"v"); - - icalerror_check_arg_rv( (prop!=0),"prop"); - - value = icalvalue_new_text(v); - - icalproperty_set_value(prop,value); - -} - -char* icalproperty_get_summary(icalproperty* prop) -{ - icalvalue *value; - icalerror_check_arg( (prop!=0),"prop"); - - value = icalproperty_get_value(prop); - - return icalvalue_get_text(value); -} - -/* DTEND */ - -icalproperty* icalproperty_new_dtend(struct icaltimetype v) -{ - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_DTEND_PROPERTY); - - - icalproperty_set_dtend((icalproperty*)impl,v); - - return (icalproperty*)impl; -} - -icalproperty* icalproperty_vanew_dtend(struct icaltimetype v, ...) -{ - va_list args; - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_DTEND_PROPERTY); - - - icalproperty_set_dtend((icalproperty*)impl,v); - - va_start(args,v); - icalproperty_add_parameters(impl, args); - va_end(args); - - return (icalproperty*)impl; -} - -void icalproperty_set_dtend(icalproperty* prop, struct icaltimetype v) -{ - icalvalue *value; - - - icalerror_check_arg_rv( (prop!=0),"prop"); - - value = icalvalue_new_datetimedate(v); - - icalproperty_set_value(prop,value); - -} - -struct icaltimetype icalproperty_get_dtend(icalproperty* prop) -{ - icalvalue *value; - icalerror_check_arg( (prop!=0),"prop"); - - value = icalproperty_get_value(prop); - - return icalvalue_get_datetimedate(value); -} - -/* TZNAME */ - -icalproperty* icalproperty_new_tzname(char* v) -{ - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_TZNAME_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_tzname((icalproperty*)impl,v); - - return (icalproperty*)impl; -} - -icalproperty* icalproperty_vanew_tzname(char* v, ...) -{ - va_list args; - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_TZNAME_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_tzname((icalproperty*)impl,v); - - va_start(args,v); - icalproperty_add_parameters(impl, args); - va_end(args); - - return (icalproperty*)impl; -} - -void icalproperty_set_tzname(icalproperty* prop, char* v) -{ - icalvalue *value; - - icalerror_check_arg_rv( (v!=0),"v"); - - icalerror_check_arg_rv( (prop!=0),"prop"); - - value = icalvalue_new_text(v); - - icalproperty_set_value(prop,value); - -} - -char* icalproperty_get_tzname(icalproperty* prop) -{ - icalvalue *value; - icalerror_check_arg( (prop!=0),"prop"); - - value = icalproperty_get_value(prop); - - return icalvalue_get_text(value); -} - -/* RDATE */ - -icalproperty* icalproperty_new_rdate(struct icalperiodtype v) -{ - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_RDATE_PROPERTY); - - - icalproperty_set_rdate((icalproperty*)impl,v); - - return (icalproperty*)impl; -} - -icalproperty* icalproperty_vanew_rdate(struct icalperiodtype v, ...) -{ - va_list args; - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_RDATE_PROPERTY); - - - icalproperty_set_rdate((icalproperty*)impl,v); - - va_start(args,v); - icalproperty_add_parameters(impl, args); - va_end(args); - - return (icalproperty*)impl; -} - -void icalproperty_set_rdate(icalproperty* prop, struct icalperiodtype v) -{ - icalvalue *value; - - - icalerror_check_arg_rv( (prop!=0),"prop"); - - value = icalvalue_new_datetimeperiod(v); - - icalproperty_set_value(prop,value); - -} - -struct icalperiodtype icalproperty_get_rdate(icalproperty* prop) -{ - icalvalue *value; - icalerror_check_arg( (prop!=0),"prop"); - - value = icalproperty_get_value(prop); - - return icalvalue_get_datetimeperiod(value); -} - -/* X-LIC-MIMEFILENAME */ - -icalproperty* icalproperty_new_xlicmimefilename(char* v) -{ - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_XLICMIMEFILENAME_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_xlicmimefilename((icalproperty*)impl,v); - - return (icalproperty*)impl; -} - -icalproperty* icalproperty_vanew_xlicmimefilename(char* v, ...) -{ - va_list args; - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_XLICMIMEFILENAME_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_xlicmimefilename((icalproperty*)impl,v); - - va_start(args,v); - icalproperty_add_parameters(impl, args); - va_end(args); - - return (icalproperty*)impl; -} - -void icalproperty_set_xlicmimefilename(icalproperty* prop, char* v) -{ - icalvalue *value; - - icalerror_check_arg_rv( (v!=0),"v"); - - icalerror_check_arg_rv( (prop!=0),"prop"); - - value = icalvalue_new_string(v); - - icalproperty_set_value(prop,value); - -} - -char* icalproperty_get_xlicmimefilename(icalproperty* prop) -{ - icalvalue *value; - icalerror_check_arg( (prop!=0),"prop"); - - value = icalproperty_get_value(prop); - - return icalvalue_get_string(value); -} - -/* URL */ - -icalproperty* icalproperty_new_url(char* v) -{ - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_URL_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_url((icalproperty*)impl,v); - - return (icalproperty*)impl; -} - -icalproperty* icalproperty_vanew_url(char* v, ...) -{ - va_list args; - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_URL_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_url((icalproperty*)impl,v); - - va_start(args,v); - icalproperty_add_parameters(impl, args); - va_end(args); - - return (icalproperty*)impl; -} - -void icalproperty_set_url(icalproperty* prop, char* v) -{ - icalvalue *value; - - icalerror_check_arg_rv( (v!=0),"v"); - - icalerror_check_arg_rv( (prop!=0),"prop"); - - value = icalvalue_new_uri(v); - - icalproperty_set_value(prop,value); - -} - -char* icalproperty_get_url(icalproperty* prop) -{ - icalvalue *value; - icalerror_check_arg( (prop!=0),"prop"); - - value = icalproperty_get_value(prop); - - return icalvalue_get_uri(value); -} - -/* X-LIC-CLUSTERCOUNT */ - -icalproperty* icalproperty_new_xlicclustercount(int v) -{ - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_XLICCLUSTERCOUNT_PROPERTY); - - - icalproperty_set_xlicclustercount((icalproperty*)impl,v); - - return (icalproperty*)impl; -} - -icalproperty* icalproperty_vanew_xlicclustercount(int v, ...) -{ - va_list args; - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_XLICCLUSTERCOUNT_PROPERTY); - - - icalproperty_set_xlicclustercount((icalproperty*)impl,v); - - va_start(args,v); - icalproperty_add_parameters(impl, args); - va_end(args); - - return (icalproperty*)impl; -} - -void icalproperty_set_xlicclustercount(icalproperty* prop, int v) -{ - icalvalue *value; - - - icalerror_check_arg_rv( (prop!=0),"prop"); - - value = icalvalue_new_integer(v); - - icalproperty_set_value(prop,value); - -} - -int icalproperty_get_xlicclustercount(icalproperty* prop) -{ - icalvalue *value; - icalerror_check_arg( (prop!=0),"prop"); - - value = icalproperty_get_value(prop); - - return icalvalue_get_integer(value); -} - -/* ATTACH */ - -icalproperty* icalproperty_new_attach(struct icalattachtype v) -{ - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_ATTACH_PROPERTY); - - - icalproperty_set_attach((icalproperty*)impl,v); - - return (icalproperty*)impl; -} - -icalproperty* icalproperty_vanew_attach(struct icalattachtype v, ...) -{ - va_list args; - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_ATTACH_PROPERTY); - - - icalproperty_set_attach((icalproperty*)impl,v); - - va_start(args,v); - icalproperty_add_parameters(impl, args); - va_end(args); - - return (icalproperty*)impl; -} - -void icalproperty_set_attach(icalproperty* prop, struct icalattachtype v) -{ - icalvalue *value; - - - icalerror_check_arg_rv( (prop!=0),"prop"); - - value = icalvalue_new_attach(v); - - icalproperty_set_value(prop,value); - -} - -struct icalattachtype icalproperty_get_attach(icalproperty* prop) -{ - icalvalue *value; - icalerror_check_arg( (prop!=0),"prop"); - - value = icalproperty_get_value(prop); - - return icalvalue_get_attach(value); -} - -/* EXRULE */ - -icalproperty* icalproperty_new_exrule(struct icalrecurrencetype v) -{ - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_EXRULE_PROPERTY); - - - icalproperty_set_exrule((icalproperty*)impl,v); - - return (icalproperty*)impl; -} - -icalproperty* icalproperty_vanew_exrule(struct icalrecurrencetype v, ...) -{ - va_list args; - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_EXRULE_PROPERTY); - - - icalproperty_set_exrule((icalproperty*)impl,v); - - va_start(args,v); - icalproperty_add_parameters(impl, args); - va_end(args); - - return (icalproperty*)impl; -} - -void icalproperty_set_exrule(icalproperty* prop, struct icalrecurrencetype v) -{ - icalvalue *value; - - - icalerror_check_arg_rv( (prop!=0),"prop"); - - value = icalvalue_new_recur(v); - - icalproperty_set_value(prop,value); - -} - -struct icalrecurrencetype icalproperty_get_exrule(icalproperty* prop) -{ - icalvalue *value; - icalerror_check_arg( (prop!=0),"prop"); - - value = icalproperty_get_value(prop); - - return icalvalue_get_recur(value); -} - -/* QUERY */ - -icalproperty* icalproperty_new_query(char* v) -{ - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_QUERY_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_query((icalproperty*)impl,v); - - return (icalproperty*)impl; -} - -icalproperty* icalproperty_vanew_query(char* v, ...) -{ - va_list args; - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_QUERY_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_query((icalproperty*)impl,v); - - va_start(args,v); - icalproperty_add_parameters(impl, args); - va_end(args); - - return (icalproperty*)impl; -} - -void icalproperty_set_query(icalproperty* prop, char* v) -{ - icalvalue *value; - - icalerror_check_arg_rv( (v!=0),"v"); - - icalerror_check_arg_rv( (prop!=0),"prop"); - - value = icalvalue_new_query(v); - - icalproperty_set_value(prop,value); - -} - -char* icalproperty_get_query(icalproperty* prop) -{ - icalvalue *value; - icalerror_check_arg( (prop!=0),"prop"); - - value = icalproperty_get_value(prop); - - return icalvalue_get_query(value); -} - -/* PERCENT-COMPLETE */ - -icalproperty* icalproperty_new_percentcomplete(int v) -{ - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_PERCENTCOMPLETE_PROPERTY); - - - icalproperty_set_percentcomplete((icalproperty*)impl,v); - - return (icalproperty*)impl; -} - -icalproperty* icalproperty_vanew_percentcomplete(int v, ...) -{ - va_list args; - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_PERCENTCOMPLETE_PROPERTY); - - - icalproperty_set_percentcomplete((icalproperty*)impl,v); - - va_start(args,v); - icalproperty_add_parameters(impl, args); - va_end(args); - - return (icalproperty*)impl; -} - -void icalproperty_set_percentcomplete(icalproperty* prop, int v) -{ - icalvalue *value; - - - icalerror_check_arg_rv( (prop!=0),"prop"); - - value = icalvalue_new_integer(v); - - icalproperty_set_value(prop,value); - -} - -int icalproperty_get_percentcomplete(icalproperty* prop) -{ - icalvalue *value; - icalerror_check_arg( (prop!=0),"prop"); - - value = icalproperty_get_value(prop); - - return icalvalue_get_integer(value); -} - -/* CALSCALE */ - -icalproperty* icalproperty_new_calscale(char* v) -{ - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_CALSCALE_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_calscale((icalproperty*)impl,v); - - return (icalproperty*)impl; -} - -icalproperty* icalproperty_vanew_calscale(char* v, ...) -{ - va_list args; - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_CALSCALE_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_calscale((icalproperty*)impl,v); - - va_start(args,v); - icalproperty_add_parameters(impl, args); - va_end(args); - - return (icalproperty*)impl; -} - -void icalproperty_set_calscale(icalproperty* prop, char* v) -{ - icalvalue *value; - - icalerror_check_arg_rv( (v!=0),"v"); - - icalerror_check_arg_rv( (prop!=0),"prop"); - - value = icalvalue_new_text(v); - - icalproperty_set_value(prop,value); - -} - -char* icalproperty_get_calscale(icalproperty* prop) -{ - icalvalue *value; - icalerror_check_arg( (prop!=0),"prop"); - - value = icalproperty_get_value(prop); - - return icalvalue_get_text(value); -} - -/* CREATED */ - -icalproperty* icalproperty_new_created(struct icaltimetype v) -{ - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_CREATED_PROPERTY); - - - icalproperty_set_created((icalproperty*)impl,v); - - return (icalproperty*)impl; -} - -icalproperty* icalproperty_vanew_created(struct icaltimetype v, ...) -{ - va_list args; - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_CREATED_PROPERTY); - - - icalproperty_set_created((icalproperty*)impl,v); - - va_start(args,v); - icalproperty_add_parameters(impl, args); - va_end(args); - - return (icalproperty*)impl; -} - -void icalproperty_set_created(icalproperty* prop, struct icaltimetype v) -{ - icalvalue *value; - - - icalerror_check_arg_rv( (prop!=0),"prop"); - - value = icalvalue_new_datetime(v); - - icalproperty_set_value(prop,value); - -} - -struct icaltimetype icalproperty_get_created(icalproperty* prop) -{ - icalvalue *value; - icalerror_check_arg( (prop!=0),"prop"); - - value = icalproperty_get_value(prop); - - return icalvalue_get_datetime(value); -} - -/* GEO */ - -icalproperty* icalproperty_new_geo(struct icalgeotype v) -{ - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_GEO_PROPERTY); - - - icalproperty_set_geo((icalproperty*)impl,v); - - return (icalproperty*)impl; -} - -icalproperty* icalproperty_vanew_geo(struct icalgeotype v, ...) -{ - va_list args; - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_GEO_PROPERTY); - - - icalproperty_set_geo((icalproperty*)impl,v); - - va_start(args,v); - icalproperty_add_parameters(impl, args); - va_end(args); - - return (icalproperty*)impl; -} - -void icalproperty_set_geo(icalproperty* prop, struct icalgeotype v) -{ - icalvalue *value; - - - icalerror_check_arg_rv( (prop!=0),"prop"); - - value = icalvalue_new_geo(v); - - icalproperty_set_value(prop,value); - -} - -struct icalgeotype icalproperty_get_geo(icalproperty* prop) -{ - icalvalue *value; - icalerror_check_arg( (prop!=0),"prop"); - - value = icalproperty_get_value(prop); - - return icalvalue_get_geo(value); -} - -/* X-LIC-MIMECHARSET */ - -icalproperty* icalproperty_new_xlicmimecharset(char* v) -{ - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_XLICMIMECHARSET_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_xlicmimecharset((icalproperty*)impl,v); - - return (icalproperty*)impl; -} - -icalproperty* icalproperty_vanew_xlicmimecharset(char* v, ...) -{ - va_list args; - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_XLICMIMECHARSET_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_xlicmimecharset((icalproperty*)impl,v); - - va_start(args,v); - icalproperty_add_parameters(impl, args); - va_end(args); - - return (icalproperty*)impl; -} - -void icalproperty_set_xlicmimecharset(icalproperty* prop, char* v) -{ - icalvalue *value; - - icalerror_check_arg_rv( (v!=0),"v"); - - icalerror_check_arg_rv( (prop!=0),"prop"); - - value = icalvalue_new_string(v); - - icalproperty_set_value(prop,value); - -} - -char* icalproperty_get_xlicmimecharset(icalproperty* prop) -{ - icalvalue *value; - icalerror_check_arg( (prop!=0),"prop"); - - value = icalproperty_get_value(prop); - - return icalvalue_get_string(value); -} - -/* COMPLETED */ - -icalproperty* icalproperty_new_completed(struct icaltimetype v) -{ - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_COMPLETED_PROPERTY); - - - icalproperty_set_completed((icalproperty*)impl,v); - - return (icalproperty*)impl; -} - -icalproperty* icalproperty_vanew_completed(struct icaltimetype v, ...) -{ - va_list args; - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_COMPLETED_PROPERTY); - - - icalproperty_set_completed((icalproperty*)impl,v); - - va_start(args,v); - icalproperty_add_parameters(impl, args); - va_end(args); - - return (icalproperty*)impl; -} - -void icalproperty_set_completed(icalproperty* prop, struct icaltimetype v) -{ - icalvalue *value; - - - icalerror_check_arg_rv( (prop!=0),"prop"); - - value = icalvalue_new_datetime(v); - - icalproperty_set_value(prop,value); - -} - -struct icaltimetype icalproperty_get_completed(icalproperty* prop) -{ - icalvalue *value; - icalerror_check_arg( (prop!=0),"prop"); - - value = icalproperty_get_value(prop); - - return icalvalue_get_datetime(value); -} - -/* DTSTAMP */ - -icalproperty* icalproperty_new_dtstamp(struct icaltimetype v) -{ - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_DTSTAMP_PROPERTY); - - - icalproperty_set_dtstamp((icalproperty*)impl,v); - - return (icalproperty*)impl; -} - -icalproperty* icalproperty_vanew_dtstamp(struct icaltimetype v, ...) -{ - va_list args; - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_DTSTAMP_PROPERTY); - - - icalproperty_set_dtstamp((icalproperty*)impl,v); - - va_start(args,v); - icalproperty_add_parameters(impl, args); - va_end(args); - - return (icalproperty*)impl; -} - -void icalproperty_set_dtstamp(icalproperty* prop, struct icaltimetype v) -{ - icalvalue *value; - - - icalerror_check_arg_rv( (prop!=0),"prop"); - - value = icalvalue_new_datetime(v); - - icalproperty_set_value(prop,value); - -} - -struct icaltimetype icalproperty_get_dtstamp(icalproperty* prop) -{ - icalvalue *value; - icalerror_check_arg( (prop!=0),"prop"); - - value = icalproperty_get_value(prop); - - return icalvalue_get_datetime(value); -} - -/* DUE */ - -icalproperty* icalproperty_new_due(struct icaltimetype v) -{ - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_DUE_PROPERTY); - - - icalproperty_set_due((icalproperty*)impl,v); - - return (icalproperty*)impl; -} - -icalproperty* icalproperty_vanew_due(struct icaltimetype v, ...) -{ - va_list args; - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_DUE_PROPERTY); - - - icalproperty_set_due((icalproperty*)impl,v); - - va_start(args,v); - icalproperty_add_parameters(impl, args); - va_end(args); - - return (icalproperty*)impl; -} - -void icalproperty_set_due(icalproperty* prop, struct icaltimetype v) -{ - icalvalue *value; - - - icalerror_check_arg_rv( (prop!=0),"prop"); - - value = icalvalue_new_datetimedate(v); - - icalproperty_set_value(prop,value); - -} - -struct icaltimetype icalproperty_get_due(icalproperty* prop) -{ - icalvalue *value; - icalerror_check_arg( (prop!=0),"prop"); - - value = icalproperty_get_value(prop); - - return icalvalue_get_datetimedate(value); -} - -/* ACTION */ - -icalproperty* icalproperty_new_action(char* v) -{ - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_ACTION_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_action((icalproperty*)impl,v); - - return (icalproperty*)impl; -} - -icalproperty* icalproperty_vanew_action(char* v, ...) -{ - va_list args; - struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_ACTION_PROPERTY); - icalerror_check_arg_rz( (v!=0),"v"); - - - icalproperty_set_action((icalproperty*)impl,v); - - va_start(args,v); - icalproperty_add_parameters(impl, args); - va_end(args); - - return (icalproperty*)impl; -} - -void icalproperty_set_action(icalproperty* prop, char* v) -{ - icalvalue *value; - - icalerror_check_arg_rv( (v!=0),"v"); - - icalerror_check_arg_rv( (prop!=0),"prop"); - - value = icalvalue_new_text(v); - - icalproperty_set_value(prop,value); - -} - -char* icalproperty_get_action(icalproperty* prop) -{ - icalvalue *value; - icalerror_check_arg( (prop!=0),"prop"); - - value = icalproperty_get_value(prop); - - return icalvalue_get_text(value); -} diff --git a/libical/src/libical/icalproperty.h b/libical/src/libical/icalproperty.h deleted file mode 100644 index 278c4d533f..0000000000 --- a/libical/src/libical/icalproperty.h +++ /dev/null @@ -1,396 +0,0 @@ -/* -*- Mode: C -*- - ====================================================================== - FILE: icalderivedproperties.{c,h} - CREATOR: eric 09 May 1999 - - $Id$ - - (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org - ======================================================================*/ - - -#ifndef ICALPROPERTY_H -#define ICALPROPERTY_H - -#include - -typedef void icalproperty; - -icalproperty* icalproperty_new(icalproperty_kind kind); - -icalproperty* icalproperty_new_clone(icalproperty * prop); - -icalproperty* icalproperty_new_from_string(char* str); - -char* icalproperty_as_ical_string(icalproperty* prop); - -void icalproperty_free(icalproperty* prop); - -icalproperty_kind icalproperty_isa(icalproperty* property); -int icalproperty_isa_property(void* property); - -void icalproperty_add_parameter(icalproperty* prop,icalparameter* parameter); - -void icalproperty_remove_parameter(icalproperty* prop, - icalparameter_kind kind); - -int icalproperty_count_parameters(icalproperty* prop); - -/* Iterate through the parameters */ -icalparameter* icalproperty_get_first_parameter(icalproperty* prop, - icalparameter_kind kind); -icalparameter* icalproperty_get_next_parameter(icalproperty* prop, - icalparameter_kind kind); -/* Access the value of the property */ -void icalproperty_set_value(icalproperty* prop, icalvalue* value); -icalvalue* icalproperty_get_value(icalproperty* prop); - -/* Deal with X properties */ - -void icalproperty_set_x_name(icalproperty* prop, char* name); -char* icalproperty_get_x_name(icalproperty* prop); - -/* Everything below this line is machine generated. Do not edit. */ - -/* METHOD */ -icalproperty* icalproperty_new_method(icalproperty_method v); -icalproperty* icalproperty_vanew_method(icalproperty_method v, ...); -void icalproperty_set_method(icalproperty* prop, icalproperty_method v); -icalproperty_method icalproperty_get_method(icalproperty* prop); - -/* X-LIC-MIMECID */ -icalproperty* icalproperty_new_xlicmimecid(char* v); -icalproperty* icalproperty_vanew_xlicmimecid(char* v, ...); -void icalproperty_set_xlicmimecid(icalproperty* prop, char* v); -char* icalproperty_get_xlicmimecid(icalproperty* prop); - -/* LAST-MODIFIED */ -icalproperty* icalproperty_new_lastmodified(struct icaltimetype v); -icalproperty* icalproperty_vanew_lastmodified(struct icaltimetype v, ...); -void icalproperty_set_lastmodified(icalproperty* prop, struct icaltimetype v); -struct icaltimetype icalproperty_get_lastmodified(icalproperty* prop); - -/* UID */ -icalproperty* icalproperty_new_uid(char* v); -icalproperty* icalproperty_vanew_uid(char* v, ...); -void icalproperty_set_uid(icalproperty* prop, char* v); -char* icalproperty_get_uid(icalproperty* prop); - -/* PRODID */ -icalproperty* icalproperty_new_prodid(char* v); -icalproperty* icalproperty_vanew_prodid(char* v, ...); -void icalproperty_set_prodid(icalproperty* prop, char* v); -char* icalproperty_get_prodid(icalproperty* prop); - -/* STATUS */ -icalproperty* icalproperty_new_status(char* v); -icalproperty* icalproperty_vanew_status(char* v, ...); -void icalproperty_set_status(icalproperty* prop, char* v); -char* icalproperty_get_status(icalproperty* prop); - -/* DESCRIPTION */ -icalproperty* icalproperty_new_description(char* v); -icalproperty* icalproperty_vanew_description(char* v, ...); -void icalproperty_set_description(icalproperty* prop, char* v); -char* icalproperty_get_description(icalproperty* prop); - -/* DURATION */ -icalproperty* icalproperty_new_duration(struct icaldurationtype v); -icalproperty* icalproperty_vanew_duration(struct icaldurationtype v, ...); -void icalproperty_set_duration(icalproperty* prop, struct icaldurationtype v); -struct icaldurationtype icalproperty_get_duration(icalproperty* prop); - -/* CATEGORIES */ -icalproperty* icalproperty_new_categories(char* v); -icalproperty* icalproperty_vanew_categories(char* v, ...); -void icalproperty_set_categories(icalproperty* prop, char* v); -char* icalproperty_get_categories(icalproperty* prop); - -/* VERSION */ -icalproperty* icalproperty_new_version(char* v); -icalproperty* icalproperty_vanew_version(char* v, ...); -void icalproperty_set_version(icalproperty* prop, char* v); -char* icalproperty_get_version(icalproperty* prop); - -/* TZOFFSETFROM */ -icalproperty* icalproperty_new_tzoffsetfrom(int v); -icalproperty* icalproperty_vanew_tzoffsetfrom(int v, ...); -void icalproperty_set_tzoffsetfrom(icalproperty* prop, int v); -int icalproperty_get_tzoffsetfrom(icalproperty* prop); - -/* RRULE */ -icalproperty* icalproperty_new_rrule(struct icalrecurrencetype v); -icalproperty* icalproperty_vanew_rrule(struct icalrecurrencetype v, ...); -void icalproperty_set_rrule(icalproperty* prop, struct icalrecurrencetype v); -struct icalrecurrencetype icalproperty_get_rrule(icalproperty* prop); - -/* ATTENDEE */ -icalproperty* icalproperty_new_attendee(char* v); -icalproperty* icalproperty_vanew_attendee(char* v, ...); -void icalproperty_set_attendee(icalproperty* prop, char* v); -char* icalproperty_get_attendee(icalproperty* prop); - -/* CONTACT */ -icalproperty* icalproperty_new_contact(char* v); -icalproperty* icalproperty_vanew_contact(char* v, ...); -void icalproperty_set_contact(icalproperty* prop, char* v); -char* icalproperty_get_contact(icalproperty* prop); - -/* X-LIC-MIMECONTENTTYPE */ -icalproperty* icalproperty_new_xlicmimecontenttype(char* v); -icalproperty* icalproperty_vanew_xlicmimecontenttype(char* v, ...); -void icalproperty_set_xlicmimecontenttype(icalproperty* prop, char* v); -char* icalproperty_get_xlicmimecontenttype(icalproperty* prop); - -/* X-LIC-MIMEOPTINFO */ -icalproperty* icalproperty_new_xlicmimeoptinfo(char* v); -icalproperty* icalproperty_vanew_xlicmimeoptinfo(char* v, ...); -void icalproperty_set_xlicmimeoptinfo(icalproperty* prop, char* v); -char* icalproperty_get_xlicmimeoptinfo(icalproperty* prop); - -/* RELATED-TO */ -icalproperty* icalproperty_new_relatedto(char* v); -icalproperty* icalproperty_vanew_relatedto(char* v, ...); -void icalproperty_set_relatedto(icalproperty* prop, char* v); -char* icalproperty_get_relatedto(icalproperty* prop); - -/* ORGANIZER */ -icalproperty* icalproperty_new_organizer(char* v); -icalproperty* icalproperty_vanew_organizer(char* v, ...); -void icalproperty_set_organizer(icalproperty* prop, char* v); -char* icalproperty_get_organizer(icalproperty* prop); - -/* COMMENT */ -icalproperty* icalproperty_new_comment(char* v); -icalproperty* icalproperty_vanew_comment(char* v, ...); -void icalproperty_set_comment(icalproperty* prop, char* v); -char* icalproperty_get_comment(icalproperty* prop); - -/* X-LIC-ERROR */ -icalproperty* icalproperty_new_xlicerror(char* v); -icalproperty* icalproperty_vanew_xlicerror(char* v, ...); -void icalproperty_set_xlicerror(icalproperty* prop, char* v); -char* icalproperty_get_xlicerror(icalproperty* prop); - -/* TRIGGER */ -icalproperty* icalproperty_new_trigger(union icaltriggertype v); -icalproperty* icalproperty_vanew_trigger(union icaltriggertype v, ...); -void icalproperty_set_trigger(icalproperty* prop, union icaltriggertype v); -union icaltriggertype icalproperty_get_trigger(icalproperty* prop); - -/* CLASS */ -icalproperty* icalproperty_new_class(char* v); -icalproperty* icalproperty_vanew_class(char* v, ...); -void icalproperty_set_class(icalproperty* prop, char* v); -char* icalproperty_get_class(icalproperty* prop); - -/* X */ -icalproperty* icalproperty_new_x(char* v); -icalproperty* icalproperty_vanew_x(char* v, ...); -void icalproperty_set_x(icalproperty* prop, char* v); -char* icalproperty_get_x(icalproperty* prop); - -/* TZOFFSETTO */ -icalproperty* icalproperty_new_tzoffsetto(int v); -icalproperty* icalproperty_vanew_tzoffsetto(int v, ...); -void icalproperty_set_tzoffsetto(icalproperty* prop, int v); -int icalproperty_get_tzoffsetto(icalproperty* prop); - -/* TRANSP */ -icalproperty* icalproperty_new_transp(char* v); -icalproperty* icalproperty_vanew_transp(char* v, ...); -void icalproperty_set_transp(icalproperty* prop, char* v); -char* icalproperty_get_transp(icalproperty* prop); - -/* X-LIC-MIMEENCODING */ -icalproperty* icalproperty_new_xlicmimeencoding(char* v); -icalproperty* icalproperty_vanew_xlicmimeencoding(char* v, ...); -void icalproperty_set_xlicmimeencoding(icalproperty* prop, char* v); -char* icalproperty_get_xlicmimeencoding(icalproperty* prop); - -/* SEQUENCE */ -icalproperty* icalproperty_new_sequence(int v); -icalproperty* icalproperty_vanew_sequence(int v, ...); -void icalproperty_set_sequence(icalproperty* prop, int v); -int icalproperty_get_sequence(icalproperty* prop); - -/* LOCATION */ -icalproperty* icalproperty_new_location(char* v); -icalproperty* icalproperty_vanew_location(char* v, ...); -void icalproperty_set_location(icalproperty* prop, char* v); -char* icalproperty_get_location(icalproperty* prop); - -/* REQUEST-STATUS */ -icalproperty* icalproperty_new_requeststatus(char* v); -icalproperty* icalproperty_vanew_requeststatus(char* v, ...); -void icalproperty_set_requeststatus(icalproperty* prop, char* v); -char* icalproperty_get_requeststatus(icalproperty* prop); - -/* EXDATE */ -icalproperty* icalproperty_new_exdate(struct icaltimetype v); -icalproperty* icalproperty_vanew_exdate(struct icaltimetype v, ...); -void icalproperty_set_exdate(icalproperty* prop, struct icaltimetype v); -struct icaltimetype icalproperty_get_exdate(icalproperty* prop); - -/* TZID */ -icalproperty* icalproperty_new_tzid(char* v); -icalproperty* icalproperty_vanew_tzid(char* v, ...); -void icalproperty_set_tzid(icalproperty* prop, char* v); -char* icalproperty_get_tzid(icalproperty* prop); - -/* RESOURCES */ -icalproperty* icalproperty_new_resources(char* v); -icalproperty* icalproperty_vanew_resources(char* v, ...); -void icalproperty_set_resources(icalproperty* prop, char* v); -char* icalproperty_get_resources(icalproperty* prop); - -/* TZURL */ -icalproperty* icalproperty_new_tzurl(char* v); -icalproperty* icalproperty_vanew_tzurl(char* v, ...); -void icalproperty_set_tzurl(icalproperty* prop, char* v); -char* icalproperty_get_tzurl(icalproperty* prop); - -/* REPEAT */ -icalproperty* icalproperty_new_repeat(int v); -icalproperty* icalproperty_vanew_repeat(int v, ...); -void icalproperty_set_repeat(icalproperty* prop, int v); -int icalproperty_get_repeat(icalproperty* prop); - -/* PRIORITY */ -icalproperty* icalproperty_new_priority(int v); -icalproperty* icalproperty_vanew_priority(int v, ...); -void icalproperty_set_priority(icalproperty* prop, int v); -int icalproperty_get_priority(icalproperty* prop); - -/* FREEBUSY */ -icalproperty* icalproperty_new_freebusy(struct icalperiodtype v); -icalproperty* icalproperty_vanew_freebusy(struct icalperiodtype v, ...); -void icalproperty_set_freebusy(icalproperty* prop, struct icalperiodtype v); -struct icalperiodtype icalproperty_get_freebusy(icalproperty* prop); - -/* DTSTART */ -icalproperty* icalproperty_new_dtstart(struct icaltimetype v); -icalproperty* icalproperty_vanew_dtstart(struct icaltimetype v, ...); -void icalproperty_set_dtstart(icalproperty* prop, struct icaltimetype v); -struct icaltimetype icalproperty_get_dtstart(icalproperty* prop); - -/* RECURRENCE-ID */ -icalproperty* icalproperty_new_recurrenceid(struct icaltimetype v); -icalproperty* icalproperty_vanew_recurrenceid(struct icaltimetype v, ...); -void icalproperty_set_recurrenceid(icalproperty* prop, struct icaltimetype v); -struct icaltimetype icalproperty_get_recurrenceid(icalproperty* prop); - -/* SUMMARY */ -icalproperty* icalproperty_new_summary(char* v); -icalproperty* icalproperty_vanew_summary(char* v, ...); -void icalproperty_set_summary(icalproperty* prop, char* v); -char* icalproperty_get_summary(icalproperty* prop); - -/* DTEND */ -icalproperty* icalproperty_new_dtend(struct icaltimetype v); -icalproperty* icalproperty_vanew_dtend(struct icaltimetype v, ...); -void icalproperty_set_dtend(icalproperty* prop, struct icaltimetype v); -struct icaltimetype icalproperty_get_dtend(icalproperty* prop); - -/* TZNAME */ -icalproperty* icalproperty_new_tzname(char* v); -icalproperty* icalproperty_vanew_tzname(char* v, ...); -void icalproperty_set_tzname(icalproperty* prop, char* v); -char* icalproperty_get_tzname(icalproperty* prop); - -/* RDATE */ -icalproperty* icalproperty_new_rdate(struct icalperiodtype v); -icalproperty* icalproperty_vanew_rdate(struct icalperiodtype v, ...); -void icalproperty_set_rdate(icalproperty* prop, struct icalperiodtype v); -struct icalperiodtype icalproperty_get_rdate(icalproperty* prop); - -/* X-LIC-MIMEFILENAME */ -icalproperty* icalproperty_new_xlicmimefilename(char* v); -icalproperty* icalproperty_vanew_xlicmimefilename(char* v, ...); -void icalproperty_set_xlicmimefilename(icalproperty* prop, char* v); -char* icalproperty_get_xlicmimefilename(icalproperty* prop); - -/* URL */ -icalproperty* icalproperty_new_url(char* v); -icalproperty* icalproperty_vanew_url(char* v, ...); -void icalproperty_set_url(icalproperty* prop, char* v); -char* icalproperty_get_url(icalproperty* prop); - -/* X-LIC-CLUSTERCOUNT */ -icalproperty* icalproperty_new_xlicclustercount(int v); -icalproperty* icalproperty_vanew_xlicclustercount(int v, ...); -void icalproperty_set_xlicclustercount(icalproperty* prop, int v); -int icalproperty_get_xlicclustercount(icalproperty* prop); - -/* ATTACH */ -icalproperty* icalproperty_new_attach(struct icalattachtype v); -icalproperty* icalproperty_vanew_attach(struct icalattachtype v, ...); -void icalproperty_set_attach(icalproperty* prop, struct icalattachtype v); -struct icalattachtype icalproperty_get_attach(icalproperty* prop); - -/* EXRULE */ -icalproperty* icalproperty_new_exrule(struct icalrecurrencetype v); -icalproperty* icalproperty_vanew_exrule(struct icalrecurrencetype v, ...); -void icalproperty_set_exrule(icalproperty* prop, struct icalrecurrencetype v); -struct icalrecurrencetype icalproperty_get_exrule(icalproperty* prop); - -/* QUERY */ -icalproperty* icalproperty_new_query(char* v); -icalproperty* icalproperty_vanew_query(char* v, ...); -void icalproperty_set_query(icalproperty* prop, char* v); -char* icalproperty_get_query(icalproperty* prop); - -/* PERCENT-COMPLETE */ -icalproperty* icalproperty_new_percentcomplete(int v); -icalproperty* icalproperty_vanew_percentcomplete(int v, ...); -void icalproperty_set_percentcomplete(icalproperty* prop, int v); -int icalproperty_get_percentcomplete(icalproperty* prop); - -/* CALSCALE */ -icalproperty* icalproperty_new_calscale(char* v); -icalproperty* icalproperty_vanew_calscale(char* v, ...); -void icalproperty_set_calscale(icalproperty* prop, char* v); -char* icalproperty_get_calscale(icalproperty* prop); - -/* CREATED */ -icalproperty* icalproperty_new_created(struct icaltimetype v); -icalproperty* icalproperty_vanew_created(struct icaltimetype v, ...); -void icalproperty_set_created(icalproperty* prop, struct icaltimetype v); -struct icaltimetype icalproperty_get_created(icalproperty* prop); - -/* GEO */ -icalproperty* icalproperty_new_geo(struct icalgeotype v); -icalproperty* icalproperty_vanew_geo(struct icalgeotype v, ...); -void icalproperty_set_geo(icalproperty* prop, struct icalgeotype v); -struct icalgeotype icalproperty_get_geo(icalproperty* prop); - -/* X-LIC-MIMECHARSET */ -icalproperty* icalproperty_new_xlicmimecharset(char* v); -icalproperty* icalproperty_vanew_xlicmimecharset(char* v, ...); -void icalproperty_set_xlicmimecharset(icalproperty* prop, char* v); -char* icalproperty_get_xlicmimecharset(icalproperty* prop); - -/* COMPLETED */ -icalproperty* icalproperty_new_completed(struct icaltimetype v); -icalproperty* icalproperty_vanew_completed(struct icaltimetype v, ...); -void icalproperty_set_completed(icalproperty* prop, struct icaltimetype v); -struct icaltimetype icalproperty_get_completed(icalproperty* prop); - -/* DTSTAMP */ -icalproperty* icalproperty_new_dtstamp(struct icaltimetype v); -icalproperty* icalproperty_vanew_dtstamp(struct icaltimetype v, ...); -void icalproperty_set_dtstamp(icalproperty* prop, struct icaltimetype v); -struct icaltimetype icalproperty_get_dtstamp(icalproperty* prop); - -/* DUE */ -icalproperty* icalproperty_new_due(struct icaltimetype v); -icalproperty* icalproperty_vanew_due(struct icaltimetype v, ...); -void icalproperty_set_due(icalproperty* prop, struct icaltimetype v); -struct icaltimetype icalproperty_get_due(icalproperty* prop); - -/* ACTION */ -icalproperty* icalproperty_new_action(char* v); -icalproperty* icalproperty_vanew_action(char* v, ...); -void icalproperty_set_action(icalproperty* prop, char* v); -char* icalproperty_get_action(icalproperty* prop); -#endif ICALPROPERTY_H diff --git a/libical/src/libical/icalrecur.c b/libical/src/libical/icalrecur.c deleted file mode 100644 index a4b51e60d5..0000000000 --- a/libical/src/libical/icalrecur.c +++ /dev/null @@ -1,1174 +0,0 @@ -/* -*- Mode: C -*- - ====================================================================== - FILE: icalrecur.c - CREATOR: eric 16 May 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/ - - - How this code works: - - Processing starts when the caller generates a new recurrence - iterator via icalrecur_iterator_new(). This routine copies the - recurrence rule into the iterator, extracts things like start and - end dates. Then, it checks if the rule is legal, using some logic - from RFC2445 and some logic that probably should be in RFC2445. - - Then, icalrecur_iterator_new() re-writes some of the BY* - arrays. This involves ( via a call to setup_defaults() ) : - - 1) For BY rule parts with no data ( ie BYSECOND was not specified ) - copy the corresponding time part from DTSTART into the BY array. ( - So impl->by_ptrs[BY_SECOND] will then have one element if is - originally had none ) This only happens if the BY* rule part data - would expand the number of occurrences in the occurrence set. This - lets the code ignore DTSTART later on and still use it to get the - time parts that were not specified in any other way. - - 2) For the by rule part that are not the same interval as the - frequency -- for HOURLY anything but BYHOUR, for instance -- copy the - first data element from the rule part into the first occurrence. For - example, for "INTERVAL=MONTHLY and BYHOUR=10,30", initialize the - first time to be returned to have an hour of 10. - - Finally, for INTERVAL=YEARLY, the routine expands the rule to get - all of the days specified in the rule. The code will do this for - each new year, and this is the first expansion. This is a special - case for the yearly interval; no other frequency gets expanded this - way. The yearly interval is the most complex, so some special - processing is required. - - After creating a new iterator, the caller will make successive calls - to icalrecur_iterator_next() to get the next time specified by the - rule. The main part of this routine is a switch on the frequency of - the rule. Each different frequency is handled by a different - routine. - - For example, next_hour handles the case of INTERVAL=HOURLY, and it - is called by other routines to get the next hour. First, the routine - tries to get the next minute part of a time with a call to - next_minute(). If next_minute() returns 1, it has reached the end of - its data, usually the last element of the BYMINUTE array. Then, if - there is data in the BYHOUR array, the routine changes the hour to - the next one in the array. If INTERVAL=HOURLY, the routine advances - the hour by the interval. - - If the routine used the last hour in the BYHOUR array, and the - INTERVAL=HOURLY, then the routine calls increment_monthday() to set - the next month day. The increment_* routines may call higher routine - to increment the month or year also. - - The code for INTERVAL=DAILY is handled by next_day(). First, the - routine tries to get the next hour part of a time with a call to - next_hour. If next_hour() returns 1, it has reached the end of its - data, usually the last element of the BYHOUR array. This means that - next_day() should increment the time to the next day. If FREQUENCY==DAILY, - the routine increments the day by the interval; otherwise, it - increments the day by 1. - - Next_day() differs from next_hour because it does not use the BYDAY - array to select an appropriate day. Instead, it returns every day ( - incrementing by 1 if the frequency is not DAILY with INTERVAL!=1) - Any days that are not specified in an non-empty BYDAY array are - filtered out later. - - Generally, the flow of these routine is for a next_* call a next_* - routine of a lower interval ( next_day calls next_hour) and then to - possibly call an increment_* routine of an equal or higher - interval. ( next_day calls increment_monthday() ) - - When the call to the original next_* routine returns, - icalrecur_iterator_next() will check the returned data against other - BYrule parts to determine if is should be excluded by calling - check_contracting_rules. Generally, a contracting rule is any with a - larger time span than the interval. For instance, if - INTERVAL=DAILY, BYMONTH is a contracting rule part. - - Check_contracting_rules() uses check_restriction() to do its - work. Check_restriction() uses expand_map[] to determine if a rule - is contracting, and if it is, and if the BY rule part has some data, - then the routine checks if the value of a component of the time is - part of the byrule part. For instance, for "INTERVAL=DAILY; - BYMONTH=6,10", check_restriction() would check that the time value - given to it has a month of either 6 or 10. - icalrecurrencetype_test() - - Finally, icalrecur_iterator_next() does a few other checks on the - time value, and if it passes, it returns the time. - - ======================================================================*/ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include "icalrecur.h" -#include "icalerror.h" -#include "icalmemory.h" -#include /* for malloc */ -#include /* for errno */ -#include /* for icalmemory_strdup */ -#include -#include /* for SHRT_MAX */ - -#define TEMP_MAX 1024 - - - -enum byrule { - NO_CONTRACTION = -1, - BY_SECOND = 0, - BY_MINUTE = 1, - BY_HOUR = 2, - BY_DAY = 3, - BY_MONTH_DAY = 4, - BY_YEAR_DAY = 5, - BY_WEEK_NO = 6, - BY_MONTH = 7, - BY_SET_POS -}; - - - -struct icalrecur_iterator_impl { - - struct icaltimetype dtstart; - struct icaltimetype last; /* last time return from _iterator_next*/ - int occurrence_no; /* number of step made on this iterator */ - struct icalrecurrencetype rule; - - short days[366]; - short days_index; - - enum byrule byrule; - short by_indices[9]; - - - short *by_ptrs[9]; /* Pointers into the by_* array elements of the rule */ -}; - -int icalrecur_iterator_sizeof_byarray(short* byarray) -{ - int array_itr; - - for(array_itr = 0; - byarray[array_itr] != ICAL_RECURRENCE_ARRAY_MAX; - array_itr++){ - } - - return array_itr; -} - -enum expand_table { - UNKNOWN = 0, - CONTRACT = 1, - EXPAND =2, - ILLEGAL=3 -}; - -struct expand_split_map_struct -{ - icalrecurrencetype_frequency frequency; - - /* Elements of the 'map' array correspond to the BYxxx rules: - Second,Minute,Hour,Day,Month Day,Year Day,Week No,Month*/ - - short map[8]; -}; - -struct expand_split_map_struct expand_map[] = -{ - {ICAL_SECONDLY_RECURRENCE,1,1,1,1,1,1,1,1}, - {ICAL_MINUTELY_RECURRENCE,2,1,1,1,1,1,1,1}, - {ICAL_HOURLY_RECURRENCE, 2,2,1,1,1,1,1,1}, - {ICAL_DAILY_RECURRENCE, 2,2,2,1,1,1,1,1}, - {ICAL_WEEKLY_RECURRENCE, 2,2,2,2,3,3,1,1}, - {ICAL_MONTHLY_RECURRENCE, 2,2,2,2,2,3,3,1}, - {ICAL_YEARLY_RECURRENCE, 2,2,2,2,2,2,2,2}, - {ICAL_NO_RECURRENCE, 0,0,0,0,0,0,0,0} - -}; - - - -/* Check that the rule has only the two given interday byrule parts. */ -int icalrecur_two_byrule(struct icalrecur_iterator_impl* impl, - enum byrule one,enum byrule two) -{ - short test_array[9]; - enum byrule itr; - int passes = 0; - - memset(test_array,0,9); - - test_array[one] = 1; - test_array[two] = 1; - - for(itr = BY_DAY; itr != BY_SET_POS; itr++){ - - if( (test_array[itr] == 0 && - impl->by_ptrs[itr][0] != ICAL_RECURRENCE_ARRAY_MAX - ) || - (test_array[itr] == 1 && - impl->by_ptrs[itr][0] == ICAL_RECURRENCE_ARRAY_MAX - ) - ) { - /* test failed */ - passes = 0; - } - } - - return passes; - -} - -/* Check that the rule has only the one given interdat byrule parts. */ -int icalrecur_one_byrule(struct icalrecur_iterator_impl* impl,enum byrule one) -{ - int passes = 1; - enum byrule itr; - - for(itr = BY_DAY; itr != BY_SET_POS; itr++){ - - if ((itr==one && impl->by_ptrs[itr][0] == ICAL_RECURRENCE_ARRAY_MAX) || - (itr!=one && impl->by_ptrs[itr][0] != ICAL_RECURRENCE_ARRAY_MAX)) { - passes = 0; - } - } - - return passes; -} - -int count_byrules(struct icalrecur_iterator_impl* impl) -{ - int count = 0; - enum byrule itr; - - for(itr = BY_DAY; itr <= BY_SET_POS; itr++){ - if(impl->by_ptrs[itr][0] != ICAL_RECURRENCE_ARRAY_MAX){ - count++; - } - } - - return count; -} - - -void setup_defaults(struct icalrecur_iterator_impl* impl, - enum byrule byrule, icalrecurrencetype_frequency req, - short deftime, int *timepart) -{ - - icalrecurrencetype_frequency freq; - freq = impl->rule.freq; - - /* Re-write the BY rule arrays with data from the DTSTART time so - we don't hav to explicitly deal with DTSTART */ - - if(impl->by_ptrs[byrule][0] == ICAL_RECURRENCE_ARRAY_MAX && - expand_map[freq].map[byrule] != CONTRACT){ - impl->by_ptrs[byrule][0] = deftime; - } - - /* Initialize the first occurence */ - if( freq != req && expand_map[freq].map[byrule] != CONTRACT){ - *timepart = impl->by_ptrs[byrule][0]; - } - - -} - -int expand_year_days(struct icalrecur_iterator_impl* impl,short year); - - -icalrecur_iterator* icalrecur_iterator_new(struct icalrecurrencetype rule, struct icaltimetype dtstart) -{ - struct icalrecur_iterator_impl* impl; - icalrecurrencetype_frequency freq; - - if ( ( impl = (struct icalrecur_iterator_impl *) - malloc(sizeof(struct icalrecur_iterator_impl))) == 0) { - icalerror_set_errno(ICAL_NEWFAILED_ERROR); - return 0; - } - - memset(impl,0,sizeof(struct icalrecur_iterator_impl)); - - impl->rule = rule; - impl->last = dtstart; - impl->dtstart = dtstart; - impl->days_index =0; - impl->occurrence_no = 0; - freq = impl->rule.freq; - - /* Set up convienience pointers to make the code simpler. Allows - us to iterate through all of the BY* arrays in the rule. */ - - impl->by_ptrs[BY_MONTH]=impl->rule.by_month; - impl->by_ptrs[BY_WEEK_NO]=impl->rule.by_week_no; - impl->by_ptrs[BY_YEAR_DAY]=impl->rule.by_year_day; - impl->by_ptrs[BY_MONTH_DAY]=impl->rule.by_month_day; - impl->by_ptrs[BY_DAY]=impl->rule.by_day; - impl->by_ptrs[BY_HOUR]=impl->rule.by_hour; - impl->by_ptrs[BY_MINUTE]=impl->rule.by_minute; - impl->by_ptrs[BY_SECOND]=impl->rule.by_second; - impl->by_ptrs[BY_SET_POS]=impl->rule.by_set_pos; - - - /* Check if the recurrence rule is legal */ - - /* If the BYYEARDAY appears, no other date rule part may appear. */ - - if(icalrecur_two_byrule(impl,BY_YEAR_DAY,BY_MONTH) || - icalrecur_two_byrule(impl,BY_YEAR_DAY,BY_WEEK_NO) || - icalrecur_two_byrule(impl,BY_YEAR_DAY,BY_MONTH_DAY) || - icalrecur_two_byrule(impl,BY_YEAR_DAY,BY_DAY) ){ - - icalerror_set_errno(ICAL_USAGE_ERROR); - - return 0; - } - - /* BYWEEKNO and BYMONTH rule parts may not both appear.*/ - - if(icalrecur_two_byrule(impl,BY_WEEK_NO,BY_MONTH)){ - icalerror_set_errno(ICAL_USAGE_ERROR); - - icalerror_set_errno(ICAL_USAGE_ERROR); - return 0; - } - - /* BYWEEKNO and BYMONTHDAY rule parts may not both appear.*/ - - if(icalrecur_two_byrule(impl,BY_WEEK_NO,BY_MONTH_DAY)){ - icalerror_set_errno(ICAL_USAGE_ERROR); - - icalerror_set_errno(ICAL_USAGE_ERROR); - return 0; - } - - - /*For MONTHLY recurrences (FREQ=MONTHLY) neither BYYEARDAY nor - BYWEEKNO may appear. */ - - if(freq == ICAL_MONTHLY_RECURRENCE && - ( icalrecur_one_byrule(impl,BY_WEEK_NO) || - icalrecur_one_byrule(impl,BY_YEAR_DAY)) ) { - - icalerror_set_errno(ICAL_USAGE_ERROR); - return 0; - } - - - /*For WEEKLY recurrences (FREQ=WEEKLY) neither BYMONTHDAY nor - BYYEARDAY may appear. */ - - if(freq == ICAL_WEEKLY_RECURRENCE && - ( icalrecur_one_byrule(impl,BY_MONTH_DAY) || - icalrecur_one_byrule(impl,BY_YEAR_DAY)) ) { - - icalerror_set_errno(ICAL_USAGE_ERROR); - return 0; - } - - - /* Rewrite some of the rules and set up defaults to make later - processing easier */ - - - setup_defaults(impl,BY_SECOND,ICAL_SECONDLY_RECURRENCE,impl->dtstart.second, - &(impl->last.second)); - - setup_defaults(impl,BY_MINUTE,ICAL_MINUTELY_RECURRENCE,impl->dtstart.minute, - &(impl->last.minute)); - - setup_defaults(impl,BY_HOUR,ICAL_HOURLY_RECURRENCE,impl->dtstart.hour, - &(impl->last.hour)); - - setup_defaults(impl,BY_MONTH_DAY,ICAL_DAILY_RECURRENCE,impl->dtstart.day, - &(impl->last.day)); - - setup_defaults(impl,BY_MONTH,ICAL_MONTHLY_RECURRENCE,impl->dtstart.month, - &(impl->last.month)); - - if(impl->rule.freq == ICAL_WEEKLY_RECURRENCE && - impl->by_ptrs[BY_DAY][0] == ICAL_RECURRENCE_ARRAY_MAX){ - impl->by_ptrs[BY_DAY][0] = icaltime_day_of_week(impl->dtstart); - } - - - if(impl->rule.freq == ICAL_YEARLY_RECURRENCE){ - expand_year_days(impl,impl->dtstart.year); - } - - return impl; -} - - -void icalrecur_iterator_free(icalrecur_iterator* i) -{ - - struct icalrecur_iterator_impl* impl = - (struct icalrecur_iterator_impl*)i; - - icalerror_check_arg_rv((impl!=0),"impl"); - - free(impl); - -} - - - - -void increment_year(struct icalrecur_iterator_impl* impl, int inc) -{ - impl->last.year+=inc; -} - - - - -void increment_month(struct icalrecur_iterator_impl* impl, int inc) -{ - impl->last.month+=inc; - - if (impl->last.month > 12){ - impl->last.month = 1; - increment_year(impl,1); - } -} - -void increment_monthday(struct icalrecur_iterator_impl* impl, int inc) -{ - - short days_in_month = icaltime_days_in_month(impl->last.month,impl->last.year); - - impl->last.day+=inc; - - if (impl->last.day > days_in_month){ - int md = impl->last.day -days_in_month; - impl->last.day = md; - increment_month(impl,1); - } - -} - - -void increment_hour(struct icalrecur_iterator_impl* impl, int inc) -{ - impl->last.hour+=inc; - - if (impl->last.hour > 24){ - impl->last.hour = 0; - increment_monthday(impl,1); - } - -} - -void increment_minute(struct icalrecur_iterator_impl* impl, int inc) -{ - impl->last.minute+=inc; - - if (impl->last.minute > 59){ - impl->last.minute = 0; - increment_hour(impl,1); - } - -} - -void increment_second(struct icalrecur_iterator_impl* impl, int inc) -{ - impl->last.second+=inc; - - if (impl->last.second > 59){ - impl->last.second = 0; - increment_minute(impl,1); - } - -} - - -short next_second(struct icalrecur_iterator_impl* impl) -{ - - short has_by_data = (impl->by_ptrs[BY_SECOND][0]!=ICAL_RECURRENCE_ARRAY_MAX); - short this_frequency = (impl->rule.freq == ICAL_SECONDLY_RECURRENCE); - - short end_of_data = 0; - - assert(has_by_data || this_frequency); - - if( has_by_data ){ - /* Ignore the frequency and use the byrule data */ - - impl->by_indices[BY_SECOND]++; - - if (impl->by_ptrs[BY_SECOND][impl->by_indices[BY_SECOND]] - ==ICAL_RECURRENCE_ARRAY_MAX){ - impl->by_indices[BY_SECOND] = 0; - - end_of_data = 1; - } - - - impl->last.second = - impl->by_ptrs[BY_SECOND][impl->by_indices[BY_SECOND]]; - - - } else if( !has_by_data && this_frequency ){ - /* Compute the next value from the last time and the frequency interval*/ - increment_second(impl, impl->rule.interval); - - } - - /* If we have gone through all of the seconds on the BY list, then we - need to move to the next minute */ - - if(has_by_data && end_of_data && this_frequency ){ - increment_minute(impl,1); - } - - return end_of_data; - -} - -int next_minute(struct icalrecur_iterator_impl* impl) -{ - - short has_by_data = (impl->by_ptrs[BY_MINUTE][0]!=ICAL_RECURRENCE_ARRAY_MAX); - short this_frequency = (impl->rule.freq == ICAL_MINUTELY_RECURRENCE); - - short end_of_data = 0; - - assert(has_by_data || this_frequency); - - - if (next_second(impl) == 0){ - return 0; - } - - if( has_by_data ){ - /* Ignore the frequency and use the byrule data */ - - impl->by_indices[BY_MINUTE]++; - - if (impl->by_ptrs[BY_MINUTE][impl->by_indices[BY_MINUTE]] - ==ICAL_RECURRENCE_ARRAY_MAX){ - - impl->by_indices[BY_MINUTE] = 0; - - end_of_data = 1; - } - - impl->last.minute = - impl->by_ptrs[BY_MINUTE][impl->by_indices[BY_MINUTE]]; - - } else if( !has_by_data && this_frequency ){ - /* Compute the next value from the last time and the frequency interval*/ - increment_minute(impl,impl->rule.interval); - } - -/* If we have gone through all of the minutes on the BY list, then we - need to move to the next hour */ - - if(has_by_data && end_of_data && this_frequency ){ - increment_hour(impl,1); - } - - return end_of_data; -} - -int next_hour(struct icalrecur_iterator_impl* impl) -{ - - short has_by_data = (impl->by_ptrs[BY_HOUR][0]!=ICAL_RECURRENCE_ARRAY_MAX); - short this_frequency = (impl->rule.freq == ICAL_HOURLY_RECURRENCE); - - short end_of_data = 0; - - assert(has_by_data || this_frequency); - - if (next_minute(impl) == 0){ - return 0; - } - - if( has_by_data ){ - /* Ignore the frequency and use the byrule data */ - - impl->by_indices[BY_HOUR]++; - - if (impl->by_ptrs[BY_HOUR][impl->by_indices[BY_HOUR]] - ==ICAL_RECURRENCE_ARRAY_MAX){ - impl->by_indices[BY_HOUR] = 0; - - end_of_data = 1; - } - - impl->last.hour = - impl->by_ptrs[BY_HOUR][impl->by_indices[BY_HOUR]]; - - } else if( !has_by_data && this_frequency ){ - /* Compute the next value from the last time and the frequency interval*/ - increment_hour(impl,impl->rule.interval); - - } - - /* If we have gone through all of the hours on the BY list, then we - need to move to the next day */ - - if(has_by_data && end_of_data && this_frequency ){ - increment_monthday(impl,1); - } - - return end_of_data; - -} - -int next_day(struct icalrecur_iterator_impl* impl) -{ - - short has_by_data = (impl->by_ptrs[BY_DAY][0]!=ICAL_RECURRENCE_ARRAY_MAX); - short this_frequency = (impl->rule.freq == ICAL_DAILY_RECURRENCE); - - assert(has_by_data || this_frequency); - - if (next_hour(impl) == 0){ - return 0; - } - - /* Always increment through the interval, since this routine is not - called by any other next_* routine, and the days that are - excluded will be taken care of by restriction filtering */ - - if(this_frequency){ - increment_monthday(impl,impl->rule.interval); - } else { - increment_monthday(impl,1); - } - - - return 0; - -} - -/* This routine is only called by next_month and next_year, so it does - not have a clause for this_frequency */ -int next_monthday(struct icalrecur_iterator_impl* impl) -{ - - short has_by_data = (impl->by_ptrs[BY_MONTH_DAY][0]!=ICAL_RECURRENCE_ARRAY_MAX); - short mday; - short end_of_data = 0; - - assert(has_by_data ); - - if (next_hour(impl) == 0){ - return 0; - } - - impl->by_indices[BY_MONTH_DAY]++; - - mday = impl->by_ptrs[BY_MONTH_DAY][impl->by_indices[BY_MONTH_DAY]]; - - if ( mday ==ICAL_RECURRENCE_ARRAY_MAX){ - impl->by_indices[BY_MONTH_DAY] = 0; - - end_of_data = 1; - } - - if (mday > 0){ - impl->last.day = mday; - } else { - short days_in_month = icaltime_days_in_month(impl->last.month, - impl->last.year); - impl->last.day = days_in_month-mday+1; - } - - if(has_by_data && end_of_data ){ - increment_month(impl,1); - } - - return end_of_data; - -} - -int next_yearday(struct icalrecur_iterator_impl* impl) -{ - - short has_by_data = (impl->by_ptrs[BY_YEAR_DAY][0]!=ICAL_RECURRENCE_ARRAY_MAX); - - short end_of_data = 0; - - assert(has_by_data ); - - if (next_hour(impl) == 0){ - return 0; - } - - impl->by_indices[BY_YEAR_DAY]++; - - if (impl->by_ptrs[BY_YEAR_DAY][impl->by_indices[BY_YEAR_DAY]] - ==ICAL_RECURRENCE_ARRAY_MAX){ - impl->by_indices[BY_YEAR_DAY] = 0; - - end_of_data = 1; - } - - impl->last.day = - impl->by_ptrs[BY_YEAR_DAY][impl->by_indices[BY_YEAR_DAY]]; - - if(has_by_data && end_of_data){ - increment_year(impl,1); - } - - return end_of_data; - -} - -/* This routine is only called by next_week or next_month, so it does -not have a clause for this_frequency. In both cases, it is certain -that BY_DAY has data */ - -int next_weekday(struct icalrecur_iterator_impl* impl) -{ - - short end_of_data = 0; - short start_of_week, dow; - struct icaltimetype next; - - if (next_hour(impl) == 0){ - return 0; - } - - assert( impl->by_ptrs[BY_DAY][0]!=ICAL_RECURRENCE_ARRAY_MAX); - - impl->by_indices[BY_DAY]++; - - if (impl->by_ptrs[BY_DAY][impl->by_indices[BY_DAY]] - ==ICAL_RECURRENCE_ARRAY_MAX){ - impl->by_indices[BY_DAY] = 0; - - end_of_data = 1; - } - - dow = impl->by_ptrs[BY_DAY][impl->by_indices[BY_DAY]]; - - start_of_week = icaltime_start_doy_of_week(impl->last); - next = icaltime_from_day_of_year(start_of_week + dow - 1,impl->last.year); - - impl->last.day = next.day; - impl->last.month = next.month; - - return end_of_data; - -} - -int next_month(struct icalrecur_iterator_impl* impl) -{ - - short has_by_data = (impl->by_ptrs[BY_MONTH][0]!=ICAL_RECURRENCE_ARRAY_MAX); - short this_frequency = (impl->rule.freq == ICAL_MONTHLY_RECURRENCE); - - short end_of_data = 0; - - assert(has_by_data || this_frequency); - - /* Week day data overrides monthday data */ - if(impl->by_ptrs[BY_DAY][0]!=ICAL_RECURRENCE_ARRAY_MAX){ - if (next_weekday(impl) == 0){ - return 0; - } - } else { - if (next_monthday(impl) == 0){ - return 0; - } - } - - if( has_by_data ){ - /* Ignore the frequency and use the byrule data */ - - impl->by_indices[BY_MONTH]++; - - if (impl->by_ptrs[BY_MONTH][impl->by_indices[BY_MONTH]] - ==ICAL_RECURRENCE_ARRAY_MAX){ - impl->by_indices[BY_MONTH] = 0; - - end_of_data = 1; - } - - impl->last.month = - impl->by_ptrs[BY_MONTH][impl->by_indices[BY_MONTH]]; - - } else if( !has_by_data && this_frequency ){ - /* Compute the next value from the last time and the frequency interval*/ - increment_month(impl,impl->rule.interval); - - } - - if(has_by_data && end_of_data && this_frequency ){ - increment_year(impl,1); - } - return end_of_data; - -} - - -int next_week(struct icalrecur_iterator_impl* impl) -{ - short has_by_data = (impl->by_ptrs[BY_WEEK_NO][0]!=ICAL_RECURRENCE_ARRAY_MAX); - short this_frequency = (impl->rule.freq == ICAL_WEEKLY_RECURRENCE); - short end_of_data = 0; - - int sec_in_week = 60*60*24*7; - - if (next_weekday(impl) == 0){ - return 0; - } - - if( impl->by_ptrs[BY_WEEK_NO][0]!=ICAL_RECURRENCE_ARRAY_MAX){ - /* Use the Week Number byrule data */ - int week_no; - time_t tt; - struct icaltimetype t; - - impl->by_indices[BY_WEEK_NO]++; - - if (impl->by_ptrs[BY_WEEK_NO][impl->by_indices[BY_WEEK_NO]] - ==ICAL_RECURRENCE_ARRAY_MAX){ - impl->by_indices[BY_WEEK_NO] = 0; - - end_of_data = 1; - } - - t = impl->last; - t.month=1; /* HACK, should be setting to the date of the first week of year*/ - t.day=1; - - week_no = impl->by_ptrs[BY_WEEK_NO][impl->by_indices[BY_WEEK_NO]]; - - tt = icaltime_as_timet(impl->last); - - tt+=sec_in_week*week_no; - - impl->last = icaltime_from_timet(tt,impl->last.is_date,impl->last.is_utc); - - } else if( !has_by_data && this_frequency ){ - increment_monthday(impl,7*impl->rule.interval); - } - - if(has_by_data && end_of_data && this_frequency ){ - increment_year(impl,1); - } - - return end_of_data; - -} - -int has_by_data(struct icalrecur_iterator_impl* impl, enum byrule byrule){ - - return (impl->by_ptrs[byrule][0] != ICAL_RECURRENCE_ARRAY_MAX); -} - - -/* For INTERVAL=YEARLY, set up the days[] array in the iterator to - list all of the days of the current year that are specified in this - rule. */ - -int expand_year_days(struct icalrecur_iterator_impl* impl,short year) -{ - int j,k; - int days_index=0; - struct icaltimetype t; - - - memset(&t,0,sizeof(t)); - memset(impl->days,ICAL_RECURRENCE_ARRAY_MAX_BYTE,sizeof(impl->days)); - - if(has_by_data(impl,BY_MONTH) && !has_by_data(impl,BY_MONTH_DAY)){ - - for(j=0;impl->by_ptrs[BY_MONTH][j]!=ICAL_RECURRENCE_ARRAY_MAX;j++){ - struct icaltimetype t; - short month = impl->by_ptrs[BY_MONTH][j]; - short doy; - - t = impl->dtstart; - t.year = year; - t.month = month; - - doy = icaltime_day_of_year(t); - - impl->days[days_index++] = doy; - - } - - - } - else if ( has_by_data(impl,BY_MONTH) && has_by_data(impl,BY_DAY)){ - - for(j=0;impl->by_ptrs[BY_MONTH][j]!=ICAL_RECURRENCE_ARRAY_MAX;j++){ - short month = impl->by_ptrs[BY_MONTH][j]; - short days_in_month = icaltime_days_in_month(month,year); - - struct icaltimetype t; - memset(&t,0,sizeof(struct icaltimetype)); - t.day = 1; - t.year = year; - t.month = month; - - for(t.day = 1; t.day <=days_in_month; t.day++){ - - short current_dow = icaltime_day_of_week(t); - - for(k=0;impl->by_ptrs[BY_DAY][k]!=ICAL_RECURRENCE_ARRAY_MAX;k++){ - - enum icalrecurrencetype_weekday dow = - icalrecurrencetype_day_day_of_week(impl->by_ptrs[BY_DAY][k]); - - if(current_dow == dow){ - short doy = icaltime_day_of_year(t); - /* HACK, incomplete Nth day of week handling */ - impl->days[days_index++] = doy; - - } - } - } - } - } else if (has_by_data(impl,BY_MONTH) && has_by_data(impl,BY_MONTH_DAY)){ - - for(j=0;impl->by_ptrs[BY_MONTH][j]!=ICAL_RECURRENCE_ARRAY_MAX;j++){ - for(k=0;impl->by_ptrs[BY_MONTH_DAY][k]!=ICAL_RECURRENCE_ARRAY_MAX;k++) - { - short month = impl->by_ptrs[BY_MONTH][j]; - short month_day = impl->by_ptrs[BY_MONTH_DAY][k]; - short doy; - - t.day = month_day; - t.month = month; - t.year = year; - - doy = icaltime_day_of_year(t); - - impl->days[days_index++] = doy; - - } - } - } else if (has_by_data(impl,BY_WEEK_NO) && !has_by_data(impl,BY_DAY)){ - - struct icaltimetype t; - short dow; - - t.day = impl->dtstart.day; - t.month = impl->dtstart.month; - t.year = year; - - dow = icaltime_day_of_week(t); - - } else if (has_by_data(impl,BY_WEEK_NO) && has_by_data(impl,BY_DAY)){ - - } else if (has_by_data(impl,BY_YEAR_DAY)){ - - } else if (has_by_data(impl,BY_MONTH_DAY) ){ - - } else if (has_by_data(impl,BY_DAY)){ - - } else { - - } - - return 0; -} - - -int next_year(struct icalrecur_iterator_impl* impl) -{ - struct icaltimetype next; - short end_of_data=0; - - if (next_hour(impl) == 0){ - return 0; - } - - impl->days_index++; - - if (impl->days[impl->days_index] == ICAL_RECURRENCE_ARRAY_MAX){ - impl->days_index = 0; - end_of_data = 1; - } - - next = icaltime_from_day_of_year(impl->days[impl->days_index],impl->last.year); - - impl->last.day = next.day; - impl->last.month = next.month; - - - if(end_of_data){ - increment_year(impl,impl->rule.interval); - expand_year_days(impl,impl->last.year); - } - - return 1; -} - -int check_restriction(struct icalrecur_iterator_impl* impl, - enum byrule byrule, short v) -{ - int pass = 0; - int itr; - icalrecurrencetype_frequency freq = impl->rule.freq; - - if(impl->by_ptrs[byrule][0]!=ICAL_RECURRENCE_ARRAY_MAX && - expand_map[freq].map[byrule] == CONTRACT){ - for(itr=0; impl->by_ptrs[byrule][itr]!=ICAL_RECURRENCE_ARRAY_MAX;itr++){ - if(impl->by_ptrs[byrule][itr] == v){ - pass=1; - break; - } - } - - return pass; - } else { - /* This is not a contracting byrule, or it has no data, so the - test passes*/ - return 1; - } -} - -int check_contracting_rules(struct icalrecur_iterator_impl* impl) -{ - enum byrule; - - int day_of_week=0; - int week_no=0; - int year_day=0; - - if ( - check_restriction(impl,BY_SECOND,impl->last.second) && - check_restriction(impl,BY_MINUTE,impl->last.minute) && - check_restriction(impl,BY_HOUR,impl->last.hour) && - check_restriction(impl,BY_DAY,day_of_week) && - check_restriction(impl,BY_WEEK_NO,week_no) && - check_restriction(impl,BY_MONTH_DAY,impl->last.day) && - check_restriction(impl,BY_MONTH,impl->last.month) && - check_restriction(impl,BY_YEAR_DAY,year_day) ) - { - - return 1; - } else { - return 0; - } -} - -struct icaltimetype icalrecur_iterator_next(icalrecur_iterator *itr) -{ - struct icalrecur_iterator_impl* impl = - (struct icalrecur_iterator_impl*)itr; - - if( (impl->rule.count!=0 &&impl->occurrence_no >= impl->rule.count) || - (!icaltime_is_null_time(impl->rule.until) && - icaltime_compare(impl->last,impl->rule.until) > 0)) { - return icaltime_null_time(); - } - - if(impl->occurrence_no == 0){ - impl->occurrence_no++; - return impl->last; - } - - - do { - switch(impl->rule.freq){ - - case ICAL_SECONDLY_RECURRENCE: { - next_second(impl); - break; - } - case ICAL_MINUTELY_RECURRENCE: { - next_minute(impl); - break; - } - case ICAL_HOURLY_RECURRENCE: { - next_hour(impl); - break; - } - case ICAL_DAILY_RECURRENCE: { - next_day(impl); - break; - } - case ICAL_WEEKLY_RECURRENCE: { - next_week(impl); - break; - } - case ICAL_MONTHLY_RECURRENCE: { - next_month(impl); - break; - } - case ICAL_YEARLY_RECURRENCE:{ - next_year(impl); - break; - } - default:{ - assert(0); /* HACK, need a better error */ - } - } - - if(impl->last.year >= 2038){ - /* HACK */ - return icaltime_null_time(); - } - - - } while(!check_contracting_rules(impl) - || icaltime_compare(impl->last,impl->dtstart) < 0); - - - if( !icaltime_is_null_time(impl->rule.until) && - icaltime_compare(impl->last,impl->rule.until) > 0) { - return icaltime_null_time(); - } - - impl->occurrence_no++; - - return impl->last; -} - -#include "ical.h" -void icalrecurrencetype_test() -{ - icalvalue *v = icalvalue_new_from_string( - ICAL_RECUR_VALUE, - "FREQ=YEARLY;UNTIL=20060101T000000;INTERVAL=2;BYDAY=SU,WE;BYSECOND=15,30; BYMONTH=1,6,11"); - - struct icalrecurrencetype r = icalvalue_get_recur(v); - struct icaltimetype t = icaltime_from_timet( time(0), 0, 0); - struct icaltimetype next; - time_t tt; - - struct icalrecur_iterator_impl* itr - = (struct icalrecur_iterator_impl*) icalrecur_iterator_new(r,t); - - do { - - next = icalrecur_iterator_next(itr); - tt = icaltime_as_timet(next); - - printf("%s",ctime(&tt )); - - } while( ! icaltime_is_null_time(next)); - -} - diff --git a/libical/src/libical/icalrecur.h b/libical/src/libical/icalrecur.h deleted file mode 100644 index cfafc01b02..0000000000 --- a/libical/src/libical/icalrecur.h +++ /dev/null @@ -1,44 +0,0 @@ -/* -*- Mode: C -*- */ -/*====================================================================== - FILE: icalrecur.h - CREATOR: eric 20 March 2000 - - - (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 ICALRECUR_H -#define ICALRECUR_H - -#include -#include "icaltypes.h" -#include "icalenums.h" /* for recurrence enums */ - -typedef void icalrecur_iterator; -void icalrecurrencetype_test(); - - -icalrecur_iterator* icalrecur_iterator_new(struct icalrecurrencetype rule, struct icaltimetype dtstart); - -struct icaltimetype icalrecur_iterator_next(icalrecur_iterator*); - -int icalrecur_iterator_count(icalrecur_iterator*); - -void icalrecur_iterator_free(icalrecur_iterator*); - - -#endif diff --git a/libical/src/libical/icalrestriction.c b/libical/src/libical/icalrestriction.c deleted file mode 100644 index be0e292d28..0000000000 --- a/libical/src/libical/icalrestriction.c +++ /dev/null @@ -1,1587 +0,0 @@ -/* -*- Mode: C -*- */ -/* ====================================================================== - File: icalrestriction.c - - (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org - ======================================================================*/ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include "icalenums.h" -#include "icalrestriction.h" - -#define TMP_BUF_SIZE 1024 - -/* Define the structs for the restrictions. these data are filled out -in machine generated code below */ - -typedef int (*restriction_func)(icalcomponent* comp); - -typedef struct icalrestriction_property_record { - icalproperty_method method; - icalcomponent_kind component; - icalproperty_kind property; - icalrestriction_kind restriction; - restriction_func function; -} icalrestriction_property_record; - - -typedef struct icalrestriction_component_record { - icalproperty_method method; - icalcomponent_kind component; - icalcomponent_kind subcomponent; - icalrestriction_kind restriction; - restriction_func function; -} icalrestriction_component_record; - -icalrestriction_component_record icalrestriction_component_records[]; -icalrestriction_property_record icalrestriction_property_records[]; - -/* The each row gives the result of comparing a restriction against a - count. The columns in each row represent 0,1,2+. '-1' indicates - 'invalid, 'don't care' or 'needs more analysis' So, for - ICAL_RESTRICTION_ONE, if there is 1 of a property with that - restriction, it passes, but if there are 0 or 2+, it fails. */ - -char compare_map[ICAL_RESTRICTION_UNKNOWN+1][3] = { - { 1, 1, 1},/*ICAL_RESTRICTION_NONE*/ - { 1, 0, 0},/*ICAL_RESTRICTION_ZERO*/ - { 0, 1, 0},/*ICAL_RESTRICTION_ONE*/ - { 1, 1, 1},/*ICAL_RESTRICTION_ZEROPLUS*/ - { 0, 1, 1},/*ICAL_RESTRICTION_ONEPLUS*/ - { 1, 1, 0},/*ICAL_RESTRICTION_ZEROORONE*/ - { 1, 1, 0},/*ICAL_RESTRICTION_ONEEXCLUSIVE*/ - { 1, 1, 0},/*ICAL_RESTRICTION_ONEMUTUAL*/ - { 1, 1, 1} /*ICAL_RESTRICTION_UNKNOWN*/ -}; - -char restr_string_map[ICAL_RESTRICTION_UNKNOWN+1][60] = { - "unknown number",/*ICAL_RESTRICTION_NONE*/ - "0",/*ICAL_RESTRICTION_ZERO*/ - "1",/*ICAL_RESTRICTION_ONE*/ - "zero or more",/*ICAL_RESTRICTION_ZEROPLUS*/ - "one or more" ,/*ICAL_RESTRICTION_ONEPLUS*/ - "zero or one",/*ICAL_RESTRICTION_ZEROORONE*/ - "zero or one, exclusive with another property",/*ICAL_RESTRICTION_ONEEXCLUSIVE*/ - "zero or one, mutual with another property",/*ICAL_RESTRICTION_ONEMUTUAL*/ - "unknown number" /*ICAL_RESTRICTION_UNKNOWN*/ -}; - - -int -icalrestriction_compare(icalrestriction_kind restr, int count){ - - if ( restr < ICAL_RESTRICTION_NONE || restr > ICAL_RESTRICTION_UNKNOWN - || count < 0){ - return -1; - } - - if (count > 2) { - count = 2; - } - - return compare_map[restr][count]; - -} - -int icalrestriction_check_mutual(icalcomponent *comp){ - /* HACK. This function does nothing */ - return 1; -} - -int icalrestriction_check_exclusive(icalcomponent *comp){ - /* HACK. This function does nothing */ - return 1; -} - -int icalrestriction_check_component(icalproperty_method method, - icalcomponent* comp) -{ - icalproperty_kind kind; - icalcomponent_kind comp_kind; - icalrestriction_kind restr; - int count; - int compare; - int valid = 1; - - comp_kind = icalcomponent_isa(comp); - - /* Check all of the properties in this component */ - - for(kind = ICAL_ANY_PROPERTY+1; kind != ICAL_NO_PROPERTY; kind++){ - count = icalcomponent_count_properties(comp, kind); - - restr = icalrestriction_get_property_restriction(method, - comp_kind, - kind); - - - if(restr == ICAL_RESTRICTION_ONEEXCLUSIVE ) { - /* HACK. Treat this as a 0/1 restriction */ - restr = ICAL_RESTRICTION_ZEROORONE; - compare = icalrestriction_compare(restr,count); - } else if (restr == ICAL_RESTRICTION_ONEMUTUAL ) { - /* HACK. Treat this as a 0/1 restriction */ - restr = ICAL_RESTRICTION_ZEROORONE; - compare = icalrestriction_compare(restr,count); - } else { - compare = icalrestriction_compare(restr,count); - } - - assert(compare != -1); - - - if (compare == 0){ - char temp[TMP_BUF_SIZE]; - - snprintf(temp, TMP_BUF_SIZE,"Failed iTIP restrictions for property %s. Expected %s instances of the property and got %d", - icalenum_property_kind_to_string(kind), - restr_string_map[restr], count); - - icalcomponent_add_property - (comp, - icalproperty_vanew_xlicerror( - temp, - icalparameter_new_xlicerrortype(ICAL_XLICERRORTYPE_INVALIDITIP), - 0)); - } - - - valid = valid && compare; - } - - - - return valid; - - -} - -int icalrestriction_check(icalcomponent* outer_comp) -{ - icalcomponent_kind comp_kind; - icalproperty_method method; - icalcomponent* inner_comp; - icalproperty *method_prop; - int valid; - - icalerror_check_arg_rz( (outer_comp!=0), "outer comp"); - - - /* Get the Method value from the outer component */ - - comp_kind = icalcomponent_isa(outer_comp); - - if (comp_kind != ICAL_VCALENDAR_COMPONENT){ - icalerror_set_errno(ICAL_BADARG_ERROR); - return 0; - } - - method_prop = icalcomponent_get_first_property(outer_comp, - ICAL_METHOD_PROPERTY); - - if (method_prop == 0){ - method = ICAL_METHOD_NONE; - } else { - method = icalproperty_get_method(method_prop); - } - - - /* Check the VCALENDAR wrapper */ - valid = icalrestriction_check_component(ICAL_METHOD_NONE,outer_comp); - - - /* Now check the inner components */ - - for(inner_comp= icalcomponent_get_first_component(outer_comp, - ICAL_ANY_COMPONENT); - inner_comp != 0; - inner_comp= icalcomponent_get_next_component(outer_comp, - ICAL_ANY_COMPONENT)){ - - valid = valid && icalrestriction_check_component(method,inner_comp); - - } - - - return valid; - -} - -icalrestriction_kind -icalrestriction_get_property_restriction(icalproperty_method method, - icalcomponent_kind component, - icalproperty_kind property) -{ - int i; - - for(i = 0; - icalrestriction_property_records[i].restriction != ICAL_RESTRICTION_NONE; - i++){ - - if (method == icalrestriction_property_records[i].method && - component == icalrestriction_property_records[i].component && - property == icalrestriction_property_records[i].property ){ - return icalrestriction_property_records[i].restriction; - } - } - - return ICAL_RESTRICTION_UNKNOWN; -} - -icalrestriction_kind -icalrestriction_get_component_restriction(icalproperty_method method, - icalcomponent_kind component, - icalcomponent_kind subcomponent) -{ - - int i; - - for(i = 0; - icalrestriction_component_records[i].restriction != ICAL_RESTRICTION_NONE; - i++){ - - if (method == icalrestriction_component_records[i].method && - component == icalrestriction_component_records[i].component && - subcomponent == icalrestriction_component_records[i].subcomponent ){ - return icalrestriction_component_records[i].restriction; - } - } - - return ICAL_RESTRICTION_UNKNOWN; -} - -/* Everything below this line is machine generated. Do not edit. */ -icalrestriction_property_record icalrestriction_property_records[] = { - {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_SUMMARY_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZEROPLUS ,0}, - {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_DTEND_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_GEO_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_LOCATION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_PRIORITY_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_RESOURCES_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_TRANSP_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ONEPLUS,0}, - {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_SUMMARY_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZEROPLUS ,0}, - {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_DTEND_PROPERTY,ICAL_RESTRICTION_ONEEXCLUSIVE,icalrestriction_check_exclusive}, - {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ONEEXCLUSIVE,icalrestriction_check_exclusive}, - {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_GEO_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_LOCATION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_PRIORITY_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_RESOURCES_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_TRANSP_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZEROPLUS ,0}, - {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_DTEND_PROPERTY,ICAL_RESTRICTION_ONEEXCLUSIVE,icalrestriction_check_exclusive}, - {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ONEEXCLUSIVE,icalrestriction_check_exclusive}, - {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_GEO_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_LOCATION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_PRIORITY_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_RESOURCES_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_SUMMARY_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_TRANSP_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_SUMMARY_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZEROPLUS ,0}, - {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_DTEND_PROPERTY,ICAL_RESTRICTION_ONEEXCLUSIVE, icalrestriction_check_exclusive}, - {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ONEEXCLUSIVE, icalrestriction_check_exclusive}, - {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_GEO_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_LOCATION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_PRIORITY_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_RESOURCES_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_TRANSP_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZEROPLUS ,0}, - {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_DTEND_PROPERTY,ICAL_RESTRICTION_ONEEXCLUSIVE, icalrestriction_check_exclusive}, - {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ONEEXCLUSIVE, icalrestriction_check_exclusive}, - {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_GEO_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_LOCATION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_PRIORITY_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_RESOURCES_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_SUMMARY_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_TRANSP_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_DTEND_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_GEO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_LOCATION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_PRIORITY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_RESOURCES_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_SUMMARY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_TRANSP_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_SUMMARY_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZEROPLUS ,0}, - {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_DTEND_PROPERTY,ICAL_RESTRICTION_ONEEXCLUSIVE, icalrestriction_check_exclusive}, - {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ONEEXCLUSIVE, icalrestriction_check_exclusive}, - {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_GEO_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_LOCATION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_PRIORITY_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_RESOURCES_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_TRANSP_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_DTEND_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_GEO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_LOCATION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_PRIORITY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_RESOURCES_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_SUMMARY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_TRANSP_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_PUBLISH,ICAL_VFREEBUSY_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VFREEBUSY_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VFREEBUSY_COMPONENT,ICAL_DTEND_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VFREEBUSY_COMPONENT,ICAL_FREEBUSY_PROPERTY,ICAL_RESTRICTION_ONEPLUS,0}, - {ICAL_METHOD_PUBLISH,ICAL_VFREEBUSY_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VFREEBUSY_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VFREEBUSY_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_PUBLISH,ICAL_VFREEBUSY_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_PUBLISH,ICAL_VFREEBUSY_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VFREEBUSY_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_PUBLISH,ICAL_VFREEBUSY_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_PUBLISH,ICAL_VFREEBUSY_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_PUBLISH,ICAL_VFREEBUSY_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REQUEST,ICAL_VFREEBUSY_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ONEPLUS,0}, - {ICAL_METHOD_REQUEST,ICAL_VFREEBUSY_COMPONENT,ICAL_DTEND_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_REQUEST,ICAL_VFREEBUSY_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_REQUEST,ICAL_VFREEBUSY_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_REQUEST,ICAL_VFREEBUSY_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_REQUEST,ICAL_VFREEBUSY_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_REQUEST,ICAL_VFREEBUSY_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REQUEST,ICAL_VFREEBUSY_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_REQUEST,ICAL_VFREEBUSY_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_REQUEST,ICAL_VFREEBUSY_COMPONENT,ICAL_FREEBUSY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REQUEST,ICAL_VFREEBUSY_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REQUEST,ICAL_VFREEBUSY_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REQUEST,ICAL_VFREEBUSY_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REPLY,ICAL_VFREEBUSY_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_REPLY,ICAL_VFREEBUSY_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_REPLY,ICAL_VFREEBUSY_COMPONENT,ICAL_DTEND_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_REPLY,ICAL_VFREEBUSY_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_REPLY,ICAL_VFREEBUSY_COMPONENT,ICAL_FREEBUSY_PROPERTY,ICAL_RESTRICTION_ONEPLUS,0}, - {ICAL_METHOD_REPLY,ICAL_VFREEBUSY_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_REPLY,ICAL_VFREEBUSY_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_REPLY,ICAL_VFREEBUSY_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REPLY,ICAL_VFREEBUSY_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_REPLY,ICAL_VFREEBUSY_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_REPLY,ICAL_VFREEBUSY_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REPLY,ICAL_VFREEBUSY_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_REPLY,ICAL_VFREEBUSY_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REPLY,ICAL_VFREEBUSY_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_PRIORITY_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_SUMMARY_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZEROPLUS ,0}, - {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_DUE_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_GEO_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_LOCATION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_PERCENTCOMPLETE_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_RESOURCES_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ONEPLUS,0}, - {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_PRIORITY_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_SUMMARY_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZEROPLUS ,0}, - {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_DUE_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_GEO_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_LOCATION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_PERCENTCOMPLETE_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_RESOURCES_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ONEPLUS,0}, - {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ONEPLUS,0}, - {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZEROPLUS ,0}, - {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_DUE_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_GEO_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_LOCATION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_PERCENTCOMPLETE_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_PRIORITY_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_RESOURCES_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_SUMMARY_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_PRIORITY_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_SUMMARY_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_DUE_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_GEO_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_LOCATION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_PERCENTCOMPLETE_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_RESOURCES_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZEROPLUS ,0}, - {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_DUE_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_GEO_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_LOCATION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_PERCENTCOMPLETE_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_RESOURCES_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_PRIORITY_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_DUE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_GEO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_LOCATION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_PERCENTCOMPLETE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_PRIORITY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_RESOURCES_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ONEPLUS,0}, - {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_PRIORITY_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_SUMMARY_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZEROPLUS ,0}, - {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_DUE_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_GEO_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_LOCATION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_PERCENTCOMPLETE_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_RESOURCES_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ONEPLUS,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZEROPLUS ,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_DUE_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_GEO_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_LOCATION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_PERCENTCOMPLETE_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_PRIORITY_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_RESOURCES_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZEROPLUS ,0}, - {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_SUMMARY_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZEROPLUS ,0}, - {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_SUMMARY_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZEROPLUS ,0}, - {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_SUMMARY_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_ACTION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_CALSCALE_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_COMPLETED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_DTEND_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_DUE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_FREEBUSY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_GEO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_LOCATION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_METHOD_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_PERCENTCOMPLETE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_PRIORITY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_PRODID_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_REPEAT_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_RESOURCES_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_SUMMARY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_TRANSP_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_TRIGGER_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_TZID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_TZNAME_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_TZOFFSETFROM_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_TZOFFSETTO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_TZURL_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_VERSION_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_ACTION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_CALSCALE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_COMPLETED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_DTEND_PROPERTY,ICAL_RESTRICTION_ONEEXCLUSIVE, icalrestriction_check_exclusive}, - {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_DUE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ONEEXCLUSIVE, icalrestriction_check_exclusive}, - {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_FREEBUSY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_GEO_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_LOCATION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_METHOD_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_PERCENTCOMPLETE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_PRIORITY_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_PRODID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_REPEAT_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_RESOURCES_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_SUMMARY_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_TRANSP_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_TRIGGER_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_TZID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_TZNAME_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_TZOFFSETFROM_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_TZOFFSETTO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_TZURL_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_VERSION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_ACTION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_CALSCALE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_COMPLETED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_DTEND_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_DUE_PROPERTY,ICAL_RESTRICTION_ONEEXCLUSIVE,0}, - {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ONEEXCLUSIVE,0}, - {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_FREEBUSY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_GEO_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_LOCATION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_METHOD_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_PERCENTCOMPLETE_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_PRIORITY_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_PRODID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_REPEAT_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_RESOURCES_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_SUMMARY_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_TRANSP_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_TRIGGER_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_TZID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_TZNAME_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_TZOFFSETFROM_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_TZOFFSETTO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_TZURL_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_VERSION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_ACTION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_CALSCALE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_COMPLETED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_DTEND_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_DUE_PROPERTY,ICAL_RESTRICTION_ONEEXCLUSIVE,0}, - {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ONEEXCLUSIVE,0}, - {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_FREEBUSY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_GEO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_LOCATION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_METHOD_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_PERCENTCOMPLETE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_PRIORITY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_PRODID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_REPEAT_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_RESOURCES_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_SUMMARY_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_TRANSP_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_TRIGGER_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_TZID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_TZNAME_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_TZOFFSETFROM_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_TZOFFSETTO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_TZURL_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_VERSION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_ACTION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_CALSCALE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_COMPLETED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_DTEND_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_DUE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_FREEBUSY_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_GEO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_LOCATION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_METHOD_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_PERCENTCOMPLETE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_PRIORITY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_PRODID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_REPEAT_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_RESOURCES_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_SUMMARY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_TRANSP_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_TRIGGER_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_TZID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_TZNAME_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_TZOFFSETFROM_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_TZOFFSETTO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_TZURL_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_VERSION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_ACTION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_CALSCALE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_COMPLETED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_DTEND_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_DUE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_FREEBUSY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_GEO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_LOCATION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_METHOD_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_PERCENTCOMPLETE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_PRIORITY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_PRODID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_REPEAT_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_RESOURCES_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_SUMMARY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_TRANSP_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_TRIGGER_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_TZID_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_TZNAME_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_TZOFFSETFROM_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_TZOFFSETTO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_TZURL_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_VERSION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_ACTION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_CALSCALE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_COMPLETED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_DTEND_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_DUE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_FREEBUSY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_GEO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_LOCATION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_METHOD_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_PERCENTCOMPLETE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_PRIORITY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_PRODID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_REPEAT_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_RESOURCES_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_SUMMARY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_TRANSP_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_TRIGGER_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_TZID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_TZNAME_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_TZOFFSETFROM_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_TZOFFSETTO_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_TZURL_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_VERSION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_ACTION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_CALSCALE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_COMPLETED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_DTEND_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_DUE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_FREEBUSY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_GEO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_LOCATION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_METHOD_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_PERCENTCOMPLETE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_PRIORITY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_PRODID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_REPEAT_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_RESOURCES_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_SUMMARY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_TRANSP_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_TRIGGER_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_TZID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_TZNAME_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_TZOFFSETFROM_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_TZOFFSETTO_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_TZURL_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_VERSION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_ACTION_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_CALSCALE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_COMPLETED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_DTEND_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_DUE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ONEMUTUAL,icalrestriction_check_mutual}, - {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_REPEAT_PROPERTY,ICAL_RESTRICTION_ONEMUTUAL,icalrestriction_check_mutual}, - {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_FREEBUSY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_GEO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_LOCATION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_METHOD_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_PERCENTCOMPLETE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_PRIORITY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_PRODID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_RESOURCES_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_SUMMARY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_TRANSP_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_TRIGGER_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_TZID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_TZNAME_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_TZOFFSETFROM_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_TZOFFSETTO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_TZURL_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_VERSION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_ACTION_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_CALSCALE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_COMPLETED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_DTEND_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_DUE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ONEMUTUAL,icalrestriction_check_mutual}, - {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_REPEAT_PROPERTY,ICAL_RESTRICTION_ONEMUTUAL,icalrestriction_check_mutual}, - {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_FREEBUSY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_GEO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_LOCATION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_METHOD_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_PERCENTCOMPLETE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_PRIORITY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_PRODID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_RESOURCES_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_SUMMARY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_TRANSP_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_TRIGGER_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_TZID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_TZNAME_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_TZOFFSETFROM_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_TZOFFSETTO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_TZURL_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_VERSION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_ACTION_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ONEPLUS,0}, - {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_CALSCALE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_COMPLETED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_DTEND_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_DUE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ONEMUTUAL,icalrestriction_check_mutual}, - {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_REPEAT_PROPERTY,ICAL_RESTRICTION_ONEMUTUAL,icalrestriction_check_mutual}, - {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_FREEBUSY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_GEO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_LOCATION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_METHOD_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_PERCENTCOMPLETE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_PRIORITY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_PRODID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_RESOURCES_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_SUMMARY_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_TRANSP_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_TRIGGER_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_TZID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_TZNAME_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_TZOFFSETFROM_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_TZOFFSETTO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_TZURL_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_VERSION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_ACTION_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_CALSCALE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_COMPLETED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_DTEND_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_DUE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ONEMUTUAL,icalrestriction_check_mutual}, - {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_REPEAT_PROPERTY,ICAL_RESTRICTION_ONEMUTUAL,icalrestriction_check_mutual}, - {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_FREEBUSY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_GEO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_LOCATION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_METHOD_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_PERCENTCOMPLETE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_PRIORITY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_PRODID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_RESOURCES_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_SUMMARY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_TRANSP_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_TRIGGER_PROPERTY,ICAL_RESTRICTION_ONE,0}, - {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_TZID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_TZNAME_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_TZOFFSETFROM_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_TZOFFSETTO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_TZURL_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_VERSION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_NONE,ICAL_NO_COMPONENT,ICAL_NO_PROPERTY,ICAL_RESTRICTION_NONE,0} -}; -icalrestriction_component_record icalrestriction_component_records[] = { - {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_VALARM_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_VFREEBUSY_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_VJOURNAL_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_VTODO_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_VTIMEZONE_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_X_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_VALARM_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_VTIMEZONE_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_X_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_VFREEBUSY_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_VJOURNAL_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_VTODO_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_VTIMEZONE_COMPONENT,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_X_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_VALARM_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_VFREEBUSY_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_VJOURNAL_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_VTODO_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_VALARM_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_VTIMEZONE_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_X_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_VFREEBUSY_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_VTODO_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_VJOURNAL_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_VTIMEZONE_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_X_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_VTODO_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_VJOURNAL_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_VFREEBUSY_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_VALARM_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_X_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_VTODO_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_VJOURNAL_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_VFREEBUSY_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_VTIMEZONE_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_VALARM_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_VALARM_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_VTIMEZONE_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_X_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_VTODO_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_VJOURNAL_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_VFREEBUSY_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_X_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_VTODO_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_VJOURNAL_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_VFREEBUSY_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_VTIMEZONE_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_VALARM_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_PUBLISH,ICAL_VFREEBUSY_COMPONENT,ICAL_X_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_PUBLISH,ICAL_VFREEBUSY_COMPONENT,ICAL_VEVENT_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_PUBLISH,ICAL_VFREEBUSY_COMPONENT,ICAL_VTODO_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_PUBLISH,ICAL_VFREEBUSY_COMPONENT,ICAL_VJOURNAL_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_PUBLISH,ICAL_VFREEBUSY_COMPONENT,ICAL_VTIMEZONE_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_PUBLISH,ICAL_VFREEBUSY_COMPONENT,ICAL_VALARM_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REQUEST,ICAL_VFREEBUSY_COMPONENT,ICAL_X_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_REQUEST,ICAL_VFREEBUSY_COMPONENT,ICAL_VALARM_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REQUEST,ICAL_VFREEBUSY_COMPONENT,ICAL_VEVENT_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REQUEST,ICAL_VFREEBUSY_COMPONENT,ICAL_VTODO_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REQUEST,ICAL_VFREEBUSY_COMPONENT,ICAL_VJOURNAL_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REQUEST,ICAL_VFREEBUSY_COMPONENT,ICAL_VTIMEZONE_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REPLY,ICAL_VFREEBUSY_COMPONENT,ICAL_X_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_REPLY,ICAL_VFREEBUSY_COMPONENT,ICAL_VALARM_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REPLY,ICAL_VFREEBUSY_COMPONENT,ICAL_VEVENT_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REPLY,ICAL_VFREEBUSY_COMPONENT,ICAL_VTODO_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REPLY,ICAL_VFREEBUSY_COMPONENT,ICAL_VJOURNAL_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REPLY,ICAL_VFREEBUSY_COMPONENT,ICAL_VTIMEZONE_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_VTIMEZONE_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_VALARM_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_X_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_VFREEBUSY_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_VEVENT_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_VJOURNAL_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_VALARM_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_VTIMEZONE_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_X_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_VEVENT_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_VFREEBUSY_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_VJOURNAL_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_VTIMEZONE_COMPONENT,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_X_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_VALARM_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_VEVENT_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_VFREEBUSY_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_VALARM_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_VTIMEZONE_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_X_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_VEVENT_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_VJOURNAL_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_VFREEBUSY_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_VTIMEZONE_COMPONENT,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_X_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_VALARM_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_VEVENT_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_VFREEBUSY_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_X_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_VALARM_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_VEVENT_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_VFREEBUSY_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_VTIMEZONE_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_VALARM_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_VTIMEZONE_COMPONENT,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_X_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_VEVENT_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_VFREEBUSY_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_VTIMEZONE_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_X_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_VALARM_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_VEVENT_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_VFREEBUSY_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_VALARM_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_VTIMEZONE_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_X_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_VEVENT_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_VFREEBUSY_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_VTODO_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_VALARM_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_VTIMEZONE_COMPONENT,ICAL_RESTRICTION_ZEROORONE,0}, - {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_X_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_VEVENT_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_VFREEBUSY_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_VTODO_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_VTIMEZONE_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_X_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, - {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_VALARM_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_VEVENT_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_VFREEBUSY_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_VTODO_COMPONENT,ICAL_RESTRICTION_ZERO,0}, - {ICAL_METHOD_NONE,ICAL_NO_COMPONENT,ICAL_NO_COMPONENT,ICAL_RESTRICTION_NONE,0} -}; diff --git a/libical/src/libical/icalrestriction.h b/libical/src/libical/icalrestriction.h deleted file mode 100644 index 12421d0f32..0000000000 --- a/libical/src/libical/icalrestriction.h +++ /dev/null @@ -1,71 +0,0 @@ -/* -*- Mode: C -*- */ -/*====================================================================== - FILE: icalrestriction.h - CREATOR: eric 24 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 icalrestriction.h - - Contributions from: - Graham Davison (g.m.davison@computer.org) - - -======================================================================*/ - -#include "ical.h" - -#ifndef ICALRESTRICTION_H -#define ICALRESTRICTION_H - -/* These must stay in this order for icalrestriction_compare to work */ -typedef enum icalrestriction_kind { - ICAL_RESTRICTION_NONE=0, /* 0 */ - ICAL_RESTRICTION_ZERO, /* 1 */ - ICAL_RESTRICTION_ONE, /* 2 */ - ICAL_RESTRICTION_ZEROPLUS, /* 3 */ - ICAL_RESTRICTION_ONEPLUS, /* 4 */ - ICAL_RESTRICTION_ZEROORONE, /* 5 */ - ICAL_RESTRICTION_ONEEXCLUSIVE, /* 6 */ - ICAL_RESTRICTION_ONEMUTUAL, /* 7 */ - ICAL_RESTRICTION_UNKNOWN /* 8 */ -} icalrestriction_kind; - -int -icalrestriction_compare(icalrestriction_kind restr, int count); - -icalrestriction_kind -icalrestriction_get_property_restriction(icalproperty_method method, - icalcomponent_kind component, - icalproperty_kind property); - -icalrestriction_kind -icalrestriction_get_component_restriction(icalproperty_method method, - icalcomponent_kind component, - icalcomponent_kind subcomponent); - -int -icalrestriction_is_parameter_allowed(icalproperty_kind property, - icalparameter_kind parameter); - -int icalrestriction_check(icalcomponent* comp); - - -#endif /* !ICALRESTRICTION_H */ - - - diff --git a/libical/src/libical/icaltime.c b/libical/src/libical/icaltime.c deleted file mode 100644 index 6d651922d5..0000000000 --- a/libical/src/libical/icaltime.c +++ /dev/null @@ -1,199 +0,0 @@ -/* -*- 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 - - - ======================================================================*/ - -#include "icaltime.h" -#include - -struct icaltimetype -icaltime_from_timet(time_t tm, int is_date, int is_utc) -{ - struct icaltimetype tt; - struct tm t; - - if(is_utc == 1){ - t = *(gmtime(&tm)); - } else { - t = *(localtime(&tm)); - } - tt.second = t.tm_sec; - tt.minute = t.tm_min; - tt.hour = t.tm_hour; - tt.day = t.tm_mday; - tt.month = t.tm_mon + 1; - tt.year = t.tm_year+ 1900; - - tt.is_utc = is_utc; - tt.is_date = is_date; - - return tt; -} - -time_t icaltime_as_timet(struct icaltimetype tt) -{ - struct tm stm; - time_t tut; - - memset(&stm,0,sizeof( struct tm)); - - stm.tm_sec = tt.second; - stm.tm_min = tt.minute; - stm.tm_hour = tt.hour; - stm.tm_mday = tt.day; - stm.tm_mon = tt.month-1; - stm.tm_year = tt.year-1900; - stm.tm_isdst = -1; /* prevents mktime from changing hour based on - daylight savings */ - - tut = mktime(&stm); - - return tut; -} - -short days_in_month[] = {0,31,28,31,30,31,30,31,31,30,31,30,31}; - -short icaltime_days_in_month(short month,short year) -{ - int is_leap =0; - int days = days_in_month[month]; - - assert(month > 0); - assert(month <= 12); - - if( (year % 4 == 0 && year % 100 != 0) || - year % 400 == 0){ - is_leap =1; - } - - if( month == 2){ - days += is_leap; - } - - return days; -} - -/* 1-> Sunday, 7->Saturday */ -short icaltime_day_of_week(struct icaltimetype t){ - - time_t tt = icaltime_as_timet(t); - struct tm *tm; - - tm = gmtime(&tt); - - return tm->tm_wday+1; -} - -short icaltime_start_doy_of_week(struct icaltimetype t){ - time_t tt = icaltime_as_timet(t); - time_t start_tt; - struct tm *stm; - - stm = gmtime(&tt); - - start_tt = tt - stm->tm_wday*(60*60*24); - - stm = gmtime(&start_tt); - - return stm->tm_yday; -} - -short icaltime_day_of_year(struct icaltimetype t){ - time_t tt = icaltime_as_timet(t); - struct tm *stm; - - stm = gmtime(&tt); - - return stm->tm_yday; - -} - -struct icaltimetype icaltime_from_day_of_year(short doy, short year) -{ - struct tm stm; - time_t tt; - - /* Get the time of january 1 of this year*/ - memset(&stm,0,sizeof(struct tm)); - stm.tm_year = year-1900; - stm.tm_mday = 1; - - tt = mktime(&stm); - - /* Now add in the days */ - - tt += doy *60*60*24; - - return icaltime_from_timet(tt, 1, 1); -} - -struct icaltimetype icaltime_null_time() -{ - struct icaltimetype t; - memset(&t,0,sizeof(struct icaltimetype)); - - return t; -} -int icaltime_is_null_time(struct icaltimetype t) -{ - if (t.second +t.minute+t.hour+t.day+t.month+t.year == 0){ - return 1; - } - - return 0; - -} - -int icaltime_compare(struct icaltimetype a,struct icaltimetype b) -{ - time_t t1 = icaltime_as_timet(a); - time_t t2 = icaltime_as_timet(b); - - if (t1 > t2) { - return 1; - } else if (t1 < t2) { - return -1; - } else { - return 0; - } - -} - -int icaltime_compare_date_only(struct icaltimetype a, struct icaltimetype b) -{ - time_t t1 = icaltime_as_timet(a); - time_t t2 = icaltime_as_timet(b); - - if (a.year == b.year && a.month == b.month && a.day == b.day) { - return 0; - } - - if (t1 > t2) { - return 1; - } else if (t1 < t2) { - return -1; - } -} - diff --git a/libical/src/libical/icaltime.h b/libical/src/libical/icaltime.h deleted file mode 100644 index 6c5b653c23..0000000000 --- a/libical/src/libical/icaltime.h +++ /dev/null @@ -1,75 +0,0 @@ -// -*- Mode: C -*- -/*====================================================================== - FILE: icaltime.h - 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 - - -======================================================================*/ - -#ifndef ICALTIME_H -#define ICALTIME_H - -#include - -struct icaltimetype -{ - int year; - int month; - int day; - int hour; - int minute; - int second; - - int is_utc; /* 1-> time is in UTC timezone */ - - int is_date; /* 1 -> interpret this as date. */ -}; - -struct icaltimetype icaltime_null_time(); - -int icaltime_is_null_time(struct icaltimetype t); - -struct icaltimetype icaltime_normalize(struct icaltimetype t); - -short icaltime_day_of_year(struct icaltimetype t); -struct icaltimetype icaltime_from_day_of_year(short doy, short year); - -short icaltime_day_of_week(struct icaltimetype t); -short icaltime_start_doy_of_week(struct icaltimetype t); - -struct icaltimetype icaltime_from_timet(time_t v, int is_date, int is_utc); -time_t icaltime_as_timet(struct icaltimetype); - -short icaltime_week_number(short day_of_month, short month, short year); - -struct icaltimetype icaltime_from_week_number(short week_number, short year); - -int icaltime_compare(struct icaltimetype a,struct icaltimetype b); -int icaltime_compare_date_only(struct icaltimetype a, struct icaltimetype b); - -short icaltime_days_in_month(short month,short year); - -#endif /* !ICALTIME_H */ - - - diff --git a/libical/src/libical/icaltypes.c b/libical/src/libical/icaltypes.c deleted file mode 100644 index c7017eb2af..0000000000 --- a/libical/src/libical/icaltypes.c +++ /dev/null @@ -1,297 +0,0 @@ -/* -*- Mode: C -*- - ====================================================================== - FILE: icaltypes.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 icaltypes.c - - ======================================================================*/ -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include "icaltypes.h" -#include "icalerror.h" -#include "icalmemory.h" -#include /* for malloc and abs() */ -#include /* for errno */ -#include /* for icalmemory_strdup */ -#include -#include /* for SHRT_MAX */ - -#define TEMP_MAX 1024 - -void* -icalattachtype_get_data (struct icalattachtype* type); - -struct icalattachtype* -icalattachtype_new() -{ - struct icalattachtype* v; - - if ( ( v = (struct icalattachtype*) - malloc(sizeof(struct icalattachtype))) == 0) { - errno = ENOMEM; - return 0; - } - - v->refcount = 1; - - v->binary = 0; - v->owns_binary = 0; - - v->base64 = 0; - v->owns_base64 = 0; - - v->url = 0; - - return v; -} - - -void -icalattachtype_free(struct icalattachtype* v) -{ - icalerror_check_arg( (v!=0),"v"); - - v->refcount--; - - if (v->refcount <= 0){ - - if (v->base64 != 0 && v->owns_base64 != 0){ - free(v->base64); - } - - if (v->binary != 0 && v->owns_binary != 0){ - free(v->binary); - } - - if (v->url != 0){ - free(v->url); - } - - free(v); - } -} - -void icalattachtype_add_reference(struct icalattachtype* v) -{ - icalerror_check_arg( (v!=0),"v"); - v->refcount++; -} - -void icalattachtype_set_url(struct icalattachtype* v, char* url) -{ - icalerror_check_arg( (v!=0),"v"); - - if (v->url != 0){ - free (v->url); - } - - v->url = icalmemory_strdup(url); - - /* HACK This routine should do something if icalmemory_strdup returns NULL */ - -} - -char* icalattachtype_get_url(struct icalattachtype* v) -{ - icalerror_check_arg( (v!=0),"v"); - return v->url; -} - -void icalattachtype_set_base64(struct icalattachtype* v, char* base64, - int owns) -{ - icalerror_check_arg( (v!=0),"v"); - - v->base64 = base64; - v->owns_base64 = !(owns != 0 ); - -} - -char* icalattachtype_get_base64(struct icalattachtype* v) -{ - icalerror_check_arg( (v!=0),"v"); - return v->base64; -} - -void icalattachtype_set_binary(struct icalattachtype* v, char* binary, - int owns) -{ - icalerror_check_arg( (v!=0),"v"); - - v->binary = binary; - v->owns_binary = !(owns != 0 ); - -} - -void* icalattachtype_get_binary(struct icalattachtype* v) -{ - icalerror_check_arg( (v!=0),"v"); - return v->binary; -} - - - -time_t -icalperiodtype_duration (struct icalperiodtype period); - - -time_t -icalperiodtype_end (struct icalperiodtype period); - - -/* From Russel Steinthal */ -time_t icaldurationtype_as_timet(struct icaldurationtype dur) -{ - return (time_t) (dur.seconds + - (60 * dur.minutes) + - (60 * 60 * dur.hours) + - (60 * 60 * 24 * dur.days) + - (60 * 60 * 24 * 7 * dur.weeks)); -} - -/* From Seth Alves, */ -struct icaldurationtype icaldurationtype_from_timet(time_t t) -{ - struct icaldurationtype dur; - time_t used = 0; - - 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; -} - -void icalrecurrencetype_clear(struct icalrecurrencetype *recur) -{ - memset(recur,ICAL_RECURRENCE_ARRAY_MAX_BYTE, - sizeof(struct icalrecurrencetype)); - - recur->week_start = ICAL_NO_WEEKDAY; - recur->freq = ICAL_NO_RECURRENCE; - recur->interval = 1; - memset(&(recur->until),0,sizeof(struct icaltimetype)); - recur->count = 0; -} - -/* The 'day' element of icalrecurrencetype_weekday is encoded to allow -reporesentation of both the day of the week ( Monday, Tueday), but -also the Nth day of the week ( First tuesday of the month, last -thursday of the year) These routines decode the day values. - -The day's position in the period ( Nth-ness) and the numerical value -of the day are encoded together as: pos*7 + dow - */ - -enum icalrecurrencetype_weekday icalrecurrencetype_day_day_of_week(short day) -{ - return abs(day)%8; -} - -short icalrecurrencetype_day_position(short day) -{ - return (day-icalrecurrencetype_day_day_of_week(day))/8; -} - - -struct icalreqstattype icalreqstattype_from_string(char* str) -{ - char *p1,*p2; - struct icalreqstattype stat; - int major, minor; - - icalerror_check_arg((str != 0),"str"); - - stat.code = ICAL_UNKNOWN_STATUS; - stat.debug = 0; - stat.desc = 0; - - /* Get the status numbers */ - - sscanf(str, "%d.%d",&major, &minor); - - if (major <= 0 || minor < 0){ - icalerror_set_errno(ICAL_BADARG_ERROR); - return stat; - } - - stat.code = icalenum_num_to_reqstat(major, minor); - - if (stat.code == ICAL_UNKNOWN_STATUS){ - icalerror_set_errno(ICAL_BADARG_ERROR); - return stat; - } - - - p1 = strchr(str,';'); - - if (p1 == 0){ - icalerror_set_errno(ICAL_BADARG_ERROR); - return stat; - } - - /* Just ignore the second clause; it will be taken from inside the library - */ - - - - p2 = strchr(p1+1,';'); - if (p2 != 0 && *p2 != 0){ - stat.debug = p2+1; - } - - return stat; - -} - -char* icalreqstattype_as_string(struct icalreqstattype stat) -{ - char *temp; - - temp = (char*)icalmemory_tmp_buffer(TEMP_MAX); - - icalerror_check_arg_rz((stat.code != ICAL_UNKNOWN_STATUS),"Status"); - - if (stat.desc == 0){ - stat.desc = icalenum_reqstat_desc(stat.code); - } - - if(stat.debug != 0){ - snprintf(temp,TEMP_MAX,"%d.%d;%s;%s", icalenum_reqstat_major(stat.code), - icalenum_reqstat_minor(stat.code), - stat.desc, stat.debug); - - } else { - snprintf(temp,TEMP_MAX,"%d.%d;%s", icalenum_reqstat_major(stat.code), - icalenum_reqstat_minor(stat.code), - stat.desc); - } - - return temp; -} diff --git a/libical/src/libical/icaltypes.h b/libical/src/libical/icaltypes.h deleted file mode 100644 index 1130ab2457..0000000000 --- a/libical/src/libical/icaltypes.h +++ /dev/null @@ -1,178 +0,0 @@ -/* -*- Mode: C -*- */ -/*====================================================================== - FILE: icaltypes.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 icaltypes.h - -======================================================================*/ - -#ifndef ICALTYPES_H -#define ICALTYPES_H - -#include -#include "icalenums.h" /* for recurrence enums */ -#include "icaltime.h" - -/* This type type should probably be an opaque type... */ -struct icalattachtype -{ - void* binary; - int owns_binary; - - char* base64; - int owns_base64; - - char* url; - - int refcount; - -}; - -/* converts base64 to binary, fetches url and stores as binary, or - just returns data */ - -struct icalattachtype* icalattachtype_new(); -void icalattachtype_add_reference(struct icalattachtype* v); -void icalattachtype_free(struct icalattachtype* v); - -void icalattachtype_set_url(struct icalattachtype* v, char* url); -char* icalattachtype_get_url(struct icalattachtype* v); - -void icalattachtype_set_base64(struct icalattachtype* v, char* base64, - int owns); -char* icalattachtype_get_base64(struct icalattachtype* v); - -void icalattachtype_set_binary(struct icalattachtype* v, char* binary, - int owns); -void* icalattachtype_get_binary(struct icalattachtype* v); - -struct icalgeotype -{ - float lat; - float lon; -}; - - - -/* See RFC 2445 Section 4.3.10, RECUR Value, for an explaination of - the values and fields in struct icalrecurrencetype */ - - -struct icalrecurrencetype -{ - icalrecurrencetype_frequency freq; - - - /* until and count are mutually exclusive. */ - struct icaltimetype until; - int count; - - short interval; - - icalrecurrencetype_weekday week_start; - - /* The BY* parameters can each take a list of values. Here I - * assume that the list of values will not be larger than the - * range of the value -- that is, the client will not name a - * value more than once. - - * Each of the lists is terminated with the value SHRT_MAX - * unless the the list is full. */ - - short by_second[61]; - short by_minute[61]; - short by_hour[25]; - short by_day[8]; /* Encoded value, see below */ - short by_month_day[32]; - short by_year_day[367]; - short by_week_no[54]; - short by_month[13]; - short by_set_pos[367]; -}; - - -void icalrecurrencetype_clear(struct icalrecurrencetype *r); - -/* The 'day' element of icalrecurrencetype_weekday is encoded to allow -reporesentation of both the day of the week ( Monday, Tueday), but -also the Nth day of the week ( First tuesday of the month, last -thursday of the year) These routines decode the day values */ - -/* 1 == Monday, etc. */ -enum icalrecurrencetype_weekday icalrecurrencetype_day_day_of_week(short day); - -/* 0 == any of day of week. 1 == first, 2 = second, -2 == second to last, etc */ -short icalrecurrencetype_day_position(short day); - -struct icaldurationtype -{ - unsigned int days; - unsigned int weeks; - unsigned int hours; - unsigned int minutes; - unsigned int seconds; -}; - -struct icaldurationtype icaldurationtype_from_timet(time_t t); -time_t icaldurationtype_as_timet(struct icaldurationtype duration); - -/* Return the next occurance of 'r' after the time specified by 'after' */ -struct icaltimetype icalrecurrencetype_next_occurance( - struct icalrecurrencetype *r, - struct icaltimetype *after); - - -struct icalperiodtype -{ - struct icaltimetype start; /* Must be absolute */ - struct icaltimetype end; /* Must be absolute */ - struct icaldurationtype duration; -}; - -time_t icalperiodtype_duration(struct icalperiodtype period); -time_t icalperiodtype_end(struct icalperiodtype period); - -union icaltriggertype -{ - struct icaltimetype time; - struct icaldurationtype duration; -}; - - -/* struct icalreqstattype. This struct contains two string pointers, -but don't try to free either of them. The "desc" string is a pointer -to a static table inside the library. Don't try to free it. The -"debug" string is a pointer into the string that the called passed -into to icalreqstattype_from_string. Don't try to free it either, and -don't use it after the original string has been freed. - -BTW, you would get that original string from -*icalproperty_get_requeststatus() or icalvalue_get_text(), when -operating on a the value of a request_status property. */ - -struct icalreqstattype { - - icalrequeststatus code; - char* desc; - char* debug; -}; - -struct icalreqstattype icalreqstattype_from_string(char* str); -char* icalreqstattype_as_string(struct icalreqstattype); - -#endif /* !ICALTYPES_H */ diff --git a/libical/src/libical/icalvalue.c b/libical/src/libical/icalvalue.c deleted file mode 100644 index db0e58efe8..0000000000 --- a/libical/src/libical/icalvalue.c +++ /dev/null @@ -1,2134 +0,0 @@ -/* -*- 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 "ical.h" -#include "icalerror.h" -#include "icalmemory.h" -#include "icalparser.h" -#include "icalenums.h" - -#include /* for malloc */ -#include /* for sprintf */ -#include /* For memset, others */ -#include /* For offsetof() macro */ -#include -#include /* for mktime */ -#include /* for atoi and atof */ -#include /* for SHRT_MAX */ - -#if _MAC_OS_ -#include "icalmemory_strdup.h" -#endif - -#define TMP_BUF_SIZE 1024 - -void print_datetime_to_string(char* str, struct icaltimetype *data); -void print_date_to_string(char* str, struct icaltimetype *data); -void print_time_to_string(char* str, struct icaltimetype *data); -void print_recur_to_string(char* str, struct icaltimetype *data); - -struct icalvalue_impl { - icalvalue_kind kind; - char id[5]; - int size; - icalproperty* parent; - - union data { - struct icalattachtype v_attach; - /* void *v_binary; */ /* use v_attach */ - char *v_string; - /*char *v_text;*/ - /*char *v_caladdress;*/ - /*char *v_uri;*/ - float v_float; - int v_int; - /*int v_boolean;*/ - /*int v_integer;*/ - struct icaldurationtype v_duration; - /*int v_utcoffset;*/ - - struct icalperiodtype v_period; - /*struct icalperiodtype v_datetimeperiod;*/ - struct icalgeotype v_geo; - /*time_t v_time;*/ - struct icaltimetype v_time; - /*struct icaltimetype v_date;*/ - /*struct icaltimetype v_datetime;*/ - /*struct icaltimetype v_datetimedate;*/ - - /* struct icalrecurrencetype was once included - directly ( not referenced ) in this union, but it - contributes 2000 bytes to every value, so now it is - a reference*/ - - struct icalrecurrencetype *v_recur; - union icaltriggertype v_trigger; - icalproperty_method v_method; - - } data; -}; - -struct icalvalue_impl* icalvalue_new_impl(icalvalue_kind kind){ - - struct icalvalue_impl* v; - - if ( ( v = (struct icalvalue_impl*) - malloc(sizeof(struct icalvalue_impl))) == 0) { - icalerror_set_errno(ICAL_NEWFAILED_ERROR); - return 0; - } - - strcpy(v->id,"val"); - - v->kind = kind; - v->size = 0; - v->parent = 0; - memset(&(v->data),0,sizeof(v->data)); - - return v; - -} - - - -icalvalue* -icalvalue_new (icalvalue_kind kind) -{ - return (icalvalue*)icalvalue_new_impl(kind); -} - -icalvalue* icalvalue_new_clone(icalvalue* value){ - - struct icalvalue_impl* new; - struct icalvalue_impl* old = (struct icalvalue_impl*)value; - - new = icalvalue_new_impl(old->kind); - - if (new == 0){ - return 0; - } - - - strcpy(new->id, old->id); - new->kind = old->kind; - new->size = old->size; - - switch (new->kind){ - - /* The contents of the attach value may or may not be owned by the - * library. */ - case ICAL_ATTACH_VALUE: - case ICAL_BINARY_VALUE: - { - /* HACK ugh. I don't feel like impleenting this */ - } - - case ICAL_STRING_VALUE: - case ICAL_TEXT_VALUE: - case ICAL_CALADDRESS_VALUE: - case ICAL_URI_VALUE: - { - if (old->data.v_string != 0) { - new->data.v_string=icalmemory_strdup(old->data.v_string); - - if ( new->data.v_string == 0 ) { - return 0; - } - - } - break; - } - case ICAL_RECUR_VALUE: - { - if(old->data.v_recur != 0){ - new->data.v_recur = malloc(sizeof(struct icalrecurrencetype)); - - if(new->data.v_recur == 0){ - return 0; - } - - memcpy( new->data.v_recur, old->data.v_recur, - sizeof(struct icalrecurrencetype)); - } - break; - } - - default: - { - /* all of the other types are stored as values, not - pointers, so we can just copy the whole structure. */ - - new->data = old->data; - } - } - - return new; -} - -char* icalmemory_strdup_and_dequote(char* str) -{ - char* p; - char* out = (char*)malloc(sizeof(char) * strlen(str) +1); - char* pout; - - if (out == 0){ - return 0; - } - - pout = out; - - for (p = str; *p!=0; p++){ - - if( *p == '\\') - { - p++; - switch(*p){ - case 0: - { - break; - *pout = '\0'; - } - case 'n': - { - *pout = '\n'; - break; - } - case 'N': - { - *pout = '\n'; - break; - } - case '\\': - case ',': - case ';': - { - *pout = *p; - break; - } - default: - { - *pout = ' '; - } - } - } else { - *pout = *p; - } - - pout++; - - } - - *pout = '\0'; - - return out; -} - -icalvalue* icalvalue_new_from_string_with_error(icalvalue_kind kind,char* str,icalproperty** error) -{ - - icalvalue *value = 0; - - icalerror_check_arg_rz(str!=0,"str"); - - if (error != 0){ - *error = 0; - } - - switch (kind){ - - case ICAL_ATTACH_VALUE: - { - /* HACK */ - value = 0; - - if (error != 0){ - char temp[TMP_BUF_SIZE]; - sprintf(temp,"ATTACH Values are not implemented"); - *error = icalproperty_vanew_xlicerror( - temp, - icalparameter_new_xlicerrortype( - ICAL_XLICERRORTYPE_VALUEPARSEERROR), - 0); - } - - icalerror_warn("Parsing ATTACH properties is unimplmeneted"); - break; - } - - case ICAL_BINARY_VALUE: - { - /* HACK */ - value = 0; - - if (error != 0){ - char temp[TMP_BUF_SIZE]; - sprintf(temp,"BINARY Values are not implemented"); - *error = icalproperty_vanew_xlicerror( - temp, - icalparameter_new_xlicerrortype( - ICAL_XLICERRORTYPE_VALUEPARSEERROR), - 0); - } - - icalerror_warn("Parsing BINARY values is unimplmeneted"); - break; - } - - case ICAL_BOOLEAN_VALUE: - { - /* HACK */ - value = 0; - - if (error != 0){ - char temp[TMP_BUF_SIZE]; - sprintf(temp,"BOOLEAN Values are not implemented"); - *error = icalproperty_vanew_xlicerror( - temp, - icalparameter_new_xlicerrortype( - ICAL_XLICERRORTYPE_VALUEPARSEERROR), - 0); - } - - icalerror_warn("Parsing BOOLEAN values is unimplmeneted"); - break; - } - - case ICAL_INTEGER_VALUE: - { - value = icalvalue_new_integer(atoi(str)); - break; - } - - case ICAL_FLOAT_VALUE: - { - value = icalvalue_new_float(atof(str)); - break; - } - - case ICAL_UTCOFFSET_VALUE: - { - value = icalparser_parse_value(kind,str,(icalcomponent*)0); - break; - } - - case ICAL_TEXT_VALUE: - { - char* dequoted_str = icalmemory_strdup_and_dequote(str); - value = icalvalue_new_text(dequoted_str); - free(dequoted_str); - break; - } - - - case ICAL_STRING_VALUE: - { - value = icalvalue_new_string(str); - break; - } - - case ICAL_CALADDRESS_VALUE: - { - value = icalvalue_new_caladdress(str); - break; - } - - case ICAL_URI_VALUE: - { - value = icalvalue_new_uri(str); - break; - } - - case ICAL_METHOD_VALUE: - { - icalproperty_method method = icalenum_string_to_method(str); - - if(method == ICAL_METHOD_NONE){ - value = 0; - } else { - value = icalvalue_new_method(method); - } - - break; - - } - case ICAL_GEO_VALUE: - { - value = 0; - /* HACK */ - - if (error != 0){ - char temp[TMP_BUF_SIZE]; - sprintf(temp,"GEO Values are not implemented"); - *error = icalproperty_vanew_xlicerror( - temp, - icalparameter_new_xlicerrortype( - ICAL_XLICERRORTYPE_VALUEPARSEERROR), - 0); - } - - /*icalerror_warn("Parsing GEO properties is unimplmeneted");*/ - - break; - } - - case ICAL_RECUR_VALUE: - case ICAL_DATE_VALUE: - case ICAL_DATETIME_VALUE: - case ICAL_DATETIMEDATE_VALUE: - case ICAL_DATETIMEPERIOD_VALUE: - case ICAL_TIME_VALUE: - case ICAL_DURATION_VALUE: - case ICAL_PERIOD_VALUE: - case ICAL_TRIGGER_VALUE: - { - value = icalparser_parse_value(kind,str,error); - break; - } - - default: - { - - if (error != 0 ){ - char temp[TMP_BUF_SIZE]; - - snprintf(temp,TMP_BUF_SIZE,"Unknown type for \'%s\'",str); - - *error = icalproperty_vanew_xlicerror( - temp, - icalparameter_new_xlicerrortype( - ICAL_XLICERRORTYPE_VALUEPARSEERROR), - 0); - } - - icalerror_warn("icalvalue_new_from_string got an unknown value type"); - value=0; - } - } - - - if (error != 0 && *error == 0 && value == 0){ - char temp[TMP_BUF_SIZE]; - - snprintf(temp,TMP_BUF_SIZE,"Failed to parse value: \'%s\'",str); - - *error = icalproperty_vanew_xlicerror( - temp, - icalparameter_new_xlicerrortype( - ICAL_XLICERRORTYPE_VALUEPARSEERROR), - 0); - } - - - return value; - -} - -icalvalue* icalvalue_new_from_string(icalvalue_kind kind,char* str) -{ - return icalvalue_new_from_string_with_error(kind,str,(icalproperty*)0); -} - - - -void -icalvalue_free (icalvalue* value) -{ - struct icalvalue_impl* v = (struct icalvalue_impl*)value; - - icalerror_check_arg_rv((value != 0),"value"); - -#ifdef ICAL_FREE_ON_LIST_IS_ERROR - icalerror_assert( (v->parent ==0),"This value is still attached to a property"); - -#else - if(v->parent !=0){ - return; - } -#endif - - - switch (v->kind){ - case ICAL_BINARY_VALUE: - case ICAL_ATTACH_VALUE: { - /* HACK ugh. This will be tough to implement */ - } - case ICAL_TEXT_VALUE: - case ICAL_CALADDRESS_VALUE: - case ICAL_URI_VALUE: - { - if (v->data.v_string != 0) { - free(v->data.v_string); - v->data.v_string = 0; - } - break; - } - case ICAL_RECUR_VALUE: - { - if(v->data.v_recur != 0){ - free(v->data.v_recur); - v->data.v_recur = 0; - } - break; - } - - default: - { - /* Nothing to do */ - } - } - - v->kind = ICAL_NO_VALUE; - v->size = 0; - v->parent = 0; - memset(&(v->data),0,sizeof(v->data)); - v->id[0] = 'X'; - free(v); -} - -int -icalvalue_is_valid (icalvalue* value) -{ - /*struct icalvalue_impl* v = (struct icalvalue_impl*)value;*/ - - if(value == 0){ - return 0; - } - - return 1; -} - -char* icalvalue_binary_as_ical_string(icalvalue* value) { - - char* data; - char* str; - icalerror_check_arg_rz( (value!=0),"value"); - data = icalvalue_get_binary(value); - - str = (char*)icalmemory_tmp_buffer(60); - sprintf(str,"icalvalue_binary_as_ical_string is not implemented yet"); - - return str; -} - - -char* icalvalue_int_as_ical_string(icalvalue* value) { - - int data; - char* str = (char*)icalmemory_tmp_buffer(2); - icalerror_check_arg_rz( (value!=0),"value"); - data = icalvalue_get_integer(value); - - sprintf(str,"%d",data); - - return str; -} - -char* icalvalue_utcoffset_as_ical_string(icalvalue* value) -{ - int data,h,m,s; - char sign; - char* str = (char*)icalmemory_tmp_buffer(9); - icalerror_check_arg_rz( (value!=0),"value"); - data = icalvalue_get_utcoffset(value); - - if (abs(data) == data){ - sign = '+'; - } else { - sign = '-'; - } - - h = data/3600; - m = (data - (h*3600))/ 60; - s = (data - (h*3600) - (m*60)); - - sprintf(str,"%c%02d%02d%02d",sign,abs(h),abs(m),abs(s)); - - return str; -} - -char* icalvalue_string_as_ical_string(icalvalue* value) { - - char* data; - char* str = 0; - icalerror_check_arg_rz( (value!=0),"value"); - data = ((struct icalvalue_impl*)value)->data.v_string; - - str = (char*)icalmemory_tmp_buffer(strlen(data)+1); - - strcpy(str,data); - - return str; -} - - -char* icalvalue_recur_as_ical_string(icalvalue* value) -{ - char* str; - char *str_p; - size_t buf_sz = 200; - char temp[20]; - int i,j; - struct icalvalue_impl *impl = (struct icalvalue_impl*)value; - struct icalrecurrencetype *recur = impl->data.v_recur; - - struct { char* str;size_t offset; short limit; } recurmap[] = - { - {";BYSECOND=",offsetof(struct icalrecurrencetype,by_second),60}, - {";BYMINUTE=",offsetof(struct icalrecurrencetype,by_minute),60}, - {";BYHOUR=",offsetof(struct icalrecurrencetype,by_hour),24}, - {";BYDAY=",offsetof(struct icalrecurrencetype,by_day),7}, - {";BYMONTHDAY=",offsetof(struct icalrecurrencetype,by_month_day),31}, - {";BYYEARDAY=",offsetof(struct icalrecurrencetype,by_year_day),366}, - {";BYWEEKNO=",offsetof(struct icalrecurrencetype,by_week_no),52}, - {";BYMONTH=",offsetof(struct icalrecurrencetype,by_month),12}, - {";BYSETPOS=",offsetof(struct icalrecurrencetype,by_set_pos),366}, - {0,0,0}, - }; - - - - icalerror_check_arg_rz((value != 0),"value"); - - if(recur->freq == ICAL_NO_RECURRENCE){ - return 0; - } - - str = (char*)icalmemory_tmp_buffer(buf_sz); - str_p = str; - - icalmemory_append_string(&str,&str_p,&buf_sz,"FREQ="); - icalmemory_append_string(&str,&str_p,&buf_sz, - icalenum_recurrence_to_string(recur->freq)); - - if(recur->until.year != 0){ - - temp[0] = 0; - print_datetime_to_string(temp,&(recur->until)); - - icalmemory_append_string(&str,&str_p,&buf_sz,";UNTIL="); - icalmemory_append_string(&str,&str_p,&buf_sz, temp); - } - - if(recur->count != 0){ - sprintf(temp,"%d",recur->count); - icalmemory_append_string(&str,&str_p,&buf_sz,";COUNT="); - icalmemory_append_string(&str,&str_p,&buf_sz, temp); - } - - if(recur->interval != 0){ - sprintf(temp,"%d",recur->interval); - icalmemory_append_string(&str,&str_p,&buf_sz,";INTERVAL="); - icalmemory_append_string(&str,&str_p,&buf_sz, temp); - } - - for(j =0; recurmap[j].str != 0; j++){ - short* array = (short*)(recurmap[j].offset+ (size_t)recur); - short limit = recurmap[j].limit; - - /* Skip unused arrays */ - if( array[0] != ICAL_RECURRENCE_ARRAY_MAX ) { - - icalmemory_append_string(&str,&str_p,&buf_sz,recurmap[j].str); - - for(i=0; i< limit && array[i] != ICAL_RECURRENCE_ARRAY_MAX; - i++){ - if (j == 3) { /* BYDAY */ - short dow = icalrecurrencetype_day_day_of_week(array[i]); - char *daystr = icalenum_weekday_to_string(dow); - - /* HACK, does not correctly handle the integer value */ - icalmemory_append_string(&str,&str_p,&buf_sz,daystr); - } else { - sprintf(temp,"%d",array[i]); - icalmemory_append_string(&str,&str_p,&buf_sz, temp); - } - - if( (i+1)data.v_string)+1; - - str_p = str = (char*)icalmemory_new_buffer(buf_sz); - - if (str_p == 0){ - return 0; - } - - for(p=((struct icalvalue_impl*)value)->data.v_string; *p!=0; p++){ - - switch(*p){ - case '\n': { - icalmemory_append_string(&str,&str_p,&buf_sz,"\\n"); - line_length+=3; - break; - } - - case '\t': { - icalmemory_append_string(&str,&str_p,&buf_sz,"\\t"); - line_length+=3; - break; - } - case '\r': { - icalmemory_append_string(&str,&str_p,&buf_sz,"\\r"); - line_length+=3; - break; - } - case '\b': { - icalmemory_append_string(&str,&str_p,&buf_sz,"\\b"); - line_length+=3; - break; - } - case '\f': { - icalmemory_append_string(&str,&str_p,&buf_sz,"\\f"); - line_length+=3; - break; - } - - case ';': - case ',':{ - icalmemory_append_char(&str,&str_p,&buf_sz,'\\'); - icalmemory_append_char(&str,&str_p,&buf_sz,*p); - line_length+=3; - break; - } - - case '"':{ - icalmemory_append_char(&str,&str_p,&buf_sz,'\\'); - icalmemory_append_char(&str,&str_p,&buf_sz,*p); - line_length+=3; - break; - } - - default: { - icalmemory_append_char(&str,&str_p,&buf_sz,*p); - line_length++; - } - } - - if (line_length > 65 && *p == ' '){ - icalmemory_append_string(&str,&str_p,&buf_sz,"\n "); - line_length=0; - } - - - if (line_length > 75){ - icalmemory_append_string(&str,&str_p,&buf_sz,"\n "); - line_length=0; - } - - } - - /* Assume the last character is not a '\0' and add one. We could - check *str_p != 0, but that would be an uninitialized memory - read. */ - - - icalmemory_append_char(&str,&str_p,&buf_sz,'\0'); - - rtrn = icalmemory_tmp_copy(str); - - icalmemory_free_buffer(str); - - return rtrn; -} - - -char* icalvalue_attach_as_ical_string(icalvalue* value) { - - struct icalattachtype a; - char * str; - - icalerror_check_arg_rz( (value!=0),"value"); - - a = icalvalue_get_attach(value); - - if (a.binary != 0) { - return icalvalue_binary_as_ical_string(value); - } else if (a.base64 != 0) { - str = (char*)icalmemory_tmp_buffer(strlen(a.base64)+1); - strcpy(str,a.base64); - return str; - } else if (a.url != 0){ - return icalvalue_string_as_ical_string(value); - } else { - icalerrno = ICAL_MALFORMEDDATA_ERROR; - return 0; - } -} - -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* icalvalue_duration_as_ical_string(icalvalue* value) { - - struct icaldurationtype data; - char *buf, *output_line; - size_t buf_size = 256; - char* buf_ptr = 0; - - icalerror_check_arg_rz( (value!=0),"value"); - data = icalvalue_get_duration(value); - - buf = (char*)icalmemory_new_buffer(buf_size); - buf_ptr = buf; - - icalmemory_append_string(&buf, &buf_ptr, &buf_size, "P"); - - - if (data.weeks != 0 ) { - append_duration_segment(&buf, &buf_ptr, &buf_size, "W", data.weeks); - } - - if (data.days != 0 ) { - append_duration_segment(&buf, &buf_ptr, &buf_size, "D", data.days); - } - - if (data.hours != 0 || data.minutes != 0 || data.seconds != 0) { - - icalmemory_append_string(&buf, &buf_ptr, &buf_size, "T"); - - if (data.hours != 0 ) { - append_duration_segment(&buf, &buf_ptr, &buf_size, "H", data.hours); - } - if (data.minutes != 0 ) { - append_duration_segment(&buf, &buf_ptr, &buf_size, "M", data.minutes); - } - if (data.seconds != 0 ) { - append_duration_segment(&buf, &buf_ptr, &buf_size, "S", data.seconds); - } - - } - - output_line = icalmemory_tmp_copy(buf); - icalmemory_free_buffer(buf); - - return output_line; - - -} - -void print_time_to_string(char* str, struct icaltimetype *data) -{ - char temp[20]; - - if (data->is_utc == 1){ - sprintf(temp,"%02d%02d%02dZ",data->hour,data->minute,data->second); - } else { - sprintf(temp,"%02d%02d%02d",data->hour,data->minute,data->second); - } - - strcat(str,temp); -} - - -char* icalvalue_time_as_ical_string(icalvalue* value) { - - struct icaltimetype data; - char* str; - icalerror_check_arg_rz( (value!=0),"value"); - data = icalvalue_get_time(value); - - str = (char*)icalmemory_tmp_buffer(8); - - str[0] = 0; - print_time_to_string(str,&data); - - return str; -} - -void print_date_to_string(char* str, struct icaltimetype *data) -{ - char temp[20]; - - sprintf(temp,"%04d%02d%02d",data->year,data->month,data->day); - - strcat(str,temp); -} - -char* icalvalue_date_as_ical_string(icalvalue* value) { - - struct icaltimetype data; - char* str; - icalerror_check_arg_rz( (value!=0),"value"); - data = icalvalue_get_date(value); - - str = (char*)icalmemory_tmp_buffer(9); - - str[0] = 0; - print_date_to_string(str,&data); - - return str; -} - -void print_datetime_to_string(char* str, struct icaltimetype *data) -{ - print_date_to_string(str,data); - strcat(str,"T"); - print_time_to_string(str,data); - -} - -char* icalvalue_datetime_as_ical_string(icalvalue* value) { - - struct icaltimetype data; - char* str; - icalerror_check_arg_rz( (value!=0),"value"); - data = icalvalue_get_date(value); - - str = (char*)icalmemory_tmp_buffer(20); - - str[0] = 0; - - print_datetime_to_string(str,&data); - - return str; - -} - - -char* icalvalue_datetimedate_as_ical_string(icalvalue* value) { - - struct icaltimetype data; - icalerror_check_arg_rz( (value!=0),"value"); - data = icalvalue_get_datetime(value); - - if (data.is_date == 1){ - return icalvalue_date_as_ical_string(value); - } else { - return icalvalue_datetime_as_ical_string(value); - } -} - - -char* icalvalue_float_as_ical_string(icalvalue* value) { - - float data; - char* str; - icalerror_check_arg_rz( (value!=0),"value"); - data = icalvalue_get_float(value); - - str = (char*)icalmemory_tmp_buffer(15); - - sprintf(str,"%f",data); - - return str; -} - -char* icalvalue_geo_as_ical_string(icalvalue* value) { - - struct icalgeotype data; - char* str; - icalerror_check_arg_rz( (value!=0),"value"); - - data = icalvalue_get_geo(value); - - str = (char*)icalmemory_tmp_buffer(25); - - sprintf(str,"%f;%f",data.lat,data.lon); - - return str; -} - -char* icalvalue_datetimeperiod_as_ical_string(icalvalue* value) { - - struct icalperiodtype data; - char* str; - icalerror_check_arg_rz( (value!=0),"value"); - data = icalvalue_get_datetimeperiod(value); - - str = (char*)icalmemory_tmp_buffer(60); - - if( data.end.second == -1){ - /* This is a DATE-TIME value, since there is no end value */ - icalvalue *v= icalvalue_new_datetime(data.start); - - strcpy(str,icalvalue_datetime_as_ical_string(v)); - - free(v); - - } else { - icalvalue *v1 = icalvalue_new_datetime(data.start); - icalvalue *v2 = icalvalue_new_datetime(data.end); - - sprintf(str,"%s/%s", - icalvalue_datetime_as_ical_string(v1), - icalvalue_datetime_as_ical_string(v2) - ); - - free(v1); - free(v2); - - } - - return str; -} - -char* icalvalue_period_as_ical_string(icalvalue* value) { - - struct icalperiodtype data; - char* str; - icalvalue *s,*e; - - icalerror_check_arg_rz( (value!=0),"value"); - data = icalvalue_get_period(value); - - str = (char*)icalmemory_tmp_buffer(60); - - s = icalvalue_new_datetime(data.start); - - if (data.end.second != -1){ - /* use the end date */ - e = icalvalue_new_datetime(data.end); - - sprintf(str,"%s/%s", - icalvalue_datetime_as_ical_string(s), - icalvalue_datetime_as_ical_string(e) - ); - - - } else { - /* use the duration */ - e = icalvalue_new_duration(data.duration); - - sprintf(str,"%s/%s", - icalvalue_datetime_as_ical_string(s), - icalvalue_duration_as_ical_string(e) - ); - - } - - icalvalue_free(e); - icalvalue_free(s); - return str; -} - -char* icalvalue_trigger_as_ical_string(icalvalue* value) { - - union icaltriggertype data; - char* str; - icalerror_check_arg_rz( (value!=0),"value"); - data = icalvalue_get_trigger(value); - - str = (char*)icalmemory_tmp_buffer(60); - sprintf(str,"icalvalue_trigger_as_ical_string is not implemented yet"); - - return str; -} - -char* -icalvalue_as_ical_string (icalvalue* value) -{ - struct icalvalue_impl* v = (struct icalvalue_impl*)value; - - v=v; - - if(value == 0){ - return 0; - } - - switch (v->kind){ - - case ICAL_ATTACH_VALUE: - return icalvalue_attach_as_ical_string(value); - - case ICAL_BINARY_VALUE: - return icalvalue_binary_as_ical_string(value); - - case ICAL_BOOLEAN_VALUE: - case ICAL_INTEGER_VALUE: - return icalvalue_int_as_ical_string(value); - - case ICAL_UTCOFFSET_VALUE: - return icalvalue_utcoffset_as_ical_string(value); - - case ICAL_TEXT_VALUE: - return icalvalue_text_as_ical_string(value); - - case ICAL_STRING_VALUE: - case ICAL_URI_VALUE: - case ICAL_CALADDRESS_VALUE: - return icalvalue_string_as_ical_string(value); - - case ICAL_DATE_VALUE: - return icalvalue_date_as_ical_string(value); - case ICAL_DATETIME_VALUE: - return icalvalue_datetime_as_ical_string(value); - case ICAL_DATETIMEDATE_VALUE: - return icalvalue_datetimedate_as_ical_string(value); - case ICAL_DURATION_VALUE: - return icalvalue_duration_as_ical_string(value); - case ICAL_TIME_VALUE: - return icalvalue_time_as_ical_string(value); - - case ICAL_PERIOD_VALUE: - return icalvalue_period_as_ical_string(value); - case ICAL_DATETIMEPERIOD_VALUE: - return icalvalue_datetimeperiod_as_ical_string(value); - - case ICAL_FLOAT_VALUE: - return icalvalue_float_as_ical_string(value); - - case ICAL_GEO_VALUE: - return icalvalue_geo_as_ical_string(value); - - case ICAL_RECUR_VALUE: - return icalvalue_recur_as_ical_string(value); - - case ICAL_TRIGGER_VALUE: - return icalvalue_trigger_as_ical_string(value); - - case ICAL_METHOD_VALUE: - return icalenum_method_to_string(v->data.v_method); - - case ICAL_NO_VALUE: - default: - { - return 0; - } - } -} - - -icalvalue_kind -icalvalue_isa (icalvalue* value) -{ - struct icalvalue_impl* v = (struct icalvalue_impl*)value; - - if(value == 0){ - return ICAL_NO_VALUE; - } - - return v->kind; -} - - -int -icalvalue_isa_value (void* value) -{ - struct icalvalue_impl *impl = (struct icalvalue_impl *)value; - - icalerror_check_arg_rz( (value!=0), "value"); - - if (strcmp(impl->id,"val") == 0) { - return 1; - } else { - return 0; - } -} - - -icalparameter_xliccomparetype -icalvalue_compare(icalvalue* a, icalvalue *b) -{ - struct icalvalue_impl *impla = (struct icalvalue_impl *)a; - struct icalvalue_impl *implb = (struct icalvalue_impl *)b; - - icalerror_check_arg_rz( (a!=0), "a"); - icalerror_check_arg_rz( (b!=0), "b"); - - /* Not the same type; they can only be unequal */ - if (icalvalue_isa(a) != icalvalue_isa(b)){ - return ICAL_XLICCOMPARETYPE_NOTEQUAL; - } - - switch (icalvalue_isa(a)){ - - case ICAL_ATTACH_VALUE: - case ICAL_BINARY_VALUE: - - case ICAL_BOOLEAN_VALUE: - { - if (icalvalue_get_boolean(a) == icalvalue_get_boolean(b)){ - return ICAL_XLICCOMPARETYPE_EQUAL; - } else { - return ICAL_XLICCOMPARETYPE_NOTEQUAL; - } - } - - case ICAL_FLOAT_VALUE: - { - if (impla->data.v_float > implb->data.v_float){ - return ICAL_XLICCOMPARETYPE_GREATER; - } else if (impla->data.v_float < implb->data.v_float){ - return ICAL_XLICCOMPARETYPE_LESS; - } else { - return ICAL_XLICCOMPARETYPE_EQUAL; - } - } - - case ICAL_INTEGER_VALUE: - case ICAL_UTCOFFSET_VALUE: - { - if (impla->data.v_int > implb->data.v_int){ - return ICAL_XLICCOMPARETYPE_GREATER; - } else if (impla->data.v_int < implb->data.v_int){ - return ICAL_XLICCOMPARETYPE_LESS; - } else { - return ICAL_XLICCOMPARETYPE_EQUAL; - } - } - - case ICAL_TEXT_VALUE: - case ICAL_URI_VALUE: - case ICAL_CALADDRESS_VALUE: - case ICAL_TRIGGER_VALUE: - case ICAL_DATE_VALUE: - case ICAL_DATETIME_VALUE: - case ICAL_DATETIMEDATE_VALUE: - case ICAL_DURATION_VALUE: /* HACK. Not correct for DURATION */ - case ICAL_TIME_VALUE: - case ICAL_DATETIMEPERIOD_VALUE: - { - int r; - - r = strcmp(icalvalue_as_ical_string(a), - icalvalue_as_ical_string(b)); - - if (r > 0) { - return ICAL_XLICCOMPARETYPE_GREATER; - } else if (r < 0){ - return ICAL_XLICCOMPARETYPE_LESS; - } else { - return 0; - } - - - } - - case ICAL_METHOD_VALUE: - { - if (icalvalue_get_method(a) == icalvalue_get_method(b)){ - return ICAL_XLICCOMPARETYPE_EQUAL; - } else { - return ICAL_XLICCOMPARETYPE_NOTEQUAL; - } - - } - case ICAL_PERIOD_VALUE: - case ICAL_GEO_VALUE: - case ICAL_RECUR_VALUE: - case ICAL_NO_VALUE: - default: - { - icalerror_warn("Comparison not implemented for value type"); - return ICAL_XLICCOMPARETYPE_REGEX+1; /* HACK */ - } - } - -} - -void icalvalue_set_parent(icalvalue* value, - icalproperty* property) -{ - struct icalvalue_impl* v = (struct icalvalue_impl*)value; - - v->parent = property; - -} - -icalproperty* icalvalue_get_parent(icalvalue* value) -{ - struct icalvalue_impl* v = (struct icalvalue_impl*)value; - - - return v->parent; -} - - - -/* Recur is a special case, so it is not auto generated. Well, - actually, it is auto-generated, but you will have to manually - remove the auto-generated version after each generation. */ -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_ALLOCATION_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); -} - - - - -/* The remaining interfaces are 'new', 'set' and 'get' for each of the value - types */ - - -/* Everything below this line is machine generated. Do not edit. */ - -icalvalue* -icalvalue_new_attach (struct icalattachtype v) -{ - struct icalvalue_impl* impl = icalvalue_new_impl(ICAL_ATTACH_VALUE); - - - icalvalue_set_attach((icalvalue*)impl,v); - - return (icalvalue*)impl; -} - -void -icalvalue_set_attach(icalvalue* value, struct icalattachtype v) -{ - struct icalvalue_impl* impl; - - icalerror_check_arg_rv( (value!=0),"value"); - - icalerror_check_value_type(value, ICAL_ATTACH_VALUE); - - impl = (struct icalvalue_impl*)value; - - impl->data.v_attach = v; -} - -struct icalattachtype -icalvalue_get_attach(icalvalue* value) -{ - icalerror_check_arg( (value!=0),"value"); - icalerror_check_value_type(value, ICAL_ATTACH_VALUE); - - return ((struct icalvalue_impl*)value)->data.v_attach; -} - - -icalvalue* -icalvalue_new_binary (char* v) -{ - struct icalvalue_impl* impl = icalvalue_new_impl(ICAL_BINARY_VALUE); - - icalerror_check_arg_rz( (v!=0),"v"); - - icalvalue_set_binary((icalvalue*)impl,v); - - return (icalvalue*)impl; -} - -void -icalvalue_set_binary(icalvalue* value, char* v) -{ - struct icalvalue_impl* impl; - - icalerror_check_arg_rv( (value!=0),"value"); - icalerror_check_arg_rv( (v!=0),"v"); - - icalerror_check_value_type(value, ICAL_BINARY_VALUE); - - impl = (struct icalvalue_impl*)value; - if(impl->data.v_string!=0) {free(impl->data.v_string);} - - impl->data.v_string = strdup(v); - - if (impl->data.v_string == 0){ - errno = ENOMEM; - } - -} - -char* -icalvalue_get_binary(icalvalue* value) -{ - icalerror_check_arg( (value!=0),"value"); - icalerror_check_value_type(value, ICAL_BINARY_VALUE); - - return ((struct icalvalue_impl*)value)->data.v_string; -} - - -icalvalue* -icalvalue_new_boolean (int v) -{ - struct icalvalue_impl* impl = icalvalue_new_impl(ICAL_BOOLEAN_VALUE); - - - icalvalue_set_boolean((icalvalue*)impl,v); - - return (icalvalue*)impl; -} - -void -icalvalue_set_boolean(icalvalue* value, int v) -{ - struct icalvalue_impl* impl; - - icalerror_check_arg_rv( (value!=0),"value"); - - icalerror_check_value_type(value, ICAL_BOOLEAN_VALUE); - - impl = (struct icalvalue_impl*)value; - - impl->data.v_int = v; -} - -int -icalvalue_get_boolean(icalvalue* value) -{ - icalerror_check_arg( (value!=0),"value"); - icalerror_check_value_type(value, ICAL_BOOLEAN_VALUE); - - return ((struct icalvalue_impl*)value)->data.v_int; -} - - -icalvalue* -icalvalue_new_caladdress (char* v) -{ - struct icalvalue_impl* impl = icalvalue_new_impl(ICAL_CALADDRESS_VALUE); - - icalerror_check_arg_rz( (v!=0),"v"); - - icalvalue_set_caladdress((icalvalue*)impl,v); - - return (icalvalue*)impl; -} - -void -icalvalue_set_caladdress(icalvalue* value, char* v) -{ - struct icalvalue_impl* impl; - - icalerror_check_arg_rv( (value!=0),"value"); - icalerror_check_arg_rv( (v!=0),"v"); - - icalerror_check_value_type(value, ICAL_CALADDRESS_VALUE); - - impl = (struct icalvalue_impl*)value; - if(impl->data.v_string!=0) {free(impl->data.v_string);} - - impl->data.v_string = strdup(v); - - if (impl->data.v_string == 0){ - errno = ENOMEM; - } - -} - -char* -icalvalue_get_caladdress(icalvalue* value) -{ - icalerror_check_arg( (value!=0),"value"); - icalerror_check_value_type(value, ICAL_CALADDRESS_VALUE); - - return ((struct icalvalue_impl*)value)->data.v_string; -} - - -icalvalue* -icalvalue_new_date (struct icaltimetype v) -{ - struct icalvalue_impl* impl = icalvalue_new_impl(ICAL_DATE_VALUE); - - - icalvalue_set_date((icalvalue*)impl,v); - - return (icalvalue*)impl; -} - -void -icalvalue_set_date(icalvalue* value, struct icaltimetype v) -{ - struct icalvalue_impl* impl; - - icalerror_check_arg_rv( (value!=0),"value"); - - icalerror_check_value_type(value, ICAL_DATE_VALUE); - - impl = (struct icalvalue_impl*)value; - - impl->data.v_time = v; -} - -struct icaltimetype -icalvalue_get_date(icalvalue* value) -{ - icalerror_check_arg( (value!=0),"value"); - icalerror_check_value_type(value, ICAL_DATE_VALUE); - - return ((struct icalvalue_impl*)value)->data.v_time; -} - - -icalvalue* -icalvalue_new_datetime (struct icaltimetype v) -{ - struct icalvalue_impl* impl = icalvalue_new_impl(ICAL_DATETIME_VALUE); - - - icalvalue_set_datetime((icalvalue*)impl,v); - - return (icalvalue*)impl; -} - -void -icalvalue_set_datetime(icalvalue* value, struct icaltimetype v) -{ - struct icalvalue_impl* impl; - - icalerror_check_arg_rv( (value!=0),"value"); - - icalerror_check_value_type(value, ICAL_DATETIME_VALUE); - - impl = (struct icalvalue_impl*)value; - - impl->data.v_time = v; -} - -struct icaltimetype -icalvalue_get_datetime(icalvalue* value) -{ - icalerror_check_arg( (value!=0),"value"); - icalerror_check_value_type(value, ICAL_DATETIME_VALUE); - - return ((struct icalvalue_impl*)value)->data.v_time; -} - - -icalvalue* -icalvalue_new_datetimedate (struct icaltimetype v) -{ - struct icalvalue_impl* impl = icalvalue_new_impl(ICAL_DATETIMEDATE_VALUE); - - - icalvalue_set_datetimedate((icalvalue*)impl,v); - - return (icalvalue*)impl; -} - -void -icalvalue_set_datetimedate(icalvalue* value, struct icaltimetype v) -{ - struct icalvalue_impl* impl; - - icalerror_check_arg_rv( (value!=0),"value"); - - icalerror_check_value_type(value, ICAL_DATETIMEDATE_VALUE); - - impl = (struct icalvalue_impl*)value; - - impl->data.v_time = v; -} - -struct icaltimetype -icalvalue_get_datetimedate(icalvalue* value) -{ - icalerror_check_arg( (value!=0),"value"); - icalerror_check_value_type(value, ICAL_DATETIMEDATE_VALUE); - - return ((struct icalvalue_impl*)value)->data.v_time; -} - - -icalvalue* -icalvalue_new_datetimeperiod (struct icalperiodtype 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 icalperiodtype v) -{ - struct icalvalue_impl* impl; - - icalerror_check_arg_rv( (value!=0),"value"); - - icalerror_check_value_type(value, ICAL_DATETIMEPERIOD_VALUE); - - impl = (struct icalvalue_impl*)value; - - impl->data.v_period = v; -} - -struct icalperiodtype -icalvalue_get_datetimeperiod(icalvalue* value) -{ - icalerror_check_arg( (value!=0),"value"); - icalerror_check_value_type(value, ICAL_DATETIMEPERIOD_VALUE); - - return ((struct icalvalue_impl*)value)->data.v_period; -} - - -icalvalue* -icalvalue_new_duration (struct icaldurationtype v) -{ - struct icalvalue_impl* impl = icalvalue_new_impl(ICAL_DURATION_VALUE); - - - icalvalue_set_duration((icalvalue*)impl,v); - - return (icalvalue*)impl; -} - -void -icalvalue_set_duration(icalvalue* value, struct icaldurationtype v) -{ - struct icalvalue_impl* impl; - - icalerror_check_arg_rv( (value!=0),"value"); - - icalerror_check_value_type(value, ICAL_DURATION_VALUE); - - impl = (struct icalvalue_impl*)value; - - impl->data.v_duration = v; -} - -struct icaldurationtype -icalvalue_get_duration(icalvalue* value) -{ - icalerror_check_arg( (value!=0),"value"); - icalerror_check_value_type(value, ICAL_DURATION_VALUE); - - return ((struct icalvalue_impl*)value)->data.v_duration; -} - - -icalvalue* -icalvalue_new_float (float v) -{ - struct icalvalue_impl* impl = icalvalue_new_impl(ICAL_FLOAT_VALUE); - - - icalvalue_set_float((icalvalue*)impl,v); - - return (icalvalue*)impl; -} - -void -icalvalue_set_float(icalvalue* value, float v) -{ - struct icalvalue_impl* impl; - - icalerror_check_arg_rv( (value!=0),"value"); - - icalerror_check_value_type(value, ICAL_FLOAT_VALUE); - - impl = (struct icalvalue_impl*)value; - - impl->data.v_float = v; -} - -float -icalvalue_get_float(icalvalue* value) -{ - icalerror_check_arg( (value!=0),"value"); - icalerror_check_value_type(value, ICAL_FLOAT_VALUE); - - return ((struct icalvalue_impl*)value)->data.v_float; -} - - -icalvalue* -icalvalue_new_geo (struct icalgeotype v) -{ - struct icalvalue_impl* impl = icalvalue_new_impl(ICAL_GEO_VALUE); - - - icalvalue_set_geo((icalvalue*)impl,v); - - return (icalvalue*)impl; -} - -void -icalvalue_set_geo(icalvalue* value, struct icalgeotype v) -{ - struct icalvalue_impl* impl; - - icalerror_check_arg_rv( (value!=0),"value"); - - icalerror_check_value_type(value, ICAL_GEO_VALUE); - - impl = (struct icalvalue_impl*)value; - - impl->data.v_geo = v; -} - -struct icalgeotype -icalvalue_get_geo(icalvalue* value) -{ - icalerror_check_arg( (value!=0),"value"); - icalerror_check_value_type(value, ICAL_GEO_VALUE); - - return ((struct icalvalue_impl*)value)->data.v_geo; -} - - -icalvalue* -icalvalue_new_integer (int v) -{ - struct icalvalue_impl* impl = icalvalue_new_impl(ICAL_INTEGER_VALUE); - - - icalvalue_set_integer((icalvalue*)impl,v); - - return (icalvalue*)impl; -} - -void -icalvalue_set_integer(icalvalue* value, int v) -{ - struct icalvalue_impl* impl; - - icalerror_check_arg_rv( (value!=0),"value"); - - icalerror_check_value_type(value, ICAL_INTEGER_VALUE); - - impl = (struct icalvalue_impl*)value; - - impl->data.v_int = v; -} - -int -icalvalue_get_integer(icalvalue* value) -{ - icalerror_check_arg( (value!=0),"value"); - icalerror_check_value_type(value, ICAL_INTEGER_VALUE); - - return ((struct icalvalue_impl*)value)->data.v_int; -} - - -icalvalue* -icalvalue_new_method (icalproperty_method v) -{ - struct icalvalue_impl* impl = icalvalue_new_impl(ICAL_METHOD_VALUE); - - - icalvalue_set_method((icalvalue*)impl,v); - - return (icalvalue*)impl; -} - -void -icalvalue_set_method(icalvalue* value, icalproperty_method v) -{ - struct icalvalue_impl* impl; - - icalerror_check_arg_rv( (value!=0),"value"); - - icalerror_check_value_type(value, ICAL_METHOD_VALUE); - - impl = (struct icalvalue_impl*)value; - - impl->data.v_method = v; -} - -icalproperty_method -icalvalue_get_method(icalvalue* value) -{ - icalerror_check_arg( (value!=0),"value"); - icalerror_check_value_type(value, ICAL_METHOD_VALUE); - - return ((struct icalvalue_impl*)value)->data.v_method; -} - - -icalvalue* -icalvalue_new_period (struct icalperiodtype v) -{ - struct icalvalue_impl* impl = icalvalue_new_impl(ICAL_PERIOD_VALUE); - - - icalvalue_set_period((icalvalue*)impl,v); - - return (icalvalue*)impl; -} - -void -icalvalue_set_period(icalvalue* value, struct icalperiodtype v) -{ - struct icalvalue_impl* impl; - - icalerror_check_arg_rv( (value!=0),"value"); - - icalerror_check_value_type(value, ICAL_PERIOD_VALUE); - - impl = (struct icalvalue_impl*)value; - - impl->data.v_period = v; -} - -struct icalperiodtype -icalvalue_get_period(icalvalue* value) -{ - icalerror_check_arg( (value!=0),"value"); - icalerror_check_value_type(value, ICAL_PERIOD_VALUE); - - return ((struct icalvalue_impl*)value)->data.v_period; -} - -icalvalue* -icalvalue_new_string (char* v) -{ - struct icalvalue_impl* impl = icalvalue_new_impl(ICAL_STRING_VALUE); - - icalerror_check_arg_rz( (v!=0),"v"); - - icalvalue_set_string((icalvalue*)impl,v); - - return (icalvalue*)impl; -} - -void -icalvalue_set_string(icalvalue* value, char* v) -{ - struct icalvalue_impl* impl; - - icalerror_check_arg_rv( (value!=0),"value"); - icalerror_check_arg_rv( (v!=0),"v"); - - icalerror_check_value_type(value, ICAL_STRING_VALUE); - - impl = (struct icalvalue_impl*)value; - if(impl->data.v_string!=0) {free(impl->data.v_string);} - - impl->data.v_string = strdup(v); - - if (impl->data.v_string == 0){ - errno = ENOMEM; - } - -} - -char* -icalvalue_get_string(icalvalue* value) -{ - icalerror_check_arg( (value!=0),"value"); - icalerror_check_value_type(value, ICAL_STRING_VALUE); - - return ((struct icalvalue_impl*)value)->data.v_string; -} - - -icalvalue* -icalvalue_new_text (char* v) -{ - struct icalvalue_impl* impl = icalvalue_new_impl(ICAL_TEXT_VALUE); - - icalerror_check_arg_rz( (v!=0),"v"); - - icalvalue_set_text((icalvalue*)impl,v); - - return (icalvalue*)impl; -} - -void -icalvalue_set_text(icalvalue* value, char* v) -{ - struct icalvalue_impl* impl; - - icalerror_check_arg_rv( (value!=0),"value"); - icalerror_check_arg_rv( (v!=0),"v"); - - icalerror_check_value_type(value, ICAL_TEXT_VALUE); - - impl = (struct icalvalue_impl*)value; - if(impl->data.v_string!=0) {free(impl->data.v_string);} - - impl->data.v_string = strdup(v); - - if (impl->data.v_string == 0){ - errno = ENOMEM; - } - -} - -char* -icalvalue_get_text(icalvalue* value) -{ - icalerror_check_arg( (value!=0),"value"); - icalerror_check_value_type(value, ICAL_TEXT_VALUE); - - return ((struct icalvalue_impl*)value)->data.v_string; -} - - -icalvalue* -icalvalue_new_time (struct icaltimetype v) -{ - struct icalvalue_impl* impl = icalvalue_new_impl(ICAL_TIME_VALUE); - - - icalvalue_set_time((icalvalue*)impl,v); - - return (icalvalue*)impl; -} - -void -icalvalue_set_time(icalvalue* value, struct icaltimetype v) -{ - struct icalvalue_impl* impl; - - icalerror_check_arg_rv( (value!=0),"value"); - - icalerror_check_value_type(value, ICAL_TIME_VALUE); - - impl = (struct icalvalue_impl*)value; - - impl->data.v_time = v; -} - -struct icaltimetype -icalvalue_get_time(icalvalue* value) -{ - icalerror_check_arg( (value!=0),"value"); - icalerror_check_value_type(value, ICAL_TIME_VALUE); - - return ((struct icalvalue_impl*)value)->data.v_time; -} - - -icalvalue* -icalvalue_new_trigger (union 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, union icaltriggertype v) -{ - struct icalvalue_impl* impl; - - icalerror_check_arg_rv( (value!=0),"value"); - - icalerror_check_value_type(value, ICAL_TRIGGER_VALUE); - - impl = (struct icalvalue_impl*)value; - - impl->data.v_trigger = v; -} - -union icaltriggertype -icalvalue_get_trigger(icalvalue* value) -{ - icalerror_check_arg( (value!=0),"value"); - icalerror_check_value_type(value, ICAL_TRIGGER_VALUE); - - return ((struct icalvalue_impl*)value)->data.v_trigger; -} - - -icalvalue* -icalvalue_new_uri (char* v) -{ - struct icalvalue_impl* impl = icalvalue_new_impl(ICAL_URI_VALUE); - - icalerror_check_arg_rz( (v!=0),"v"); - - icalvalue_set_uri((icalvalue*)impl,v); - - return (icalvalue*)impl; -} - -void -icalvalue_set_uri(icalvalue* value, char* v) -{ - struct icalvalue_impl* impl; - - icalerror_check_arg_rv( (value!=0),"value"); - icalerror_check_arg_rv( (v!=0),"v"); - - icalerror_check_value_type(value, ICAL_URI_VALUE); - - impl = (struct icalvalue_impl*)value; - if(impl->data.v_string!=0) {free(impl->data.v_string);} - - impl->data.v_string = strdup(v); - - if (impl->data.v_string == 0){ - errno = ENOMEM; - } - -} - -char* -icalvalue_get_uri(icalvalue* value) -{ - icalerror_check_arg( (value!=0),"value"); - icalerror_check_value_type(value, ICAL_URI_VALUE); - - return ((struct icalvalue_impl*)value)->data.v_string; -} - - -icalvalue* -icalvalue_new_utcoffset (int v) -{ - struct icalvalue_impl* impl = icalvalue_new_impl(ICAL_UTCOFFSET_VALUE); - - - icalvalue_set_utcoffset((icalvalue*)impl,v); - - return (icalvalue*)impl; -} - -void -icalvalue_set_utcoffset(icalvalue* value, int v) -{ - struct icalvalue_impl* impl; - - icalerror_check_arg_rv( (value!=0),"value"); - - icalerror_check_value_type(value, ICAL_UTCOFFSET_VALUE); - - impl = (struct icalvalue_impl*)value; - - impl->data.v_int = v; -} - -int -icalvalue_get_utcoffset(icalvalue* value) -{ - icalerror_check_arg( (value!=0),"value"); - icalerror_check_value_type(value, ICAL_UTCOFFSET_VALUE); - - return ((struct icalvalue_impl*)value)->data.v_int; -} - - -icalvalue* -icalvalue_new_query (char* v) -{ - struct icalvalue_impl* impl = icalvalue_new_impl(ICAL_QUERY_VALUE); - - icalerror_check_arg_rz( (v!=0),"v"); - - icalvalue_set_query((icalvalue*)impl,v); - - return (icalvalue*)impl; -} - -void -icalvalue_set_query(icalvalue* value, char* v) -{ - struct icalvalue_impl* impl; - - icalerror_check_arg_rv( (value!=0),"value"); - icalerror_check_arg_rv( (v!=0),"v"); - - icalerror_check_value_type(value, ICAL_QUERY_VALUE); - - impl = (struct icalvalue_impl*)value; - if(impl->data.v_string!=0) {free(impl->data.v_string);} - - impl->data.v_string = strdup(v); - - if (impl->data.v_string == 0){ - errno = ENOMEM; - } - -} - -char* -icalvalue_get_query(icalvalue* value) -{ - icalerror_check_arg( (value!=0),"value"); - icalerror_check_value_type(value, ICAL_QUERY_VALUE); - - return ((struct icalvalue_impl*)value)->data.v_string; -} - diff --git a/libical/src/libical/icalvalue.h b/libical/src/libical/icalvalue.h deleted file mode 100644 index 18c15abaf4..0000000000 --- a/libical/src/libical/icalvalue.h +++ /dev/null @@ -1,168 +0,0 @@ -/* -*- 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 ICALVALUE_H -#define ICALVALUE_H - -#include -#include "icalenums.h" -#include "icaltypes.h" - -typedef void icalvalue; - -icalvalue* icalvalue_new(icalvalue_kind kind); - -icalvalue* icalvalue_new_clone(icalvalue* value); - -icalvalue* icalvalue_new_from_string(icalvalue_kind kind, char* str); - -void icalvalue_free(icalvalue* value); - -int icalvalue_is_valid(icalvalue* value); - -char* icalvalue_as_ical_string(icalvalue* value); - -icalvalue_kind icalvalue_isa(icalvalue* value); - -int icalvalue_isa_value(void*); - -icalparameter_xliccomparetype -icalvalue_compare(icalvalue* a, icalvalue *b); - -/* Everything below this line is machine generated. Do not edit. */ -/* ATTACH # Non-std */ -icalvalue* icalvalue_new_attach(struct icalattachtype v); -struct icalattachtype icalvalue_get_attach(icalvalue* value); -void icalvalue_set_attach(icalvalue* value, struct icalattachtype v); - -/* BINARY */ -icalvalue* icalvalue_new_binary(char* v); -char* icalvalue_get_binary(icalvalue* value); -void icalvalue_set_binary(icalvalue* value, char* v); - -/* BOOLEAN */ -icalvalue* icalvalue_new_boolean(int v); -int icalvalue_get_boolean(icalvalue* value); -void icalvalue_set_boolean(icalvalue* value, int v); - -/* CAL-ADDRESS */ -icalvalue* icalvalue_new_caladdress(char* v); -char* icalvalue_get_caladdress(icalvalue* value); -void icalvalue_set_caladdress(icalvalue* value, char* v); - -/* DATE */ -icalvalue* icalvalue_new_date(struct icaltimetype v); -struct icaltimetype icalvalue_get_date(icalvalue* value); -void icalvalue_set_date(icalvalue* value, struct icaltimetype v); - -/* DATE-TIME */ -icalvalue* icalvalue_new_datetime(struct icaltimetype v); -struct icaltimetype icalvalue_get_datetime(icalvalue* value); -void icalvalue_set_datetime(icalvalue* value, struct icaltimetype v); - -/* DATE-TIME-DATE # Non-std */ -icalvalue* icalvalue_new_datetimedate(struct icaltimetype v); -struct icaltimetype icalvalue_get_datetimedate(icalvalue* value); -void icalvalue_set_datetimedate(icalvalue* value, struct icaltimetype v); - -/* DATE-TIME-PERIOD # Non-std */ -icalvalue* icalvalue_new_datetimeperiod(struct icalperiodtype v); -struct icalperiodtype icalvalue_get_datetimeperiod(icalvalue* value); -void icalvalue_set_datetimeperiod(icalvalue* value, struct icalperiodtype v); - -/* DURATION */ -icalvalue* icalvalue_new_duration(struct icaldurationtype v); -struct icaldurationtype icalvalue_get_duration(icalvalue* value); -void icalvalue_set_duration(icalvalue* value, struct icaldurationtype v); - -/* FLOAT */ -icalvalue* icalvalue_new_float(float v); -float icalvalue_get_float(icalvalue* value); -void icalvalue_set_float(icalvalue* value, float v); - -/* GEO # Non-std */ -icalvalue* icalvalue_new_geo(struct icalgeotype v); -struct icalgeotype icalvalue_get_geo(icalvalue* value); -void icalvalue_set_geo(icalvalue* value, struct icalgeotype v); - -/* INTEGER */ -icalvalue* icalvalue_new_integer(int v); -int icalvalue_get_integer(icalvalue* value); -void icalvalue_set_integer(icalvalue* value, int v); - -/* METHOD # Non-std */ -icalvalue* icalvalue_new_method(icalproperty_method v); -icalproperty_method icalvalue_get_method(icalvalue* value); -void icalvalue_set_method(icalvalue* value, icalproperty_method v); - -/* PERIOD */ -icalvalue* icalvalue_new_period(struct icalperiodtype v); -struct icalperiodtype icalvalue_get_period(icalvalue* value); -void icalvalue_set_period(icalvalue* value, struct icalperiodtype v); - -/* RECUR */ -icalvalue* icalvalue_new_recur(struct icalrecurrencetype v); -struct icalrecurrencetype icalvalue_get_recur(icalvalue* value); -void icalvalue_set_recur(icalvalue* value, struct icalrecurrencetype v); - -/* STRING # Non-std */ -icalvalue* icalvalue_new_string(char* v); -char* icalvalue_get_string(icalvalue* value); -void icalvalue_set_string(icalvalue* value, char* v); - -/* TEXT */ -icalvalue* icalvalue_new_text(char* v); -char* icalvalue_get_text(icalvalue* value); -void icalvalue_set_text(icalvalue* value, char* v); - -/* TIME */ -icalvalue* icalvalue_new_time(struct icaltimetype v); -struct icaltimetype icalvalue_get_time(icalvalue* value); -void icalvalue_set_time(icalvalue* value, struct icaltimetype v); - -/* TRIGGER # Non-std */ -icalvalue* icalvalue_new_trigger(union icaltriggertype v); -union icaltriggertype icalvalue_get_trigger(icalvalue* value); -void icalvalue_set_trigger(icalvalue* value, union icaltriggertype v); - -/* URI */ -icalvalue* icalvalue_new_uri(char* v); -char* icalvalue_get_uri(icalvalue* value); -void icalvalue_set_uri(icalvalue* value, char* v); - -/* UTC-OFFSET */ -icalvalue* icalvalue_new_utcoffset(int v); -int icalvalue_get_utcoffset(icalvalue* value); -void icalvalue_set_utcoffset(icalvalue* value, int v); - -/* QUERY */ -icalvalue* icalvalue_new_query(char* v); -char* icalvalue_get_query(icalvalue* value); -void icalvalue_set_query(icalvalue* value, char* v); - -#endif ICALVALUE_H diff --git a/libical/src/libical/icalversion.h.in b/libical/src/libical/icalversion.h.in deleted file mode 100644 index aaeeed6666..0000000000 --- a/libical/src/libical/icalversion.h.in +++ /dev/null @@ -1,3 +0,0 @@ - -#define ICAL_PACKAGE "@PACKAGE@" -#define ICAL_VERSION "@VERSION@" diff --git a/libical/src/libical/icalyacc.c b/libical/src/libical/icalyacc.c deleted file mode 100644 index 9c8ba8b6fb..0000000000 --- a/libical/src/libical/icalyacc.c +++ /dev/null @@ -1,1727 +0,0 @@ - -/* A Bison parser, made from icalyacc.y - by GNU Bison version 1.28 */ - -#define YYBISON 1 /* Identify Bison output. */ - -#define DIGITS 257 -#define INTNUMBER 258 -#define FLOATNUMBER 259 -#define STRING 260 -#define EOL 261 -#define EQUALS 262 -#define CHARACTER 263 -#define COLON 264 -#define COMMA 265 -#define SEMICOLON 266 -#define TIMESEPERATOR 267 -#define TRUE 268 -#define FALSE 269 -#define FREQ 270 -#define BYDAY 271 -#define BYHOUR 272 -#define BYMINUTE 273 -#define BYMONTH 274 -#define BYMONTHDAY 275 -#define BYSECOND 276 -#define BYSETPOS 277 -#define BYWEEKNO 278 -#define BYYEARDAY 279 -#define DAILY 280 -#define MINUTELY 281 -#define MONTHLY 282 -#define SECONDLY 283 -#define WEEKLY 284 -#define HOURLY 285 -#define YEARLY 286 -#define INTERVAL 287 -#define COUNT 288 -#define UNTIL 289 -#define WKST 290 -#define MO 291 -#define SA 292 -#define SU 293 -#define TU 294 -#define WE 295 -#define TH 296 -#define FR 297 -#define BIT8 298 -#define ACCEPTED 299 -#define ADD 300 -#define AUDIO 301 -#define BASE64 302 -#define BINARY 303 -#define BOOLEAN 304 -#define BUSY 305 -#define BUSYTENTATIVE 306 -#define BUSYUNAVAILABLE 307 -#define CALADDRESS 308 -#define CANCEL 309 -#define CANCELLED 310 -#define CHAIR 311 -#define CHILD 312 -#define COMPLETED 313 -#define CONFIDENTIAL 314 -#define CONFIRMED 315 -#define COUNTER 316 -#define DATE 317 -#define DATETIME 318 -#define DECLINECOUNTER 319 -#define DECLINED 320 -#define DELEGATED 321 -#define DISPLAY 322 -#define DRAFT 323 -#define DURATION 324 -#define EMAIL 325 -#define END 326 -#define FINAL 327 -#define FLOAT 328 -#define FREE 329 -#define GREGORIAN 330 -#define GROUP 331 -#define INDIVIDUAL 332 -#define INPROCESS 333 -#define INTEGER 334 -#define NEEDSACTION 335 -#define NONPARTICIPANT 336 -#define OPAQUE 337 -#define OPTPARTICIPANT 338 -#define PARENT 339 -#define PERIOD 340 -#define PRIVATE 341 -#define PROCEDURE 342 -#define PUBLIC 343 -#define PUBLISH 344 -#define RECUR 345 -#define REFRESH 346 -#define REPLY 347 -#define REQPARTICIPANT 348 -#define REQUEST 349 -#define RESOURCE 350 -#define ROOM 351 -#define SIBLING 352 -#define START 353 -#define TENTATIVE 354 -#define TEXT 355 -#define THISANDFUTURE 356 -#define THISANDPRIOR 357 -#define TIME 358 -#define TRANSPAENT 359 -#define UNKNOWN 360 -#define UTCOFFSET 361 -#define XNAME 362 -#define ALTREP 363 -#define CN 364 -#define CUTYPE 365 -#define DAYLIGHT 366 -#define DIR 367 -#define ENCODING 368 -#define EVENT 369 -#define FBTYPE 370 -#define FMTTYPE 371 -#define LANGUAGE 372 -#define MEMBER 373 -#define PARTSTAT 374 -#define RANGE 375 -#define RELATED 376 -#define RELTYPE 377 -#define ROLE 378 -#define RSVP 379 -#define SENTBY 380 -#define STANDARD 381 -#define URI 382 -#define TIME_CHAR 383 -#define UTC_CHAR 384 - -#line 1 "icalyacc.y" - -/* -*- Mode: C -*- - ====================================================================== - FILE: icalitip.y - CREATOR: eric 10 June 1999 - - DESCRIPTION: - - $Id$ - $Locker$ - - (C) COPYRIGHT 1999 Eric Busboom - http://www.softwarestudio.org - - The contents of this file are subject to the Mozilla Public License - Version 1.0 (the "License"); you may not use this file except in - compliance with the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - - Software distributed under the License is distributed on an "AS IS" - basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See - the License for the specific language governing rights and - limitations under the License. - - The original author is Eric Busboom - The original code is icalitip.y - - - - ================================b======================================*/ - -#include -#include /* for strdup() */ -#include /* for SHRT_MAX*/ -#include "icalparser.h" -#include "ical.h" -#include "pvl.h" -#define YYERROR_VERBOSE -#define YYDEBUG 1 - - -icalvalue *icalparser_yy_value; /* Current Value */ - -/* Globals for UTCOFFSET values */ -int utc; -int utc_b; -int utcsign; - -/* Globals for DURATION values */ -struct icaldurationtype duration; - -/* Globals for RECUR values */ -struct icalrecurrencetype recur; -short skiplist[367]; -short skippos; -int dow_pos; - -void copy_list(short* array, size_t size); -void clear_recur(); -void add_prop(icalproperty_kind); -void icalparser_fill_date(struct tm* t, char* dstr); -void icalparser_fill_time(struct tm* t, char* tstr); -void set_value_type(icalvalue_kind kind); -void set_parser_value_state(); -struct icaltimetype fill_datetime(char* d, char* t); -void ical_yy_error(char *s); /* Don't know why I need this.... */ -/*int yylex(void); /* Or this. */ - - - -/* Set the state of the lexer so it will interpret values ( iCAL - VALUEs, that is, ) correctly. */ - - -#line 76 "icalyacc.y" -typedef union { - float v_float; - int v_int; - char* v_string; - - /* Renaming hack */ -#define yymaxdepth ical_yy_maxdepth -#define yyparse ical_yy_parse -#define yylex ical_yy_lex -#define yyerror ical_yy_error -#define yylval ical_yy_lval -#define yychar ical_yy_char -#define yydebug ical_yy_debug -#define yypact ical_yy_pact -#define yyr1 ical_yy_r1 -#define yyr2 ical_yy_r2 -#define yydef ical_yy_def -#define yychk ical_yy_chk -#define yypgo ical_yy_pgo -#define yyact ical_yy_act -#define yyexca ical_yy_exca -#define yyerrflag ical_yy_errflag -#define yynerrs ical_yy_nerrs -#define yyps ical_yy_ps -#define yypv ical_yy_pv -#define yys ical_yy_s -#define yy_yys ical_yy_yys -#define yystate ical_yy_state -#define yytmp ical_yy_tmp -#define yyv ical_yy_v -#define yy_yyv ical_yy_yyv -#define yyval ical_yy_val -#define yylloc ical_yy_lloc -#define yyreds ical_yy_reds -#define yytoks ical_yy_toks -#define yylhs ical_yy_yylhs -#define yylen ical_yy_yylen -#define yydefred ical_yy_yydefred -#define yydgoto ical_yy_yydgoto -#define yydefred ical_yy_yydefred -#define yydgoto ical_yy_yydgoto -#define yysindex ical_yy_yysindex -#define yyrindex ical_yy_yyrindex -#define yygindex ical_yy_yygindex -#define yytable ical_yy_yytable -#define yycheck ical_yy_yycheck -#define yyname ical_yy_yyname -#define yyrule ical_yy_yyrule - - - -} YYSTYPE; -#ifndef YYDEBUG -#define YYDEBUG 1 -#endif - -#include - -#ifndef __cplusplus -#ifndef __STDC__ -#define const -#endif -#endif - - - -#define YYFINAL 137 -#define YYFLAG -32768 -#define YYNTBASE 141 - -#define YYTRANSLATE(x) ((unsigned)(x) <= 385 ? yytranslate[x] : 167) - -static const short yytranslate[] = { 0, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 137, 2, 138, 2, 140, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 136, 2, 2, - 2, 133, 2, 2, 2, 2, 134, 2, 2, 139, - 2, 2, 135, 2, 2, 2, 132, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 1, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131 -}; - -#if YYDEBUG != 0 -static const short yyprhs[] = { 0, - 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, - 20, 22, 24, 26, 27, 29, 30, 32, 37, 39, - 42, 45, 48, 51, 54, 57, 61, 64, 68, 71, - 74, 75, 77, 79, 83, 87, 91, 101, 108, 112, - 116, 120, 124, 128, 132, 136, 138, 140, 142, 144, - 146, 148, 150, 152, 155, 159, 164, 166, 170, 174, - 178, 182, 186, 190, 194, 198, 202, 206, 210, 214, - 218, 222, 226, 230, 234, 238, 242, 246, 250, 251, - 255, 258, 260, 262, 266 -}; - -static const short yyrhs[] = { 142, - 0, 143, 0, 144, 0, 147, 0, 156, 0, 157, - 0, 164, 0, 166, 0, 1, 0, 131, 0, 14, - 0, 15, 0, 3, 0, 0, 130, 0, 0, 130, - 0, 3, 129, 3, 145, 0, 154, 0, 154, 150, - 0, 3, 132, 0, 129, 151, 0, 129, 152, 0, - 129, 153, 0, 3, 133, 0, 3, 133, 152, 0, - 3, 134, 0, 3, 134, 153, 0, 3, 135, 0, - 3, 136, 0, 0, 137, 0, 138, 0, 155, 139, - 148, 0, 155, 139, 150, 0, 155, 139, 149, 0, - 3, 129, 3, 145, 140, 3, 129, 3, 146, 0, - 3, 129, 3, 145, 140, 156, 0, 16, 8, 29, - 0, 16, 8, 27, 0, 16, 8, 31, 0, 16, - 8, 26, 0, 16, 8, 30, 0, 16, 8, 28, - 0, 16, 8, 32, 0, 39, 0, 37, 0, 40, - 0, 41, 0, 42, 0, 43, 0, 38, 0, 159, - 0, 3, 159, 0, 160, 11, 159, 0, 160, 11, - 3, 159, 0, 3, 0, 161, 11, 3, 0, 33, - 8, 3, 0, 36, 8, 39, 0, 36, 8, 37, - 0, 36, 8, 40, 0, 36, 8, 41, 0, 36, - 8, 42, 0, 36, 8, 43, 0, 36, 8, 38, - 0, 22, 8, 161, 0, 19, 8, 161, 0, 18, - 8, 161, 0, 17, 8, 160, 0, 20, 8, 161, - 0, 21, 8, 161, 0, 25, 8, 161, 0, 24, - 8, 161, 0, 23, 8, 161, 0, 35, 8, 147, - 0, 35, 8, 144, 0, 34, 8, 3, 0, 0, - 163, 12, 162, 0, 158, 163, 0, 137, 0, 138, - 0, 165, 4, 4, 0, 165, 4, 4, 4, 0 -}; - -#endif - -#if YYDEBUG != 0 -static const short yyrline[] = { 0, - 159, 161, 162, 163, 164, 165, 166, 167, 168, 174, - 176, 179, 182, 197, 199, 202, 204, 206, 222, 223, - 225, 230, 233, 236, 240, 244, 249, 253, 258, 263, - 268, 271, 274, 278, 283, 288, 297, 318, 350, 352, - 353, 354, 355, 356, 357, 361, 364, 366, 368, 370, - 372, 374, 379, 381, 382, 383, 386, 388, 391, 393, - 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, - 404, 405, 406, 407, 408, 409, 412, 415, 419, 421, - 423, 431, 432, 434, 440 -}; -#endif - - -#if YYDEBUG != 0 || defined (YYERROR_VERBOSE) - -static const char * const yytname[] = { "$","error","$undefined.","DIGITS", -"INTNUMBER","FLOATNUMBER","STRING","EOL","EQUALS","CHARACTER","COLON","COMMA", -"SEMICOLON","TIMESEPERATOR","TRUE","FALSE","FREQ","BYDAY","BYHOUR","BYMINUTE", -"BYMONTH","BYMONTHDAY","BYSECOND","BYSETPOS","BYWEEKNO","BYYEARDAY","DAILY", -"MINUTELY","MONTHLY","SECONDLY","WEEKLY","HOURLY","YEARLY","INTERVAL","COUNT", -"UNTIL","WKST","MO","SA","SU","TU","WE","TH","FR","BIT8","ACCEPTED","ADD","AUDIO", -"BASE64","BINARY","BOOLEAN","BUSY","BUSYTENTATIVE","BUSYUNAVAILABLE","CALADDRESS", -"CANCEL","CANCELLED","CHAIR","CHILD","COMPLETED","CONFIDENTIAL","CONFIRMED", -"COUNTER","DATE","DATETIME","DECLINECOUNTER","DECLINED","DELEGATED","DISPLAY", -"DRAFT","DURATION","EMAIL","END","FINAL","FLOAT","FREE","GREGORIAN","GROUP", -"INDIVIDUAL","INPROCESS","INTEGER","NEEDSACTION","NONPARTICIPANT","OPAQUE","OPTPARTICIPANT", -"PARENT","PERIOD","PRIVATE","PROCEDURE","PUBLIC","PUBLISH","RECUR","REFRESH", -"REPLY","REQPARTICIPANT","REQUEST","RESOURCE","ROOM","SIBLING","START","TENTATIVE", -"TEXT","THISANDFUTURE","THISANDPRIOR","TIME","TRANSPAENT","UNKNOWN","UTCOFFSET", -"XNAME","ALTREP","CN","CUTYPE","DAYLIGHT","DIR","ENCODING","EVENT","FBTYPE", -"FMTTYPE","LANGUAGE","MEMBER","PARTSTAT","RANGE","RELATED","RELTYPE","ROLE", -"RSVP","SENTBY","STANDARD","URI","TIME_CHAR","UTC_CHAR","\"unimplemented2\"", -"'W'","'H'","'M'","'S'","'D'","'+'","'-'","'P'","'/'","value","binary_value", -"boolean_value","date_value","utc_char","utc_char_b","datetime_value","dur_date", -"dur_week","dur_time","dur_hour","dur_minute","dur_second","dur_day","dur_prefix", -"duration_value","period_value","recur_start","weekday","weekday_list","recur_list", -"recur_skip","recur_skip_list","recur_value","plusminus","utcoffset_value", NULL -}; -#endif - -static const short yyr1[] = { 0, - 141, 141, 141, 141, 141, 141, 141, 141, 141, 142, - 143, 143, 144, 145, 145, 146, 146, 147, 148, 148, - 149, 150, 150, 150, 151, 151, 152, 152, 153, 154, - 155, 155, 155, 156, 156, 156, 157, 157, 158, 158, - 158, 158, 158, 158, 158, 159, 159, 159, 159, 159, - 159, 159, 160, 160, 160, 160, 161, 161, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, 163, 163, - 164, 165, 165, 166, 166 -}; - -static const short yyr2[] = { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 0, 1, 0, 1, 4, 1, 2, - 2, 2, 2, 2, 2, 3, 2, 3, 2, 2, - 0, 1, 1, 3, 3, 3, 9, 6, 3, 3, - 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, - 1, 1, 1, 2, 3, 4, 1, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, - 2, 1, 1, 3, 4 -}; - -static const short yydefact[] = { 0, - 9, 13, 11, 12, 0, 10, 32, 33, 1, 2, - 3, 4, 0, 5, 6, 79, 7, 0, 8, 0, - 0, 0, 81, 0, 14, 42, 40, 44, 39, 43, - 41, 45, 0, 0, 34, 36, 35, 19, 0, 84, - 15, 18, 21, 30, 0, 22, 23, 24, 20, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 80, 85, 31, 25, 27, 29, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32, 33, 38, 0, 26, 0, 28, 0, - 47, 52, 46, 48, 49, 50, 51, 53, 70, 57, - 69, 68, 71, 72, 67, 75, 74, 73, 59, 78, - 13, 77, 76, 61, 66, 60, 62, 63, 64, 65, - 0, 54, 0, 0, 0, 16, 0, 55, 58, 14, - 17, 37, 56, 18, 0, 0, 0 -}; - -static const short yydefgoto[] = { 135, - 9, 10, 11, 42, 132, 12, 35, 36, 37, 46, - 47, 48, 38, 13, 14, 15, 16, 98, 99, 101, - 63, 23, 17, 18, 19 -}; - -static const short yypact[] = { -1, --32768, -123,-32768,-32768, 1,-32768, 3, 8,-32768,-32768, --32768,-32768, -122,-32768,-32768,-32768,-32768, 12,-32768, 33, - -7, -2, 40, 49, -119,-32768,-32768,-32768,-32768,-32768, --32768,-32768, -128, 51,-32768,-32768,-32768, -46, 39, 80, --32768, -55,-32768,-32768, -100,-32768,-32768,-32768,-32768, 78, - 79, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91,-32768,-32768, 2, 97, 98,-32768, 0, 99, - 99, 99, 99, 99, 99, 99, 99, 100, 101, 102, - -11, -41,-32768,-32768,-32768, -28,-32768, -27,-32768, 28, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 96,-32768, - 103, 103, 103, 103, 103, 103, 103, 103,-32768,-32768, - -20,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, - 107,-32768, 7, 108, 109, -17, 28,-32768,-32768, -119, --32768,-32768,-32768,-32768, 115, 116,-32768 -}; - -static const short yypgoto[] = {-32768, --32768,-32768, 37, -12,-32768, 41,-32768,-32768, 93,-32768, - 53, 55,-32768,-32768, 58,-32768,-32768, -72,-32768, 5, --32768,-32768,-32768,-32768,-32768 -}; - - -#define YYLAST 140 - - -static const short yytable[] = { 1, - 33, 2, 90, 43, 82, 20, -82, 44, 21, 127, - 41, -83, 3, 4, 5, 24, 22, 122, 26, 27, - 28, 29, 30, 31, 32, 114, 115, 116, 117, 118, - 119, 120, 66, 67, 68, 25, 91, 92, 93, 94, - 95, 96, 97, 91, 92, 93, 94, 95, 96, 97, - 128, 39, 40, 45, 133, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 91, 92, 93, 94, 95, 96, - 97, 59, 60, 61, 62, 102, 103, 104, 105, 106, - 107, 108, 34, 64, 65, 69, 70, 121, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 86, - 88, 100, 109, 110, 111, 67, 123, 68, 125, 126, - 129, 130, 131, 124, 136, 137, 112, 134, 87, 0, - 113, 89, 85, 0, 0, 0, 34, 0, 0, 6, - 49, 0, 0, 0, 0, 7, 8, -31, 83, 84 -}; - -static const short yycheck[] = { 1, - 3, 3, 3, 132, 3, 129, 4, 136, 8, 3, - 130, 4, 14, 15, 16, 4, 139, 90, 26, 27, - 28, 29, 30, 31, 32, 37, 38, 39, 40, 41, - 42, 43, 133, 134, 135, 3, 37, 38, 39, 40, - 41, 42, 43, 37, 38, 39, 40, 41, 42, 43, - 123, 12, 4, 3, 127, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 37, 38, 39, 40, 41, 42, - 43, 33, 34, 35, 36, 71, 72, 73, 74, 75, - 76, 77, 129, 4, 140, 8, 8, 129, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 3, - 3, 3, 3, 3, 3, 134, 11, 135, 129, 3, - 3, 3, 130, 11, 0, 0, 80, 130, 66, -1, - 80, 67, 65, -1, -1, -1, 129, -1, -1, 131, - 38, -1, -1, -1, -1, 137, 138, 139, 137, 138 -}; -/* -*-C-*- Note some compilers choke on comments on `#line' lines. */ -#line 3 "/usr/lib/bison.simple" -/* This file comes from bison-1.28. */ - -/* Skeleton output parser for bison, - Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc. - - 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 2, 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. */ - -/* As a special exception, when this file is copied by Bison into a - Bison output file, you may use that output file without restriction. - This special exception was added by the Free Software Foundation - in version 1.24 of Bison. */ - -/* This is the parser code that is written into each bison parser - when the %semantic_parser declaration is not specified in the grammar. - It was written by Richard Stallman by simplifying the hairy parser - used when %semantic_parser is specified. */ - -#ifndef YYSTACK_USE_ALLOCA -#ifdef alloca -#define YYSTACK_USE_ALLOCA -#else /* alloca not defined */ -#ifdef __GNUC__ -#define YYSTACK_USE_ALLOCA -#define alloca __builtin_alloca -#else /* not GNU C. */ -#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386)) -#define YYSTACK_USE_ALLOCA -#include -#else /* not sparc */ -/* We think this test detects Watcom and Microsoft C. */ -/* This used to test MSDOS, but that is a bad idea - since that symbol is in the user namespace. */ -#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__) -#if 0 /* No need for malloc.h, which pollutes the namespace; - instead, just don't use alloca. */ -#include -#endif -#else /* not MSDOS, or __TURBOC__ */ -#if defined(_AIX) -/* I don't know what this was needed for, but it pollutes the namespace. - So I turned it off. rms, 2 May 1997. */ -/* #include */ - #pragma alloca -#define YYSTACK_USE_ALLOCA -#else /* not MSDOS, or __TURBOC__, or _AIX */ -#if 0 -#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up, - and on HPUX 10. Eventually we can turn this on. */ -#define YYSTACK_USE_ALLOCA -#define alloca __builtin_alloca -#endif /* __hpux */ -#endif -#endif /* not _AIX */ -#endif /* not MSDOS, or __TURBOC__ */ -#endif /* not sparc */ -#endif /* not GNU C */ -#endif /* alloca not defined */ -#endif /* YYSTACK_USE_ALLOCA not defined */ - -#ifdef YYSTACK_USE_ALLOCA -#define YYSTACK_ALLOC alloca -#else -#define YYSTACK_ALLOC malloc -#endif - -/* Note: there must be only one dollar sign in this file. - It is replaced by the list of actions, each action - as one case of the switch. */ - -#define yyerrok (yyerrstatus = 0) -#define yyclearin (yychar = YYEMPTY) -#define YYEMPTY -2 -#define YYEOF 0 -#define YYACCEPT goto yyacceptlab -#define YYABORT goto yyabortlab -#define YYERROR goto yyerrlab1 -/* Like YYERROR except do call yyerror. - This remains here temporarily to ease the - transition to the new meaning of YYERROR, for GCC. - Once GCC version 2 has supplanted version 1, this can go. */ -#define YYFAIL goto yyerrlab -#define YYRECOVERING() (!!yyerrstatus) -#define YYBACKUP(token, value) \ -do \ - if (yychar == YYEMPTY && yylen == 1) \ - { yychar = (token), yylval = (value); \ - yychar1 = YYTRANSLATE (yychar); \ - YYPOPSTACK; \ - goto yybackup; \ - } \ - else \ - { yyerror ("syntax error: cannot back up"); YYERROR; } \ -while (0) - -#define YYTERROR 1 -#define YYERRCODE 256 - -#ifndef YYPURE -#define YYLEX yylex() -#endif - -#ifdef YYPURE -#ifdef YYLSP_NEEDED -#ifdef YYLEX_PARAM -#define YYLEX yylex(&yylval, &yylloc, YYLEX_PARAM) -#else -#define YYLEX yylex(&yylval, &yylloc) -#endif -#else /* not YYLSP_NEEDED */ -#ifdef YYLEX_PARAM -#define YYLEX yylex(&yylval, YYLEX_PARAM) -#else -#define YYLEX yylex(&yylval) -#endif -#endif /* not YYLSP_NEEDED */ -#endif - -/* If nonreentrant, generate the variables here */ - -#ifndef YYPURE - -int yychar; /* the lookahead symbol */ -YYSTYPE yylval; /* the semantic value of the */ - /* lookahead symbol */ - -#ifdef YYLSP_NEEDED -YYLTYPE yylloc; /* location data for the lookahead */ - /* symbol */ -#endif - -int yynerrs; /* number of parse errors so far */ -#endif /* not YYPURE */ - -#if YYDEBUG != 0 -int yydebug; /* nonzero means print parse trace */ -/* Since this is uninitialized, it does not stop multiple parsers - from coexisting. */ -#endif - -/* YYINITDEPTH indicates the initial size of the parser's stacks */ - -#ifndef YYINITDEPTH -#define YYINITDEPTH 200 -#endif - -/* YYMAXDEPTH is the maximum size the stacks can grow to - (effective only if the built-in stack extension method is used). */ - -#if YYMAXDEPTH == 0 -#undef YYMAXDEPTH -#endif - -#ifndef YYMAXDEPTH -#define YYMAXDEPTH 10000 -#endif - -/* Define __yy_memcpy. Note that the size argument - should be passed with type unsigned int, because that is what the non-GCC - definitions require. With GCC, __builtin_memcpy takes an arg - of type size_t, but it can handle unsigned int. */ - -#if __GNUC__ > 1 /* GNU C and GNU C++ define this. */ -#define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT) -#else /* not GNU C or C++ */ -#ifndef __cplusplus - -/* This is the most reliable way to avoid incompatibilities - in available built-in functions on various systems. */ -static void -__yy_memcpy (to, from, count) - char *to; - char *from; - unsigned int count; -{ - register char *f = from; - register char *t = to; - register int i = count; - - while (i-- > 0) - *t++ = *f++; -} - -#else /* __cplusplus */ - -/* This is the most reliable way to avoid incompatibilities - in available built-in functions on various systems. */ -static void -__yy_memcpy (char *to, char *from, unsigned int count) -{ - register char *t = to; - register char *f = from; - register int i = count; - - while (i-- > 0) - *t++ = *f++; -} - -#endif -#endif - -#line 217 "/usr/lib/bison.simple" - -/* The user can define YYPARSE_PARAM as the name of an argument to be passed - into yyparse. The argument should have type void *. - It should actually point to an object. - Grammar actions can access the variable by casting it - to the proper pointer type. */ - -#ifdef YYPARSE_PARAM -#ifdef __cplusplus -#define YYPARSE_PARAM_ARG void *YYPARSE_PARAM -#define YYPARSE_PARAM_DECL -#else /* not __cplusplus */ -#define YYPARSE_PARAM_ARG YYPARSE_PARAM -#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM; -#endif /* not __cplusplus */ -#else /* not YYPARSE_PARAM */ -#define YYPARSE_PARAM_ARG -#define YYPARSE_PARAM_DECL -#endif /* not YYPARSE_PARAM */ - -/* Prevent warning if -Wstrict-prototypes. */ -#ifdef __GNUC__ -#ifdef YYPARSE_PARAM -int yyparse (void *); -#else -int yyparse (void); -#endif -#endif - -int -yyparse(YYPARSE_PARAM_ARG) - YYPARSE_PARAM_DECL -{ - register int yystate; - register int yyn; - register short *yyssp; - register YYSTYPE *yyvsp; - int yyerrstatus; /* number of tokens to shift before error messages enabled */ - int yychar1 = 0; /* lookahead token as an internal (translated) token number */ - - short yyssa[YYINITDEPTH]; /* the state stack */ - YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */ - - short *yyss = yyssa; /* refer to the stacks thru separate pointers */ - YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */ - -#ifdef YYLSP_NEEDED - YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */ - YYLTYPE *yyls = yylsa; - YYLTYPE *yylsp; - -#define YYPOPSTACK (yyvsp--, yyssp--, yylsp--) -#else -#define YYPOPSTACK (yyvsp--, yyssp--) -#endif - - int yystacksize = YYINITDEPTH; - int yyfree_stacks = 0; - -#ifdef YYPURE - int yychar; - YYSTYPE yylval; - int yynerrs; -#ifdef YYLSP_NEEDED - YYLTYPE yylloc; -#endif -#endif - - YYSTYPE yyval; /* the variable used to return */ - /* semantic values from the action */ - /* routines */ - - int yylen; - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Starting parse\n"); -#endif - - yystate = 0; - yyerrstatus = 0; - yynerrs = 0; - yychar = YYEMPTY; /* Cause a token to be read. */ - - /* Initialize stack pointers. - Waste one element of value and location stack - so that they stay on the same level as the state stack. - The wasted elements are never initialized. */ - - yyssp = yyss - 1; - yyvsp = yyvs; -#ifdef YYLSP_NEEDED - yylsp = yyls; -#endif - -/* Push a new state, which is found in yystate . */ -/* In all cases, when you get here, the value and location stacks - have just been pushed. so pushing a state here evens the stacks. */ -yynewstate: - - *++yyssp = yystate; - - if (yyssp >= yyss + yystacksize - 1) - { - /* Give user a chance to reallocate the stack */ - /* Use copies of these so that the &'s don't force the real ones into memory. */ - YYSTYPE *yyvs1 = yyvs; - short *yyss1 = yyss; -#ifdef YYLSP_NEEDED - YYLTYPE *yyls1 = yyls; -#endif - - /* Get the current used size of the three stacks, in elements. */ - int size = yyssp - yyss + 1; - -#ifdef yyoverflow - /* Each stack pointer address is followed by the size of - the data in use in that stack, in bytes. */ -#ifdef YYLSP_NEEDED - /* This used to be a conditional around just the two extra args, - but that might be undefined if yyoverflow is a macro. */ - yyoverflow("parser stack overflow", - &yyss1, size * sizeof (*yyssp), - &yyvs1, size * sizeof (*yyvsp), - &yyls1, size * sizeof (*yylsp), - &yystacksize); -#else - yyoverflow("parser stack overflow", - &yyss1, size * sizeof (*yyssp), - &yyvs1, size * sizeof (*yyvsp), - &yystacksize); -#endif - - yyss = yyss1; yyvs = yyvs1; -#ifdef YYLSP_NEEDED - yyls = yyls1; -#endif -#else /* no yyoverflow */ - /* Extend the stack our own way. */ - if (yystacksize >= YYMAXDEPTH) - { - yyerror("parser stack overflow"); - if (yyfree_stacks) - { - free (yyss); - free (yyvs); -#ifdef YYLSP_NEEDED - free (yyls); -#endif - } - return 2; - } - yystacksize *= 2; - if (yystacksize > YYMAXDEPTH) - yystacksize = YYMAXDEPTH; -#ifndef YYSTACK_USE_ALLOCA - yyfree_stacks = 1; -#endif - yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp)); - __yy_memcpy ((char *)yyss, (char *)yyss1, - size * (unsigned int) sizeof (*yyssp)); - yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp)); - __yy_memcpy ((char *)yyvs, (char *)yyvs1, - size * (unsigned int) sizeof (*yyvsp)); -#ifdef YYLSP_NEEDED - yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp)); - __yy_memcpy ((char *)yyls, (char *)yyls1, - size * (unsigned int) sizeof (*yylsp)); -#endif -#endif /* no yyoverflow */ - - yyssp = yyss + size - 1; - yyvsp = yyvs + size - 1; -#ifdef YYLSP_NEEDED - yylsp = yyls + size - 1; -#endif - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Stack size increased to %d\n", yystacksize); -#endif - - if (yyssp >= yyss + yystacksize - 1) - YYABORT; - } - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Entering state %d\n", yystate); -#endif - - goto yybackup; - yybackup: - -/* Do appropriate processing given the current state. */ -/* Read a lookahead token if we need one and don't already have one. */ -/* yyresume: */ - - /* First try to decide what to do without reference to lookahead token. */ - - yyn = yypact[yystate]; - if (yyn == YYFLAG) - goto yydefault; - - /* Not known => get a lookahead token if don't already have one. */ - - /* yychar is either YYEMPTY or YYEOF - or a valid token in external form. */ - - if (yychar == YYEMPTY) - { -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Reading a token: "); -#endif - yychar = YYLEX; - } - - /* Convert token to internal form (in yychar1) for indexing tables with */ - - if (yychar <= 0) /* This means end of input. */ - { - yychar1 = 0; - yychar = YYEOF; /* Don't call YYLEX any more */ - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Now at end of input.\n"); -#endif - } - else - { - yychar1 = YYTRANSLATE(yychar); - -#if YYDEBUG != 0 - if (yydebug) - { - fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]); - /* Give the individual parser a way to print the precise meaning - of a token, for further debugging info. */ -#ifdef YYPRINT - YYPRINT (stderr, yychar, yylval); -#endif - fprintf (stderr, ")\n"); - } -#endif - } - - yyn += yychar1; - if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1) - goto yydefault; - - yyn = yytable[yyn]; - - /* yyn is what to do for this token type in this state. - Negative => reduce, -yyn is rule number. - Positive => shift, yyn is new state. - New state is final state => don't bother to shift, - just return success. - 0, or most negative number => error. */ - - if (yyn < 0) - { - if (yyn == YYFLAG) - goto yyerrlab; - yyn = -yyn; - goto yyreduce; - } - else if (yyn == 0) - goto yyerrlab; - - if (yyn == YYFINAL) - YYACCEPT; - - /* Shift the lookahead token. */ - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]); -#endif - - /* Discard the token being shifted unless it is eof. */ - if (yychar != YYEOF) - yychar = YYEMPTY; - - *++yyvsp = yylval; -#ifdef YYLSP_NEEDED - *++yylsp = yylloc; -#endif - - /* count tokens shifted since error; after three, turn off error status. */ - if (yyerrstatus) yyerrstatus--; - - yystate = yyn; - goto yynewstate; - -/* Do the default action for the current state. */ -yydefault: - - yyn = yydefact[yystate]; - if (yyn == 0) - goto yyerrlab; - -/* Do a reduction. yyn is the number of a rule to reduce with. */ -yyreduce: - yylen = yyr2[yyn]; - if (yylen > 0) - yyval = yyvsp[1-yylen]; /* implement default value of the action */ - -#if YYDEBUG != 0 - if (yydebug) - { - int i; - - fprintf (stderr, "Reducing via rule %d (line %d), ", - yyn, yyrline[yyn]); - - /* Print the symbols being reduced, and their result. */ - for (i = yyprhs[yyn]; yyrhs[i] > 0; i++) - fprintf (stderr, "%s ", yytname[yyrhs[i]]); - fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]); - } -#endif - - - switch (yyn) { - -case 9: -#line 168 "icalyacc.y" -{ - icalparser_yy_value = 0; - icalparser_clear_flex_input(); - yyclearin; - ; - break;} -case 11: -#line 178 "icalyacc.y" -{ icalparser_yy_value = icalvalue_new_boolean(1); ; - break;} -case 12: -#line 180 "icalyacc.y" -{ icalparser_yy_value = icalvalue_new_boolean(0); ; - break;} -case 13: -#line 183 "icalyacc.y" -{ - struct icaltimetype stm; - - stm = fill_datetime(yyvsp[0].v_string,0); - - stm.hour = -1; - stm.minute = -1; - stm.second = -1; - stm.is_utc = 0; - stm.is_date = 1; - - icalparser_yy_value = icalvalue_new_date(stm); - ; - break;} -case 14: -#line 198 "icalyacc.y" -{utc = 0;; - break;} -case 15: -#line 199 "icalyacc.y" -{utc = 1;; - break;} -case 16: -#line 203 "icalyacc.y" -{utc_b = 0;; - break;} -case 17: -#line 204 "icalyacc.y" -{utc_b = 1;; - break;} -case 18: -#line 208 "icalyacc.y" -{ - struct icaltimetype stm; - stm = fill_datetime(yyvsp[-3].v_string, yyvsp[-1].v_string); - stm.is_utc = utc; - stm.is_date = 0; - - icalparser_yy_value = - icalvalue_new_datetime(stm); - ; - break;} -case 21: -#line 226 "icalyacc.y" -{ - duration.weeks = atoi(yyvsp[-1].v_string); - ; - break;} -case 22: -#line 231 "icalyacc.y" -{ - ; - break;} -case 23: -#line 234 "icalyacc.y" -{ - ; - break;} -case 24: -#line 237 "icalyacc.y" -{ - ; - break;} -case 25: -#line 241 "icalyacc.y" -{ - duration.hours = atoi(yyvsp[-1].v_string); - ; - break;} -case 26: -#line 245 "icalyacc.y" -{ - duration.hours = atoi(yyvsp[-2].v_string); - ; - break;} -case 27: -#line 250 "icalyacc.y" -{ - duration.minutes = atoi(yyvsp[-1].v_string); - ; - break;} -case 28: -#line 254 "icalyacc.y" -{ - duration.minutes = atoi(yyvsp[-2].v_string); - ; - break;} -case 29: -#line 259 "icalyacc.y" -{ - duration.seconds = atoi(yyvsp[-1].v_string); - ; - break;} -case 30: -#line 264 "icalyacc.y" -{ - duration.days = atoi(yyvsp[-1].v_string); - ; - break;} -case 31: -#line 269 "icalyacc.y" -{ - ; - break;} -case 32: -#line 272 "icalyacc.y" -{ - ; - break;} -case 33: -#line 275 "icalyacc.y" -{ - ; - break;} -case 34: -#line 279 "icalyacc.y" -{ - icalparser_yy_value = icalvalue_new_duration(duration); - memset(&duration,0, sizeof(duration)); - ; - break;} -case 35: -#line 284 "icalyacc.y" -{ - icalparser_yy_value = icalvalue_new_duration(duration); - memset(&duration,0, sizeof(duration)); - ; - break;} -case 36: -#line 289 "icalyacc.y" -{ - icalparser_yy_value = icalvalue_new_duration(duration); - memset(&duration,0, sizeof(duration)); - ; - break;} -case 37: -#line 298 "icalyacc.y" -{ - struct icalperiodtype p; - - p.start = fill_datetime(yyvsp[-8].v_string,yyvsp[-6].v_string); - p.start.is_utc = utc; - p.start.is_date = 0; - - - p.end = fill_datetime(yyvsp[-3].v_string,yyvsp[-1].v_string); - p.end.is_utc = utc_b; - p.end.is_date = 0; - - p.duration.days = -1; - p.duration.weeks = -1; - p.duration.hours = -1; - p.duration.minutes = -1; - p.duration.seconds = -1; - - icalparser_yy_value = icalvalue_new_period(p); - ; - break;} -case 38: -#line 319 "icalyacc.y" -{ - struct icalperiodtype p; - - p.start = fill_datetime(yyvsp[-5].v_string,yyvsp[-3].v_string); - p.start.is_utc = utc; - p.start.is_date = 0; - - p.end.year = -1; - p.end.month = -1; - p.end.day = -1; - p.end.hour = -1; - p.end.minute = -1; - p.end.second = -1; - - /* The duration_value rule setes the global 'duration' - variable, but it also creates a new value in - icalparser_yy_value. So, free that, then copy - 'duration' into the icalperiodtype struct. */ - - p.duration = icalvalue_get_duration(icalparser_yy_value); - icalvalue_free(icalparser_yy_value); - icalparser_yy_value = 0; - - icalparser_yy_value = icalvalue_new_period(p); - - ; - break;} -case 39: -#line 351 "icalyacc.y" -{clear_recur();recur.freq = ICAL_SECONDLY_RECURRENCE;; - break;} -case 40: -#line 352 "icalyacc.y" -{clear_recur();recur.freq = ICAL_MINUTELY_RECURRENCE;; - break;} -case 41: -#line 353 "icalyacc.y" -{clear_recur();recur.freq = ICAL_HOURLY_RECURRENCE;; - break;} -case 42: -#line 354 "icalyacc.y" -{clear_recur();recur.freq = ICAL_DAILY_RECURRENCE;; - break;} -case 43: -#line 355 "icalyacc.y" -{clear_recur();recur.freq = ICAL_WEEKLY_RECURRENCE;; - break;} -case 44: -#line 356 "icalyacc.y" -{clear_recur();recur.freq = ICAL_MONTHLY_RECURRENCE;; - break;} -case 45: -#line 357 "icalyacc.y" -{clear_recur();recur.freq = ICAL_YEARLY_RECURRENCE;; - break;} -case 46: -#line 362 "icalyacc.y" -{ skiplist[skippos]=ICAL_SUNDAY_WEEKDAY+8*dow_pos; - if( skippos<8) skippos++;; - break;} -case 47: -#line 364 "icalyacc.y" -{ skiplist[skippos]=ICAL_MONDAY_WEEKDAY+8*dow_pos; - if( skippos<8) skippos++;; - break;} -case 48: -#line 366 "icalyacc.y" -{ skiplist[skippos]=ICAL_TUESDAY_WEEKDAY+8*dow_pos; - if( skippos<8) skippos++;; - break;} -case 49: -#line 368 "icalyacc.y" -{ skiplist[skippos]=ICAL_WEDNESDAY_WEEKDAY+8*dow_pos; - if( skippos<8) skippos++;; - break;} -case 50: -#line 370 "icalyacc.y" -{ skiplist[skippos]=ICAL_THURSDAY_WEEKDAY+8*dow_pos; - if( skippos<8) skippos++;; - break;} -case 51: -#line 372 "icalyacc.y" -{ skiplist[skippos]=ICAL_FRIDAY_WEEKDAY+8*dow_pos; - if( skippos<8) skippos++;; - break;} -case 52: -#line 374 "icalyacc.y" -{ skiplist[skippos]=ICAL_SATURDAY_WEEKDAY+8*dow_pos; - if( skippos<8) skippos++;; - break;} -case 53: -#line 380 "icalyacc.y" -{dow_pos = 0; - break;} -case 54: -#line 381 "icalyacc.y" -{ dow_pos = atoi(yyvsp[-1].v_string); - break;} -case 55: -#line 382 "icalyacc.y" -{dow_pos = 0; - break;} -case 56: -#line 383 "icalyacc.y" -{ dow_pos = atoi(yyvsp[-1].v_string); - break;} -case 57: -#line 387 "icalyacc.y" -{ skiplist[skippos] = atoi(yyvsp[0].v_string); skippos++;; - break;} -case 58: -#line 388 "icalyacc.y" -{ skiplist[skippos] = atoi(yyvsp[0].v_string); if (skippos<367) skippos++;; - break;} -case 59: -#line 392 "icalyacc.y" -{recur.interval = atoi(yyvsp[0].v_string);; - break;} -case 60: -#line 393 "icalyacc.y" -{recur.week_start = ICAL_SUNDAY_WEEKDAY;; - break;} -case 61: -#line 394 "icalyacc.y" -{recur.week_start = ICAL_MONDAY_WEEKDAY;; - break;} -case 62: -#line 395 "icalyacc.y" -{recur.week_start = ICAL_TUESDAY_WEEKDAY;; - break;} -case 63: -#line 396 "icalyacc.y" -{recur.week_start = ICAL_WEDNESDAY_WEEKDAY;; - break;} -case 64: -#line 397 "icalyacc.y" -{recur.week_start = ICAL_THURSDAY_WEEKDAY;; - break;} -case 65: -#line 398 "icalyacc.y" -{recur.week_start = ICAL_FRIDAY_WEEKDAY;; - break;} -case 66: -#line 399 "icalyacc.y" -{recur.week_start = ICAL_SATURDAY_WEEKDAY;; - break;} -case 67: -#line 400 "icalyacc.y" -{copy_list(recur.by_second,60);; - break;} -case 68: -#line 401 "icalyacc.y" -{copy_list(recur.by_minute,60);; - break;} -case 69: -#line 402 "icalyacc.y" -{copy_list(recur.by_hour,24);; - break;} -case 70: -#line 403 "icalyacc.y" -{copy_list(recur.by_day,7);; - break;} -case 71: -#line 404 "icalyacc.y" -{copy_list(recur.by_month,12);; - break;} -case 72: -#line 405 "icalyacc.y" -{copy_list(recur.by_month_day,31);; - break;} -case 73: -#line 406 "icalyacc.y" -{copy_list(recur.by_year_day,366);; - break;} -case 74: -#line 407 "icalyacc.y" -{copy_list(recur.by_week_no,53);; - break;} -case 75: -#line 408 "icalyacc.y" -{copy_list(recur.by_set_pos,366);; - break;} -case 76: -#line 410 "icalyacc.y" -{ recur.until = icalvalue_get_datetime(icalparser_yy_value); - icalvalue_free(icalparser_yy_value); icalparser_yy_value=0;; - break;} -case 77: -#line 413 "icalyacc.y" -{ recur.until = icalvalue_get_date(icalparser_yy_value); - icalvalue_free(icalparser_yy_value); icalparser_yy_value=0;; - break;} -case 78: -#line 416 "icalyacc.y" -{ recur.count = atoi(yyvsp[0].v_string); ; - break;} -case 81: -#line 425 "icalyacc.y" -{ icalparser_yy_value = icalvalue_new_recur(recur); ; - break;} -case 82: -#line 431 "icalyacc.y" -{ utcsign = 1; ; - break;} -case 83: -#line 432 "icalyacc.y" -{ utcsign = -1; ; - break;} -case 84: -#line 436 "icalyacc.y" -{ - icalparser_yy_value = icalvalue_new_utcoffset( utcsign * (yyvsp[-1].v_int*3600) + (yyvsp[0].v_int*60) ); - ; - break;} -case 85: -#line 441 "icalyacc.y" -{ - icalparser_yy_value = icalvalue_new_utcoffset(utcsign * (yyvsp[-2].v_int*3600) + (yyvsp[-1].v_int*60) +(yyvsp[0].v_int)); - ; - break;} -} - /* the action file gets copied in in place of this dollarsign */ -#line 543 "/usr/lib/bison.simple" - - yyvsp -= yylen; - yyssp -= yylen; -#ifdef YYLSP_NEEDED - yylsp -= yylen; -#endif - -#if YYDEBUG != 0 - if (yydebug) - { - short *ssp1 = yyss - 1; - fprintf (stderr, "state stack now"); - while (ssp1 != yyssp) - fprintf (stderr, " %d", *++ssp1); - fprintf (stderr, "\n"); - } -#endif - - *++yyvsp = yyval; - -#ifdef YYLSP_NEEDED - yylsp++; - if (yylen == 0) - { - yylsp->first_line = yylloc.first_line; - yylsp->first_column = yylloc.first_column; - yylsp->last_line = (yylsp-1)->last_line; - yylsp->last_column = (yylsp-1)->last_column; - yylsp->text = 0; - } - else - { - yylsp->last_line = (yylsp+yylen-1)->last_line; - yylsp->last_column = (yylsp+yylen-1)->last_column; - } -#endif - - /* Now "shift" the result of the reduction. - Determine what state that goes to, - based on the state we popped back to - and the rule number reduced by. */ - - yyn = yyr1[yyn]; - - yystate = yypgoto[yyn - YYNTBASE] + *yyssp; - if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp) - yystate = yytable[yystate]; - else - yystate = yydefgoto[yyn - YYNTBASE]; - - goto yynewstate; - -yyerrlab: /* here on detecting error */ - - if (! yyerrstatus) - /* If not already recovering from an error, report this error. */ - { - ++yynerrs; - -#ifdef YYERROR_VERBOSE - yyn = yypact[yystate]; - - if (yyn > YYFLAG && yyn < YYLAST) - { - int size = 0; - char *msg; - int x, count; - - count = 0; - /* Start X at -yyn if nec to avoid negative indexes in yycheck. */ - for (x = (yyn < 0 ? -yyn : 0); - x < (sizeof(yytname) / sizeof(char *)); x++) - if (yycheck[x + yyn] == x) - size += strlen(yytname[x]) + 15, count++; - msg = (char *) malloc(size + 15); - if (msg != 0) - { - strcpy(msg, "parse error"); - - if (count < 5) - { - count = 0; - for (x = (yyn < 0 ? -yyn : 0); - x < (sizeof(yytname) / sizeof(char *)); x++) - if (yycheck[x + yyn] == x) - { - strcat(msg, count == 0 ? ", expecting `" : " or `"); - strcat(msg, yytname[x]); - strcat(msg, "'"); - count++; - } - } - yyerror(msg); - free(msg); - } - else - yyerror ("parse error; also virtual memory exceeded"); - } - else -#endif /* YYERROR_VERBOSE */ - yyerror("parse error"); - } - - goto yyerrlab1; -yyerrlab1: /* here on error raised explicitly by an action */ - - if (yyerrstatus == 3) - { - /* if just tried and failed to reuse lookahead token after an error, discard it. */ - - /* return failure if at end of input */ - if (yychar == YYEOF) - YYABORT; - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]); -#endif - - yychar = YYEMPTY; - } - - /* Else will try to reuse lookahead token - after shifting the error token. */ - - yyerrstatus = 3; /* Each real token shifted decrements this */ - - goto yyerrhandle; - -yyerrdefault: /* current state does not do anything special for the error token. */ - -#if 0 - /* This is wrong; only states that explicitly want error tokens - should shift them. */ - yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/ - if (yyn) goto yydefault; -#endif - -yyerrpop: /* pop the current state because it cannot handle the error token */ - - if (yyssp == yyss) YYABORT; - yyvsp--; - yystate = *--yyssp; -#ifdef YYLSP_NEEDED - yylsp--; -#endif - -#if YYDEBUG != 0 - if (yydebug) - { - short *ssp1 = yyss - 1; - fprintf (stderr, "Error: state stack now"); - while (ssp1 != yyssp) - fprintf (stderr, " %d", *++ssp1); - fprintf (stderr, "\n"); - } -#endif - -yyerrhandle: - - yyn = yypact[yystate]; - if (yyn == YYFLAG) - goto yyerrdefault; - - yyn += YYTERROR; - if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR) - goto yyerrdefault; - - yyn = yytable[yyn]; - if (yyn < 0) - { - if (yyn == YYFLAG) - goto yyerrpop; - yyn = -yyn; - goto yyreduce; - } - else if (yyn == 0) - goto yyerrpop; - - if (yyn == YYFINAL) - YYACCEPT; - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Shifting error token, "); -#endif - - *++yyvsp = yylval; -#ifdef YYLSP_NEEDED - *++yylsp = yylloc; -#endif - - yystate = yyn; - goto yynewstate; - - yyacceptlab: - /* YYACCEPT comes here. */ - if (yyfree_stacks) - { - free (yyss); - free (yyvs); -#ifdef YYLSP_NEEDED - free (yyls); -#endif - } - return 0; - - yyabortlab: - /* YYABORT comes here. */ - if (yyfree_stacks) - { - free (yyss); - free (yyvs); -#ifdef YYLSP_NEEDED - free (yyls); -#endif - } - return 1; -} -#line 447 "icalyacc.y" - - - -void clear_recur() -{ - memset(&skiplist, ICAL_RECURRENCE_ARRAY_MAX_BYTE, sizeof(skiplist)); - skippos = 0; - - icalrecurrencetype_clear(&recur); - recur.week_start = ICAL_MONDAY_WEEKDAY; -} - -void copy_list(short* array, size_t size) -{ - memcpy(array, skiplist, size*sizeof(short)); - memset(&skiplist,ICAL_RECURRENCE_ARRAY_MAX_BYTE, sizeof(skiplist)); - skippos = 0; -} - -struct icaltimetype fill_datetime(char* datestr, char* timestr) -{ - struct icaltimetype stm; - - memset(&stm,0,sizeof(stm)); - - if (datestr != 0){ - sscanf(datestr,"%4d%2d%2d",&(stm.year), &(stm.month), - &(stm.day)); - } - - if (timestr != 0){ - sscanf(timestr,"%2d%2d%2d", &(stm.hour), &(stm.minute), - &(stm.second)); - } - - return stm; - -} - -void yyerror(char* s) -{ - /*fprintf(stderr,"Parse error \'%s\'\n", s);*/ -} - diff --git a/libical/src/libical/icalyacc.y b/libical/src/libical/icalyacc.y deleted file mode 100644 index ce78a439d0..0000000000 --- a/libical/src/libical/icalyacc.y +++ /dev/null @@ -1,490 +0,0 @@ -%{ -/* -*- Mode: C -*- - ====================================================================== - FILE: icalitip.y - CREATOR: eric 10 June 1999 - - DESCRIPTION: - - $Id: icalyacc.y,v 1.6 2000/09/01 15:24:30 jpr Exp $ - $Locker: $ - - (C) COPYRIGHT 1999 Eric Busboom - http://www.softwarestudio.org - - The contents of this file are subject to the Mozilla Public License - Version 1.0 (the "License"); you may not use this file except in - compliance with the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - - Software distributed under the License is distributed on an "AS IS" - basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See - the License for the specific language governing rights and - limitations under the License. - - The original author is Eric Busboom - The original code is icalitip.y - - - - ================================b======================================*/ - -#include -#include /* for strdup() */ -#include /* for SHRT_MAX*/ -#include "icalparser.h" -#include "ical.h" -#include "pvl.h" -#define YYERROR_VERBOSE -#define YYDEBUG 1 - - -icalvalue *icalparser_yy_value; /* Current Value */ - -/* Globals for UTCOFFSET values */ -int utc; -int utc_b; -int utcsign; - -/* Globals for DURATION values */ -struct icaldurationtype duration; - -/* Globals for RECUR values */ -struct icalrecurrencetype recur; -short skiplist[367]; -short skippos; -int dow_pos; - -void copy_list(short* array, size_t size); -void clear_recur(); -void add_prop(icalproperty_kind); -void icalparser_fill_date(struct tm* t, char* dstr); -void icalparser_fill_time(struct tm* t, char* tstr); -void set_value_type(icalvalue_kind kind); -void set_parser_value_state(); -struct icaltimetype fill_datetime(char* d, char* t); -void ical_yy_error(char *s); /* Don't know why I need this.... */ -/*int yylex(void); /* Or this. */ - - - -/* Set the state of the lexer so it will interpret values ( iCAL - VALUEs, that is, ) correctly. */ - -%} - -%union { - float v_float; - int v_int; - char* v_string; - - /* Renaming hack */ -#define yymaxdepth ical_yy_maxdepth -#define yyparse ical_yy_parse -#define yylex ical_yy_lex -#define yyerror ical_yy_error -#define yylval ical_yy_lval -#define yychar ical_yy_char -#define yydebug ical_yy_debug -#define yypact ical_yy_pact -#define yyr1 ical_yy_r1 -#define yyr2 ical_yy_r2 -#define yydef ical_yy_def -#define yychk ical_yy_chk -#define yypgo ical_yy_pgo -#define yyact ical_yy_act -#define yyexca ical_yy_exca -#define yyerrflag ical_yy_errflag -#define yynerrs ical_yy_nerrs -#define yyps ical_yy_ps -#define yypv ical_yy_pv -#define yys ical_yy_s -#define yy_yys ical_yy_yys -#define yystate ical_yy_state -#define yytmp ical_yy_tmp -#define yyv ical_yy_v -#define yy_yyv ical_yy_yyv -#define yyval ical_yy_val -#define yylloc ical_yy_lloc -#define yyreds ical_yy_reds -#define yytoks ical_yy_toks -#define yylhs ical_yy_yylhs -#define yylen ical_yy_yylen -#define yydefred ical_yy_yydefred -#define yydgoto ical_yy_yydgoto -#define yydefred ical_yy_yydefred -#define yydgoto ical_yy_yydgoto -#define yysindex ical_yy_yysindex -#define yyrindex ical_yy_yyrindex -#define yygindex ical_yy_yygindex -#define yytable ical_yy_yytable -#define yycheck ical_yy_yycheck -#define yyname ical_yy_yyname -#define yyrule ical_yy_yyrule - - - -} - -%token DIGITS -%token INTNUMBER -%token FLOATNUMBER -%token STRING -%token EOL EQUALS CHARACTER COLON COMMA SEMICOLON TIMESEPERATOR - -%token TRUE FALSE - -%token FREQ BYDAY BYHOUR BYMINUTE BYMONTH BYMONTHDAY BYSECOND BYSETPOS BYWEEKNO -%token BYYEARDAY DAILY MINUTELY MONTHLY SECONDLY WEEKLY HOURLY YEARLY -%token INTERVAL COUNT UNTIL WKST MO SA SU TU WE TH FR - -%token BIT8 ACCEPTED ADD AUDIO BASE64 BINARY BOOLEAN BUSY BUSYTENTATIVE -%token BUSYUNAVAILABLE CALADDRESS CANCEL CANCELLED CHAIR CHILD COMPLETED -%token CONFIDENTIAL CONFIRMED COUNTER DATE DATETIME DECLINECOUNTER DECLINED -%token DELEGATED DISPLAY DRAFT DURATION EMAIL END FINAL FLOAT FREE GREGORIAN -%token GROUP INDIVIDUAL INPROCESS INTEGER NEEDSACTION NONPARTICIPANT -%token OPAQUE OPTPARTICIPANT PARENT PERIOD PRIVATE PROCEDURE PUBLIC PUBLISH -%token RECUR REFRESH REPLY REQPARTICIPANT REQUEST RESOURCE ROOM SIBLING -%token START TENTATIVE TEXT THISANDFUTURE THISANDPRIOR TIME TRANSPAENT -%token UNKNOWN UTCOFFSET XNAME - -%token ALTREP CN CUTYPE DAYLIGHT DIR ENCODING EVENT FBTYPE FMTTYPE LANGUAGE -%token MEMBER PARTSTAT RANGE RELATED RELTYPE ROLE RSVP SENTBY STANDARD URI - -%token TIME_CHAR UTC_CHAR - - -%% - -value: - binary_value - | boolean_value - | date_value - | datetime_value - | duration_value - | period_value - | recur_value - | utcoffset_value - | error { - icalparser_yy_value = 0; - icalparser_clear_flex_input(); - yyclearin; - } - -binary_value: "unimplemented2" - -boolean_value: - TRUE - { icalparser_yy_value = icalvalue_new_boolean(1); } - | FALSE - { icalparser_yy_value = icalvalue_new_boolean(0); } - -date_value: DIGITS - { - struct icaltimetype stm; - - stm = fill_datetime($1,0); - - stm.hour = -1; - stm.minute = -1; - stm.second = -1; - stm.is_utc = 0; - stm.is_date = 1; - - icalparser_yy_value = icalvalue_new_date(stm); - } - -utc_char: - /*empty*/ {utc = 0;} - | UTC_CHAR {utc = 1;} - -/* This is used in the period_value, where there may be two utc characters per rule. */ -utc_char_b: - /*empty*/ {utc_b = 0;} - | UTC_CHAR {utc_b = 1;} - -datetime_value: - DIGITS TIME_CHAR DIGITS utc_char - { - struct icaltimetype stm; - stm = fill_datetime($1, $3); - stm.is_utc = utc; - stm.is_date = 0; - - icalparser_yy_value = - icalvalue_new_datetime(stm); - } - - -/* Duration */ - - -dur_date: dur_day - | dur_day dur_time - -dur_week: DIGITS 'W' - { - duration.weeks = atoi($1); - } - -dur_time: TIME_CHAR dur_hour - { - } - | TIME_CHAR dur_minute - { - } - | TIME_CHAR dur_second - { - } - -dur_hour: DIGITS 'H' - { - duration.hours = atoi($1); - } - | DIGITS 'H' dur_minute - { - duration.hours = atoi($1); - } - -dur_minute: DIGITS 'M' - { - duration.minutes = atoi($1); - } - | DIGITS 'M' dur_second - { - duration.minutes = atoi($1); - } - -dur_second: DIGITS 'S' - { - duration.seconds = atoi($1); - } - -dur_day: DIGITS 'D' - { - duration.days = atoi($1); - } - -dur_prefix: /* empty */ - { - } - | '+' - { - } - | '-' - { - } - -duration_value: dur_prefix 'P' dur_date - { - icalparser_yy_value = icalvalue_new_duration(duration); - memset(&duration,0, sizeof(duration)); - } - | dur_prefix 'P' dur_time - { - icalparser_yy_value = icalvalue_new_duration(duration); - memset(&duration,0, sizeof(duration)); - } - | dur_prefix 'P' dur_week - { - icalparser_yy_value = icalvalue_new_duration(duration); - memset(&duration,0, sizeof(duration)); - } - - -/* Period */ - -period_value: DIGITS TIME_CHAR DIGITS utc_char '/' DIGITS TIME_CHAR DIGITS utc_char_b - { - struct icalperiodtype p; - - p.start = fill_datetime($1,$3); - p.start.is_utc = utc; - p.start.is_date = 0; - - - p.end = fill_datetime($6,$8); - p.end.is_utc = utc_b; - p.end.is_date = 0; - - p.duration.days = -1; - p.duration.weeks = -1; - p.duration.hours = -1; - p.duration.minutes = -1; - p.duration.seconds = -1; - - icalparser_yy_value = icalvalue_new_period(p); - } - | DIGITS TIME_CHAR DIGITS utc_char '/' duration_value - { - struct icalperiodtype p; - - p.start = fill_datetime($1,$3); - p.start.is_utc = utc; - p.start.is_date = 0; - - p.end.year = -1; - p.end.month = -1; - p.end.day = -1; - p.end.hour = -1; - p.end.minute = -1; - p.end.second = -1; - - /* The duration_value rule setes the global 'duration' - variable, but it also creates a new value in - icalparser_yy_value. So, free that, then copy - 'duration' into the icalperiodtype struct. */ - - p.duration = icalvalue_get_duration(icalparser_yy_value); - icalvalue_free(icalparser_yy_value); - icalparser_yy_value = 0; - - icalparser_yy_value = icalvalue_new_period(p); - - } - - - -/* Recur */ - -recur_start: - FREQ EQUALS SECONDLY {clear_recur();recur.freq = ICAL_SECONDLY_RECURRENCE;} - | FREQ EQUALS MINUTELY {clear_recur();recur.freq = ICAL_MINUTELY_RECURRENCE;} - | FREQ EQUALS HOURLY {clear_recur();recur.freq = ICAL_HOURLY_RECURRENCE;} - | FREQ EQUALS DAILY {clear_recur();recur.freq = ICAL_DAILY_RECURRENCE;} - | FREQ EQUALS WEEKLY {clear_recur();recur.freq = ICAL_WEEKLY_RECURRENCE;} - | FREQ EQUALS MONTHLY {clear_recur();recur.freq = ICAL_MONTHLY_RECURRENCE;} - | FREQ EQUALS YEARLY {clear_recur();recur.freq = ICAL_YEARLY_RECURRENCE;} - ; - - -weekday: - SU { skiplist[skippos]=ICAL_SUNDAY_WEEKDAY+8*dow_pos; - if( skippos<8) skippos++;} - | MO { skiplist[skippos]=ICAL_MONDAY_WEEKDAY+8*dow_pos; - if( skippos<8) skippos++;} - | TU { skiplist[skippos]=ICAL_TUESDAY_WEEKDAY+8*dow_pos; - if( skippos<8) skippos++;} - | WE { skiplist[skippos]=ICAL_WEDNESDAY_WEEKDAY+8*dow_pos; - if( skippos<8) skippos++;} - | TH { skiplist[skippos]=ICAL_THURSDAY_WEEKDAY+8*dow_pos; - if( skippos<8) skippos++;} - | FR { skiplist[skippos]=ICAL_FRIDAY_WEEKDAY+8*dow_pos; - if( skippos<8) skippos++;} - | SA { skiplist[skippos]=ICAL_SATURDAY_WEEKDAY+8*dow_pos; - if( skippos<8) skippos++;} - ; - - -weekday_list: - weekday {dow_pos = 0}; - | DIGITS weekday { dow_pos = atoi($1)} - | weekday_list COMMA weekday {dow_pos = 0}; - | weekday_list COMMA DIGITS weekday { dow_pos = atoi($3)} - - -recur_list: - DIGITS { skiplist[skippos] = atoi($1); skippos++;} - | recur_list COMMA DIGITS { skiplist[skippos] = atoi($3); if (skippos<367) skippos++;} - ; - -recur_skip: - INTERVAL EQUALS DIGITS {recur.interval = atoi($3);} - | WKST EQUALS SU {recur.week_start = ICAL_SUNDAY_WEEKDAY;} - | WKST EQUALS MO {recur.week_start = ICAL_MONDAY_WEEKDAY;} - | WKST EQUALS TU {recur.week_start = ICAL_TUESDAY_WEEKDAY;} - | WKST EQUALS WE {recur.week_start = ICAL_WEDNESDAY_WEEKDAY;} - | WKST EQUALS TH {recur.week_start = ICAL_THURSDAY_WEEKDAY;} - | WKST EQUALS FR {recur.week_start = ICAL_FRIDAY_WEEKDAY;} - | WKST EQUALS SA {recur.week_start = ICAL_SATURDAY_WEEKDAY;} - | BYSECOND EQUALS recur_list{copy_list(recur.by_second,60);} - | BYMINUTE EQUALS recur_list{copy_list(recur.by_minute,60);} - | BYHOUR EQUALS recur_list{copy_list(recur.by_hour,24);} - | BYDAY EQUALS weekday_list{copy_list(recur.by_day,7);} - | BYMONTH EQUALS recur_list{copy_list(recur.by_month,12);} - | BYMONTHDAY EQUALS recur_list{copy_list(recur.by_month_day,31);} - | BYYEARDAY EQUALS recur_list{copy_list(recur.by_year_day,366);} - | BYWEEKNO EQUALS recur_list{copy_list(recur.by_week_no,53);} - | BYSETPOS EQUALS recur_list{copy_list(recur.by_set_pos,366);} - | UNTIL EQUALS datetime_value - { recur.until = icalvalue_get_datetime(icalparser_yy_value); - icalvalue_free(icalparser_yy_value); icalparser_yy_value=0;} - | UNTIL EQUALS date_value - { recur.until = icalvalue_get_date(icalparser_yy_value); - icalvalue_free(icalparser_yy_value); icalparser_yy_value=0;} - | COUNT EQUALS DIGITS - { recur.count = atoi($3); } - ; - -recur_skip_list: - /* empty */ - | recur_skip_list SEMICOLON recur_skip - -recur_value: - recur_start recur_skip_list - { icalparser_yy_value = icalvalue_new_recur(recur); } - - - -/* UTC Offset */ - -plusminus: '+' { utcsign = 1; } - | '-' { utcsign = -1; } - -utcoffset_value: - plusminus INTNUMBER INTNUMBER - { - icalparser_yy_value = icalvalue_new_utcoffset( utcsign * ($2*3600) + ($3*60) ); - } - - | plusminus INTNUMBER INTNUMBER INTNUMBER - { - icalparser_yy_value = icalvalue_new_utcoffset(utcsign * ($2*3600) + ($3*60) +($4)); - } - - - -%% - - -void clear_recur() -{ - memset(&skiplist, ICAL_RECURRENCE_ARRAY_MAX_BYTE, sizeof(skiplist)); - skippos = 0; - - icalrecurrencetype_clear(&recur); - recur.week_start = ICAL_MONDAY_WEEKDAY; -} - -void copy_list(short* array, size_t size) -{ - memcpy(array, skiplist, size*sizeof(short)); - memset(&skiplist,ICAL_RECURRENCE_ARRAY_MAX_BYTE, sizeof(skiplist)); - skippos = 0; -} - -struct icaltimetype fill_datetime(char* datestr, char* timestr) -{ - struct icaltimetype stm; - - memset(&stm,0,sizeof(stm)); - - if (datestr != 0){ - sscanf(datestr,"%4d%2d%2d",&(stm.year), &(stm.month), - &(stm.day)); - } - - if (timestr != 0){ - sscanf(timestr,"%2d%2d%2d", &(stm.hour), &(stm.minute), - &(stm.second)); - } - - return stm; - -} - -void yyerror(char* s) -{ - /*fprintf(stderr,"Parse error \'%s\'\n", s);*/ -} - diff --git a/libical/src/libical/pvl.c b/libical/src/libical/pvl.c deleted file mode 100644 index 94eaeac874..0000000000 --- a/libical/src/libical/pvl.c +++ /dev/null @@ -1,761 +0,0 @@ -/*====================================================================== - FILE: pvl.c - CREATOR: eric November, 1995 - - - (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org -======================================================================*/ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include "pvl.h" -#include -#include -#include - - - -/* - struct pvl_list_t - - The list structure. This is the hanlde for the entire list - - This type is also private. Use pvl_list instead - - */ - -typedef struct pvl_list_t -{ - int MAGIC; /* Magic Identifier */ - struct pvl_elem_t *head; /* Head of list */ - struct pvl_elem_t *tail; /* Tail of list */ - int count; /* Number of items in the list */ - struct pvl_elem_t *p; /* Pointer used for iterators */ -} pvl_list_t; - - - - -/* This global is incremented for each call to pvl_new_element(); it gives each - * list a unique identifer */ - -int pvl_elem_count = 0; -int pvl_list_count = 0; - - -/*---------------------------------------------------------------------- - Function: pvl_list pvl_newlist() - - Purpose: - - Creates a new list, clears the pointers and assigns a magic number - - Returns: - - Pointer to the new list - 0 if there is no available memory. - *----------------------------------------------------------------------*/ - -pvl_list -pvl_newlist() -{ - struct pvl_list_t *L; - - if ( ( L = (struct pvl_list_t*)malloc(sizeof(struct pvl_list_t))) == 0) - { - errno = ENOMEM; - return 0; - } - - L->MAGIC = pvl_list_count; - pvl_list_count++; - L->head = 0; - L->tail = 0; - L->count = 0; - L->p = 0; - - return L; -} - -void -pvl_free(pvl_list l) -{ - struct pvl_list_t *L = (struct pvl_list_t *)l; - - pvl_clear(l); - - free(L); -} - -/*---------------------------------------------------------------------- - Function: pvl_new_element(void *d, struct pvl_elem_t *next,struct pvl_elem_t *prior) - - Purpose: - Creates a new list element, assigns a magic number, and assigns - the next and previous pointers. - - Passing in the next and previous points may seem odd, but it allos the user - to set them while keeping the internal data hidden. In nearly all cases, - the user is the pvl library itself. - - Parameters: - - d The data item to be stored in the list - next Pointer value to assign to the member "next" - prior Pointer value to assign to the member "prior" - - Returns: - - A pointer to the new element. - 0 if there is no memory available. - - *----------------------------------------------------------------------*/ - -pvl_elem -pvl_new_element(void *d, pvl_elem next,pvl_elem prior) -{ - struct pvl_elem_t *E; - - if ( ( E = (struct pvl_elem_t*)malloc(sizeof(struct pvl_elem_t))) == 0) - { - errno = ENOMEM; - return 0; - } - - E->MAGIC = pvl_elem_count++; - E->d = d; - E->next = next; - E->prior = prior; - - return (pvl_elem)E; -} - -/*---------------------------------------------------------------------- - Function: pvl_unshift(pvl_list l,void *d) - - Purpose: - - Add a new element to the from of the list - - Parameters: - - l The list to add the item to - d Pointer to the item to add - - Returns: - *----------------------------------------------------------------------*/ - -void -pvl_unshift(pvl_list l,void *d) -{ - struct pvl_list_t *L = (struct pvl_list_t *)l; - struct pvl_elem_t *E = pvl_new_element(d,L->head,0); - - if (E->next != 0) - { - /* Link the head node to it */ - E->next->prior = E; - } - - /* move the head */ - L->head = E; - - /* maybe move the tail */ - - if (L->tail == 0) - { - L->tail = E; - } - - L->count++; -} - -/*---------------------------------------------------------------------- - Function: pvl_shift(pvl_list l) - - Purpose: - - Remove an element from the front of the list - - Parameters: - - l The list to operate on - - Returns: - *----------------------------------------------------------------------*/ - -void* -pvl_shift(pvl_list l) -{ - struct pvl_list_t *L = (struct pvl_list_t *)l; - - if (L->head == 0) - { - return 0; - } - - return pvl_remove(l,(void*)L->head); - -} - -/*---------------------------------------------------------------------- - Function: void pvl_push(pvl_list l,void *d) - - Purpose: - - Add a new item to the tail of the list - - Paramters: - - l The list to operate on - d Pointer to the item to add - - Returns: - *----------------------------------------------------------------------*/ - -void -pvl_push(pvl_list l,void *d) -{ - struct pvl_list_t *L = (struct pvl_list_t *)l; - struct pvl_elem_t *E = pvl_new_element(d,0,L->tail); - - /* These are done in pvl_new_element - E->next = 0; - E->prior = L->tail; - */ - - if (L->tail != 0) - { - L->tail->next = E; - } - - if (L->head == 0) - { - L->head = E; - } - - L->tail = E; - - L->count++; - -} - -/*---------------------------------------------------------------------- - Function: void* pvl_pop(pvl_list l) - - Purpose: - - Remove an element from the tail of the list - - Paramters: - - l The list to operate on - - Returns: - *----------------------------------------------------------------------*/ - -void* -pvl_pop(pvl_list l) -{ - - struct pvl_list_t *L = (struct pvl_list_t *)l; - - if ( L->tail == 0) - { - return 0; - } - - return pvl_remove(l,(void*) L->tail);; - -} - - -/*---------------------------------------------------------------------- - Function: void pvl_insert_ordered(pvl_list l,pvl_comparef f,void *d) - - Purpose: - - Add a new item to a list that is ordered by a comparison function. - This routine assumes that the list is properly ordered. - - l The list to operate on - f Pointer to a comparison function - d Pointer to data to pass to the comparison function - - Returns: - - void - - *----------------------------------------------------------------------*/ - -void -pvl_insert_ordered(pvl_list l,pvl_comparef f,void *d) -{ - struct pvl_list_t *L = (struct pvl_list_t *)l; - - struct pvl_elem_t *P; - - L->count++; - - /* Empty list, add to head */ - - if(L->head == 0) - { - pvl_unshift(l,d); - return; - } - - /* smaller than head, add to head */ - - if ( ((*f)(d,L->head->d)) < 0) - { - pvl_unshift(l,d); - return; - } - - /* larger than tail, add to tail */ - if ( (*f)(d,L->tail->d) > 0) - { - pvl_push(l,d); - return; - } - - - /* Search for the first element that is smaller, and add before it */ - - for (P=L->head; P != 0; P = P->next) - { - if ( (*f)(P->d,d) > 0) - { - pvl_insert_before(l,P,d); - return; - } - } - - /* badness, choke */ - - assert(0); - -} - -/*---------------------------------------------------------------------- - Function: void pvl_insert_after(pvl_list l,pvl_elem p,void *d) - - Purpose: - - Add a new item after the referenced element. - - Parameters: - - l The list to operate on - p The list element to add the item after - d Pointer to the item to add. - - Returns: - - void - - *----------------------------------------------------------------------*/ - -void -pvl_insert_after(pvl_list l,pvl_elem p,void *d) -{ - struct pvl_list_t *L = (struct pvl_list_t *)l; - struct pvl_elem_t *P = (struct pvl_elem_t *)p; - struct pvl_elem_t *E = 0; - - L->count++; - - if (P == 0) - { - pvl_unshift(l,d); - return; - } - - if ( P == L->tail) - { - E = pvl_new_element(d,0,P); - L->tail = E; - E->prior->next = E; - } - else - { - E = pvl_new_element(d,P->next,P); - E->next->prior = E; - E->prior->next = E; - } -} - -/*---------------------------------------------------------------------- - Function: void pvl_insert_before(pvl_list l,pvl_elem p,void *d) - - Purpose: - - Add an item after a referenced item - - Parameters: - - l The list to operate on - p The list element to add the item before - d Pointer to the data to be added. - - Returns: - *----------------------------------------------------------------------*/ - -void -pvl_insert_before(pvl_list l,pvl_elem p,void *d) -{ - struct pvl_list_t *L = (struct pvl_list_t *)l; - struct pvl_elem_t *P = (struct pvl_elem_t *)p; - struct pvl_elem_t *E = 0; - - L->count++; - - if (P == 0) - { - pvl_unshift(l,d); - return; - } - - if ( P == L->head) - { - E = pvl_new_element(d,P,0); - E->next->prior = E; - L->head = E; - } - else - { - E = pvl_new_element(d,P,P->prior); - E->prior->next = E; - E->next->prior = E; - } -} - -/*---------------------------------------------------------------------- - Function: void pvl_remove(pvl_list l,pvl_elem e) - - Purpose: - - Remove the referenced item from the list - - This routine will free the element, but not the data item that the - element contains. - - Parameters: - - l The list to operate on - e The element to remove. - - Returns: - *----------------------------------------------------------------------*/ - -void* -pvl_remove(pvl_list l,pvl_elem e) -{ - struct pvl_list_t *L = (struct pvl_list_t *)l; - struct pvl_elem_t *E = (struct pvl_elem_t *)e; - void* data; - - if (E == L->head) - { - if (E->next != 0) - { - E->next->prior = 0; - L->head = E->next; - } else { - /* E Also points to tail -> only one element in list */ - L->tail = 0; - L->head = 0; - } - } - else if (E == L->tail) - { - if (E->prior != 0) - { - E->prior->next = 0; - L->tail = E->prior; - } else { - /* E points to the head, so it was the last element */ - /* This case should be taken care of in the previous clause */ - L->head = 0; - L->tail = 0; - } - } - else - { - E->prior->next = E->next; - E->next->prior = E->prior; - } - - - L->count--; - - data = E->d; - - E->prior = 0; - E->next = 0; - E->d = 0; - - free(E); - - return data; - -} - -/*---------------------------------------------------------------------- - Function: pvl_elem pvl_find(pvl_list l,pvl_findf f,void* v) - - Purpose: - - Return a pointer to data that satisfies a function - - This routine will interate through the entire list and call the - find function for each item. It will break and return a pointer to the - data that causes the find function to return 1. - - Parameters: - - l The list to operate on - f Pointer to the find function - v Pointer to constant data to pass into the function - - Returns: - - Pointer to the element that the find function found. - - *----------------------------------------------------------------------*/ - -pvl_elem -pvl_find(pvl_list l,pvl_findf f,void* v) -{ - pvl_elem e; - - for (e=pvl_head(l); e!= 0; e = pvl_next(e)) - { - if ( (*f)(((struct pvl_elem_t *)e)->d,v) == 1) - { - /* Save this elem for a call to find_next */ - ((struct pvl_list_t *)l)->p = e; - return e; - } - } - - return 0; - -} -/*---------------------------------------------------------------------- - Function: void* pvl_find_next(pvl_list l,pvl_findf f,void* v) - - Purpose: - - Like pvl_find(), but continues the search where the last find() or - find_next() left off - - Parameters: - - l The list to operate on - f Pointer to the find function - v Pointer to constant data to pass into the function - - Returns: - - Pointer to the element that the find function found. - - *----------------------------------------------------------------------*/ - -pvl_elem -pvl_find_next(pvl_list l,pvl_findf f,void* v) -{ - - pvl_elem e; - - for (e=pvl_head(l); e!= 0; e = pvl_next(e)) - { - if ( (*f)(((struct pvl_elem_t *)e)->d,v) == 1) - { - /* Save this elem for a call to find_next */ - ((struct pvl_list_t *)l)->p = e; - return e; - } - } - - return 0; - -} - -/*---------------------------------------------------------------------- - Function: void pvl_clear(pvl_list l) - - Purpose: - - Remove the all the elements in the list. The does not free the data items - the elements hold. - - - Returns: - *----------------------------------------------------------------------*/ - -void -pvl_clear(pvl_list l) -{ - pvl_elem e = pvl_head(l); - pvl_elem next; - - if (e == 0) { - return; - } - - while(e != 0) - { - next = pvl_next(e); - pvl_remove(l,e); - e = next; - } -} - -/*---------------------------------------------------------------------- - Function: int pvl_count(pvl_list l) - - Purpose: - - Returns the number of items in the list. - - Returns: - *----------------------------------------------------------------------*/ - -int -pvl_count(pvl_list l) -{ - struct pvl_list_t *L = (struct pvl_list_t *)l; - - return L->count; -} - - -/*---------------------------------------------------------------------- - Function: pvl_elem pvl_next(pvl_elem e) - - Purpose: - Returns a pointer to the given element - - Returns: - *----------------------------------------------------------------------*/ - -pvl_elem -pvl_next(pvl_elem e) -{ - struct pvl_elem_t *E = (struct pvl_elem_t *)e; - - if (E == 0){ - return 0; - } - - return (pvl_elem)E->next; -} - -/*---------------------------------------------------------------------- - Function: pvl_elem pvl_prior(pvl_elem e) - - Purpose: - - Returns a pointer to the element previous to the element given. - - Returns: - *----------------------------------------------------------------------*/ - -pvl_elem -pvl_prior(pvl_elem e) -{ - struct pvl_elem_t *E = (struct pvl_elem_t *)e; - - return (pvl_elem)E->prior; -} - -/*---------------------------------------------------------------------- - Function: pvl_elem pvl_head(pvl_list l ) - - Purpose: - - Returns a pointer to the first item in the list. - - Returns: - *----------------------------------------------------------------------*/ -pvl_elem -pvl_head(pvl_list l ) -{ - struct pvl_list_t *L = (struct pvl_list_t *)l; - - return (pvl_elem)L->head; -} - -/*---------------------------------------------------------------------- - Function: pvl_elem pvl_tail(pvl_list l) - - Purpose: - - Returns a pointer to the last item in the list. - - Returns: - *----------------------------------------------------------------------*/ -pvl_elem -pvl_tail(pvl_list l) -{ - struct pvl_list_t *L = (struct pvl_list_t *)l; - return (pvl_elem)L->tail; -} - -/*---------------------------------------------------------------------- - Function: - - - Purpose: - - - Returns: - *----------------------------------------------------------------------*/ - -#ifndef PVL_USE_MACROS -void* -pvl_data(pvl_elem e) -{ - struct pvl_elem_t *E = (struct pvl_elem_t *)e; - - if ( e == 0){ - return 0; - } - - return E->d; -} -#endif - -/*---------------------------------------------------------------------- - Function: void pvl_apply(pvl_list l,pvl_applyf f, void *v) - - Purpose: - - Call a function for every item in the list. - - Paramters: - - l The list to operate on - f Pointer to the function to call - v Data to pass to the function on every iteration - - Returns: - - void - *----------------------------------------------------------------------*/ - -void -pvl_apply(pvl_list l,pvl_applyf f, void *v) -{ - pvl_elem e; - - for (e=pvl_head(l); e!= 0; e = pvl_next(e)) - { - (*f)(((struct pvl_elem_t *)e)->d,v); - } - -} diff --git a/libical/src/libical/pvl.h b/libical/src/libical/pvl.h deleted file mode 100644 index 40ca516e9f..0000000000 --- a/libical/src/libical/pvl.h +++ /dev/null @@ -1,94 +0,0 @@ -/*====================================================================== - FILE: pvl.h - CREATOR: eric November, 1995 - - - (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org -======================================================================*/ - - -#ifndef __PVL_H__ -#define __PVL_H__ - -typedef void* pvl_list; -typedef void* pvl_elem; - -/* - struct pvl_elem_t - - This type is private. Always use pvl_elem instead. The struct would - not even appear in this header except to make code in the USE_MACROS - blocks work - - */ -typedef struct pvl_elem_t -{ - int MAGIC; /* Magic Identifier */ - void *d; /* Pointer to data user is storing */ - struct pvl_elem_t *next; /* Next element */ - struct pvl_elem_t *prior; /* prior element */ -} pvl_elem_t; - - - -/* This global is incremented for each call to pvl_new_element(); it gives each - * list a unique identifer */ - -extern int pvl_elem_count; -extern int pvl_list_count; - -/* Create new lists or elements */ -pvl_elem pvl_new_element(void* d, pvl_elem next,pvl_elem prior); -pvl_list pvl_newlist(); -void pvl_free(pvl_list); - -/* Add, remove, or get the head of the list */ -void pvl_unshift(pvl_list l,void *d); -void* pvl_shift(pvl_list l); -pvl_elem pvl_head(pvl_list); - -/* Add, remove or get the tail of the list */ -void pvl_push(pvl_list l,void *d); -void* pvl_pop(pvl_list l); -pvl_elem pvl_tail(pvl_list); - -/* Insert elements in random places */ -typedef int (*pvl_comparef)(void* a, void* b); /* a, b are of the data type*/ -void pvl_insert_ordered(pvl_list l,pvl_comparef f,void *d); -void pvl_insert_after(pvl_list l,pvl_elem e,void *d); -void pvl_insert_before(pvl_list l,pvl_elem e,void *d); - -/* Remove an element, or clear the entire list */ -void* pvl_remove(pvl_list,pvl_elem); /* Remove element, return data */ -void pvl_clear(pvl_list); /* Remove all elements, de-allocate all data */ - -int pvl_count(pvl_list); - -/* Navagate the list */ -pvl_elem pvl_next(pvl_elem e); -pvl_elem pvl_prior(pvl_elem e); - -/* get the data in the list */ -#ifndef PVL_USE_MACROS -void* pvl_data(pvl_elem); -#else -#define pvl_data(x) x==0 ? 0 : ((struct pvl_elem_t *)x)->d; -#endif - - -/* Find an element for which a function returns true */ -typedef int (*pvl_findf)(void* a, void* b); /*a is list elem, b is other data*/ -pvl_elem pvl_find(pvl_list l,pvl_findf f,void* v); -pvl_elem pvl_find_next(pvl_list l,pvl_findf f,void* v); - -/* Pass each element in the list to a function */ -typedef void (*pvl_applyf)(void* a, void* b); /*a is list elem, b is other data*/ -void pvl_apply(pvl_list l,pvl_applyf f, void *v); - - -#endif /* __PVL_H__ */ - - - - - diff --git a/libical/src/libical/sspm.c b/libical/src/libical/sspm.c deleted file mode 100644 index 36f69b506a..0000000000 --- a/libical/src/libical/sspm.c +++ /dev/null @@ -1,1191 +0,0 @@ -/* -*- Mode: C -*- - ====================================================================== - FILE: sspm.c Parse Mime - CREATOR: eric 25 June 2000 - - $Id$ - $Locker$ - - The contents of this file are subject to the Mozilla Public License - Version 1.0 (the "License"); you may not use this file except in - compliance with the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - - Software distributed under the License is distributed on an "AS IS" - basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See - the License for the specific language governing rights and - limitations under the License. - - - 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 Initial Developer of the Original Code is Eric Busboom - - (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org - ======================================================================*/ - -#include -#include -#include "sspm.h" -#include -#include /* for tolower */ -#include /* for malloc, free */ - - -#ifdef DMALLOC -#include "dmalloc.h" -#endif - -#define TMP_BUF_SIZE 1024 - - -enum mime_state { - UNKNOWN_STATE, - IN_HEADER, - END_OF_HEADER, - IN_BODY, - OPENING_PART, - END_OF_PART, - TERMINAL_END_OF_PART, - END_OF_INPUT -}; - -struct mime_impl{ - struct sspm_part *parts; - size_t max_parts; - int part_no; - int level; - struct sspm_action_map *actions; - char* (*get_string)(char *s, size_t size, void* data); - void* get_string_data; - char temp[TMP_BUF_SIZE]; - enum mime_state state; -}; - -void sspm_free_header(struct sspm_header *header); -void* sspm_make_multipart_part(struct mime_impl *impl,struct sspm_header *header); -void sspm_read_header(struct mime_impl *impl,struct sspm_header *header); - -char* sspm_strdup(char* str){ - - char* s; - - s = strdup(str); - - return s; -} - - -struct major_content_type_map -{ - enum sspm_major_type type; - char* str; - -} major_content_type_map[] = -{ - {SSPM_MULTIPART_MAJOR_TYPE,"multipart" }, - {SSPM_TEXT_MAJOR_TYPE,"text" }, - {SSPM_TEXT_MAJOR_TYPE,"text" }, - {SSPM_IMAGE_MAJOR_TYPE,"image" }, - {SSPM_AUDIO_MAJOR_TYPE,"audio" }, - {SSPM_VIDEO_MAJOR_TYPE,"video" }, - {SSPM_APPLICATION_MAJOR_TYPE,"application" }, - {SSPM_MULTIPART_MAJOR_TYPE,"multipart" }, - {SSPM_MESSAGE_MAJOR_TYPE,"message" }, - {SSPM_UNKNOWN_MAJOR_TYPE,"" }, -}; - -struct minor_content_type_map -{ - enum sspm_minor_type type; - char* str; - -} minor_content_type_map[] = -{ - {SSPM_ANY_MINOR_TYPE,"*" }, - {SSPM_PLAIN_MINOR_TYPE,"plain" }, - {SSPM_RFC822_MINOR_TYPE,"rfc822" }, - {SSPM_DIGEST_MINOR_TYPE,"digest" }, - {SSPM_CALENDAR_MINOR_TYPE,"calendar" }, - {SSPM_MIXED_MINOR_TYPE,"mixed" }, - {SSPM_RELATED_MINOR_TYPE,"related" }, - {SSPM_ALTERNATIVE_MINOR_TYPE,"alternative" }, - {SSPM_PARALLEL_MINOR_TYPE, "parallel" }, - {SSPM_UNKNOWN_MINOR_TYPE,"" } -}; - - - - -char* sspm_get_parameter(char* line, char* parameter) -{ - char *p,*s,*q; - static char name[1024]; - - /* Find where the parameter name is in the line */ - p = strstr(line,parameter); - - if( p == 0){ - return 0; - } - - /* skip over the parameter name, the '=' and any blank spaces */ - - p+=strlen(parameter); - - while(*p==' ' || *p == '='){ - p++; - } - - /*now find the next semicolon*/ - - s = strchr(p,';'); - - /* Strip of leading quote */ - q = strchr(p,'\"'); - - if(q !=0){ - p = q+1; - } - - if(s != 0){ - strncpy(name,p,(size_t)s-(size_t)p); - } else { - strcpy(name,p); - } - - /* Strip off trailing quote, if it exists */ - - q = strrchr(name,'\"'); - - if (q != 0){ - *q='\0'; - } - - return name; -} - -char* sspm_property_name(char* line) -{ - static char name[1024]; - char *c = strchr(line,':'); - - if(c != 0){ - strncpy(name,line,(size_t)c-(size_t)line); - name[(size_t)c-(size_t)line] = '\0'; - return name; - } else { - return 0; - } -} - -char* sspm_value(char* line) -{ - static char value[1024]; - - char *c,*s, *p; - - /* Find the first colon and the next semicolon */ - - c = strchr(line,':'); - s = strchr(c,';'); - - /* Skip the colon */ - c++; - - if (s == 0){ - s = c+strlen(line); - } - - for(p=value; c != s; c++){ - if(*c!=' ' && *c!='\n'){ - *(p++) = *c; - } - } - - *p='\0'; - - return value; - -} - -char *mime_headers[] = { - "Content-Type", - "Content-Transfer-Encoding", - "Content-Disposition", - "Content-Id", - "Mime-Version", - 0 -}; - - -void* sspm_default_new_part() -{ - return 0; -} -void sspm_default_add_line(void *part, struct sspm_header *header, - char* line, size_t size) -{ -} - -void* sspm_default_end_part(void* part) -{ - return 0; -} - -void sspm_default_free_part(void *part) -{ -} - - - -struct sspm_action_map sspm_action_map[] = -{ - {SSPM_UNKNOWN_MAJOR_TYPE,SSPM_UNKNOWN_MINOR_TYPE,sspm_default_new_part,sspm_default_add_line,sspm_default_end_part,sspm_default_free_part}, -}; - -int sspm_is_mime_header(char *line) -{ - char *name = sspm_property_name(line); - int i; - - if(name == 0){ - return 0; - } - - for(i = 0; mime_headers[i] != 0; i++){ - if(strcasecmp(name, mime_headers[i]) == 0) - return 1; - } - - return 0; -} - -int sspm_is_mail_header(char* line) -{ - char *name = sspm_property_name(line); - - if (name != 0){ - return 1; - } - - return 0; - -} - -int sspm_is_blank(char* line) -{ - char *p; - char c =0; - - for(p=line; *p!=0; p++){ - if( ! (*p == ' '|| *p == '\t' || *p=='\n') ){ - c++; - } - } - - if (c==0){ - return 1; - } - - return 0; - -} - -int sspm_is_continuation_line(char* line) -{ - if (line[0] == ' '|| line[0] == '\t' ) { - return 1; - } - - return 0; -} - -int sspm_is_mime_boundary(char *line) -{ - if( line[0] == '-' && line[1] == '-') { - return 1; - } - - return 0; -} - -int sspm_is_mime_terminating_boundary(char *line) -{ - - - if (sspm_is_mime_boundary(line) && - strstr(line,"--\n")){ - return 1; - } - - return 0; -} - -enum line_type { - EMPTY, - BLANK, - MIME_HEADER, - MAIL_HEADER, - HEADER_CONTINUATION, - BOUNDARY, - TERMINATING_BOUNDARY, - UNKNOWN_TYPE -}; - - -enum line_type get_line_type(char* line){ - - if (line == 0){ - return EMPTY; - } else if(sspm_is_blank(line)){ - return BLANK; - } else if (sspm_is_mime_header(line)){ - return MIME_HEADER; - } else if (sspm_is_mail_header(line)){ - return MAIL_HEADER; - } else if (sspm_is_continuation_line(line)){ - return HEADER_CONTINUATION; - } else if (sspm_is_mime_terminating_boundary(line)){ - return TERMINATING_BOUNDARY; - } else if (sspm_is_mime_boundary(line)) { - return BOUNDARY; - } else { - return UNKNOWN_TYPE; - } - - -} - - -struct sspm_action_map get_action(struct mime_impl *impl, - enum sspm_major_type major, - enum sspm_minor_type minor) -{ - int i; - - /* Read caller suppled action map */ - - if (impl->actions != 0){ - for(i=0; impl->actions[i].major != SSPM_UNKNOWN_MAJOR_TYPE; i++){ - if((major == impl->actions[i].major && - minor == impl->actions[i].minor) || - (major == impl->actions[i].major && - minor == SSPM_ANY_MINOR_TYPE)){ - return impl->actions[i]; - } - } - } - - /* Else, read default action map */ - - for(i=0; sspm_action_map[i].major != SSPM_UNKNOWN_MAJOR_TYPE; i++){ - if((major == sspm_action_map[i].major && - minor == sspm_action_map[i].minor) || - (major == sspm_action_map[i].major && - minor == SSPM_ANY_MINOR_TYPE)){ - break; - } - } - - return sspm_action_map[i]; -} - - -char* sspm_lowercase(char* str) -{ - char* p = 0; - char* new = sspm_strdup(str); - - if(str ==0){ - return 0; - } - - for(p = new; *p!=0; p++){ - *p = tolower(*p); - } - - return new; -} - -enum sspm_major_type sspm_find_major_content_type(char* type) -{ - int i; - - char* ltype = sspm_lowercase(type); - - for (i=0; major_content_type_map[i].type != SSPM_UNKNOWN_MINOR_TYPE; i++){ - if(strncmp(ltype, major_content_type_map[i].str, - strlen(major_content_type_map[i].str))==0){ - free(ltype); - return major_content_type_map[i].type; - } - } - free(ltype); - return major_content_type_map[i].type; /* Should return SSPM_UNKNOWN_MINOR_TYPE */ -} - -enum sspm_minor_type sspm_find_minor_content_type(char* type) -{ - int i; - char* ltype = sspm_lowercase(type); - - char *p = strchr(ltype,'/'); - - if (p==0){ - return SSPM_UNKNOWN_MINOR_TYPE; - } - - p++; /* Skip the '/' */ - - for (i=0; minor_content_type_map[i].type != SSPM_UNKNOWN_MINOR_TYPE; i++){ - if(strncmp(p, minor_content_type_map[i].str, - strlen(minor_content_type_map[i].str))==0){ - free(ltype); - return minor_content_type_map[i].type; - } - } - - free(ltype); - return minor_content_type_map[i].type; /* Should return SSPM_UNKNOWN_MINOR_TYPE */ -} - -char* sspm_major_type_string(enum sspm_major_type type) -{ - int i; - - for (i=0; major_content_type_map[i].type != SSPM_UNKNOWN_MINOR_TYPE; - i++){ - - if(type == major_content_type_map[i].type){ - return major_content_type_map[i].str; - } - } - - return major_content_type_map[i].str; /* Should return SSPM_UNKNOWN_MINOR_TYPE */ -} - -char* sspm_minor_type_string(enum sspm_major_type type) -{ - int i; - for (i=0; minor_content_type_map[i].type != SSPM_UNKNOWN_MINOR_TYPE; - i++){ - if(type == minor_content_type_map[i].type){ - return minor_content_type_map[i].str; - } - } - - return minor_content_type_map[i].str; /* Should return SSPM_UNKNOWN_MINOR_TYPE */ -} - - -/* Interpret a header line and add its data to the header - structure. */ -void sspm_build_header(struct sspm_header *header, char* line) -{ - char *prop; - char *val; - - val = sspm_strdup(sspm_value(line)); - prop = sspm_strdup(sspm_property_name(line)); - - if(strcmp(prop,"Content-Type") == 0){ - - /* Create a new mime_header, fill in content-type - and possibly boundary */ - - char* boundary= sspm_get_parameter(line,"boundary"); - - header->def = 0; - header->major = sspm_find_major_content_type(val); - header->minor = sspm_find_minor_content_type(val); - - if(header->minor == SSPM_UNKNOWN_MINOR_TYPE){ - char *p = strchr(val,'/'); - - if (p != 0){ - p++; /* Skip the '/' */ - - header->minor_text = sspm_strdup(p); - } else { - /* Error, malformed content type */ - header->minor_text = sspm_strdup("unknown"); - } - } - if (boundary != 0){ - header->boundary = sspm_strdup(boundary); - } - - } else if(strcmp(prop,"Content-Transfer-Encoding")==0){ - char* encoding = sspm_value(line); - char* lencoding = sspm_lowercase(encoding); - - if(strcmp(lencoding,"base64")==0){ - header->encoding = SSPM_BASE64_ENCODING; - } else if(strcmp(lencoding,"quoted-printable")==0){ - header->encoding = SSPM_QUOTED_PRINTABLE_ENCODING; - } else if(strcmp(lencoding,"binary")==0){ - header->encoding = SSPM_BINARY_ENCODING; - } else if(strcmp(lencoding,"7bit")==0){ - header->encoding = SSPM_7BIT_ENCODING; - } else if(strcmp(lencoding,"8bit")==0){ - header->encoding = SSPM_8BIT_ENCODING; - } else { - header->encoding = SSPM_UNKNOWN_ENCODING; - } - - free(lencoding); - - header->def = 0; - - } else if(strcmp(prop,"Content-Id")==0){ - char* cid = sspm_value(line); - header->content_id = sspm_strdup(cid); - header->def = 0; - - } - free(val); - free(prop); -} - -char* sspm_get_next_line(struct mime_impl *impl) -{ - char* s; - s = impl->get_string(impl->temp,TMP_BUF_SIZE,impl->get_string_data); - - if(s == 0){ - impl->state = END_OF_INPUT; - } - return s; -} - - -void sspm_store_part(struct mime_impl *impl, struct sspm_header header, - int level, void *part) -{ - - impl->parts[impl->part_no].header = header; - impl->parts[impl->part_no].level = level; - impl->parts[impl->part_no].data = part; - impl->part_no++; -} - -void sspm_set_error(struct sspm_header* header, enum sspm_error error, - char* message) -{ - header->error = error; - - if(header->error_text!=0){ - free(header->error_text); - } - - header->def = 0; - - if(message != 0){ - header->error_text = sspm_strdup(message); - } else { - header->error_text = 0; - } - -} - -void* sspm_make_part(struct mime_impl *impl, - struct sspm_header *header, - struct sspm_header *parent_header) -{ - - /* For a single part type, read to the boundary, if there is a - boundary. Otherwise, read until the end of input. This routine - assumes that the caller has read the header and has left the input - at the first blank line */ - - char *line; - void *part, *end_part; - int end = 0; - - struct sspm_action_map action = get_action( - impl, - header->major, - header->minor); - - part =action.new_part(); - - impl->state = IN_BODY; - - while(end == 0 && (line = sspm_get_next_line(impl)) != 0){ - - if(sspm_is_mime_boundary(line)){ - - /* If there is a boundary, then this must be a multipart - part, so there must be a parent_header. */ - if(parent_header == 0){ - char* boundary; - end = 1; - end_part = 0; - - sspm_set_error(header,SSPM_UNEXPECTED_BOUNDARY_ERROR,line); - - /* Read until the paired terminating boundary */ - if((boundary = (char*)malloc(strlen(line)+5)) == 0){ - fprintf(stderr,"Out of memory"); - abort(); - } - strcpy(boundary,line); - strcat(boundary,"--"); - while((line = sspm_get_next_line(impl)) != 0){ - /*printf("Error: %s\n",line);*/ - if(strcmp(boundary,line)==0){ - break; - } - } - free(boundary); - - break; - } - - if(strncmp((line+2),parent_header->boundary, - sizeof(parent_header->boundary)) == 0){ - end_part = action.end_part(part); - - if(sspm_is_mime_boundary(line)){ - impl->state = END_OF_PART; - } else if ( sspm_is_mime_terminating_boundary(line)){ - impl->state = TERMINAL_END_OF_PART; - } - end = 1; - } else { - /* Error, this is not the correct terminating boundary*/ - - /* read and discard until we get the right boundary. */ - char* boundary; - char msg[256]; - - snprintf(msg,256, - "Expected: %s--. Got: %s", - parent_header->boundary,line); - - sspm_set_error(parent_header, - SSPM_WRONG_BOUNDARY_ERROR,msg); - - /* Read until the paired terminating boundary */ - if((boundary = (char*)malloc(strlen(line)+5)) == 0){ - fprintf(stderr,"Out of memory"); - abort(); - } - strcpy(boundary,line); - strcat(boundary,"--"); - while((line = sspm_get_next_line(impl)) != 0){ - /*printf("Error: %s\n",line);*/ - if(strcmp(boundary,line)==0){ - break; - } - } - free(boundary); - - } - } else { - size_t size; - char* data; - char* rtrn=0; - size = strlen(line); - - data = (char*)malloc(size+2); - if (header->encoding == SSPM_BASE64_ENCODING){ - rtrn = decode_base64(data,line,&size); - } else if(header->encoding == SSPM_QUOTED_PRINTABLE_ENCODING){ - rtrn = decode_quoted_printable(data,line,&size); - } - - if(rtrn == 0){ - strcpy(data,line); - } - - /* add a end-of-string after the data, just in case binary - data from decode64 gets passed to a tring handling - routine in add_line */ - data[size+1]='\0'; - - action.add_line(part,header,data,size); - - free(data); - } - } - - if (end == 0){ - /* End the part if the input is exhausted */ - end_part = action.end_part(part); - } - - return end_part; -} - - -void* sspm_make_multipart_subpart(struct mime_impl *impl, - struct sspm_header *parent_header) -{ - struct sspm_header header; - char *line; - void* part; - - if(parent_header->boundary == 0){ - /* Error. Multipart headers must have a boundary*/ - - sspm_set_error(parent_header,SSPM_NO_BOUNDARY_ERROR,0); - /* read all of the reamining lines */ - while((line = sspm_get_next_line(impl)) != 0){ - } - - return 0; - } - - - /* Step 1: Read the opening boundary */ - - if(get_line_type(impl->temp) != BOUNDARY){ - while((line=sspm_get_next_line(impl)) != 0 ){ - if(sspm_is_mime_boundary(line)){ - - assert(parent_header != 0); - - /* Check if it is the right boundary */ - if(!sspm_is_mime_terminating_boundary(line) && - strncmp((line+2),parent_header->boundary, - sizeof(parent_header->boundary)) - == 0){ - /* The +2 in strncmp skips over the leading "--" */ - - break; - } else { - /* Got the wrong boundary, so read and discard - until we get the right boundary. */ - char* boundary; - char msg[256]; - - snprintf(msg,256, - "Expected: %s. Got: %s", - parent_header->boundary,line); - - sspm_set_error(parent_header, - SSPM_WRONG_BOUNDARY_ERROR,msg); - - /* Read until the paired terminating boundary */ - if((boundary = (char*)malloc(strlen(line)+5)) == 0){ - fprintf(stderr,"Out of memory"); - abort(); - } - strcpy(boundary,line); - strcat(boundary,"--"); - while((line = sspm_get_next_line(impl)) != 0){ - /*printf("Error: %s\n",line);*/ - if(strcmp(boundary,line)==0){ - break; - } - } - free(boundary); - - return 0; - } - } - } - } - - /* Step 2: Get the part header */ - sspm_read_header(impl,&header); - - /* If the header is still listed as default, there was probably an - error */ - if(header.def == 1 && header.error != SSPM_NO_ERROR){ - sspm_set_error(&header,SSPM_NO_HEADER_ERROR,0); - return 0; - } - - if(header.error!= SSPM_NO_ERROR){ - sspm_store_part(impl,header,impl->level,0); - return 0; - } - - /* Step 3: read the body */ - - if(header.major == SSPM_MULTIPART_MAJOR_TYPE){ - struct sspm_header *child_header; - child_header = &(impl->parts[impl->part_no].header); - - /* Store the multipart part */ - sspm_store_part(impl,header,impl->level,0); - - /* now get all of the sub-parts */ - part = sspm_make_multipart_part(impl,child_header); - - if(get_line_type(impl->temp) != TERMINATING_BOUNDARY){ - - sspm_set_error(child_header,SSPM_NO_BOUNDARY_ERROR,impl->temp); - return 0; - } - - sspm_get_next_line(impl); /* Step past the terminating boundary */ - - } else { - part = sspm_make_part(impl, &header,parent_header); - - memset(&(impl->parts[impl->part_no]), 0, sizeof(struct sspm_part)); - - sspm_store_part(impl,header,impl->level,part); - - } - - return part; -} - -void* sspm_make_multipart_part(struct mime_impl *impl,struct sspm_header *header) -{ - void *part=0; - - /* Now descend a level into each of the children of this part */ - impl->level++; - - /* Now we are working on the CHILD */ - memset(&(impl->parts[impl->part_no]), 0, sizeof(struct sspm_part)); - - do{ - part = sspm_make_multipart_subpart(impl,header); - - if (part==0){ - /* Clean up the part in progress */ - impl->parts[impl->part_no].header.major - = SSPM_NO_MAJOR_TYPE; - impl->parts[impl->part_no].header.minor - = SSPM_NO_MINOR_TYPE; - - } - - - } while (get_line_type(impl->temp) != TERMINATING_BOUNDARY && - impl->state != END_OF_INPUT); - - impl->level--; - - return 0; -} - - -void sspm_read_header(struct mime_impl *impl,struct sspm_header *header) -{ -#define BUF_SIZE 1024 -#define MAX_HEADER_LINES 25 - - char *buf; - char header_lines[MAX_HEADER_LINES][BUF_SIZE]; /* HACK, hard limits */ - int current_line = -1; - int end = 0; - - memset(header_lines,0,sizeof(header_lines)); - memset(header,0,sizeof(struct sspm_header)); - - /* Set up default header */ - header->def = 1; - header->major = SSPM_TEXT_MAJOR_TYPE; - header->minor = SSPM_PLAIN_MINOR_TYPE; - header->error = SSPM_NO_ERROR; - header->error_text = 0; - - /* Read all of the lines into memory */ - while(end==0&& (buf=sspm_get_next_line(impl)) != 0){ - - enum line_type line_type = get_line_type(buf); - - switch(line_type){ - case BLANK: { - end = 1; - impl->state = END_OF_HEADER; - break; - } - - case MAIL_HEADER: - case MIME_HEADER: { - impl->state = IN_HEADER; - current_line++; - - assert(strlen(buf) < BUF_SIZE); - - strcpy(header_lines[current_line],buf); - - break; - } - - case HEADER_CONTINUATION: { - char* last_line, *end; - char *buf_start; - - if(current_line < 0){ - /* This is not really a continuation line, since - we have not see any header line yet */ - sspm_set_error(header,SSPM_MALFORMED_HEADER_ERROR,buf); - return; - } - - last_line = header_lines[current_line]; - end = (char*) ( (size_t)strlen(last_line)+ - (size_t)last_line); - - impl->state = IN_HEADER; - - - /* skip over the spaces in buf start, and remove the new - line at the end of the lat line */ - if (last_line[strlen(last_line)-1] == '\n'){ - last_line[strlen(last_line)-1] = '\0'; - } - buf_start = buf; - while(*buf_start == ' ' ||*buf_start == '\t' ){ - buf_start++; - } - - assert( strlen(buf_start) + strlen(last_line) < BUF_SIZE); - - strcat(last_line,buf_start); - - break; - } - - default: { - sspm_set_error(header,SSPM_MALFORMED_HEADER_ERROR,buf); - return; - } - } - } - - - for(current_line = 0; - current_line < MAX_HEADER_LINES && header_lines[current_line][0] != 0; - current_line++){ - - sspm_build_header(header,header_lines[current_line]); - } - - -} - -/* Root routine for parsing mime entries*/ -int sspm_parse_mime(struct sspm_part *parts, - size_t max_parts, - struct sspm_action_map *actions, - char* (*get_string)(char *s, size_t size, void* data), - void *get_string_data, - struct sspm_header *first_header - ) -{ - struct mime_impl impl; - struct sspm_header header; - void *part; - int i; - - /* Initialize all of the data */ - memset(&impl,0,sizeof(struct mime_impl)); - memset(&header,0,sizeof(struct sspm_header)); - - for(i = 0; i<(int)max_parts; i++){ - parts[i].header.major = SSPM_NO_MAJOR_TYPE; - parts[i].header.minor = SSPM_NO_MINOR_TYPE; - } - - impl.parts = parts; - impl.max_parts = max_parts; - impl.part_no = 0; - impl.actions = actions; - impl.get_string = get_string; - impl.get_string_data = get_string_data; - - /* Read the header of the message. This will be the email header, - unless first_header is specified. But ( HACK) that var is not - currently being used */ - sspm_read_header(&impl,&header); - - if(header.major == SSPM_MULTIPART_MAJOR_TYPE){ - struct sspm_header *child_header; - child_header = &(impl.parts[impl.part_no].header); - - sspm_store_part(&impl,header,impl.level,0); - - part = sspm_make_multipart_part(&impl,child_header); - - } else { - part = sspm_make_part(&impl, &header, 0); - - memset(&(impl.parts[impl.part_no]), 0, sizeof(struct sspm_part)); - - sspm_store_part(&impl,header,impl.level,part); - } - - return 0; -} - -void sspm_free_parts(struct sspm_part *parts, size_t max_parts) -{ - int i; - - for(i = 0; i<(int)max_parts && parts[i].header.major != SSPM_NO_MAJOR_TYPE; - i++){ - sspm_free_header(&(parts[i].header)); - } -} - -void sspm_free_header(struct sspm_header *header) -{ - if(header->boundary!=0){ - free(header->boundary); - } - if(header->minor_text!=0){ - free(header->minor_text); - } - if(header->charset!=0){ - free(header->charset); - } - if(header->filename!=0){ - free(header->filename); - } - if(header->content_id!=0){ - free(header->content_id); - } - if(header->error_text!=0){ - free(header->error_text); - } -} - -/*********************************************************************** -The remaining code is beased on code from the mimelite distribution, -which has the following notice: - -| Authorship: -| Copyright (c) 1994 Gisle Hannemyr. -| Permission is granted to hack, make and distribute copies of this -| program as long as this copyright notice is not removed. -| Flames, bug reports, comments and improvements to: -| snail: Gisle Hannemyr, Brageveien 3A, 0452 Oslo, Norway -| email: Inet: gisle@oslonett.no - -The code is heavily modified by Eric Busboom. - -***********************************************************************/ - -unsigned char *decode_quoted_printable(unsigned char *dest, - unsigned char *src, - size_t *size) -{ - int cc; - size_t i=0; - - while (*src != 0 && i < *size) { - if (*src == '=') { - - src++; - if (!*src) { - break; - } - - /* remove soft line breaks*/ - if ((*src == '\n') || (*src == '\r')){ - src++; - if ((*src == '\n') || (*src == '\r')){ - src++; - } - continue; - } - - cc = isdigit(*src) ? (*src - '0') : (*src - 55); - cc *= 0x10; - src++; - if (!*src) { - break; - } - cc += isdigit(*src) ? (*src - '0') : (*src - 55); - - *dest = cc; - - } else { - *dest = *src; - } - - dest++; - src++; - i++; - } - - *dest = '\0'; - - *size = i; - return(dest); -} - -unsigned char *decode_base64(unsigned char *dest, - unsigned char *src, - size_t *size) -{ - int cc; - unsigned char buf[4] = {0,0,0,0}; - int p = 0; - int valid_data = 0; - size_t size_out=0; - - while (*src && p<(int)*size && (cc!= -1)) { - - /* convert a character into the Base64 alphabet */ - cc = *src++; - - if ((cc >= 'A') && (cc <= 'Z')) cc = cc - 'A'; - else if ((cc >= 'a') && (cc <= 'z')) cc = cc - 'a' + 26; - else if ((cc >= '0') && (cc <= '9')) cc = cc - '0' + 52; - else if (cc == '/') cc = 63; - else if (cc == '+') cc = 62; - else cc = -1; - - assert(cc<64); - - /* If we've reached the end, fill the remaining slots in - the bucket and do a final conversion */ - if(cc== -1){ - if(valid_data == 0){ - return 0; - } - - while(p%4!=3){ - p++; - buf[p%4] = 0; - } - } else { - buf[p%4] = cc; - size_out++; - valid_data = 1; - } - - - /* When we have 4 base64 letters, convert them into three - bytes */ - if (p%4 == 3) { - *dest++ =(buf[0]<< 2)|((buf[1] & 0x30) >> 4); - *dest++ =((buf[1] & 0x0F) << 4)|((buf[2] & 0x3C) >> 2); - *dest++ =((buf[2] & 0x03) << 6)|(buf[3] & 0x3F); - - memset(buf,0,4); - } - - p++; - - } - /* Calculate the size of the converted data*/ - *size = ((int)(size_out/4))*3; - if(size_out%4 == 2) *size+=1; - if(size_out%4 == 3) *size+=2; - - return(dest); -} - - diff --git a/libical/src/libical/sspm.h b/libical/src/libical/sspm.h deleted file mode 100644 index 657b77a8d7..0000000000 --- a/libical/src/libical/sspm.h +++ /dev/null @@ -1,138 +0,0 @@ -/* -*- Mode: C -*- - ====================================================================== - FILE: sspm.h Mime Parser - CREATOR: eric 25 June 2000 - - $Id$ - $Locker$ - - The contents of this file are subject to the Mozilla Public License - Version 1.0 (the "License"); you may not use this file except in - compliance with the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - - Software distributed under the License is distributed on an "AS IS" - basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See - the License for the specific language governing rights and - limitations under the License. - - - 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 Initial Developer of the Original Code is Eric Busboom - - (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org - ======================================================================*/ - -#ifndef SSPM_H -#define SSPM_H - -enum sspm_major_type { - SSPM_TEXT_MAJOR_TYPE, - SSPM_IMAGE_MAJOR_TYPE, - SSPM_AUDIO_MAJOR_TYPE, - SSPM_VIDEO_MAJOR_TYPE, - SSPM_APPLICATION_MAJOR_TYPE, - SSPM_MULTIPART_MAJOR_TYPE, - SSPM_MESSAGE_MAJOR_TYPE, - SSPM_UNKNOWN_MAJOR_TYPE, - SSPM_NO_MAJOR_TYPE -}; - -enum sspm_minor_type { - SSPM_ANY_MINOR_TYPE, - SSPM_PLAIN_MINOR_TYPE, - SSPM_RFC822_MINOR_TYPE, - SSPM_DIGEST_MINOR_TYPE, - SSPM_CALENDAR_MINOR_TYPE, - SSPM_MIXED_MINOR_TYPE, - SSPM_RELATED_MINOR_TYPE, - SSPM_ALTERNATIVE_MINOR_TYPE, - SSPM_PARALLEL_MINOR_TYPE, - SSPM_UNKNOWN_MINOR_TYPE, - SSPM_NO_MINOR_TYPE -}; - -enum sspm_encoding { - SSPM_NO_ENCODING, - SSPM_QUOTED_PRINTABLE_ENCODING, - SSPM_8BIT_ENCODING, - SSPM_7BIT_ENCODING, - SSPM_BINARY_ENCODING, - SSPM_BASE64_ENCODING, - SSPM_UNKNOWN_ENCODING -}; - -enum sspm_error{ - SSPM_NO_ERROR, - SSPM_UNEXPECTED_BOUNDARY_ERROR, - SSPM_WRONG_BOUNDARY_ERROR, - SSPM_NO_BOUNDARY_ERROR, - SSPM_NO_HEADER_ERROR, - SSPM_MALFORMED_HEADER_ERROR -}; - - -struct sspm_header -{ - int def; - char* boundary; - enum sspm_major_type major; - enum sspm_minor_type minor; - char *minor_text; - char* charset; - enum sspm_encoding encoding; - char* filename; - char* content_id; - enum sspm_error error; - char* error_text; -}; - -struct sspm_part { - struct sspm_header header; - int level; - void *data; -}; - -struct sspm_action_map { - enum sspm_major_type major; - enum sspm_minor_type minor; - void* (*new_part)(); - void (*add_line)(void *part, struct sspm_header *header, - char* line, size_t size); - void* (*end_part)(void* part); - void (*free_part)(void *part); -}; - -char* sspm_major_type_string(enum sspm_major_type type); -char* sspm_minor_type_string(enum sspm_major_type type); - - -int sspm_parse_mime(struct sspm_part *parts, - size_t max_parts, - struct sspm_action_map *actions, - char* (*get_string)(char *s, size_t size, void* data), - void *get_string_data, - struct sspm_header *first_header - ); - -void sspm_free_parts(struct sspm_part *parts, size_t max_parts); - -unsigned char *decode_quoted_printable(unsigned char *dest, - unsigned char *src, - size_t *size); -unsigned char *decode_base64(unsigned char *dest, - unsigned char *src, - size_t *size); - - -#endif SSPM_H diff --git a/libical/src/libicalss/.cvsignore b/libical/src/libicalss/.cvsignore deleted file mode 100644 index 732c1577b6..0000000000 --- a/libical/src/libicalss/.cvsignore +++ /dev/null @@ -1,6 +0,0 @@ -Makefile -.deps -Makefile.in -*.lo -*.la -.libs \ No newline at end of file diff --git a/libical/src/libicalss/Makefile.am b/libical/src/libicalss/Makefile.am deleted file mode 100644 index e4431cb492..0000000000 --- a/libical/src/libicalss/Makefile.am +++ /dev/null @@ -1,36 +0,0 @@ - - -#noinst_LTLIBRARIES = libicalss.la -lib_LIBRARIES = libicalss.a - -libicalss_a_SOURCES =\ - icalcalendar.c \ - icalcalendar.h \ - icalset.h \ - icalset.c \ - icalfileset.c \ - icalfileset.h \ - icalfilesetimpl.h \ - icaldirset.c \ - icaldirset.h \ - icalcsdb.h \ - icalcstp.h \ - icalgauge.h \ - icalgauge.c - -include_HEADERS =\ - icalcalendar.h \ - icalset.h - icalfileset.h \ - icalfilesetimpl.h \ - icaldirset.h \ - icalcsdb.h \ - icalcstp.h \ - icalgauge.h - -INCLUDES = \ - -I ../libical/ \ - -I $(srcdir)/../libical/ \ - -I .. \ - -I$(srcdir)/.. - diff --git a/libical/src/libicalss/icalcalendar.c b/libical/src/libicalss/icalcalendar.c deleted file mode 100644 index e63b5330ad..0000000000 --- a/libical/src/libicalss/icalcalendar.c +++ /dev/null @@ -1,265 +0,0 @@ -/*====================================================================== - FILE: icalcalendar.c - CREATOR: eric 23 December 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/ - - ======================================================================*/ - - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - - -#include "icalcalendar.h" -#include "icalset.h" -#include "icalfileset.h" -#include "icaldirset.h" -#include -#include /* For mkdir, stat */ -#include /* For mkdir */ -#include /* For mkdir */ -#include /* For mkdir, stat */ -#include /* for malloc */ -#include /* for strcat */ -#include - -#define BOOKED_DIR "booked" -#define INCOMING_FILE "incoming.ics" -#define PROP_FILE "properties.ics" -#define FBLIST_FILE "freebusy.ics" - -struct icalcalendar_impl -{ - char* dir; - icalcomponent* freebusy; - icalcomponent* properties; - icalset* booked; - icalset* incoming; -}; - -struct icalcalendar_impl* icalcalendar_new_impl() -{ - struct icalcalendar_impl* impl; - - if ( ( impl = (struct icalcalendar_impl*) - malloc(sizeof(struct icalcalendar_impl))) == 0) { - icalerror_set_errno(ICAL_NEWFAILED_ERROR); - return 0; - } - - return impl; -} - - -icalerrorenum icalcalendar_create(struct icalcalendar_impl* impl) -{ - char path[PATH_MAX]; - struct stat sbuf; - int r; - - icalerror_check_arg_re((impl != 0),"impl",ICAL_BADARG_ERROR); - - path[0] = '\0'; - strcpy(path,impl->dir); - strcat(path,"/"); - strcat(path,BOOKED_DIR); - - r = stat(path,&sbuf); - - if( r != 0 && errno == ENOENT){ - - if(mkdir(path,0777)!=0){ - icalerror_set_errno(ICAL_FILE_ERROR); - return ICAL_FILE_ERROR; - } - } - - return ICAL_NO_ERROR; -} - -icalcalendar* icalcalendar_new(char* dir) -{ - struct icalcalendar_impl* impl; - - icalerror_check_arg_rz((dir != 0),"dir"); - - impl = icalcalendar_new_impl(); - - if (impl == 0){ - return 0; - } - - impl->dir = (char*)strdup(dir); - impl->freebusy = 0; - impl->properties = 0; - impl->booked = 0; - impl->incoming = 0; - - if (icalcalendar_create(impl) != ICAL_NO_ERROR){ - free(impl); - return 0; - } - - return impl; -} - -void icalcalendar_free(icalcalendar* calendar) -{ - - struct icalcalendar_impl *impl = (struct icalcalendar_impl*)calendar; - - if (impl->dir !=0){ - free(impl->dir); - } - - if (impl->freebusy !=0){ - icalfileset_free(impl->freebusy); - } - - if (impl->properties !=0){ - icalfileset_free(impl->properties); - } - - if (impl->booked !=0){ - icaldirset_free(impl->booked); - } - - if (impl->incoming !=0){ - icaldirset_free(impl->incoming); - } - - impl->dir = 0; - impl->freebusy = 0; - impl->properties = 0; - impl->booked = 0; - impl->incoming = 0; - - - free(impl); -} - - -int icalcalendar_lock(icalcalendar* calendar) -{ - struct icalcalendar_impl *impl = (struct icalcalendar_impl*)calendar; - icalerror_check_arg_rz((impl != 0),"impl"); - return 0; -} - -int icalcalendar_unlock(icalcalendar* calendar) -{ - struct icalcalendar_impl *impl = (struct icalcalendar_impl*)calendar; - icalerror_check_arg_rz((impl != 0),"impl"); - return 0; -} - -int icalcalendar_islocked(icalcalendar* calendar) -{ - struct icalcalendar_impl *impl = (struct icalcalendar_impl*)calendar; - icalerror_check_arg_rz((impl != 0),"impl"); - return 0; -} - -int icalcalendar_ownlock(icalcalendar* calendar) -{ - struct icalcalendar_impl *impl = (struct icalcalendar_impl*)calendar; - icalerror_check_arg_rz((impl != 0),"impl"); - return 0; -} - -icalset* icalcalendar_get_booked(icalcalendar* calendar) -{ - struct icalcalendar_impl *impl = (struct icalcalendar_impl*)calendar; - char dir[PATH_MAX]; - - icalerror_check_arg_rz((impl != 0),"impl"); - - dir[0] = '\0'; - strcpy(dir,impl->dir); - strcat(dir,"/"); - strcat(dir,BOOKED_DIR); - - if (impl->booked == 0){ - icalerror_clear_errno(); - impl->booked = icaldirset_new(dir); - assert(icalerrno == ICAL_NO_ERROR); - } - - return impl->booked; - -} - -icalset* icalcalendar_get_incoming(icalcalendar* calendar) -{ - char path[PATH_MAX]; - struct icalcalendar_impl *impl = (struct icalcalendar_impl*)calendar; - icalerror_check_arg_rz((impl != 0),"impl"); - - path[0] = '\0'; - strcpy(path,impl->dir); - strcat(path,"/"); - strcat(path,INCOMING_FILE); - - if (impl->properties == 0){ - impl->properties = icalfileset_new(path); - } - - return impl->properties; -} - -icalset* icalcalendar_get_properties(icalcalendar* calendar) -{ - char path[PATH_MAX]; - struct icalcalendar_impl *impl = (struct icalcalendar_impl*)calendar; - icalerror_check_arg_rz((impl != 0),"impl"); - - path[0] = '\0'; - strcpy(path,impl->dir); - strcat(path,"/"); - strcat(path,PROP_FILE); - - if (impl->properties == 0){ - impl->properties = icalfileset_new(path); - } - - return impl->properties; -} - -icalset* icalcalendar_get_freebusy(icalcalendar* calendar) -{ - char path[PATH_MAX]; - struct icalcalendar_impl *impl = (struct icalcalendar_impl*)calendar; - icalerror_check_arg_rz((impl != 0),"impl"); - - path[0] = '\0'; - strcpy(path,impl->dir); - strcat(path,"/"); - strcat(path,FBLIST_FILE); - - - if (impl->freebusy == 0){ - impl->freebusy = icalfileset_new(path); - } - - return impl->freebusy; -} - - - - diff --git a/libical/src/libicalss/icalcalendar.h b/libical/src/libicalss/icalcalendar.h deleted file mode 100644 index f07457c60d..0000000000 --- a/libical/src/libicalss/icalcalendar.h +++ /dev/null @@ -1,67 +0,0 @@ -/* -*- Mode: C -*- */ -/*====================================================================== - FILE: icalcalendar.h - CREATOR: eric 23 December 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 eric. The Initial Developer of the Original - Code is Eric Busboom - - -======================================================================*/ - -#ifndef ICALCALENDAR_H -#define ICALCALENDAR_H - -#include "ical.h" -#include "icalset.h" - -/* icalcalendar - * Routines for storing calendar data in a file system. The calendar - * has two icaldirsets, one for incoming components and one for booked - * components. It also has interfaces to access the free/busy list - * and a list of calendar properties */ - -typedef void icalcalendar; - -icalcalendar* icalcalendar_new(char* dir); - -void icalcalendar_free(icalcalendar* calendar); - -int icalcalendar_lock(icalcalendar* calendar); - -int icalcalendar_unlock(icalcalendar* calendar); - -int icalcalendar_islocked(icalcalendar* calendar); - -int icalcalendar_ownlock(icalcalendar* calendar); - -icalset* icalcalendar_get_booked(icalcalendar* calendar); - -icalset* icalcalendar_get_incoming(icalcalendar* calendar); - -icalset* icalcalendar_get_properties(icalcalendar* calendar); - -icalset* icalcalendar_get_freebusy(icalcalendar* calendar); - - -#endif /* !ICALCALENDAR_H */ - - - diff --git a/libical/src/libicalss/icalcomponent.h b/libical/src/libicalss/icalcomponent.h deleted file mode 100644 index 9e0e9f5a9f..0000000000 --- a/libical/src/libicalss/icalcomponent.h +++ /dev/null @@ -1,115 +0,0 @@ -/* -*- Mode: C -*- */ -/*====================================================================== - FILE: icalcomponent.h - CREATOR: eric 20 March 1999 - - - (C) COPYRIGHT 1999 Eric Busboom - http://www.softwarestudio.org - - The contents of this file are subject to the Mozilla Public License - Version 1.0 (the "License"); you may not use this file except in - compliance with the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - - Software distributed under the License is distributed on an "AS IS" - basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See - the License for the specific language governing rights and - limitations under the License. - - The original author is Eric Busboom - The original code is icalcomponent.h - -======================================================================*/ - -#ifndef ICALCOMPONENT_H -#define ICALCOMPONENT_H - -#include "icalproperty.h" -#include "icalvalue.h" -#include "icalenums.h" /* defines icalcomponent_kind */ - -typedef void icalcomponent; - -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); - -/* Return a null-terminated array of icalproperties*/ - -icalproperty** icalcomponent_get_properties(icalcomponent* component, - icalproperty_kind kind); - - -/* - * Working with components - */ - - -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); - -/* 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); - -/* Return a null-terminated array of icalproperties*/ -icalproperty** icalcomponent_get_component(icalcomponent* component, - icalproperty_kind kind); - -/* Working with embedded error properties */ - -int icalcomponent_count_errors(icalcomponent* component); -void icalcomponent_strip_errors(icalcomponent* component); - - -/* Internal operations. You don't see these... */ -icalcomponent* icalcomponent_get_parent(icalcomponent* component); -void icalcomponent_set_parent(icalcomponent* component, - icalcomponent* parent); - -#endif /* !ICALCOMPONENT_H */ - - - diff --git a/libical/src/libicalss/icalcsdb.h b/libical/src/libicalss/icalcsdb.h deleted file mode 100644 index 4619b94fd0..0000000000 --- a/libical/src/libicalss/icalcsdb.h +++ /dev/null @@ -1,67 +0,0 @@ -/* -*- Mode: C -*- */ -/*====================================================================== - FILE: icalcsdb.h Calendar Server Database - CREATOR: eric 23 December 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/ - - -======================================================================*/ - -#ifndef ICALCSDB_H -#define ICALCSDB_H - -#include "ical.h" - -typedef void icalcsdb; - -icalcsdb* icalcsdb_new(char* path); - -void icalcsdb_free(icalcsdb* csdb); - -icalerrorenum icalcsdb_create(icalcsdb* db, char* calid); - -icalerrorenum icalcsdb_delete(icalcsdb* db, char* calid); - -icalerrorenum icalcsdb_move(icalcsdb* db, char* oldcalid, char* newcalid); - -icalerrorenum icalcsdb_noop(icalcsdb* db); - -char* icalcsdb_generateuid(icalcsdb* db); - -icalcomponent* icalcsdb_expand_upn(icalcsdb* db, char* upn); -icalcomponent* icalcsdb_expand_calid(icalcsdb* db, char* calid); - -icalerrorenum icalcsbd_senddata(icalcsdb* db, icalcomponent* comp); - -icalset* icalcsdb_get_calendar(icalcsdb* db, char* calid, - icalcomponent *gauge); - -icalset* icalcsdb_get_vcars(icalcsdb* db); - -icalset* icalcsdb_get_properties(icalcsdb* db); - -icalset* icalcsdb_get_capabilities(icalcsdb* db); - -icalset* icalcsdb_get_timezones(icalcsdb* db); - - -#endif /* !ICALCSDB_H */ - - - diff --git a/libical/src/libicalss/icalcstp.h b/libical/src/libicalss/icalcstp.h deleted file mode 100644 index fea6c89616..0000000000 --- a/libical/src/libicalss/icalcstp.h +++ /dev/null @@ -1,138 +0,0 @@ -/* -*- Mode: C -*- */ -/*====================================================================== - FILE: icalcstp.h - CREATOR: eric 20 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 icalcstp.h - -======================================================================*/ - - -#ifndef ICALCSTP_H -#define ICALCSTP_H - -#include "ical.h" - -typedef void* icalcstp; - -typedef struct icalcstp_stubs; - -icalcstp* icalcstp_new(icalcstp_stubs* stubs, - int incoming, int outgoing); - -void* icalcstp_free(icalcstp* cstp); - -/* Send or recieve data directly to/from the network. These calls are - needed for the AUTHENTICATE command and possibly others */ -ssize_t icalcstp_send(icalcstp* cstp, char* msg); -ssize_t icalcstp_recieve(icalcstp* cstp, char* msg); - -int icalcstp_set_timeout(icalcstp* cstp, int sec); - -typedef struct icalcstp_response { - icalrequeststatus code - char *arg; /* These strings are owned by libical */ - char *debug_text; - char *more_text; - void* result; -} icalcstp_response; - - -/********************** Server (Reciever) Interfaces *************************/ - -/* On the server side, the caller will recieve data from the incoming - socket and pass it to icalcstp_process_incoming. The caller then - takes the return from _process_incoming and sends it out through - the socket. This gives the caller a point of control. If the cstp - code connected to the socket itself, it would be hard for the - caller to do anything else after the cstp code was started. - - However, some commands will use the sockets directly, though the - _send and _recieve routines. Example is Authenticate and Starttls, - which need several exchanges of data - - All of the server abd client command routines will generate - response codes. On the server side, these responses will be turned - into text and sent to the client. On the client side, the reponse - is the one sent from the server. - - Since each command can return multiple responses, the responses are - stored in the icalcstp object and are accesses by - icalcstp_first_response() and icalcstp_next_response() - -*/ - - - -/* Process a single line of incomming data */ -char* icalcstp_process_incoming(icalcstp* cstp, char* string); - -/* Er, they aren't really stubs, but pointers to the rountines that - icalcstp_process_incoming will call when it recognizes a CSTP - command in the data. BTW, the CONTINUE command is named 'cont' - because 'continue' is a C keyword */ - -struct icalcstp_server_stubs { - icalerrorenum (*abort)(icalcstp* cstp); - icalerrorenum (*authenticate)(icalcstp* cstp, char* mechanism, - char* data); - icalerrorenum (*calidexpand)(icalcstp* cstp, char* calid); - icalerrorenum (*capability)(icalcstp* cstp); - icalerrorenum (*cont)(icalcstp* cstp, unsigned int time); - icalerrorenum (*identify)(icalcstp* cstp, char* id); - icalerrorenum (*disconnect)(icalcstp* cstp); - icalerrorenum (*sendata)(icalcstp* cstp, unsigned int time, - icalcomponent *comp); - icalerrorenum (*starttls)(icalcstp* cstp, char* command, - char* data); - icalerrorenum (*upnexpand)(icalcstp* cstp, char* upn); - icalerrorenum (*unknown)(icalcstp* cstp, char* command, char* data); -} - -/********************** Client (Sender) Interfaces **************************/ - -/* On the client side, the cstp code is connected directly to the - socket, because the callers point of control is at the interfaces - below. */ - -icalerrorenum icalcstp_abort(icalcstp* cstp); -icalerrorenum icalcstp_authenticate(icalcstp* cstp, char* mechanism, - char* data); -icalerrorenum icalcstp_capability(icalcstp* cstp); -icalerrorenum icalcstp_calidexpand(icalcstp* cstp,char* calid); -icalerrorenum icalcstp_continue(icalcstp* cstp, unsigned int time); -icalerrorenum icalcstp_disconnect(icalcstp* cstp); -icalerrorenum icalcstp_identify(icalcstp* cstp, char* id); -icalerrorenum icalcstp_starttls(icalcstp* cstp, char* command, - char* data); -icalerrorenum icalcstp_senddata(icalcstp* cstp, unsigned int time, - icalcomponent *comp); -icalerrorenum icalcstp_upnexpand(icalcstp* cstp,char* calid); -icalerrorenum icalcstp_sendata(icalcstp* cstp, unsigned int time, - icalcomponent *comp); - -icalcstp_response icalcstp_first_response(icalcstp* cstp); -icalcstp_response icalcstp_next_response(icalcstp* cstp); - - - -#endif /* !ICALCSTP_H */ - - - diff --git a/libical/src/libicalss/icaldirset.c b/libical/src/libicalss/icaldirset.c deleted file mode 100644 index ff5357126c..0000000000 --- a/libical/src/libicalss/icaldirset.c +++ /dev/null @@ -1,718 +0,0 @@ -/* -*- Mode: C -*- - ====================================================================== - FILE: icaldirset.c - CREATOR: eric 28 November 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 eric. The Initial Developer of the Original - Code is Eric Busboom - - - ======================================================================*/ - - -/* - - icaldirset manages a database of ical components and offers - interfaces for reading, writting and searching for components. - - icaldirset groups components in to clusters based on their DTSTART - time -- all components that start in the same month are grouped - together in a single file. All files in a sotre are kept in a single - directory. ( If a component does not have DTSTART, the store uses - DTSTAMP or CREATE ) - - The primary interfaces are icaldirset_first and icaldirset_next. These - routine iterate through all of the components in the store, subject - to the current gauge. A gauge is an icalcomponent that is tested - against other componets for a match. If a gauge has been set with - icaldirset_select, icaldirset_first and icaldirset_next will only - return componentes that match the gauge. - - The Store generated UIDs for all objects that are stored if they do - not already have a UID. The UID is the name of the cluster (month & - year as MMYYYY) plus a unique serial number. The serial number is - stored as a property of the cluster. - -*/ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - - -#include "ical.h" -#include "icaldirset.h" -#include "pvl.h" -#include "icalerror.h" -#include "icalparser.h" -#include "icaldirset.h" -#include "icalfileset.h" -#include "icalfilesetimpl.h" -#include "icalgauge.h" - -#include -#include /* for opendir() */ -#include -#include /* for opendir() */ -#include /* for stat */ -#include /* for stat, getpid */ -#include /* for clock() */ -#include /* for rand(), srand() */ -#include /* for uname */ -#include /* for strdup */ - - -struct icaldirset_impl -{ - char* dir; - icalcomponent* gauge; - icaldirset* cluster; - int first_component; - pvl_list directory; - pvl_elem directory_iterator; -}; - -struct icaldirset_impl* icaldirset_new_impl() -{ - struct icaldirset_impl* comp; - - if ( ( comp = (struct icaldirset_impl*) - malloc(sizeof(struct icaldirset_impl))) == 0) { - icalerror_set_errno(ICAL_NEWFAILED_ERROR); - return 0; - } - - return comp; -} - -char* icaldirset_path(icaldirset* cluster) -{ - struct icaldirset_impl *impl = icaldirset_new_impl(); - - return impl->dir; - -} - -void icaldirset_mark(icaldirset* store) -{ - struct icaldirset_impl *impl = (struct icaldirset_impl*)store; - - icalfileset_mark(impl->cluster); -} - - -icalerrorenum icaldirset_commit(icaldirset* store) -{ - struct icaldirset_impl *impl = (struct icaldirset_impl*)store; - - return icalfileset_commit(impl->cluster); - -} - -void icaldirset_lock(char* dir) -{ -} - - -void icaldirset_unlock(char* dir) -{ -} - -/* Load the contents of the store directory into the store's internal directory list*/ -icalerrorenum icaldirset_read_directory(struct icaldirset_impl* impl) -{ - struct dirent *de; - DIR* dp; - char *str; - - dp = opendir(impl->dir); - - if ( dp == 0) { - icalerror_set_errno(ICAL_FILE_ERROR); - return ICAL_FILE_ERROR; - } - - /* clear contents of directory list */ - while((str = pvl_pop(impl->directory))){ - free(str); - } - - /* load all of the cluster names in the directory list */ - for(de = readdir(dp); - de != 0; - de = readdir(dp)){ - - /* Remove known directory names '.' and '..'*/ - if (strcmp(de->d_name,".") == 0 || - strcmp(de->d_name,"..") == 0 ){ - continue; - } - - pvl_push(impl->directory, (void*)strdup(de->d_name)); - } - - closedir(dp); - - return ICAL_NO_ERROR; -} - -icaldirset* icaldirset_new(char* dir) -{ - struct icaldirset_impl *impl = icaldirset_new_impl(); - struct stat sbuf; - - if (impl == 0){ - return 0; - } - - icalerror_check_arg_rz( (dir!=0), "dir"); - - if (stat(dir,&sbuf) != 0){ - icalerror_set_errno(ICAL_FILE_ERROR); - return 0; - } - - /* dir is not the name of a direectory*/ - if (!S_ISDIR(sbuf.st_mode)){ - icalerror_set_errno(ICAL_USAGE_ERROR); - return 0; - } - - icaldirset_lock(dir); - - impl = icaldirset_new_impl(); - - if (impl ==0){ - icalerror_set_errno(ICAL_ALLOCATION_ERROR); - return 0; - } - - impl->directory = pvl_newlist(); - impl->directory_iterator = 0; - impl->dir = (char*)strdup(dir); - impl->gauge = 0; - impl->first_component = 0; - impl->cluster = 0; - - icaldirset_read_directory(impl); - - return (icaldirset*) impl; -} - -void icaldirset_free(icaldirset* s) -{ - struct icaldirset_impl *impl = (struct icaldirset_impl*)s; - char* str; - - icaldirset_unlock(impl->dir); - - if(impl->dir !=0){ - free(impl->dir); - } - - if(impl->gauge !=0){ - icalcomponent_free(impl->gauge); - } - - if(impl->cluster !=0){ - icalfileset_free(impl->cluster); - } - - while(impl->directory !=0 && (str=pvl_pop(impl->directory)) != 0){ - free(str); - } - - if(impl->directory != 0){ - pvl_free(impl->directory); - } - - impl->directory = 0; - impl->directory_iterator = 0; - impl->dir = 0; - impl->gauge = 0; - impl->first_component = 0; - - free(impl); - -} - -/* icaldirset_next_uid_number updates a serial number in the Store - directory in a file called SEQUENCE */ - -int icaldirset_next_uid_number(icaldirset* store) -{ - struct icaldirset_impl *impl = (struct icaldirset_impl*)store; - char sequence = 0; - char temp[128]; - char filename[PATH_MAX]; - char *r; - FILE *f; - struct stat sbuf; - - icalerror_check_arg_rz( (store!=0), "store"); - - sprintf(filename,"%s/%s",impl->dir,"SEQUENCE"); - - /* Create the file if it does not exist.*/ - if (stat(filename,&sbuf) == -1 || !S_ISREG(sbuf.st_mode)){ - - f = fopen(filename,"w"); - if (f != 0){ - fprintf(f,"0"); - fclose(f); - } else { - icalerror_warn("Can't create SEQUENCE file in icaldirset_next_uid_number"); - return 0; - } - - } - - if ( (f = fopen(filename,"r+")) != 0){ - - rewind(f); - r = fgets(temp,128,f); - - if (r == 0){ - sequence = 1; - } else { - sequence = atoi(temp)+1; - } - - rewind(f); - - fprintf(f,"%d",sequence); - - fclose(f); - - return sequence; - - } else { - icalerror_warn("Can't create SEQUENCE file in icaldirset_next_uid_number"); - return 0; - } - -} - -icalerrorenum icaldirset_next_cluster(icaldirset* store) -{ - struct icaldirset_impl *impl = (struct icaldirset_impl*)store; - char path[PATH_MAX]; - - if (impl->directory_iterator == 0){ - icalerror_set_errno(ICAL_INTERNAL_ERROR); - return ICAL_INTERNAL_ERROR; - } - impl->directory_iterator = pvl_next(impl->directory_iterator); - - if (impl->directory_iterator == 0){ - /* There are no more clusters */ - if(impl->cluster != 0){ - icalfileset_free(impl->cluster); - impl->cluster = 0; - } - return ICAL_NO_ERROR; - } - - sprintf(path,"%s/%s",impl->dir,(char*)pvl_data(impl->directory_iterator)); - - icalfileset_free(impl->cluster); - - impl->cluster = icalfileset_new(path); - - return icalerrno; -} - -void icaldirset_add_uid(icaldirset* store, icaldirset* comp) -{ - char uidstring[PATH_MAX]; - icalproperty *uid; - struct utsname unamebuf; - - icalerror_check_arg_rv( (store!=0), "store"); - icalerror_check_arg_rv( (comp!=0), "comp"); - - uid = icalcomponent_get_first_property(comp,ICAL_UID_PROPERTY); - - if (uid == 0) { - - uname(&unamebuf); - - sprintf(uidstring,"%d-%s",(int)getpid(),unamebuf.nodename); - - uid = icalproperty_new_uid(uidstring); - icalcomponent_add_property(comp,uid); - } else { - - strcpy(uidstring,icalproperty_get_uid(uid)); - } -} - - -/* This assumes that the top level component is a VCALENDAR, and there - is an inner component of type VEVENT, VTODO or VJOURNAL. The inner - component must have a DTSTART property */ - -icalerrorenum icaldirset_add_component(icaldirset* store, icaldirset* comp) -{ - struct icaldirset_impl *impl; - char clustername[PATH_MAX]; - icalproperty *dt; - icalvalue *v; - struct icaltimetype tm; - icalerrorenum error = ICAL_NO_ERROR; - icalcomponent *inner; - - impl = (struct icaldirset_impl*)store; - icalerror_check_arg_rz( (store!=0), "store"); - icalerror_check_arg_rz( (comp!=0), "comp"); - - errno = 0; - - icaldirset_add_uid(store,comp); - - /* Determine which cluster this object belongs in. This is a HACK */ - - for(inner = icalcomponent_get_first_component(comp,ICAL_ANY_COMPONENT); - inner != 0; - inner = icalcomponent_get_next_component(comp,ICAL_ANY_COMPONENT)){ - - dt = icalcomponent_get_first_property(inner,ICAL_DTSTART_PROPERTY); - - if (dt != 0){ - break; - } - } - - if (dt == 0){ - icalerror_warn("The component does not have a DTSTART property, so it cannot be added to the store"); - icalerror_set_errno(ICAL_BADARG_ERROR); - return ICAL_BADARG_ERROR; - } - - v = icalproperty_get_value(dt); - - tm = icalvalue_get_datetime(v); - - snprintf(clustername,PATH_MAX,"%s/%04d%02d",impl->dir,tm.year,tm.month); - - /* Load the cluster and insert the object */ - - if(impl->cluster != 0 && - strcmp(clustername,icalfileset_path(impl->cluster)) != 0 ){ - icalfileset_free(impl->cluster); - impl->cluster = 0; - } - - if (impl->cluster == 0){ - impl->cluster = icalfileset_new(clustername); - - if (impl->cluster == 0){ - error = icalerrno; - } - } - - if (error != ICAL_NO_ERROR){ - icalerror_set_errno(error); - return error; - } - - /* Add the component to the cluster */ - - icalfileset_add_component(impl->cluster,comp); - - icalfileset_mark(impl->cluster); - - return ICAL_NO_ERROR; -} - -/* Remove a component in the current cluster. HACK. This routine is a - "friend" of icalfileset, and breaks its encapsulation. It was - either do it this way, or add several layers of interfaces that had - no other use. */ -icalerrorenum icaldirset_remove_component(icaldirset* store, icaldirset* comp) -{ - struct icaldirset_impl *impl = (struct icaldirset_impl*)store; - - struct icalfileset_impl *filesetimpl = - (struct icalfileset_impl*)impl->cluster; - - icalcomponent *filecomp = filesetimpl->cluster; - - icalcompiter i; - int found = 0; - - icalerror_check_arg_re((store!=0),"store",ICAL_BADARG_ERROR); - icalerror_check_arg_re((comp!=0),"comp",ICAL_BADARG_ERROR); - icalerror_check_arg_re((impl->cluster!=0),"Cluster pointer",ICAL_USAGE_ERROR); - - for(i = icalcomponent_begin_component(filecomp,ICAL_ANY_COMPONENT); - icalcompiter_deref(&i)!= 0; icalcompiter_next(&i)){ - - icalcomponent *this = icalcompiter_deref(&i); - - if (this == comp){ - found = 1; - break; - } - } - - if (found != 1){ - icalerror_warn("icaldirset_remove_component: component is not part of current cluster"); - icalerror_set_errno(ICAL_USAGE_ERROR); - return ICAL_USAGE_ERROR; - } - - icalfileset_remove_component(impl->cluster,comp); - - icalfileset_mark(impl->cluster); - - /* If the removal emptied the fileset, get the next fileset */ - if( icalfileset_count_components(impl->cluster,ICAL_ANY_COMPONENT)==0){ - - icalerrorenum error = icaldirset_next_cluster(store); - - if(impl->cluster != 0 && error == ICAL_NO_ERROR){ - icalfileset_get_first_component(impl->cluster,ICAL_ANY_COMPONENT); - } else { - /* HACK. Not strictly correct for impl->cluster==0 */ - return error; - } - } else { - /* Do nothing */ - } - - return ICAL_NO_ERROR; -} - - - -int icaldirset_count_components(icaldirset* store, - icalcomponent_kind kind); - - -icalcomponent* icaldirset_fetch(icaldirset* store, char* uid) -{ - icalcomponent *gauge; - icalcomponent *old_gauge; - icalcomponent *c; - struct icaldirset_impl *impl = (struct icaldirset_impl*)store; - - icalerror_check_arg_rz( (store!=0), "store"); - icalerror_check_arg_rz( (uid!=0), "uid"); - - gauge = - icalcomponent_vanew( - ICAL_VCALENDAR_COMPONENT, - icalcomponent_vanew( - ICAL_VEVENT_COMPONENT, - icalproperty_vanew_uid( - uid, - icalparameter_new_xliccomparetype( - ICAL_XLICCOMPARETYPE_EQUAL), - 0), - 0), - 0); - - old_gauge = impl->gauge; - impl->gauge = gauge; - - c= icaldirset_get_first_component(store,ICAL_ANY_COMPONENT); - - impl->gauge = old_gauge; - - icalcomponent_free(gauge); - - return c; -} - - -int icaldirset_has_uid(icaldirset* store, char* uid) -{ - icalcomponent *c; - - icalerror_check_arg_rz( (store!=0), "store"); - icalerror_check_arg_rz( (uid!=0), "uid"); - - /* HACK. This is a temporary implementation. _has_uid should use a - database, and _fetch should use _has_uid, not the other way - around */ - c = icaldirset_fetch(store,uid); - - return c!=0; - -} - - -icalerrorenum icaldirset_select(icaldirset* store, icalcomponent* gauge) -{ - struct icaldirset_impl *impl = (struct icaldirset_impl*)store; - - icalerror_check_arg_re( (store!=0), "store",ICAL_BADARG_ERROR); - icalerror_check_arg_re( (gauge!=0), "gauge",ICAL_BADARG_ERROR); - - if (!icalcomponent_is_valid(gauge)){ - return ICAL_BADARG_ERROR; - } - - impl->gauge = gauge; - - return ICAL_NO_ERROR; -} - -void icaldirset_clear(icaldirset* store); -icalcomponent* icaldirset_fetch(icaldirset* store, char* uid); -int icaldirset_has_uid(icaldirset* store, char* uid); - -icalcomponent* icaldirset_get_current_component(icaldirset* store) -{ - struct icaldirset_impl *impl = (struct icaldirset_impl*)store; - - if(impl->cluster == 0){ - icaldirset_get_first_component(store,ICAL_ANY_COMPONENT); - } - - return icalfileset_get_current_component(impl->cluster); - -} - - -icalcomponent* icaldirset_get_first_component(icaldirset* store, - icalcomponent_kind kind) -{ - struct icaldirset_impl *impl = (struct icaldirset_impl*)store; - icalerrorenum error; - char path[PATH_MAX]; - - error = icaldirset_read_directory(impl); - - if (error != ICAL_NO_ERROR){ - icalerror_set_errno(error); - return 0; - } - - impl->directory_iterator = pvl_head(impl->directory); - - if (impl->directory_iterator == 0){ - icalerror_set_errno(error); - return 0; - } - - snprintf(path,PATH_MAX,"%s/%s",impl->dir,(char*)pvl_data(impl->directory_iterator)); - - /* If the next cluster we need is different than the current cluster, - delete the current one and get a new one */ - - if(impl->cluster != 0 && strcmp(path,icalfileset_path(impl->cluster)) != 0 ){ - icalfileset_free(impl->cluster); - impl->cluster = 0; - } - - if (impl->cluster == 0){ - impl->cluster = icalfileset_new(path); - - if (impl->cluster == 0){ - error = icalerrno; - } - } - - if (error != ICAL_NO_ERROR){ - icalerror_set_errno(error); - return 0; - } - - impl->first_component = 1; - - return icaldirset_get_next_component(store, kind); -} - -icalcomponent* icaldirset_get_next_component(icaldirset* store, - icalcomponent_kind kind) -{ - struct icaldirset_impl *impl; - icalcomponent *c; - icalerrorenum error; - - icalerror_check_arg_rz( (store!=0), "store"); - - impl = (struct icaldirset_impl*)store; - - if(impl->cluster == 0){ - - icalerror_warn("icaldirset_get_next_component called with a NULL cluster (Caller must call icaldirset_get_first_component first"); - icalerror_set_errno(ICAL_USAGE_ERROR); - return 0; - - } - - /* Set the component iterator for the following for loop */ - if (impl->first_component == 1){ - icalfileset_get_first_component(impl->cluster,kind); - impl->first_component = 0; - } else { - icalfileset_get_next_component(impl->cluster,kind); - } - - - while(1){ - /* Iterate through all of the objects in the cluster*/ - for( c = icalfileset_get_current_component(impl->cluster); - c != 0; - c = icalfileset_get_next_component( - impl->cluster, - kind)){ - - /* If there is a gauge defined and the component does not - pass the gauge, skip the rest of the loop */ - if (impl->gauge != 0 && icalgauge_test(c,impl->gauge) == 0){ - continue; - } - - /* Either there is no gauge, or the component passed the - gauge, so return it*/ - - return c; - } - - /* Fell through the loop, so the component we want is not - in this cluster. Load a new cluster and try again.*/ - - error = icaldirset_next_cluster(store); - - if(impl->cluster == 0 || error != ICAL_NO_ERROR){ - /* No more clusters */ - return 0; - } else { - c = icalfileset_get_first_component( - impl->cluster, - kind); - - return c; - } - - } - - return 0; /* Should never get here */ -} - - - - - - - diff --git a/libical/src/libicalss/icaldirset.h b/libical/src/libicalss/icaldirset.h deleted file mode 100644 index e9d6240aeb..0000000000 --- a/libical/src/libicalss/icaldirset.h +++ /dev/null @@ -1,84 +0,0 @@ -/* -*- Mode: C -*- */ -/*====================================================================== - FILE: icaldirset.h - CREATOR: eric 28 November 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 eric. The Initial Developer of the Original - Code is Eric Busboom - - -======================================================================*/ - -#ifndef ICALDIRSET_H -#define ICALDIRSET_H - -#include "ical.h" -#include "icalerror.h" - -/* icaldirset Routines for storing, fetching, and searching for ical - * objects in a database */ - -typedef void icaldirset; - - -icaldirset* icaldirset_new(char* path); - -void icaldirset_free(icaldirset* store); - -char* icaldirset_path(icaldirset* store); - -/* Mark the cluster as changed, so it will be written to disk when it - is freed. Commit writes to disk immediately*/ -void icaldirset_mark(icaldirset* store); -icalerrorenum icaldirset_commit(icaldirset* store); - -icalerrorenum icaldirset_add_component(icaldirset* store, icalcomponent* comp); -icalerrorenum icaldirset_remove_component(icaldirset* store, icalcomponent* comp); - -int icaldirset_count_components(icaldirset* store, - icalcomponent_kind kind); - -/* Restrict the component returned by icaldirset_first, _next to those - that pass the gauge. _clear removes the gauge. */ -icalerrorenum icaldirset_select(icaldirset* store, icalcomponent* gauge); -void icaldirset_clear(icaldirset* store); - -/* Get a component by uid */ -icalcomponent* icaldirset_fetch(icaldirset* store, char* uid); -int icaldirset_has_uid(icaldirset* store, char* uid); - -/* Modify components according to the MODIFY method of CAP. Works on - the currently selected components. */ -icalerrorenum icaldirset_modify(icaldirset* store, icalcomponent *old, - icalcomponent *new); - -/* Iterate through the components. If a guage has been defined, these - will skip over components that do not pass the gauge */ - -icalcomponent* icaldirset_get_current_component(icaldirset* store); -icalcomponent* icaldirset_get_first_component(icaldirset* store, - icalcomponent_kind kind); -icalcomponent* icaldirset_get_next_component(icaldirset* store, - icalcomponent_kind kind); - -#endif /* !ICALDIRSET_H */ - - - diff --git a/libical/src/libicalss/icalfileset.c b/libical/src/libicalss/icalfileset.c deleted file mode 100644 index 46c5cd2586..0000000000 --- a/libical/src/libicalss/icalfileset.c +++ /dev/null @@ -1,427 +0,0 @@ -/* -*- Mode: C -*- - ====================================================================== - FILE: icalfileset.c - CREATOR: eric 23 December 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 eric. The Initial Developer of the Original - Code is Eric Busboom - - - ======================================================================*/ - - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - - -#include "icalfileset.h" -#include -#include /* For PATH_MAX */ -#include /* for stat */ -#include /* for stat, getpid */ -#include -#include -#include /* for fcntl */ -#include /* for fcntl */ - -#include "icalfilesetimpl.h" - -int icalfileset_lock(icalfileset *cluster); -int icalfileset_unlock(icalfileset *cluster); - - -icalerrorenum icalfileset_create_cluster(char *path); - -icalfileset* icalfileset_new_impl() -{ - struct icalfileset_impl* comp; - - if ( ( comp = (struct icalfileset_impl*) - malloc(sizeof(struct icalfileset_impl))) == 0) { - icalerror_set_errno(ICAL_NEWFAILED_ERROR); - errno = ENOMEM; - return 0; - } - - return comp; -} - -char* read_from_file(char *s, size_t size, void *d) -{ - char *c = fgets(s,size, (FILE*)d); - return c; -} - -icalfileset* icalfileset_new(char* path) -{ - struct icalfileset_impl *impl = icalfileset_new_impl(); - struct stat sbuf; - int createclusterfile = 0; - icalerrorenum error = ICAL_NO_ERROR; - icalparser *parser; - struct icaltimetype tt; - off_t cluster_file_size; - - memset(&tt,0,sizeof(struct icaltimetype)); - - icalerror_clear_errno(); - icalerror_check_arg_rz( (path!=0), "path"); - - if (impl == 0){ - return 0; - } - - /*impl->path = strdup(path); icalfileset_load does this */ - impl->changed = 0; - - impl->cluster = 0; - - impl->path = 0; - impl->stream = 0; - - /* Check if the path already exists and if it is a regular file*/ - if (stat(path,&sbuf) != 0){ - - /* A file by the given name does not exist, or there was - another error */ - cluster_file_size = 0; - if (errno == ENOENT) { - /* It was because the file does not exist */ - createclusterfile = 1; - } else { - /* It was because of another error */ - icalerror_set_errno(ICAL_FILE_ERROR); - return 0; - } - } else { - /* A file by the given name exists, but is it a regular file */ - - if (!S_ISREG(sbuf.st_mode)){ - /* Nope, not a directory */ - icalerror_set_errno(ICAL_FILE_ERROR); - return 0; - } else { - /* Lets assume that it is a file of the right type */ - cluster_file_size = sbuf.st_size; - createclusterfile = 0; - } - } - - /* if cluster does not already exist, create it */ - - if (createclusterfile == 1) { - error = icalfileset_create_cluster(path); - - if (error != ICAL_NO_ERROR){ - icalerror_set_errno(error); - return 0; - } - } - - impl->path = (char*)strdup(path); - - errno = 0; - impl->stream = fopen(impl->path,"r"); - - if (impl->stream ==0 || errno != 0){ - impl->cluster = 0; - icalerror_set_errno(ICAL_FILE_ERROR); /* Redundant, actually */ - return 0; - } - - icalfileset_lock(impl); - - if(cluster_file_size > 0){ - parser = icalparser_new(); - icalparser_set_gen_data(parser,impl->stream); - impl->cluster = icalparser_parse(parser,read_from_file); - icalparser_free(parser); - - if (icalcomponent_isa(impl->cluster) != ICAL_XROOT_COMPONENT){ - /* The parser got a single component, so it did not put it in - an XROOT. */ - icalcomponent *cl = impl->cluster; - impl->cluster = icalcomponent_new(ICAL_XROOT_COMPONENT); - icalcomponent_add_component(impl->cluster,cl); - } - - } else { - - impl->cluster = icalcomponent_new(ICAL_XROOT_COMPONENT); - } - - if (impl->cluster == 0){ - icalerror_set_errno(ICAL_PARSE_ERROR); - return 0; - } - - if (error != ICAL_NO_ERROR){ - return 0; - } - - return impl; -} - -void icalfileset_free(icalfileset* cluster) -{ - struct icalfileset_impl *impl = (struct icalfileset_impl*)cluster; - - icalerror_check_arg_rv((cluster!=0),"cluster"); - - if (impl->cluster != 0){ - icalfileset_commit(cluster); - icalcomponent_free(impl->cluster); - impl->cluster=0; - } - - if(impl->path != 0){ - free(impl->path); - impl->path = 0; - } - - if(impl->stream != 0){ - icalfileset_unlock(impl); - fclose(impl->stream); - impl->stream = 0; - } - - free(impl); -} - -char* icalfileset_path(icalfileset* cluster) -{ - struct icalfileset_impl *impl = (struct icalfileset_impl*)cluster; - icalerror_check_arg_rz((cluster!=0),"cluster"); - - return impl->path; -} - - -int icalfileset_lock(icalfileset *cluster) -{ - struct icalfileset_impl *impl = (struct icalfileset_impl*)cluster; - struct flock lock; - int fd; - - icalerror_check_arg_rz((impl->stream!=0),"impl->stream"); - - fd = fileno(impl->stream); - - lock.l_type = F_WRLCK; /* F_RDLCK, F_WRLCK, F_UNLCK */ - lock.l_start = 0; /* byte offset relative to l_whence */ - lock.l_whence = SEEK_SET; /* SEEK_SET, SEEK_CUR, SEEK_END */ - lock.l_len = 0; /* #bytes (0 means to EOF) */ - - return (fcntl(fd, F_SETLKW, &lock)); -} - -int icalfileset_unlock(icalfileset *cluster) -{ - struct icalfileset_impl *impl = (struct icalfileset_impl*)cluster; - int fd; - struct flock lock; - icalerror_check_arg_rz((impl->stream!=0),"impl->stream"); - - fd = fileno(impl->stream); - - lock.l_type = F_WRLCK; /* F_RDLCK, F_WRLCK, F_UNLCK */ - lock.l_start = 0; /* byte offset relative to l_whence */ - lock.l_whence = SEEK_SET; /* SEEK_SET, SEEK_CUR, SEEK_END */ - lock.l_len = 0; /* #bytes (0 means to EOF) */ - - return (fcntl(fd, F_UNLCK, &lock)); - -} - -icalerrorenum icalfileset_create_cluster(char *path) -{ - - FILE* f; - - icalerror_clear_errno(); - - f = fopen(path,"w"); - - if (f == 0){ - icalerror_set_errno(ICAL_FILE_ERROR); - return ICAL_FILE_ERROR; - } - - - /* This used to write data to the file... */ - - - fclose(f); - - return ICAL_NO_ERROR; -} - -icalerrorenum icalfileset_commit(icalfileset* cluster) -{ - FILE *f; - char tmp[PATH_MAX]; /* HACK Buffer overflow potential */ - char *str; - icalcomponent *c; - - struct icalfileset_impl *impl = (struct icalfileset_impl*)cluster; - - icalerror_check_arg_re((impl!=0),"cluster",ICAL_BADARG_ERROR); - - if (impl->changed == 0 ){ - return ICAL_NO_ERROR; - } - -#ifdef ICAL_SAFESAVES - snprintf(tmp,PATH_MAX,"%s-tmp",impl->path); -#else - strcpy(tmp,impl->path); -#endif - - if ( (f = fopen(tmp,"w")) < 0 ){ - icalerror_set_errno(ICAL_FILE_ERROR); - return ICAL_FILE_ERROR; - } - - for(c = icalcomponent_get_first_component(impl->cluster,ICAL_ANY_COMPONENT); - c != 0; - c = icalcomponent_get_next_component(impl->cluster,ICAL_ANY_COMPONENT)){ - - str = icalcomponent_as_ical_string(c); - - if ( fwrite(str,sizeof(char),strlen(str),f) < strlen(str)){ - fclose(f); - return ICAL_FILE_ERROR; - } - } - - fclose(f); - impl->changed = 0; - -#ifdef ICAL_SAFESAVES - rename(tmp,impl->path); /* HACK, should check for error here */ -#endif - - return ICAL_NO_ERROR; - -} - -void icalfileset_mark(icalfileset* cluster){ - - struct icalfileset_impl *impl = (struct icalfileset_impl*)cluster; - - icalerror_check_arg_rv((impl!=0),"cluster"); - - impl->changed = 1; - -} - -icalcomponent* icalfileset_get_component(icalfileset* cluster){ - struct icalfileset_impl *impl = (struct icalfileset_impl*)cluster; - - icalerror_check_arg_re((impl!=0),"cluster",ICAL_BADARG_ERROR); - - return impl->cluster; -} - - -/* manipulate the components in the cluster */ - -icalerrorenum icalfileset_add_component(icalfileset *cluster, - icalcomponent* child) -{ - struct icalfileset_impl* impl = (struct icalfileset_impl*)cluster; - - icalerror_check_arg_rv((cluster!=0),"cluster"); - icalerror_check_arg_rv((child!=0),"child"); - - icalcomponent_add_component(impl->cluster,child); - - icalfileset_mark(cluster); - - return ICAL_NO_ERROR; - -} - -icalerrorenum icalfileset_remove_component(icalfileset *cluster, - icalcomponent* child) -{ - struct icalfileset_impl* impl = (struct icalfileset_impl*)cluster; - - icalerror_check_arg_rv((cluster!=0),"cluster"); - icalerror_check_arg_rv((child!=0),"child"); - - icalcomponent_remove_component(impl->cluster,child); - - icalfileset_mark(cluster); - - return ICAL_NO_ERROR; -} - -int icalfileset_count_components(icalfileset *cluster, - icalcomponent_kind kind) -{ - struct icalfileset_impl* impl = (struct icalfileset_impl*)cluster; - - if(cluster == 0){ - icalerror_set_errno(ICAL_BADARG_ERROR); - return -1; - } - - return icalcomponent_count_components(impl->cluster,kind); -} - -icalerrorenum icalfileset_select(icalfileset* cluster, icalcomponent* gauge); -void icalfileset_clear(icalfileset* cluster); - -icalcomponent* icalfileset_fetch(icalfileset* store, char* uid); -int icalfileset_has_uid(icalfileset* store, char* uid); - - -/* Iterate through components */ -icalcomponent* icalfileset_get_current_component (icalfileset* cluster) -{ - struct icalfileset_impl* impl = (struct icalfileset_impl*)cluster; - - icalerror_check_arg_rz((cluster!=0),"cluster"); - - return icalcomponent_get_current_component(impl->cluster); -} - - -icalcomponent* icalfileset_get_first_component(icalfileset* cluster, - icalcomponent_kind kind) -{ - struct icalfileset_impl* impl = (struct icalfileset_impl*)cluster; - - icalerror_check_arg_rz((cluster!=0),"cluster"); - - return icalcomponent_get_first_component(impl->cluster,kind); -} - -icalcomponent* icalfileset_get_next_component(icalfileset* cluster, - icalcomponent_kind kind) -{ - struct icalfileset_impl* impl = (struct icalfileset_impl*)cluster; - - icalerror_check_arg_rz((cluster!=0),"cluster"); - - return icalcomponent_get_next_component(impl->cluster,kind); -} - diff --git a/libical/src/libicalss/icalfileset.h b/libical/src/libicalss/icalfileset.h deleted file mode 100644 index 8ceae632be..0000000000 --- a/libical/src/libicalss/icalfileset.h +++ /dev/null @@ -1,90 +0,0 @@ -/* -*- Mode: C -*- */ -/*====================================================================== - FILE: icalfileset.h - CREATOR: eric 23 December 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 eric. The Initial Developer of the Original - Code is Eric Busboom - - -======================================================================*/ - -#ifndef ICALFILESET_H -#define ICALFILESET_H - -#include "ical.h" - -typedef void icalfileset; - - -/* icalfileset - icalfilesetfile - icalfilesetdir -*/ - - -icalfileset* icalfileset_new(char* path); -void icalfileset_free(icalfileset* cluster); - -char* icalfileset_path(icalfileset* cluster); - -/* Mark the cluster as changed, so it will be written to disk when it - is freed. Commit writes to disk immediately. */ -void icalfileset_mark(icalfileset* cluster); -icalerrorenum icalfileset_commit(icalfileset* cluster); - -icalerrorenum icalfileset_add_component(icalfileset* cluster, - icalcomponent* child); - -icalerrorenum icalfileset_remove_component(icalfileset* cluster, - icalcomponent* child); - -int icalfileset_count_components(icalfileset* cluster, - icalcomponent_kind kind); - -/* Restrict the component returned by icalfileset_first, _next to those - that pass the gauge. _clear removes the gauge */ -icalerrorenum icalfileset_select(icalfileset* store, icalcomponent* gauge); -void icalfileset_clear(icalfileset* store); - -/* Get and search for a component by uid */ -icalcomponent* icalfileset_fetch(icalfileset* cluster, char* uid); -int icalfileset_has_uid(icalfileset* cluster, char* uid); - - -/* Iterate through components. If a guage has been defined, these - will skip over components that do not pass the gauge */ - -icalcomponent* icalfileset_get_current_component (icalfileset* cluster); -icalcomponent* icalfileset_get_first_component(icalfileset* cluster, - icalcomponent_kind kind); -icalcomponent* icalfileset_get_next_component(icalfileset* cluster, - icalcomponent_kind kind); - -/* Return a reference to the internal component. You probably should - not be using this. */ - -icalcomponent* icalfileset_get_component(icalfileset* cluster); - - -#endif /* !ICALFILESET_H */ - - - diff --git a/libical/src/libicalss/icalfilesetimpl.h b/libical/src/libicalss/icalfilesetimpl.h deleted file mode 100644 index de447c64eb..0000000000 --- a/libical/src/libicalss/icalfilesetimpl.h +++ /dev/null @@ -1,42 +0,0 @@ -/* -*- Mode: C -*- - ====================================================================== - FILE: icalfilesetimpl.h - CREATOR: eric 23 December 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 eric. The Initial Developer of the Original - Code is Eric Busboom - - - ======================================================================*/ - - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -/* This definition is in its own file so it can be kept out of the - main header file, but used by "friend classes" like icaldirset*/ - -struct icalfileset_impl { - char *path; - icalcomponent* cluster; - int changed; - FILE* stream; -}; - diff --git a/libical/src/libicalss/icalgauge.c b/libical/src/libicalss/icalgauge.c deleted file mode 100644 index 60ce1587cd..0000000000 --- a/libical/src/libicalss/icalgauge.c +++ /dev/null @@ -1,208 +0,0 @@ -/* -*- Mode: C -*- */ -/*====================================================================== - FILE: icalgauge.c - CREATOR: eric 23 December 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 eric. The Initial Developer of the Original - Code is Eric Busboom - - -======================================================================*/ - -#include "ical.h" - -/* Convert a VQUERY component into a gauge */ -icalcomponent* icalgauge_make_gauge(icalcomponent* query); - -/* icaldirset_test compares a component against a gauge, and returns - true if the component passes the test - - The gauge is a VCALENDAR component that specifies how to test the - target components. The guage holds a collection of VEVENT, VTODO or - VJOURNAL sub-components. Each of the sub-components has a - collection of properties that are compared to corresponding - properties in the target component, according to the - X-LIC-COMPARETYPE parameters to the gauge's properties. - - When a gauge has several sub-components, the results of testing the - target against each of them is ORed together - the target - component will pass if it matches any of the sub-components in the - gauge. However, the results of matching the proeprties in a - sub-component are ANDed -- the target must match every property in - a gauge sub-component to match the sub-component. - - Here is an example: - - BEGIN:XROOT - BEGIN:VCOMPONENT - BEGIN:VEVENT - DTSTART;X-LIC-COMPARETYPE=LESS:19981025T020000 - ORGANIZER;X-LIC-COMPARETYPE=EQUAL:mrbig@host.com - END:VEVENT - BEGIN:VEVENT - LOCATION;X-LIC-COMPARETYPE=EQUAL:McNary's Pub - END:VEVENT - END:VCALENDAR - END:XROOT - - This gauge has two sub-components; one which will match a VEVENT - based on start time, and organizer, and another that matches based - on LOCATION. A target component will pass the test if it matched - either of the sub-components. - - */ - - -int icalgauge_test_recurse(icalcomponent* comp, icalcomponent* gauge) -{ - int pass = 1,localpass = 0; - icalproperty *p; - icalcomponent *child,*subgauge; - icalcomponent_kind gaugekind, compkind; - - icalerror_check_arg_rz( (comp!=0), "comp"); - icalerror_check_arg_rz( (gauge!=0), "gauge"); - - gaugekind = icalcomponent_isa(gauge); - compkind = icalcomponent_isa(comp); - - if( ! (gaugekind == compkind || gaugekind == ICAL_ANY_COMPONENT) ){ - return 0; - } - - /* Test properties. For each property in the gauge, search through - the component for a similar property. If one is found, compare - the two properties value with the comparison specified in the - gauge with the X-LIC-COMPARETYPE parameter */ - - for(p = icalcomponent_get_first_property(gauge,ICAL_ANY_PROPERTY); - p != 0; - p = icalcomponent_get_next_property(gauge,ICAL_ANY_PROPERTY)){ - - icalproperty* targetprop; - icalparameter* compareparam; - icalparameter_xliccomparetype compare; - int rel; /* The relationship between the gauge and target values.*/ - - /* Extract the comparison type from the gauge. If there is no - comparison type, assume that it is "EQUAL" */ - - compareparam = icalproperty_get_first_parameter( - p, - ICAL_XLICCOMPARETYPE_PARAMETER); - - if (compareparam!=0){ - compare = icalparameter_get_xliccomparetype(compareparam); - } else { - compare = ICAL_XLICCOMPARETYPE_EQUAL; - } - - /* Find a property in the component that has the same type - as the gauge property. HACK -- multiples of a single - property type in the gauge will match only the first - instance in the component */ - - targetprop = icalcomponent_get_first_property(comp, - icalproperty_isa(p)); - - if(targetprop != 0){ - - /* Compare the values of the gauge property and the target - property */ - - rel = icalvalue_compare(icalproperty_get_value(p), - icalproperty_get_value(targetprop)); - - /* Now see if the comparison is equavalent to the comparison - specified in the gauge */ - - if (rel == compare){ - localpass++; - } else if (compare == ICAL_XLICCOMPARETYPE_LESSEQUAL && - ( rel == ICAL_XLICCOMPARETYPE_LESS || - rel == ICAL_XLICCOMPARETYPE_EQUAL)) { - localpass++; - } else if (compare == ICAL_XLICCOMPARETYPE_GREATEREQUAL && - ( rel == ICAL_XLICCOMPARETYPE_GREATER || - rel == ICAL_XLICCOMPARETYPE_EQUAL)) { - localpass++; - } else if (compare == ICAL_XLICCOMPARETYPE_NOTEQUAL && - ( rel == ICAL_XLICCOMPARETYPE_GREATER || - rel == ICAL_XLICCOMPARETYPE_LESS)) { - localpass++; - } else { - localpass = 0; - } - - pass = pass && (localpass>0); - } - } - - /* Test subcomponents. Look for a child component that has a - counterpart in the gauge. If one is found, recursively call - icaldirset_test */ - - for(subgauge = icalcomponent_get_first_component(gauge,ICAL_ANY_COMPONENT); - subgauge != 0; - subgauge = icalcomponent_get_next_component(gauge,ICAL_ANY_COMPONENT)){ - - gaugekind = icalcomponent_isa(subgauge); - - if (gaugekind == ICAL_ANY_COMPONENT){ - child = icalcomponent_get_first_component(comp,ICAL_ANY_COMPONENT); - } else { - child = icalcomponent_get_first_component(comp,gaugekind); - } - - if(child !=0){ - localpass = icalgauge_test_recurse(child,subgauge); - pass = pass && localpass; - } else { - pass = 0; - } - } - - return pass; -} - -/* guagecontainer is an XROOT component that holds several gauges. The - results of comparing against these gauges are ORed together in this - routine */ -int icalgauge_test(icalcomponent* comp, - icalcomponent* gaugecontainer) -{ - int pass = 0; - icalcomponent *gauge; - - icalerror_check_arg_rz( (comp!=0), "comp"); - icalerror_check_arg_rz( (gauge!=0), "gauge"); - - for(gauge = icalcomponent_get_first_component(gaugecontainer,ICAL_ANY_COMPONENT); - gauge != 0; - gauge = icalcomponent_get_next_component(gaugecontainer,ICAL_ANY_COMPONENT)){ - - pass += icalgauge_test_recurse(comp, gauge); - } - - return pass>0; - -} - - diff --git a/libical/src/libicalss/icalgauge.h b/libical/src/libicalss/icalgauge.h deleted file mode 100644 index 401d9b7347..0000000000 --- a/libical/src/libicalss/icalgauge.h +++ /dev/null @@ -1,37 +0,0 @@ -/* -*- Mode: C -*- */ -/*====================================================================== - FILE: icalgauge.h - CREATOR: eric 23 December 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 eric. The Initial Developer of the Original - Code is Eric Busboom - - -======================================================================*/ - -#ifndef ICALGAUGE_H -#define ICALGAUGE_H - -icalcomponent* icalgauge_new_from_vquery(char* vquery); -char* icalgauge_as_vquery(icalcomponent* gauge); -int icalgauge_test(icalcomponent* comp, icalcomponent* gaugecontainer); - - -#endif /* ICALGAUGE_H*/ diff --git a/libical/src/libicalss/icalset.c b/libical/src/libicalss/icalset.c deleted file mode 100644 index 01a36c0129..0000000000 --- a/libical/src/libicalss/icalset.c +++ /dev/null @@ -1,86 +0,0 @@ -/* -*- Mode: C -*- */ -/*====================================================================== - FILE: icalset.c - CREATOR: eric 17 Jul 2000 - - - Icalset is the "base class" for representations of a collection of - iCal components. Derived classes (actually delegatees) include: - - icalfileset Store componetns in a single file - icaldirset Store components in multiple files in a directory - icalheapset Store components on the heap - icalmysqlset Store components in a mysql database. - - $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 - - -======================================================================*/ - -#include "ical.h" -#include "icalset.h" -#include "icalfileset.h" -#include "icaldirset.h" -/*#include "icalheapset.h"*/ -/*#include "icalmysqlset.h"*/ - -icalset* icalset_new_file(char* path); - -icalset* icalset_new_dir(char* path); - -icalset* icalset_new_heap(void); - -icalset* icalset_new_mysql(char* path); - -void icalset_free(icalset* set); - -char* icalset_path(icalset* set); - -void icalset_mark(icalset* set); - -icalerrorenum icalset_commit(icalset* set); - -icalerrorenum icalset_add_component(icalset* set, icalcomponent* comp); - -icalerrorenum icalset_remove_component(icalset* set, icalcomponent* comp); - -int icalset_count_components(icalset* set, - icalcomponent_kind kind); - -icalerrorenum icalset_select(icalset* set, icalcomponent* gauge); - -void icalset_clear_select(icalset* set); - -icalcomponent* icalset_fetch(icalset* set, char* uid); - -int icalset_has_uid(icalset* set, char* uid); - -icalerrorenum icalset_modify(icalset* set, icalcomponent *old, - icalcomponent *new); - -icalcomponent* icalset_get_current_component(icalset* set); - -icalcomponent* icalset_get_first_component(icalset* set); - -icalcomponent* icalset_get_next_component(icalset* set); - - - - diff --git a/libical/src/libicalss/icalset.h b/libical/src/libicalss/icalset.h deleted file mode 100644 index 15bb71f72e..0000000000 --- a/libical/src/libicalss/icalset.h +++ /dev/null @@ -1,100 +0,0 @@ -/* -*- Mode: C -*- */ -/*====================================================================== - FILE: icalset.h - CREATOR: eric 28 November 1999 - - - Icalset is the "base class" for representations of a collection of - iCal components. Derived classes (actually delegatees) include: - - icalfileset Store componetns in a single file - icaldirset Store components in multiple files in a directory - icalheapset Store components on the heap - icalmysqlset Store components in a mysql database. - - $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 ICALSET_H -#define ICALSET_H - -#include "ical.h" -#include "icalerror.h" - -typedef void icalset; - -typedef enum icalset_kind { - ICAL_FILE_SET, - ICAL_DIR_SET, - ICAL_HEAP_SET, - ICAL_MYSQL_SET, - ICAL_CAP_SET -} icalset_kind; - - -/* Create a specific derived type of set */ -icalset* icalset_new_file(char* path); -icalset* icalset_new_dir(char* path); -icalset* icalset_new_heap(void); -icalset* icalset_new_mysql(char* path); -/*icalset* icalset_new_cap(icalcstp* cstp);*/ - -void icalset_free(icalset* set); - -char* icalset_path(icalset* set); - -/* Mark the cluster as changed, so it will be written to disk when it - is freed. Commit writes to disk immediately*/ -void icalset_mark(icalset* set); -icalerrorenum icalset_commit(icalset* set); - -icalerrorenum icalset_add_component(icalset* set, icalcomponent* comp); -icalerrorenum icalset_remove_component(icalset* set, icalcomponent* comp); - -int icalset_count_components(icalset* set, - icalcomponent_kind kind); - -/* Restrict the component returned by icalset_first, _next to those - that pass the gauge. _clear removes the gauge. */ -icalerrorenum icalset_select(icalset* set, icalcomponent* gauge); -void icalset_clear_select(icalset* set); - -/* Get a component by uid */ -icalcomponent* icalset_fetch(icalset* set, char* uid); -int icalset_has_uid(icalset* set, char* uid); - -/* Modify components according to the MODIFY method of CAP. Works on - the currently selected components. */ -icalerrorenum icalset_modify(icalset* set, icalcomponent *old, - icalcomponent *new); - -/* Iterate through the components. If a guage has been defined, these - will skip over components that do not pass the gauge */ - -icalcomponent* icalset_get_current_component(icalset* set); -icalcomponent* icalset_get_first_component(icalset* set); -icalcomponent* icalset_get_next_component(icalset* set); - -#endif /* !ICALSET_H */ - - - diff --git a/libical/src/libicalvcal/.cvsignore b/libical/src/libicalvcal/.cvsignore deleted file mode 100644 index 2a74119e29..0000000000 --- a/libical/src/libicalvcal/.cvsignore +++ /dev/null @@ -1,11 +0,0 @@ -*.la -*.lo -.libs -.deps -Makefile -Makefile.in -libtool -ltconfig -ltmain.sh -stamp-h -stamp-h.in diff --git a/libical/src/libicalvcal/Makefile.am b/libical/src/libicalvcal/Makefile.am deleted file mode 100644 index 862d77bcea..0000000000 --- a/libical/src/libicalvcal/Makefile.am +++ /dev/null @@ -1,17 +0,0 @@ - -lib_LIBRARIES = libicalvcal.a - -libicalvcal_a_SOURCES = \ - vcc.y \ - vcc.h \ - vobject.c \ - vobject.h \ - port.h \ - vcaltmp.c \ - vcaltmp.h \ - icalvcal.c \ - icalvcal.h - -EXTRA_DIST = README.TXT vcaltest.c vctest.c - -INCLUDES = -I ../libical -I $(srcdir)/../libical \ No newline at end of file diff --git a/libical/src/libicalvcal/README.TXT b/libical/src/libicalvcal/README.TXT deleted file mode 100644 index c8ce8b0979..0000000000 --- a/libical/src/libicalvcal/README.TXT +++ /dev/null @@ -1,951 +0,0 @@ -NOTE: If you used the earlier APIs released by Versit -then you will want to look at the document "migrate.doc" -included with this package. It contains a discussion of -the differences between the old API and this one. - ----------------------------------------------------------------- - -The vCard/vCalendar C interface is implemented in the set -of files as follows: - -vcc.y, yacc source, and vcc.c, the yacc output you will use -implements the core parser - -vobject.c implements an API that insulates the caller from -the parser and changes in the vCard/vCalendar BNF - -port.h defines compilation environment dependent stuff - -vcc.h and vobject.h are header files for their .c counterparts - -vcaltmp.h and vcaltmp.c implement vCalendar "macro" functions -which you may find useful. - -test.c is a standalone test driver that exercises some of -the features of the APIs provided. Invoke test.exe on a -VCARD/VCALENDAR input text file and you will see the pretty -print output of the internal representation (this pretty print -output should give you a good idea of how the internal -representation looks like -- there is one such output in the -following too). Also, a file with the .out suffix is generated -to show that the internal representation can be written back -in the original text format. - ------------------------------------------------------------------ - - - VObject for VCard/VCalendar - -Table of Contents -================= -1. VObject -2. Internal Representations of VCard/VCalendar -3. Iterating Through VObject's Properties or Values -4. Pretty Printing a VObject Tree -5. Building A VObject Representation of A VCard/VCalendar -6. Converting A VObject Representation Into Its Textual Representation -7. Miscellaneous Notes On VObject APIs usages -8. Brief descriptions of each APIs -9. Additional Programming Notes. - -This document is mainly about the VObject and its APIs. The main -use of a VObject is to represent a VCard or a VCalendar inside -a program. However, its use is not limited to aforemention as it -can represent an arbitrary information that makes up of a tree or -forest of properties/values. - -1. VObject - ======= -A VObject can have a name (id) and a list of associated properties and -a value. Each property is itself a VObject. - -2. Internal Representations of VCard/VCalendar - =========================================== -A list of VCard or a VCalendar is represented by a list of VObjects. -The name (id) of the VObjects in the list is either VCCardProp or -VCCalProp. Each of these VObjects can have a list of properties. -Since a property is represented as a VObject, each of these properties -can have a name, a list of properties, and a value. - -For example, the input file "vobject.vcf": - -BEGIN:VCARD -N:Alden;Roland -FN:Roland H. Alden -ORG:AT&T;Versit Project Office -TITLE:Consultant -EMAIL;WORK;PREF;INTERNET:sf!rincon!ralden@alden.attmail.com -EMAIL;INTERNET:ralden@sfgate.com -EMAIL;MCIMail:242-2200 -LABEL;DOM;POSTAL;PARCEL;HOME;WORK;QUOTED-PRINTABLE:Roland H. Alden=0A= -Suite 2208=0A= -One Pine Street=0A= -San Francisco, CA 94111 -LABEL;POSTAL;PARCEL;HOME;WORK;QUOTED-PRINTABLE:Roland H. Alden=0A= -Suite 2208=0A= -One Pine Street=0A= -San Francisco, CA 94111=0A= -U.S.A. -TEL;WORK;PREF;MSG:+1 415 296 9106 -TEL;WORK;FAX:+1 415 296 9016 -TEL;MSG;CELL:+1 415 608 5981 -ADR:;Suite 2208;One Pine Street;San Francisco;CA;94111;U.S.A. -SOUND:ROW-LAND H ALL-DIN -LOGO;GIF;BASE64: - R0lGODdhpgBOAMQAAP///+/v797e3s7Ozr29va2trZycnIyMjHt7e2NjY1JSUkJC - QjExMSEhIRAQEO///87v9973/73n95zW71K13jGl1nvG50Kt3iGc1gCMzq3e94zO - 7xCU1nO952O15wAAACwAAAAApgBOAAAF/yAgjmRpnmiqrmzrvnAsz3Rt33iu73zv - /8CgcEj8QTaeywWTyWCUno2kSK0KI5tLc8vtNi+WiHVMlj0mFK96nalsxOW4fPSw - cNj4tQc+7xcjGh4WExJTJYUTFkp3eU0eEH6RkpOUlTARhRoWm5ydFpCWoS0QEqAu - ARKaHRcVjV0borEoFl0cSre4Sq67FA+yvwAeTU8XHZ7HmxS6u2wVfMCVpAE3pJoW - ylrMptDcOqSF4OHg3eQ5pInInb7lcc86mNbLzBXsZbRfUOn6ucyNHvVWJHCpQFDf - MWwEEzLqx2YCQCqF3OnItClJNmYcJD7cSAKTuI/gtnEcOQKkyVIk6/+ds5CkFcMM - 61LiENikwi1jBnNyuvUSjwWZOS5uIZarqNFcNl32XMMB6I06GgoJ+bZp1ZKeDl8E - +MC1K1cBIhZ4HUu2LAsCZdOWRQDt20lxIlccSHsgrNq7Xc/ixcsWmNu34WKyYJCW - gQjCe9XqTZy2L4pv04gg2sSKSc8OLgTcBSuWsdkVaD2TdXyiQxebFyjo1Gnx6tJm - LuaqrdtZtNfFtruSNmF5IKujwIsmJbjwtRqNJhrcNVw79wcRAgogmE4ArIjQzj/s - JvHAGCFDQR4UqigPK4sBe62XwO51OwADiMcqUG+iOdcFAL+hW20BfAoEexlwAnu6 - mZDAXQ1EVh//WfhxJB5gIbHgwFgOTOiVAgOuVQKAfKFg3weGwSBYFZMp4hpDGKyA - 3lgJKECWgiMQyBVpW+0V4oJjNfhCNkR1IgWEb21QlRK9GdfFCgeOZYBsXgm4noYj - GEBhAQHYh0J8XenoQnFGdrkUciJY6FUAK15ogozakcBhliKsyZWHDMZQ0wWC/Aim - DB6h01KRr/lXQgFxAqDcWDACgCZpUnrVQJtjwTnWjS6MWAYqqfDnSaEkJOlVXQBo - 2pWTMUJ53WgAuPncCR9q6VQMAYjZlXWJmknCoSUM2p4BC+SaKwG88hoZlvfFMM4f - hQh5TXkv+RklWYtC91mopJIAKFkJlDAW/wF25ShnLbeo5gmQ+1FGkJdrKCuCi2OR - BuwHBcwqKgABrMtVAgpem61XkLbAJ7n8uiIpvGVhO4KpH1QLbbpqLheZvQCkGoNL - thSzSTg2UGVBBzbtaxwKsYrmgLvRAlCmWgwMAADD66rKAgR3XlGspcdkZYK8ibU7 - asgEl+XAyB8I7PCqMWiWncGGimpfAgO4ypXSPpOVLwsRCDJxRD2AoyeRRv5kApO5 - fXwzwvfOKLKtaTWtbQxccmGLTZy8xYlVSvXbhbk0M2YzrYfJJ0K8m+V9NgxpyC04 - UycI/aiuiH9Y8NftDUwWp1Wm5UABnAUKwwRsPFGBt4Oc9PZvGvNLwf8JOZt8Arpe - eY23yDovwIDiBX74NAsPVLDJj3Hh4JEExsKcjrlKf9DsCVx3ZfLqAKBuG1s/A90C - z2KjYHjjyPOdG1spz6BBUr+BcUxUb1nDCTa/VZD2Uv+YkLPAKJC9dNEh7628WgqI - ybzlaA+ufxMa6bxC6ciLUQLcx5UGIAAsAkDA6wQkOxrcY39yo4cQMNWCAPTKV1R4 - wPkgaBxzOc8FtMiF1NoGoXBRJjgoPApmPsjCFlbMdzCM4TFy50IXxI2DPcHAv2rY - gghsEIeu8CAPW6ABIPYEFkOsAeaMyIz0JfGJUExBBGRIRX0IMYovWCIT1eBELNpA - i1vcgta8iANPCIQOghzQABl30J0tXqBla4wjFLFQxZzAUY42CIAd5OYBCuKxB2c4 - I0b28EcrQKADgmSKB9RYyDhA4BqCxIBqrtjIMTwoFeCjYSU3KZMQAAA7 - -BEGIN:VCALENDAR -DCREATED:19960523T100522 -PRODID:-//Alden Roland/Hand Crafted In North Carolina//NONSGML Made By Hand//EN -VERSION:0.3 -BEGIN:VEVENT -START:19960523T120000 -END:19960523T130000 -SUBTYPE:PHONE CALL -SUMMARY:VERSIT PDI PR Teleconference/Interview -DESCRIPTION:VERSIT PDI PR Teleconference/Interview With Tom Streeter and Alden Roland -END:VEVENT -BEGIN:VEVENT -START:19960523T113000 -END:19960523T115500 -SUBTYPE:LUNCH -SUMMARY:Eat in the cafeteria today -END:VEVENT -END:VCALENDAR - -END:VCARD - - -will conceptually be be represented as - vcard - VCNameProp - VCFamilyNameProp=Alden - VCGivenNameProp=Roland - VCFullNameProp=Roland H.Alden - .... - -note that - EMAIL;WORK;PREF;INTERNET:sf!rincon!ralden@alden.attmail.com -will be represented as: - VCEmailAddress=sf!rincon!ralden@alden.attmail.com - VCWork - VCPreferred - VCInternet -where the lower level properties are properties of the property -VCEmailAddress. - -Groupings are flattened out in the VObject representation such -that: - a.b:blah - a.c:blahblah -are represented as: - b=blah - VCGrouping=a - c=blahblah - VCGrouping=a -i.e. one can read the above as: - the property "b" has value "blah" and property "VCGrouping" - with the value "a". - the property "c" has value "blahblah" and property "VCGrouping" - with the value "a". -likewise, multi-level groupings are flatten similarly. e.g. - a.b.c:blah - a.b.e:blahblah ---> - c=blah - VCGrouping=b - VCGrouping=a - e=blahblah - VCGrouping=b - VCGrouping=a -which read: - the property "c" has value "blah" and property "VCGrouping" - with the value "b" which has property "VCGrouping" - with value "a". - the property "e" has value "blahblah" and property "VCGrouping" - with the value "b" which has property "VCGrouping" - with value "a". - -3. Iterating Through VObject's Properties or Values - ================================================ -The following is a skeletal form of iterating through -all properties of a vobject, o: - - // assume the object of interest, o, is of type VObject - VObjectIterator i; - initPropIterator(&i,o); - while (moreIteration(&i)) { - VObject *each = nextVObject(&i); - // ... do something with "each" property - } - -Use the API vObjectName() to access a VObject's name. -Use the API vObjectValueType() to determine if a VObject has - a value. For VCard/VCalendar application, you - should not need this function as practically - all values are either of type VCVT_USTRINGZ or - VCVT_RAW (i.e set by setVObjectUStringZValue and - setVObjectAnyValue APIs respectively), and the - value returned by calls to vObjectUStringZValue - and vObjectAnyValue are 0 if a VObject has no - value. (There is a minor exception where VObject with - VCDataSizeProp has value that is set by - setVObjectLongValue). -Use the APIs vObject???Value() to access a VObject's value. - where ??? is the expected type. -Use the APIs setvObject???Value() to set or modify a VObject's value. - where ??? is the expected type. -Use the API isAPropertyOf() to query if a name match the name of - a property of a VObject. Since isAPropertyOf() return - the matching property, we can use that to retrieve - a property and subsequently the value of the property. - -4. Pretty Printing a VObject Tree - ============================== -VObject tree can be pretty printed with the printVObject() function. -The output of pretty printing a VObject representation of the input -test file "vobject.vcf" is shown below. Note that the indentation -indicates the tree hirerarchy where the immediate children nodes -of a parent node is all at the same indentation level and the -immediate children nodes are the immediate properties of the -associated parent nodes. In the following, {N,FN,ORG,TITLE,...} -are immediate properties of VCARD. {F and G} are properties of N -with value {"Alden" and "Roland"} respectively; FN has no property -but has the value "Roland H. Alden"; EMAIL has value and -the properties WORK, PREF, and INTERNET. - - -VCARD - N - F="Alden" - G="Roland" - FN="Roland H. Alden" - ORG - ORGNAME="AT&T" - OUN="Versit Project Office" - TITLE="Consultant" - EMAIL="sf!rincon!ralden@alden.attmail.com" - WORK - PREF - INTERNET - EMAIL="ralden@sfgate.com" - INTERNET - EMAIL="242-2200" - MCIMail - LABEL="Roland H. Alden - Suite 2208 - One Pine Street - San Francisco, CA 94111" - DOM - POSTAL - PARCEL - HOME - WORK - QP - LABEL="Roland H. Alden - Suite 2208 - One Pine Street - San Francisco, CA 94111 - U.S.A." - POSTAL - PARCEL - HOME - WORK - QP - TEL="+1 415 296 9106" - WORK - PREF - MSG - TEL="+1 415 296 9016" - WORK - FAX - TEL="+1 415 608 5981" - MSG - CELL - ADR - EXT ADD="Suite 2208" - STREET="One Pine Street" - L="San Francisco" - R="CA" - PC="94111" - C="U.S.A." - SOUND="ROW-LAND H ALL-DIN" - LOGO=[raw data] - GIF - BASE64 - DataSize=1482 -VCALENDAR - DCREATED="19960523T100522" - PRODID="-//Alden Roland/Hand Crafted In North Carolina//NONSGML Made By Hand//EN" - VERSION="0.3" - VEVENT - START="19960523T120000" - END="19960523T130000" - SUBTYPE="PHONE CALL" - SUMMARY="VERSIT PDI PR Teleconference/Interview" - DESCRIPTION="VERSIT PDI PR Teleconference/Interview With Tom Streeter and Alden Roland" - VEVENT - START="19960523T113000" - END="19960523T115500" - SUBTYPE="LUNCH" - SUMMARY="Eat in the cafeteria today" - -5. Building A VObject Representation of A VCard/VCalendar - ====================================================== -The parser in vcc.y converts an input file with one or more -VCard/VCalendar that is in their textual representation -into their corresponding VObject representation. - -VObject representation of a VCard/VCalendar can also be built -directly with calls to the VObject building APIs. e.g. - - VObject *prop; - VObject *vcard = newVObject(VCCardProp); - prop = addProp(vcard,VCNameProp); - addPropValue(prop,VCFamilyNameProp,"Alden"); - addPropValue(prop,VCGivenNameProp,"Roland"); - addPropValue(vcard,VCFullNameProp,"Roland H. Alden"); - .... - -6. Converting A VObject Representation Into Its Textual Representation - =================================================================== -The VObject representation can be converted back to its textual -representation via the call to writeVObject() or writeMemVObject() -API. e.g. - a. to write to a file: - // assume vcard is of type VObject - FILE *fp = fopen("alden.vcf","w"); - writeVObject(fp,vcard); - a. to write to memory, and let the API allocate the required memory. - char* clipboard = writeVObject(0,0,vcard); - ... do something to clipboard - free(clipboard); - b. to write to a user allocated buffer: - char clipboard[16384]; - int len = 16384; - char *buf = writeVObject(clipboard,&len,vcard); - ... buf will be equal to clipboard if the write - is successful otherwise 0. - -In the case of writing to memory, the memory buffer can be either -allocated by the API or the user. If the user allocate the -memory for the buffer, then the length of the buffer needs to be -communicated to the API via a variable. The variable passed as -the length argument will be overwritten with the actual size -of the text output. A 0 return value from writeMemVObject() -indicates an error which could be caused by overflowing the -size of the buffer or lack of heap memory. - -7. Miscellaneous Notes On VObject APIs usages - ========================================== -a. vcc.h -- contains basic interfaces to the parser: - VObject* Parse_MIME(const char *input, unsigned long len); - VObject* Parse_MIME_FromFile(FILE *file); - -- both of this return a null-terminated list of - VObject that is either a VCARD or VCALENDAR. - To iterate through this list, do - VObject *t, *v; - v = Parse_Mime_FromFile(fp); - while (v) { - // ... do something to v. - t = v; - v = nextVObjectInList(v); - cleanVObject(t); - } - note that call to cleanVObject will release - resource used to represent the VObject. - -b. vobject.h -- contains basic interfaces to the VObject APIs. - see the header for more details. - The structure of VObject is purposely (hiddened) not exposed - to the user. Every access has to be done via - the APIs. This way, if we need to change the - structure or implementation, the client need not - recompile as long as the interfaces remain the - same. - -c. values of a property is determined by the property definition - itself. The vobject APIs does not attempt to enforce - any of such definition. It is the consumer responsibility - to know what value is expected from a property. e.g - most properties have unicode string value, so to access - the value of these type of properties, you will use - the vObjectUStringZValue() to read the value and - setVObjectUStringZValue() to set or modify the value. - Refer to the VCard and VCalendar specifications for - the definition of each property. - -d. properties name (id) are case incensitive. - -8. Brief descriptions of each APIs - =============================== - * the predefined properties' names (id) are listed under vobject.h - each is of the form VC*Prop. e.g. - #define VC7bitProp "7BIT" - #define VCAAlarmProp "AALARM" - .... - - * consumer of a VObject can only define pointers to VObject. - - * a variable of type VObjectIterator, say "i", can be used to iterate - through a VObject's properties, say "o". The APIs related to - VObjectIterator are: - void initPropIterator(VObjectIterator *i, VObject *o); - -- e.g. usage - initPropIterator(&i,o); - int moreIteration(VObjectIterator *i); - -- e.g. usage - while (moreIteration(&i)) { ... } - VObject* nextVObject(VObjectIterator *i); - -- e.g. usage - while (moreIteration(&i)) { - VObject *each = nextVObject(&i); - } - - * VObject can be chained together to form a list. e.g. of such - use is in the parser where the return value of the parser is - a link list of VObject. A link list of VObject can be - built by: - void addList(VObject **o, VObject *p); - and iterated by - VObject* nextVObjectInList(VObject *o); - -- next VObjectInList return 0 if the list - is exhausted. - - * the following APIs are mainly used to construct a VObject tree: - VObject* newVObject(const char *id); - -- used extensively internally by VObject APIs but when - used externally, its use is mainly limited to the - construction of top level object (e.g. an object - with VCCardProp or VCCalendarProp id). - - void deleteVObject(VObject *p); - -- to deallocate single VObject, for most user, use - cleanVObject(VObject *o) instead for freeing all - resources associated with the VObject. - - char* dupStr(const char *s, unsigned int size); - -- duplicate a string s. If size is 0, the string is - assume to be a null-terminated. - - void deleteStr(const char *p); - -- used to deallocate a string allocated by dupStr(); - - void setVObjectName(VObject *o, const char* id); - -- set the id of VObject o. This function is not - normally used by the user. The setting of id - is normally done as part of other APIs (e.g. - addProp()). - - void setVObjectStringZValue(VObject *o, const char *s); - -- set a string value of a VObject. - - void setVObjectUStringZValue(VObject *o, const wchar_t *s); - -- set a Unicode string value of a VObject. - - void setVObjectIntegerValue(VObject *o, unsigned int i); - -- set an integer value of a VObject. - - void setVObjectLongValue(VObject *o, unsigned long l); - -- set an long integer value of a VObject. - - void setVObjectAnyValue(VObject *o, void *t); - -- set any value of a VObject. The value type is - unspecified. - - VObject* setValueWithSize(VObject *prop, void *val, unsigned int size); - -- set a raw data (stream of bytes) value of a VObject - whose size is size. The internal VObject representation - is - this object = val - VCDataSizeProp=size - i.e. the value val will be attached to the VObject prop - and a property of VCDataSize whose value is size - is also added to the object. - - void setVObjectVObjectValue(VObject *o, VObject *p); - -- set a VObject as the value of another VObject. - - const char* vObjectName(VObject *o); - -- retrieve the VObject's Name (i.e. id). - - const char* vObjectStringZValue(VObject *o); - -- retrieve the VObject's value interpreted as - null-terminated string. - - const wchar_t* vObjectUStringZValue(VObject *o); - -- retrieve the VObject's value interpreted as - null-terminated unicode string. - - unsigned int vObjectIntegerValue(VObject *o); - -- retrieve the VObject's value interpreted as - integer. - - unsigned long vObjectLongValue(VObject *o); - -- retrieve the VObject's value interpreted as - long integer. - - void* vObjectAnyValue(VObject *o); - -- retrieve the VObject's value interpreted as - any value. - - VObject* vObjectVObjectValue(VObject *o); - -- retrieve the VObject's value interpreted as - a VObject. - - VObject* addVObjectProp(VObject *o, VObject *p); - -- add a VObject p as a property of VObject o. - (not normally used externally for building a - VObject). - - VObject* addProp(VObject *o, const char *id); - -- add a property whose name is id to VObject o. - - VObject* addPropValue(VObject *o, const char *id, const char *v); - -- add a property whose name is id and whose value - is a null-terminated string to VObject o. - - VObject* addPropSizedValue(VObject *o, const char *id, - const char *v, unsigned int size); - -- add a property whose name is id and whose value - is a stream of bytes of size size, to VObject o. - - VObject* addGroup(VObject *o, const char *g); - -- add a group g to VObject o. - e.g. if g is a.b.c, you will have - o - c - VCGroupingProp=b - VCGroupingProp=a - and the object c is returned. - - VObject* isAPropertyOf(VObject *o, const char *id); - -- query if a property by the name id is in o and - return the VObject that represent that property. - - void printVObject(VObject *o); - -- pretty print VObject o to stdout (for debugging use). - - void writeVObject(FILE *fp, VObject *o); - -- convert VObject o to its textual representation and - write it to file. - - char* writeMemVObject(char *s, int *len, VObject *o); - -- convert VObject o to its textual representation and - write it to memory. If s is 0, then memory required - to hold the textual representation will be allocated - by this API. If a variable len is passed, len will - be overwriten with the byte size of the textual - representation. If s is non-zero, then s has to - be a user allocated buffer whose size has be passed - in len as a variable. Memory allocated by the API - has to be freed with call to free. The return value - of this API is either the user supplied buffer, - the memory allocated by the API, or 0 (in case of - failure). - - void cleanStrTbl(); - -- this function has to be called when all - VObject has been destroyed. - - void cleanVObject(VObject *o); - -- release all resources used by VObject o. - - wchar_t* fakeUnicode(const char *ps, int *bytes); - -- convert char* to wchar_t*. - - extern int uStrLen(const wchar_t *u); - -- length of unicode u. - - char *fakeCString(const wchar_t *u); - -- convert wchar_t to CString (blindly assumes that - this could be done). - -9. Additional Programming Notes - ============================ -In the following notes, please refers to the listing -of Example.vcf and its VObject Representation -(shown at the end of this section). - -* Handling the Return Value of the VCard/VCalendar Parser - The example input text file contains two root VObjects - (a VCalendar and a VCard). The output of the VCard/VCalendar - parser is a null-terminated list of VObjects. For this - particular input file, the list will have two VObjects. - The following shows a template for iterating through the - output of the Parser: - - VObject *t, *v; - v = Parse_Mime_fromFileName("example.vcf"); - while (v) { - // currently, v will either be a VCard or a VCalendar - // do whatever your application need to do to - // v here ... - t = v; - v = nextVObjectInList(v); - cleanVObject(t); - } - -* Iterating Through a VCard/VCalendar VObject - From the VObject APIs point of view, a VCard VObject - is the same as a VCalendar VObject. However, the application - needs to know what are in a VCard or a VCalendar. - For example, A VCalendar VObject can have VCDCreatedProp, - a VCGEOLocationProp, etc, and one or more VCEventProp and - or VCTodoProp. The VCEventProp and VCTodoProp can have - many properties of their own, which in turn could have - more properties (e.g. VCDAlarmProp can be a VCEventProp - VObject's property, and VCRunTimeProp can be a - VCDAlarmProp VObject's property. Because a VObject tree - can be arbitrarily complex, in general, to process all - properties and values of a VObject tree, a recursive walk - is desirable. An example recursive VObject tree walk - can be found in the vobject.c source lines for printVObject* - and writeVObject* APIs. Depending on what the application need - to do with a VCard or a VCalendar, a recursive walk - of the VObject tree may or may not be desirable. An example - template of a non-recursive walk is shown below: - - void processVCardVCalendar(char *inputFile) - { - VObject *t, *v; - v = Parse_Mime_fromFileName(inputFile); - while (v) { - char *n = vObjectName(v); - if (strcmp(n,VCCardProp) == 0) { - do_VCard(v); - } - else if (strcmp(n,VCCalendarProp) == 0) { - do_VCalendar(v); - } - else { - // don't know how to handle anything else! - } - t = v; - v = nextVObjectInList(v); - cleanVObject(t); - } - } - - void do_VCard(VObject *vcard) - { - VObjectIterator t; - initPropIterator(&t,vcard); - while (moreIteration(&t)) { - VObject *eachProp = nextVObject(&t); - // The primarly purpose of this example is to - // show how to iterate through a VCard VObject, - // it is not meant to be efficient at all. - char *n = vObjectName(eachProp); - if (strcmp(n,VCNameProp)==0) { - do_name(eachProp); - } - else if (strcmp(n,VCEmailProp)==0) { - do_email(eachProp); - } - else if (strcmp(n,VCLabelProp)==0) { - do_label(eachProp); - } - else if .... - } - } - - void do_VCalendar(VObject *vcal) - { - VObjectIterator t; - initPropIterator(&t,vcard); - while (moreIteration(&t)) { - VObject *eachProp = nextVObject(&t); - // The primarly purpose of this example is to - // show how to iterate through a VCalendar VObject, - // it is not meant to be efficient at all. - char *n = vObjectName(eachProp); - if (strcmp(n,VCDCreatedProp)==0) { - do_DCreated(eachProp); - } - else if (strcmp(n,VCVersionProp)==0) { - do_Version(eachProp); - } - else if (strcmp(n,VCTodoProp)==0) { - do_Todo(eachProp); - } - else if (strcmp(n,VCEventProp)==0) { - do_Event(eachProp); - } - else if .... - } - } - - void do_Todo(VObject *vtodo) { ... } - - void do_Event(VObject *vevent) { ... } - - ... - -* Property's Values and Properties - The VObject APIs do not attempt to check for the - correctness of the values of a property. Nor do they - will prevent the user from attaching a non-VCard/VCalendar - standard property to a VCard/VCalendar property. Take - the example of line [11] of the example, "O.K" is not - a valid value of VCStatusProp. It is up to the application - to accept or reject the value of a property. - -* Output of printVObject - PrintVObject pretty prints a VObject tree in human - readable form. See the listing at the end of the file - for an example output of printVObject on the example - input file "Example.vcf". - - Note that binary data are not shown in the output of - printVObject. Instead, a note is made ([raw data]) to - indicate that there exists such a binary data. - -* Note on Binary Data - When the value of a property is a binary data, it is only - useful to know the size of the binary data. - - In the case of the VCard/VCalendar parser, it chooses - to represent the size information as a separate property - called VCDataSizeProp whose value is the size of the binary - data. The APIs sequence to construct the VObject subtree - of line [44] of Example.vcf is - - // VObject *vcard; - VObject *p1 = addProp(vcard,VCLogoProp); - (void) addProp(p1,VCGIFProp); - (void) addProp(p1,VCBASE64Prop); - VObject *p2 = addProp(p1,VCDataSizeProp); - (void) setVObjectLongValue(p2,1482); - setVObjectAnyValue(vcard,...pointer to binary data); - - Note the presence of VCBase64Prop will cause the - writeVObject API to output the binary data as BASE64 text. - For VCard/VCalendar application, having the VCBase64Prop - property is pratically always neccessary for property with - binary data as its value. - -* Note on Quoted-Printable String - String value with embedded newline are written out as - quoted-prinatable string. It is therefore important - to mark a property with a string value that has - one or more embedded newlines, with the VCQutedPrintableProp - property. e.g. - - // VObject *root; - char *msg="To be\nor\nnot to be"; - VObject *p = addPropValue(root,VCDescriptionProp,msg); - // the following is how you mark a property with - // a property. In this case, the marker is - // VCQuotedPrintableProp - addProp(p,VCQuotedPrintableProp); - -* Note on Unicode - Although, the current parser takes ASCII text file only, - string values are all stored as Unicode in the VObject tree. - For now, when using the VObject APIs to construct a - VObject tree, one should always convert ASCII string value - to a Unicode string value: - - // VObject *root; - VObject *p = addProp(root,VCSomeProp); - setVObjectUStringZValue(p,fakeUnicode(someASCIIStringZvalue)); - - An API is provided to simplify the above process: - - addPropValue(root,VCSomeProp,someASCIIStringZValue); - - Note that someASCIISTringZValue is automatically converted to - Unicode by addPropValue API, where as, the former code - sequence do an explicit call to fakeUnicode. - - To read back the value, one should use the vObjectUStringZValue - API not vObjectStringZValue API. The value returned by the - vObjectUStringZValue API is a Unicode string. If the application - do not know how to handle Unicode string, it can use the - fakeCString API to convert it back to ASCII string (as long - as the conversion is meaningful). - - Note that fakeCString return a heap allocated memory. It is - important to call deleteStr on fakeCString return value if - it is not longer required (or there will be memory leak). - - NOTE: Unfortunately, at the point when this document is written, - there is still no consensus on how Unicode is to be handled - in the textual representation of VCard/VCalendar. So, there - is no version of writeVObject and the parser to output and - input Unicode textual representation of VCard/VCalendar. - - -Example.vcf ------------ -line -number Input Text (example.vcf) ------- ---------- -1 BEGIN:VCALENDAR -2 DCREATED:19961102T100522 -3 GEO:0,0 -4 VERSION:1.0 -5 BEGIN:VEVENT -6 DTSTART:19961103T000000 -7 DTEND:20000101T000000 -8 DESCRIPTION;QUOTED-PRINTABLE:To be =0A= -9 or =0A= -10 not to be -11 STATUS:O.K. -12 X-ACTION:No action required -13 DALARM:19961103T114500;5;3;Enjoy -14 MALARM:19970101T120000;;;johny@nowhere.com;Call Mom. -15 END:VEVENT -16 -17 BEGIN:VTODO -18 DUE:19960614T0173000 -19 DESCRIPTION:Relex. -20 END:VTODO -21 -22 END:VCALENDAR -23 -24 BEGIN:VCARD -25 N:Alden;Roland -26 FN:Roland H. Alden -27 ORG:AT&T;Versit Project Office -28 TITLE:Consultant -29 EMAIL;WORK;PREF;INTERNET:ralden@ralden.com -30 LABEL;DOM;POSTAL;PARCEL;HOME;WORK;QUOTED-PRINTABLE:Roland H. Alden=0A= -31 Suite 2208=0A= -32 One Pine Street=0A= -33 San Francisco, CA 94111 -34 LABEL;POSTAL;PARCEL;HOME;WORK;QUOTED-PRINTABLE:Roland H. Alden=0A= -35 Suite 2208=0A= -36 One Pine Street=0A= -37 San Francisco, CA 94111=0A= -38 U.S.A. -39 TEL;WORK;PREF;MSG:+1 415 296 9106 -40 TEL;WORK;FAX:+1 415 296 9016 -41 TEL;MSG;CELL:+1 415 608 5981 -42 ADR:;Suite 2208;One Pine Street;San Francisco;CA;94111;U.S.A. -43 SOUND:ROW-LAND H ALL-DIN -44 LOGO;GIF;BASE64: -45 R0lGODdhpgBOAMQAAP///+/v797e3s7Ozr29va2trZycnIyMjHt7e2NjY1JSUkJC - ... 30 lines of BASE64 data not shown here. -76 END:VCARD - - -VObject Representation of Example.vcf: -------------------------------------- -line -in -text -file VObject Tree as Printed by printVObject API ----- ------------------------------------------- -1 VCALENDAR -2 DCREATED="19961102T100522" -3 GEO="0,0" -4 VERSION="1.0" -5 VEVENT -6 DTSTART="19961103T000000" -7 DTEND="20000101T000000" -8 DESCRIPTION="To be -9 or -10 not to be" -8 QUOTED-PRINTABLE -11 STATUS="O.K." -12 X-ACTION="No action required" -13 DALARM -13 RUNTIME="19961103T114500" -13 SNOOZETIME="5" -13 REPEATCOUNT="3" -13 DISPLAYSTRING="Enjoy" -14 MALARM -14 RUNTIME="19970101T120000" -14 EMAIL="johny@nowhere.com" -14 NOTE="Call Mom" -17 VTODO -18 DUE="19960614T0173000" -19 DESCRIPTION="Relex." -24 VCARD -25 N -25 F="Alden" -25 G="Roland" -26 FN="Roland H. Alden" -27 ORG -27 ORGNAME="AT&T" -27 OUN="Versit Project Office" -28 TITLE="Consultant" -29 EMAIL="ralden@alden.com" -29 WORK -29 PREF -29 INTERNET -30 LABEL="Roland H. Alden -31 Suite 2208 -32 One Pine Street -33 San Francisco, CA 94111" -30 DOM -30 POSTAL -30 PARCEL -30 HOME -30 WORK -30 QUOTED-PRINTABLE -34 LABEL="Roland H. Alden -35 Suite 2208 -36 One Pine Street -37 San Francisco, CA 94111 -38 U.S.A." -34 POSTAL -34 PARCEL -34 HOME -34 WORK -34 QUOTED-PRINTABLE -39 TEL="+1 415 296 9106" -39 WORK -39 PREF -39 MSG -40 TEL="+1 415 296 9016" -40 WORK -40 FAX -41 TEL="+1 415 608 5981" -41 MSG -41 CELL -42 ADR -42 EXT ADD="Suite 2208" -42 STREET="One Pine Street" -42 L="San Francisco" -42 R="CA" -42 PC="94111" -42 C="U.S.A." -43 SOUND="ROW-LAND H ALL-DIN" -44 LOGO=[raw data] -44 GIF -44 BASE64 -44 DATASIZE=1482 - diff --git a/libical/src/libicalvcal/icalvcal.c b/libical/src/libicalvcal/icalvcal.c deleted file mode 100644 index d21dd4acc6..0000000000 --- a/libical/src/libicalvcal/icalvcal.c +++ /dev/null @@ -1,498 +0,0 @@ -/*====================================================================== - FILE: icalvcal.c - CREATOR: eric 25 May 00 - - $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 icalvcal.c - - ======================================================================*/ - -#include "icalvcal.h" -#include - -enum datatype { - COMPONENT, - PROPERTY, - PARAMETER, - UNSUPPORTED -}; - - -struct conversion_table_struct { - char* vcalname; - enum datatype type; - void* (*conversion_func)(int icaltype, VObject *o); - int icaltype; -}; - -struct conversion_table_struct conversion_table[]; -void* dc_prop(int icaltype, VObject *object); - -static void traverse_objects(VObject *object,icalcomponent* last_comp, - icalproperty* last_prop) -{ - VObjectIterator iterator; - char* name = "[No Name]"; - icalcomponent* subc = 0; - int i; - - if ( vObjectName(object)== 0){ - printf("ERROR, object has no name"); - assert(0); - return; - } - - name = (char*)vObjectName(object); - - /* Lookup this object in the conversion table */ - for (i = 0; conversion_table[i].vcalname != 0; i++){ - if(strcmp(conversion_table[i].vcalname, name) == 0){ - break; - } - } - - if (conversion_table[i].vcalname == 0){ - - /* Handle X properties */ - if(strncmp(name, "X-",2) == 0){ - icalproperty* prop = (icalproperty*)dc_prop(ICAL_X_PROPERTY,object); - icalproperty_set_x_name(prop,name); - icalcomponent_add_property(last_comp,prop); - } else { - assert(0); - return; - } - - } else { - - /* The vCal property is in the table, and it is not an X - property, so try to convert it to an iCal component, - property or parameter. */ - - switch(conversion_table[i].type){ - - - case COMPONENT: { - subc = - (icalcomponent*)(conversion_table[i].conversion_func - (conversion_table[i].icaltype, - object)); - - icalcomponent_add_component(last_comp,subc); - - assert(subc!=0); - - break; - } - - case PROPERTY: { - - if (vObjectValueType(object) && - conversion_table[i].conversion_func != 0 ) { - - icalproperty* prop = - (icalproperty*)(conversion_table[i].conversion_func - (conversion_table[i].icaltype, - object)); - - icalcomponent_add_property(last_comp,prop); - last_prop = prop; - - } - break; - } - - case PARAMETER: { - break; - } - - case UNSUPPORTED: { - - /* If the property is listed as UNSUPPORTED, insert a - X_LIC_ERROR property to note this fact. */ - - char temp[1024]; - char* message = "Unsupported vCal property"; - icalparameter *error_param; - icalproperty *error_prop; - - snprintf(temp,1024,"%s: %s",message,name); - - error_param = icalparameter_new_xlicerrortype( - ICAL_XLICERRORTYPE_UNKVCALPROP - ); - - error_prop = icalproperty_new_xlicerror(temp); - icalproperty_add_parameter(error_prop, error_param); - - icalcomponent_add_property(last_comp,error_prop); - - break; - } - } - } - - - /* Now, step down into the next vCalproperty */ - - initPropIterator(&iterator,object); - while (moreIteration(&iterator)) { - VObject *eachProp = nextVObject(&iterator); - - /* If 'object' is a component, then the next traversal down - should use it as the 'last_comp' */ - - if(subc!=0){ - traverse_objects(eachProp,subc,last_prop); - - } else { - traverse_objects(eachProp,last_comp,last_prop); - } - } -} - -icalcomponent* icalvcal_convert(VObject *object){ - - char* name = (char*)vObjectName(object); - icalcomponent* container = icalcomponent_new(ICAL_XROOT_COMPONENT); - icalcomponent* root; - - icalerror_check_arg_rz( (object!=0),"Object"); - - /* The root object must be a VCALENDAR */ - if(*name==0 || strcmp(name,VCCalProp) != 0){ - return 0; /* HACK. Should return an error */ - } - - - traverse_objects(object,container,0); - - /* HACK. I am using the extra 'container' component because I am - lazy. I know there is a way to get rid of it, but I did not care - to find it. */ - - root = icalcomponent_get_first_component(container,ICAL_ANY_COMPONENT); - - icalcomponent_remove_component(container, root); - icalcomponent_free(container); - - return root; - -} - -/* comp() is useful for most components, but alarm, daylight and - * timezone are different. In vcal, they are properties, and in ical, - * they are components. Although because of the way that vcal treats - * everything as a property, alarm_comp() daylight_comp() and - * timezone_comp() may not really be necessary, I think it would be - * easier to use them. */ - -void* comp(int icaltype, VObject *o) -{ - icalcomponent_kind kind = (icalcomponent_kind)icaltype; - - icalcomponent* c = icalcomponent_new(kind); - - return (void* )c; -} - -void* alarm_comp(int icaltype, VObject *o) -{ - icalcomponent_kind kind = (icalcomponent_kind)icaltype; - - icalcomponent* c = icalcomponent_new(kind); - - return (void*)c; -} - -void* daylight_comp(int icaltype, VObject *o) -{ - icalcomponent_kind kind = (icalcomponent_kind)icaltype; - - icalcomponent* c = icalcomponent_new(kind); - - return (void*)c; -} - -void* timezone_comp(int icaltype, VObject *o) -{ - icalcomponent_kind kind = (icalcomponent_kind)icaltype; - - icalcomponent* c = icalcomponent_new(kind); - - return (void*)c; -} - - -/* These #defines indicate conversion routines that are not defined yet. */ - -#define categories_prop 0 -#define transp_prop 0 -#define status_prop 0 - -#define parameter 0 -#define rsvp_parameter 0 - - - -/* directly convertable property. The string representation of vcal is - the same as ical */ - -void* dc_prop(int icaltype, VObject *object) -{ - icalproperty_kind kind = (icalproperty_kind)icaltype; - icalproperty *prop; - icalvalue *value; - icalvalue_kind value_kind; - char *s,*t=0; - - prop = icalproperty_new(kind); - - value_kind = - icalenum_property_kind_to_value_kind( - icalproperty_isa(prop)); - - - switch (vObjectValueType(object)) { - case VCVT_USTRINGZ: { - s = t = fakeCString(vObjectUStringZValue(object)); - break; - } - case VCVT_STRINGZ: { - s = (char*)vObjectStringZValue(object); - break; - } - } - - value = icalvalue_new_from_string(value_kind,s); - - if(t!=0){ - deleteStr(t); - } - - icalproperty_set_value(prop,value); - - return (void*)prop; -} - - -/* My extraction program screwed up, so this table does not have all -of the vcal properties in it. I didn't feel like re-doing the entire -table, so you'll have to find the missing properties the hard way -- -the code will assert */ - -struct conversion_table_struct conversion_table[] = -{ -{VCCalProp, COMPONENT, comp, ICAL_VCALENDAR_COMPONENT}, -{VCTodoProp, COMPONENT, comp, ICAL_VTODO_COMPONENT}, -{VCEventProp, COMPONENT, comp, ICAL_VEVENT_COMPONENT}, -{VCAAlarmProp, COMPONENT, alarm_comp, ICAL_XAUDIOALARM_COMPONENT}, -{VCDAlarmProp, COMPONENT, alarm_comp, ICAL_XDISPLAYALARM_COMPONENT}, -{VCMAlarmProp, COMPONENT, alarm_comp, ICAL_XEMAILALARM_COMPONENT}, -{VCPAlarmProp, COMPONENT, alarm_comp, ICAL_XPROCEDUREALARM_COMPONENT}, -{VCDayLightProp, COMPONENT, daylight_comp,0}, -{VCTimeZoneProp, COMPONENT, timezone_comp, ICAL_VTIMEZONE_COMPONENT}, -{VCProdIdProp, PROPERTY, dc_prop, ICAL_PRODID_PROPERTY}, -{VCClassProp, PROPERTY, dc_prop, ICAL_CLASS_PROPERTY}, -{VCDCreatedProp, PROPERTY, dc_prop, ICAL_CREATED_PROPERTY}, -{VCDescriptionProp, PROPERTY, dc_prop, ICAL_DESCRIPTION_PROPERTY}, -{VCAttendeeProp, PROPERTY, dc_prop, ICAL_ATTENDEE_PROPERTY}, -{VCCategoriesProp, PROPERTY, categories_prop,ICAL_CATEGORIES_PROPERTY}, -{VCDTendProp, PROPERTY, dc_prop, ICAL_DTEND_PROPERTY}, -{VCDTstartProp, PROPERTY, dc_prop, ICAL_DTSTART_PROPERTY}, -{VCDueProp, PROPERTY, dc_prop, ICAL_DUE_PROPERTY}, -{VCLocationProp, PROPERTY, dc_prop, ICAL_LOCATION_PROPERTY}, -{VCSummaryProp, PROPERTY, dc_prop, ICAL_SUMMARY_PROPERTY}, -{VCVersionProp, PROPERTY, dc_prop, ICAL_VERSION_PROPERTY}, -{VCTranspProp, PROPERTY, transp_prop, ICAL_TRANSP_PROPERTY}, -{VCUniqueStringProp, PROPERTY, dc_prop, ICAL_UID_PROPERTY}, -{VCURLProp, PROPERTY, dc_prop, ICAL_URL_PROPERTY}, -{VCLastModifiedProp, PROPERTY, dc_prop, ICAL_LASTMODIFIED_PROPERTY}, -{VCSequenceProp, PROPERTY, dc_prop, ICAL_SEQUENCE_PROPERTY}, -{VCPriorityProp, PROPERTY, dc_prop, ICAL_PRIORITY_PROPERTY}, -{VCStatusProp, PROPERTY, status_prop, ICAL_STATUS_PROPERTY}, -{VCRSVPProp, UNSUPPORTED, rsvp_parameter,ICAL_RSVP_PARAMETER }, -{VCEncodingProp, UNSUPPORTED, parameter, ICAL_ENCODING_PARAMETER}, -{VCRoleProp, UNSUPPORTED, parameter, ICAL_ROLE_PARAMETER}, -{VCStatusProp, UNSUPPORTED, parameter, ICAL_STATUS_PROPERTY}, -{VCQuotedPrintableProp,UNSUPPORTED,0, 0}, -{VC7bitProp, UNSUPPORTED,0, 0}, -{VC8bitProp, UNSUPPORTED,0, 0}, -{VCAdditionalNamesProp,UNSUPPORTED,0, 0}, -{VCAdrProp, UNSUPPORTED,0, 0}, -{VCAgentProp, UNSUPPORTED,0, 0}, -{VCAIFFProp, UNSUPPORTED,0, 0}, -{VCAOLProp, UNSUPPORTED,0, 0}, -{VCAppleLinkProp, UNSUPPORTED,0, 0}, -{VCAttachProp, UNSUPPORTED,0, 0}, -{VCATTMailProp, UNSUPPORTED,0, 0}, -{VCAudioContentProp, UNSUPPORTED,0, 0}, -{VCAVIProp, UNSUPPORTED,0, 0}, -{VCBase64Prop, UNSUPPORTED,0, 0}, -{VCBBSProp, UNSUPPORTED,0, 0}, -{VCBirthDateProp, UNSUPPORTED,0, 0}, -{VCBMPProp, UNSUPPORTED,0, 0}, -{VCBodyProp, UNSUPPORTED,0, 0}, -{VCCaptionProp, UNSUPPORTED,0, 0}, -{VCCarProp, UNSUPPORTED,0, 0}, -{VCCellularProp, UNSUPPORTED,0, 0}, -{VCCGMProp, UNSUPPORTED,0, 0}, -{VCCharSetProp, UNSUPPORTED,0, 0}, -{VCCIDProp, UNSUPPORTED,0, 0}, -{VCCISProp, UNSUPPORTED,0, 0}, -{VCCityProp, UNSUPPORTED,0, 0}, -{VCCommentProp, UNSUPPORTED,0, 0}, -{VCCompletedProp, UNSUPPORTED,0, 0}, -{VCCountryNameProp, UNSUPPORTED,0, 0}, -{VCDataSizeProp, UNSUPPORTED,0, 0}, -{VCDeliveryLabelProp, UNSUPPORTED,0, 0}, -{VCDIBProp, UNSUPPORTED,0, 0}, -{VCDisplayStringProp, UNSUPPORTED,0, 0}, -{VCDomesticProp, UNSUPPORTED,0, 0}, -{VCEmailAddressProp, UNSUPPORTED,0, 0}, -{VCEndProp, UNSUPPORTED,0, 0}, -{VCEWorldProp, UNSUPPORTED,0, 0}, -{VCExNumProp, UNSUPPORTED,0, 0}, -{VCExpDateProp, UNSUPPORTED,0, 0}, -{VCExpectProp, UNSUPPORTED,0, 0}, -{VCFamilyNameProp, UNSUPPORTED,0, 0}, -{VCFaxProp, UNSUPPORTED,0, 0}, -{VCFullNameProp, UNSUPPORTED,0, 0}, -{VCGeoProp, UNSUPPORTED,0, 0}, -{VCGeoLocationProp, UNSUPPORTED,0, 0}, -{VCGIFProp, UNSUPPORTED,0, 0}, -{VCGivenNameProp, UNSUPPORTED,0, 0}, -{VCGroupingProp, UNSUPPORTED,0, 0}, -{VCHomeProp, UNSUPPORTED,0, 0}, -{VCIBMMailProp, UNSUPPORTED,0, 0}, -{VCInlineProp, UNSUPPORTED,0, 0}, -{VCInternationalProp, UNSUPPORTED,0, 0}, -{VCInternetProp, UNSUPPORTED,0, 0}, -{VCISDNProp, UNSUPPORTED,0, 0}, -{VCJPEGProp, UNSUPPORTED,0, 0}, -{VCLanguageProp, UNSUPPORTED,0, 0}, -{VCLastRevisedProp, UNSUPPORTED,0, 0}, -{VCLogoProp, UNSUPPORTED,0, 0}, -{VCMailerProp, UNSUPPORTED,0, 0}, -{VCMCIMailProp, UNSUPPORTED,0, 0}, -{VCMessageProp, UNSUPPORTED,0, 0}, -{VCMETProp, UNSUPPORTED,0, 0}, -{VCModemProp, UNSUPPORTED,0, 0}, -{VCMPEG2Prop, UNSUPPORTED,0, 0}, -{VCMPEGProp, UNSUPPORTED,0, 0}, -{VCMSNProp, UNSUPPORTED,0, 0}, -{VCNamePrefixesProp, UNSUPPORTED,0, 0}, -{VCNameProp, UNSUPPORTED,0, 0}, -{VCNameSuffixesProp, UNSUPPORTED,0, 0}, -{VCNoteProp, UNSUPPORTED,0, 0}, -{VCOrgNameProp, UNSUPPORTED,0, 0}, -{VCOrgProp, UNSUPPORTED,0, 0}, -{VCOrgUnit2Prop, UNSUPPORTED,0, 0}, -{VCOrgUnit3Prop, UNSUPPORTED,0, 0}, -{VCOrgUnit4Prop, UNSUPPORTED,0, 0}, -{VCOrgUnitProp, UNSUPPORTED,0, 0}, -{VCPagerProp, UNSUPPORTED,0, 0}, -{VCParcelProp, UNSUPPORTED,0, 0}, -{VCPartProp, UNSUPPORTED,0, 0}, -{VCPCMProp, UNSUPPORTED,0, 0}, -{VCPDFProp, UNSUPPORTED,0, 0}, -{VCPGPProp, UNSUPPORTED,0, 0}, -{VCPhotoProp, UNSUPPORTED,0, 0}, -{VCPICTProp, UNSUPPORTED,0, 0}, -{VCPMBProp, UNSUPPORTED,0, 0}, -{VCPostalBoxProp, UNSUPPORTED,0, 0}, -{VCPostalCodeProp, UNSUPPORTED,0, 0}, -{VCPostalProp, UNSUPPORTED,0, 0}, -{VCPowerShareProp, UNSUPPORTED,0, 0}, -{VCPreferredProp, UNSUPPORTED,0, 0}, -{VCProcedureNameProp, UNSUPPORTED,0, 0}, -{VCProdigyProp, UNSUPPORTED,0, 0}, -{VCPronunciationProp, UNSUPPORTED,0, 0}, -{VCPSProp, UNSUPPORTED,0, 0}, -{VCPublicKeyProp, UNSUPPORTED,0, 0}, -{VCQPProp, UNSUPPORTED,0, 0}, -{VCQuickTimeProp, UNSUPPORTED,0, 0}, -{VCRDateProp, UNSUPPORTED,0, 0}, -{VCRegionProp, UNSUPPORTED,0, 0}, -{VCRepeatCountProp, UNSUPPORTED,0, 0}, -{VCResourcesProp, UNSUPPORTED,0, 0}, -{VCRNumProp, UNSUPPORTED,0, 0}, -{VCRRuleProp, UNSUPPORTED,0, 0}, -{VCRunTimeProp, UNSUPPORTED,0, 0}, -{VCSnoozeTimeProp, UNSUPPORTED,0, 0}, -{VCStartProp, UNSUPPORTED,0, 0}, -{VCStreetAddressProp, UNSUPPORTED,0, 0}, -{VCSubTypeProp, UNSUPPORTED,0, 0}, -{VCTelephoneProp, UNSUPPORTED,0, 0}, -{VCTIFFProp, UNSUPPORTED,0, 0}, -{VCTitleProp, UNSUPPORTED,0, 0}, -{VCTLXProp, UNSUPPORTED,0, 0}, -{VCURLValueProp, UNSUPPORTED,0, 0}, -{VCValueProp, UNSUPPORTED,0, 0}, -{VCVideoProp, UNSUPPORTED,0, 0}, -{VCVoiceProp, UNSUPPORTED,0, 0}, -{VCWAVEProp, UNSUPPORTED,0, 0}, -{VCWMFProp, UNSUPPORTED,0, 0}, -{VCWorkProp, UNSUPPORTED,0, 0}, -{VCX400Prop, UNSUPPORTED,0, 0}, -{VCX509Prop, UNSUPPORTED,0, 0}, -{VCXRuleProp, UNSUPPORTED,0, 0}, -{0,0,0,0} -}; - - -#if 0 - switch (vObjectValueType(object)) { - case VCVT_USTRINGZ: { - char c; - char *t,*s; - s = t = fakeCString(vObjectUStringZValue(object)); - printf(" ustringzstring:%s\n",s); - deleteStr(s); - break; - } - case VCVT_STRINGZ: { - char c; - const char *s = vObjectStringZValue(object); - printf(" stringzstring:%s\n",s); - break; - } - case VCVT_UINT: - { - int i = vObjectIntegerValue(object); - printf(" int:%d\n",i); - break; - } - case VCVT_ULONG: - { - long l = vObjectLongValue(object); - printf(" int:%d\n",l); - break; - } - case VCVT_VOBJECT: - { - printf("ERROR, should not get here\n"); - break; - } - case VCVT_RAW: - case 0: - default: - break; - } - -#endif diff --git a/libical/src/libicalvcal/icalvcal.h b/libical/src/libicalvcal/icalvcal.h deleted file mode 100644 index f2316c2d0f..0000000000 --- a/libical/src/libicalvcal/icalvcal.h +++ /dev/null @@ -1,39 +0,0 @@ -/* -*- Mode: C -*-*/ -/*====================================================================== - FILE: icalvcal.h - CREATOR: eric 25 May 00 - - - - (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 icalvcal.h - - -======================================================================*/ - -#ifndef ICALVCAL_H -#define ICALVCAL_H - -#include "ical.h" -#include "vcc.h" - -/* Convert a vObject into an icalcomponent */ - -icalcomponent* icalvcal_convert(VObject *object); - -#endif /* !ICALVCAL_H */ - - - diff --git a/libical/src/libicalvcal/port.h b/libical/src/libicalvcal/port.h deleted file mode 100644 index 1768beebd8..0000000000 --- a/libical/src/libicalvcal/port.h +++ /dev/null @@ -1,88 +0,0 @@ -/*************************************************************************** -(C) Copyright 1996 Apple Computer, Inc., AT&T Corp., International -Business Machines Corporation and Siemens Rolm Communications Inc. - -For purposes of this license notice, the term Licensors shall mean, -collectively, Apple Computer, Inc., AT&T Corp., International -Business Machines Corporation and Siemens Rolm Communications Inc. -The term Licensor shall mean any of the Licensors. - -Subject to acceptance of the following conditions, permission is hereby -granted by Licensors without the need for written agreement and without -license or royalty fees, to use, copy, modify and distribute this -software for any purpose. - -The above copyright notice and the following four paragraphs must be -reproduced in all copies of this software and any software including -this software. - -THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS AND NO LICENSOR SHALL HAVE -ANY OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS OR -MODIFICATIONS. - -IN NO EVENT SHALL ANY LICENSOR BE LIABLE TO ANY PARTY FOR DIRECT, -INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOST PROFITS ARISING OUT -OF THE USE OF THIS SOFTWARE EVEN IF ADVISED OF THE POSSIBILITY OF SUCH -DAMAGE. - -EACH LICENSOR SPECIFICALLY DISCLAIMS ANY WARRANTIES, EXPRESS OR IMPLIED, -INCLUDING BUT NOT LIMITED TO ANY WARRANTY OF NONINFRINGEMENT OR THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. - -The software is provided with RESTRICTED RIGHTS. Use, duplication, or -disclosure by the government are subject to restrictions set forth in -DFARS 252.227-7013 or 48 CFR 52.227-19, as applicable. - -***************************************************************************/ - -#ifndef __PORT_H__ -#define __PORT_H__ 1 - - -#if defined(__CPLUSPLUS__) || defined(__cplusplus) -extern "C" { -#endif - -/* some of these #defines are commented out because */ -/* Visual C++ sets them on the compiler command line instead */ - -/* #define _DEBUG */ -/* #define WIN32 */ -/* #define WIN16 */ -/* #define _WINDOWS */ -/* #define __MWERKS__ */ -/* #define INCLUDEMFC */ - -#define vCardClipboardFormat "+//ISBN 1-887687-00-9::versit::PDI//vCard" -#define vCalendarClipboardFormat "+//ISBN 1-887687-00-9::versit::PDI//vCalendar" - -/* The above strings vCardClipboardFormat and vCalendarClipboardFormat -are globally unique IDs which can be used to generate clipboard format -ID's as per the requirements of a specific platform. For example, in -Windows they are used as the parameter in a call to RegisterClipboardFormat. -For example: - - CLIPFORMAT foo = RegisterClipboardFormat(vCardClipboardFormat); - -*/ - -#define vCardMimeType "text/x-vCard" -#define vCalendarMimeType "text/x-vCalendar" - -#define DLLEXPORT(t) t - -#ifndef FALSE -#define FALSE 0 -#endif -#ifndef TRUE -#define TRUE 1 -#endif - -#define stricmp strcasecmp - -#if defined(__CPLUSPLUS__) || defined(__cplusplus) -} -#endif - -#endif /* __PORT_H__ */ diff --git a/libical/src/libicalvcal/vcaltest.c b/libical/src/libicalvcal/vcaltest.c deleted file mode 100644 index 5528aab1d1..0000000000 --- a/libical/src/libicalvcal/vcaltest.c +++ /dev/null @@ -1,118 +0,0 @@ -#include -#include -#include "vcaltmp.h" - -#if 0 -This testcase would generate a file call "frankcal.vcf" with -the following content: - -BEGIN:VCALENDAR -DCREATED:19960523T100522 -GEO:37.24,-17.87 -PRODID:-//Frank Dawson/Hand Crafted In North Carolina//NONSGML Made By Hand//EN -VERSION:0.3 -BEGIN:VEVENT -DTSTART:19960523T120000 -DTEND:19960523T130000 -DESCRIPTION;QUOTED-PRINTABLE:VERSIT PDI PR Teleconference/Interview =0A= -With Tom Streeter and Frank Dawson - Discuss VERSIT PDI project and vCard and vCalendar=0A= -activities with European Press representatives. -SUMMARY:VERSIT PDI PR Teleconference/Interview -SUBTYPE:PHONE CALL -STATUS:CONFIRMED -TRANSP:19960523T100522-4000F100582713-009251 -UID:http://www.ibm.com/raleigh/fdawson/~c:\or2\orgfiles\versit.or2 -DALARM:19960523T114500;5;3;Your Telecon Starts At Noon!!!; -MALARM:19960522T120000;;;fdawson@raleigh.ibm.com;Remember 05/23 Noon Telecon!!!; -PALARM:19960523T115500;;;c:\or2\organize.exe c:\or2\orgfiles\versit.or2; -X-LDC-OR2-OLE:c:\temp\agenda.doc -END:VEVENT - -BEGIN:VTODO -DUE:19960614T0173000 -DESCRIPTION:Review VCalendar helper API. -END:VTODO - -END:VCALENDAR - -#endif - -FILE *cfp; - -void testVcalAPIs() { - FILE *fp; - VObject *vcal, *vevent; -#if _CONSOLE - cfp = stdout; -#else - cfp = fopen("vcaltest.out","w"); -#endif - if (cfp == 0) return; - vcal = vcsCreateVCal( - "19960523T100522", - "37.24,-17.87", - "-//Frank Dawson/Hand Crafted In North Carolina//NONSGML Made By Hand//EN", - 0, - "0.3" - ); - - vevent = vcsAddEvent( - vcal, - "19960523T120000", - "19960523T130000", - "VERSIT PDI PR Teleconference/Interview \nWith Tom Streeter and Frank Dawson - Discuss VERSIT PDI project and vCard and vCalendar\nactivities with European Press representatives.", - "VERSIT PDI PR Teleconference/Interview", - "PHONE CALL", - 0, - "CONFIRMED", - "19960523T100522-4000F100582713-009251", - "http://www.ibm.com/raleigh/fdawson/~c:\\or2\\orgfiles\\versit.or2", - 0 - ); - - vcsAddDAlarm(vevent, "19960523T114500", "5", "3", - "Your Telecon Starts At Noon!!!"); - vcsAddMAlarm(vevent, "19960522T120000", 0, 0, "fdawson@raleigh.ibm.com", - "Remember 05/23 Noon Telecon!!!"); - vcsAddPAlarm(vevent, "19960523T115500", 0 ,0, - "c:\\or2\\organize.exe c:\\or2\\orgfiles\\versit.or2"); - - addPropValue(vevent, "X-LDC-OR2-OLE", "c:\\temp\\agenda.doc"); - - vcsAddTodo( - vcal, - 0, - "19960614T0173000", - 0, - "Review VCalendar helper API.", - 0, - 0, - 0, - 0, - 0, - 0 - ); - - /* now do something to the resulting VObject */ - /* pretty print on stdout for fun */ - printVObject(cfp,vcal); - /* open the output text file */ - -#define OUTFILE "frankcal.vcf" - - fp = fopen(OUTFILE, "w"); - if (fp) { - /* write it in text form */ - writeVObject(fp,vcal); - fclose(fp); - } - else { - fprintf(cfp,"open output file '%s' failed\n", OUTFILE); - } - if (cfp != stdout) fclose(cfp); - } - -void main() { - testVcalAPIs(); - } - diff --git a/libical/src/libicalvcal/vcaltmp.c b/libical/src/libicalvcal/vcaltmp.c deleted file mode 100644 index ccb21a649a..0000000000 --- a/libical/src/libicalvcal/vcaltmp.c +++ /dev/null @@ -1,337 +0,0 @@ -/* -This module provides some helper APIs for creating -a VCalendar object. - -Note on APIs: - 1. The APIs does not attempt to verify if the arguments - passed are correct. - 2. Where the argument to an API is not applicable, pass - the value 0. - 3. See the test program at the bottom of this file as an - example of usage. - 4. This code calls APIs in vobject.c. - -*/ - -/*************************************************************************** -(C) Copyright 1996 Apple Computer, Inc., AT&T Corp., International -Business Machines Corporation and Siemens Rolm Communications Inc. - -For purposes of this license notice, the term Licensors shall mean, -collectively, Apple Computer, Inc., AT&T Corp., International -Business Machines Corporation and Siemens Rolm Communications Inc. -The term Licensor shall mean any of the Licensors. - -Subject to acceptance of the following conditions, permission is hereby -granted by Licensors without the need for written agreement and without -license or royalty fees, to use, copy, modify and distribute this -software for any purpose. - -The above copyright notice and the following four paragraphs must be -reproduced in all copies of this software and any software including -this software. - -THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS AND NO LICENSOR SHALL HAVE -ANY OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS OR -MODIFICATIONS. - -IN NO EVENT SHALL ANY LICENSOR BE LIABLE TO ANY PARTY FOR DIRECT, -INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOST PROFITS ARISING OUT -OF THE USE OF THIS SOFTWARE EVEN IF ADVISED OF THE POSSIBILITY OF SUCH -DAMAGE. - -EACH LICENSOR SPECIFICALLY DISCLAIMS ANY WARRANTIES, EXPRESS OR IMPLIED, -INCLUDING BUT NOT LIMITED TO ANY WARRANTY OF NONINFRINGEMENT OR THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. - -The software is provided with RESTRICTED RIGHTS. Use, duplication, or -disclosure by the government are subject to restrictions set forth in -DFARS 252.227-7013 or 48 CFR 52.227-19, as applicable. - -***************************************************************************/ - - -#include -#include -#include "vcaltmp.h" - - -DLLEXPORT(VObject*) vcsCreateVCal( - char *date_created, - char *location, - char *product_id, - char *time_zone, - char *version - ) - { - VObject *vcal = newVObject(VCCalProp); -#define Z(p,v) if (v) addPropValue(vcal,p,v); - Z(VCDCreatedProp, date_created); - Z(VCLocationProp, location) - Z(VCProdIdProp, product_id) - Z(VCTimeZoneProp, time_zone) - Z(VCVersionProp, version) -#undef Z - return vcal; - } - - -DLLEXPORT(VObject*) vcsAddEvent( - VObject *vcal, - char *start_date_time, - char *end_date_time, - char *description, - char *summary, - char *categories, - char *classification, - char *status, - char *transparency, - char *uid, - char *url - ) - { - VObject *vevent = addProp(vcal,VCEventProp); -#define Z(p,v) if (v) addPropValue(vevent,p,v); - Z(VCDTstartProp,start_date_time); - Z(VCDTendProp,end_date_time); - if (description) { - VObject *p = addPropValue(vevent,VCDescriptionProp,description); - if (strchr(description,'\n')) - addProp(p,VCQuotedPrintableProp); - } - Z(VCSummaryProp,summary); - Z(VCCategoriesProp,categories); - Z(VCClassProp,classification); - Z(VCStatusProp,status); - Z(VCTranspProp,transparency); - Z(VCUniqueStringProp,uid); - Z(VCURLProp,url); -#undef Z - return vevent; - } - - -DLLEXPORT(VObject*) vcsAddTodo( - VObject *vcal, - char *start_date_time, - char *due_date_time, - char *date_time_complete, - char *description, - char *summary, - char *priority, - char *classification, - char *status, - char *uid, - char *url - ) - { - VObject *vtodo = addProp(vcal,VCTodoProp); -#define Z(p,v) if (v) addPropValue(vtodo,p,v); - Z(VCDTstartProp,start_date_time); - Z(VCDueProp,due_date_time); - Z(VCCompletedProp,date_time_complete); - if (description) { - VObject *p = addPropValue(vtodo,VCDescriptionProp,description); - if (strchr(description,'\n')) - addProp(p,VCQuotedPrintableProp); - } - Z(VCSummaryProp,summary); - Z(VCPriorityProp,priority); - Z(VCClassProp,classification); - Z(VCStatusProp,status); - Z(VCUniqueStringProp,uid); - Z(VCURLProp,url); -#undef Z - return vtodo; - } - - -DLLEXPORT(VObject*) vcsAddAAlarm( - VObject *vevent, - char *run_time, - char *snooze_time, - char *repeat_count, - char *audio_content - ) - { - VObject *aalarm= addProp(vevent,VCAAlarmProp); -#define Z(p,v) if (v) addPropValue(aalarm,p,v); - Z(VCRunTimeProp,run_time); - Z(VCSnoozeTimeProp,snooze_time); - Z(VCRepeatCountProp,repeat_count); - Z(VCAudioContentProp,audio_content); -#undef Z - return aalarm; - } - - -DLLEXPORT(VObject*) vcsAddMAlarm( - VObject *vevent, - char *run_time, - char *snooze_time, - char *repeat_count, - char *email_address, - char *note - ) - { - VObject *malarm= addProp(vevent,VCMAlarmProp); -#define Z(p,v) if (v) addPropValue(malarm,p,v); - Z(VCRunTimeProp,run_time); - Z(VCSnoozeTimeProp,snooze_time); - Z(VCRepeatCountProp,repeat_count); - Z(VCEmailAddressProp,email_address); - Z(VCNoteProp,note); -#undef Z - return malarm; - } - - -DLLEXPORT(VObject*) vcsAddDAlarm( - VObject *vevent, - char *run_time, - char *snooze_time, - char *repeat_count, - char *display_string - ) - { - VObject *dalarm= addProp(vevent,VCDAlarmProp); -#define Z(p,v) if (v) addPropValue(dalarm,p,v); - Z(VCRunTimeProp,run_time); - Z(VCSnoozeTimeProp,snooze_time); - Z(VCRepeatCountProp,repeat_count); - Z(VCDisplayStringProp,display_string); -#undef Z - return dalarm; - } - - -DLLEXPORT(VObject*) vcsAddPAlarm( - VObject *vevent, - char *run_time, - char *snooze_time, - char *repeat_count, - char *procedure_name - ) - { - VObject *palarm= addProp(vevent,VCPAlarmProp); -#define Z(p,v) if (v) addPropValue(palarm,p,v); - Z(VCRunTimeProp,run_time); - Z(VCSnoozeTimeProp,snooze_time); - Z(VCRepeatCountProp,repeat_count); - Z(VCProcedureNameProp,procedure_name); -#undef Z - return palarm; - } - - -#ifdef _TEST - -#if 0 -This testcase would generate a file call "frankcal.vcf" with -the following content: - -BEGIN:VCALENDAR -DCREATED:19960523T100522 -GEO:37.24,-17.87 -PRODID:-//Frank Dawson/Hand Crafted In North Carolina//NONSGML Made By Hand//EN -VERSION:0.3 -BEGIN:VEVENT -DTSTART:19960523T120000 -DTEND:19960523T130000 -DESCRIPTION;QUOTED-PRINTABLE:VERSIT PDI PR Teleconference/Interview =0A= -With Tom Streeter and Frank Dawson - Discuss VERSIT PDI project and vCard and vCalendar=0A= -activities with European Press representatives. -SUMMARY:VERSIT PDI PR Teleconference/Interview -CATEGORIES:PHONE CALL -STATUS:CONFIRMED -TRANSP:19960523T100522-4000F100582713-009251 -UID:http://www.ibm.com/raleigh/fdawson/~c:\or2\orgfiles\versit.or2 -DALARM:19960523T114500;5;3;Your Telecon Starts At Noon!!!; -MALARM:19960522T120000;;;fdawson@raleigh.ibm.com;Remember 05/23 Noon Telecon!!!; -PALARM:19960523T115500;;;c:\or2\organize.exe c:\or2\orgfiles\versit.or2; -X-LDC-OR2-OLE:c:\temp\agenda.doc -END:VEVENT - -BEGIN:VTODO -DUE:19960614T0173000 -DESCRIPTION:Review VCalendar helper API. -END:VTODO - -END:VCALENDAR - -#endif - -void testVcalAPIs() { - FILE *fp; - VObject *vcal = vcsCreateVCal( - "19960523T100522", - "37.24,-17.87", - "-//Frank Dawson/Hand Crafted In North Carolina//NONSGML Made By Hand//EN", - 0, - "0.3" - ); - - VObject *vevent = vcsAddEvent( - vcal, - "19960523T120000", - "19960523T130000", - "VERSIT PDI PR Teleconference/Interview \nWith Tom Streeter and Frank Dawson - Discuss VERSIT PDI project and vCard and vCalendar\nactivities with European Press representatives.", - "VERSIT PDI PR Teleconference/Interview", - "PHONE CALL", - 0, - "CONFIRMED", - "19960523T100522-4000F100582713-009251", - "http://www.ibm.com/raleigh/fdawson/~c:\\or2\\orgfiles\\versit.or2", - 0 - ); - - vcsAddDAlarm(vevent, "19960523T114500", "5", "3", - "Your Telecon Starts At Noon!!!"); - vcsAddMAlarm(vevent, "19960522T120000", 0, 0, "fdawson@raleigh.ibm.com", - "Remember 05/23 Noon Telecon!!!"); - vcsAddPAlarm(vevent, "19960523T115500", 0 ,0, - "c:\\or2\\organize.exe c:\\or2\\orgfiles\\versit.or2"); - - addPropValue(vevent, "X-LDC-OR2-OLE", "c:\\temp\\agenda.doc"); - - vcsAddTodo( - vcal, - 0, - "19960614T0173000", - 0, - "Review VCalendar helper API.", - 0, - 0, - 0, - 0, - 0, - 0 - ); - - /* now do something to the resulting VObject */ - /* pretty print on stdout for fun */ - printVObject(vcal); - /* open the output text file */ - -#define OUTFILE "frankcal.vcf" - - fp = fopen(OUTFILE, "w"); - if (fp) { - /* write it in text form */ - writeVObject(fp,vcal); - fclose(fp); - } - else { - printf("open output file '%s' failed\n", OUTFILE); - } - } - -void main() { - testVcalAPIs(); - } - -#endif - - -/* end of source file vcaltmp.c */ diff --git a/libical/src/libicalvcal/vcaltmp.h b/libical/src/libicalvcal/vcaltmp.h deleted file mode 100644 index 4c4afde963..0000000000 --- a/libical/src/libicalvcal/vcaltmp.h +++ /dev/null @@ -1,128 +0,0 @@ -/*************************************************************************** -(C) Copyright 1996 Apple Computer, Inc., AT&T Corp., International -Business Machines Corporation and Siemens Rolm Communications Inc. - -For purposes of this license notice, the term Licensors shall mean, -collectively, Apple Computer, Inc., AT&T Corp., International -Business Machines Corporation and Siemens Rolm Communications Inc. -The term Licensor shall mean any of the Licensors. - -Subject to acceptance of the following conditions, permission is hereby -granted by Licensors without the need for written agreement and without -license or royalty fees, to use, copy, modify and distribute this -software for any purpose. - -The above copyright notice and the following four paragraphs must be -reproduced in all copies of this software and any software including -this software. - -THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS AND NO LICENSOR SHALL HAVE -ANY OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS OR -MODIFICATIONS. - -IN NO EVENT SHALL ANY LICENSOR BE LIABLE TO ANY PARTY FOR DIRECT, -INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOST PROFITS ARISING OUT -OF THE USE OF THIS SOFTWARE EVEN IF ADVISED OF THE POSSIBILITY OF SUCH -DAMAGE. - -EACH LICENSOR SPECIFICALLY DISCLAIMS ANY WARRANTIES, EXPRESS OR IMPLIED, -INCLUDING BUT NOT LIMITED TO ANY WARRANTY OF NONINFRINGEMENT OR THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. - -The software is provided with RESTRICTED RIGHTS. Use, duplication, or -disclosure by the government are subject to restrictions set forth in -DFARS 252.227-7013 or 48 CFR 52.227-19, as applicable. - -***************************************************************************/ - -#include "vcc.h" - -#ifndef __VCALTMP_H__ -#define __VCALTMP_H__ - -#if defined(__CPLUSPLUS__) || defined(__cplusplus) -extern "C" { -#endif - -extern DLLEXPORT(VObject*) vcsCreateVCal( - char *date_created, - char *location, - char *product_id, - char *time_zone, - char *version - ); - -extern DLLEXPORT(VObject*) vcsAddEvent( - VObject *vcal, - char *start_date_time, - char *end_date_time, - char *description, - char *summary, - char *categories, - char *classification, - char *status, - char *transparency, - char *uid, - char *url - ); - - -extern DLLEXPORT(VObject*) vcsAddTodo( - VObject *vcal, - char *start_date_time, - char *due_date_time, - char *date_time_complete, - char *description, - char *summary, - char *priority, - char *classification, - char *status, - char *uid, - char *url - ); - - -extern DLLEXPORT(VObject*) vcsAddAAlarm( - VObject *vevent, - char *run_time, - char *snooze_time, - char *repeat_count, - char *audio_content - ); - - -extern DLLEXPORT(VObject*) vcsAddMAlarm( - VObject *vevent, - char *run_time, - char *snooze_time, - char *repeat_count, - char *email_address, - char *note - ); - - -extern DLLEXPORT(VObject*) vcsAddDAlarm( - VObject *vevent, - char *run_time, - char *snooze_time, - char *repeat_count, - char *display_string - ); - - -extern DLLEXPORT(VObject*) vcsAddPAlarm( - VObject *vevent, - char *run_time, - char *snooze_time, - char *repeat_count, - char *procedure_name - ); - -#if defined(__CPLUSPLUS__) || defined(__cplusplus) -} -#endif - -#endif /* __VCALTMP_H__ */ - - diff --git a/libical/src/libicalvcal/vcc.c b/libical/src/libicalvcal/vcc.c deleted file mode 100644 index b6de83cda4..0000000000 --- a/libical/src/libicalvcal/vcc.c +++ /dev/null @@ -1,2141 +0,0 @@ - -/* A Bison parser, made from vcc.y - by GNU Bison version 1.28 */ - -#define YYBISON 1 /* Identify Bison output. */ - -#define EQ 257 -#define COLON 258 -#define DOT 259 -#define SEMICOLON 260 -#define SPACE 261 -#define HTAB 262 -#define LINESEP 263 -#define NEWLINE 264 -#define BEGIN_VCARD 265 -#define END_VCARD 266 -#define BEGIN_VCAL 267 -#define END_VCAL 268 -#define BEGIN_VEVENT 269 -#define END_VEVENT 270 -#define BEGIN_VTODO 271 -#define END_VTODO 272 -#define ID 273 -#define STRING 274 - -#line 1 "vcc.y" - - -/*************************************************************************** -(C) Copyright 1996 Apple Computer, Inc., AT&T Corp., International -Business Machines Corporation and Siemens Rolm Communications Inc. - -For purposes of this license notice, the term Licensors shall mean, -collectively, Apple Computer, Inc., AT&T Corp., International -Business Machines Corporation and Siemens Rolm Communications Inc. -The term Licensor shall mean any of the Licensors. - -Subject to acceptance of the following conditions, permission is hereby -granted by Licensors without the need for written agreement and without -license or royalty fees, to use, copy, modify and distribute this -software for any purpose. - -The above copyright notice and the following four paragraphs must be -reproduced in all copies of this software and any software including -this software. - -THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS AND NO LICENSOR SHALL HAVE -ANY OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS OR -MODIFICATIONS. - -IN NO EVENT SHALL ANY LICENSOR BE LIABLE TO ANY PARTY FOR DIRECT, -INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOST PROFITS ARISING OUT -OF THE USE OF THIS SOFTWARE EVEN IF ADVISED OF THE POSSIBILITY OF SUCH -DAMAGE. - -EACH LICENSOR SPECIFICALLY DISCLAIMS ANY WARRANTIES, EXPRESS OR IMPLIED, -INCLUDING BUT NOT LIMITED TO ANY WARRANTY OF NONINFRINGEMENT OR THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. - -The software is provided with RESTRICTED RIGHTS. Use, duplication, or -disclosure by the government are subject to restrictions set forth in -DFARS 252.227-7013 or 48 CFR 52.227-19, as applicable. - -***************************************************************************/ - -/* - * src: vcc.c - * doc: Parser for vCard and vCalendar. Note that this code is - * generated by a yacc parser generator. Generally it should not - * be edited by hand. The real source is vcc.y. The #line directives - * can be commented out here to make it easier to trace through - * in a debugger. However, if a bug is found it should - * be fixed in vcc.y and this file regenerated. - */ - - -/* debugging utilities */ -#if __DEBUG -#define DBG_(x) printf x -#else -#define DBG_(x) -#endif - -/**** External Functions ****/ - -/* assign local name to parser variables and functions so that - we can use more than one yacc based parser. -*/ - -#define yyparse mime_parse -#define yylex mime_lex -#define yyerror mime_error -#define yychar mime_char -/* #define p_yyval p_mime_val */ -#undef yyval -#define yyval mime_yyval -/* #define p_yylval p_mime_lval */ -#undef yylval -#define yylval mime_yylval -#define yydebug mime_debug -#define yynerrs mime_nerrs -#define yyerrflag mime_errflag -#define yyss mime_ss -#define yyssp mime_ssp -#define yyvs mime_vs -#define yyvsp mime_vsp -#define yylhs mime_lhs -#define yylen mime_len -#define yydefred mime_defred -#define yydgoto mime_dgoto -#define yysindex mime_sindex -#define yyrindex mime_rindex -#define yygindex mime_gindex -#define yytable mime_table -#define yycheck mime_check -#define yyname mime_name -#define yyrule mime_rule -#define YYPREFIX "mime_" - - -#ifndef _NO_LINE_FOLDING -#define _SUPPORT_LINE_FOLDING 1 -#endif - -/* undef below if compile with MFC */ -/* #define INCLUDEMFC 1 */ - -#if defined(WIN32) || defined(_WIN32) -#ifdef INCLUDEMFC -#include -#endif -#endif - -#include -#ifndef __MWERKS__ -#include -#endif -#include -#include -#include -#include "vcc.h" - -/**** Types, Constants ****/ - -#define YYDEBUG 1 /* 1 to compile in some debugging code */ -#define MAXTOKEN 256 /* maximum token (line) length */ -#define YYSTACKSIZE 50 /* ~unref ? */ -#define MAXLEVEL 10 /* max # of nested objects parseable */ - /* (includes outermost) */ - - -/**** Global Variables ****/ -int mime_lineNum, mime_numErrors; /* yyerror() can use these */ -static VObject* vObjList; -static VObject *curProp; -static VObject *curObj; -static VObject* ObjStack[MAXLEVEL]; -static int ObjStackTop; - - -/* A helpful utility for the rest of the app. */ -#if __CPLUSPLUS__ -extern "C" { -#endif - - extern void Parse_Debug(const char *s); - static void yyerror(char *s); - -#if __CPLUSPLUS__ - }; -#endif - -int yyparse(); - -enum LexMode { - L_NORMAL, - L_VCARD, - L_VCAL, - L_VEVENT, - L_VTODO, - L_VALUES, - L_BASE64, - L_QUOTED_PRINTABLE - }; - -/**** Private Forward Declarations ****/ -static int pushVObject(const char *prop); -static VObject* popVObject(); -static char* lexDataFromBase64(); -static void lexPopMode(int top); -static int lexWithinMode(enum LexMode mode); -static void lexPushMode(enum LexMode mode); -static void enterProps(const char *s); -static void enterAttr(const char *s1, const char *s2); -static void enterValues(const char *value); -static void mime_error_(char *s); - - -#line 179 "vcc.y" -typedef union { - char *str; - VObject *vobj; - } YYSTYPE; -#include - -#ifndef __cplusplus -#ifndef __STDC__ -#define const -#endif -#endif - - - -#define YYFINAL 62 -#define YYFLAG -32768 -#define YYNTBASE 21 - -#define YYTRANSLATE(x) ((unsigned)(x) <= 274 ? yytranslate[x] : 51) - -static const char yytranslate[] = { 0, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 1, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20 -}; - -#if YYDEBUG != 0 -static const short yyprhs[] = { 0, - 0, 2, 3, 7, 9, 11, 13, 14, 19, 20, - 24, 27, 29, 30, 36, 38, 39, 43, 45, 48, - 50, 53, 55, 59, 61, 62, 67, 69, 71, 72, - 73, 78, 79, 83, 86, 88, 90, 92, 94, 95, - 100, 101, 105, 106, 111, 112 -}; - -static const short yyrhs[] = { 22, - 0, 0, 24, 23, 22, 0, 24, 0, 25, 0, - 40, 0, 0, 11, 26, 28, 12, 0, 0, 11, - 27, 12, 0, 29, 28, 0, 29, 0, 0, 31, - 4, 30, 37, 9, 0, 1, 0, 0, 36, 32, - 33, 0, 36, 0, 34, 33, 0, 34, 0, 6, - 35, 0, 36, 0, 36, 3, 36, 0, 19, 0, - 0, 39, 6, 38, 37, 0, 39, 0, 20, 0, - 0, 0, 13, 41, 43, 14, 0, 0, 13, 42, - 14, 0, 44, 43, 0, 44, 0, 45, 0, 48, - 0, 28, 0, 0, 15, 46, 28, 16, 0, 0, - 15, 47, 16, 0, 0, 17, 49, 28, 18, 0, - 0, 17, 50, 18, 0 -}; - -#endif - -#if YYDEBUG != 0 -static const short yyrline[] = { 0, - 207, 210, 213, 213, 217, 218, 221, 227, 232, 238, - 244, 245, 248, 252, 258, 261, 266, 266, 272, 273, - 276, 279, 283, 290, 293, 294, 294, 298, 299, 302, - 306, 308, 311, 314, 315, 318, 320, 321, 324, 331, - 336, 342, 348, 355, 360, 366 -}; -#endif - - -#if YYDEBUG != 0 || defined (YYERROR_VERBOSE) - -static const char * const yytname[] = { "$","error","$undefined.","EQ","COLON", -"DOT","SEMICOLON","SPACE","HTAB","LINESEP","NEWLINE","BEGIN_VCARD","END_VCARD", -"BEGIN_VCAL","END_VCAL","BEGIN_VEVENT","END_VEVENT","BEGIN_VTODO","END_VTODO", -"ID","STRING","mime","vobjects","@1","vobject","vcard","@2","@3","items","item", -"@4","prop","@5","attr_params","attr_param","attr","name","values","@6","value", -"vcal","@7","@8","calitems","calitem","eventitem","@9","@10","todoitem","@11", -"@12", NULL -}; -#endif - -static const short yyr1[] = { 0, - 21, 23, 22, 22, 24, 24, 26, 25, 27, 25, - 28, 28, 30, 29, 29, 32, 31, 31, 33, 33, - 34, 35, 35, 36, 38, 37, 37, 39, 39, 41, - 40, 42, 40, 43, 43, 44, 44, 44, 46, 45, - 47, 45, 49, 48, 50, 48 -}; - -static const short yyr2[] = { 0, - 1, 0, 3, 1, 1, 1, 0, 4, 0, 3, - 2, 1, 0, 5, 1, 0, 3, 1, 2, 1, - 2, 1, 3, 1, 0, 4, 1, 1, 0, 0, - 4, 0, 3, 2, 1, 1, 1, 1, 0, 4, - 0, 3, 0, 4, 0, 3 -}; - -static const short yydefact[] = { 0, - 7, 30, 1, 2, 5, 6, 0, 0, 0, 0, - 0, 15, 24, 0, 0, 0, 16, 10, 39, 43, - 38, 0, 0, 36, 37, 33, 3, 8, 11, 13, - 0, 0, 0, 0, 0, 31, 34, 29, 0, 17, - 20, 0, 42, 0, 46, 28, 0, 27, 21, 22, - 19, 40, 44, 14, 25, 0, 29, 23, 26, 0, - 0, 0 -}; - -static const short yydefgoto[] = { 60, - 3, 11, 4, 5, 7, 8, 21, 15, 38, 16, - 31, 40, 41, 49, 17, 47, 57, 48, 6, 9, - 10, 22, 23, 24, 32, 33, 25, 34, 35 -}; - -static const short yypact[] = { -9, - -6, -5,-32768, 7,-32768,-32768, 2, -1, 19, 15, - -9,-32768,-32768, 1, 0, 26, 27,-32768, 16, 17, --32768, 23, 9,-32768,-32768,-32768,-32768,-32768,-32768,-32768, - 33, 2, 24, 2, 25,-32768,-32768, 13, 22,-32768, - 33, 28,-32768, 29,-32768,-32768, 36, 40,-32768, 39, --32768,-32768,-32768,-32768,-32768, 22, 13,-32768,-32768, 48, - 49,-32768 -}; - -static const short yypgoto[] = {-32768, - 41,-32768,-32768,-32768,-32768,-32768, -7,-32768,-32768,-32768, --32768, 10,-32768,-32768, -34, -4,-32768,-32768,-32768,-32768, --32768, 31,-32768,-32768,-32768,-32768,-32768,-32768,-32768 -}; - - -#define YYLAST 54 - - -static const short yytable[] = { 14, - 12, 1, 12, 2, 50, -9, -4, 29, -32, 12, - 18, -12, 28, -12, -12, -12, -12, -12, 13, 12, - 13, 58, -35, 19, 42, 20, 44, 13, 26, 30, - -18, -41, 46, 19, -45, 20, 36, 13, 39, 43, - 13, 56, 45, 52, 54, 55, 53, 61, 62, 0, - 51, 27, 59, 37 -}; - -static const short yycheck[] = { 7, - 1, 11, 1, 13, 39, 12, 0, 15, 14, 1, - 12, 12, 12, 14, 15, 16, 17, 18, 19, 1, - 19, 56, 14, 15, 32, 17, 34, 19, 14, 4, - 4, 16, 20, 15, 18, 17, 14, 19, 6, 16, - 19, 3, 18, 16, 9, 6, 18, 0, 0, -1, - 41, 11, 57, 23 -}; -/* -*-C-*- Note some compilers choke on comments on `#line' lines. */ -#line 3 "/usr/lib/bison.simple" -/* This file comes from bison-1.28. */ - -/* Skeleton output parser for bison, - Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc. - - 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 2, 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. */ - -/* As a special exception, when this file is copied by Bison into a - Bison output file, you may use that output file without restriction. - This special exception was added by the Free Software Foundation - in version 1.24 of Bison. */ - -/* This is the parser code that is written into each bison parser - when the %semantic_parser declaration is not specified in the grammar. - It was written by Richard Stallman by simplifying the hairy parser - used when %semantic_parser is specified. */ - -#ifndef YYSTACK_USE_ALLOCA -#ifdef alloca -#define YYSTACK_USE_ALLOCA -#else /* alloca not defined */ -#ifdef __GNUC__ -#define YYSTACK_USE_ALLOCA -#define alloca __builtin_alloca -#else /* not GNU C. */ -#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386)) -#define YYSTACK_USE_ALLOCA -#include -#else /* not sparc */ -/* We think this test detects Watcom and Microsoft C. */ -/* This used to test MSDOS, but that is a bad idea - since that symbol is in the user namespace. */ -#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__) -#if 0 /* No need for malloc.h, which pollutes the namespace; - instead, just don't use alloca. */ -#include -#endif -#else /* not MSDOS, or __TURBOC__ */ -#if defined(_AIX) -/* I don't know what this was needed for, but it pollutes the namespace. - So I turned it off. rms, 2 May 1997. */ -/* #include */ - #pragma alloca -#define YYSTACK_USE_ALLOCA -#else /* not MSDOS, or __TURBOC__, or _AIX */ -#if 0 -#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up, - and on HPUX 10. Eventually we can turn this on. */ -#define YYSTACK_USE_ALLOCA -#define alloca __builtin_alloca -#endif /* __hpux */ -#endif -#endif /* not _AIX */ -#endif /* not MSDOS, or __TURBOC__ */ -#endif /* not sparc */ -#endif /* not GNU C */ -#endif /* alloca not defined */ -#endif /* YYSTACK_USE_ALLOCA not defined */ - -#ifdef YYSTACK_USE_ALLOCA -#define YYSTACK_ALLOC alloca -#else -#define YYSTACK_ALLOC malloc -#endif - -/* Note: there must be only one dollar sign in this file. - It is replaced by the list of actions, each action - as one case of the switch. */ - -#define yyerrok (yyerrstatus = 0) -#define yyclearin (yychar = YYEMPTY) -#define YYEMPTY -2 -#define YYEOF 0 -#define YYACCEPT goto yyacceptlab -#define YYABORT goto yyabortlab -#define YYERROR goto yyerrlab1 -/* Like YYERROR except do call yyerror. - This remains here temporarily to ease the - transition to the new meaning of YYERROR, for GCC. - Once GCC version 2 has supplanted version 1, this can go. */ -#define YYFAIL goto yyerrlab -#define YYRECOVERING() (!!yyerrstatus) -#define YYBACKUP(token, value) \ -do \ - if (yychar == YYEMPTY && yylen == 1) \ - { yychar = (token), yylval = (value); \ - yychar1 = YYTRANSLATE (yychar); \ - YYPOPSTACK; \ - goto yybackup; \ - } \ - else \ - { yyerror ("syntax error: cannot back up"); YYERROR; } \ -while (0) - -#define YYTERROR 1 -#define YYERRCODE 256 - -#ifndef YYPURE -#define YYLEX yylex() -#endif - -#ifdef YYPURE -#ifdef YYLSP_NEEDED -#ifdef YYLEX_PARAM -#define YYLEX yylex(&yylval, &yylloc, YYLEX_PARAM) -#else -#define YYLEX yylex(&yylval, &yylloc) -#endif -#else /* not YYLSP_NEEDED */ -#ifdef YYLEX_PARAM -#define YYLEX yylex(&yylval, YYLEX_PARAM) -#else -#define YYLEX yylex(&yylval) -#endif -#endif /* not YYLSP_NEEDED */ -#endif - -/* If nonreentrant, generate the variables here */ - -#ifndef YYPURE - -int yychar; /* the lookahead symbol */ -YYSTYPE yylval; /* the semantic value of the */ - /* lookahead symbol */ - -#ifdef YYLSP_NEEDED -YYLTYPE yylloc; /* location data for the lookahead */ - /* symbol */ -#endif - -int yynerrs; /* number of parse errors so far */ -#endif /* not YYPURE */ - -#if YYDEBUG != 0 -int yydebug; /* nonzero means print parse trace */ -/* Since this is uninitialized, it does not stop multiple parsers - from coexisting. */ -#endif - -/* YYINITDEPTH indicates the initial size of the parser's stacks */ - -#ifndef YYINITDEPTH -#define YYINITDEPTH 200 -#endif - -/* YYMAXDEPTH is the maximum size the stacks can grow to - (effective only if the built-in stack extension method is used). */ - -#if YYMAXDEPTH == 0 -#undef YYMAXDEPTH -#endif - -#ifndef YYMAXDEPTH -#define YYMAXDEPTH 10000 -#endif - -/* Define __yy_memcpy. Note that the size argument - should be passed with type unsigned int, because that is what the non-GCC - definitions require. With GCC, __builtin_memcpy takes an arg - of type size_t, but it can handle unsigned int. */ - -#if __GNUC__ > 1 /* GNU C and GNU C++ define this. */ -#define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT) -#else /* not GNU C or C++ */ -#ifndef __cplusplus - -/* This is the most reliable way to avoid incompatibilities - in available built-in functions on various systems. */ -static void -__yy_memcpy (to, from, count) - char *to; - char *from; - unsigned int count; -{ - register char *f = from; - register char *t = to; - register int i = count; - - while (i-- > 0) - *t++ = *f++; -} - -#else /* __cplusplus */ - -/* This is the most reliable way to avoid incompatibilities - in available built-in functions on various systems. */ -static void -__yy_memcpy (char *to, char *from, unsigned int count) -{ - register char *t = to; - register char *f = from; - register int i = count; - - while (i-- > 0) - *t++ = *f++; -} - -#endif -#endif - -#line 217 "/usr/lib/bison.simple" - -/* The user can define YYPARSE_PARAM as the name of an argument to be passed - into yyparse. The argument should have type void *. - It should actually point to an object. - Grammar actions can access the variable by casting it - to the proper pointer type. */ - -#ifdef YYPARSE_PARAM -#ifdef __cplusplus -#define YYPARSE_PARAM_ARG void *YYPARSE_PARAM -#define YYPARSE_PARAM_DECL -#else /* not __cplusplus */ -#define YYPARSE_PARAM_ARG YYPARSE_PARAM -#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM; -#endif /* not __cplusplus */ -#else /* not YYPARSE_PARAM */ -#define YYPARSE_PARAM_ARG -#define YYPARSE_PARAM_DECL -#endif /* not YYPARSE_PARAM */ - -/* Prevent warning if -Wstrict-prototypes. */ -#ifdef __GNUC__ -#ifdef YYPARSE_PARAM -int yyparse (void *); -#else -int yyparse (void); -#endif -#endif - -int -yyparse(YYPARSE_PARAM_ARG) - YYPARSE_PARAM_DECL -{ - register int yystate; - register int yyn; - register short *yyssp; - register YYSTYPE *yyvsp; - int yyerrstatus; /* number of tokens to shift before error messages enabled */ - int yychar1 = 0; /* lookahead token as an internal (translated) token number */ - - short yyssa[YYINITDEPTH]; /* the state stack */ - YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */ - - short *yyss = yyssa; /* refer to the stacks thru separate pointers */ - YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */ - -#ifdef YYLSP_NEEDED - YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */ - YYLTYPE *yyls = yylsa; - YYLTYPE *yylsp; - -#define YYPOPSTACK (yyvsp--, yyssp--, yylsp--) -#else -#define YYPOPSTACK (yyvsp--, yyssp--) -#endif - - int yystacksize = YYINITDEPTH; - int yyfree_stacks = 0; - -#ifdef YYPURE - int yychar; - YYSTYPE yylval; - int yynerrs; -#ifdef YYLSP_NEEDED - YYLTYPE yylloc; -#endif -#endif - - YYSTYPE yyval; /* the variable used to return */ - /* semantic values from the action */ - /* routines */ - - int yylen; - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Starting parse\n"); -#endif - - yystate = 0; - yyerrstatus = 0; - yynerrs = 0; - yychar = YYEMPTY; /* Cause a token to be read. */ - - /* Initialize stack pointers. - Waste one element of value and location stack - so that they stay on the same level as the state stack. - The wasted elements are never initialized. */ - - yyssp = yyss - 1; - yyvsp = yyvs; -#ifdef YYLSP_NEEDED - yylsp = yyls; -#endif - -/* Push a new state, which is found in yystate . */ -/* In all cases, when you get here, the value and location stacks - have just been pushed. so pushing a state here evens the stacks. */ -yynewstate: - - *++yyssp = yystate; - - if (yyssp >= yyss + yystacksize - 1) - { - /* Give user a chance to reallocate the stack */ - /* Use copies of these so that the &'s don't force the real ones into memory. */ - YYSTYPE *yyvs1 = yyvs; - short *yyss1 = yyss; -#ifdef YYLSP_NEEDED - YYLTYPE *yyls1 = yyls; -#endif - - /* Get the current used size of the three stacks, in elements. */ - int size = yyssp - yyss + 1; - -#ifdef yyoverflow - /* Each stack pointer address is followed by the size of - the data in use in that stack, in bytes. */ -#ifdef YYLSP_NEEDED - /* This used to be a conditional around just the two extra args, - but that might be undefined if yyoverflow is a macro. */ - yyoverflow("parser stack overflow", - &yyss1, size * sizeof (*yyssp), - &yyvs1, size * sizeof (*yyvsp), - &yyls1, size * sizeof (*yylsp), - &yystacksize); -#else - yyoverflow("parser stack overflow", - &yyss1, size * sizeof (*yyssp), - &yyvs1, size * sizeof (*yyvsp), - &yystacksize); -#endif - - yyss = yyss1; yyvs = yyvs1; -#ifdef YYLSP_NEEDED - yyls = yyls1; -#endif -#else /* no yyoverflow */ - /* Extend the stack our own way. */ - if (yystacksize >= YYMAXDEPTH) - { - yyerror("parser stack overflow"); - if (yyfree_stacks) - { - free (yyss); - free (yyvs); -#ifdef YYLSP_NEEDED - free (yyls); -#endif - } - return 2; - } - yystacksize *= 2; - if (yystacksize > YYMAXDEPTH) - yystacksize = YYMAXDEPTH; -#ifndef YYSTACK_USE_ALLOCA - yyfree_stacks = 1; -#endif - yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp)); - __yy_memcpy ((char *)yyss, (char *)yyss1, - size * (unsigned int) sizeof (*yyssp)); - yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp)); - __yy_memcpy ((char *)yyvs, (char *)yyvs1, - size * (unsigned int) sizeof (*yyvsp)); -#ifdef YYLSP_NEEDED - yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp)); - __yy_memcpy ((char *)yyls, (char *)yyls1, - size * (unsigned int) sizeof (*yylsp)); -#endif -#endif /* no yyoverflow */ - - yyssp = yyss + size - 1; - yyvsp = yyvs + size - 1; -#ifdef YYLSP_NEEDED - yylsp = yyls + size - 1; -#endif - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Stack size increased to %d\n", yystacksize); -#endif - - if (yyssp >= yyss + yystacksize - 1) - YYABORT; - } - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Entering state %d\n", yystate); -#endif - - goto yybackup; - yybackup: - -/* Do appropriate processing given the current state. */ -/* Read a lookahead token if we need one and don't already have one. */ -/* yyresume: */ - - /* First try to decide what to do without reference to lookahead token. */ - - yyn = yypact[yystate]; - if (yyn == YYFLAG) - goto yydefault; - - /* Not known => get a lookahead token if don't already have one. */ - - /* yychar is either YYEMPTY or YYEOF - or a valid token in external form. */ - - if (yychar == YYEMPTY) - { -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Reading a token: "); -#endif - yychar = YYLEX; - } - - /* Convert token to internal form (in yychar1) for indexing tables with */ - - if (yychar <= 0) /* This means end of input. */ - { - yychar1 = 0; - yychar = YYEOF; /* Don't call YYLEX any more */ - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Now at end of input.\n"); -#endif - } - else - { - yychar1 = YYTRANSLATE(yychar); - -#if YYDEBUG != 0 - if (yydebug) - { - fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]); - /* Give the individual parser a way to print the precise meaning - of a token, for further debugging info. */ -#ifdef YYPRINT - YYPRINT (stderr, yychar, yylval); -#endif - fprintf (stderr, ")\n"); - } -#endif - } - - yyn += yychar1; - if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1) - goto yydefault; - - yyn = yytable[yyn]; - - /* yyn is what to do for this token type in this state. - Negative => reduce, -yyn is rule number. - Positive => shift, yyn is new state. - New state is final state => don't bother to shift, - just return success. - 0, or most negative number => error. */ - - if (yyn < 0) - { - if (yyn == YYFLAG) - goto yyerrlab; - yyn = -yyn; - goto yyreduce; - } - else if (yyn == 0) - goto yyerrlab; - - if (yyn == YYFINAL) - YYACCEPT; - - /* Shift the lookahead token. */ - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]); -#endif - - /* Discard the token being shifted unless it is eof. */ - if (yychar != YYEOF) - yychar = YYEMPTY; - - *++yyvsp = yylval; -#ifdef YYLSP_NEEDED - *++yylsp = yylloc; -#endif - - /* count tokens shifted since error; after three, turn off error status. */ - if (yyerrstatus) yyerrstatus--; - - yystate = yyn; - goto yynewstate; - -/* Do the default action for the current state. */ -yydefault: - - yyn = yydefact[yystate]; - if (yyn == 0) - goto yyerrlab; - -/* Do a reduction. yyn is the number of a rule to reduce with. */ -yyreduce: - yylen = yyr2[yyn]; - if (yylen > 0) - yyval = yyvsp[1-yylen]; /* implement default value of the action */ - -#if YYDEBUG != 0 - if (yydebug) - { - int i; - - fprintf (stderr, "Reducing via rule %d (line %d), ", - yyn, yyrline[yyn]); - - /* Print the symbols being reduced, and their result. */ - for (i = yyprhs[yyn]; yyrhs[i] > 0; i++) - fprintf (stderr, "%s ", yytname[yyrhs[i]]); - fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]); - } -#endif - - - switch (yyn) { - -case 2: -#line 211 "vcc.y" -{ addList(&vObjList, yyvsp[0].vobj); curObj = 0; ; - break;} -case 4: -#line 214 "vcc.y" -{ addList(&vObjList, yyvsp[0].vobj); curObj = 0; ; - break;} -case 7: -#line 223 "vcc.y" -{ - lexPushMode(L_VCARD); - if (!pushVObject(VCCardProp)) YYERROR; - ; - break;} -case 8: -#line 228 "vcc.y" -{ - lexPopMode(0); - yyval.vobj = popVObject(); - ; - break;} -case 9: -#line 233 "vcc.y" -{ - lexPushMode(L_VCARD); - if (!pushVObject(VCCardProp)) YYERROR; - ; - break;} -case 10: -#line 238 "vcc.y" -{ - lexPopMode(0); - yyval.vobj = popVObject(); - ; - break;} -case 13: -#line 249 "vcc.y" -{ - lexPushMode(L_VALUES); - ; - break;} -case 14: -#line 253 "vcc.y" -{ - if (lexWithinMode(L_BASE64) || lexWithinMode(L_QUOTED_PRINTABLE)) - lexPopMode(0); - lexPopMode(0); - ; - break;} -case 16: -#line 262 "vcc.y" -{ - enterProps(yyvsp[0].str); - ; - break;} -case 18: -#line 267 "vcc.y" -{ - enterProps(yyvsp[0].str); - ; - break;} -case 22: -#line 280 "vcc.y" -{ - enterAttr(yyvsp[0].str,0); - ; - break;} -case 23: -#line 284 "vcc.y" -{ - enterAttr(yyvsp[-2].str,yyvsp[0].str); - - ; - break;} -case 25: -#line 293 "vcc.y" -{ enterValues(yyvsp[-1].str); ; - break;} -case 27: -#line 295 "vcc.y" -{ enterValues(yyvsp[0].str); ; - break;} -case 29: -#line 299 "vcc.y" -{ yyval.str = 0; ; - break;} -case 30: -#line 304 "vcc.y" -{ if (!pushVObject(VCCalProp)) YYERROR; ; - break;} -case 31: -#line 307 "vcc.y" -{ yyval.vobj = popVObject(); ; - break;} -case 32: -#line 309 "vcc.y" -{ if (!pushVObject(VCCalProp)) YYERROR; ; - break;} -case 33: -#line 311 "vcc.y" -{ yyval.vobj = popVObject(); ; - break;} -case 39: -#line 326 "vcc.y" -{ - lexPushMode(L_VEVENT); - if (!pushVObject(VCEventProp)) YYERROR; - ; - break;} -case 40: -#line 332 "vcc.y" -{ - lexPopMode(0); - popVObject(); - ; - break;} -case 41: -#line 337 "vcc.y" -{ - lexPushMode(L_VEVENT); - if (!pushVObject(VCEventProp)) YYERROR; - ; - break;} -case 42: -#line 342 "vcc.y" -{ - lexPopMode(0); - popVObject(); - ; - break;} -case 43: -#line 350 "vcc.y" -{ - lexPushMode(L_VTODO); - if (!pushVObject(VCTodoProp)) YYERROR; - ; - break;} -case 44: -#line 356 "vcc.y" -{ - lexPopMode(0); - popVObject(); - ; - break;} -case 45: -#line 361 "vcc.y" -{ - lexPushMode(L_VTODO); - if (!pushVObject(VCTodoProp)) YYERROR; - ; - break;} -case 46: -#line 366 "vcc.y" -{ - lexPopMode(0); - popVObject(); - ; - break;} -} - /* the action file gets copied in in place of this dollarsign */ -#line 543 "/usr/lib/bison.simple" - - yyvsp -= yylen; - yyssp -= yylen; -#ifdef YYLSP_NEEDED - yylsp -= yylen; -#endif - -#if YYDEBUG != 0 - if (yydebug) - { - short *ssp1 = yyss - 1; - fprintf (stderr, "state stack now"); - while (ssp1 != yyssp) - fprintf (stderr, " %d", *++ssp1); - fprintf (stderr, "\n"); - } -#endif - - *++yyvsp = yyval; - -#ifdef YYLSP_NEEDED - yylsp++; - if (yylen == 0) - { - yylsp->first_line = yylloc.first_line; - yylsp->first_column = yylloc.first_column; - yylsp->last_line = (yylsp-1)->last_line; - yylsp->last_column = (yylsp-1)->last_column; - yylsp->text = 0; - } - else - { - yylsp->last_line = (yylsp+yylen-1)->last_line; - yylsp->last_column = (yylsp+yylen-1)->last_column; - } -#endif - - /* Now "shift" the result of the reduction. - Determine what state that goes to, - based on the state we popped back to - and the rule number reduced by. */ - - yyn = yyr1[yyn]; - - yystate = yypgoto[yyn - YYNTBASE] + *yyssp; - if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp) - yystate = yytable[yystate]; - else - yystate = yydefgoto[yyn - YYNTBASE]; - - goto yynewstate; - -yyerrlab: /* here on detecting error */ - - if (! yyerrstatus) - /* If not already recovering from an error, report this error. */ - { - ++yynerrs; - -#ifdef YYERROR_VERBOSE - yyn = yypact[yystate]; - - if (yyn > YYFLAG && yyn < YYLAST) - { - int size = 0; - char *msg; - int x, count; - - count = 0; - /* Start X at -yyn if nec to avoid negative indexes in yycheck. */ - for (x = (yyn < 0 ? -yyn : 0); - x < (sizeof(yytname) / sizeof(char *)); x++) - if (yycheck[x + yyn] == x) - size += strlen(yytname[x]) + 15, count++; - msg = (char *) malloc(size + 15); - if (msg != 0) - { - strcpy(msg, "parse error"); - - if (count < 5) - { - count = 0; - for (x = (yyn < 0 ? -yyn : 0); - x < (sizeof(yytname) / sizeof(char *)); x++) - if (yycheck[x + yyn] == x) - { - strcat(msg, count == 0 ? ", expecting `" : " or `"); - strcat(msg, yytname[x]); - strcat(msg, "'"); - count++; - } - } - yyerror(msg); - free(msg); - } - else - yyerror ("parse error; also virtual memory exceeded"); - } - else -#endif /* YYERROR_VERBOSE */ - yyerror("parse error"); - } - - goto yyerrlab1; -yyerrlab1: /* here on error raised explicitly by an action */ - - if (yyerrstatus == 3) - { - /* if just tried and failed to reuse lookahead token after an error, discard it. */ - - /* return failure if at end of input */ - if (yychar == YYEOF) - YYABORT; - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]); -#endif - - yychar = YYEMPTY; - } - - /* Else will try to reuse lookahead token - after shifting the error token. */ - - yyerrstatus = 3; /* Each real token shifted decrements this */ - - goto yyerrhandle; - -yyerrdefault: /* current state does not do anything special for the error token. */ - -#if 0 - /* This is wrong; only states that explicitly want error tokens - should shift them. */ - yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/ - if (yyn) goto yydefault; -#endif - -yyerrpop: /* pop the current state because it cannot handle the error token */ - - if (yyssp == yyss) YYABORT; - yyvsp--; - yystate = *--yyssp; -#ifdef YYLSP_NEEDED - yylsp--; -#endif - -#if YYDEBUG != 0 - if (yydebug) - { - short *ssp1 = yyss - 1; - fprintf (stderr, "Error: state stack now"); - while (ssp1 != yyssp) - fprintf (stderr, " %d", *++ssp1); - fprintf (stderr, "\n"); - } -#endif - -yyerrhandle: - - yyn = yypact[yystate]; - if (yyn == YYFLAG) - goto yyerrdefault; - - yyn += YYTERROR; - if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR) - goto yyerrdefault; - - yyn = yytable[yyn]; - if (yyn < 0) - { - if (yyn == YYFLAG) - goto yyerrpop; - yyn = -yyn; - goto yyreduce; - } - else if (yyn == 0) - goto yyerrpop; - - if (yyn == YYFINAL) - YYACCEPT; - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Shifting error token, "); -#endif - - *++yyvsp = yylval; -#ifdef YYLSP_NEEDED - *++yylsp = yylloc; -#endif - - yystate = yyn; - goto yynewstate; - - yyacceptlab: - /* YYACCEPT comes here. */ - if (yyfree_stacks) - { - free (yyss); - free (yyvs); -#ifdef YYLSP_NEEDED - free (yyls); -#endif - } - return 0; - - yyabortlab: - /* YYABORT comes here. */ - if (yyfree_stacks) - { - free (yyss); - free (yyvs); -#ifdef YYLSP_NEEDED - free (yyls); -#endif - } - return 1; -} -#line 372 "vcc.y" - -/*/////////////////////////////////////////////////////////////////////////*/ -static int pushVObject(const char *prop) - { - VObject *newObj; - if (ObjStackTop == MAXLEVEL) - return FALSE; - - ObjStack[++ObjStackTop] = curObj; - - if (curObj) { - newObj = addProp(curObj,prop); - curObj = newObj; - } - else - curObj = newVObject(prop); - - return TRUE; - } - - -/*/////////////////////////////////////////////////////////////////////////*/ -/* This pops the recently built vCard off the stack and returns it. */ -static VObject* popVObject() - { - VObject *oldObj; - if (ObjStackTop < 0) { - yyerror("pop on empty Object Stack\n"); - return 0; - } - oldObj = curObj; - curObj = ObjStack[ObjStackTop--]; - - return oldObj; - } - - -static void enterValues(const char *value) - { - if (fieldedProp && *fieldedProp) { - if (value) { - addPropValue(curProp,*fieldedProp,value); - } - /* else this field is empty, advance to next field */ - fieldedProp++; - } - else { - if (value) { - setVObjectUStringZValue_(curProp,fakeUnicode(value,0)); - } - } - deleteStr(value); - } - -static void enterProps(const char *s) - { - curProp = addGroup(curObj,s); - deleteStr(s); - } - -static void enterAttr(const char *s1, const char *s2) - { - const char *p1, *p2; - p1 = lookupProp_(s1); - if (s2) { - VObject *a; - p2 = lookupProp_(s2); - a = addProp(curProp,p1); - setVObjectStringZValue(a,p2); - } - else - addProp(curProp,p1); - if (stricmp(p1,VCBase64Prop) == 0 || (s2 && stricmp(p2,VCBase64Prop)==0)) - lexPushMode(L_BASE64); - else if (stricmp(p1,VCQuotedPrintableProp) == 0 - || (s2 && stricmp(p2,VCQuotedPrintableProp)==0)) - lexPushMode(L_QUOTED_PRINTABLE); - deleteStr(s1); deleteStr(s2); - } - - -#define MAX_LEX_LOOKAHEAD_0 32 -#define MAX_LEX_LOOKAHEAD 64 -#define MAX_LEX_MODE_STACK_SIZE 10 -#define LEXMODE() (lexBuf.lexModeStack[lexBuf.lexModeStackTop]) - -struct LexBuf { - /* input */ -#ifdef INCLUDEMFC - CFile *inputFile; -#else - FILE *inputFile; -#endif - char *inputString; - unsigned long curPos; - unsigned long inputLen; - /* lookahead buffer */ - /* -- lookahead buffer is short instead of char so that EOF - / can be represented correctly. - */ - unsigned long len; - short buf[MAX_LEX_LOOKAHEAD]; - unsigned long getPtr; - /* context stack */ - unsigned long lexModeStackTop; - enum LexMode lexModeStack[MAX_LEX_MODE_STACK_SIZE]; - /* token buffer */ - unsigned long maxToken; - char *strs; - unsigned long strsLen; - } lexBuf; - -static void lexPushMode(enum LexMode mode) - { - if (lexBuf.lexModeStackTop == (MAX_LEX_MODE_STACK_SIZE-1)) - yyerror("lexical context stack overflow"); - else { - lexBuf.lexModeStack[++lexBuf.lexModeStackTop] = mode; - } - } - -static void lexPopMode(int top) - { - /* special case of pop for ease of error recovery -- this - version will never underflow */ - if (top) - lexBuf.lexModeStackTop = 0; - else - if (lexBuf.lexModeStackTop > 0) lexBuf.lexModeStackTop--; - } - -static int lexWithinMode(enum LexMode mode) { - unsigned long i; - for (i=0;iRead(&result, 1) == 1 ? result : EOF; -#else - return fgetc(lexBuf.inputFile); -#endif - } - } - -static int lexGeta() - { - ++lexBuf.len; - return (lexBuf.buf[lexBuf.getPtr] = lexGetc_()); - } - -static int lexGeta_(int i) - { - ++lexBuf.len; - return (lexBuf.buf[(lexBuf.getPtr+i)%MAX_LEX_LOOKAHEAD] = lexGetc_()); - } - -static void lexSkipLookahead() { - if (lexBuf.len > 0 && lexBuf.buf[lexBuf.getPtr]!=EOF) { - /* don't skip EOF. */ - lexBuf.getPtr = (lexBuf.getPtr + 1) % MAX_LEX_LOOKAHEAD; - lexBuf.len--; - } - } - -static int lexLookahead() { - int c = (lexBuf.len)? - lexBuf.buf[lexBuf.getPtr]: - lexGeta(); - /* do the \r\n -> \n or \r -> \n translation here */ - if (c == '\r') { - int a = (lexBuf.len>1)? - lexBuf.buf[(lexBuf.getPtr+1)%MAX_LEX_LOOKAHEAD]: - lexGeta_(1); - if (a == '\n') { - lexSkipLookahead(); - } - lexBuf.buf[lexBuf.getPtr] = c = '\n'; - } - else if (c == '\n') { - int a = (lexBuf.len>1)? - lexBuf.buf[lexBuf.getPtr+1]: - lexGeta_(1); - if (a == '\r') { - lexSkipLookahead(); - } - lexBuf.buf[lexBuf.getPtr] = '\n'; - } - return c; - } - -static int lexGetc() { - int c = lexLookahead(); - if (lexBuf.len > 0 && lexBuf.buf[lexBuf.getPtr]!=EOF) { - /* EOF will remain in lookahead buffer */ - lexBuf.getPtr = (lexBuf.getPtr + 1) % MAX_LEX_LOOKAHEAD; - lexBuf.len--; - } - return c; - } - -static void lexSkipLookaheadWord() { - if (lexBuf.strsLen <= lexBuf.len) { - lexBuf.len -= lexBuf.strsLen; - lexBuf.getPtr = (lexBuf.getPtr + lexBuf.strsLen) % MAX_LEX_LOOKAHEAD; - } - } - -static void lexClearToken() - { - lexBuf.strsLen = 0; - } - -static void lexAppendc(int c) - { - lexBuf.strs[lexBuf.strsLen] = c; - /* append up to zero termination */ - if (c == 0) return; - lexBuf.strsLen++; - if (lexBuf.strsLen > lexBuf.maxToken) { - /* double the token string size */ - lexBuf.maxToken <<= 1; - lexBuf.strs = (char*) realloc(lexBuf.strs,(size_t)lexBuf.maxToken); - } - } - -static char* lexStr() { - return dupStr(lexBuf.strs,(size_t)lexBuf.strsLen+1); - } - -static void lexSkipWhite() { - int c = lexLookahead(); - while (c == ' ' || c == '\t') { - lexSkipLookahead(); - c = lexLookahead(); - } - } - -static char* lexGetWord() { - int c; - lexSkipWhite(); - lexClearToken(); - c = lexLookahead(); - while (c != EOF && !strchr("\t\n ;:=",c)) { - lexAppendc(c); - lexSkipLookahead(); - c = lexLookahead(); - } - lexAppendc(0); - return lexStr(); - } - -static void lexPushLookahead(char *s, int len) { - int putptr; - if (len == 0) len = strlen(s); - putptr = (int)lexBuf.getPtr - len; - /* this function assumes that length of word to push back - / is not greater than MAX_LEX_LOOKAHEAD. - */ - if (putptr < 0) putptr += MAX_LEX_LOOKAHEAD; - lexBuf.getPtr = putptr; - while (*s) { - lexBuf.buf[putptr] = *s++; - putptr = (putptr + 1) % MAX_LEX_LOOKAHEAD; - } - lexBuf.len += len; - } - -static void lexPushLookaheadc(int c) { - int putptr; - /* can't putback EOF, because it never leaves lookahead buffer */ - if (c == EOF) return; - putptr = (int)lexBuf.getPtr - 1; - if (putptr < 0) putptr += MAX_LEX_LOOKAHEAD; - lexBuf.getPtr = putptr; - lexBuf.buf[putptr] = c; - lexBuf.len += 1; - } - -static char* lexLookaheadWord() { - /* this function can lookahead word with max size of MAX_LEX_LOOKAHEAD_0 - / and thing bigger than that will stop the lookahead and return 0; - / leading white spaces are not recoverable. - */ - int c; - int len = 0; - int curgetptr = 0; - lexSkipWhite(); - lexClearToken(); - curgetptr = (int)lexBuf.getPtr; /* remember! */ - while (len < (MAX_LEX_LOOKAHEAD_0)) { - c = lexGetc(); - len++; - if (c == EOF || strchr("\t\n ;:=", c)) { - lexAppendc(0); - /* restore lookahead buf. */ - lexBuf.len += len; - lexBuf.getPtr = curgetptr; - return lexStr(); - } - else - lexAppendc(c); - } - lexBuf.len += len; /* char that has been moved to lookahead buffer */ - lexBuf.getPtr = curgetptr; - return 0; - } - -#ifdef _SUPPORT_LINE_FOLDING -static void handleMoreRFC822LineBreak(int c) { - /* suport RFC 822 line break in cases like - * ADR: foo; - * morefoo; - * more foo; - */ - if (c == ';') { - int a; - lexSkipLookahead(); - /* skip white spaces */ - a = lexLookahead(); - while (a == ' ' || a == '\t') { - lexSkipLookahead(); - a = lexLookahead(); - } - if (a == '\n') { - lexSkipLookahead(); - a = lexLookahead(); - if (a == ' ' || a == '\t') { - /* continuation, throw away all the \n and spaces read so - * far - */ - lexSkipWhite(); - lexPushLookaheadc(';'); - } - else { - lexPushLookaheadc('\n'); - lexPushLookaheadc(';'); - } - } - else { - lexPushLookaheadc(';'); - } - } - } - -static char* lexGet1Value() { - int size = 0; - int c; - lexSkipWhite(); - c = lexLookahead(); - lexClearToken(); - while (c != EOF && c != ';') { - if (c == '\n') { - int a; - lexSkipLookahead(); - a = lexLookahead(); - if (a == ' ' || a == '\t') { - lexAppendc(' '); - lexSkipLookahead(); - } - else { - lexPushLookaheadc('\n'); - break; - } - } - else { - lexAppendc(c); - lexSkipLookahead(); - } - c = lexLookahead(); - } - lexAppendc(0); - handleMoreRFC822LineBreak(c); - return c==EOF?0:lexStr(); - } -#endif - -static char* lexGetStrUntil(char *termset) { - int size = 0; - int c = lexLookahead(); - lexClearToken(); - while (c != EOF && !strchr(termset,c)) { - lexAppendc(c); - lexSkipLookahead(); - c = lexLookahead(); - } - lexAppendc(0); - return c==EOF?0:lexStr(); - } - -static int match_begin_name(int end) { - char *n = lexLookaheadWord(); - int token = ID; - if (n) { - if (!stricmp(n,"vcard")) token = end?END_VCARD:BEGIN_VCARD; - else if (!stricmp(n,"vcalendar")) token = end?END_VCAL:BEGIN_VCAL; - else if (!stricmp(n,"vevent")) token = end?END_VEVENT:BEGIN_VEVENT; - else if (!stricmp(n,"vtodo")) token = end?END_VTODO:BEGIN_VTODO; - deleteStr(n); - return token; - } - return 0; - } - - -#ifdef INCLUDEMFC -void initLex(const char *inputstring, unsigned long inputlen, CFile *inputfile) -#else -void initLex(const char *inputstring, unsigned long inputlen, FILE *inputfile) -#endif - { - /* initialize lex mode stack */ - lexBuf.lexModeStack[lexBuf.lexModeStackTop=0] = L_NORMAL; - - /* iniatialize lex buffer. */ - lexBuf.inputString = (char*) inputstring; - lexBuf.inputLen = inputlen; - lexBuf.curPos = 0; - lexBuf.inputFile = inputfile; - - lexBuf.len = 0; - lexBuf.getPtr = 0; - - lexBuf.maxToken = MAXTOKEN; - lexBuf.strs = (char*)malloc(MAXTOKEN); - lexBuf.strsLen = 0; - - } - -static void finiLex() { - free(lexBuf.strs); - } - - -/*/////////////////////////////////////////////////////////////////////////*/ -/* This parses and converts the base64 format for binary encoding into - * a decoded buffer (allocated with new). See RFC 1521. - */ -static char * lexGetDataFromBase64() - { - unsigned long bytesLen = 0, bytesMax = 0; - int quadIx = 0, pad = 0; - unsigned long trip = 0; - unsigned char b; - int c; - unsigned char *bytes = NULL; - unsigned char *oldBytes = NULL; - - DBG_(("db: lexGetDataFromBase64\n")); - while (1) { - c = lexGetc(); - if (c == '\n') { - ++mime_lineNum; - if (lexLookahead() == '\n') { - /* a '\n' character by itself means end of data */ - break; - } - else continue; /* ignore '\n' */ - } - else { - if ((c >= 'A') && (c <= 'Z')) - b = (unsigned char)(c - 'A'); - else if ((c >= 'a') && (c <= 'z')) - b = (unsigned char)(c - 'a') + 26; - else if ((c >= '0') && (c <= '9')) - b = (unsigned char)(c - '0') + 52; - else if (c == '+') - b = 62; - else if (c == '/') - b = 63; - else if (c == '=') { - b = 0; - pad++; - } else if ((c == ' ') || (c == '\t')) { - continue; - } else { /* error condition */ - if (bytes) free(bytes); - else if (oldBytes) free(oldBytes); - /* error recovery: skip until 2 adjacent newlines. */ - DBG_(("db: invalid character 0x%x '%c'\n", c,c)); - if (c != EOF) { - c = lexGetc(); - while (c != EOF) { - if (c == '\n' && lexLookahead() == '\n') { - ++mime_lineNum; - break; - } - c = lexGetc(); - } - } - return NULL; - } - trip = (trip << 6) | b; - if (++quadIx == 4) { - unsigned char outBytes[3]; - int numOut; - int i; - for (i = 0; i < 3; i++) { - outBytes[2-i] = (unsigned char)(trip & 0xFF); - trip >>= 8; - } - numOut = 3 - pad; - if (bytesLen + numOut > bytesMax) { - if (!bytes) { - bytesMax = 1024; - bytes = (unsigned char*)malloc((size_t)bytesMax); - } - else { - bytesMax <<= 2; - oldBytes = bytes; - bytes = (unsigned char*)realloc(bytes,(size_t)bytesMax); - } - if (bytes == 0) { - mime_error("out of memory while processing BASE64 data\n"); - } - } - if (bytes) { - memcpy(bytes + bytesLen, outBytes, numOut); - bytesLen += numOut; - } - trip = 0; - quadIx = 0; - } - } - } /* while */ - DBG_(("db: bytesLen = %d\n", bytesLen)); - /* kludge: all this won't be necessary if we have tree form - representation */ - if (bytes) { - setValueWithSize(curProp,bytes,(unsigned int)bytesLen); - free(bytes); - } - else if (oldBytes) { - setValueWithSize(curProp,oldBytes,(unsigned int)bytesLen); - free(oldBytes); - } - return 0; - } - -static int match_begin_end_name(int end) { - int token; - lexSkipWhite(); - if (lexLookahead() != ':') return ID; - lexSkipLookahead(); - lexSkipWhite(); - token = match_begin_name(end); - if (token == ID) { - lexPushLookaheadc(':'); - DBG_(("db: ID '%s'\n", yylval.str)); - return ID; - } - else if (token != 0) { - lexSkipLookaheadWord(); - deleteStr(yylval.str); - DBG_(("db: begin/end %d\n", token)); - return token; - } - return 0; - } - -static char* lexGetQuotedPrintable() - { - char cur; - unsigned long len = 0; - - lexClearToken(); - do { - cur = lexGetc(); - switch (cur) { - case '=': { - int c = 0; - int next[2]; - int i; - for (i = 0; i < 2; i++) { - next[i] = lexGetc(); - if (next[i] >= '0' && next[i] <= '9') - c = c * 16 + next[i] - '0'; - else if (next[i] >= 'A' && next[i] <= 'F') - c = c * 16 + next[i] - 'A' + 10; - else - break; - } - if (i == 0) { - /* single '=' follow by LINESEP is continuation sign? */ - if (next[0] == '\n') { - ++mime_lineNum; - } - else { - lexPushLookaheadc('='); - goto EndString; - } - } - else if (i == 1) { - lexPushLookaheadc(next[1]); - lexPushLookaheadc(next[0]); - lexAppendc('='); - } else { - lexAppendc(c); - } - break; - } /* '=' */ - case '\n': { - lexPushLookaheadc('\n'); - goto EndString; - } - case (char)EOF: - break; - default: - lexAppendc(cur); - break; - } /* switch */ - } while (cur != (char)EOF); - -EndString: - lexAppendc(0); - return lexStr(); - } /* LexQuotedPrintable */ - -int yylex() { - int token = 0; - - int lexmode = LEXMODE(); - if (lexmode == L_VALUES) { - int c = lexGetc(); - if (c == ';') { - DBG_(("db: SEMICOLON\n")); - lexPushLookaheadc(c); -#ifdef _SUPPORT_LINE_FOLDING - handleMoreRFC822LineBreak(c); -#endif - lexSkipLookahead(); - return SEMICOLON; - } - else if (strchr("\n",c)) { - ++mime_lineNum; - /* consume all line separator(s) adjacent to each other */ - c = lexLookahead(); - while (strchr("\n",c)) { - lexSkipLookahead(); - c = lexLookahead(); - ++mime_lineNum; - } - DBG_(("db: LINESEP\n")); - return LINESEP; - } - else { - char *p = 0; - lexPushLookaheadc(c); - if (lexWithinMode(L_BASE64)) { - /* get each char and convert to bin on the fly... */ - p = lexGetDataFromBase64(); - yylval.str = p; - return STRING; - } - else if (lexWithinMode(L_QUOTED_PRINTABLE)) { - p = lexGetQuotedPrintable(); - } - else { -#ifdef _SUPPORT_LINE_FOLDING - p = lexGet1Value(); -#else - p = lexGetStrUntil(";\n"); -#endif - } - if (p) { - DBG_(("db: STRING: '%s'\n", p)); - yylval.str = p; - return STRING; - } - else return 0; - } - } - else { - /* normal mode */ - while (1) { - int c = lexGetc(); - switch(c) { - case ':': { - /* consume all line separator(s) adjacent to each other */ - /* ignoring linesep immediately after colon. */ -/* c = lexLookahead(); - while (strchr("\n",c)) { - lexSkipLookahead(); - c = lexLookahead(); - ++mime_lineNum; - }*/ - DBG_(("db: COLON\n")); - return COLON; - } - case ';': - DBG_(("db: SEMICOLON\n")); - return SEMICOLON; - case '=': - DBG_(("db: EQ\n")); - return EQ; - /* ignore whitespace in this mode */ - case '\t': - case ' ': continue; - case '\n': { - ++mime_lineNum; - continue; - } - case EOF: return 0; - break; - default: { - lexPushLookaheadc(c); - if (isalpha(c)) { - char *t = lexGetWord(); - yylval.str = t; - if (!stricmp(t, "begin")) { - return match_begin_end_name(0); - } - else if (!stricmp(t,"end")) { - return match_begin_end_name(1); - } - else { - DBG_(("db: ID '%s'\n", t)); - return ID; - } - } - else { - /* unknow token */ - return 0; - } - break; - } - } - } - } - return 0; - } - - -/***************************************************************************/ -/*** Public Functions ****/ -/***************************************************************************/ - -static VObject* Parse_MIMEHelper() - { - ObjStackTop = -1; - mime_numErrors = 0; - mime_lineNum = 1; - vObjList = 0; - curObj = 0; - - if (yyparse() != 0) - return 0; - - finiLex(); - return vObjList; - } - -/*/////////////////////////////////////////////////////////////////////////*/ -DLLEXPORT(VObject*) Parse_MIME(const char *input, unsigned long len) - { - initLex(input, len, 0); - return Parse_MIMEHelper(); - } - - -#if INCLUDEMFC - -DLLEXPORT(VObject*) Parse_MIME_FromFile(CFile *file) - { - unsigned long startPos; - VObject *result; - - initLex(0,-1,file); - startPos = file->GetPosition(); - if (!(result = Parse_MIMEHelper())) - file->Seek(startPos, CFile::begin); - return result; - } - -#else - -VObject* Parse_MIME_FromFile(FILE *file) - { - VObject *result; - long startPos; - - initLex(0,(unsigned long)-1,file); - startPos = ftell(file); - if (!(result = Parse_MIMEHelper())) { - fseek(file,startPos,SEEK_SET); - } - return result; - } - -DLLEXPORT(VObject*) Parse_MIME_FromFileName(char *fname) - { - FILE *fp = fopen(fname,"r"); - if (fp) { - VObject* o = Parse_MIME_FromFile(fp); - fclose(fp); - return o; - } - else { - char msg[256]; - snprintf(msg, sizeof(msg), "can't open file '%s' for reading\n", fname); - mime_error_(msg); - return 0; - } - } - -#endif - -/*/////////////////////////////////////////////////////////////////////////*/ -static void YYDebug(const char *s) -{ -/* Parse_Debug(s); */ -} - - -static MimeErrorHandler mimeErrorHandler; - -DLLEXPORT(void) registerMimeErrorHandler(MimeErrorHandler me) - { - mimeErrorHandler = me; - } - -static void mime_error(char *s) - { - char msg[256]; - if (mimeErrorHandler) { - sprintf(msg,"%s at line %d", s, mime_lineNum); - mimeErrorHandler(msg); - } - } - -static void mime_error_(char *s) - { - if (mimeErrorHandler) { - mimeErrorHandler(s); - } - } - diff --git a/libical/src/libicalvcal/vcc.h b/libical/src/libicalvcal/vcc.h deleted file mode 100644 index 0e52034710..0000000000 --- a/libical/src/libicalvcal/vcc.h +++ /dev/null @@ -1,80 +0,0 @@ -/*************************************************************************** -(C) Copyright 1996 Apple Computer, Inc., AT&T Corp., International -Business Machines Corporation and Siemens Rolm Communications Inc. - -For purposes of this license notice, the term Licensors shall mean, -collectively, Apple Computer, Inc., AT&T Corp., International -Business Machines Corporation and Siemens Rolm Communications Inc. -The term Licensor shall mean any of the Licensors. - -Subject to acceptance of the following conditions, permission is hereby -granted by Licensors without the need for written agreement and without -license or royalty fees, to use, copy, modify and distribute this -software for any purpose. - -The above copyright notice and the following four paragraphs must be -reproduced in all copies of this software and any software including -this software. - -THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS AND NO LICENSOR SHALL HAVE -ANY OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS OR -MODIFICATIONS. - -IN NO EVENT SHALL ANY LICENSOR BE LIABLE TO ANY PARTY FOR DIRECT, -INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOST PROFITS ARISING OUT -OF THE USE OF THIS SOFTWARE EVEN IF ADVISED OF THE POSSIBILITY OF SUCH -DAMAGE. - -EACH LICENSOR SPECIFICALLY DISCLAIMS ANY WARRANTIES, EXPRESS OR IMPLIED, -INCLUDING BUT NOT LIMITED TO ANY WARRANTY OF NONINFRINGEMENT OR THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. - -The software is provided with RESTRICTED RIGHTS. Use, duplication, or -disclosure by the government are subject to restrictions set forth in -DFARS 252.227-7013 or 48 CFR 52.227-19, as applicable. - -***************************************************************************/ - -#ifndef __VCC_H__ -#define __VCC_H__ 1 - -#include "vobject.h" - - -#if defined(__CPLUSPLUS__) || defined(__cplusplus) -extern "C" { -#endif - -typedef void (*MimeErrorHandler)(char *); - -extern DLLEXPORT(void) registerMimeErrorHandler(MimeErrorHandler); - -extern DLLEXPORT(VObject*) Parse_MIME(const char *input, unsigned long len); -extern DLLEXPORT(VObject*) Parse_MIME_FromFileName(char* fname); - - -/* NOTE regarding Parse_MIME_FromFile -The function above, Parse_MIME_FromFile, comes in two flavors, -neither of which is exported from the DLL. Each version takes -a CFile or FILE* as a parameter, neither of which can be -passed across a DLL interface (at least that is my experience). -If you are linking this code into your build directly then -you may find them a more convenient API that the other flavors -that take a file name. If you use them with the DLL LIB you -will get a link error. -*/ - - -#if INCLUDEMFC -extern VObject* Parse_MIME_FromFile(CFile *file); -#else -extern VObject* Parse_MIME_FromFile(FILE *file); -#endif - -#if defined(__CPLUSPLUS__) || defined(__cplusplus) -} -#endif - -#endif /* __VCC_H__ */ - diff --git a/libical/src/libicalvcal/vcc.y b/libical/src/libicalvcal/vcc.y deleted file mode 100644 index 1c800990c4..0000000000 --- a/libical/src/libicalvcal/vcc.y +++ /dev/null @@ -1,1218 +0,0 @@ -%{ - -/*************************************************************************** -(C) Copyright 1996 Apple Computer, Inc., AT&T Corp., International -Business Machines Corporation and Siemens Rolm Communications Inc. - -For purposes of this license notice, the term Licensors shall mean, -collectively, Apple Computer, Inc., AT&T Corp., International -Business Machines Corporation and Siemens Rolm Communications Inc. -The term Licensor shall mean any of the Licensors. - -Subject to acceptance of the following conditions, permission is hereby -granted by Licensors without the need for written agreement and without -license or royalty fees, to use, copy, modify and distribute this -software for any purpose. - -The above copyright notice and the following four paragraphs must be -reproduced in all copies of this software and any software including -this software. - -THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS AND NO LICENSOR SHALL HAVE -ANY OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS OR -MODIFICATIONS. - -IN NO EVENT SHALL ANY LICENSOR BE LIABLE TO ANY PARTY FOR DIRECT, -INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOST PROFITS ARISING OUT -OF THE USE OF THIS SOFTWARE EVEN IF ADVISED OF THE POSSIBILITY OF SUCH -DAMAGE. - -EACH LICENSOR SPECIFICALLY DISCLAIMS ANY WARRANTIES, EXPRESS OR IMPLIED, -INCLUDING BUT NOT LIMITED TO ANY WARRANTY OF NONINFRINGEMENT OR THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. - -The software is provided with RESTRICTED RIGHTS. Use, duplication, or -disclosure by the government are subject to restrictions set forth in -DFARS 252.227-7013 or 48 CFR 52.227-19, as applicable. - -***************************************************************************/ - -/* - * src: vcc.c - * doc: Parser for vCard and vCalendar. Note that this code is - * generated by a yacc parser generator. Generally it should not - * be edited by hand. The real source is vcc.y. The #line directives - * can be commented out here to make it easier to trace through - * in a debugger. However, if a bug is found it should - * be fixed in vcc.y and this file regenerated. - */ - - -/* debugging utilities */ -#if __DEBUG -#define DBG_(x) printf x -#else -#define DBG_(x) -#endif - -/**** External Functions ****/ - -/* assign local name to parser variables and functions so that - we can use more than one yacc based parser. -*/ - -#define yyparse mime_parse -#define yylex mime_lex -#define yyerror mime_error -#define yychar mime_char -/* #define p_yyval p_mime_val */ -#undef yyval -#define yyval mime_yyval -/* #define p_yylval p_mime_lval */ -#undef yylval -#define yylval mime_yylval -#define yydebug mime_debug -#define yynerrs mime_nerrs -#define yyerrflag mime_errflag -#define yyss mime_ss -#define yyssp mime_ssp -#define yyvs mime_vs -#define yyvsp mime_vsp -#define yylhs mime_lhs -#define yylen mime_len -#define yydefred mime_defred -#define yydgoto mime_dgoto -#define yysindex mime_sindex -#define yyrindex mime_rindex -#define yygindex mime_gindex -#define yytable mime_table -#define yycheck mime_check -#define yyname mime_name -#define yyrule mime_rule -#define YYPREFIX "mime_" - - -#ifndef _NO_LINE_FOLDING -#define _SUPPORT_LINE_FOLDING 1 -#endif - -/* undef below if compile with MFC */ -/* #define INCLUDEMFC 1 */ - -#if defined(WIN32) || defined(_WIN32) -#ifdef INCLUDEMFC -#include -#endif -#endif - -#include -#ifndef __MWERKS__ -#include -#endif -#include -#include -#include -#include "vcc.h" - -/**** Types, Constants ****/ - -#define YYDEBUG 1 /* 1 to compile in some debugging code */ -#define MAXTOKEN 256 /* maximum token (line) length */ -#define YYSTACKSIZE 50 /* ~unref ? */ -#define MAXLEVEL 10 /* max # of nested objects parseable */ - /* (includes outermost) */ - - -/**** Global Variables ****/ -int mime_lineNum, mime_numErrors; /* yyerror() can use these */ -static VObject* vObjList; -static VObject *curProp; -static VObject *curObj; -static VObject* ObjStack[MAXLEVEL]; -static int ObjStackTop; - - -/* A helpful utility for the rest of the app. */ -#if __CPLUSPLUS__ -extern "C" { -#endif - - extern void Parse_Debug(const char *s); - static void yyerror(char *s); - -#if __CPLUSPLUS__ - }; -#endif - -int yyparse(); - -enum LexMode { - L_NORMAL, - L_VCARD, - L_VCAL, - L_VEVENT, - L_VTODO, - L_VALUES, - L_BASE64, - L_QUOTED_PRINTABLE - }; - -/**** Private Forward Declarations ****/ -static int pushVObject(const char *prop); -static VObject* popVObject(); -static char* lexDataFromBase64(); -static void lexPopMode(int top); -static int lexWithinMode(enum LexMode mode); -static void lexPushMode(enum LexMode mode); -static void enterProps(const char *s); -static void enterAttr(const char *s1, const char *s2); -static void enterValues(const char *value); -static void mime_error_(char *s); - -%} - -/***************************************************************************/ -/*** The grammar ****/ -/***************************************************************************/ - -%union { - char *str; - VObject *vobj; - } - -%token - EQ COLON DOT SEMICOLON SPACE HTAB LINESEP NEWLINE - BEGIN_VCARD END_VCARD BEGIN_VCAL END_VCAL - BEGIN_VEVENT END_VEVENT BEGIN_VTODO END_VTODO - ID - -/* - * NEWLINE is the token that would occur outside a vCard, - * while LINESEP is the token that would occur inside a vCard. - */ - -%token - STRING ID - -%type name value - -%type vcard vcal vobject - -%start mime - -%% - - -mime: vobjects - ; - -vobjects: vobject - { addList(&vObjList, $1); curObj = 0; } - vobjects - | vobject - { addList(&vObjList, $1); curObj = 0; } - ; - -vobject: vcard - | vcal - ; - -vcard: - BEGIN_VCARD - { - lexPushMode(L_VCARD); - if (!pushVObject(VCCardProp)) YYERROR; - } - items END_VCARD - { - lexPopMode(0); - $$ = popVObject(); - } - | BEGIN_VCARD - { - lexPushMode(L_VCARD); - if (!pushVObject(VCCardProp)) YYERROR; - } - END_VCARD - { - lexPopMode(0); - $$ = popVObject(); - } - ; - -items: item items - | item - ; - -item: prop COLON - { - lexPushMode(L_VALUES); - } - values LINESEP - { - if (lexWithinMode(L_BASE64) || lexWithinMode(L_QUOTED_PRINTABLE)) - lexPopMode(0); - lexPopMode(0); - } - | error - ; - -prop: name - { - enterProps($1); - } - attr_params - | name - { - enterProps($1); - } - ; - -attr_params: attr_param attr_params - | attr_param - ; - -attr_param: SEMICOLON attr - ; - -attr: name - { - enterAttr($1,0); - } - | name EQ name - { - enterAttr($1,$3); - - } - ; - -name: ID - ; - -values: value SEMICOLON { enterValues($1); } values - | value - { enterValues($1); } - ; - -value: STRING - | { $$ = 0; } - ; - -vcal: - BEGIN_VCAL - { if (!pushVObject(VCCalProp)) YYERROR; } - calitems - END_VCAL - { $$ = popVObject(); } - | BEGIN_VCAL - { if (!pushVObject(VCCalProp)) YYERROR; } - END_VCAL - { $$ = popVObject(); } - ; - -calitems: calitem calitems - | calitem - ; - -calitem: - eventitem - | todoitem - | items - ; - -eventitem: - BEGIN_VEVENT - { - lexPushMode(L_VEVENT); - if (!pushVObject(VCEventProp)) YYERROR; - } - items - END_VEVENT - { - lexPopMode(0); - popVObject(); - } - | BEGIN_VEVENT - { - lexPushMode(L_VEVENT); - if (!pushVObject(VCEventProp)) YYERROR; - } - END_VEVENT - { - lexPopMode(0); - popVObject(); - } - ; - -todoitem: - BEGIN_VTODO - { - lexPushMode(L_VTODO); - if (!pushVObject(VCTodoProp)) YYERROR; - } - items - END_VTODO - { - lexPopMode(0); - popVObject(); - } - | BEGIN_VTODO - { - lexPushMode(L_VTODO); - if (!pushVObject(VCTodoProp)) YYERROR; - } - END_VTODO - { - lexPopMode(0); - popVObject(); - } - ; - -%% -/*/////////////////////////////////////////////////////////////////////////*/ -static int pushVObject(const char *prop) - { - VObject *newObj; - if (ObjStackTop == MAXLEVEL) - return FALSE; - - ObjStack[++ObjStackTop] = curObj; - - if (curObj) { - newObj = addProp(curObj,prop); - curObj = newObj; - } - else - curObj = newVObject(prop); - - return TRUE; - } - - -/*/////////////////////////////////////////////////////////////////////////*/ -/* This pops the recently built vCard off the stack and returns it. */ -static VObject* popVObject() - { - VObject *oldObj; - if (ObjStackTop < 0) { - yyerror("pop on empty Object Stack\n"); - return 0; - } - oldObj = curObj; - curObj = ObjStack[ObjStackTop--]; - - return oldObj; - } - - -static void enterValues(const char *value) - { - if (fieldedProp && *fieldedProp) { - if (value) { - addPropValue(curProp,*fieldedProp,value); - } - /* else this field is empty, advance to next field */ - fieldedProp++; - } - else { - if (value) { - setVObjectUStringZValue_(curProp,fakeUnicode(value,0)); - } - } - deleteStr(value); - } - -static void enterProps(const char *s) - { - curProp = addGroup(curObj,s); - deleteStr(s); - } - -static void enterAttr(const char *s1, const char *s2) - { - const char *p1, *p2; - p1 = lookupProp_(s1); - if (s2) { - VObject *a; - p2 = lookupProp_(s2); - a = addProp(curProp,p1); - setVObjectStringZValue(a,p2); - } - else - addProp(curProp,p1); - if (stricmp(p1,VCBase64Prop) == 0 || (s2 && stricmp(p2,VCBase64Prop)==0)) - lexPushMode(L_BASE64); - else if (stricmp(p1,VCQuotedPrintableProp) == 0 - || (s2 && stricmp(p2,VCQuotedPrintableProp)==0)) - lexPushMode(L_QUOTED_PRINTABLE); - deleteStr(s1); deleteStr(s2); - } - - -#define MAX_LEX_LOOKAHEAD_0 32 -#define MAX_LEX_LOOKAHEAD 64 -#define MAX_LEX_MODE_STACK_SIZE 10 -#define LEXMODE() (lexBuf.lexModeStack[lexBuf.lexModeStackTop]) - -struct LexBuf { - /* input */ -#ifdef INCLUDEMFC - CFile *inputFile; -#else - FILE *inputFile; -#endif - char *inputString; - unsigned long curPos; - unsigned long inputLen; - /* lookahead buffer */ - /* -- lookahead buffer is short instead of char so that EOF - / can be represented correctly. - */ - unsigned long len; - short buf[MAX_LEX_LOOKAHEAD]; - unsigned long getPtr; - /* context stack */ - unsigned long lexModeStackTop; - enum LexMode lexModeStack[MAX_LEX_MODE_STACK_SIZE]; - /* token buffer */ - unsigned long maxToken; - char *strs; - unsigned long strsLen; - } lexBuf; - -static void lexPushMode(enum LexMode mode) - { - if (lexBuf.lexModeStackTop == (MAX_LEX_MODE_STACK_SIZE-1)) - yyerror("lexical context stack overflow"); - else { - lexBuf.lexModeStack[++lexBuf.lexModeStackTop] = mode; - } - } - -static void lexPopMode(int top) - { - /* special case of pop for ease of error recovery -- this - version will never underflow */ - if (top) - lexBuf.lexModeStackTop = 0; - else - if (lexBuf.lexModeStackTop > 0) lexBuf.lexModeStackTop--; - } - -static int lexWithinMode(enum LexMode mode) { - unsigned long i; - for (i=0;iRead(&result, 1) == 1 ? result : EOF; -#else - return fgetc(lexBuf.inputFile); -#endif - } - } - -static int lexGeta() - { - ++lexBuf.len; - return (lexBuf.buf[lexBuf.getPtr] = lexGetc_()); - } - -static int lexGeta_(int i) - { - ++lexBuf.len; - return (lexBuf.buf[(lexBuf.getPtr+i)%MAX_LEX_LOOKAHEAD] = lexGetc_()); - } - -static void lexSkipLookahead() { - if (lexBuf.len > 0 && lexBuf.buf[lexBuf.getPtr]!=EOF) { - /* don't skip EOF. */ - lexBuf.getPtr = (lexBuf.getPtr + 1) % MAX_LEX_LOOKAHEAD; - lexBuf.len--; - } - } - -static int lexLookahead() { - int c = (lexBuf.len)? - lexBuf.buf[lexBuf.getPtr]: - lexGeta(); - /* do the \r\n -> \n or \r -> \n translation here */ - if (c == '\r') { - int a = (lexBuf.len>1)? - lexBuf.buf[(lexBuf.getPtr+1)%MAX_LEX_LOOKAHEAD]: - lexGeta_(1); - if (a == '\n') { - lexSkipLookahead(); - } - lexBuf.buf[lexBuf.getPtr] = c = '\n'; - } - else if (c == '\n') { - int a = (lexBuf.len>1)? - lexBuf.buf[lexBuf.getPtr+1]: - lexGeta_(1); - if (a == '\r') { - lexSkipLookahead(); - } - lexBuf.buf[lexBuf.getPtr] = '\n'; - } - return c; - } - -static int lexGetc() { - int c = lexLookahead(); - if (lexBuf.len > 0 && lexBuf.buf[lexBuf.getPtr]!=EOF) { - /* EOF will remain in lookahead buffer */ - lexBuf.getPtr = (lexBuf.getPtr + 1) % MAX_LEX_LOOKAHEAD; - lexBuf.len--; - } - return c; - } - -static void lexSkipLookaheadWord() { - if (lexBuf.strsLen <= lexBuf.len) { - lexBuf.len -= lexBuf.strsLen; - lexBuf.getPtr = (lexBuf.getPtr + lexBuf.strsLen) % MAX_LEX_LOOKAHEAD; - } - } - -static void lexClearToken() - { - lexBuf.strsLen = 0; - } - -static void lexAppendc(int c) - { - lexBuf.strs[lexBuf.strsLen] = c; - /* append up to zero termination */ - if (c == 0) return; - lexBuf.strsLen++; - if (lexBuf.strsLen > lexBuf.maxToken) { - /* double the token string size */ - lexBuf.maxToken <<= 1; - lexBuf.strs = (char*) realloc(lexBuf.strs,(size_t)lexBuf.maxToken); - } - } - -static char* lexStr() { - return dupStr(lexBuf.strs,(size_t)lexBuf.strsLen+1); - } - -static void lexSkipWhite() { - int c = lexLookahead(); - while (c == ' ' || c == '\t') { - lexSkipLookahead(); - c = lexLookahead(); - } - } - -static char* lexGetWord() { - int c; - lexSkipWhite(); - lexClearToken(); - c = lexLookahead(); - while (c != EOF && !strchr("\t\n ;:=",c)) { - lexAppendc(c); - lexSkipLookahead(); - c = lexLookahead(); - } - lexAppendc(0); - return lexStr(); - } - -static void lexPushLookahead(char *s, int len) { - int putptr; - if (len == 0) len = strlen(s); - putptr = (int)lexBuf.getPtr - len; - /* this function assumes that length of word to push back - / is not greater than MAX_LEX_LOOKAHEAD. - */ - if (putptr < 0) putptr += MAX_LEX_LOOKAHEAD; - lexBuf.getPtr = putptr; - while (*s) { - lexBuf.buf[putptr] = *s++; - putptr = (putptr + 1) % MAX_LEX_LOOKAHEAD; - } - lexBuf.len += len; - } - -static void lexPushLookaheadc(int c) { - int putptr; - /* can't putback EOF, because it never leaves lookahead buffer */ - if (c == EOF) return; - putptr = (int)lexBuf.getPtr - 1; - if (putptr < 0) putptr += MAX_LEX_LOOKAHEAD; - lexBuf.getPtr = putptr; - lexBuf.buf[putptr] = c; - lexBuf.len += 1; - } - -static char* lexLookaheadWord() { - /* this function can lookahead word with max size of MAX_LEX_LOOKAHEAD_0 - / and thing bigger than that will stop the lookahead and return 0; - / leading white spaces are not recoverable. - */ - int c; - int len = 0; - int curgetptr = 0; - lexSkipWhite(); - lexClearToken(); - curgetptr = (int)lexBuf.getPtr; /* remember! */ - while (len < (MAX_LEX_LOOKAHEAD_0)) { - c = lexGetc(); - len++; - if (c == EOF || strchr("\t\n ;:=", c)) { - lexAppendc(0); - /* restore lookahead buf. */ - lexBuf.len += len; - lexBuf.getPtr = curgetptr; - return lexStr(); - } - else - lexAppendc(c); - } - lexBuf.len += len; /* char that has been moved to lookahead buffer */ - lexBuf.getPtr = curgetptr; - return 0; - } - -#ifdef _SUPPORT_LINE_FOLDING -static void handleMoreRFC822LineBreak(int c) { - /* suport RFC 822 line break in cases like - * ADR: foo; - * morefoo; - * more foo; - */ - if (c == ';') { - int a; - lexSkipLookahead(); - /* skip white spaces */ - a = lexLookahead(); - while (a == ' ' || a == '\t') { - lexSkipLookahead(); - a = lexLookahead(); - } - if (a == '\n') { - lexSkipLookahead(); - a = lexLookahead(); - if (a == ' ' || a == '\t') { - /* continuation, throw away all the \n and spaces read so - * far - */ - lexSkipWhite(); - lexPushLookaheadc(';'); - } - else { - lexPushLookaheadc('\n'); - lexPushLookaheadc(';'); - } - } - else { - lexPushLookaheadc(';'); - } - } - } - -static char* lexGet1Value() { - int size = 0; - int c; - lexSkipWhite(); - c = lexLookahead(); - lexClearToken(); - while (c != EOF && c != ';') { - if (c == '\n') { - int a; - lexSkipLookahead(); - a = lexLookahead(); - if (a == ' ' || a == '\t') { - lexAppendc(' '); - lexSkipLookahead(); - } - else { - lexPushLookaheadc('\n'); - break; - } - } - else { - lexAppendc(c); - lexSkipLookahead(); - } - c = lexLookahead(); - } - lexAppendc(0); - handleMoreRFC822LineBreak(c); - return c==EOF?0:lexStr(); - } -#endif - -static char* lexGetStrUntil(char *termset) { - int size = 0; - int c = lexLookahead(); - lexClearToken(); - while (c != EOF && !strchr(termset,c)) { - lexAppendc(c); - lexSkipLookahead(); - c = lexLookahead(); - } - lexAppendc(0); - return c==EOF?0:lexStr(); - } - -static int match_begin_name(int end) { - char *n = lexLookaheadWord(); - int token = ID; - if (n) { - if (!stricmp(n,"vcard")) token = end?END_VCARD:BEGIN_VCARD; - else if (!stricmp(n,"vcalendar")) token = end?END_VCAL:BEGIN_VCAL; - else if (!stricmp(n,"vevent")) token = end?END_VEVENT:BEGIN_VEVENT; - else if (!stricmp(n,"vtodo")) token = end?END_VTODO:BEGIN_VTODO; - deleteStr(n); - return token; - } - return 0; - } - - -#ifdef INCLUDEMFC -void initLex(const char *inputstring, unsigned long inputlen, CFile *inputfile) -#else -void initLex(const char *inputstring, unsigned long inputlen, FILE *inputfile) -#endif - { - /* initialize lex mode stack */ - lexBuf.lexModeStack[lexBuf.lexModeStackTop=0] = L_NORMAL; - - /* iniatialize lex buffer. */ - lexBuf.inputString = (char*) inputstring; - lexBuf.inputLen = inputlen; - lexBuf.curPos = 0; - lexBuf.inputFile = inputfile; - - lexBuf.len = 0; - lexBuf.getPtr = 0; - - lexBuf.maxToken = MAXTOKEN; - lexBuf.strs = (char*)malloc(MAXTOKEN); - lexBuf.strsLen = 0; - - } - -static void finiLex() { - free(lexBuf.strs); - } - - -/*/////////////////////////////////////////////////////////////////////////*/ -/* This parses and converts the base64 format for binary encoding into - * a decoded buffer (allocated with new). See RFC 1521. - */ -static char * lexGetDataFromBase64() - { - unsigned long bytesLen = 0, bytesMax = 0; - int quadIx = 0, pad = 0; - unsigned long trip = 0; - unsigned char b; - int c; - unsigned char *bytes = NULL; - unsigned char *oldBytes = NULL; - - DBG_(("db: lexGetDataFromBase64\n")); - while (1) { - c = lexGetc(); - if (c == '\n') { - ++mime_lineNum; - if (lexLookahead() == '\n') { - /* a '\n' character by itself means end of data */ - break; - } - else continue; /* ignore '\n' */ - } - else { - if ((c >= 'A') && (c <= 'Z')) - b = (unsigned char)(c - 'A'); - else if ((c >= 'a') && (c <= 'z')) - b = (unsigned char)(c - 'a') + 26; - else if ((c >= '0') && (c <= '9')) - b = (unsigned char)(c - '0') + 52; - else if (c == '+') - b = 62; - else if (c == '/') - b = 63; - else if (c == '=') { - b = 0; - pad++; - } else if ((c == ' ') || (c == '\t')) { - continue; - } else { /* error condition */ - if (bytes) free(bytes); - else if (oldBytes) free(oldBytes); - /* error recovery: skip until 2 adjacent newlines. */ - DBG_(("db: invalid character 0x%x '%c'\n", c,c)); - if (c != EOF) { - c = lexGetc(); - while (c != EOF) { - if (c == '\n' && lexLookahead() == '\n') { - ++mime_lineNum; - break; - } - c = lexGetc(); - } - } - return NULL; - } - trip = (trip << 6) | b; - if (++quadIx == 4) { - unsigned char outBytes[3]; - int numOut; - int i; - for (i = 0; i < 3; i++) { - outBytes[2-i] = (unsigned char)(trip & 0xFF); - trip >>= 8; - } - numOut = 3 - pad; - if (bytesLen + numOut > bytesMax) { - if (!bytes) { - bytesMax = 1024; - bytes = (unsigned char*)malloc((size_t)bytesMax); - } - else { - bytesMax <<= 2; - oldBytes = bytes; - bytes = (unsigned char*)realloc(bytes,(size_t)bytesMax); - } - if (bytes == 0) { - mime_error("out of memory while processing BASE64 data\n"); - } - } - if (bytes) { - memcpy(bytes + bytesLen, outBytes, numOut); - bytesLen += numOut; - } - trip = 0; - quadIx = 0; - } - } - } /* while */ - DBG_(("db: bytesLen = %d\n", bytesLen)); - /* kludge: all this won't be necessary if we have tree form - representation */ - if (bytes) { - setValueWithSize(curProp,bytes,(unsigned int)bytesLen); - free(bytes); - } - else if (oldBytes) { - setValueWithSize(curProp,oldBytes,(unsigned int)bytesLen); - free(oldBytes); - } - return 0; - } - -static int match_begin_end_name(int end) { - int token; - lexSkipWhite(); - if (lexLookahead() != ':') return ID; - lexSkipLookahead(); - lexSkipWhite(); - token = match_begin_name(end); - if (token == ID) { - lexPushLookaheadc(':'); - DBG_(("db: ID '%s'\n", yylval.str)); - return ID; - } - else if (token != 0) { - lexSkipLookaheadWord(); - deleteStr(yylval.str); - DBG_(("db: begin/end %d\n", token)); - return token; - } - return 0; - } - -static char* lexGetQuotedPrintable() - { - char cur; - unsigned long len = 0; - - lexClearToken(); - do { - cur = lexGetc(); - switch (cur) { - case '=': { - int c = 0; - int next[2]; - int i; - for (i = 0; i < 2; i++) { - next[i] = lexGetc(); - if (next[i] >= '0' && next[i] <= '9') - c = c * 16 + next[i] - '0'; - else if (next[i] >= 'A' && next[i] <= 'F') - c = c * 16 + next[i] - 'A' + 10; - else - break; - } - if (i == 0) { - /* single '=' follow by LINESEP is continuation sign? */ - if (next[0] == '\n') { - ++mime_lineNum; - } - else { - lexPushLookaheadc('='); - goto EndString; - } - } - else if (i == 1) { - lexPushLookaheadc(next[1]); - lexPushLookaheadc(next[0]); - lexAppendc('='); - } else { - lexAppendc(c); - } - break; - } /* '=' */ - case '\n': { - lexPushLookaheadc('\n'); - goto EndString; - } - case (char)EOF: - break; - default: - lexAppendc(cur); - break; - } /* switch */ - } while (cur != (char)EOF); - -EndString: - lexAppendc(0); - return lexStr(); - } /* LexQuotedPrintable */ - -int yylex() { - int token = 0; - - int lexmode = LEXMODE(); - if (lexmode == L_VALUES) { - int c = lexGetc(); - if (c == ';') { - DBG_(("db: SEMICOLON\n")); - lexPushLookaheadc(c); -#ifdef _SUPPORT_LINE_FOLDING - handleMoreRFC822LineBreak(c); -#endif - lexSkipLookahead(); - return SEMICOLON; - } - else if (strchr("\n",c)) { - ++mime_lineNum; - /* consume all line separator(s) adjacent to each other */ - c = lexLookahead(); - while (strchr("\n",c)) { - lexSkipLookahead(); - c = lexLookahead(); - ++mime_lineNum; - } - DBG_(("db: LINESEP\n")); - return LINESEP; - } - else { - char *p = 0; - lexPushLookaheadc(c); - if (lexWithinMode(L_BASE64)) { - /* get each char and convert to bin on the fly... */ - p = lexGetDataFromBase64(); - yylval.str = p; - return STRING; - } - else if (lexWithinMode(L_QUOTED_PRINTABLE)) { - p = lexGetQuotedPrintable(); - } - else { -#ifdef _SUPPORT_LINE_FOLDING - p = lexGet1Value(); -#else - p = lexGetStrUntil(";\n"); -#endif - } - if (p) { - DBG_(("db: STRING: '%s'\n", p)); - yylval.str = p; - return STRING; - } - else return 0; - } - } - else { - /* normal mode */ - while (1) { - int c = lexGetc(); - switch(c) { - case ':': { - /* consume all line separator(s) adjacent to each other */ - /* ignoring linesep immediately after colon. */ -/* c = lexLookahead(); - while (strchr("\n",c)) { - lexSkipLookahead(); - c = lexLookahead(); - ++mime_lineNum; - }*/ - DBG_(("db: COLON\n")); - return COLON; - } - case ';': - DBG_(("db: SEMICOLON\n")); - return SEMICOLON; - case '=': - DBG_(("db: EQ\n")); - return EQ; - /* ignore whitespace in this mode */ - case '\t': - case ' ': continue; - case '\n': { - ++mime_lineNum; - continue; - } - case EOF: return 0; - break; - default: { - lexPushLookaheadc(c); - if (isalpha(c)) { - char *t = lexGetWord(); - yylval.str = t; - if (!stricmp(t, "begin")) { - return match_begin_end_name(0); - } - else if (!stricmp(t,"end")) { - return match_begin_end_name(1); - } - else { - DBG_(("db: ID '%s'\n", t)); - return ID; - } - } - else { - /* unknow token */ - return 0; - } - break; - } - } - } - } - return 0; - } - - -/***************************************************************************/ -/*** Public Functions ****/ -/***************************************************************************/ - -static VObject* Parse_MIMEHelper() - { - ObjStackTop = -1; - mime_numErrors = 0; - mime_lineNum = 1; - vObjList = 0; - curObj = 0; - - if (yyparse() != 0) - return 0; - - finiLex(); - return vObjList; - } - -/*/////////////////////////////////////////////////////////////////////////*/ -DLLEXPORT(VObject*) Parse_MIME(const char *input, unsigned long len) - { - initLex(input, len, 0); - return Parse_MIMEHelper(); - } - - -#if INCLUDEMFC - -DLLEXPORT(VObject*) Parse_MIME_FromFile(CFile *file) - { - unsigned long startPos; - VObject *result; - - initLex(0,-1,file); - startPos = file->GetPosition(); - if (!(result = Parse_MIMEHelper())) - file->Seek(startPos, CFile::begin); - return result; - } - -#else - -VObject* Parse_MIME_FromFile(FILE *file) - { - VObject *result; - long startPos; - - initLex(0,(unsigned long)-1,file); - startPos = ftell(file); - if (!(result = Parse_MIMEHelper())) { - fseek(file,startPos,SEEK_SET); - } - return result; - } - -DLLEXPORT(VObject*) Parse_MIME_FromFileName(char *fname) - { - FILE *fp = fopen(fname,"r"); - if (fp) { - VObject* o = Parse_MIME_FromFile(fp); - fclose(fp); - return o; - } - else { - char msg[256]; - snprintf(msg, sizeof(msg), "can't open file '%s' for reading\n", fname); - mime_error_(msg); - return 0; - } - } - -#endif - -/*/////////////////////////////////////////////////////////////////////////*/ -static void YYDebug(const char *s) -{ -/* Parse_Debug(s); */ -} - - -static MimeErrorHandler mimeErrorHandler; - -DLLEXPORT(void) registerMimeErrorHandler(MimeErrorHandler me) - { - mimeErrorHandler = me; - } - -static void mime_error(char *s) - { - char msg[256]; - if (mimeErrorHandler) { - sprintf(msg,"%s at line %d", s, mime_lineNum); - mimeErrorHandler(msg); - } - } - -static void mime_error_(char *s) - { - if (mimeErrorHandler) { - mimeErrorHandler(s); - } - } - diff --git a/libical/src/libicalvcal/vctest.c b/libical/src/libicalvcal/vctest.c deleted file mode 100644 index 7975d1e200..0000000000 --- a/libical/src/libicalvcal/vctest.c +++ /dev/null @@ -1,95 +0,0 @@ - -#include -#include -#include "vcc.h" - -FILE *cfp; - -void myMimeErrorHandler(char *s) -{ - printf("%s\n", s); -} - -void main(int argc, char **argv) -{ - int testmem = 0; - - char * foo[2] = {"foo","alden.vcf"}; - -argc = 2; -argv = foo; - -#ifdef _CONSOLE - cfp = stdout; - registerMimeErrorHandler(myMimeErrorHandler); -#else - cfp = fopen("vctest.out", "w"); - if (!cfp) return; -#endif - ++argv; - while (--argc) { - FILE *fp; - if (strcmp(*argv,"-testmem") == 0) { - testmem = 1; - argv++; - continue; - } - fprintf(cfp,"processing %s\n",*argv); - fp = fopen(*argv,"r"); - if (!fp) { - fprintf(cfp,"error opening file\n"); - } - else { - VObject *v, *t; - FILE *ofp; - char buf[256]; - char *p; - strcpy(buf,*argv); - p = strchr(buf,'.'); - if (p) *p = 0; - strcat(buf,".out"); - fprintf(cfp,"reading text input from '%s'...\n", *argv); - /*v = Parse_MIME_FromFile(fp); */ - v = Parse_MIME_FromFileName(*argv); - writeVObjectToFile(buf,v); - cleanVObject(v); - - /* - fprintf(cfp,"pretty print internal format of '%s'...\n", *argv); - ofp = fopen(buf,"w"); - while (v) { - printVObject(cfp,v); - if (testmem) { - char *s, *p; - fprintf(cfp,"test writing to mem...\n"); - p = s = writeMemVObject(0,0,v); - if (s) { - while (*s) { - fputc(*s,ofp); - s++; - } - free(p); - } - } - else { - writeVObject(ofp,v); - } - t = v; - v = nextVObjectInList(v); - cleanVObject(t); - } - - fclose(ofp); - fclose(fp); - */ - } - - cleanStrTbl(); - argv++; - - } - - if (cfp != stdout) fclose(cfp); - -} - diff --git a/libical/src/libicalvcal/vobject.c b/libical/src/libicalvcal/vobject.c deleted file mode 100644 index d685b04278..0000000000 --- a/libical/src/libicalvcal/vobject.c +++ /dev/null @@ -1,1452 +0,0 @@ -/*************************************************************************** -(C) Copyright 1996 Apple Computer, Inc., AT&T Corp., International -Business Machines Corporation and Siemens Rolm Communications Inc. - -For purposes of this license notice, the term Licensors shall mean, -collectively, Apple Computer, Inc., AT&T Corp., International -Business Machines Corporation and Siemens Rolm Communications Inc. -The term Licensor shall mean any of the Licensors. - -Subject to acceptance of the following conditions, permission is hereby -granted by Licensors without the need for written agreement and without -license or royalty fees, to use, copy, modify and distribute this -software for any purpose. - -The above copyright notice and the following four paragraphs must be -reproduced in all copies of this software and any software including -this software. - -THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS AND NO LICENSOR SHALL HAVE -ANY OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS OR -MODIFICATIONS. - -IN NO EVENT SHALL ANY LICENSOR BE LIABLE TO ANY PARTY FOR DIRECT, -INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOST PROFITS ARISING OUT -OF THE USE OF THIS SOFTWARE EVEN IF ADVISED OF THE POSSIBILITY OF SUCH -DAMAGE. - -EACH LICENSOR SPECIFICALLY DISCLAIMS ANY WARRANTIES, EXPRESS OR IMPLIED, -INCLUDING BUT NOT LIMITED TO ANY WARRANTY OF NONINFRINGEMENT OR THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. - -The software is provided with RESTRICTED RIGHTS. Use, duplication, or -disclosure by the government are subject to restrictions set forth in -DFARS 252.227-7013 or 48 CFR 52.227-19, as applicable. - -***************************************************************************/ - -/* - * src: vobject.c - * doc: vobject and APIs to construct vobject, APIs pretty print - * vobject, and convert a vobject into its textual representation. - */ - -#ifndef MWERKS -#include -#endif - -#include "vobject.h" -#include -#include -#include - - -#define NAME_OF(o) o->id -#define VALUE_TYPE(o) o->valType -#define STRINGZ_VALUE_OF(o) o->val.strs -#define USTRINGZ_VALUE_OF(o) o->val.ustrs -#define INTEGER_VALUE_OF(o) o->val.i -#define LONG_VALUE_OF(o) o->val.l -#define ANY_VALUE_OF(o) o->val.any -#define VOBJECT_VALUE_OF(o) o->val.vobj - -typedef union ValueItem { - const char *strs; - const wchar_t *ustrs; - unsigned int i; - unsigned long l; - void *any; - VObject *vobj; - } ValueItem; - -struct VObject { - VObject *next; - const char *id; - VObject *prop; - unsigned short valType; - ValueItem val; - }; - -typedef struct StrItem StrItem; - -struct StrItem { - StrItem *next; - const char *s; - unsigned int refCnt; - }; - -const char** fieldedProp; - - - -/*---------------------------------------------------------------------- - The following functions involve with memory allocation: - newVObject - deleteVObject - dupStr - deleteStr - newStrItem - deleteStrItem - ----------------------------------------------------------------------*/ - -DLLEXPORT(VObject*) newVObject_(const char *id) -{ - VObject *p = (VObject*)malloc(sizeof(VObject)); - p->next = 0; - p->id = id; - p->prop = 0; - VALUE_TYPE(p) = 0; - ANY_VALUE_OF(p) = 0; - return p; -} - -DLLEXPORT(VObject*) newVObject(const char *id) -{ - return newVObject_(lookupStr(id)); -} - -DLLEXPORT(void) deleteVObject(VObject *p) -{ - unUseStr(p->id); - free(p); -} - -DLLEXPORT(char*) dupStr(const char *s, unsigned int size) -{ - char *t; - if (size == 0) { - size = strlen(s); - } - t = (char*)malloc(size+1); - if (t) { - memcpy(t,s,size); - t[size] = 0; - return t; - } - else { - return (char*)0; - } -} - -DLLEXPORT(void) deleteStr(const char *p) -{ - if (p) free((void*)p); -} - - -static StrItem* newStrItem(const char *s, StrItem *next) -{ - StrItem *p = (StrItem*)malloc(sizeof(StrItem)); - p->next = next; - p->s = s; - p->refCnt = 1; - return p; -} - -static void deleteStrItem(StrItem *p) -{ - free((void*)p); -} - - -/*---------------------------------------------------------------------- - The following function provide accesses to VObject's value. - ----------------------------------------------------------------------*/ - -DLLEXPORT(const char*) vObjectName(VObject *o) -{ - return NAME_OF(o); -} - -DLLEXPORT(void) setVObjectName(VObject *o, const char* id) -{ - NAME_OF(o) = id; -} - -DLLEXPORT(const char*) vObjectStringZValue(VObject *o) -{ - return STRINGZ_VALUE_OF(o); -} - -DLLEXPORT(void) setVObjectStringZValue(VObject *o, const char *s) -{ - STRINGZ_VALUE_OF(o) = dupStr(s,0); - VALUE_TYPE(o) = VCVT_STRINGZ; -} - -DLLEXPORT(void) setVObjectStringZValue_(VObject *o, const char *s) -{ - STRINGZ_VALUE_OF(o) = s; - VALUE_TYPE(o) = VCVT_STRINGZ; -} - -DLLEXPORT(const wchar_t*) vObjectUStringZValue(VObject *o) -{ - return USTRINGZ_VALUE_OF(o); -} - -DLLEXPORT(void) setVObjectUStringZValue(VObject *o, const wchar_t *s) -{ - USTRINGZ_VALUE_OF(o) = (wchar_t*) dupStr((char*)s,(uStrLen(s)+1)*2); - VALUE_TYPE(o) = VCVT_USTRINGZ; -} - -DLLEXPORT(void) setVObjectUStringZValue_(VObject *o, const wchar_t *s) -{ - USTRINGZ_VALUE_OF(o) = s; - VALUE_TYPE(o) = VCVT_USTRINGZ; -} - -DLLEXPORT(unsigned int) vObjectIntegerValue(VObject *o) -{ - return INTEGER_VALUE_OF(o); -} - -DLLEXPORT(void) setVObjectIntegerValue(VObject *o, unsigned int i) -{ - INTEGER_VALUE_OF(o) = i; - VALUE_TYPE(o) = VCVT_UINT; -} - -DLLEXPORT(unsigned long) vObjectLongValue(VObject *o) -{ - return LONG_VALUE_OF(o); -} - -DLLEXPORT(void) setVObjectLongValue(VObject *o, unsigned long l) -{ - LONG_VALUE_OF(o) = l; - VALUE_TYPE(o) = VCVT_ULONG; -} - -DLLEXPORT(void*) vObjectAnyValue(VObject *o) -{ - return ANY_VALUE_OF(o); -} - -DLLEXPORT(void) setVObjectAnyValue(VObject *o, void *t) -{ - ANY_VALUE_OF(o) = t; - VALUE_TYPE(o) = VCVT_RAW; -} - -DLLEXPORT(VObject*) vObjectVObjectValue(VObject *o) -{ - return VOBJECT_VALUE_OF(o); -} - -DLLEXPORT(void) setVObjectVObjectValue(VObject *o, VObject *p) -{ - VOBJECT_VALUE_OF(o) = p; - VALUE_TYPE(o) = VCVT_VOBJECT; -} - -DLLEXPORT(int) vObjectValueType(VObject *o) -{ - return VALUE_TYPE(o); -} - - -/*---------------------------------------------------------------------- - The following functions can be used to build VObject. - ----------------------------------------------------------------------*/ - -DLLEXPORT(VObject*) addVObjectProp(VObject *o, VObject *p) -{ - /* circular link list pointed to tail */ - /* - o {next,id,prop,val} - V - pn {next,id,prop,val} - V - ... - p1 {next,id,prop,val} - V - pn - --> - o {next,id,prop,val} - V - pn {next,id,prop,val} - V - p {next,id,prop,val} - ... - p1 {next,id,prop,val} - V - pn - */ - - VObject *tail = o->prop; - if (tail) { - p->next = tail->next; - o->prop = tail->next = p; - } - else { - o->prop = p->next = p; - } - return p; -} - -DLLEXPORT(VObject*) addProp(VObject *o, const char *id) -{ - return addVObjectProp(o,newVObject(id)); -} - -DLLEXPORT(VObject*) addProp_(VObject *o, const char *id) -{ - return addVObjectProp(o,newVObject_(id)); -} - -DLLEXPORT(void) addList(VObject **o, VObject *p) -{ - p->next = 0; - if (*o == 0) { - *o = p; - } - else { - VObject *t = *o; - while (t->next) { - t = t->next; - } - t->next = p; - } -} - -DLLEXPORT(VObject*) nextVObjectInList(VObject *o) -{ - return o->next; -} - -DLLEXPORT(VObject*) setValueWithSize_(VObject *prop, void *val, unsigned int size) -{ - VObject *sizeProp; - setVObjectAnyValue(prop, val); - sizeProp = addProp(prop,VCDataSizeProp); - setVObjectLongValue(sizeProp, size); - return prop; -} - -DLLEXPORT(VObject*) setValueWithSize(VObject *prop, void *val, unsigned int size) -{ - void *p = dupStr((const char *)val,size); - return setValueWithSize_(prop,p,p?size:0); -} - -DLLEXPORT(void) initPropIterator(VObjectIterator *i, VObject *o) -{ - i->start = o->prop; - i->next = 0; -} - -DLLEXPORT(void) initVObjectIterator(VObjectIterator *i, VObject *o) -{ - i->start = o->next; - i->next = 0; -} - -DLLEXPORT(int) moreIteration(VObjectIterator *i) -{ - return (i->start && (i->next==0 || i->next!=i->start)); -} - -DLLEXPORT(VObject*) nextVObject(VObjectIterator *i) -{ - if (i->start && i->next != i->start) { - if (i->next == 0) { - i->next = i->start->next; - return i->next; - } - else { - i->next = i->next->next; - return i->next; - } - } - else return (VObject*)0; -} - -DLLEXPORT(VObject*) isAPropertyOf(VObject *o, const char *id) -{ - VObjectIterator i; - initPropIterator(&i,o); - while (moreIteration(&i)) { - VObject *each = nextVObject(&i); - if (!stricmp(id,each->id)) - return each; - } - return (VObject*)0; -} - -DLLEXPORT(VObject*) addGroup(VObject *o, const char *g) -{ - /* - a.b.c - --> - prop(c) - prop(VCGrouping=b) - prop(VCGrouping=a) - */ - char *dot = strrchr(g,'.'); - if (dot) { - VObject *p, *t; - char *gs, *n = dot+1; - gs = dupStr(g,0); /* so we can write to it. */ - /* used to be - * t = p = addProp_(o,lookupProp_(n)); - */ - t = p = addProp_(o,lookupProp(n)); - dot = strrchr(gs,'.'); - *dot = 0; - do { - dot = strrchr(gs,'.'); - if (dot) { - n = dot+1; - *dot=0; - } - else - n = gs; - /* property(VCGroupingProp=n); - * and the value may have VCGrouping property - */ - t = addProp(t,VCGroupingProp); - setVObjectStringZValue(t,lookupProp_(n)); - } while (n != gs); - deleteStr(gs); - return p; - } - else - return addProp_(o,lookupProp(g)); -} - -DLLEXPORT(VObject*) addPropValue(VObject *o, const char *p, const char *v) -{ - VObject *prop; - prop = addProp(o,p); - setVObjectUStringZValue_(prop, fakeUnicode(v,0)); - return prop; -} - -DLLEXPORT(VObject*) addPropSizedValue_(VObject *o, const char *p, const char *v, - unsigned int size) -{ - VObject *prop; - prop = addProp(o,p); - setValueWithSize_(prop, (void*)v, size); - return prop; -} - -DLLEXPORT(VObject*) addPropSizedValue(VObject *o, const char *p, const char *v, - unsigned int size) -{ - return addPropSizedValue_(o,p,dupStr(v,size),size); -} - - - -/*---------------------------------------------------------------------- - The following pretty print a VObject - ----------------------------------------------------------------------*/ - -static void printVObject_(FILE *fp, VObject *o, int level); - -static void indent(FILE *fp, int level) -{ - int i; - for (i=0;i */ - appendcOFile_(fp,0xd); - appendcOFile_(fp,0xa); - } - else - appendcOFile_(fp,c); -} - -static void appendsOFile(OFile *fp, const char *s) -{ - int i, slen; - slen = strlen(s); - for (i=0; ifp = ofp; - fp->s = 0; - fp->len = 0; - fp->limit = 0; - fp->alloc = 0; - fp->fail = 0; -} - -static void initMemOFile(OFile *fp, char *s, int len) -{ - fp->fp = 0; - fp->s = s; - fp->len = 0; - fp->limit = s?len:0; - fp->alloc = s?0:1; - fp->fail = 0; -} - - -static int writeBase64(OFile *fp, unsigned char *s, long len) -{ - long cur = 0; - int i, numQuads = 0; - unsigned long trip; - unsigned char b; - char quad[5]; -#define MAXQUADS 16 - - quad[4] = 0; - - while (cur < len) { - /* collect the triplet of bytes into 'trip' */ - trip = 0; - for (i = 0; i < 3; i++) { - b = (cur < len) ? *(s + cur) : 0; - cur++; - trip = trip << 8 | b; - } - /* fill in 'quad' with the appropriate four characters */ - for (i = 3; i >= 0; i--) { - b = (unsigned char)(trip & 0x3F); - trip = trip >> 6; - if ((3 - i) < (cur - len)) - quad[i] = '='; /* pad char */ - else if (b < 26) quad[i] = (char)b + 'A'; - else if (b < 52) quad[i] = (char)(b - 26) + 'a'; - else if (b < 62) quad[i] = (char)(b - 52) + '0'; - else if (b == 62) quad[i] = '+'; - else quad[i] = '/'; - } - /* now output 'quad' with appropriate whitespace and line ending */ - appendsOFile(fp, (numQuads == 0 ? " " : "")); - appendsOFile(fp, quad); - appendsOFile(fp, ((cur >= len)?"\n" :(numQuads==MAXQUADS-1?"\n" : ""))); - numQuads = (numQuads + 1) % MAXQUADS; - } - appendcOFile(fp,'\n'); - - return 1; -} - -static void writeString(OFile *fp, const char *s) -{ - appendsOFile(fp,s); -} - -static void writeQPString(OFile *fp, const char *s) -{ - char buf[4]; - int count=0; - const char *p = s; - - while (*p) { - /* break up lines biggger than 75 chars */ - if(count >=74){ - count=0; - appendsOFile(fp,"=\n"); - } - - /* escape any non ASCII characters and '=' as per rfc1521 */ - if (*p<= 0x1f || *p >=0x7f || *p == '=' ) { - sprintf(buf,"=%02X",(unsigned char)*p); - appendsOFile(fp,buf); - count+=3; - } else { - appendcOFile(fp,*p); - count++; - } - p++; - } -} - - - -static void writeVObject_(OFile *fp, VObject *o); - -static void writeValue(OFile *fp, VObject *o, unsigned long size,int quote) -{ - if (o == 0) return; - switch (VALUE_TYPE(o)) { - case VCVT_USTRINGZ: { - char *s = fakeCString(USTRINGZ_VALUE_OF(o)); - if(quote) writeQPString(fp, s); - else writeString(fp,s); - deleteStr(s); - break; - } - case VCVT_STRINGZ: { - if(quote) writeQPString(fp, STRINGZ_VALUE_OF(o)); - else writeString(fp,STRINGZ_VALUE_OF(o)); - break; - } - case VCVT_UINT: { - char buf[16]; - sprintf(buf,"%u", INTEGER_VALUE_OF(o)); - appendsOFile(fp,buf); - break; - } - case VCVT_ULONG: { - char buf[16]; - sprintf(buf,"%lu", LONG_VALUE_OF(o)); - appendsOFile(fp,buf); - break; - } - case VCVT_RAW: { - appendcOFile(fp,'\n'); - writeBase64(fp,(unsigned char*)(ANY_VALUE_OF(o)),size); - break; - } - case VCVT_VOBJECT: - appendcOFile(fp,'\n'); - writeVObject_(fp,VOBJECT_VALUE_OF(o)); - break; - } -} - -static void writeAttrValue(OFile *fp, VObject *o) -{ - if (NAME_OF(o)) { - struct PreDefProp *pi; - pi = lookupPropInfo(NAME_OF(o)); - if (pi && ((pi->flags & PD_INTERNAL) != 0)) return; - appendcOFile(fp,';'); - appendsOFile(fp,NAME_OF(o)); - } - else - appendcOFile(fp,';'); - if (VALUE_TYPE(o)) { - appendcOFile(fp,'='); - writeValue(fp,o,0,0); - } -} - -static void writeGroup(OFile *fp, VObject *o) -{ - char buf1[256]; - char buf2[256]; - strcpy(buf1,NAME_OF(o)); - while ((o=isAPropertyOf(o,VCGroupingProp)) != 0) { - strcpy(buf2,STRINGZ_VALUE_OF(o)); - strcat(buf2,"."); - strcat(buf2,buf1); - strcpy(buf1,buf2); - } - appendsOFile(fp,buf1); -} - -static int inList(const char **list, const char *s) -{ - if (list == 0) return 0; - while (*list) { - if (stricmp(*list,s) == 0) return 1; - list++; - } - return 0; -} - -static void writeProp(OFile *fp, VObject *o) -{ - int isQuoted=0; - if (NAME_OF(o)) { - struct PreDefProp *pi; - VObjectIterator t; - const char **fields_ = 0; - pi = lookupPropInfo(NAME_OF(o)); - if (pi && ((pi->flags & PD_BEGIN) != 0)) { - writeVObject_(fp,o); - return; - } - if (isAPropertyOf(o,VCGroupingProp)) - writeGroup(fp,o); - else - appendsOFile(fp,NAME_OF(o)); - if (pi) fields_ = pi->fields; - initPropIterator(&t,o); - while (moreIteration(&t)) { - const char *s; - VObject *eachProp = nextVObject(&t); - s = NAME_OF(eachProp); - if (stricmp(VCGroupingProp,s) && !inList(fields_,s)) - writeAttrValue(fp,eachProp); - if (stricmp(VCQPProp,s)==0 || stricmp(VCQuotedPrintableProp,s)==0) - isQuoted=1; - } - if (fields_) { - int i = 0, n = 0; - const char** fields = fields_; - /* output prop as fields */ - appendcOFile(fp,':'); - while (*fields) { - VObject *t = isAPropertyOf(o,*fields); - i++; - if (t) n = i; - fields++; - } - fields = fields_; - for (i=0;iflags & PD_BEGIN) != 0)) { - VObjectIterator t; - const char *begin = NAME_OF(o); - appendsOFile(fp,"BEGIN:"); - appendsOFile(fp,begin); - appendcOFile(fp,'\n'); - initPropIterator(&t,o); - while (moreIteration(&t)) { - VObject *eachProp = nextVObject(&t); - writeProp(fp, eachProp); - } - appendsOFile(fp,"END:"); - appendsOFile(fp,begin); - appendsOFile(fp,"\n\n"); - } - } -} - -void writeVObject(FILE *fp, VObject *o) -{ - OFile ofp; - initOFile(&ofp,fp); - writeVObject_(&ofp,o); -} - -DLLEXPORT(void) writeVObjectToFile(char *fname, VObject *o) -{ - FILE *fp = fopen(fname,"w"); - if (fp) { - writeVObject(fp,o); - fclose(fp); - } -} - -DLLEXPORT(void) writeVObjectsToFile(char *fname, VObject *list) -{ - FILE *fp = fopen(fname,"w"); - if (fp) { - while (list) { - writeVObject(fp,list); - list = nextVObjectInList(list); - } - fclose(fp); - } -} - -DLLEXPORT(char*) writeMemVObject(char *s, int *len, VObject *o) -{ - OFile ofp; - initMemOFile(&ofp,s,len?*len:0); - writeVObject_(&ofp,o); - if (len) *len = ofp.len; - appendcOFile(&ofp,0); - return ofp.s; -} - -DLLEXPORT(char*) writeMemVObjects(char *s, int *len, VObject *list) -{ - OFile ofp; - initMemOFile(&ofp,s,len?*len:0); - while (list) { - writeVObject_(&ofp,list); - list = nextVObjectInList(list); - } - if (len) *len = ofp.len; - appendcOFile(&ofp,0); - return ofp.s; -} - -/*---------------------------------------------------------------------- - APIs to do fake Unicode stuff. - ----------------------------------------------------------------------*/ -DLLEXPORT(wchar_t*) fakeUnicode(const char *ps, int *bytes) -{ - wchar_t *r, *pw; - int len = strlen(ps)+1; - - pw = r = (wchar_t*)malloc(sizeof(wchar_t)*len); - if (bytes) - *bytes = len * sizeof(wchar_t); - - while (*ps) { - if (*ps == '\n') - *pw = (wchar_t)0x2028; - else if (*ps == '\r') - *pw = (wchar_t)0x2029; - else - *pw = (wchar_t)(unsigned char)*ps; - ps++; pw++; - } - *pw = (wchar_t)0; - - return r; -} - -DLLEXPORT(int) uStrLen(const wchar_t *u) -{ - int i = 0; - while (*u != (wchar_t)0) { u++; i++; } - return i; -} - -DLLEXPORT(char*) fakeCString(const wchar_t *u) -{ - char *s, *t; - int len = uStrLen(u) + 1; - t = s = (char*)malloc(len); - while (*u) { - if (*u == (wchar_t)0x2028) - *t = '\n'; - else if (*u == (wchar_t)0x2029) - *t = '\r'; - else - *t = (char)*u; - u++; t++; - } - *t = 0; - return s; -} - -/* end of source file vobject.c */ diff --git a/libical/src/libicalvcal/vobject.h b/libical/src/libicalvcal/vobject.h deleted file mode 100644 index bc31dc8297..0000000000 --- a/libical/src/libicalvcal/vobject.h +++ /dev/null @@ -1,366 +0,0 @@ -/*************************************************************************** -(C) Copyright 1996 Apple Computer, Inc., AT&T Corp., International -Business Machines Corporation and Siemens Rolm Communications Inc. - -For purposes of this license notice, the term Licensors shall mean, -collectively, Apple Computer, Inc., AT&T Corp., International -Business Machines Corporation and Siemens Rolm Communications Inc. -The term Licensor shall mean any of the Licensors. - -Subject to acceptance of the following conditions, permission is hereby -granted by Licensors without the need for written agreement and without -license or royalty fees, to use, copy, modify and distribute this -software for any purpose. - -The above copyright notice and the following four paragraphs must be -reproduced in all copies of this software and any software including -this software. - -THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS AND NO LICENSOR SHALL HAVE -ANY OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS OR -MODIFICATIONS. - -IN NO EVENT SHALL ANY LICENSOR BE LIABLE TO ANY PARTY FOR DIRECT, -INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOST PROFITS ARISING OUT -OF THE USE OF THIS SOFTWARE EVEN IF ADVISED OF THE POSSIBILITY OF SUCH -DAMAGE. - -EACH LICENSOR SPECIFICALLY DISCLAIMS ANY WARRANTIES, EXPRESS OR IMPLIED, -INCLUDING BUT NOT LIMITED TO ANY WARRANTY OF NONINFRINGEMENT OR THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. - -The software is provided with RESTRICTED RIGHTS. Use, duplication, or -disclosure by the government are subject to restrictions set forth in -DFARS 252.227-7013 or 48 CFR 52.227-19, as applicable. - -***************************************************************************/ - -/* - -The vCard/vCalendar C interface is implemented in the set -of files as follows: - -vcc.y, yacc source, and vcc.c, the yacc output you will use -implements the core parser - -vobject.c implements an API that insulates the caller from -the parser and changes in the vCard/vCalendar BNF - -port.h defines compilation environment dependent stuff - -vcc.h and vobject.h are header files for their .c counterparts - -vcaltmp.h and vcaltmp.c implement vCalendar "macro" functions -which you may find useful. - -test.c is a standalone test driver that exercises some of -the features of the APIs provided. Invoke test.exe on a -VCARD/VCALENDAR input text file and you will see the pretty -print output of the internal representation (this pretty print -output should give you a good idea of how the internal -representation looks like -- there is one such output in the -following too). Also, a file with the .out suffix is generated -to show that the internal representation can be written back -in the original text format. - -For more information on this API see the readme.txt file -which accompanied this distribution. - - Also visit: - - http://www.versit.com - http://www.ralden.com - -*/ - - -#ifndef __VOBJECT_H__ -#define __VOBJECT_H__ 1 - - -#include "port.h" -#include -#include - -#if defined(__CPLUSPLUS__) || defined(__cplusplus) -extern "C" { -#endif - - -#define VC7bitProp "7BIT" -#define VC8bitProp "8BIT" -#define VCAAlarmProp "AALARM" -#define VCAdditionalNamesProp "ADDN" -#define VCAdrProp "ADR" -#define VCAgentProp "AGENT" -#define VCAIFFProp "AIFF" -#define VCAOLProp "AOL" -#define VCAppleLinkProp "APPLELINK" -#define VCAttachProp "ATTACH" -#define VCAttendeeProp "ATTENDEE" -#define VCATTMailProp "ATTMAIL" -#define VCAudioContentProp "AUDIOCONTENT" -#define VCAVIProp "AVI" -#define VCBase64Prop "BASE64" -#define VCBBSProp "BBS" -#define VCBirthDateProp "BDAY" -#define VCBMPProp "BMP" -#define VCBodyProp "BODY" -#define VCBusinessRoleProp "ROLE" -#define VCCalProp "VCALENDAR" -#define VCCaptionProp "CAP" -#define VCCardProp "VCARD" -#define VCCarProp "CAR" -#define VCCategoriesProp "CATEGORIES" -#define VCCellularProp "CELL" -#define VCCGMProp "CGM" -#define VCCharSetProp "CS" -#define VCCIDProp "CID" -#define VCCISProp "CIS" -#define VCCityProp "L" -#define VCClassProp "CLASS" -#define VCCommentProp "NOTE" -#define VCCompletedProp "COMPLETED" -#define VCContentIDProp "CONTENT-ID" -#define VCCountryNameProp "C" -#define VCDAlarmProp "DALARM" -#define VCDataSizeProp "DATASIZE" -#define VCDayLightProp "DAYLIGHT" -#define VCDCreatedProp "DCREATED" -#define VCDeliveryLabelProp "LABEL" -#define VCDescriptionProp "DESCRIPTION" -#define VCDIBProp "DIB" -#define VCDisplayStringProp "DISPLAYSTRING" -#define VCDomesticProp "DOM" -#define VCDTendProp "DTEND" -#define VCDTstartProp "DTSTART" -#define VCDueProp "DUE" -#define VCEmailAddressProp "EMAIL" -#define VCEncodingProp "ENCODING" -#define VCEndProp "END" -#define VCEventProp "VEVENT" -#define VCEWorldProp "EWORLD" -#define VCExNumProp "EXNUM" -#define VCExpDateProp "EXDATE" -#define VCExpectProp "EXPECT" -#define VCExtAddressProp "EXT ADD" -#define VCFamilyNameProp "F" -#define VCFaxProp "FAX" -#define VCFullNameProp "FN" -#define VCGeoProp "GEO" -#define VCGeoLocationProp "GEO" -#define VCGIFProp "GIF" -#define VCGivenNameProp "G" -#define VCGroupingProp "Grouping" -#define VCHomeProp "HOME" -#define VCIBMMailProp "IBMMail" -#define VCInlineProp "INLINE" -#define VCInternationalProp "INTL" -#define VCInternetProp "INTERNET" -#define VCISDNProp "ISDN" -#define VCJPEGProp "JPEG" -#define VCLanguageProp "LANG" -#define VCLastModifiedProp "LAST-MODIFIED" -#define VCLastRevisedProp "REV" -#define VCLocationProp "LOCATION" -#define VCLogoProp "LOGO" -#define VCMailerProp "MAILER" -#define VCMAlarmProp "MALARM" -#define VCMCIMailProp "MCIMAIL" -#define VCMessageProp "MSG" -#define VCMETProp "MET" -#define VCModemProp "MODEM" -#define VCMPEG2Prop "MPEG2" -#define VCMPEGProp "MPEG" -#define VCMSNProp "MSN" -#define VCNamePrefixesProp "NPRE" -#define VCNameProp "N" -#define VCNameSuffixesProp "NSUF" -#define VCNoteProp "NOTE" -#define VCOrgNameProp "ORGNAME" -#define VCOrgProp "ORG" -#define VCOrgUnit2Prop "OUN2" -#define VCOrgUnit3Prop "OUN3" -#define VCOrgUnit4Prop "OUN4" -#define VCOrgUnitProp "OUN" -#define VCPagerProp "PAGER" -#define VCPAlarmProp "PALARM" -#define VCParcelProp "PARCEL" -#define VCPartProp "PART" -#define VCPCMProp "PCM" -#define VCPDFProp "PDF" -#define VCPGPProp "PGP" -#define VCPhotoProp "PHOTO" -#define VCPICTProp "PICT" -#define VCPMBProp "PMB" -#define VCPostalBoxProp "BOX" -#define VCPostalCodeProp "PC" -#define VCPostalProp "POSTAL" -#define VCPowerShareProp "POWERSHARE" -#define VCPreferredProp "PREF" -#define VCPriorityProp "PRIORITY" -#define VCProcedureNameProp "PROCEDURENAME" -#define VCProdIdProp "PRODID" -#define VCProdigyProp "PRODIGY" -#define VCPronunciationProp "SOUND" -#define VCPSProp "PS" -#define VCPublicKeyProp "KEY" -#define VCQPProp "QP" -#define VCQuickTimeProp "QTIME" -#define VCQuotedPrintableProp "QUOTED-PRINTABLE" -#define VCRDateProp "RDATE" -#define VCRegionProp "R" -#define VCRelatedToProp "RELATED-TO" -#define VCRepeatCountProp "REPEATCOUNT" -#define VCResourcesProp "RESOURCES" -#define VCRNumProp "RNUM" -#define VCRoleProp "ROLE" -#define VCRRuleProp "RRULE" -#define VCRSVPProp "RSVP" -#define VCRunTimeProp "RUNTIME" -#define VCSequenceProp "SEQUENCE" -#define VCSnoozeTimeProp "SNOOZETIME" -#define VCStartProp "START" -#define VCStatusProp "STATUS" -#define VCStreetAddressProp "STREET" -#define VCSubTypeProp "SUBTYPE" -#define VCSummaryProp "SUMMARY" -#define VCTelephoneProp "TEL" -#define VCTIFFProp "TIFF" -#define VCTimeZoneProp "TZ" -#define VCTitleProp "TITLE" -#define VCTLXProp "TLX" -#define VCTodoProp "VTODO" -#define VCTranspProp "TRANSP" -#define VCUniqueStringProp "UID" -#define VCURLProp "URL" -#define VCURLValueProp "URLVAL" -#define VCValueProp "VALUE" -#define VCVersionProp "VERSION" -#define VCVideoProp "VIDEO" -#define VCVoiceProp "VOICE" -#define VCWAVEProp "WAVE" -#define VCWMFProp "WMF" -#define VCWorkProp "WORK" -#define VCX400Prop "X400" -#define VCX509Prop "X509" -#define VCXRuleProp "XRULE" - -/* Extensions */ - -#define XPilotIdProp "X-PILOTID" -#define XPilotStatusProp "X-PILOTSTAT" - -typedef struct VObject VObject; - -typedef struct VObjectIterator { - VObject* start; - VObject* next; - } VObjectIterator; - -extern DLLEXPORT(VObject*) newVObject(const char *id); -extern DLLEXPORT(void) deleteVObject(VObject *p); -extern DLLEXPORT(char*) dupStr(const char *s, unsigned int size); -extern DLLEXPORT(void) deleteStr(const char *p); -extern DLLEXPORT(void) unUseStr(const char *s); - -extern DLLEXPORT(void) setVObjectName(VObject *o, const char* id); -extern DLLEXPORT(void) setVObjectStringZValue(VObject *o, const char *s); -extern DLLEXPORT(void) setVObjectStringZValue_(VObject *o, const char *s); -extern DLLEXPORT(void) setVObjectUStringZValue(VObject *o, const wchar_t *s); -extern DLLEXPORT(void) setVObjectUStringZValue_(VObject *o, const wchar_t *s); -extern DLLEXPORT(void) setVObjectIntegerValue(VObject *o, unsigned int i); -extern DLLEXPORT(void) setVObjectLongValue(VObject *o, unsigned long l); -extern DLLEXPORT(void) setVObjectAnyValue(VObject *o, void *t); -extern DLLEXPORT(VObject*) setValueWithSize(VObject *prop, void *val, unsigned int size); -extern DLLEXPORT(VObject*) setValueWithSize_(VObject *prop, void *val, unsigned int size); - -extern DLLEXPORT(const char*) vObjectName(VObject *o); -extern DLLEXPORT(const char*) vObjectStringZValue(VObject *o); -extern DLLEXPORT(const wchar_t*) vObjectUStringZValue(VObject *o); -extern DLLEXPORT(unsigned int) vObjectIntegerValue(VObject *o); -extern DLLEXPORT(unsigned long) vObjectLongValue(VObject *o); -extern DLLEXPORT(void*) vObjectAnyValue(VObject *o); -extern DLLEXPORT(VObject*) vObjectVObjectValue(VObject *o); -extern DLLEXPORT(void) setVObjectVObjectValue(VObject *o, VObject *p); - -extern DLLEXPORT(VObject*) addVObjectProp(VObject *o, VObject *p); -extern DLLEXPORT(VObject*) addProp(VObject *o, const char *id); -extern DLLEXPORT(VObject*) addProp_(VObject *o, const char *id); -extern DLLEXPORT(VObject*) addPropValue(VObject *o, const char *p, const char *v); -extern DLLEXPORT(VObject*) addPropSizedValue_(VObject *o, const char *p, const char *v, unsigned int size); -extern DLLEXPORT(VObject*) addPropSizedValue(VObject *o, const char *p, const char *v, unsigned int size); -extern DLLEXPORT(VObject*) addGroup(VObject *o, const char *g); -extern DLLEXPORT(void) addList(VObject **o, VObject *p); - -extern DLLEXPORT(VObject*) isAPropertyOf(VObject *o, const char *id); - -extern DLLEXPORT(VObject*) nextVObjectInList(VObject *o); -extern DLLEXPORT(void) initPropIterator(VObjectIterator *i, VObject *o); -extern DLLEXPORT(int) moreIteration(VObjectIterator *i); -extern DLLEXPORT(VObject*) nextVObject(VObjectIterator *i); - -extern DLLEXPORT(char*) writeMemVObject(char *s, int *len, VObject *o); -extern DLLEXPORT(char*) writeMemVObjects(char *s, int *len, VObject *list); - -extern DLLEXPORT(const char*) lookupStr(const char *s); -extern DLLEXPORT(void) cleanStrTbl(); - -extern DLLEXPORT(void) cleanVObject(VObject *o); -extern DLLEXPORT(void) cleanVObjects(VObject *list); - -extern DLLEXPORT(const char*) lookupProp(const char* str); -extern DLLEXPORT(const char*) lookupProp_(const char* str); - -extern DLLEXPORT(wchar_t*) fakeUnicode(const char *ps, int *bytes); -extern DLLEXPORT(int) uStrLen(const wchar_t *u); -extern DLLEXPORT(char*) fakeCString(const wchar_t *u); - -extern DLLEXPORT(void) printVObjectToFile(char *fname,VObject *o); -extern DLLEXPORT(void) printVObjectsToFile(char *fname,VObject *list); -extern DLLEXPORT(void) writeVObjectToFile(char *fname, VObject *o); -extern DLLEXPORT(void) writeVObjectsToFile(char *fname, VObject *list); - -extern DLLEXPORT(int) vObjectValueType(VObject *o); - -/* return type of vObjectValueType: */ -#define VCVT_NOVALUE 0 - /* if the VObject has no value associated with it. */ -#define VCVT_STRINGZ 1 - /* if the VObject has value set by setVObjectStringZValue. */ -#define VCVT_USTRINGZ 2 - /* if the VObject has value set by setVObjectUStringZValue. */ -#define VCVT_UINT 3 - /* if the VObject has value set by setVObjectIntegerValue. */ -#define VCVT_ULONG 4 - /* if the VObject has value set by setVObjectLongValue. */ -#define VCVT_RAW 5 - /* if the VObject has value set by setVObjectAnyValue. */ -#define VCVT_VOBJECT 6 - /* if the VObject has value set by setVObjectVObjectValue. */ - -extern const char** fieldedProp; - -/* NOTE regarding printVObject and writeVObject - -The functions below are not exported from the DLL because they -take a FILE* as a parameter, which cannot be passed across a DLL -interface (at least that is my experience). Instead you can use -their companion functions which take file names or pointers -to memory. However, if you are linking this code into -your build directly then you may find them a more convenient API -and you can go ahead and use them. If you try to use them with -the DLL LIB you will get a link error. -*/ -extern void printVObject(FILE *fp,VObject *o); -extern void writeVObject(FILE *fp, VObject *o); - - -#if defined(__CPLUSPLUS__) || defined(__cplusplus) -} -#endif - -#endif /* __VOBJECT_H__ */ - - diff --git a/libical/src/test/.cvsignore b/libical/src/test/.cvsignore deleted file mode 100644 index ed72bfe59f..0000000000 --- a/libical/src/test/.cvsignore +++ /dev/null @@ -1,18 +0,0 @@ -*.la -*.lo -.libs -Makefile -Makefile.in -.deps -.libs -copycluster -regression -parser -findobj -storage -stow -recur -testmime -testvcal - - diff --git a/libical/src/test/Makefile.am b/libical/src/test/Makefile.am deleted file mode 100644 index 7fc594ee84..0000000000 --- a/libical/src/test/Makefile.am +++ /dev/null @@ -1,23 +0,0 @@ - -noinst_PROGRAMS = copycluster regression parser findobj storage stow recur testmime testvcal - -LDADD = ../libical/libical.a ../libicalss/libicalss.a ../libicalvcal/libicalvcal.a -INCLUDES = \ - -I . \ - -I../libicalvcal \ - -I $(srcdir)/../libicalvcal \ - -I $(srcdir) \ - -I../libical \ - -I $(srcdir)/../libical \ - -I../libicalss \ - -I $(srcdir)/../libicalss - -findobj_SOURCES = findobj.c -copycluster_SOURCES = copycluster.c -regression_SOURCES = regression.c -parser_SOURCES = icaltestparser.c -storage_SOURCES = storage.c -stow_SOURCES = stow.c -testvcal_SOURCES = testvcal.c -recur_SOURCES = recur.c -test_mime = testmime.c diff --git a/libical/src/test/copycluster.c b/libical/src/test/copycluster.c deleted file mode 100644 index 11bd94c62d..0000000000 --- a/libical/src/test/copycluster.c +++ /dev/null @@ -1,113 +0,0 @@ -/* -*- Mode: C -*- - ====================================================================== - FILE: copycluster.c - CREATOR: eric 15 January 2000 - - $Id$ - $Locker$ - - (C) COPYRIGHT 2000 Eric Busboom - http://www.softwarestudio.org - - The contents of this file are subject to the Mozilla Public License - Version 1.0 (the "License"); you may not use this file except in - compliance with the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - - Software distributed under the License is distributed on an "AS IS" - basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See - the License for the specific language governing rights and - limitations under the License. - - The Original Code is eric. The Initial Developer of the Original - Code is Eric Busboom - - - ======================================================================*/ - -#include /* for printf */ -#include "ical.h" -#include "icalfileset.h" -#include -#include /* For strerror */ -#include "icalrestriction.h" - -/* This program copies a file that holds iCal components to an other file. */ - - -void usage(char* arg0) { - printf("usage: %s cluster-file1 cluster-file2\n",arg0); -} - -int main(int c, char *argv[]){ - - icalfileset *clusterin, *clusterout; - icalcomponent *itr; - int count=0; - int tostdout = 0; - - if(c < 2 || c > 3){ - usage(argv[0]); - exit(1); - } - - if (c == 2){ - tostdout = 1; - } - - clusterin = icalfileset_new(argv[1]); - - if (clusterin == 0){ - printf("Could not open input cluster \"%s\"",argv[1]); - - exit(1); - } - - if (!tostdout){ - clusterout = icalfileset_new(argv[2]); - if (clusterout == 0){ - printf("Could not open output cluster \"%s\"\n",argv[2]); - exit(1); - } - } - - - for (itr = icalfileset_get_first_component(clusterin, - ICAL_ANY_COMPONENT); - itr != 0; - itr = icalfileset_get_next_component(clusterin, - ICAL_ANY_COMPONENT)){ - - icalrestriction_check(itr); - - if (itr != 0){ - - if(tostdout){ - - printf("--------------\n%s\n",icalcomponent_as_ical_string(itr)); - } else { - - icalfileset_add_component(clusterout, - icalcomponent_new_clone(itr)); - } - - count++; - - } else { - printf("Got NULL component"); - } - } - - - printf("Transfered %d components\n",count); - - icalfileset_free(clusterin); - - if (!tostdout){ - icalfileset_mark(clusterout); - icalfileset_free(clusterout); - } - - return 0; -} - diff --git a/libical/src/test/findobj.c b/libical/src/test/findobj.c deleted file mode 100644 index c31101c33d..0000000000 --- a/libical/src/test/findobj.c +++ /dev/null @@ -1,72 +0,0 @@ -/* -*- Mode: C -*- - ====================================================================== - FILE: findobj.c - CREATOR: eric 11 February 2000 - - $Id$ - $Locker$ - - (C) COPYRIGHT 2000 Eric Busboom - http://www.softwarestudio.org - - The contents of this file are subject to the Mozilla Public License - Version 1.0 (the "License"); you may not use this file except in - compliance with the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - - Software distributed under the License is distributed on an "AS IS" - basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See - the License for the specific language governing rights and - limitations under the License. - - The Original Code is eric. The Initial Developer of the Original - Code is Eric Busboom - - - ======================================================================*/ - -#include /* for printf */ -#include "ical.h" -#include "icalcalendar.h" -#include "icaldirset.h" -#include -#include /* For strerror */ -#include "icalrestriction.h" - -/* This program finds an object stored in a calendar */ - -void usage(char* arg0) { - printf("usage: %s calendar-dir uid\n",arg0); -} - -int main(int c, char *argv[]){ - - icalcalendar *cal; - icaldirset *booked; - icalcomponent *itr; - - if(c < 2 || c > 3){ - usage(argv[0]); - exit(1); - } - - cal = icalcalendar_new(argv[1]); - - if(cal == 0){ - fprintf(stderr,"%s: error in opening calendar \"%s\": %s. errno is \"%s\"\n", - argv[0],argv[1],icalerror_strerror(icalerrno), - strerror(errno)); - } - - booked = icalcalendar_get_booked(cal); - - itr = icaldirset_fetch(booked,argv[2]); - - - if(itr != 0){ - printf("%s",icalcomponent_as_ical_string(itr)); - } - - return 0; -} - diff --git a/libical/src/test/icaltestparser.c b/libical/src/test/icaltestparser.c deleted file mode 100644 index 71f91b641f..0000000000 --- a/libical/src/test/icaltestparser.c +++ /dev/null @@ -1,123 +0,0 @@ -/* -*- Mode: C -*- - ====================================================================== - FILE: icaltestparser.c - CREATOR: eric 20 June 1999 - - $Id$ - $Locker$ - - The contents of this file are subject to the Mozilla Public License - Version 1.0 (the "License"); you may not use this file except in - compliance with the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - - Software distributed under the License is distributed on an "AS IS" - basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See - the License for the specific language governing rights and - limitations under the License. - - The original author is Eric Busboom - The original code is icaltestparser.c - - - (C) COPYRIGHT 1999 The Software Studio. - http://www.softwarestudio.org - - ======================================================================*/ - -#include -#include -#include -#include -#include "ical.h" - -#include - -char str[] = "BEGIN:VCALENDAR\ -PRODID:\"-//RDU Software//NONSGML HandCal//EN\"\ -VERSION:2.0\ -BEGIN:VTIMEZONE\ -TZID:US-Eastern\ -BEGIN:STANDARD\ -DTSTART:19990404T020000\ -RDATE:19990u404xT020000\ -TZOFFSETFROM:-0500\ -TZOFFSETTO:-0400\ -END:STANDARD\ -BEGIN:DAYLIGHT\ -DTSTART:19990404T020000\ -RDATE:19990404T020000\ -TZOFFSETFROM:-0500\ -TZOFFSETTO:-0400\ -TZNAME:EDT\ -Dkjhgri:derhvnv;\ -BEGIN:dfkjh\ -END:dfdfkjh\ -END:DAYLIGHT\ -END:VTIMEZONE\ -BEGIN:VEVENT\ -GEO:Bongo\ -DTSTAMP:19980309T231000Z\ -UID:guid-1.host1.com\ -ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com\ -ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP\ - :MAILTO:employee-A@host.com\ -DESCRIPTION:Project XYZ Review Meeting\ -CATEGORIES:MEETING\ -CLASS:PUBLIC\ -CREATED:19980309T130000Z\ -SUMMARY:XYZ Project Review\ -DTSTART;TZID=US-Eastern:19980312T083000\ -DTEND;TZID=US-Eastern:19980312T093000\ -LOCATION:1CP Conference Room 4350\ -END:VEVENT\ -END:VCALENDAR\ -"; - -extern int yydebug; - -/* Have the parser fetch data from stdin */ - -char* read_stream(char *s, size_t size, void *d) -{ - char *c = fgets(s,size, (FILE*)d); - - return c; - -} - - - -int main(int argc, char* argv[]) -{ - - char* line; - FILE* stream; - icalcomponent *c; - icalparser *parser = icalparser_new(); - - stream = fopen(argv[1],"r"); - - assert(stream != 0); - - icalparser_set_gen_data(parser,stream); - - do{ - - line = icalparser_get_line(parser,read_stream); - - c = icalparser_add_line(parser,line); - - - if (c != 0){ - /*icalcomponent_convert_errors(c);*/ - printf("%s",icalcomponent_as_ical_string(c)); - icalparser_claim(parser); - printf("\n---------------\n"); - icalcomponent_free(c); - } - - } while ( line != 0); - - return 0; - } diff --git a/libical/src/test/recur.c b/libical/src/test/recur.c deleted file mode 100644 index 4d3188f9c2..0000000000 --- a/libical/src/test/recur.c +++ /dev/null @@ -1,96 +0,0 @@ -/* -*- Mode: C -*- - ====================================================================== - FILE: recur.c - CREATOR: ebusboom 8jun00 - - DESCRIPTION: - - Test program for expanding recurrences. Run as: - - ./recur ../../test-data/recur.txt - - - (C) COPYRIGHT 1999 Eric Busboom - http://www.softwarestudio.org - - The contents of this file are subject to the Mozilla Public License - Version 1.0 (the "License"); you may not use this file except in - compliance with the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - - Software distributed under the License is distributed on an "AS IS" - basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See - the License for the specific language governing rights and - limitations under the License. - - The original author is Eric Busboom - The original code is usecases.c - - - ======================================================================*/ - -#include "ical.h" -#include -#include /* for strdup */ -#include /* for malloc */ -#include /* for printf */ -#include /* for time() */ -#include "icalmemory.h" -#include "icaldirset.h" -#include "icalfileset.h" - -int main(int argc, char *argv[]) -{ - icalfileset *cin; - struct icaltimetype start, next; - icalcomponent *itr; - icalproperty *desc, *dtstart, *rrule; - struct icalrecurrencetype recur; - icalrecur_iterator* ritr; - time_t tt; - - cin = icalfileset_new(argv[1]); - assert(cin != 0); - - for (itr = icalfileset_get_first_component(cin, - ICAL_ANY_COMPONENT); - itr != 0; - itr = icalfileset_get_next_component(cin, - ICAL_ANY_COMPONENT)){ - - desc = icalcomponent_get_first_property(itr,ICAL_DESCRIPTION_PROPERTY); - assert(desc !=0); - - dtstart = icalcomponent_get_first_property(itr,ICAL_DTSTART_PROPERTY); - assert(dtstart !=0); - - rrule = icalcomponent_get_first_property(itr,ICAL_RRULE_PROPERTY); - assert(rrule !=0); - - - recur = icalproperty_get_rrule(rrule); - start = icalproperty_get_dtstart(dtstart); - - ritr = icalrecur_iterator_new(recur,start); - - tt = icaltime_as_timet(start); - - printf("\n\n#### %s\n",icalproperty_get_description(desc)); - printf("#### %s\n",icalvalue_as_ical_string(icalproperty_get_value(rrule))); - printf("#### %s\n",ctime(&tt )); - - for(ritr = icalrecur_iterator_new(recur,start), - next = icalrecur_iterator_next(ritr); - !icaltime_is_null_time(next); - next = icalrecur_iterator_next(ritr)){ - - tt = icaltime_as_timet(next); - - printf(" %s",ctime(&tt )); - - } - - } - - return 0; -} diff --git a/libical/src/test/regression.c b/libical/src/test/regression.c deleted file mode 100644 index dc6a5301f1..0000000000 --- a/libical/src/test/regression.c +++ /dev/null @@ -1,1568 +0,0 @@ -/* -*- Mode: C -*- - ====================================================================== - FILE: usecases.c - CREATOR: eric 03 April 1999 - - DESCRIPTION: - - $Id$ - $Locker$ - - (C) COPYRIGHT 1999 Eric Busboom - http://www.softwarestudio.org - - The contents of this file are subject to the Mozilla Public License - Version 1.0 (the "License"); you may not use this file except in - compliance with the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - - Software distributed under the License is distributed on an "AS IS" - basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See - the License for the specific language governing rights and - limitations under the License. - - The original author is Eric Busboom - The original code is usecases.c - - - ======================================================================*/ - -#include "ical.h" -#include -#include /* for strdup */ -#include /* for malloc */ -#include /* for printf */ -#include /* for time() */ -#include "icalmemory.h" -#include "icalerror.h" -#include "icalrestriction.h" -#include "icalcalendar.h" -#include "icalgauge.h" -#include "icaldirset.h" -#include "icalfileset.h" - -/* This example creates and minipulates the ical object that appears - * in rfc 2445, page 137 */ - -char str[] = "BEGIN:VCALENDAR\ -PRODID:\"-//RDU Software//NONSGML HandCal//EN\"\ -VERSION:2.0\ -BEGIN:VTIMEZONE\ -TZID:US-Eastern\ -BEGIN:STANDARD\ -DTSTART:19981025T020000\ -RDATE:19981025T020000\ -TZOFFSETFROM:-0400\ -TZOFFSETTO:-0500\ -TZNAME:EST\ -END:STANDARD\ -BEGIN:DAYLIGHT\ -DTSTART:19990404T020000\ -RDATE:19990404T020000\ -TZOFFSETFROM:-0500\ -TZOFFSETTO:-0400\ -TZNAME:EDT\ -END:DAYLIGHT\ -END:VTIMEZONE\ -BEGIN:VEVENT\ -DTSTAMP:19980309T231000Z\ -UID:guid-1.host1.com\ -ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com\ -ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP:MAILTO:employee-A@host.com\ -DESCRIPTION:Project XYZ Review Meeting\ -CATEGORIES:MEETING\ -CLASS:PUBLIC\ -CREATED:19980309T130000Z\ -SUMMARY:XYZ Project Review\ -DTSTART;TZID=US-Eastern:19980312T083000\ -DTEND;TZID=US-Eastern:19980312T093000\ -LOCATION:1CP Conference Room 4350\ -END:VEVENT\ -BEGIN:BOOGA\ -DTSTAMP:19980309T231000Z\ -X-LIC-FOO:Booga\ -DTSTOMP:19980309T231000Z\ -UID:guid-1.host1.com\ -END:BOOGA\ -END:VCALENDAR"; - - -icalcomponent* create_simple_component() -{ - - icalcomponent* calendar; - struct icalperiodtype rtime; - - rtime.start = icaltime_from_timet( time(0),0,0); - rtime.end = icaltime_from_timet( time(0),0,0); - - rtime.end.hour++; - - - - /* Create calendar and add properties */ - calendar = icalcomponent_new(ICAL_VCALENDAR_COMPONENT); - - - icalcomponent_add_property( - calendar, - icalproperty_new_version("2.0") - ); - - printf("%s\n",icalcomponent_as_ical_string(calendar)); - - return calendar; - -} - -/* Create a new component */ -icalcomponent* create_new_component() -{ - - icalcomponent* calendar; - icalcomponent* timezone; - icalcomponent* tzc; - icalcomponent* event; - struct icaltimetype atime = icaltime_from_timet( time(0),0,0); - struct icalperiodtype rtime; - icalproperty* property; - - rtime.start = icaltime_from_timet( time(0),0,0); - rtime.end = icaltime_from_timet( time(0),0,0); - - rtime.end.hour++; - - - - /* Create calendar and add properties */ - calendar = icalcomponent_new(ICAL_VCALENDAR_COMPONENT); - - - icalcomponent_add_property( - calendar, - icalproperty_new_version("2.0") - ); - - icalcomponent_add_property( - calendar, - icalproperty_new_prodid("-//RDU Software//NONSGML HandCal//EN") - ); - - /* Create a timezone object and add it to the calendar */ - - timezone = icalcomponent_new(ICAL_VTIMEZONE_COMPONENT); - - icalcomponent_add_property( - timezone, - icalproperty_new_tzid("US_Eastern") - ); - - /* Add a sub-component of the timezone */ - tzc = icalcomponent_new(ICAL_XDAYLIGHT_COMPONENT); - - icalcomponent_add_property( - tzc, - icalproperty_new_dtstart(atime) - ); - - icalcomponent_add_property( - tzc, - icalproperty_new_rdate(rtime) - ); - - icalcomponent_add_property( - tzc, - icalproperty_new_tzoffsetfrom(-4.0) - ); - - icalcomponent_add_property( - tzc, - icalproperty_new_tzoffsetto(-5.0) - ); - - icalcomponent_add_property( - tzc, - icalproperty_new_tzname("EST") - ); - - icalcomponent_add_component(timezone,tzc); - - icalcomponent_add_component(calendar,timezone); - - /* Add a second subcomponent */ - tzc = icalcomponent_new(ICAL_XSTANDARD_COMPONENT); - - icalcomponent_add_property( - tzc, - icalproperty_new_dtstart(atime) - ); - - icalcomponent_add_property( - tzc, - icalproperty_new_rdate(rtime) - ); - - icalcomponent_add_property( - tzc, - icalproperty_new_tzoffsetfrom(-4.0) - ); - - icalcomponent_add_property( - tzc, - icalproperty_new_tzoffsetto(-5.0) - ); - - icalcomponent_add_property( - tzc, - icalproperty_new_tzname("EST") - ); - - icalcomponent_add_component(timezone,tzc); - - /* Add an event */ - - event = icalcomponent_new(ICAL_VEVENT_COMPONENT); - - icalcomponent_add_property( - event, - icalproperty_new_dtstamp(atime) - ); - - icalcomponent_add_property( - event, - icalproperty_new_uid("guid-1.host1.com") - ); - - /* add a property that has parameters */ - property = icalproperty_new_organizer("mrbig@host.com"); - - icalproperty_add_parameter( - property, - icalparameter_new_role(ICAL_ROLE_CHAIR) - ); - - icalcomponent_add_property(event,property); - - /* add another property that has parameters */ - property = icalproperty_new_attendee("employee-A@host.com"); - - icalproperty_add_parameter( - property, - icalparameter_new_role(ICAL_ROLE_REQPARTICIPANT) - ); - - icalproperty_add_parameter( - property, - icalparameter_new_rsvp(1) - ); - - icalproperty_add_parameter( - property, - icalparameter_new_cutype(ICAL_CUTYPE_GROUP) - ); - - icalcomponent_add_property(event,property); - - - /* more properties */ - - icalcomponent_add_property( - event, - icalproperty_new_description("Project XYZ Review Meeting") - ); - - icalcomponent_add_property( - event, - icalproperty_new_categories("MEETING") - ); - - icalcomponent_add_property( - event, - icalproperty_new_class("PUBLIC") - ); - - icalcomponent_add_property( - event, - icalproperty_new_created(atime) - ); - - icalcomponent_add_property( - event, - icalproperty_new_summary("XYZ Project Review") - ); - - - property = icalproperty_new_dtstart(atime); - - icalproperty_add_parameter( - property, - icalparameter_new_tzid("US-Eastern") - ); - - icalcomponent_add_property(event,property); - - - property = icalproperty_new_dtend(atime); - - icalproperty_add_parameter( - property, - icalparameter_new_tzid("US-Eastern") - ); - - icalcomponent_add_property(event,property); - - icalcomponent_add_property( - event, - icalproperty_new_location("1CP Conference Room 4350") - ); - - icalcomponent_add_component(calendar,event); - - printf("%s\n",icalcomponent_as_ical_string(calendar)); - - icalcomponent_free(calendar); - - return 0; -} - - -/* Create a new component, using the va_args list */ - -icalcomponent* create_new_component_with_va_args() -{ - - icalcomponent* calendar; - struct icaltimetype atime = icaltime_from_timet( time(0),0,0); - struct icalperiodtype rtime; - - rtime.start = icaltime_from_timet( time(0),0,0); - rtime.end = icaltime_from_timet( time(0),0,0); - - rtime.end.hour++; - - calendar = - icalcomponent_vanew( - ICAL_VCALENDAR_COMPONENT, - icalproperty_new_version("2.0"), - icalproperty_new_prodid("-//RDU Software//NONSGML HandCal//EN"), - icalcomponent_vanew( - ICAL_VTIMEZONE_COMPONENT, - icalproperty_new_tzid("US_Eastern"), - icalcomponent_vanew( - ICAL_XDAYLIGHT_COMPONENT, - icalproperty_new_dtstart(atime), - icalproperty_new_rdate(rtime), - icalproperty_new_tzoffsetfrom(-4.0), - icalproperty_new_tzoffsetto(-5.0), - icalproperty_new_tzname("EST"), - 0 - ), - icalcomponent_vanew( - ICAL_XSTANDARD_COMPONENT, - icalproperty_new_dtstart(atime), - icalproperty_new_rdate(rtime), - icalproperty_new_tzoffsetfrom(-5.0), - icalproperty_new_tzoffsetto(-4.0), - icalproperty_new_tzname("EST"), - 0 - ), - 0 - ), - icalcomponent_vanew( - ICAL_VEVENT_COMPONENT, - icalproperty_new_dtstamp(atime), - icalproperty_new_uid("guid-1.host1.com"), - icalproperty_vanew_organizer( - "mrbig@host.com", - icalparameter_new_role(ICAL_ROLE_CHAIR), - 0 - ), - icalproperty_vanew_attendee( - "employee-A@host.com", - icalparameter_new_role(ICAL_ROLE_REQPARTICIPANT), - icalparameter_new_rsvp(1), - icalparameter_new_cutype(ICAL_CUTYPE_GROUP), - 0 - ), - icalproperty_new_description("Project XYZ Review Meeting"), - icalproperty_new_categories("MEETING"), - icalproperty_new_class("PUBLIC"), - icalproperty_new_created(atime), - icalproperty_new_summary("XYZ Project Review"), - icalproperty_vanew_dtstart( - atime, - icalparameter_new_tzid("US-Eastern"), - 0 - ), - icalproperty_vanew_dtend( - atime, - icalparameter_new_tzid("US-Eastern"), - 0 - ), - icalproperty_new_location("1CP Conference Room 4350"), - 0 - ), - 0 - ); - - printf("%s\n",icalcomponent_as_ical_string(calendar)); - - - icalcomponent_free(calendar); - - return 0; -} - - -/* Return a list of all attendees who are required. */ - -char** get_required_attendees(icalproperty* event) -{ - icalproperty* p; - icalparameter* parameter; - - char **attendees; - int max = 10; - int c = 0; - - attendees = malloc(max * (sizeof (char *))); - - assert(event != 0); - assert(icalcomponent_isa(event) == ICAL_VEVENT_COMPONENT); - - for( - p = icalcomponent_get_first_property(event,ICAL_ATTENDEE_PROPERTY); - p != 0; - p = icalcomponent_get_next_property(event,ICAL_ATTENDEE_PROPERTY) - ) { - - parameter = icalproperty_get_first_parameter(p,ICAL_ROLE_PARAMETER); - - if ( icalparameter_get_role(parameter) == ICAL_ROLE_REQPARTICIPANT) - { - attendees[c++] = strdup(icalproperty_get_attendee(p)); - - if (c >= max) { - max *= 2; - attendees = realloc(attendees, max * (sizeof (char *))); - } - - } - } - - return attendees; -} - -/* If an attendee has a PARTSTAT of NEEDSACTION or has no PARTSTAT - parameter, change it to TENTATIVE. */ - -void update_attendees(icalproperty* event) -{ - icalproperty* p; - icalparameter* parameter; - - - assert(event != 0); - assert(icalcomponent_isa(event) == ICAL_VEVENT_COMPONENT); - - for( - p = icalcomponent_get_first_property(event,ICAL_ATTENDEE_PROPERTY); - p != 0; - p = icalcomponent_get_next_property(event,ICAL_ATTENDEE_PROPERTY) - ) { - - parameter = icalproperty_get_first_parameter(p,ICAL_PARTSTAT_PARAMETER); - - if (parameter == 0) { - - icalproperty_add_parameter( - p, - icalparameter_new_partstat(ICAL_PARTSTAT_TENTATIVE) - ); - - } else if (icalparameter_get_partstat(parameter) == ICAL_PARTSTAT_NEEDSACTION) { - - icalproperty_remove_parameter(p,ICAL_PARTSTAT_PARAMETER); - - icalparameter_free(parameter); - - icalproperty_add_parameter( - p, - icalparameter_new_partstat(ICAL_PARTSTAT_TENTATIVE) - ); - } - - } -} - - -void test_values() -{ - icalvalue *v; - icalvalue *copy; - - v = icalvalue_new_caladdress("cap://value/1"); - printf("caladdress 1: %s\n",icalvalue_get_caladdress(v)); - icalvalue_set_caladdress(v,"cap://value/2"); - printf("caladdress 2: %s\n",icalvalue_get_caladdress(v)); - printf("String: %s\n",icalvalue_as_ical_string(v)); - - copy = icalvalue_new_clone(v); - printf("Clone: %s\n",icalvalue_as_ical_string(v)); - icalvalue_free(v); - icalvalue_free(copy); - - - v = icalvalue_new_boolean(1); - printf("caladdress 1: %d\n",icalvalue_get_boolean(v)); - icalvalue_set_boolean(v,2); - printf("caladdress 2: %d\n",icalvalue_get_boolean(v)); - printf("String: %s\n",icalvalue_as_ical_string(v)); - - copy = icalvalue_new_clone(v); - printf("Clone: %s\n",icalvalue_as_ical_string(v)); - icalvalue_free(v); - icalvalue_free(copy); - - - v = icalvalue_new_date(icaltime_from_timet( time(0),0,0)); - printf("date 1: %s\n",icalvalue_as_ical_string(v)); - icalvalue_set_date(v,icaltime_from_timet( time(0)+3600,0,0)); - printf("date 2: %s\n",icalvalue_as_ical_string(v)); - - copy = icalvalue_new_clone(v); - printf("Clone: %s\n",icalvalue_as_ical_string(v)); - icalvalue_free(v); - icalvalue_free(copy); - - - v = icalvalue_new(-1); - - printf("Invalid type: %p\n",v); - - if (v!=0) icalvalue_free(v); - - - /* v = icalvalue_new_caladdress(0); - - printf("Bad string: %p\n",v); - - if (v!=0) icalvalue_free(v); */ - -} - -void test_properties() -{ - icalproperty *prop; - icalparameter *param; - - icalproperty *clone; - - prop = icalproperty_vanew_comment( - "Another Comment", - icalparameter_new_cn("A Common Name 1"), - icalparameter_new_cn("A Common Name 2"), - icalparameter_new_cn("A Common Name 3"), - icalparameter_new_cn("A Common Name 4"), - 0); - - for(param = icalproperty_get_first_parameter(prop,ICAL_ANY_PARAMETER); - param != 0; - param = icalproperty_get_next_parameter(prop,ICAL_ANY_PARAMETER)) { - - printf("Prop parameter: %s\n",icalparameter_get_cn(param)); - } - - printf("Prop value: %s\n",icalproperty_get_comment(prop)); - - - printf("As iCAL string:\n %s\n",icalproperty_as_ical_string(prop)); - - clone = icalproperty_new_clone(prop); - - printf("Clone:\n %s\n",icalproperty_as_ical_string(prop)); - - icalproperty_free(clone); - icalproperty_free(prop); - - prop = icalproperty_new(-1); - - printf("Invalid type: %p\n",prop); - - if (prop!=0) icalproperty_free(prop); - - /* - prop = icalproperty_new_method(0); - - printf("Bad string: %p\n",prop); - - - if (prop!=0) icalproperty_free(prop); - */ -} - -void test_parameters() -{ - icalparameter *p; - - p = icalparameter_new_cn("A Common Name"); - - printf("Common Name: %s\n",icalparameter_get_cn(p)); - - printf("As String: %s\n",icalparameter_as_ical_string(p)); - - icalparameter_free(p); -} - - -void test_components() -{ - - icalcomponent* c; - icalcomponent* child; - - c = icalcomponent_vanew( - ICAL_VCALENDAR_COMPONENT, - icalproperty_new_version("2.0"), - icalproperty_new_prodid("-//RDU Software//NONSGML HandCal//EN"), - icalproperty_vanew_comment( - "A Comment", - icalparameter_new_cn("A Common Name 1"), - 0), - icalcomponent_vanew( - ICAL_VEVENT_COMPONENT, - icalproperty_new_version("2.0"), - icalproperty_new_description("This is an event"), - icalproperty_vanew_comment( - "Another Comment", - icalparameter_new_cn("A Common Name 1"), - icalparameter_new_cn("A Common Name 2"), - icalparameter_new_cn("A Common Name 3"), - icalparameter_new_cn("A Common Name 4"), - 0), - icalproperty_vanew_xlicerror( - "This is only a test", - icalparameter_new_xlicerrortype(ICAL_XLICERRORTYPE_COMPONENTPARSEERROR), - 0), - - 0 - ), - 0 - ); - - printf("Original Component:\n%s\n\n",icalcomponent_as_ical_string(c)); - - child = icalcomponent_get_first_component(c,ICAL_VEVENT_COMPONENT); - - printf("Child Component:\n%s\n\n",icalcomponent_as_ical_string(child)); - - icalcomponent_free(c); - -} - -void test_memory() -{ - size_t bufsize = 256; - int i; - char *p; - - char S1[] = "1) When in the Course of human events, "; - char S2[] = "2) it becomes necessary for one people to dissolve the political bands which have connected them with another, "; - char S3[] = "3) and to assume among the powers of the earth, "; - char S4[] = "4) the separate and equal station to which the Laws of Nature and of Nature's God entitle them, "; - char S5[] = "5) a decent respect to the opinions of mankind requires that they "; - char S6[] = "6) should declare the causes which impel them to the separation. "; - char S7[] = "7) We hold these truths to be self-evident, "; - char S8[] = "8) that all men are created equal, "; - -/* char S9[] = "9) that they are endowed by their Creator with certain unalienable Rights, "; - char S10[] = "10) that among these are Life, Liberty, and the pursuit of Happiness. "; - char S11[] = "11) That to secure these rights, Governments are instituted among Men, "; - char S12[] = "12) deriving their just powers from the consent of the governed. "; -*/ - - - char *f, *b1, *b2, *b3, *b4, *b5, *b6, *b7, *b8; - -#define BUFSIZE 1024 - - f = icalmemory_new_buffer(bufsize); - p = f; - b1 = icalmemory_tmp_buffer(BUFSIZE); - strcpy(b1, S1); - icalmemory_append_string(&f, &p, &bufsize, b1); - - b2 = icalmemory_tmp_buffer(BUFSIZE); - strcpy(b2, S2); - icalmemory_append_string(&f, &p, &bufsize, b2); - - b3 = icalmemory_tmp_buffer(BUFSIZE); - strcpy(b3, S3); - icalmemory_append_string(&f, &p, &bufsize, b3); - - b4 = icalmemory_tmp_buffer(BUFSIZE); - strcpy(b4, S4); - icalmemory_append_string(&f, &p, &bufsize, b4); - - b5 = icalmemory_tmp_buffer(BUFSIZE); - strcpy(b5, S5); - icalmemory_append_string(&f, &p, &bufsize, b5); - - b6 = icalmemory_tmp_buffer(BUFSIZE); - strcpy(b6, S6); - icalmemory_append_string(&f, &p, &bufsize, b6); - - b7 = icalmemory_tmp_buffer(BUFSIZE); - strcpy(b7, S7); - icalmemory_append_string(&f, &p, &bufsize, b7); - - b8 = icalmemory_tmp_buffer(BUFSIZE); - strcpy(b8, S8); - icalmemory_append_string(&f, &p, &bufsize, b8); - - - printf("1: %p %s \n",b1,b1); - printf("2: %p %s\n",b2,b2); - printf("3: %p %s\n",b3,b3); - printf("4: %p %s\n",b4,b4); - printf("5: %p %s\n",b5,b5); - printf("6: %p %s\n",b6,b6); - printf("7: %p %s\n",b7,b7); - printf("8: %p %s\n",b8,b8); - - - printf("Final: %s\n", f); - - printf("Final buffer size: %d\n",bufsize); - - free(f); - - bufsize = 4; - - f = icalmemory_new_buffer(bufsize); - - memset(f,0,bufsize); - p = f; - - icalmemory_append_char(&f, &p, &bufsize, 'a'); - printf("Char-by-Char buffer: %s\n", f); - icalmemory_append_char(&f, &p, &bufsize, 'b'); - printf("Char-by-Char buffer: %s\n", f); - icalmemory_append_char(&f, &p, &bufsize, 'c'); - printf("Char-by-Char buffer: %s\n", f); - icalmemory_append_char(&f, &p, &bufsize, 'd'); - printf("Char-by-Char buffer: %s\n", f); - icalmemory_append_char(&f, &p, &bufsize, 'e'); - printf("Char-by-Char buffer: %s\n", f); - icalmemory_append_char(&f, &p, &bufsize, 'f'); - printf("Char-by-Char buffer: %s\n", f); - icalmemory_append_char(&f, &p, &bufsize, 'g'); - printf("Char-by-Char buffer: %s\n", f); - icalmemory_append_char(&f, &p, &bufsize, 'h'); - printf("Char-by-Char buffer: %s\n", f); - icalmemory_append_char(&f, &p, &bufsize, 'i'); - printf("Char-by-Char buffer: %s\n", f); - icalmemory_append_char(&f, &p, &bufsize, 'j'); - printf("Char-by-Char buffer: %s\n", f); - icalmemory_append_char(&f, &p, &bufsize, 'a'); - printf("Char-by-Char buffer: %s\n", f); - icalmemory_append_char(&f, &p, &bufsize, 'b'); - printf("Char-by-Char buffer: %s\n", f); - icalmemory_append_char(&f, &p, &bufsize, 'c'); - printf("Char-by-Char buffer: %s\n", f); - icalmemory_append_char(&f, &p, &bufsize, 'd'); - printf("Char-by-Char buffer: %s\n", f); - icalmemory_append_char(&f, &p, &bufsize, 'e'); - printf("Char-by-Char buffer: %s\n", f); - icalmemory_append_char(&f, &p, &bufsize, 'f'); - printf("Char-by-Char buffer: %s\n", f); - icalmemory_append_char(&f, &p, &bufsize, 'g'); - printf("Char-by-Char buffer: %s\n", f); - icalmemory_append_char(&f, &p, &bufsize, 'h'); - printf("Char-by-Char buffer: %s\n", f); - icalmemory_append_char(&f, &p, &bufsize, 'i'); - printf("Char-by-Char buffer: %s\n", f); - icalmemory_append_char(&f, &p, &bufsize, 'j'); - printf("Char-by-Char buffer: %s\n", f); - - for(i=0; i<100; i++){ - f = icalmemory_tmp_buffer(bufsize); - - assert(f!=0); - - memset(f,0,bufsize); - sprintf(f,"%d",i); - } -} - - -int test_store() -{ - - icalcomponent *c, *gauge; - icalerrorenum error; - icalcomponent *next, *itr; - icalfileset* cluster; - struct icalperiodtype rtime; - icaldirset *s = icaldirset_new("store"); - int i; - - rtime.start = icaltime_from_timet( time(0),0,0); - - cluster = icalfileset_new("clusterin.vcd"); - - if (cluster == 0){ - printf("Failed to create cluster: %s\n",icalerror_strerror(icalerrno)); - return 0; - } - -#define NUMCOMP 4 - - /* Duplicate every component in the cluster NUMCOMP times */ - - icalerror_clear_errno(); - - for (i = 1; i 5 */ - - assert(icalrestriction_get_property_restriction( - ICAL_METHOD_PUBLISH, - ICAL_VEVENT_COMPONENT, - ICAL_ATTACH_PROPERTY)==3); /* ZEROPLUS -> 3 */ - - assert(icalrestriction_get_property_restriction( - ICAL_METHOD_DECLINECOUNTER, - ICAL_VEVENT_COMPONENT, - ICAL_SEQUENCE_PROPERTY)==1); /* ZERO -> 1 */ - - /* Component restrictions */ - assert(icalrestriction_get_component_restriction( - ICAL_METHOD_PUBLISH, - ICAL_VJOURNAL_COMPONENT, - ICAL_X_COMPONENT) == 3); /* ZEROPLUS */ - - assert(icalrestriction_get_component_restriction( - ICAL_METHOD_CANCEL, - ICAL_VJOURNAL_COMPONENT, - ICAL_VEVENT_COMPONENT) == 1); /* ZERO */ - - comp = - icalcomponent_vanew( - ICAL_VCALENDAR_COMPONENT, - icalproperty_new_version("2.0"), - icalproperty_new_prodid("-//RDU Software//NONSGML HandCal//EN"), - icalproperty_new_method(ICAL_METHOD_REQUEST), - icalcomponent_vanew( - ICAL_VTIMEZONE_COMPONENT, - icalproperty_new_tzid("US_Eastern"), - icalcomponent_vanew( - ICAL_XDAYLIGHT_COMPONENT, - icalproperty_new_dtstart(atime), - icalproperty_new_rdate(rtime), - icalproperty_new_tzoffsetfrom(-4.0), - icalproperty_new_tzoffsetto(-5.0), - icalproperty_new_tzname("EST"), - 0 - ), - icalcomponent_vanew( - ICAL_XSTANDARD_COMPONENT, - icalproperty_new_dtstart(atime), - icalproperty_new_rdate(rtime), - icalproperty_new_tzoffsetfrom(-5.0), - icalproperty_new_tzoffsetto(-4.0), - icalproperty_new_tzname("EST"), - 0 - ), - 0 - ), - icalcomponent_vanew( - ICAL_VEVENT_COMPONENT, - icalproperty_new_dtstamp(atime), - icalproperty_new_uid("guid-1.host1.com"), - icalproperty_vanew_organizer( - "mrbig@host.com", - icalparameter_new_role(ICAL_ROLE_CHAIR), - 0 - ), - icalproperty_vanew_attendee( - "employee-A@host.com", - icalparameter_new_role(ICAL_ROLE_REQPARTICIPANT), - icalparameter_new_rsvp(1), - icalparameter_new_cutype(ICAL_CUTYPE_GROUP), - 0 - ), - icalproperty_new_description("Project XYZ Review Meeting"), - icalproperty_new_categories("MEETING"), - icalproperty_new_class("PUBLIC"), - icalproperty_new_created(atime), - icalproperty_new_summary("XYZ Project Review"), -/* icalproperty_vanew_dtstart( - atime, - icalparameter_new_tzid("US-Eastern"), - 0 - ),*/ - icalproperty_vanew_dtend( - atime, - icalparameter_new_tzid("US-Eastern"), - 0 - ), - icalproperty_new_location("1CP Conference Room 4350"), - 0 - ), - 0 - ); - - valid = icalrestriction_check(comp); - - printf("#### %d ####\n%s\n",valid, icalcomponent_as_ical_string(comp)); - -} - -void test_calendar() -{ - icalcomponent *comp; - icalfileset *c; - icaldirset *s; - icalcalendar* calendar = icalcalendar_new("calendar"); - icalerrorenum error; - struct icaltimetype atime = icaltime_from_timet( time(0),0,0); - - comp = icalcomponent_vanew( - ICAL_VEVENT_COMPONENT, - icalproperty_new_version("2.0"), - icalproperty_new_description("This is an event"), - icalproperty_new_dtstart(atime), - icalproperty_vanew_comment( - "Another Comment", - icalparameter_new_cn("A Common Name 1"), - icalparameter_new_cn("A Common Name 2"), - icalparameter_new_cn("A Common Name 3"), - icalparameter_new_cn("A Common Name 4"), - 0), - icalproperty_vanew_xlicerror( - "This is only a test", - icalparameter_new_xlicerrortype(ICAL_XLICERRORTYPE_COMPONENTPARSEERROR), - 0), - - 0); - - - s = icalcalendar_get_booked(calendar); - - error = icaldirset_add_component(s,comp); - - assert(error == ICAL_NO_ERROR); - - c = icalcalendar_get_properties(calendar); - - error = icalfileset_add_component(c,icalcomponent_new_clone(comp)); - - assert(error == ICAL_NO_ERROR); - - icalcalendar_free(calendar); - -} - -void test_recur() -{ - icalvalue *v; - - v = icalvalue_new_from_string(ICAL_RECUR_VALUE, - "FREQ=DAILY;COUNT=5;BYDAY=MO,TU,WE,TH,FR"); - - printf("%s\n",icalvalue_as_ical_string(v)); - - v = icalvalue_new_from_string(ICAL_RECUR_VALUE, - "FREQ=YEARLY;UNTIL=123456T123456;BYSETPOS=-1,2"); - - printf("%s\n",icalvalue_as_ical_string(v)); - - v = icalvalue_new_from_string(ICAL_RECUR_VALUE, - "FREQ=YEARLY;UNTIL=123456T123456;INTERVAL=2;BYMONTH=1;BYDAY=SU;BYHOUR=8,9;BYMINUTE=30"); - - printf("%s\n",icalvalue_as_ical_string(v)); - - v = icalvalue_new_from_string(ICAL_RECUR_VALUE, - "FREQ=MONTHLY;BYDAY=-1MO,TU,WE,TH,FR"); - - printf("%s\n",icalvalue_as_ical_string(v)); - - v = icalvalue_new_from_string(ICAL_RECUR_VALUE, - "FREQ=WEEKLY;INTERVAL=20;WKST=SU;BYDAY=TU"); - - printf("%s\n",icalvalue_as_ical_string(v)); - -} - -void test_recur_expansion() -{ - - icalvalue *v; - - v = icalvalue_new_from_string(ICAL_RECUR_VALUE, - "FREQ=YEARLY;UNTIL=123456T123456;INTERVAL=2;BYMONTH=1;BYDAY=SU;BYHOUR=8,9;BYMINUTE=30"); - - printf("%s\n",icalvalue_as_ical_string(v)); - - icalrecurrencetype_test(); -} - -void test_duration() -{ - - icalvalue *v; - - v = icalvalue_new_from_string(ICAL_DURATION_VALUE, - "PT8H30M"); - - printf("%s\n",icalvalue_as_ical_string(v)); - - icalvalue_free(v); - v = icalvalue_new_from_string(ICAL_PERIOD_VALUE, - "19971015T050000Z/PT8H30M"); - - printf("%s\n",icalvalue_as_ical_string(v)); - - icalvalue_free(v); - v = icalvalue_new_from_string(ICAL_PERIOD_VALUE, - "19971015T050000Z/19971015T060000Z"); - - printf("%s\n",icalvalue_as_ical_string(v)); - icalvalue_free(v); - - -} - - -void test_strings(){ - - icalvalue *v; - - v = icalvalue_new_text("foo;bar;bats"); - - printf("%s\n",icalvalue_as_ical_string(v)); - - icalvalue_free(v); - - v = icalvalue_new_text("foo\\;b\nar\\;ba\tts"); - - printf("%s\n",icalvalue_as_ical_string(v)); - - icalvalue_free(v); - - -} - -void test_requeststat() -{ - icalrequeststatus s; - struct icalreqstattype st, st2; - char temp[1024]; - - s = icalenum_num_to_reqstat(2,1); - - assert(s == ICAL_2_1_FALLBACK_STATUS); - - assert(icalenum_reqstat_major(s) == 2); - assert(icalenum_reqstat_minor(s) == 1); - - printf("2.1: %s\n",icalenum_reqstat_desc(s)); - - st.code = s; - st.debug = "booga"; - st.desc = 0; - - printf("%s\n",icalreqstattype_as_string(st)); - - st.desc = " A non-standard description"; - - printf("%s\n",icalreqstattype_as_string(st)); - - - st.desc = 0; - - sprintf(temp,"%s\n",icalreqstattype_as_string(st)); - - - st2 = icalreqstattype_from_string("2.1;Success but fallback taken on one or more property values.;booga"); - - printf("%d -- %d -- %s -- %s\n",icalenum_reqstat_major(st2.code), - icalenum_reqstat_minor(st2.code), - icalenum_reqstat_desc(st2.code), - st2.debug); - - st2 = icalreqstattype_from_string("2.1;Success but fallback taken on one or more property values.;booga"); - printf("%s\n",icalreqstattype_as_string(st2)); - - st2 = icalreqstattype_from_string("2.1;Success but fallback taken on one or more property values.;"); - printf("%s\n",icalreqstattype_as_string(st2)); - - st2 = icalreqstattype_from_string("2.1;Success but fallback taken on one or more property values."); - printf("%s\n",icalreqstattype_as_string(st2)); - - st2 = icalreqstattype_from_string("2.1;"); - printf("%s\n",icalreqstattype_as_string(st2)); - - st2 = icalreqstattype_from_string("2.1"); - printf("%s\n",icalreqstattype_as_string(st2)); - - st2 = icalreqstattype_from_string("16.4"); - assert(st2.code == ICAL_UNKNOWN_STATUS); - - st2 = icalreqstattype_from_string("1."); - assert(st2.code == ICAL_UNKNOWN_STATUS); - -} - - -void test_time() -{ - struct icaltimetype ictt; - time_t tt,tt2; - icalvalue *v; - short day_of_week,start_day_of_week, day_of_year; - - - tt = time(0); - - printf("System time is: %s\n",ctime(&tt)); - - ictt = icaltime_from_timet(tt,0,0); - - v = icalvalue_new_datetime(ictt); - - printf("System time from libical: %s\n",icalvalue_as_ical_string(v)); - - tt2 = icaltime_as_timet(ictt); - printf("Converted back to libc: %s\n",ctime(&tt2)); - - - ictt.year++; - tt2 = icaltime_as_timet(ictt); - printf("Add a year: %s\n",ctime(&tt2)); - - ictt.month+=13; - tt2 = icaltime_as_timet(ictt); - printf("Add 13 months: %s\n",ctime(&tt2)); - - ictt.second+=90; - tt2 = icaltime_as_timet(ictt); - printf("Add 90 seconds: %s\n",ctime(&tt2)); - - ictt = icaltime_from_timet(tt,0,0); - - - day_of_week = icaltime_day_of_week(ictt); - start_day_of_week = icaltime_start_doy_of_week(ictt); - day_of_year = icaltime_day_of_year(ictt); - - printf("Today is day of week %d, day of year %d\n",day_of_week,day_of_year); - printf("Week started n doy of %d\n",start_day_of_week); - - -} - -void test_iterators() -{ - icalcomponent *c,*inner,*next; - icalcompiter i; - - c= icalcomponent_vanew( - ICAL_VCALENDAR_COMPONENT, - icalcomponent_vanew(ICAL_VEVENT_COMPONENT, - icalproperty_vanew_version("1"),0), - icalcomponent_vanew(ICAL_VEVENT_COMPONENT, - icalproperty_vanew_version("2"),0), - icalcomponent_vanew(ICAL_VEVENT_COMPONENT, - icalproperty_vanew_version("3"),0), - icalcomponent_vanew(ICAL_VEVENT_COMPONENT, - icalproperty_vanew_version("4"),0), - icalcomponent_vanew(ICAL_VTODO_COMPONENT, - icalproperty_vanew_version("5"),0), - icalcomponent_vanew(ICAL_VJOURNAL_COMPONENT, - icalproperty_vanew_version("6"),0), - icalcomponent_vanew(ICAL_VEVENT_COMPONENT, - icalproperty_vanew_version("7"),0), - icalcomponent_vanew(ICAL_VJOURNAL_COMPONENT, - icalproperty_vanew_version("8"),0), - icalcomponent_vanew(ICAL_VJOURNAL_COMPONENT, - icalproperty_vanew_version("9"),0), - icalcomponent_vanew(ICAL_VJOURNAL_COMPONENT, - icalproperty_vanew_version("10"),0), - 0); - - printf("1: "); - - /* List all of the VEVENTS */ - for(i = icalcomponent_begin_component(c,ICAL_VEVENT_COMPONENT); - icalcompiter_deref(&i)!= 0; icalcompiter_next(&i)){ - - icalcomponent *this = icalcompiter_deref(&i); - - icalproperty *p = - icalcomponent_get_first_property(this, - ICAL_VERSION_PROPERTY); - char* s = icalproperty_get_version(p); - - printf("%s ",s); - - } - - printf("\n2: "); - -#if 0 - for(inner = icalcomponent_get_first_component(c,ICAL_VEVENT_COMPONENT); - inner != 0; - inner = next){ - - next = icalcomponent_get_next_component(c,ICAL_VEVENT_COMPONENT); - - icalcomponent_remove_component(c,inner); - - icalcomponent_free(inner); - } -#endif - - /* Delete all of the VEVENTS */ - /* reset iterator */ - icalcomponent_get_first_component(c,ICAL_VEVENT_COMPONENT); - - while((inner=icalcomponent_get_current_component(c)) != 0 ){ - if(icalcomponent_isa(inner) == ICAL_VEVENT_COMPONENT){ - icalcomponent_remove_component(c,inner); - } else { - icalcomponent_get_next_component(c,ICAL_VEVENT_COMPONENT); - } - } - - - - /* List all remaining components */ - for(inner = icalcomponent_get_first_component(c,ICAL_ANY_COMPONENT); - inner != 0; - inner = icalcomponent_get_next_component(c,ICAL_ANY_COMPONENT)){ - - - icalproperty *p = - icalcomponent_get_first_property(inner,ICAL_VERSION_PROPERTY); - - char* s = icalproperty_get_version(p); - - printf("%s ",s); - } - - printf("\n3: "); - - - /* Remove all remaining components */ - for(inner = icalcomponent_get_first_component(c,ICAL_ANY_COMPONENT); - inner != 0; - inner = next){ - - icalcomponent *this; - icalproperty *p; - char* s; - next = icalcomponent_get_next_component(c,ICAL_ANY_COMPONENT); - - p=icalcomponent_get_first_property(inner,ICAL_VERSION_PROPERTY); - s = icalproperty_get_version(p); - printf("rem:%s ",s); - - icalcomponent_remove_component(c,inner); - - this = icalcomponent_get_current_component(c); - - if(this != 0){ - p=icalcomponent_get_first_property(this,ICAL_VERSION_PROPERTY); - s = icalproperty_get_version(p); - printf("next:%s; ",s); - } - - icalcomponent_free(inner); - } - - printf("\n4: "); - - - /* List all remaining components */ - for(inner = icalcomponent_get_first_component(c,ICAL_ANY_COMPONENT); - inner != 0; - inner = icalcomponent_get_next_component(c,ICAL_ANY_COMPONENT)){ - - icalproperty *p = - icalcomponent_get_first_property(inner,ICAL_VERSION_PROPERTY); - - char* s = icalproperty_get_version(p); - - printf("%s ",s); - } - - printf("\n"); -} - -int main(int argc, char *argv[]) -{ - - printf("\n------------Test Memory---------------\n"); - test_memory(); - -exit(0); - - - printf("\n------------Test Iterators-----------\n"); - test_iterators(); - - - printf("\n------------Test time----------------\n"); - test_time(); - - printf("\n------------Test Restriction---------------\n"); - test_restriction(); - - printf("\n------------Test request status-------\n"); - test_requeststat(); - - printf("\n------------Test strings---------------\n"); - test_strings(); - - printf("\n------------Test recur---------------\n"); - test_recur(); - - printf("\n------------Test duration---------------\n"); - test_duration(); - - printf("\n------------Test Compare---------------\n"); - test_compare(); - - printf("\n------------Test Values---------------\n"); - test_values(); - - printf("\n------------Test Parameters-----------\n"); - test_parameters(); - - printf("\n------------Test Properties-----------\n"); - test_properties(); - - printf("\n------------Test Components ----------\n"); - test_components(); - - printf("\n------------Create Components --------\n"); - create_new_component(); - - printf("\n----- Create Components with vaargs ---\n"); - create_new_component_with_va_args(); - - - - - return 0; -} - - - diff --git a/libical/src/test/storage.c b/libical/src/test/storage.c deleted file mode 100644 index d53001b574..0000000000 --- a/libical/src/test/storage.c +++ /dev/null @@ -1,465 +0,0 @@ -/* -*- Mode: C -*- - ====================================================================== - FILE: usecases.c - CREATOR: eric 03 April 1999 - - DESCRIPTION: - - $Id$ - $Locker$ - - (C) COPYRIGHT 1999 Eric Busboom - http://www.softwarestudio.org - - The contents of this file are subject to the Mozilla Public License - Version 1.0 (the "License"); you may not use this file except in - compliance with the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - - Software distributed under the License is distributed on an "AS IS" - basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See - the License for the specific language governing rights and - limitations under the License. - - The original author is Eric Busboom - The original code is usecases.c - - - ======================================================================*/ - -#include "ical.h" -#include -#include /* for strdup */ -#include /* for malloc */ -#include /* for printf */ -#include /* for time() */ -#include "icalmemory.h" -#include "icaldirset.h" -#include "icalfileset.h" -#include "icalerror.h" -#include "icalrestriction.h" -#include "icalcalendar.h" - -#define OUTPUT_FILE "filesetout.ics" - -char str[] = "BEGIN:VCALENDAR\n\ -PRODID:\"-//RDU Software//NONSGML HandCal//EN\"\n\ -VERSION:2.0\n\ -BEGIN:VTIMEZONE\n\ -TZID:US-Eastern\n\ -BEGIN:STANDARD\n\ -DTSTART:19981025T020000\n\ -RDATE:19981025T020000\n\ -TZOFFSETFROM:-0400\n\ -TZOFFSETTO:-0500\n\ -TZNAME:EST\n\ -END:STANDARD\n\ -BEGIN:DAYLIGHT\n\ -DTSTART:19990404T020000\n\ -RDATE:19990404T020000\n\ -TZOFFSETFROM:-0500\n\ -TZOFFSETTO:-0400\n\ -TZNAME:EDT\n\ -END:DAYLIGHT\n\ -END:VTIMEZONE\n\ -BEGIN:VEVENT\n\ -DTSTAMP:19980309T231000Z\n\ -UID:guid-1.host1.com\n\ -ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com\n\ -ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP:MAILTO:employee-A@host.com\n\ -DESCRIPTION:Project XYZ Review Meeting\n\ -CATEGORIES:MEETING\n\ -CLASS:PUBLIC\n\ -CREATED:19980309T130000Z\n\ -SUMMARY:XYZ Project Review\n\ -DTSTART;TZID=US-Eastern:19980312T083000\n\ -DTEND;TZID=US-Eastern:19980312T093000\n\ -LOCATION:1CP Conference Room 4350\n\ -END:VEVENT\n\ -BEGIN:BOOGA\n\ -DTSTAMP:19980309T231000Z\n\ -X-LIC-FOO:Booga\n\ -DTSTOMP:19980309T231000Z\n\ -UID:guid-1.host1.com\n\ -END:BOOGA\n\ -END:VCALENDAR"; - -char str2[] = "BEGIN:VCALENDAR\n\ -PRODID:\"-//RDU Software//NONSGML HandCal//EN\"\n\ -VERSION:2.0\n\ -BEGIN:VEVENT\n\ -DTSTAMP:19980309T231000Z\n\ -UID:guid-1.host1.com\n\ -ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com\n\ -ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP:MAILTO:employee-A@host.com\n\ -DESCRIPTION:Project XYZ Review Meeting\n\ -CATEGORIES:MEETING\n\ -CLASS:PUBLIC\n\ -CREATED:19980309T130000Z\n\ -SUMMARY:XYZ Project Review\n\ -DTSTART;TZID=US-Eastern:19980312T083000\n\ -DTEND;TZID=US-Eastern:19980312T093000\n\ -LOCATION:1CP Conference Room 4350\n\ -END:VEVENT\n\ -END:VCALENDAR\n\ -"; - - -void test_fileset() -{ - icalfileset *cout; - int month = 0; - int count=0; - struct icaltimetype start, end; - icalcomponent *c,*clone, *itr; - - start = icaltime_from_timet( time(0),0,0); - end = start; - end.hour++; - - cout = icalfileset_new(OUTPUT_FILE); - assert(cout != 0); - - c = icalparser_parse_string(str2); - assert(c != 0); - - /* Add data to the file */ - - for(month = 1; month < 10; month++){ - icalcomponent *event; - icalproperty *dtstart, *dtend; - - cout = icalfileset_new(OUTPUT_FILE); - assert(cout != 0); - - start.month = month; - end.month = month; - - clone = icalcomponent_new_clone(c); - assert(clone !=0); - event = icalcomponent_get_first_component(clone,ICAL_VEVENT_COMPONENT); - assert(event != 0); - - dtstart = icalcomponent_get_first_property(event,ICAL_DTSTART_PROPERTY); - assert(dtstart!=0); - icalproperty_set_dtstart(dtstart,start); - - dtend = icalcomponent_get_first_property(event,ICAL_DTEND_PROPERTY); - assert(dtend!=0); - icalproperty_set_dtend(dtend,end); - - icalfileset_add_component(cout,clone); - icalfileset_commit(cout); - - icalfileset_free(cout); - - } - - - /* Print them out */ - - - cout = icalfileset_new(OUTPUT_FILE); - assert(cout != 0); - - for (itr = icalfileset_get_first_component(cout, - ICAL_ANY_COMPONENT); - itr != 0; - itr = icalfileset_get_next_component(cout, - ICAL_ANY_COMPONENT)){ - - icalcomponent *event; - icalproperty *dtstart, *dtend; - - count++; - - event = icalcomponent_get_first_component(itr,ICAL_VEVENT_COMPONENT); - - dtstart = icalcomponent_get_first_property(event,ICAL_DTSTART_PROPERTY); - dtend = icalcomponent_get_first_property(event,ICAL_DTEND_PROPERTY); - - printf("%d %s %s\n",count, icalproperty_as_ical_string(dtstart), - icalproperty_as_ical_string(dtend)); - - } - - /* Remove all of them */ - - icalfileset_free(cout); - - cout = icalfileset_new(OUTPUT_FILE); - assert(cout != 0); - - for (itr = icalfileset_get_first_component(cout, - ICAL_ANY_COMPONENT); - itr != 0; - itr = icalfileset_get_next_component(cout, - ICAL_ANY_COMPONENT)){ - - - icalfileset_remove_component(cout, itr); - } - - icalfileset_free(cout); - - - /* Print them out again */ - - cout = icalfileset_new(OUTPUT_FILE); - assert(cout != 0); - count =0; - - for (itr = icalfileset_get_first_component(cout, - ICAL_ANY_COMPONENT); - itr != 0; - itr = icalfileset_get_next_component(cout, - ICAL_ANY_COMPONENT)){ - - icalcomponent *event; - icalproperty *dtstart, *dtend; - - count++; - - event = icalcomponent_get_first_component(itr,ICAL_VEVENT_COMPONENT); - - dtstart = icalcomponent_get_first_property(event,ICAL_DTSTART_PROPERTY); - dtend = icalcomponent_get_first_property(event,ICAL_DTEND_PROPERTY); - - printf("%d %s %s\n",count, icalproperty_as_ical_string(dtstart), - icalproperty_as_ical_string(dtend)); - - } - - icalfileset_free(cout); - - -} - - - -int test_dirset() -{ - - icalcomponent *c, *gauge; - icalerrorenum error; - icalcomponent *itr; - icalfileset* cluster; - struct icalperiodtype rtime; - icaldirset *s = icaldirset_new("store"); - int i; - - assert(s != 0); - - rtime.start = icaltime_from_timet( time(0),0,0); - - cluster = icalfileset_new(OUTPUT_FILE); - - assert(cluster != 0); - -#define NUMCOMP 4 - - /* Duplicate every component in the cluster NUMCOMP times */ - - icalerror_clear_errno(); - - for (i = 1; i -#include -#include -#include -#include /* for PATH_MAX */ -#include -#include -#include /* for uname */ -#include /* for stat */ -#include /* for stat, getpid, getopt */ -#include /* For getpwent */ -#include /* For getpwent */ -#include /* for tolower */ - -#include "ical.h" -#include "icalcalendar.h" -#include "icalfileset.h" -#include "icalmime.h" - -char* program_name; -#define TMPSIZE 2048 -#define SENDMAIL "/usr/lib/sendmail -t" - -enum options { - STORE_IN_FILE, - STORE_IN_DB, - INPUT_IS_MIME, - INPUT_IS_ICAL, - INPUT_FROM_STDIN, - INPUT_FROM_FILE, - ERRORS_TO_STDOUT, - ERRORS_TO_ORGANIZER -}; - -struct options_struct -{ - enum options storage; - enum options input_type; - enum options input_source; - enum options errors; - char* input_file; - char* calid; - char* output_file; -}; - - -enum file_type -{ - ERROR, - NO_FILE, - DIRECTORY, - REGULAR, - OTHER -}; - -enum file_type test_file(char *path) -{ - struct stat sbuf; - enum file_type type; - - errno = 0; - - /* Check if the path already exists and if it is a directory*/ - if (stat(path,&sbuf) != 0){ - - /* A file by the given name does not exist, or there was - another error */ - if(errno == ENOENT) - { - type = NO_FILE; - } else { - type = ERROR; - } - - } else { - /* A file by the given name exists, but is it a directory? */ - - if (S_ISDIR(sbuf.st_mode)){ - type = DIRECTORY; - } else if(S_ISREG(sbuf.st_mode)){ - type = REGULAR; - } else { - type = OTHER; - } - } - - return type; -} - -char* lowercase(char* str) -{ - char* p = 0; - char* new = strdup(str); - - if(str ==0){ - return 0; - } - - for(p = new; *p!=0; p++){ - *p = tolower(*p); - } - - return new; -} - -#if 0 -char* get_local_attendee(struct options_struct *opt) -{ - char attendee[PATH_MAX]; - - if(opt->calid){ - - strncpy(attendee,opt->calid,PATH_MAX); - - } else { - - char* user = getenv("USER"); - struct utsname uts; - uname(&utget_option); - /* HACK nodename may not be a fully qualified domain name */ - snprintf(attendee,PATH_MAX,"%s@%s",user,uts.nodename); - - } - - return lowercase(attendee); -} -#endif - -void usage(char *message) -{ - fprintf(stderr,"Usage: %s [-emdcn] [-i inputfile] [-o outputfile] [-u calid]\n",program_name); - -} - -icalcomponent* get_first_real_component(icalcomponent *comp) -{ - icalcomponent *c; - - for(c = icalcomponent_get_first_component(comp,ICAL_ANY_COMPONENT); - c != 0; - c = icalcomponent_get_next_component(comp,ICAL_ANY_COMPONENT)){ - if (icalcomponent_isa(c) == ICAL_VEVENT_COMPONENT || - icalcomponent_isa(c) == ICAL_VTODO_COMPONENT || - icalcomponent_isa(c) == ICAL_VJOURNAL_COMPONENT ) - { - return c; - } - } - - return 0; -} - - - -char* make_mime(char* to, char* from, char* subject, - char* text_message, char* method, char* ical_message) -{ - size_t size = strlen(to)+strlen(from)+strlen(subject)+ - strlen(text_message)+ strlen(ical_message)+TMPSIZE; - - char mime_part_1[TMPSIZE]; - char mime_part_2[TMPSIZE]; - char content_id[TMPSIZE]; - char boundary[TMPSIZE]; - struct utsname uts; - char* m; - - - if ((m = malloc(sizeof(char)*size)) == 0){ - fprintf(stderr,"%s: Can't allocate memory: %s\n",program_name,strerror(errno)); - exit(1); - } - - uname(&uts); - - srand(time(0)<calid; - FILE* p; - - icalcomponent *inner = get_first_real_component(comp); - - icalproperty *organizer_prop = icalcomponent_get_first_property(inner,ICAL_ORGANIZER_PROPERTY); - char *organizer = icalproperty_get_organizer(organizer_prop); - - organizer += 7; - - if (opt->errors == ERRORS_TO_ORGANIZER){ - p = popen(SENDMAIL,"w"); - } else { - p = stdout; - } - - if(p == 0){ - fprintf(stderr, - "%s: fatal. Could not open pipe to sendmail (\"%s\") \n", - program_name,SENDMAIL); - exit(1); - } - - fputs(make_mime(organizer, local_attendee, "iMIP error", - message, "reply", - icalcomponent_as_ical_string(comp)),p); - - if (opt->errors == ERRORS_TO_ORGANIZER){ - pclose(p); - } -} - -/* The program had a fatal error and could not process the incoming component*/ -void return_error(icalcomponent* comp, char* message, struct options_struct *opt) -{ - - - fputs(make_mime("Dest", "Source", "iMIP system failure", - message, 0,0),stdout); - -} - -icalcomponent* make_reply(icalcomponent *comp, icalproperty *return_status, - struct options_struct *opt) - -{ - icalcomponent *reply, *rinner; - icalcomponent *inner = get_first_real_component(comp); - icalproperty *p=0; - char* local_attendee = opt->calid; - char attendee[TMPSIZE]; - - char prodid[TMPSIZE]; - - snprintf(attendee,TMPSIZE,"mailto:%s",local_attendee); - - snprintf(prodid,TMPSIZE,"-//Softwarestudio.org//%s version %s//EN",ICAL_PACKAGE,ICAL_VERSION); - - /* Create the base component */ - reply = icalcomponent_vanew( - ICAL_VCALENDAR_COMPONENT, - icalproperty_new_version(strdup("2.0")), - icalproperty_new_prodid(strdup(prodid)), - icalproperty_new_method(ICAL_METHOD_REPLY), - icalcomponent_vanew( - ICAL_VEVENT_COMPONENT, - icalproperty_new_clone( - icalcomponent_get_first_property(inner,ICAL_DTSTAMP_PROPERTY)), - icalproperty_new_clone( - icalcomponent_get_first_property(inner,ICAL_ORGANIZER_PROPERTY)), - icalproperty_new_clone( - icalcomponent_get_first_property(inner,ICAL_UID_PROPERTY)), - icalproperty_new_attendee(attendee), - 0), - 0); - - - /* Convert errors into request-status properties and transfers - them to the reply component */ - - icalcomponent_convert_errors(comp); - - rinner = get_first_real_component(reply); - - for(p = icalcomponent_get_first_property(inner, - ICAL_REQUESTSTATUS_PROPERTY); - p != 0; - p = icalcomponent_get_next_property(inner, - ICAL_REQUESTSTATUS_PROPERTY)){ - - icalcomponent_add_property(rinner,icalproperty_new_clone(p)); - } - - if(return_status != 0){ - icalcomponent_add_property(rinner, return_status); - } - - return reply; - -} - -int check_attendee(icalproperty *p, struct options_struct *opt){ - char* s = icalproperty_get_attendee(p); - char* lower_attendee = lowercase(s); - char* local_attendee = opt->calid; - - /* Check that attendee begins with "mailto:" */ - if (strncmp(lower_attendee,"mailto:",7) == 0){ - /* skip over the mailto: part */ - lower_attendee += 7; - - if(strcmp(lower_attendee,local_attendee) == 0){ - return 1; - } - - lower_attendee -= 7; - - free(lower_attendee); - } - - return 0; -} - -char static_component_error_str[PATH_MAX]; -char* check_component(icalcomponent* comp, icalproperty **return_status, - struct options_struct *opt) -{ - char* component_error_str=0; - icalcomponent* inner; - int errors = 0; - icalproperty *p; - int found_attendee = 0; - - *return_status = 0; - - /* This do/while loop only executes once because it is being used - to fake exceptions */ - - do { - - /* Check that we actually got a component */ - if(comp == 0){ - strcpy(static_component_error_str, - "Did not find a component"); - component_error_str = static_component_error_str; - break; - } - - /* Check that the root component is a VCALENDAR */ - if(icalcomponent_isa(comp) != ICAL_VCALENDAR_COMPONENT){ - strcpy(static_component_error_str, - "Root component is not a VCALENDAR"); - component_error_str = static_component_error_str; - break; - } - - - /* Check that the component has a METHOD */ - - if (icalcomponent_get_first_property(comp,ICAL_METHOD_PROPERTY) == 0) - { - strcpy(static_component_error_str, - "Component does not have a METHOD property"); - component_error_str = static_component_error_str; - break; - } - - inner = get_first_real_component(comp); - - - /* Check that the compopnent has an organizer */ - if(icalcomponent_get_first_property(inner,ICAL_ORGANIZER_PROPERTY) == 0){ - fprintf(stderr,"%s: fatal. Component does not have an ORGANIZER property\n",program_name); - - exit(1); - } - - - /* Check for this user as an attendee or organizer */ - - for(p = icalcomponent_get_first_property(inner,ICAL_ATTENDEE_PROPERTY); - p != 0; - p = icalcomponent_get_next_property(inner,ICAL_ATTENDEE_PROPERTY)){ - - found_attendee += check_attendee(p,opt); - } - - for(p = icalcomponent_get_first_property(inner,ICAL_ORGANIZER_PROPERTY); - p != 0; - p = icalcomponent_get_next_property(inner,ICAL_ORGANIZER_PROPERTY)){ - - found_attendee += check_attendee(p,opt); - } - - if (found_attendee == 0){ - struct icalreqstattype rs; - char* rs_string; - memset(static_component_error_str,0,PATH_MAX); - - snprintf(static_component_error_str,PATH_MAX, - "This target user (%s) is not listed as an attendee or organizer", - opt->calid ); - component_error_str = static_component_error_str; - - rs.code = ICAL_3_7_INVCU_STATUS; - rs.desc = 0; - rs.debug = component_error_str; - rs_string = icalreqstattype_as_string(rs); - - *return_status = icalproperty_new_requeststatus(rs_string); - - break; - } - - - - /* Check that the component passes iTIP restrictions */ - - errors = icalcomponent_count_errors(comp); - icalrestriction_check(comp); - - if(errors != icalcomponent_count_errors(comp)){ - snprintf(static_component_error_str,PATH_MAX, - "The component does not conform to iTIP restrictions.\n Here is the original component; look at the X-LIC-ERROR properties\nfor details\n\n%s",icalcomponent_as_ical_string(comp)); - component_error_str = static_component_error_str; - break; - } - - - - } while(0); - - return component_error_str; -} - - -void get_options(int argc, char* argv[], struct options_struct *opt) -{ - int c; - extern char *optarg; - extern int optind, optopt; - int errflg=0; - - opt->storage = STORE_IN_FILE; - opt->input_source = INPUT_FROM_STDIN; - opt->input_type = INPUT_IS_ICAL; - opt->input_file = 0; - opt->errors = ERRORS_TO_ORGANIZER; - opt->calid = 0; - opt->output_file = 0; - - - while ((c = getopt(argc, argv, "nemu:o:d:b:c:i:")) != -1) { - switch (c) { - case 'e': { /* Input data is MIME encapsulated */ - opt->input_type = INPUT_IS_MIME; - break; - } - case 'm': { /* Input is iCal. Default*/ - opt->input_type = INPUT_IS_ICAL; - break; - } - case 'i': { /* Input comes from named file */ - opt->input_source = INPUT_FROM_FILE; - opt->input_file = strdup(optarg); - break; - } - case 'o': { /* Output goes to named file. Default*/ - opt->output_file = strdup(optarg); - opt->storage = STORE_IN_FILE; - break; - } - case 'd': { /* Output goes to database */ - fprintf(stderr,"%s: option -d is unimplmented\n",program_name); - opt->storage = STORE_IN_DB; - errflg++; - break; - } - case 'c': { - - break; - } - case 'u': { /* Set the calid for the output database or - file. Default is user name of user running - program */ - opt->calid = strdup(optarg); - break; - } - - case 'n': { /* Dump error to stdout. Default is to - send error to the organizer specified - in the iCal data */ - opt->errors = ERRORS_TO_STDOUT; - break; - } - - case ':': {/* Option given without an operand */ - fprintf(stderr, - "%s: Option -%c requires an operand\n", - program_name,optopt); - errflg++; - break; - } - case '?': { - errflg++; - } - - } - - if (errflg >0){ - usage(""); - exit(1); - } - } - - if(opt->calid == 0){ - /* If no calid specified, use username */ - char attendee[PATH_MAX]; - char* user = getenv("USER"); - struct utsname uts; - uname(&uts); - /* HACK nodename may not be a fully qualified domain name */ - snprintf(attendee,PATH_MAX,"%s@%s",user,uts.nodename); - - opt->calid = lowercase(attendee); - } - - if(opt->storage == STORE_IN_FILE && - opt->output_file ==0){ - char file[PATH_MAX]; - char* user = getenv("USER"); - struct passwd *pw; - - if(!user){ - fprintf(stderr,"%s: Can't get username. Try explicitly specifing the output file with -o", program_name); - exit(1); - } - - /* Find password entry for user */ - while( (pw = getpwent())!=0){ - if(strcmp(user,pw->pw_name)==0){ - break; - } - } - - if(pw==0){ - fprintf(stderr,"%s: Can't get get password entry for user \"%s\" Try explicitly specifing the output file with -o", - program_name,user); - exit(1); - } - - if(pw->pw_dir==0){ - fprintf(stderr,"%s: User \"%s\" has no home directory. Try explicitly specifing the output file with -o", - program_name, user); - exit(1); - } - - snprintf(file,PATH_MAX,"%s/.facs/%s",pw->pw_dir,opt->calid); - - opt->output_file = strdup(file); - } - - - /* Now try to create the calendar directory if it does - not exist */ - - if(opt->storage == STORE_IN_FILE ) { - char * p; - char* facspath = strdup(opt->output_file); - enum file_type type; - - /* Cut off the last slash to make it just a directoy */ - - p = strrchr(facspath,'/'); - - if (p == 0){ - fprintf(stderr,"%s: Invalid calendar filename \"%s\"", - program_name,facspath); - exit(1); - } - - *p='\0'; - - type = test_file(facspath); - - errno = 0; - if (type == NO_FILE){ - - if(mkdir(facspath,0775) != 0){ - fprintf(stderr, - "%s: Failed to create calendar directory %s: %s\n", - program_name,facspath, strerror(errno)); - exit(1); - } else { - fprintf(stderr,"%s: Creating calendar directory %s\n", - program_name,facspath); - } - - } else if(type==REGULAR || type == ERROR){ - fprintf(stderr,"%s: Cannot create calendar directory %s\n", - program_name,facspath); - exit(1); - } - } -} - -char* check_options(struct options_struct *opt) -{ - return 0; -} - -void store_component(icalcomponent *comp, struct options_struct *opt) -{ - icalerrorenum error; - - - if(opt->storage == STORE_IN_FILE){ - icalfileset *fs = icalfileset_new(opt->output_file); - - if (fs == 0){ - fprintf(stderr, - "%s: Failed to get incoming component directory: %s\n", - program_name, icalerror_strerror(icalerrno)); - exit(1); - } - - - error = icalfileset_add_component(fs,comp); - - if (error != ICAL_NO_ERROR){ - fprintf(stderr,"%s: Failed to write incoming component: %s\n", - program_name, icalerror_strerror(icalerrno)); - exit(1); - } - - error = icalfileset_commit(fs); - - if (error != ICAL_NO_ERROR){ - fprintf(stderr,"%s: Failed to commit incoming cluster: %s\n", - program_name, icalerror_strerror(icalerrno)); - exit(1); - } - - icalfileset_free(fs); - - return; - } else { - assert(0); - } -} - -char* read_stream(char *s, size_t size, void *d) -{ - char *c = fgets(s,size, (FILE*)d); - - return c; -} - -icalcomponent* read_nonmime_component(struct options_struct *opt) -{ - FILE *stream; - icalcomponent *comp; - icalparser* parser = icalparser_new(); - char* line; - - if(opt->input_source == INPUT_FROM_FILE){ - stream = fopen(opt->input_file,"r"); - - if (stream == 0){ - perror("Can't open input file"); - exit(1); - } - - } else { - stream = stdin; - } - - assert(stream != 0); - icalparser_set_gen_data(parser,stream); - - do { - line = icalparser_get_line(parser,read_stream); - - comp = icalparser_add_line(parser,line); - - if (comp != 0){ - icalparser_claim(parser); - return comp; - } - - } while ( line != 0); - - if(opt->input_source == INPUT_FROM_FILE){ - fclose(stream); - } - - - return comp; - } - -icalcomponent* find_vcalendar(icalcomponent* comp) -{ - icalcomponent *c,*rtrn; - - for(c = icalcomponent_get_first_component(comp,ICAL_ANY_COMPONENT); - c != 0; - c = icalcomponent_get_next_component(comp,ICAL_ANY_COMPONENT)){ - - if(icalcomponent_isa(c) == ICAL_VCALENDAR_COMPONENT){ - icalcomponent_remove_component(comp,c); - return c; - } - - if((rtrn=find_vcalendar(c)) != 0){ - return rtrn; - } - } - - return 0; -} - -icalcomponent* read_mime_component(struct options_struct *opt) -{ - icalcomponent *comp,*mimecomp; - FILE* stream; - - if(opt->input_source == INPUT_FROM_FILE){ - stream = fopen(opt->input_file,"r"); - - if (stream == 0){ - perror("Can't open input file"); - exit(1); - } - - } else { - stream = stdin; - } - - assert(stream != 0); - - mimecomp = icalmime_parse(read_stream,(void*)stream); - - /* now find the iCal component embedded within the mime component */ - comp = find_vcalendar(mimecomp); - - - if(comp == 0){ - return 0; - } - - return comp; -} - -icalcomponent* read_component(struct options_struct *opt) -{ - if(opt->input_type == INPUT_IS_MIME){ - return read_mime_component(opt); - } else if (opt->input_type == INPUT_IS_ICAL){ - return read_nonmime_component(opt); - } else { - fprintf(stderr,"%s: Internal Error; unknown option for input_type\n", - program_name); - exit(1); - } -} - -int main(int argc, char* argv[] ) -{ - char* options_error_str; - char* component_error_str; - icalcomponent* comp, *reply; - struct options_struct opt; - icalproperty *return_status; - - program_name = strrchr(argv[0],'/'); - - get_options(argc, argv, &opt); - - if ( (options_error_str = check_options(&opt)) != 0 ){ - usage(options_error_str); - exit(1); - } - - comp = read_component(&opt); - - if ( (component_error_str = - check_component(comp,&return_status,&opt)) != 0){ - reply = make_reply(comp,return_status,&opt); - return_failure(reply, component_error_str, &opt); - icalcomponent_free(reply); - exit(0); - } - - store_component(comp,&opt); - - - /* Don't free the component comp, since it is now part of the - store, and will be freed there */ - - exit(0); -} - diff --git a/libical/src/test/testmime.c b/libical/src/test/testmime.c deleted file mode 100644 index a912983f84..0000000000 --- a/libical/src/test/testmime.c +++ /dev/null @@ -1,339 +0,0 @@ -/* -*- Mode: C -*- - ====================================================================== - FILE: - CREATOR: eric 25 June 2000 - - $Id$ - $Locker$ - - The contents of this file are subject to the Mozilla Public License - Version 1.0 (the "License"); you may not use this file except in - compliance with the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - - Software distributed under the License is distributed on an "AS IS" - basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See - the License for the specific language governing rights and - limitations under the License. - - - 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 Initial Developer of the Original Code is Eric Busboom - - (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org - ======================================================================*/ - -#include "ical.h" -#include "sspm.h" -#include "icalmime.h" -#include /* For rand */ -#include /* for strrchr, strdup*/ -#include /* for getopt */ - -/*int sspm_parse_mime(struct sspm_part *parts, - size_t max_parts, - struct sspm_action_map *actions, - char* (*get_string)(char *s, size_t size, void* data), - void *get_string_data, - struct sspm_header *first_header - ); -*/ - - - -char* major_type_string[] = { - "TEXT", - "IMAGE", - "AUDIO", - "VIDEO", - "APPLICATION", - "MULTIPART", - "MESSAGE", - "UNKNOWN", - "NO" -}; - -char* minor_type_string[] = { - "ANY", - "PLAIN", - "RFC822", - "DIGEST", - "CALENDAR", - "MIXED", - "RELATED", - "ALTERNATIVE", - "PARALLEL", - "UNKNOWN", - "NO" -}; - - -char* read_stream(char *s, size_t size, void *d) -{ - char *c = fgets(s,size, (FILE*)d); - - return c; - -} - -int main(int argc, char* argv[]) { - - FILE *f; - int c; - extern char *optarg; - extern int optind, optopt; - int errflg=0; - char* program_name; - - struct options{ - int normal; - int stress; - int base64; - int qp; - int sleep; - int count; - char* input_file; - } opt; - - memset(&opt,0,sizeof(opt)); - - program_name = (char*)strrchr((char*)argv[0],'/'); - program_name++; - - while ((c = getopt(argc, argv, "nsbqi:S:c:")) != -1) { - switch (c) { - case 'i': { /* Input comes from named file */ - opt.input_file = strdup(optarg); - break; - } - case 'n':{ /* Normal */ - - if(opt.stress+opt.base64+opt.qp != 0){ - fprintf(stderr, - "%s: Use only one of n,s,b and q\n", - program_name); - } - opt.normal = 1; - break; - } - case 's':{ /* Stress-test*/ - if(opt.base64+opt.normal+opt.qp != 0){ - fprintf(stderr, - "%s: Use only one of n,s,b and q\n", - program_name); - } - opt.stress = 1; - break; - } - case 'b':{ /* test base64 encoding*/ - if(opt.stress+opt.normal+opt.qp != 0){ - fprintf(stderr, - "%s: Use only one of n,s,b and q\n", - program_name); - } - opt.base64 = 1; - break; - } - case 'q':{ /* test quoted-printable encoding*/ - if(opt.stress+opt.base64+opt.normal != 0){ - fprintf(stderr, - "%s: Use only one of n,s,b and q\n", - program_name); - } - opt.qp = 1; - break; - } - case 'S':{ /* sleep at end of run */ - opt.sleep = atoi(optarg); - break; - } - - case 'c':{ /* number of iterations of stress test */ - opt.count = atoi(optarg); - break; - } - - case ':': {/* Option given without an operand */ - fprintf(stderr, - "%s: Option -%c requires an operand\n", - program_name,optopt); - errflg++; - break; - } - case '?': { - errflg++; - } - } - } - - if (errflg >0){ - fprintf(stderr,"Usage: %s [-n|-s|-b|-q] [-i input_file]\n", - program_name); - exit(1); - } - - if(opt.stress+opt.base64+opt.normal+opt.qp == 0){ - fprintf(stderr, - "%s: Must have one of n,s,b or q\n", - program_name); - } - - if(opt.input_file){ - f = fopen(opt.input_file,"r"); - if (f == 0){ - fprintf(stderr,"Could not open input file \"%s\"\n", - opt.input_file); - exit(1); - } - } else { - f = stdin; - } - - - - if(opt.normal == 1){ - icalcomponent *c; - - c = icalmime_parse(read_stream,f); - - printf("%s\n",icalcomponent_as_ical_string(c)); - - icalcomponent_free(c); - - } else if (opt.stress==1 ){ - /* Read file in by lines, then randomize the lines into a - string buffer */ - - char *array[1024]; - char temp[1024]; - char *buf; - int i,last; - int size; - int non_rand; - int rand_lines; - int r; - int j; - icalcomponent *c; - struct slg_data { - char* pos; - char* str; - } d; - - for(i=0; !feof(f); i++){ - fgets(temp,1024,f); - array[i] = strdup(temp); - size += strlen(temp); - } - last = i; - - buf = malloc(size*2); - assert(buf != 0); - - - for(j=0; j - -/* Given a vCal data file as its first argument, this program will - print out an equivalent iCal component. - - For instance: - - ./testvcal ../../test-data/user-cal.vcf - -*/ - -int main(int argc, char* argv[]) -{ - VObject *vcal = 0; - icalcomponent *comp; - - vcal = Parse_MIME_FromFileName(argv[1]); - - assert(vcal != 0); - - comp = icalvcal_convert(vcal); - - printf("%s\n",icalcomponent_as_ical_string(comp)); - - return 0; -} - - diff --git a/libical/test-data/.cvsignore b/libical/test-data/.cvsignore deleted file mode 100644 index b840c21800..0000000000 --- a/libical/test-data/.cvsignore +++ /dev/null @@ -1,2 +0,0 @@ -Makefile.in -Makefile \ No newline at end of file diff --git a/libical/test-data/0 b/libical/test-data/0 deleted file mode 100644 index 3d7fb999cb..0000000000 --- a/libical/test-data/0 +++ /dev/null @@ -1,9 +0,0 @@ -BEGIN:VCALENDAR -VERSION:2.0 -PRODID:-//hacksw/handcal//NONSGML v1.0//EN -BEGIN:VEVENT -DTSTART:19970714T170000Z -DTEND:19970715T035959Z -SUMMARY:Bastille Day Party -END:VEVENT -END:VCALENDAR diff --git a/libical/test-data/1 b/libical/test-data/1 deleted file mode 100644 index 6a368d9997..0000000000 --- a/libical/test-data/1 +++ /dev/null @@ -1,39 +0,0 @@ -BEGIN:VCALENDAR -PRODID:"-//RDU Software//NONSGML HandCal//EN" -VERSION:2.0 -BEGIN:VTIMEZONE -TZID:US-Eastern -BEGIN:STANDARD -DTSTART:19981025T020000 -RDATE:19981025T020000 -TZOFFSETFROM:-0400 -TZOFFSETTO:-0500 -TZNAME:EST -END:STANDARD -BEGIN:DAYLIGHT -DTSTART:19990404T020000 -RDATE:19990404T020000 -TZOFFSETFROM:-0500 -TZOFFSETTO:-0400 -TZNAME:EDT -END:DAYLIGHT -END:VTIMEZONE -BEGIN:VEVENT -DTSTAMP:19980309T231000Z -UID:guid-1.host1.com -ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com -ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP:MAILTO:employee-A@host.com -ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP:mailto:Employee-B@HOST.com -ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP:MailTo:Eric@Agony.Qualcomm.com -DESCRIPTION:Project XYZ Review Meeting -CATEGORIES:MEETING -CLASS:PUBLIC -CREATED:19980309T130000Z -SUMMARY:XYZ Project Review -DTSTAR;TZID=US-Eastern:19980312T083000 -DTEND;TZID=US-Eastern:19980312T093000 -LOCATION:1CP Conference -Room 4350 -END:VEVENT -END:VCALENDAR - diff --git a/libical/test-data/1.1 b/libical/test-data/1.1 deleted file mode 100644 index a7c92c33bd..0000000000 --- a/libical/test-data/1.1 +++ /dev/null @@ -1,13 +0,0 @@ -BEGIN:VCALENDAR -DURATION:P15DT5H0M20S -DURATION:P7W -URL;CN=John Smith:http://example.com/urivalue.html -X-SKI-TITLE;RSVP=TRUE: This is an extension property -SUMMARY:"No Property" -SUMMARY;RSVP=TRUE;RSVP=FALSE:Calendaring Interoperability Planning Meeting -SUMMARY;ALTREP=This is an xname:altrep -SUMMARY;CUTYPE=DESCRIPTION is a keyword:Xname parameter -DTEND:19990605 -DTSTART:19990605T103012 -CATEGORIES;RSVP=TRUE;RSVP=FALSE:one,two -END:VCALENDAR diff --git a/libical/test-data/2 b/libical/test-data/2 deleted file mode 100644 index 50ba609ab3..0000000000 --- a/libical/test-data/2 +++ /dev/null @@ -1,22 +0,0 @@ -BEGIN:VCALENDAR -METHOD:xyz -VERSION:2.0 -PRODID:-//ABC Corporation//NONSGML - My Product//EN -BEGIN:VEVENT -DTSTAMP:19970324T1200Z -SEQUENCE:0 -UID:uid3@host1.com -ORGANIZER:MAILTO:jdoe@host1.com -ATTENDEE;RSVP=TRUE:MAILTO:jsmith@host1.com -DTSTART:19970324T123000Z -DTEND:19970324T210000Z -CATEGORIES:MEETING,PROJECT -CLASS:PUBLIC -SUMMARY:Calendaring Interoperability Planning Meeting -DESCRIPTION:Discuss how we can test c&s interoperability\n - using iCalendar and other IETF standards. -LOCATION:LDB Lobby -ATTACH;FMTTYPE=application/postscript:ftp://xyzCorp.com/pub/conf/bkgrnd.ps -END:VEVENT -END:VCALENDAR diff --git a/libical/test-data/2445.ics b/libical/test-data/2445.ics deleted file mode 100644 index f225f26331..0000000000 --- a/libical/test-data/2445.ics +++ /dev/null @@ -1,321 +0,0 @@ -BEGIN:VCALENDAR -VERSION:2.0 -PRODID:-//hacksw/handcal//NONSGML v1.0//EN -BEGIN:VEVENT -DTSTART:19970714T170000Z -DTEND:19970715T035959Z -SUMMARY:Bastille Day Party -END:VEVENT -END:VCALENDAR - -BEGIN:VEVENT -UID:19970901T130000Z-123401@host.com -DTSTAMP:19970901T1300Z -DTSTART:19970903T163000Z -DTEND:19970903T190000Z -SUMMARY:Annual Employee Review -CLASS:PRIVATE -CATEGORIES:BUSINESS,HUMAN RESOURCES -END:VEVENT - -BEGIN:VEVENT -UID:19970901T130000Z-123402@host.com -DTSTAMP:19970901T1300Z -DTSTART:19970401T163000Z -DTEND:19970402T010000Z -SUMMARY:Laurel is in sensitivity awareness class. -CLASS:PUBLIC -CATEGORIES:BUSINESS,HUMAN RESOURCES -TRANSP:TRANSPARENT -END:VEVENT - -BEGIN:VEVENT -UID:19970901T130000Z-123403@host.com -DTSTAMP:19970901T1300Z -DTSTART:19971102 -SUMMARY:Our Blissful Anniversary -CLASS:CONFIDENTIAL -CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION -RRULE:FREQ=YEARLY -END:VEVENT - -BEGIN:VTODO -UID:19970901T130000Z-123404@host.com -DTSTAMP:19970901T1300Z -DTSTART:19970415T133000Z -DUE:19970416T045959Z -SUMMARY:1996 Income Tax Preparation -CLASS:CONFIDENTIAL -CATEGORIES:FAMILY,FINANCE -PRIORITY:1 -STATUS:NEEDS-ACTION -END:VTODO -BEGIN:VJOURNAL -UID:19970901T130000Z-123405@host.com -DTSTAMP:19970901T1300Z -DTSTART;VALUE=DATE:19970317 -SUMMARY:Staff meeting minutes -DESCRIPTION:1. Staff meeting: Participants include Joe\, Lisa - and Bob. Aurora project plans were reviewed. There is currently - no budget reserves for this project. Lisa will escalate to - management. Next meeting on Tuesday.\n - 2. Telephone Conference: ABC Corp. sales representative called - to discuss new printer. Promised to get us a demo by Friday.\n - 3. Henry Miller (Handsoff Insurance): Car was totaled by tree. - Is looking into a loaner car. 654-2323 (tel). -END:VJOURNAL -BEGIN:VFREEBUSY -ORGANIZER:MAILTO:jane_doe@host1.com -ATTENDEE:MAILTO:john_public@host2.com -DTSTART:19971015T050000Z -DTEND:19971016T050000Z -DTSTAMP:19970901T083000Z -END:VFREEBUSY -BEGIN:VFREEBUSY -ORGANIZER:MAILTO:jane_doe@host1.com -ATTENDEE:MAILTO:john_public@host2.com -DTSTAMP:19970901T100000Z -FREEBUSY;VALUE=PERIOD:19971015T050000Z/PT8H30M, - 19971015T160000Z/PT5H30M,19971015T223000Z/PT6H30M -URL:http://host2.com/pub/busy/jpublic-01.ifb -COMMENT:This iCalendar file contains busy time information for - the next three months. -END:VFREEBUSY -BEGIN:VFREEBUSY -ORGANIZER:jsmith@host.com -DTSTART:19980313T141711Z -DTEND:19980410T141711Z -FREEBUSY:19980314T233000Z/19980315T003000Z -FREEBUSY:19980316T153000Z/19980316T163000Z -FREEBUSY:19980318T030000Z/19980318T040000Z -URL:http://www.host.com/calendar/busytime/jsmith.ifb -END:VFREEBUSY -BEGIN:VTIMEZONE -TZID:US-Eastern -LAST-MODIFIED:19870101T000000Z -BEGIN:STANDARD -DTSTART:19971026T020000 -RDATE:19971026T020000 -TZOFFSETFROM:-0400 -TZOFFSETTO:-0500 -TZNAME:EST -END:STANDARD -BEGIN:DAYLIGHT -DTSTART:19971026T020000 -RDATE:19970406T020000 -TZOFFSETFROM:-0500 -TZOFFSETTO:-0400 -TZNAME:EDT -END:DAYLIGHT -END:VTIMEZONE -BEGIN:VTIMEZONE -TZID:US-Eastern -LAST-MODIFIED:19870101T000000Z -TZURL:http://zones.stds_r_us.net/tz/US-Eastern -BEGIN:STANDARD -DTSTART:19671029T020000 -RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 -TZOFFSETFROM:-0400 -TZOFFSETTO:-0500 -TZNAME:EST -END:STANDARD -BEGIN:DAYLIGHT -DTSTART:19870405T020000 -RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 -TZOFFSETFROM:-0500 -TZOFFSETTO:-0400 -TZNAME:EDT -END:DAYLIGHT -END:VTIMEZONE -BEGIN:VTIMEZONE -TZID:US--Fictitious-Eastern -LAST-MODIFIED:19870101T000000Z -BEGIN:STANDARD -DTSTART:19671029T020000 -RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 -TZOFFSETFROM:-0400 -TZOFFSETTO:-0500 -TZNAME:EST -END:STANDARD -BEGIN:DAYLIGHT -DTSTART:19870405T020000 -RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z -TZOFFSETFROM:-0500 -TZOFFSETTO:-0400 -TZNAME:EDT -END:DAYLIGHT -END:VTIMEZONE -BEGIN:VTIMEZONE -TZID:US--Fictitious-Eastern -LAST-MODIFIED:19870101T000000Z -BEGIN:STANDARD -DTSTART:19671029T020000 -RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 -TZOFFSETFROM:-0400 -TZOFFSETTO:-0500 -TZNAME:EST -END:STANDARD -BEGIN:DAYLIGHT -DTSTART:19870405T020000 -RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z -TZOFFSETFROM:-0500 -TZOFFSETTO:-0400 -TZNAME:EDT -END:DAYLIGHT -BEGIN:DAYLIGHT -DTSTART:19990424T020000 -RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=4 -TZOFFSETFROM:-0500 -TZOFFSETTO:-0400 -TZNAME:EDT -END:DAYLIGHT -END:VTIMEZONE -BEGIN:VALARM -TRIGGER;VALUE=DATE-TIME:19970317T133000Z -REPEAT:4 -DURATION:PT15M -ACTION:AUDIO -ATTACH;FMTTYPE=audio/basic:ftp://host.com/pub/sounds/bell-01.aud -END:VALARM -BEGIN:VALARM -TRIGGER:-PT30M -REPEAT:2 -DURATION:PT15M -ACTION:DISPLAY -DESCRIPTION:Breakfast meeting with executive\n - team at 8:30 AM EST. -END:VALARM -BEGIN:VALARM -TRIGGER:-P2D -ACTION:EMAIL -ATTENDEE:MAILTO:john_doe@host.com -SUMMARY:*** REMINDER: SEND AGENDA FOR WEEKLY STAFF MEETING *** -DESCRIPTION:A draft agenda needs to be sent out to the attendees - to the weekly managers meeting (MGR-LIST). Attached is a - pointer the document template for the agenda file. -ATTACH;FMTTYPE=application/binary:http://host.com/templates/agen - da.doc -END:VALARM -BEGIN:VALARM -TRIGGER;VALUE=DATE-TIME:19980101T050000Z -REPEAT:23 -DURATION:PT1H -ACTION:PROCEDURE -ATTACH;FMTTYPE=application/binary:ftp://host.com/novo- - procs/felizano.exe -END:VALARM -BEGIN:VCALENDAR -PRODID:-//RDU Software//NONSGML HandCal//EN -VERSION:2.0 -BEGIN:VTIMEZONE -TZID:US-Eastern -BEGIN:STANDARD -DTSTART:19981025T020000 -RDATE:19981025T020000 -TZOFFSETFROM:-0400 -TZOFFSETTO:-0500 -TZNAME:EST -END:STANDARD -BEGIN:DAYLIGHT -DTSTART:19990404T020000 -RDATE:19990404T020000 -TZOFFSETFROM:-0500 -TZOFFSETTO:-0400 -TZNAME:EDT -END:DAYLIGHT -END:VTIMEZONE -BEGIN:VEVENT -DTSTAMP:19980309T231000Z -UID:guid-1.host1.com -ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com -ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP: - MAILTO:employee-A@host.com -DESCRIPTION:Project XYZ Review Meeting -CATEGORIES:MEETING -CLASS:PUBLIC -CREATED:19980309T130000Z -SUMMARY:XYZ Project Review -DTSTART;TZID=US-Eastern:19980312T083000 -DTEND;TZID=US-Eastern:19980312T093000 -LOCATION:1CP Conference Room 4350 -END:VEVENT -END:VCALENDAR -BEGIN:VCALENDAR -METHOD:PUBLISH -VERSION:2.0 -PRODID:-//ABC Corporation//NONSGML My Product//EN -BEGIN:VEVENT -DTSTAMP:19970324T1200Z -SEQUENCE:0 -UID:uid3@host1.com -ORGANIZER:MAILTO:jdoe@host1.com -DTSTART:19970324T123000Z -DTEND:19970324T210000Z -CATEGORIES:MEETING,PROJECT -CLASS:PUBLIC -SUMMARY:Calendaring Interoperability Planning Meeting -DESCRIPTION:Discuss how we can test c&s interoperability\n - using iCalendar and other IETF standards. -LOCATION:LDB Lobby -ATTACH;FMTTYPE=application/postscript:ftp://xyzCorp.com/pub/ - conf/bkgrnd.ps -END:VEVENT -END:VCALENDAR -BEGIN:VCALENDAR -VERSION:2.0 -PRODID:-//ABC Corporation//NONSGML My Product//EN -BEGIN:VTODO -DTSTAMP:19980130T134500Z -SEQUENCE:2 -UID:uid4@host1.com -ORGANIZER:MAILTO:unclesam@us.gov -ATTENDEE;PARTSTAT=ACCEPTED:MAILTO:jqpublic@host.com -DUE:19980415T235959 -STATUS:NEEDS-ACTION -SUMMARY:Submit Income Taxes -BEGIN:VALARM -ACTION:AUDIO -TRIGGER:19980403T120000 -ATTACH;FMTTYPE=audio/basic:http://host.com/pub/audio- - files/ssbanner.aud -REPEAT:4 -DURATION:PT1H -END:VALARM -END:VTODO -END:VCALENDAR -BEGIN:VCALENDAR -VERSION:2.0 -PRODID:-//ABC Corporation//NONSGML My Product//EN -BEGIN:VJOURNAL -DTSTAMP:19970324T120000Z -UID:uid5@host1.com -ORGANIZER:MAILTO:jsmith@host.com -STATUS:DRAFT -CLASS:PUBLIC -CATEGORIES:Project Report, XYZ, Weekly Meeting -DESCRIPTION:Project xyz Review Meeting Minutes\n - Agenda\n1. Review of project version 1.0 requirements.\n2. - Definition - of project processes.\n3. Review of project schedule.\n - Participants: John Smith\, Jane Doe\, Jim Dandy\n-It was - decided that the requirements need to be signed off by - product marketing.\n-Project processes were accepted.\n - -Project schedule needs to account for scheduled holidays - and employee vacation time. Check with HR for specific - dates.\n-New schedule will be distributed by Friday.\n- - Next weeks meeting is cancelled. No meeting until 3/23. -END:VJOURNAL -END:VCALENDAR -BEGIN:VCALENDAR -VERSION:2.0 -PRODID:-//RDU Software//NONSGML HandCal//EN -BEGIN:VFREEBUSY -ORGANIZER:MAILTO:jsmith@host.com -DTSTART:19980313T141711Z -DTEND:19980410T141711Z -FREEBUSY:19980314T233000Z/19980315T003000Z -FREEBUSY:19980316T153000Z/19980316T163000Z -FREEBUSY:19980318T030000Z/19980318T040000Z -URL:http://www.host.com/calendar/busytime/jsmith.ifb -END:VFREEBUSY -END:VCALENDAR diff --git a/libical/test-data/2446.ics b/libical/test-data/2446.ics deleted file mode 100644 index 0f816efeba..0000000000 --- a/libical/test-data/2446.ics +++ /dev/null @@ -1,998 +0,0 @@ - -BEGIN:VCALENDAR -METHOD:PUBLISH -PRODID:-//ACME/DesktopCalendar//EN -VERSION:2.0 -BEGIN:VEVENT -ORGANIZER:mailto:a@example.com -DTSTART:19970701T200000Z -DTSTAMP:19970611T190000Z -SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES -UID:0981234-1234234-23@example.com -END:VEVENT -END:VCALENDAR - -BEGIN:VCALENDAR -METHOD:PUBLISH -VERSION:2.0 -PRODID:-//ACME/DesktopCalendar//EN -BEGIN:VEVENT -ORGANIZER:mailto:a@example.com -DTSTAMP:19970612T190000Z -DTSTART:19970701T210000Z -DTEND:19970701T230000Z -SEQUENCE:1 -UID:0981234-1234234-23@example.com -SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES -END:VEVENT -END:VCALENDAR -BEGIN:VCALENDAR -METHOD:CANCEL -VERSION:2.0 -PRODID:-//ACME/DesktopCalendar//EN -BEGIN:VEVENT -ORGANIZER:mailto:a@example.com -COMMENT:DUKES forfeit the game -SEQUENCE:2 -UID:0981234-1234234-23@example.com -DTSTAMP:19970613T190000Z -END:VEVENT -END:VCALENDAR -BEGIN:VCALENDAR -PRODID:-//ACME/DesktopCalendar//EN -METHOD:PUBLISH -CALSCALE:GREGORIAN -VERSION:2.0 -BEGIN:VTIMEZONE -TZID:America-Chicago -TZURL:http://zones.stds_r_us.net/tz/America-Chicago -BEGIN:STANDARD -DTSTART:19671029T020000 -RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 -TZOFFSETFROM:-0500 -TZOFFSETTO:-0600 -TZNAME:CST -END:STANDARD -BEGIN:DAYLIGHT -DTSTART:19870405T020000 -RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 -TZOFFSETFROM:-0600 -TZOFFSETTO:-0500 -TZNAME:CDT -END:DAYLIGHT -END:VTIMEZONE -BEGIN:VEVENT -ORGANIZER:mailto:a@example.com -ATTACH:http://www.dukes.com/ -CATEGORIES:SPORTS EVENT,ENTERTAINMENT -CLASS:PRIVATE -DESCRIPTION:MIDWAY STADIUM\n - Big time game. MUST see.\n - Expected duration:2 hours\n -DTEND;TZID=America-Chicago:19970701T180000 -DTSTART;TZID=America-Chicago:19970702T160000 -DTSTAMP:19970614T190000Z -STATUS:CONFIRMED -LOCATION;VALUE=URI:http://www.midwaystadium.com/ -PRIORITY:2 -RESOURCES:SCOREBOARD -SEQUENCE:3 -SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES -UID:0981234-1234234-23@example.com -RELATED-TO:0981234-1234234-14@example.com -BEGIN:VALARM -TRIGGER:-PT2H -ACTION:DISPLAY -DESCRIPTION:You should be leaving for the game now. -END:VALARM -BEGIN:VALARM -TRIGGER:-PT30M -ACTION:AUDIO -END:VALARM -END:VEVENT -END:VCALENDAR -BEGIN:VCALENDAR -PRODID:-//ACME/DesktopCalendar//EN -METHOD:PUBLISH -VERSION:2.0 -BEGIN:VEVENT -ORGANIZER:mailto:a@example.com -DTSTAMP:19970614T190000Z -UID:0981234-1234234-23@example.com -DTSTART;VALUE=DATE:19970714 -RRULE:FREQ=YEARLY;INTERVAL=1 -SUMMARY: Bastille Day -END:VEVENT -END:VCALENDAR -BEGIN:VCALENDAR -PRODID:-//ACME/DesktopCalendar//EN -METHOD:REQUEST -VERSION:2.0 -BEGIN:VEVENT -ORGANIZER:Mailto:A@example.com -ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=BIG A:Mailto:A@example.com -ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:Mailto:B@example.com -ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=C:Mailto:C@example.com -ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com -ATTENDEE;RSVP=FALSE;CUTYPE=ROOM:conf_Big@example.com -ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com -DTSTAMP:19970611T190000Z -DTSTART:19970701T200000Z -DTEND:19970701T2000000Z -SUMMARY:Conference -UID:calsrv.example.com-873970198738777@example.com -SEQUENCE:0 -STATUS:CONFIRMED -END:VEVENT -END:VCALENDAR -BEGIN:VCALENDAR -PRODID:-//ACME/DesktopCalendar//EN -METHOD:REPLY -VERSION:2.0 -BEGIN:VEVENT -ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com -ORGANIZER:MAILTO:A@example.com -UID:calsrv.example.com-873970198738777@example.com -SEQUENCE:0 -REQUEST-STATUS:2.0;Success -DTSTAMP:19970612T190000Z -END:VEVENT -END:VCALENDAR -BEGIN:VCALENDAR -PRODID:-//ACME/DesktopCalendar//EN -METHOD:REQUEST -VERSION:2.0 -BEGIN:VEVENT -ORGANIZER:Mailto:A@example.com -ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com -ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com -ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com -ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com -ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE; - CUTYPE=ROOM:Mailto:Conf@example.com -ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com -DTSTART:19970701T180000Z -DTEND:19970701T190000Z -SUMMARY:Phone Conference -UID:calsrv.example.com-873970198738777@example.com -SEQUENCE:1 -DTSTAMP:19970613T190000Z -STATUS:CONFIRMED -END:VEVENT -END:VCALENDAR -BEGIN:VCALENDAR -PRODID:-//ACME/DesktopCalendar//EN -METHOD:REQUEST -VERSION:2.0 -BEGIN:VEVENT -ORGANIZER:Mailto:A@example.com -ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com -ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com -ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com -DTSTART:19970701T190000Z -DTEND:19970701T200000Z -SUMMARY:Discuss the Merits of the election results -LOCATION:Green Conference Room -UID:calsrv.example.com-873970198738777a@example.com -SEQUENCE:0 -DTSTAMP:19970611T190000Z -STATUS:CONFIRMED -END:VEVENT -END:VCALENDAR -BEGIN:VCALENDAR -PRODID:-//ACME/DesktopCalendar//EN -METHOD:COUNTER -VERSION:2.0 -BEGIN:VEVENT -ORGANIZER:Mailto:A@example.com -ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com -ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com -ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com -DTSTART:19970701T160000Z -DTEND:19970701T190000Z -DTSTAMP:19970612T190000Z -SUMMARY:Discuss the Merits of the election results -LOCATION:Green Conference Room -COMMENT:This time works much better and I think the big conference - room is too big -UID:calsrv.example.com-873970198738777a@example.com -SEQUENCE:0 -END:VEVENT -END:VCALENDAR -BEGIN:VCALENDAR -PRODID:-//ACME/DesktopCalendar//EN -METHOD:REQUEST -VERSION:2.0 -BEGIN:VEVENT -ORGANIZER:Mailto:A@example.com -ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com -ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com -ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com -DTSTAMP:19970613T190000Z -DTSTART:19970701T160000Z -DTEND:19970701T190000Z -SUMMARY:Discuss the Merits of the election results - changed to - meet B's schedule -LOCATION:Green Conference Room -UID:calsrv.example.com-873970198738777@example.com -SEQUENCE:1 -STATUS:CONFIRMED -END:VEVENT -END:VCALENDAR -BEGIN:VCALENDAR -PRODID:-//ACME/DesktopCalendar//EN -METHOD:DECLINECOUNTER -VERSION:2.0 -BEGIN:VEVENT -ORGANIZER:Mailto:A@example.com -COMMENT:Sorry\, I cannot change this meeting time -UID:calsrv.example.com-873970198738777@example.com -DTSTAMP:19970614T190000Z -END:VEVENT -END:VCALENDAR -BEGIN:VCALENDAR -PRODID:-//ACME/DesktopCalendar//EN -METHOD:REPLY -VERSION:2.0 -BEGIN:VEVENT -ORGANIZER:MAILTO:A@Example.com -ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- - TO="Mailto:E@example.com":Mailto:C@example.com -UID:calsrv.example.com-873970198738777@example.com -SEQUENCE:0 -REQUEST-STATUS:2.0;Success -DTSTAMP:19970611T190000Z -END:VEVENT -END:VCALENDAR -BEGIN:VCALENDAR -PRODID:-//ACME/DesktopCalendar//EN -METHOD:REQUEST -VERSION:2.0 -BEGIN:VEVENT -ORGANIZER:Mailto:A@example.com -ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- - TO="Mailto:E@example.com":Mailto:C@example.com -ATTENDEE;RSVP=TRUE; - DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com -DTSTART:19970701T180000Z -DTEND:19970701T200000Z -SUMMARY:Phone Conference -UID:calsrv.example.com-873970198738777@example.com -SEQUENCE:0 -STATUS:CONFIRMED -DTSTAMP:19970611T190000Z -END:VEVENT -END:VCALENDAR -BEGIN:VCALENDAR -PRODID:-//ACME/DesktopCalendar//EN -METHOD:REPLY -VERSION:2.0 -BEGIN:VEVENT -ORGANIZER:MAILTO:A@Example.com -ATTENDEE;PARTSTAT=ACCEPTED;DELEGATED- - FROM="Mailto:C@example.com":Mailto:E@example.com -UID:calsrv.example.com-873970198738777@example.com -SEQUENCE:0 -REQUEST-STATUS:2.0;Success -DTSTAMP:19970614T190000Z -END:VEVENT -END:VCALENDAR -BEGIN:VCALENDAR -PRODID:-//ACME/DesktopCalendar//EN -METHOD:REPLY -VERSION:2.0 -BEGIN:VEVENT -ORGANIZER:MAILTO:A@Example.com -ATTENDEE;PARTSTAT=DELEGATED; - DELEGATED-TO="Mailto:E@example.com":Mailto:C@example.com -COMMENT:Sorry\, I will be out of town at that time. -UID:calsrv.example.com-873970198738777@example.com -SEQUENCE:0 -REQUEST-STATUS:2.0;Success -DTSTAMP:19970614T190000Z -END:VEVENT -END:VCALENDAR -BEGIN:VCALENDAR -PRODID:-//ACME/DesktopCalendar//EN -METHOD:REQUEST -VERSION:2.0 -BEGIN:VEVENT -ORGANIZER:MAILTO:A@Example.com -ATTENDEE;PARTSTAT=DECLINED; - DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com -ATTENDEE;RSVP=TRUE:Mailto:C@example.com -UID:calsrv.example.com-873970198738777@example.com -SEQUENCE:0 -SUMMARY:Phone Conference -DTSTART:19970701T180000Z -DTEND:19970701T200000Z -DTSTAMP:19970614T200000Z -COMMENT:DELEGATE (ATTENDEE Mailto:E@example.com) DECLINED YOUR - INVITATION -END:VEVENT -END:VCALENDAR -BEGIN:VCALENDAR -PRODID:-//ACME/DesktopCalendar//EN -METHOD:CANCEL -VERSION:2.0 -BEGIN:VEVENT -ORGANIZER:Mailto:A@example.com -ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:A@example.com -ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:B@example.com -ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com -ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com -COMMENT:Mr. B cannot attend. It's raining. Lets cancel. -UID:calsrv.example.com-873970198738777@example.com -SEQUENCE:1 -STATUS:CANCELLED -DTSTAMP:19970613T190000Z -END:VEVENT -END:VCALENDAR -BEGIN:VCALENDAR -PRODID:-//ACME/DesktopCalendar//EN -METHOD:CANCEL -VERSION:2.0 -BEGIN:VEVENT -ORGANIZER:Mailto:A@example.com -ATTENDEE:mailto:B@example.com -COMMENT:You're off the hook for this meeting -UID:calsrv.example.com-873970198738777@example.com -DTSTAMP:19970613T193000Z -SEQUENCE:1 -END:VEVENT -END:VCALENDAR -BEGIN:VCALENDAR -PRODID:-//ACME/DesktopCalendar//EN -METHOD:REQUEST -VERSION:2.0 -BEGIN:VEVENT -ORGANIZER:Mailto:A@example.com -ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com -ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com -ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com -ATTENDEE;CUTYPE=ROOM:CR_Big@example.com -ATTENDEE;ROLE=NON-PARTICIPANT; - RSVP=FALSE:Mailto:E@example.com -DTSTAMP:19970611T190000Z -DTSTART:19970701T200000Z -DTEND:19970701T203000Z -SUMMARY:Phone Conference -UID:calsrv.example.com-873970198738777@example.com -SEQUENCE:2 -STATUS:CONFIRMED -END:VEVENT -END:VCALENDAR -BEGIN:VCALENDAR -PRODID:-//ACME/DesktopCalendar//EN -METHOD:REQUEST -VERSION:2.0 -BEGIN:VEVENT -ORGANIZER:Mailto:B@example.com -ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:B@example.com -ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com -ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com -DTSTAMP:19970611T190000Z -DTSTART:19970701T200000Z -DTEND:19970701T203000Z -RRULE:FREQ=WEEKLY -SUMMARY:Phone Conference -UID:123456@example.com -SEQUENCE:1 -STATUS:CONFIRMED -END:VEVENT -END:VCALENDAR -BEGIN:VCALENDAR -PRODID:-//ACME/DesktopCalendar//EN -VERSION:2.0 -METHOD:PUBLISH -BEGIN:VFREEBUSY -DTSTAMP:19980101T124100Z -ORGANIZER:MAILTO:A@Example.com -DTSTART:19980101T124200Z -DTEND:19980107T124200Z -FREEBUSY:19980101T180000Z/19980101T190000Z -FREEBUSY:19980103T020000Z/19980103T050000Z -FREEBUSY:19980107T020000Z/19980107T050000Z -FREEBUSY:19980113T000000Z/19980113T010000Z -FREEBUSY:19980115T190000Z/19980115T200000Z -FREEBUSY:19980115T220000Z/19980115T230000Z -FREEBUSY:19980116T013000Z/19980116T043000Z -END:VFREEBUSY -END:VCALENDAR -BEGIN:VCALENDAR -PRODID:-//ACME/DesktopCalendar//EN -METHOD:REQUEST -VERSION:2.0 -BEGIN:VFREEBUSY -ORGANIZER:Mailto:A@example.com -ATTENDEE;ROLE=CHAIR:Mailto:A@example.com -ATTENDEE:Mailto:B@example.com -ATTENDEE:Mailto:C@example.com -DTSTAMP:19970613T190000Z -DTSTART:19970701T080000Z -DTEND:19970701T200000 -UID:calsrv.example.com-873970198738777@example.com -END:VFREEBUSY -END:VCALENDAR -BEGIN:VCALENDAR -PRODID:-//ACME/DesktopCalendar//EN -METHOD:REPLY -VERSION:2.0 -BEGIN:VFREEBUSY -ORGANIZER:MAILTO:A@example.com -ATTENDEE:Mailto:B@example.com -DTSTART:19970701T080000Z -DTEND:19970701T200000Z -UID:calsrv.example.com-873970198738777@example.com -FREEBUSY:19970701T090000Z/PT1H,19970701T140000Z/PT30M -DTSTAMP:19970613T190030Z -END:VFREEBUSY -END:VCALENDAR -BEGIN:VCALENDAR -PRODID:-//ACME/DesktopCalendar//EN -METHOD:REQUEST -VERSION:2.0 -BEGIN:VTIMEZONE -TZID:America-SanJose -TZURL:http://zones.stds_r_us.net/tz/America-SanJose -BEGIN:STANDARD -DTSTART:19671029T020000 -RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 -TZOFFSETFROM:-0700 -TZOFFSETTO:-0800 -TZNAME:PST -END:STANDARD -BEGIN:DAYLIGHT -DTSTART:19870405T020000 -RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 -TZOFFSETFROM:-0800 -TZOFFSETTO:-0700 -TZNAME:PDT -END:DAYLIGHT -END:VTIMEZONE -BEGIN:VEVENT -ORGANIZER:Mailto:A@example.com -ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:A@example.COM -ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:B@example.fr -ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:c@example.jp -DTSTAMP:19970613T190030Z -DTSTART;TZID=America-SanJose:19970701T140000 -DTEND;TZID=America-SanJose:19970701T150000 -RRULE:FREQ=WEEKLY;INTERVAL=20;WKST=SU;BYDAY=TU -RDATE;TZID=America-SanJose:19970910T140000 -EXDATE;TZID=America-SanJose:19970909T140000 -EXDATE;TZID=America-SanJose:19971028T140000 -SUMMARY:Weekly Phone Conference -UID:calsrv.example.com-873970198738777@example.com -SEQUENCE:0 -STATUS:CONFIRMED -END:VEVENT -END:VCALENDAR -BEGIN:VCALENDAR -METHOD:REQUEST -PRODID:-//RDU Software//NONSGML HandCal//EN -VERSION:2.0 -BEGIN:VEVENT -UID:guid-1@host1.com -SEQUENCE:0 -RRULE:FREQ=MONTHLY;BYMONTHDAY=1;UNTIL=19980901T210000Z -ORGANIZER:Mailto:A@example.com -ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com -ATTENDEE:Mailto:B@example.com -ATTENDEE:Mailto:C@example.com -ATTENDEE:Mailto:D@example.com -DESCRIPTION:IETF-C&S Conference Call -CLASS:PUBLIC -SUMMARY:IETF Calendaring Working Group Meeting -DTSTART:19970601T210000Z -DTEND:19970601T220000Z -LOCATION:Conference Call -DTSTAMP:19970526T083000Z -STATUS:CONFIRMED -END:VEVENT -END:VCALENDAR -BEGIN:VCALENDAR -METHOD:REQUEST -PRODID:-//RDU Software//NONSGML HandCal//EN -VERSION:2.0 -BEGIN:VEVENT -UID:guid-1@host1com -RECURRENCE-ID:19970701T210000Z -SEQUENCE:1 -ORGANIZER:Mailto:A@example.com -ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com -ATTENDEE:Mailto:B@example.com -ATTENDEE:Mailto:C@example.com -ATTENDEE:Mailto:D@example.com -DESCRIPTION:IETF-C&S Conference Call -CLASS:PUBLIC -SUMMARY:IETF Calendaring Working Group Meeting -DTSTART:19970703T210000Z -DTEND:19970703T220000Z -LOCATION:Conference Call -DTSTAMP:19970626T093000Z -STATUS:CONFIRMED -END:VEVENT -END:VCALENDAR -BEGIN:VCALENDAR -METHOD:CANCEL -PRODID:-//RDU Software//NONSGML HandCal//EN -VERSION:2.0 -BEGIN:VEVENT -UID:guid-1@host1.com -ORGANIZER:Mailto:A@example.com -ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com -ATTENDEE:Mailto:B@example.com -ATTENDEE:Mailto:C@example.com -ATTENDEE:Mailto:D@example.com -RECURRENCE-ID:19970801T210000Z -SEQUENCE:2 -STATUS:CANCELLED -DTSTAMP:19970721T093000Z -END:VEVENT -END:VCALENDAR -BEGIN:VCALENDAR -METHOD:CANCEL -PRODID:-//RDU Software//NONSGML HandCal//EN -VERSION:2.0 -BEGIN:VEVENT -UID:guid-1@host1.com -ORGANIZER:Mailto:A@example.com -ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com -ATTENDEE:Mailto:B@example.com -ATTENDEE:Mailto:C@example.com -ATTENDEE:Mailto:D@example.com -DTSTAMP:19970721T103000Z -STATUS:CANCELLED -SEQUENCE:3 -END:VEVENT -END:VCALENDAR -BEGIN:VCALENDAR -METHOD:REQUEST -PRODID:-//RDU Software//NONSGML HandCal//EN -VERSION:2.0 -BEGIN:VEVENT -UID:guid-1@host1.com -RECURRENCE-ID;RANGE=THISANDFUTURE:19970901T210000Z -SEQUENCE:3 -ORGANIZER:Mailto:A@example.com -ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com -ATTENDEE;RSVP=TRUE:Mailto:B@example.com -ATTENDEE;RSVP=TRUE:Mailto:C@example.com -ATTENDEE;RSVP=TRUE:Mailto:D@example.com -DESCRIPTION:IETF-C&S Discussion -CLASS:PUBLIC -SUMMARY:IETF Calendaring Working Group Meeting -DTSTART:19970901T210000Z -DTEND:19970901T220000Z -LOCATION:Building 32\, Microsoft\, Seattle\, WA -DTSTAMP:19970526T083000Z -STATUS:CONFIRMED -END:VEVENT -END:VCALENDAR -BEGIN:VCALENDAR -METHOD:ADD -PRODID:-//RDU Software//NONSGML HandCal//EN -VERSION:2.0 -BEGIN:VEVENT -UID:123456789@host1.com -SEQUENCE:4 -ORGANIZER:Mailto:A@example.com -ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com -ATTENDEE;RSVP=TRUE:Mailto:B@example.com -ATTENDEE;RSVP=TRUE:Mailto:C@example.com -ATTENDEE;RSVP=TRUE:Mailto:D@example.com -DESCRIPTION:IETF-C&S Conference Call -CLASS:PUBLIC -SUMMARY:IETF Calendaring Working Group Meeting -DTSTART:19970715T210000Z -DTEND:19970715T220000Z -LOCATION:Conference Call -DTSTAMP:19970629T093000Z -STATUS:CONFIRMED -END:VEVENT -END:VCALENDAR -BEGIN:VCALENDAR -METHOD:REQUEST -PRODID:-//RDU Software//NONSGML HandCal//EN -VERSION:2.0 -BEGIN:VEVENT -UID:123456789@host1.com -SEQUENCE:0 -RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU -ORGANIZER:Mailto:A@example.com -ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com -ATTENDEE;RSVP=TRUE:Mailto:B@example.com -SUMMARY:Review Accounts -DTSTART:19980303T210000Z -DTEND:19980303T220000Z -LOCATION:The White Room -DTSTAMP:19980301T093000Z -STATUS:CONFIRMED -END:VEVENT -END:VCALENDAR -BEGIN:VCALENDAR -METHOD:ADD -PRODID:-//RDU Software//NONSGML HandCal//EN -VERSION:2.0 -BEGIN:VEVENT -UID:123456789@host1.com -SEQUENCE:7 -RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TH -ORGANIZER:Mailto:A@example.com -ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com -ATTENDEE;RSVP=TRUE:Mailto:B@example.com -SUMMARY:Review Accounts -DTSTART:19980303T210000Z -DTEND:19980303T220000Z -DTSTAMP:19980303T193000Z -LOCATION:The Usual conference room -STATUS:CONFIRMED -END:VEVENT -END:VCALENDAR -BEGIN:VCALENDAR -METHOD:REQUEST -PRODID:-//RDU Software//NONSGML HandCal//EN -VERSION:2.0 -BEGIN:VEVENT -UID:123456789@host1.com -SEQUENCE:7 -RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU,TH -ORGANIZER:Mailto:A@example.com -ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com -ATTENDEE;RSVP=TRUE:Mailto:B@example.com -SUMMARY:Review Accounts -DTSTART:19980303T210000Z -DTEND:19980303T220000Z -DTSTAMP:19980303T193000Z -LOCATION:The White Room -STATUS:CONFIRMED -END:VEVENT -END:VCALENDAR -BEGIN:VCALENDAR -METHOD:REQUEST -PRODID:-//RDU Software//NONSGML HandCal//EN -VERSION:2.0 -BEGIN:VEVENT -UID:123456789@host1.com -SEQUENCE:0 -RDATE:19980304T180000Z -RDATE:19980311T180000Z -RDATE:19980318T180000Z -ORGANIZER:Mailto:A@example.com -ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com -ATTENDEE;RSVP=TRUE:Mailto:B@example.com -SUMMARY:Review Accounts -DTSTART:19980304T180000Z -DTEND:19980304T200000Z -DTSTAMP:19980303T193000Z -LOCATION:Conference Room A -STATUS:CONFIRMED -END:VEVENT -END:VCALENDAR -BEGIN:VCALENDAR -METHOD:REQUEST -PRODID:-//RDU Software//NONSGML HandCal//EN -VERSION:2.0 -BEGIN:VEVENT -UID:123456789@host1.com -SEQUENCE:1 -RECURRENCE-ID:19980311T180000Z -ORGANIZER:Mailto:A@example.com -ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com -ATTENDEE;RSVP=TRUE:Mailto:B@example.com -SUMMARY:Review Accounts -DTSTART:19980311T160000Z -DTEND:19980311T180000Z -DTSTAMP:19980306T193000Z -LOCATION:The Small conference room -STATUS:CONFIRMED -END:VEVENT -END:VCALENDAR -BEGIN:VCALENDAR -METHOD:ADD -PRODID:-//RDU Software//NONSGML HandCal//EN -VERSION:2.0 -BEGIN:VEVENT -UID:123456789@host1.com -SEQUENCE:2 -ORGANIZER:Mailto:A@example.com -ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com -ATTENDEE;RSVP=TRUE:Mailto:B@example.com -SUMMARY:Review Accounts -DTSTART:19980315T180000Z -DTEND:19980315T200000Z -DTSTAMP:19980307T193000Z -LOCATION:Conference Room A -STATUS:CONFIRMED -END:VEVENT -END:VCALENDAR -BEGIN:VCALENDAR -METHOD:REQUEST -PRODID:-//RDU Software//NONSGML HandCal//EN -VERSION:2.0 -BEGIN:VEVENT -UID:123456789@host1.com -SEQUENCE:2 -RDATE:19980304T180000Z -RDATE:19980311T160000Z -RDATE:19980315T180000Z -ORGANIZER:Mailto:A@example.com -ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com -ATTENDEE;RSVP=TRUE:Mailto:B@example.com -SUMMARY:Review Accounts -DTSTART:19980304T180000Z -DTEND:19980304T200000Z -DTSTAMP:19980303T193000Z -LOCATION:Conference Room A -STATUS:CONFIRMED -END:VEVENT -BEGIN:VEVENT -SEQUENCE:2 -RECURRENCE-ID:19980311T160000Z -ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com -ATTENDEE;RSVP=TRUE:Mailto:B@example.com -SUMMARY:Review Accounts -DTSTART:19980311T160000Z -DTEND:19980304T180000Z -DTSTAMP:19980306T193000Z -ORGANIZER:Mailto:A@example.com -LOCATION:The Small conference room -UID:guid-1@host1.com -STATUS:CONFIRMED -END:VEVENT -END:VCALENDAR -BEGIN:VCALENDAR -METHOD:COUNTER -PRODID:-//RDU Software//NONSGML HandCal//EN -VERSION:2.0 -BEGIN:VEVENT -UID:guid-1@host1.com -RECURRENCE-ID:19970715T210000Z -SEQUENCE:4 -ORGANIZER:Mailto:A@example.com -ATTENDEE;ROLE=CHAIR;RSVP=TRUE:Mailto:A@example.com -ATTENDEE;RSVP=TRUE:Mailto:B@example.com -ATTENDEE;RSVP=TRUE:Mailto:C@example.com -ATTENDEE;RSVP=TRUE:Mailto:D@example.com -DESCRIPTION:IETF-C&S Conference Call -CLASS:PUBLIC -SUMMARY:IETF Calendaring Working Group Meeting -DTSTART:19970715T220000Z -DTEND:19970715T230000Z -LOCATION:Conference Call -COMMENT:May we bump this by an hour? I have a conflict -DTSTAMP:19970629T094000Z -END:VEVENT -END:VCALENDAR -BEGIN:VCALENDAR -METHOD:REQUEST -PRODID:-//RDU Software//NONSGML HandCal//EN -VERSION:2.0 -BEGIN:VEVENT -UID:guid-1@host1.com -SEQUENCE:0 -RRULE:FREQ=MONTHLY;BYMONTHDAY=1 -ORGANIZER:Mailto:A@example.com -ATTENDEE;ROLE=CHAIR:Mailto:A@example.com -ATTENDEE;RSVP=TRUE:Mailto:B@example.com -ATTENDEE;RSVP=TRUE:Mailto:C@example.com -ATTENDEE;RSVP=TRUE:Mailto:D@example.com -DESCRIPTION:IETF-C&S Conference Call -CLASS:PUBLIC -SUMMARY:IETF Calendaring Working Group Meeting -DTSTART:19970601T210000Z -DTEND:19970601T220000Z -DTSTAMP:19970602T094000Z -LOCATION:Conference Call -STATUS:CONFIRMED -END:VEVENT -END:VCALENDAR -BEGIN:VCALENDAR -PRODID:-//RDU Software//NONSGML HandCal//EN -METHOD:REPLY -VERSION:2.0 -BEGIN:VEVENT -ORGANIZER:Mailto:A@example.com -ATTENDEE:Mailto:B@example.com -REQUEST-STATUS:2.8;Repeating event ignored. Scheduled as a single - event;RRULE -REQUEST-STATUS:3.0;Invalid Property Name;FOO -UID:guid-1@host1.com -SEQUENCE:0 -DTSTAMP:19970603T094000Z -END:VEVENT -END:VCALENDAR -BEGIN:VCALENDAR -PRODID:-//ACME/DesktopCalendar//EN -METHOD:REQUEST -VERSION:2.0 -BEGIN:VTODO -ORGANIZER:Mailto:A@example.com -ATTENDEE;ROLE=CHAIR:Mailto:A@example.com -ATTENDEE;RSVP=TRUE:Mailto:B@example.com -ATTENDEE;RSVP=TRUE:Mailto:C@example.com -ATTENDEE;RSVP=TRUE:Mailto:D@example.com -DTSTART:19970701T170000Z -DUE:19970722T170000Z -PRIORITY:1 -SUMMARY:Create the requirements document -UID:calsrv.example.com-873970198738777-00@example.com -SEQUENCE:0 -DTSTAMP:19970717T200000Z -STATUS:Needs Action -END:VTODO -END:VCALENDAR -BEGIN:VCALENDAR -PRODID:-//ACME/DesktopCalendar//EN -METHOD:REPLY -VERSION:2.0 -BEGIN:VTODO -ORGANIZER:Mailto:A@example.com -ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com -UID:calsrv.example.com-873970198738777-00@example.com -COMMENT:I'll send you my input by e-mail -SEQUENCE:0 -DTSTAMP:19970717T203000Z -REQUEST-STATUS:2.0;Success -END:VTODO -END:VCALENDAR -BEGIN:VCALENDAR -PRODID:-//ACME/DesktopCalendar//EN -METHOD:REQUEST -VERSION:2.0 -BEGIN:VTODO -ORGANIZER:Mailto:A@example.com -ATTENDEE;ROLE=CHAIR:Mailto:A@example.com -ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com -ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com -UID:calsrv.example.com-873970198738777-00@example.com -SUMMARY:Create the requirements document -PRIORITY:1 -SEQUENCE:0 -STATUS:IN-PROCESS -DTSTART:19970701T170000Z -DTSTAMP:19970717T230000Z -END:VTODO -END:VCALENDAR -BEGIN:VCALENDAR -PRODID:-//ACME/DesktopCalendar//EN -METHOD:REPLY -VERSION:2.0 -BEGIN:VTODO -ORGANIZER:MAILTO:A@example.com -ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com -PERCENT-COMPLETE:75 -REQUEST-STATUS:2.0 -UID:calsrv.example.com-873970198738777-00@example.com -DTSTAMP:19970717T233000Z -SEQUENCE:0 -END:VTODO -END:VCALENDAR -BEGIN:VCALENDAR -PRODID:-//ACME/DesktopCalendar//EN -METHOD:REPLY -VERSION:2.0 -BEGIN:VTODO -ORGANIZER:MAILTO:A@example.com -ATTENDEE;PARTSTAT=COMPLETED:Mailto:D@example.com -UID:calsrv.example.com-873970198738777-00@example.com -REQUEST-STATUS:2.0 -DTSTAMP:19970717T233000Z -SEQUENCE:0 -END:VTODO -END:VCALENDAR -BEGIN:VCALENDAR -PRODID:-//ACME/DesktopCalendar//EN -METHOD:REQUEST -VERSION:2.0 -BEGIN:VTODO -ORGANIZER:Mailto:A@example.com -ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com -ATTENDEE;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:Mailto:B@example.com -ATTENDEE;PARTSTAT=IN-PROCESS;CUTYPE=INDIVIDUAL:Mailto:D@example.com -DTSTART:19970701T170000Z -DUE:19970722T170000Z -PRIORITY:1 -SUMMARY:Create the requirements document -UID:calsrv.example.com-873970198738777-00@example.com -SEQUENCE:1 -DTSTAMP:19970718T100000Z -STATUS:IN-PROGRESS -PERCENT-COMPLETE:40 -END:VTODO -END:VCALENDAR -BEGIN:VCALENDAR -PRODID:-//ACME/DesktopCalendar//EN -METHOD:REQUEST -VERSION:2.0 -BEGIN:VTODO -ORGANIZER:Mailto:A@example.com -ATTENDEE;ROLE=CHAIR:Mailto:A@example.com -ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com -ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com -RRULE:FREQ=MONTHLY;COUNT=10;BYDAY=1FR -DTSTART:19980101T100000 -DUE:19980103T100000 -SUMMARY:Send Status Reports to Area Managers -UID:calsrv.example.com-873970198738777-00@example.com -SEQUENCE:0 -DTSTAMP:19970717T200000Z -STATUS:NEEDS-ACTION -PRIORITY:1 -END:VTODO -END:VCALENDAR -BEGIN:VCALENDAR -PRODID:-//ACME/DesktopCalendar//EN -METHOD:REPLY -VERSION:2.0 -BEGIN:VTODO -ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com -PERCENT-COMPLETE:75 -UID:calsrv.example.com-873970198738777-00@example.com -DTSTAMP:19970717T233000Z -RECURRENCE-ID:19980101T170000Z -SEQUENCE:1 -ORGANIZER:MAILTO:A@Example.com -REQUEST-STATUS:2.0 -END:VTODO -END:VCALENDAR -BEGIN:VCALENDAR -METHOD:PUBLISH -PRODID:-//ACME/DesktopCalendar//EN -VERSION:2.0 -BEGIN:VJOURNAL -DTSTART:19971002T200000Z -DTSTAMP:19971002T200000Z -ORGANIZER:MAILTO:A@Example.com -SUMMARY:Phone conference minutes -DESCRIPTION:The editors meeting was held on October 1\, 1997. - Details are in the attached document. -UID:0981234-1234234-2410@example.com -RELATED-TO:0981234-1234234-2402-35@example.com -ATTACH:ftp://ftp.example.com/pub/ed/minutes100197.txt -END:VJOURNAL -END:VCALENDAR -BEGIN:VCALENDAR -PRODID:-//RDU Software//NONSGML HandCal//EN -METHOD:REFRESH -VERSION:2.0 -BEGIN:VEVENT -ORGANIZER:Mailto:A@example.com -ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com -UID: guid-1-12345@host1.com -DTSTAMP:19970603T094000 -END:VEVENT -END:VCALENDAR -BEGIN:VCALENDAR -METHOD:REQUEST -PRODID:-//RDU Software//NONSGML HandCal//EN -VERSION:2.0 -BEGIN:VEVENT -UID:acme-12345@host1.com -SEQUENCE:3 -RRULE:FREQ=WEEKLY -RDATE;VALUE=PERIOD:19970819T210000Z/199700819T220000Z -ORGANIZER:Mailto:A@example.com -ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com -ATTENDEE:Mailto:B@example.com -DESCRIPTION:IETF-C&S Conference Call -SUMMARY:IETF Calendaring Working Group Meeting -DTSTART:19970801T210000Z -DTEND:19970801T220000Z -RECURRENCE-ID:19970809T210000Z -DTSTAMP:19970726T083000 -STATUS:CONFIRMED -END:VEVENT -END:VCALENDAR -BEGIN:VCALENDAR -PRODID:-//RDU Software//NONSGML HandCal//EN -METHOD:REFRESH -VERSION:2.0 -BEGIN:VEVENT -ORGANIZER:Mailto:A@example.com -ATTENDEE:Mailto:B@example.com -UID:acme-12345@host1.com -DTSTAMP:19970603T094000 -END:VEVENT -END:VCALENDAR diff --git a/libical/test-data/3 b/libical/test-data/3 deleted file mode 100644 index 008373ebfa..0000000000 --- a/libical/test-data/3 +++ /dev/null @@ -1,21 +0,0 @@ -BEGIN:VCALENDAR -VERSION:2.0 -PRODID:-//ABC Corporation//NONSGML My Product//EN -BEGIN:VTODO -DTSTAMP:19980130T134500Z -SEQUENCE:2 -UID:uid4@host1.com -ORGANIZER:MAILTO:unclesam@us.gov -ATTENDEE;PARTSTAT=ACCEPTED:MAILTO:jqpublic@host.com -DUE:19980415T235959 -STATUS:NEEDS-ACTION -SUMMARY:Submit Income Taxes -BEGIN:VALARM -ACTION:AUDIO -TRIGGER;VALUE=DATE-TIME:19980403T120000 -ATTACH;FMTTYPE=audio/basic:http://host.com/pub/audio-files/ssbanner.aud -REPEAT:4 -DURATION:PT1H -END:VALARM -END:VTODO -END:VCALENDAR diff --git a/libical/test-data/4 b/libical/test-data/4 deleted file mode 100644 index 59c3d6917b..0000000000 --- a/libical/test-data/4 +++ /dev/null @@ -1,23 +0,0 @@ -BEGIN:VCALENDAR -VERSION:2.0 -PRODID:-//ABC Corporation//NONSGML My Product//EN -BEGIN:VJOURNAL -DTSTAMP:19970324T120000Z -UID:uid5@host1.com -ORGANIZER:MAILTO:jsmith@host.com -STATUS:DRAFT -CLASS:PUBLIC -CATEGORIES:Project Report, XYZ: Weekly Meeting -DESCRIPTION:Project xyz Review Meeting Minutes\n - Agenda\n1. Review of project version 1.0 requirements.\n2. - Definition - of project processes.\n3. Review of project schedule.\n - Participants: John Smith\, Jane Doe\, Jim Dandy\n-It was - decided that the requirements need to be signed off by - product marketing.\n-Project processes were accepted.\n - -Project schedule needs to account for scheduled holidays - and employee vacation time. Check with HR for specific - dates.\n-New schedule will be distributed by Friday.\n- - Next weeks meeting is cancelled. No meeting until 3/23. -END:VJOURNAL -END:VCALENDAR diff --git a/libical/test-data/5 b/libical/test-data/5 deleted file mode 100644 index ba1fd09f7f..0000000000 --- a/libical/test-data/5 +++ /dev/null @@ -1,16 +0,0 @@ -BEGIN:VCALENDAR -VERSION:2.0 -PRODID:-//RDU Software//NONSGML HandCal//EN -BEGIN:VFREEBUSY -ORGANIZER:MAILTO:jsmith@host.com -DTSTART:19980313T141711Z -DTEND:19980410T141711 -FREEBUSY:19980314T233000Z/19980315T003000Z -FREEBUSY:19980316T153000Z/19980316T163000Z -FREEBUSY:19980318T030000/19980318T040000,19980318T030000/19980318T040000 -URL:http://www.host.com/calendar/busytime/jsmith.ifb -END:VFREEBUSY -END:VCALENDAR - - - diff --git a/libical/test-data/6 b/libical/test-data/6 deleted file mode 100644 index 753bd2b66c..0000000000 --- a/libical/test-data/6 +++ /dev/null @@ -1,12 +0,0 @@ -BEGIN:VCALENDAR -METHOD:PUBLISH -PRODID:-//ACME/DesktopCalendar//EN -VERSION:2.0 -BEGIN:VEVENT -ORGANIZER:mailto:a@example.com -DTSTART:19970701T200000Z -DTSTAMP:19970611T190000Z -SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES -UID:0981234-1234234-23@example.com -END:VEVENT -END:VCALENDAR diff --git a/libical/test-data/7 b/libical/test-data/7 deleted file mode 100644 index 0a255fc514..0000000000 --- a/libical/test-data/7 +++ /dev/null @@ -1,14 +0,0 @@ -BEGIN:VCALENDAR -METHOD:PUBLISH -VERSION:2.0 -PRODID:-//ACME/DesktopCalendar//EN -BEGIN:VEVENT -ORGANIZER:mailto:a@example.com -DTSTAMP:19970612T190000Z -DTSTART:19970701T210000Z -DTEND:19970701T230000Z -SEQUENCE:1 -UID:0981234-1234234-23@example.com -SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES -END:VEVENT -END:VCALENDAR diff --git a/libical/test-data/Makefile.am b/libical/test-data/Makefile.am deleted file mode 100644 index 83a434b288..0000000000 --- a/libical/test-data/Makefile.am +++ /dev/null @@ -1,20 +0,0 @@ -EXTRA_DIST = \ -0 \ -1 \ -1.1 \ -2 \ -2445.ics \ -2446.ics \ -3 \ -4 \ -5 \ -6 \ -7 \ -smallcluster.ics \ -recur.txt \ -user-cal.vcf \ -complex-mime.txt \ -simple-mime.txt \ -stresstest.ics - - diff --git a/libical/test-data/complex-mime.txt b/libical/test-data/complex-mime.txt deleted file mode 100644 index 32cb106dfd..0000000000 --- a/libical/test-data/complex-mime.txt +++ /dev/null @@ -1,81 +0,0 @@ -From: foo1@example.com -MIME-Version: 1.0 -To: foo2@example.com,foo3@example.com -Subject: REQUEST - Phone Conference -Content-Type:multipart/related;boundary="--FEE3790DC7E35189CA67CE2C" - -----FEE3790DC7E35189CA67CE2C -Content-Type: multipart/alternative; - boundary="--00FEE3790DC7E35189CA67CE2C00" - -----00FEE3790DC7E35189CA67CE2C00 -Content-Type: text/plain; charset=us-ascii -Content-Transfer-Encoding: 7bit - -When: 7/1/1997 10:00PM PDT- 7/1/97 10:30 PM PDT -Where: -Organizer: foo1@example.com -Summary: Let's discuss the attached document - - -----00FEE3790DC7E35189CA67CE2C00 -Content-Type:text/calendar; method=REQUEST; charset=US-ASCII; - Component=vevent -Content-Transfer-Encoding: quoted-printable -Content-Disposition: attachment; filename="event.vcs" - -BEGIN:VCALENDAR -PRODID:-//ACME/DesktopCalendar//EN -VERSION:2.0 -METHOD:REQUEST -BEGIN:VEVENT -ORGANIZER:foo1@example.com -ATTENDEE;RSVP=3DTRUE;ROLE=3DREQ-PARTICIPANT;CUTYPE=3DGROUP:MAILTO:employe= -e-A@host.com -ATTENDEE;RSVP=3DTRUE;ROLE=3DREQ-PARTICIPANT;CUTYPE=3DGROUP:mailto:Employe= -e-B@HOST.com -ATTENDEE;RSVP=3DTRUE;ROLE=3DREQ-PARTICIPANT;CUTYPE=3DGROUP:MailTo:Eric@Ag= -ony.Busboom.org -DTSTAMP:19970611T190000Z -DTSTART:19970621T170000Z -DTEND:199706211T173000Z -SUMMARY:Let's discuss the attached document -UID:calsvr.example.com-873970198738777-8aa -SEQUENCE:0 -STATUS:CONFIRMED -END:VEVENT -END:VCALENDAR - -----00FEE3790DC7E35189CA67CE2C00 -Content-Type:text/calendar; method=REQUEST; charset=US-ASCII; - Component=vevent -Content-Transfer-Encoding: base64 -Content-Disposition: attachment; filename="event.vcs" - -QkVHSU46VkNBTEVOREFSClBST0RJRDotLy9BQ01FL0Rlc2t0b3BDYWxlbmRhci8vRU4KVkVS -U0lPTjoyLjAKQkVHSU46VkVWRU5UCk9SR0FOSVpFUjpmb28xQGV4YW1wbGUuY29tCkFUVEVO -REVFO1JTVlA9VFJVRTtST0xFPVJFUS1QQVJUSUNJUEFOVDtDVVRZUEU9R1JPVVA6TUFJTFRP -OmVtcGxveWVlLUFAaG9zdC5jb20KQVRURU5ERUU7UlNWUD1UUlVFO1JPTEU9UkVRLVBBUlRJ -Q0lQQU5UO0NVVFlQRT1HUk9VUDptYWlsdG86RW1wbG95ZWUtQkBIT1NULmNvbQpBVFRFTkRF -RTtSU1ZQPVRSVUU7Uk9MRT1SRVEtUEFSVElDSVBBTlQ7Q1VUWVBFPUdST1VQOk1haWxUbzpF -cmljQEFnb255LlF1YWxjb21tLmNvbQpEVFNUQU1QOjE5OTcwNjExVDE5MDAwMFoKRFRTVEFS -VDoxOTk3MDYyMVQxNzAwMDBaCkRURU5EOjE5OTcwNjIxMVQxNzMwMDBaClNVTU1BUlk6TGV0 -J3MgZGlzY3VzcyB0aGUgYXR0YWNoZWQgZG9jdW1lbnQKVUlEOmNhbHN2ci5leGFtcGxlLmNv -bS04NzM5NzAxOTg3Mzg3NzctOGFhClNFUVVFTkNFOjAKU1RBVFVTOkNPTkZJUk1FRApFTkQ6 -VkVWRU5UCkVORDpWQ0FMRU5EQVIK - - -----00FEE3790DC7E35189CA67CE2C00-- - -----FEE3790DC7E35189CA67CE2C -Content-Type: application/msword; name="FieldReport.doc" -Content-Transfer-Encoding: base64 -Content-Disposition: inline; filename="FieldReport.doc" -Content-ID: - - -R0lGODdhTAQZAJEAAFVVVd3d3e4AAP///ywAAAAATAQZAAAC/5yPOSLhD6OctNqLs94XqAG -4kiW5omm6sq27gvH8kzX9o1y+s73/g8MCofEovGITCoxKMbyCR16cNSq9YrNarfcrvdriIH -5LL5jE6rxc3G+v2cguf0uv2Oz+v38L7/DxgoOKjURnjIIbe3yNjo+AgZWYVIWWl5iZnJY6J. - -----FEE3790DC7E35189CA67CE2C-- diff --git a/libical/test-data/recur.txt b/libical/test-data/recur.txt deleted file mode 100644 index 8c977b3c05..0000000000 --- a/libical/test-data/recur.txt +++ /dev/null @@ -1,632 +0,0 @@ -BEGIN:VEVENT -DESCRIPTION - :Daily for 10 occurrences: -DTSTART - ;TZID=US-Eastern - :19970902T090000 -RRULE - :FREQ=DAILY;COUNT=10;INTERVAL=1 -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Daily until December 24\, 1997: -DTSTART - ;TZID=US-Eastern - :19970902T090000 -RRULE - :FREQ=DAILY;UNTIL=19971224T000000Z;INTERVAL=1 -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Every other day - forever: -DTSTART - ;TZID=US-Eastern - :19970902T090000 -RRULE - :FREQ=DAILY;COUNT=10;INTERVAL=2 -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Every 10 days\, 5 occurrences: -DTSTART - ;TZID=US-Eastern - :19970902T090000 -RRULE - :FREQ=DAILY;COUNT=5;INTERVAL=10 -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Daily for 10 occurrences: -DTSTART - ;TZID=US-Eastern - :19970902T090000 -RRULE - :FREQ=DAILY;COUNT=10;INTERVAL=1 -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Daily until December 24\, 1997: -DTSTART - ;TZID=US-Eastern - :19970902T090000 -RRULE - :FREQ=DAILY;UNTIL=19971224T000000Z;INTERVAL=1 -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Every other day - forever: -DTSTART - ;TZID=US-Eastern - :19970902T090000 -RRULE - :FREQ=DAILY;COUNT=10;INTERVAL=2 -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Every 10 days\, 5 occurrences: -DTSTART - ;TZID=US-Eastern - :19970902T090000 -RRULE - :FREQ=DAILY;COUNT=5;INTERVAL=10 -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Daily for 10 occurrences: -DTSTART - ;TZID=US-Eastern - :19970902T090000 -RRULE - :FREQ=DAILY;COUNT=10;INTERVAL=1 -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Daily until December 24\, 1997: -DTSTART - ;TZID=US-Eastern - :19970902T090000 -RRULE - :FREQ=DAILY;UNTIL=19971224T000000Z;INTERVAL=1 -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Every other day - forever: -DTSTART - ;TZID=US-Eastern - :19970902T090000 -RRULE - :FREQ=DAILY;COUNT=10;INTERVAL=2 -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Every 10 days\, 5 occurrences: -DTSTART - ;TZID=US-Eastern - :19970902T090000 -RRULE - :FREQ=DAILY;COUNT=5;INTERVAL=10 -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Daily for 10 occurrences: -DTSTART - ;TZID=US-Eastern - :19970902T090000 -RRULE - :FREQ=DAILY;COUNT=10;INTERVAL=1 -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Daily until December 24\, 1997: -DTSTART - ;TZID=US-Eastern - :19970902T090000 -RRULE - :FREQ=DAILY;UNTIL=19971224T000000Z;INTERVAL=1 -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Every other day - forever: -DTSTART - ;TZID=US-Eastern - :19970902T090000 -RRULE - :FREQ=DAILY;COUNT=10;INTERVAL=2 -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Every 10 days\, 5 occurrences: -DTSTART - ;TZID=US-Eastern - :19970902T090000 -RRULE - :FREQ=DAILY;COUNT=5;INTERVAL=10 -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Daily for 10 occurrences: -DTSTART - ;TZID=US-Eastern - :19970902T090000 -RRULE - :FREQ=DAILY;COUNT=10;INTERVAL=1 -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Daily until December 24\, 1997: -DTSTART - ;TZID=US-Eastern - :19970902T090000 -RRULE - :FREQ=DAILY;UNTIL=19971224T000000Z;INTERVAL=1 -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Every other day - forever: -DTSTART - ;TZID=US-Eastern - :19970902T090000 -RRULE - :FREQ=DAILY;COUNT=10;INTERVAL=2 -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Every 10 days\, 5 occurrences: -DTSTART - ;TZID=US-Eastern - :19970902T090000 -RRULE - :FREQ=DAILY;COUNT=5;INTERVAL=10 -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Daily for 10 occurrences: -DTSTART - ;TZID=US-Eastern - :19970902T090000 -RRULE - :FREQ=DAILY;COUNT=10;INTERVAL=1 -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Daily until December 24\, 1997: -DTSTART - ;TZID=US-Eastern - :19970902T090000 -RRULE - :FREQ=DAILY;UNTIL=19971224T000000Z;INTERVAL=1 -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Every other day - forever: -DTSTART - ;TZID=US-Eastern - :19970902T090000 -RRULE - :FREQ=DAILY;COUNT=10;INTERVAL=2 -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Every 10 days\, 5 occurrences: -DTSTART - ;TZID=US-Eastern - :19970902T090000 -RRULE - :FREQ=DAILY;COUNT=5;INTERVAL=10 -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Daily for 10 occurrences: -DTSTART - ;TZID=US-Eastern - :19970902T090000 -RRULE - :FREQ=DAILY;COUNT=10;INTERVAL=1 -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Daily until December 24\, 1997: -DTSTART - ;TZID=US-Eastern - :19970902T090000 -RRULE - :FREQ=DAILY;UNTIL=19971224T000000Z;INTERVAL=1 -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Every other day - forever: -DTSTART - ;TZID=US-Eastern - :19970902T090000 -RRULE - :FREQ=DAILY;COUNT=10;INTERVAL=2 -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Every 10 days\, 5 occurrences: -DTSTART - ;TZID=US-Eastern - :19970902T090000 -RRULE - :FREQ=DAILY;COUNT=5;INTERVAL=10 -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Daily for 10 occurrences: -DTSTART - ;TZID=US-Eastern - :19970902T090000 -RRULE - :FREQ=DAILY;COUNT=10;INTERVAL=1 -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Daily until December 24\, 1997: -DTSTART - ;TZID=US-Eastern - :19970902T090000 -RRULE - :FREQ=DAILY;UNTIL=19971224T000000Z;INTERVAL=1 -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Every other day - forever: -DTSTART - ;TZID=US-Eastern - :19970902T090000 -RRULE - :FREQ=DAILY;COUNT=10;INTERVAL=2 -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Every 10 days\, 5 occurrences: -DTSTART - ;TZID=US-Eastern - :19970902T090000 -RRULE - :FREQ=DAILY;COUNT=5;INTERVAL=10 -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Everyday in January\, for 3 years -DTSTART - ;TZID=US-Eastern - :19980101T090000 -RRULE - :FREQ=YEARLY;UNTIL=20000131T090000Z;INTERVAL=1;BYDAY=SU,MO,TU,WE,TH,FR,SA;BYMONTH=1 -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Everyday in January\, for 3 years: -DTSTART - ;TZID=US-Eastern - :19980101T090000 -RRULE - :FREQ=DAILY;UNTIL=20000131T090000Z;INTERVAL=1;BYMONTH=1 -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Weekly for 10 occurrences -DTSTART - ;TZID=US-Eastern - :19970902T090000 -RRULE - :FREQ=WEEKLY;COUNT=10;INTERVAL=1 -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Weekly until December 24\, 1997 -DTSTART - ;TZID=US-Eastern - :19970902T090000 -RRULE - :FREQ=WEEKLY;UNTIL=19971224T000000Z;INTERVAL=1 -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Every other week - forever: -DTSTART - ;TZID=US-Eastern - :19970902T090000 -RRULE - :FREQ=WEEKLY;INTERVAL=2 -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Weekly on Tuesday and Thursday for 5 weeks: -DTSTART - ;TZID=US-Eastern - :19970902T090000 -RRULE - :FREQ=WEEKLY;UNTIL=19971007T000000Z;INTERVAL=1;BYDAY=TU,TH -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Weekly on Tuesday and Thursday for 5 weeks: -DTSTART - ;TZID=US-Eastern - :19970902T090000 -RRULE - :FREQ=WEEKLY;COUNT=10;INTERVAL=1;BYDAY=TU,TH -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Every other week on Monday\, Wednesday and Friday until December - 24\,1997\, but starting on Tuesday\, September 2\, 1997: -DTSTART - ;TZID=US-Eastern - :19970902T090000 -X-LIC-ERROR - ;X-LIC-ERRORTYPE=VALUE_PARSE_ERROR - :Can't parse as RECUR value in RRULE property. Removing entire property: - 'FREQ=WEEKLY\;INTERVAL=2\;UNTIL=19971224T000000Z\;WKST=SU\;' -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Every other week on Tuesday and Thursday\, for 8 occurrences: -DTSTART - ;TZID=US-Eastern - :19970902T090000 -RRULE - :FREQ=WEEKLY;COUNT=8;INTERVAL=2;BYDAY=TU,TH -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Monthly on the 1st Friday for ten occurrences: -DTSTART - ;TZID=US-Eastern - :19970905T090000 -RRULE - :FREQ=MONTHLY;COUNT=10;INTERVAL=1;BYDAY=FR -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Monthly on the 1st Friday until December 24\, 1997: -DTSTART - ;TZID=US-Eastern - :19970905T090000 -RRULE - :FREQ=MONTHLY;UNTIL=19971224T000000Z;INTERVAL=1;BYDAY=FR -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Every other month on the 1st and last Sunday of the month for 10 occurrences - : -DTSTART - ;TZID=US-Eastern - :19970907T090000 -X-LIC-ERROR - ;X-LIC-ERRORTYPE=VALUE_PARSE_ERROR - :Can't parse as RECUR value in RRULE property. Removing entire property: - 'FREQ=MONTHLY\;INTERVAL=2\;COUNT=10\;BYDAY=1SU\,-1SU' -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Monthly on the second to last Monday of the month for 6 months: -DTSTART - ;TZID=US-Eastern - :19970922T090000 -RRULE - :FREQ=MONTHLY;COUNT=6;INTERVAL=1;BYDAY=MO -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Monthly on the third to the last day of the month\, forever: -DTSTART - ;TZID=US-Eastern - :19970928T090000 -RRULE - :FREQ=MONTHLY;INTERVAL=1;BYMONTHDAY=-3 -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Monthly on the 2nd and 15th of the month for 10 occurrences: -DTSTART - ;TZID=US-Eastern - :19970902T090000 -RRULE - :FREQ=MONTHLY;COUNT=10;INTERVAL=1;BYMONTHDAY=2,15 -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Monthly on the first and last day of the month for 10 occurrences:\nDTSTART - \;TZID=US-Eastern:19970930T090000 -RRULE - :FREQ=MONTHLY;COUNT=10;INTERVAL=1;BYMONTHDAY=1,-1 -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Every 18 months on the 10th thru 15th of the month for 10 occurrences: -DTSTART - ;TZID=US-Eastern - :19970910T090000 -RRULE - :FREQ=MONTHLY;COUNT=10;INTERVAL=18;BYMONTHDAY=10,11,12,13,14,15 -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Every Tuesday\, every other month: -DTSTART - ;TZID=US-Eastern - :19970902T090000 -RRULE - :FREQ=MONTHLY;INTERVAL=2;BYDAY=TH -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Yearly in June and July for 10 occurrences: -DTSTART - ;TZID=US-Eastern - :19970610T090000 -RRULE - :FREQ=YEARLY;COUNT=10;INTERVAL=1;BYMONTH=6,7 -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Every other year on January\, February\, and March for 10 occurrences: -DTSTART - ;TZID=US-Eastern - :19970310T090000 -RRULE - :FREQ=YEARLY;COUNT=10;INTERVAL=2;BYMONTH=1,2,3 -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Every 3rd year on the 1st\, 100th and 200th day for 10 occurrences: -DTSTART - ;TZID=US-Eastern - :19970101T090000 -RRULE - :FREQ=YEARLY;COUNT=10;INTERVAL=3;BYYEARDAY=1,100,200 -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Every 20th Monday of the year\, forever: -DTSTART - ;TZID=US-Eastern - :19970519T090000 -RRULE - :FREQ=YEARLY;INTERVAL=1;BYDAY=MO -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Monday of week number 20 (where the default start of the week is Monday)\, - forever: -DTSTART - ;TZID=US-Eastern - :19970512T090000 -RRULE - :FREQ=YEARLY;INTERVAL=1;BYDAY=MO;BYWEEKNO=20 -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Every Thursday in March\, forever: -DTSTART - ;TZID=US-Eastern - :19970313T090000 -RRULE - :FREQ=YEARLY;INTERVAL=1;BYDAY=TH;BYMONTH=3 -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Every Thursday\, but only during June\, July\, and August\, forever: -DTSTART - ;TZID=US-Eastern - :19970605T090000 -RRULE - :FREQ=YEARLY;INTERVAL=1;BYDAY=TH;BYMONTH=6,7,8 -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Every Friday the 13th\, forever: -DTSTART - ;TZID=US-Eastern - :19970902T090000 -RRULE - :FREQ=MONTHLY;INTERVAL=1;BYDAY=FR;BYMONTHDAY=13 -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :The first Saturday that follows the first Sunday of the month\, -DTSTART - ;TZID=US-Eastern - :19970913T090000 -RRULE - :FREQ=MONTHLY;INTERVAL=1;BYDAY=SA;BYMONTHDAY=7,8,9,10,11,12,13 -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Every four years\, the first Tuesday after a Monday in November\, - forever (U.S. Presidential Election day): -DTSTART - ;TZID=US-Eastern - :19961105T090000 -RRULE - :FREQ=YEARLY;INTERVAL=4;BYDAY=TU;BYMONTHDAY=2,3,4,5,6,7,8;BYMONTH=11 -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :The 3rd instance into the month of one of Tuesday\, Wednesday or - Thursday\, for the next 3 months: -DTSTART - ;TZID=US-Eastern - :19970904T090000 -RRULE - :FREQ=MONTHLY;COUNT=3;INTERVAL=1;BYDAY=TU,WE,TH;BYSETPOS=3 -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :The 2nd to last weekday of the month: -DTSTART - ;TZID=US-Eastern - :19970929T090000 -RRULE - :FREQ=MONTHLY;INTERVAL=1;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-2 -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Every 3 hours from 9:00 AM to 5:00 PM on a specific day: -DTSTART - ;TZID=US-Eastern - :19970902T090000 -RRULE - :FREQ=HOURLY;UNTIL=19970902T170000Z;INTERVAL=3 -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Every 15 minutes for 6 occurrences: -DTSTART - ;TZID=US-Eastern - :19970902T090000 -RRULE - :FREQ=MINUTELY;COUNT=6;INTERVAL=15 -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Every hour and a half for 4 occurrences: -DTSTART - ;TZID=US-Eastern - :19970902T090000 -RRULE - :FREQ=MINUTELY;COUNT=4;INTERVAL=90 -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Every 20 minutes from 9:00 AM to 4:40 PM every day: -DTSTART - ;TZID=US-Eastern - :19970902T090000 -RRULE - :FREQ=DAILY;INTERVAL=1;BYMINUTE=0,20,40;BYHOUR=9,10,11,12,13,14,15,16 -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :Every 20 minutes from 9:00 AM to 4:40 PM every day: -DTSTART - ;TZID=US-Eastern - :19970902T090000 -RRULE - :FREQ=MINUTELY;INTERVAL=20;BYHOUR=9,10,11,12,13,14,15,16 -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :An example where the days generated makes a difference because of - WKST: -DTSTART - ;TZID=US-Eastern - :19970805T090000 -RRULE - :FREQ=WEEKLY;COUNT=4;INTERVAL=2;BYDAY=TU,SU -END:VEVENT -BEGIN:VEVENT -DESCRIPTION - :An example where the days generated makes a difference because of - WKST. Changing only WKST from MO to SU -DESCRIPTION - : yields different results... -DTSTART - ;TZID=US-Eastern - :19970805T090000 -RRULE - :FREQ=WEEKLY;COUNT=4;INTERVAL=2;BYDAY=TU,SU -END:VEVENT diff --git a/libical/test-data/simple-mime.txt b/libical/test-data/simple-mime.txt deleted file mode 100644 index aa7113a82f..0000000000 --- a/libical/test-data/simple-mime.txt +++ /dev/null @@ -1,26 +0,0 @@ -From: foo1@example.com -MIME-Version: 1.0 -To: foo2@example.com,foo3@example.com -Subject: REQUEST - Phone Conference -Content-Type:text/calendar; method=REQUEST; charset=US-ASCII; - Component=vevent -Content-Transfer-Encoding: 7bit -Content-Disposition: attachment; filename="event.vcs" - -BEGIN:VCALENDAR -PRODID:-//ACME/DesktopCalendar//EN -VERSION:2.0 -BEGIN:VEVENT -ORGANIZER:foo1@example.com -ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP:MAILTO:employee-A@host.com -ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP:mailto:Employee-B@HOST.com -ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP:MailTo:Eric@Agony.Qualcomm.com -DTSTAMP:19970611T190000Z -DTSTART:19970621T170000Z -DTEND:199706211T173000Z -SUMMARY:Let's discuss the attached document -UID:calsvr.example.com-873970198738777-8aa -SEQUENCE:0 -STATUS:CONFIRMED -END:VEVENT -END:VCALENDAR diff --git a/libical/test-data/smallcluster.ics b/libical/test-data/smallcluster.ics deleted file mode 100644 index 2902136bab..0000000000 --- a/libical/test-data/smallcluster.ics +++ /dev/null @@ -1,13 +0,0 @@ -BEGIN:VCALENDAR -BEGIN:VCALENDAR -VERSION:2.0 -PRODID:-//hacksw/handcal//NONSGML v1.0//EN -BEGIN:VEVENT -DTSTART - :19970714T170000Z -DTEND:19970715T035959Z -SUMMARY:Bastille Day Party -RRULE:FREQ=YEARLY;UNTIL=123456T123456;BYSETPOS=-1,2,-3,4,-5,6,-7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,4,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54;BYSECOND=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,4,25,26 -END:VEVENT -END:VCALENDAR -END:VCALENDAR diff --git a/libical/test-data/stresstest.ics b/libical/test-data/stresstest.ics deleted file mode 100644 index f64cf6bbc9..0000000000 --- a/libical/test-data/stresstest.ics +++ /dev/null @@ -1,178 +0,0 @@ -BEGIN:VCALENDAR -ACTION:AUDIO -ACTION: -ACTION:~!@#$%^&*()_+}{:"<>?/., -ATTACH:ftp://ftp.example.com/~pub%eof/ed/minutes100197.txt -ATTACH:http://www.dukes.com/ -ATTENDEE:MAILTO:john_doe@host.com -ATTENDEE:;john_public@host2.com -ATTENDEE:MAILTO:john_public@host2.com -ATTENDEE:Mailto:B@example.com -ATTENDEE;PARTSTAT=ACCEPTED;PARTSTAT=DECLINED:Mailto:B@example.com -ATTENDEE;PARTSTAT=*&^*&:Mailto:B@example.com -ATTENDEE;ROLE=CHAIR:Mailto:A@example.com -ATTENDEE;ROLE=ATTENDEE:Mailto:A@example.com -ATTENDEE;ROLE=CHAIR;RSVP=TRUE:Mailto:A@example.com -ATTENDEE;ROLE=NONPARTICIPANT;RSVP=NO:Mailto:E@example.com -ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com -ATTENDEE;RSVP=FALSE;CUTYPE=ROOM:conf_Big@example.com -ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:Bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb@example.com -CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION;ANNIVERSARY,PERSONAL,SPECIAL OCCASION;ANNIVERSARY,PERSONAL,SPECIAL OCCASION; -CATEGORIES;RSVP=TRUE;RSVP=FALSE:one,two -CLASS:PUBLIC -COMMENT:DELEGATE (ATTENDEE Mailto:E@example.com) DECLINED YOUR - DUKES forfeit the game - I'll send you my input by e-mail - May we bump this by an hour? I have a conflict - Mr. B cannot attend. It's raining. Lets cancel. -Sorry, I cannot change this meeting time -Sorry, I will be out of town at that time. -This iCalendar file contains busy time information for -COMMENT:This time works much better and I think the big conference -COMMENT:You're off the hook for this meeting -CREATED:19980309T130000Z -CREATED:19980309T130000 -CREATED:19980309T13000 -CREATED:19980309T1300 -CREATED:19980309T130 -CREATED:19980309T13 -CREATED:19980309T1 -CREATED:19980309T -CREATED:19980309 -CREATED:1998030 -CREATED:199803 -CREATED:19980 -CREATED:1998 -CREATED:199 -CREATED:19 -CREATED:1 -CREATED: -DTSTAMP:9999999T9999999X -DTSTART:T103012 -DTSTART;VALUE=DATE:19970317 -DTSTART;VALUE=TIME:19970714 -DUE:19980415T235959 -DUE:19980415T235959 -DURATION:P15DT5H0M20S -DURATION:P7W7W8w -DURATION:PT15M -DURATION:PT1H -FREEBUSY:19970701T090000Z/PT1H,19970701T140000Z/PT30M,19980101T180000Z/19980101T190000Z,19980103T020000Z/19980103T050000Z,19980107T020000Z/19980107T050000Z -FREEBUSY:19980318T030000Z/19980318T040000Z -FREEBUSY:19980318T030000Z/19980318T040000 -FREEBUSY;VALUE=PERIOD:19971015T050000Z/PT8H30M, -LOCATION;VALUE=URI:http://www.midwaystadium.com/ -METHOD:ADD -METHOD:DESTROY -METHOD:xyz -METHOD:X-LIC-METHOD -PERCENT-COMPLETE:40 -PERCENT-COMPLETE:.75 -PERCENT-COMPLETE:0 -PRIORITY:1 -PRIORITY:2 -PRIORITY:134645983456666098345624598726459872445897345987 -PRODID:"-//RDU Software//NONSGML HandCal//EN" -PRODID:'-//ABC Corporation//NONSGML ' -PRODID:-//ABC Corporation;foo//NONSGML My Product//EN -RDATE:19970406T020000 -RDATE:19971026T020000 -RDATE:19980304T180000Z -RDATE:19980304T180000Z -RDATE:19980311T160000Z -RDATE:19980311T180000Z -RDATE:19980315T180000Z -RDATE:19980318T180000Z -RDATE:19981025T020000 -RDATE:19981025T020000 -RDATE:19990404T020000 -RDATE:19990404T020000 -RDATE;VALUE=PERIOD:19970819T210000Z/199700819T220000Z -RECURRENCE-ID:19970701T210000Z -RECURRENCE-ID:19970715T210000Z -RECURRENCE-ID:19970801T210000Z -RECURRENCE-ID:19970809T210000Z -RECURRENCE-ID:19980101T170000Z -RECURRENCE-ID:19980311T160000Z -RECURRENCE-ID:19980311T180000Z -RECURRENCE-ID;RANGE=THISANDFUTURE:19970901T210000Z -RELATED-TO:0981234-1234234-14@example.com -RELATED-TO:0981234-1234234-2402-35@example.com -REPEAT:2 -REPEAT:23 -REPEAT:4 -REPEAT:4 -REPEAT:4 -REQUEST-STATUS:2.0;Success -REQUEST-STATUS:2.0;Success -REQUEST-STATUS:2.0;Success -REQUEST-STATUS:2.0;Success -REQUEST-STATUS:2.0;Success -REQUEST-STATUS:2.8;Repeating event ignored. Scheduled as a single -REQUEST-STATUS:3.0;Invalid Property Name;FOO -RESOURCES:SCOREBOARD -RRULE:FREQ=MONTHLY;BYMONTHDAY=1 -RRULE:FREQ=MONTHLY;BYMONTHDAY=1;UNTIL=19980901T210000Z -RRULE:FREQ=MONTHLY;COUNT=10;BYDAY=1FR -RRULE:FREQ=WEEKLY -RRULE:FREQ=WEEKLY -RRULE:FREQ=WEEKLY;INTERVAL=20;WKST=SU;BYDAY=TU -RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU -RRULE:FREQ=YEARLY -RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 -RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 -RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 -RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 -RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 -RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=4 -RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 -RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 -RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 -RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z -RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z -RRULE:FREQ=YEARLY;INTERVAL=1 -RRULE:WKST=SU;BYDAY=TH;FREQ=WEEKLY -RRULE:WKST=SU;BYDAY=TU,TH;FREQ=WEEKLY -SCALE:GREGORIAN -SEQUENCE:0 -SEQUENCE:.03486 -SEQUENCE:dflkjhfg -SEQUENCE: -SEQUENCE:7 -STATUS:CANCELLED -STATUS:NEEDS-ACTION -STATUS:Needs Action -SUMMARY: Bastille Day -SUMMARY:"No Property" -SUMMARY:*** REMINDER: SEND AGENDA FOR WEEKLY STAFF MEETING *** -SUMMARY:1996 Income Tax Preparation -SUMMARY:Annual Employee Review -SUMMARY:Bastille Day Party -SUMMARY:Calendaring Interoperability Planning Meeting -SUMMARY:Calendaring Interoperability Planning Meeting -SUMMARY;RSVP=TRUE;RSVP=FALSE:Calendaring Interoperability Planning Meeting -TRANSP:TRANSPARENT -TRIGGER:-P2D -TRIGGER:-PT2H -TRIGGER:-PT30M -TRIGGER:-PT30M -TRIGGER;VALUE=DATE-TIME:19970317T133000Z -TRIGGER;VALUE=DATE-TIME:19980101T050000Z -TRIGGER;VALUE=DATE-TIME:19980403T120000 -TRIGGER;VALUE=DATE-TIME:19980403T120000Z -TZID:America-Chicago -TZID:America-SanJose -TZNAME:PST -TZOFFSETFROM:-0600 -TZOFFSETFROM:0700 -TZOFFSETFROM:4.56 -TZURL:http://zones.stds_r_us.net/tz/America-Chicago -TZURL:http://zones.stds_r_us.net/tz/America-SanJose -TZURL:http://zones.stds_r_us.net/tz/US-Eastern -UID:uid5@host1.com -URL:http://www.host.com/calendar/busytime/jsmith.ifb -VERSION:2.0 -VERSION:.0 -VERSION:2.0.0.0 -X-SKI-TITLE;RSVP=TRUE: This is an extension property -END:VCALENDAR \ No newline at end of file diff --git a/libical/test-data/user-cal.vcf b/libical/test-data/user-cal.vcf deleted file mode 100644 index 3cf005fa21..0000000000 --- a/libical/test-data/user-cal.vcf +++ /dev/null @@ -1,76 +0,0 @@ -BEGIN:VCALENDAR -X-COMMENT: This file was contributed by Ola Lundqvist -PRODID:-//GNOME//NONSGML GnomeCalendar//EN -TZ:CEST -VERSION:1.1.4 -BEGIN:VEVENT -UID:20000511T125528-23888-500-1-494 -SEQUENCE:-1 -DTSTART:20000530T150000 -DTEND:20000530T170000 -DCREATED:20000524T125250 -LAST-MODIFIED:20000524T125250 -SUMMARY:Omphalic for ataraxia -STATUS:NEEDS ACTION -CLASS:PUBLIC -PRIORITY:0 -TRANSP:0 -ORGNAME:ola -X-PILOTID:4441126 -X-PILOTSTAT:0 -END:VEVENT - -BEGIN:VEVENT -UID:20000511T125528-23888-500-1-492 -SEQUENCE:-1 -DTSTART:20000529T130000 -DTEND:20000529T130000 -DCREATED:20000524T125250 -LAST-MODIFIED:20000524T125250 -SUMMARY:Eurphrates et filistu -STATUS:NEEDS ACTION -CLASS:PUBLIC -PRIORITY:0 -TRANSP:0 -ORGNAME:ola -X-PILOTID:4441124 -X-PILOTSTAT:0 -END:VEVENT - -BEGIN:VEVENT -UID:20000524T125250-1004-500-1-13 -SEQUENCE:-1 -DTSTART:20000528T000000 -DTEND:20000528T235900 -DCREATED:20000524T125250 -LAST-MODIFIED:20000524T125250 -SUMMARY:Calaphgyian, napiform malefactors -STATUS:NEEDS ACTION -CLASS:PUBLIC -PRIORITY:0 -TRANSP:0 -ORGNAME:ola -X-PILOTID:4441156 -X-PILOTSTAT:0 -END:VEVENT - -BEGIN:VEVENT -UID:20000524T125250-1004-500-1-12 -SEQUENCE:-1 -DTSTART:20000527T150000 -DTEND:20000527T160000 -DCREATED:20000524T125250 -LAST-MODIFIED:20000524T125250 -SUMMARY: aphasiac puntildictus -STATUS:NEEDS ACTION -CLASS:PUBLIC -PRIORITY:0 -TRANSP:0 -ORGNAME:ola -X-PILOTID:4441155 -X-PILOTSTAT:0 -END:VEVENT - - -END:VCALENDAR - diff --git a/macros/.cvsignore b/macros/.cvsignore deleted file mode 100644 index 11fbb6e5a0..0000000000 --- a/macros/.cvsignore +++ /dev/null @@ -1,4 +0,0 @@ -Makefile.in -Makefile -macros.dep -gnome-macros.dep diff --git a/macros/ChangeLog b/macros/ChangeLog deleted file mode 100644 index 901314afdd..0000000000 --- a/macros/ChangeLog +++ /dev/null @@ -1,1049 +0,0 @@ -2000-08-01 Pavel Roskin - - * curses.m4: AC_WARN replaced with AC_MSG_WARN in comments - -2000-06-23 Stanislav Brabec - - * gnome-pilot.m4: Use 'PISOCK_INCLUDEDIR' in pisock version check. - -2000-06-17 Dan Winship - - * autogen.sh: exit immediately if aclocal, autoheader, automake, - or autoconf fails, rather than continuing on with broken state. - (In the aclocal case, print a hopefully-useful explanatory - message.) - -2000-06-13 Martin Baulig - - * gnome-bonobo-check.am (AM_BONOBO_USES_OAF): New macro. - Checks whether Bonobo uses OAF and defines `BONOBO_USES_OAF' - if appropriate. Also provides `BONOBO_USES_OAF' automake - conditional. - -2000-06-13 Martin Baulig - - * Makefile.am (EXTRA_DIST): Added `gnome-gettext.m4'. - (gnome_aclocal_DATA): Added `gnome-gettext.m4'. - -2000-05-29 Martin Baulig - - * gnome-autogen.sh: Moved to the `bin/' directory. - -2000-05-29 Martin Baulig - - * gnome-autogen.sh: If `USE_GNOME_2_MACROS' is set, use the - GNOME 2.0 macros from the `macros2' directory. - -2000-05-29 Martin Baulig - - * gnome-common.m4, Makefile.am: Install macros to - `$(datadir)/aclocal/gnome-macros' when INSIDE_GNOME_COMMON. - - * gnome-autogen.sh: New file. When using gnome-common instead - of the macros/ directory, use this in your autogen.sh. - -2000-05-15 Russell Steinthal - - * gnome-pilot.m4 (PILOT_LIBS): An attempt to fix the gnome-pilot - check on Solaris (`$GNOME_CONFIG ...` returns more than one word, - so we need quotes around it to keep test from bombing out) - -2000-05-01 Dan Winship - - * gnome-pilot.m4 (PILOT_LIBS): "But that trick NEVER works!" - "This time for sure!" - -Sun Apr 23 12:15:14 2000 George Lebl - - * gnome.m4: add an extra lib of docklets. These checks are - braindamaged though, they don't fail and thus gnome-core for - example compiles without gnomecc. There need to be separate .m4 - files or checks - -2000-04-19 Eskil Heyn Olsen - - * gnome-pilot.m4 (PILOT_LIBS): Changed the error string for gnome-pilot - (PILOT_LIBS): Fixes the gnome-config check - -2000-04-10 Dan Winship - - * gnome-pilot.m4 (PILOT_LIBS): Fix a bug introduced in the - gnome-pilot-config to "gnome-config gpilot" change that caused not - having pilot-link installed to become a fatal error. - -2000-02-26 James Henstridge - - * gnome-gettext.m4: fix up check of LINGUAS variable so that we don't - get problems when LINGUAS contains `en' and ALL_LINGUAS contains - `en_GB' for instance. - -2000-02-22 Martin Baulig - - * autogen.sh: Don't run libtoolize when `NO_LIBTOOLIZE' is set. - -2000-02-09 Raja R Harinath - - * autogen.sh: Fix GNUism introduced in the previous fix. - -2000-02-08 Miguel de Icaza - - * autogen.sh: Handle non GNU find programs. - -2000-02-05 Martin Baulig - - * gnome-libgtop-types.m4 (AC_LIBGTOP_CHECK_TYPE): New macro. This - is an improved version of AC_CHECK_TYPE which takes into account - that we need to #include some other header files on some systems - to get some types. - (GNOME_LIBGTOP_TYPES): Check for for Tru64 and - use AC_LIBGTOP_CHECK_TYPE rather than AC_CHECK_TYPE. - -2000-01-26 Dave Camp - - * gnome-bonobo-check.m4 Include rather than - - -2000-01-26 Dave Camp - - * gnome-bonobo-check.m4: Check for bonobo_object_get_type() rather - than gnome_object_get_type(). - -2000-01-23 Peter Teichman - - * gnome-pilot.m4: i broke the version-checking macro for other - distribs in my last commit. fixing that now. - -2000-01-22 Peter Teichman - - * gnome-pilot.m4 (PILOT_LIBS): fix the version-checking macro for - debian - -2000-01-20 Raja R Harinath - - * gnome-objc-checks.m4: Look for sched_yield in -lrt, too. - Suggested by Drazen Kazar . - -2000-01-16 Vadim Strizhevsky - - * gnome-pilot.m4: Fix typo in PILOT_LINK_HOOK. - -2000-01-15 Eskil Heyn Olsen - - * gnome-pilot.m4: PILOT_LINK_HOOK now check pilot-link version. - GNOME_PILOT_CHECK defaults to requiring 0.9.3. - -2000-01-09 Martin Baulig - - * gnome-libgtop-check.m4: Applied patch from R. Bernstein - - print a better error message when - LibGTop's major version number mismatches. - -1999-12-25 Martin Baulig - - * gnome-pilot.m4: Applied patch from Colin Walters to make - it compile under Debian GNU/Linux. - -1999-12-05 Martin Baulig - - * gnome-libgtop-checks.m4: Removed all guile variables. - -1999-11-18 Jeff Garzik - - * gnome-xml-check.m4: Better scoping of below fix. - -1999-11-16 Jeff Garzik - - * gnome-xml-check.m4: always AC_SUBST GNOME_XML_LIB, so that - output variable will always be present. - -1999-11-09 Eskil Heyn Olsen - - * gnome-pilot.m4: uses test -r instead of test -e, was reported as - a portability bug wrt solaris. - -1999-10-31 Eskil Heyn Olsen - - * gnome-pilot.m4: added PILOT_LINK_CHECK, used by - GNOME_PILOT_CHECK. Adds --with-pisock=$dir_for_pilot_link. - -1999-10-24 Jacob Berkman - - * gnome-ghttp-check.m4: this should be a better fix - -1999-10-21 Jacob Berkman - - * gnome-ghttp-check.m4: use a temp value until we know that - ghttp exists. This will hopefully fix building on Solaris - machines - -1999-09-26 Jody Goldberg - - * compiler-flags.m4 : Remove -Wpointer-arith. It generates large - numbers of warnings under glibc2.1.2 with a recent egcs release. - The glibc maintainers have suggested removing this flag because it - is useless. - -1999-09-01 Havoc Pennington - - * gnome-xml-check.m4: If you're going to AC_PATH_PROG then use the - prog you find :-) - -1999-08-02 Peter Teichman - - * removed gnome-conduit-check.m4 - it should be distributed with - gnome-pilot - -1999-07-30 Peter Teichman - - * gnome-conduit-check.m4: added new file of checks. anything that - provides a pilot conduit is going to want this - -1999-07-07 Tuomas J. Lukka - * gnome-x-checks.m4: add a comment on how to get gtk-1.3 and - glib 1.3 from CVS - -1999-07-06 Tuomas J. Lukka - - * gnome-x-checks.m4: forbid compiling with Gtk-1.3 for now. - gnome only works with 1.2 so far. - -1999-07-05 Raja R Harinath - - * gnome.m4: Make "extra library" message slightly easier to read. - -Sat Jun 26 01:47:53 1999 Tim Janik - - * compiler-flags.m4: give -Wunused to gcc instead of -Wno-unused. - -1999-06-11 Tuomas J. Lukka - - * gnome-guile-checks.m4: Debian has qt_null in -lqthreads but - no main. Changed both checks for 'main' to qt_null. - I hope this is correct - it shouldn't break anything. - -1999-05-11 Raja R Harinath - - * Makefile.am (MACROS): Add `gnome-bonobo-check.m4'. - -1999-05-09 Jacob Berkman - - * gnome-bonobo-check.m4: made test program return 0, - changed BONOBO_CHECK to not return "failure" on success - -1999-04-16 Raja R Harinath - - * gnome-print-check.m4 (GNOME_PRINT_CHECK): Fix invocation of - AM_PATH_GNOME_PRINT. - * Makefile.am (MACROS): Sort lines. - -Sun Mar 28 23:39:48 1999 Norbert Warmuth - - * gnome-vfs.m4: Add --with-vfs option. GNOME_VFS_LIBS still needs - to be fixed but that's not a problem because there's no libvfs, yet. - -1999-03-10 Tomislav Vujec - - * aclocal-include.m4 (AM_ACLOCAL_INCLUDE): Add ACLOCAL_FLAGS in - ACLOCAL. This allows maintainer rules to work if any of the macros - change. - -1999-03-10 Tomislav Vujec - - * gnome.m4 (GNOME_INIT_HOOK): Wrapped position parameter in - testing for additional inits. It gets expanded while generating - configure, resulting in an empty parameter list - syntax error in - for statement. - -1999-03-09 Raja R Harinath - - * gnome.m4 (GNOME_INIT): Add a new paramater, which is passed to - GNOME_INIT_HOOK. - (GNOME_INIT_HOOK): New parameter "additional inits". This is a - list like "applets capplet", and the corresponding - GNOME_APPLETS_LIBS and GNOME_CAPPLETS_LIBS are defined. - -1998-03-01 Mark Crichton - - * gnome-objc-checks : Added HAVE_GNOME_OBJC conditional - -1998-02-27 Gregory McLean - - * gnome-x-checks.m4 : Require at least gtk+ 1.2 (pointless getting - bug reports with an old glib/gtk/gdk set..) - -1999-02-25 Martin Baulig - - * gnome-libgtop-checks.m4: Require LibGTop >= 1.0.0. - -1999-02-22 Miguel de Icaza - - * compiler-flags.m4: Only add the compilation warnings if the - compiler is GCC. - -1999-02-20 Timur Bakeyev - - * gnome.m4: Added and exported ZVT_LIBS. - -Tue Feb 16 19:35:42 1999 Owen Taylor - - * gnome-x-checks.m4: Require GTK+-1.1.16. - -1999-02-15 Timur Bakeyev - - * gnome-gettext.m4: Work around a bug in BSDI's native sh, which in- - correctly expands ${LINGUAS=$ALL_LINGUAS}. Switched to if/fi variant. - -1999-02-15 Chris Lahey - - * gnome-print-check.m4: Copied this from libhnj/libhnj.m4. Almost - completely replaced the old version. The only usage difference is - that it defines GNOME_PRINT_LIBS instead of GNOME_PRINT_LIB and - defines GNOME_PRINT_CFLAGS as well. - -1999-02-10 Martin Baulig - - * gnome-objc-checks.m4: Applied a patch from Kenneth Stailey; - use $CFLAGS when invoking $OBJC so the user can add additional - include paths. - -1999-02-05 Martin Baulig - - * compiler-flags.m4: Don't add warning and compiler flags to - the CFLAGS and CXXFLAGS when they're cached. This fixes the - problem that CFLAGS and CXXFLAGS get longer and longer each - time you run a `config.status --recheck'. - -1999-02-04 Martin Baulig - - * aclocal-include.m4 (INSIDE_GNOME_COMMON): New automake - conditional that's always false. - - * gnome-common.m4: New file. This defines a `GNOME_COMMON_INIT' - macro that should be used in all GNOME Applications outside - the CVS tree. - - * Makefile.am: If we are `INSIDE_GNOME_COMMON', install all - $(MACROS), autogen.sh, gnome-common.m4 and a newly created - gnome-macros.dep in `$(datadir)/aclocal/gnome'. - -1999-01-24 Timur Bakeyev - - * gnome-pthread-check.m4: Add recognition of 2 more libraries - - pthreads and pthread-support build in libc (as on BSDI). - -1999-01-23 Martin Baulig - - * gnome-libgtop-checks.m4 (GNOME_LIBGTOP_DOCU): New macro. This - checks whether you have the LibGTop documentation installed and - defines `HAVE_LIBGTOP_DOCU' if appropriate. Also provides automake - conditional. - -1999-01-20 Martin Baulig - - * acinclude.m4 (ac_result): Unset CATOBJEXT so - that the macros and Makefiles correctly handle - disabling NLS when no gettext is found. - -1999-01-19 Raja R Harinath - - * gnome-cxx-check.m4 (GNOME_CHECK_CXX): Rewrite to be saner. - Don't limit yourself to a fixed set of names for the compiler. - -1999-01-06 Nat Friedman - - * Makefile.am (MACROS): Added gnome-print-check.m4 to MACROS - -1999-01-05 Raja R Harinath - - * gnome-support.m4: Include dirent.h before checking whether - `scandir' needs to be declared. - * need-declaration.m4: Revert change. - -1999-01-05 Miguel de Icaza - - * need-declaration.m4, gnome-support.m4: Fixed the scandir detection. - -1998-12-22 Jeff Garzik - - * gnome.m4: Added and exported GNOME_APPLET_LIBS. - -1998-12-16 Sebastian Wilhelmi - - * gnome-support.m4: Removed all the stuff for argp, that was - causing gnomesupport not to build. - -1998-12-15 Martin Baulig - - * gnome-gettext.m4: Add the hacked version of the gettext - macros that is used in Gtk+ here. - - * autogen.sh: Accept both AM_GNU_GETTEXT and AM_GNOME_GETTEXT. - -1998-12-15 Martin Baulig - - * gnome-libgtop-check.m4: All parts of GNOME will now require - LibGTop >= 0.99.0 which is the latest version from CVS and - already feature-freezed for GNOME 1.0. - -1998-12-09 Martin Baulig - - * aclocal-include.m4 (AM_ACLOCAL_INCLUDE): Make this work - with more than one directory. - -1998-12-08 Martin Baulig - - * gnome-libgtop-sysdeps.m4: Moved into the LibGTop module. - This file contains too much stuff that should only be used - internally in LibGTop, so it's better to have it there. - -1998-12-06 Martin Baulig - - * gnome-libgtop-sysdeps.m4: Recognice OpenBSD as a valid - system and use the `freebsd' sysdeps directory for it. - -Sat Dec 5 23:30:01 PST 1998 Manish Singh - - * gnome-guile-checks.m4: clear GUILE_LIBS and GUILE_INCS if - guile isn't there (quick fix) - -1998-12-05 Martin Baulig - - * gnome-libgtop-sysdeps.m4: Recognice NetBSD as a valid - system and use the `freebsd' sysdeps directory for it. - -1998-12-03 Martin Baulig - - * gnome-libgtop-sysdeps.m4 (GLIBTOP_LINUX_VERSION_CODE): - Define this to be the same as LINUX_VERSION_CODE either from - or from the running kernel. - -1998-12-02 Raja R Harinath - - * autogen.sh: "Improve" indentation and messages somewhat. - -1998-12-01 Jeff Garzik - - * autogen.sh: - Platform fixes. grep -q is not portable, do not use. - -1998-12-01 Changwoo Ryu - - * autogen.sh: Run gettextize if needed. - : Run libtoolize only if configure.in has "^AM_PROG_LIBTOOL". - -1998-11-30 Jeff Garzik - - * gnome.m4: Re-arranged tests such that "--without-gnome" is - fully supported. Not only is the logic now correct, programs - can test "want_gnome=yes/no" for the results of this arg. - -1998-11-27 Martin Baulig - - * gnome-libgtop-check.m4: All parts of GNOME will now require - LibGTop >= 0.29.0 which is the latest version from CVS. - -1998-11-20 James Henstridge - - * gnome.m4(GNOME_INIT_HOOK): Changed the call to GNOME_GNORBA_CHECK - to GNOME_GNORBA_HOOK([],$2). Before if you specified that the - macro should not exit on errors, and you didn't have ORBit, the - script would fail anyway. - -1998-11-17 Martin Baulig - - * gnome-libgtop-sysdeps.m4: We need to check for - and conditionally include it before in the code - that check for I4B to make it work on FreeBSD 3.0. - -1998-10-25 Marius Vollmer - - * gnome-guile-checks.m4: Add GUILE_LIBS to LIBS when checking - whether guile works. Adding them to LDFLAGS does not work on all - systems. (Thanks to Rusty Chris Holleman) - -1998-11-12 Andrew T. Veliath - - * gnome-orbit-check.m4: Remove AC_DEFINE(HAVE_ORBIT). Add - AM_CONDITIONAL for HAVE_ORBIT. gnome-gnorba-check.m4: Same with - HAVE_GNORBA. Change GNOME_ORBIT_HOOK and GNOME_GNORBA_HOOK to use - AC_CACHE_CHECK, setting both gnome_cv_orbit_found and - gnome_cv_gnorba_found. - - * gnome.m4: (GNOME_INIT_HOOK): Add GNOME_GNORBA_CHECK if - gnome-config is found. New GNOMEGNORBA_LIBS library variable - (GNOMEGNORBA_LIBS is a superset of GNOMEUI_LIBS). Update - GNOME_LIBDIR and GNOME_INCLUDEDIR to to include the required - Gnorba info, if it is in a different location. - - * Makefile.am (MACROS): Add gnome-gnorba-check.m4 to Makefile. - - * gnome-gnorba-check.m4: New file. - -1998-11-12 Raja R Harinath - - * gnome-support.m4 (vsnprintf): Remove easy-vsnprintf hack -- it - doesn't work for Solaris 2.5 binaries running on Solaris 2.6. - From Frederic Devernay . - -1998-11-06 Raja R Harinath - - * gnome-support.m4: Fix stupid type (sterror_r -> strerror_r). - -1998-11-04 Raja R Harinath - - * gnome-support.m4 (need_gnome_support): Set this unconditionally - to `yes'. We'll soon be losing this variable. - -1998-10-20 Andrew Veliath - - * gnome-orbit-check.m4 (GNOME_ORBIT_HOOK): Add ORBIT_IDL - detection; fix failure flag. - -1998-10-12 Martin Baulig - - * compiler-flags.m4 (warnCFLAGS): Added `-Wno-unused'. - -1998-10-11 Martin Baulig - - * gnome-libgtop-sysdeps.m4 (libgtop_postinstall): Use `:' instead - of the empty string if there is nothing to do since the empty string - is no valid shell sytax. - -1998-10-11 Marius Vollmer - - * gnome-guile-checks.m4: Check for "guile-config" and then for - "build-guile", if guile-config couldn't be found. Do not - explicitely include output from "info libdir", it is already - included in "link". Use "compile" instead of "info includedir". Do - not include "1.2" in error message when Guile can't be found at - all. - -1998-10-11 Martin Baulig - - * gnome-libgtop-check.m4 (GNOME_INIT_LIBGTOP): Added optional - third parameter which is the `script-if-enabled' parameter of - the GNOME_LIBGTOP_HOOOK. - -1998-10-05 Karl Eichwalder - - * gnome-xml-check.m4: Fix typo while signaling the error. - -1998-10-05 Raja R Harinath - - * compiler-flags.m4 (warnCFLAGS): Remove `-W'. - (warn-unused): Remove. - -1998-10-01 Martin Baulig - - * gnome-libgtop-sysdeps.m4 (libgtop_postinstall): - Added `AC_SUBST(libgtop_postinstall)'. This is used in - `src/daemon/Makefile.am' to make the server suid root or - sgid kmem if required. - -1998-09-28 Martin Baulig - - * gnome-libgtop-check.m4: Make it accept libgtop >= 0.25.0 again. - - * gnome-libgtop-sysdeps.m4: Make the default not to build the - LibGTop examples. - - * compiler-flags.m4 (--enable-warn-unused): New configure parameter - to add `-Wunused' to the warning flags. - -1998-09-27 Martin Baulig - - * gnome-libgtop-check.m4: Make it require libgtop >= 0.26.2. - -1998-09-24 Raja R Harinath - - * gnome-ghttp-check.m4: Add checks for -lsocket -lnsl. - -1998-09-18 Raja R Harinath - - * gnome-support.m4: Remove commented out code. - -1998-09-12 Martin Baulig - - * gnome-libgtop-sysdeps.m4: Added (AC_SUBST): `libgtop_have_sysinfo'. - -1998-09-09 Martin Baulig - - * gnome-libgtop-sysdeps.m4: Added check for SMP support. - (--with-libgtop-smp): New parameter, default is to enable - it only if you're running configure on a SMP system. - Added (AC_DEFINE): `HAVE_LIBGTOP_SMP' if enabled. - (LIBGTOP_SMP): New automake conditional. - -1998-09-02 Raja R Harinath - - * gnome-support.m4: Remove check for `canonicalize_file_name'. - -1998-09-02 Martin Baulig - - * gnome-support.m4: Check for canonicalize_file_name () and - realpath () and add `canonicalize.o' to LIBOBJS if required. - -1998-08-30 Martin Baulig - - * gnome-libgtop-check.m4: Added (AC_SUBST): `LIBGTOP_VERSION_CODE'. - Added (AC_DEFINE_UNQUOTED): `LIBGTOP_VERSION', `LIBGTOP_VERSION_CODE', - `LIBGTOP_{MAJOR,MINOR,MICRO,SERVER}_VERSION'. - -1998-08-29 Martin Baulig - - * gnome-libgtop-check.m4: Make it require libgtop >= 0.26.0. - Added (AC_SUBST): `LIBGTOP_INTERFACE_AGE' and `LIBGTOP_BINARY_AGE'. - -1998-08-27 Christopher Blizzard - - * gnome-ghttp-check.m4: Umm...I think this works better. Doesn't - break anything anyway. - Oooo...it actually works now. Forgot a , - -1998-08-26 Martin Baulig - - * gnome-libgtop-check.m4 (GNOME_INIT_LIBGTOP): Make it work - with a brain-dead /bin/sh and a brain-dead /bin/test. - - * gnome-libgtop-check.m4 (GNOME_INIT_LIBGTOP): Use `AC_MSG_WARN' - if LibGTop cannot be found and the `fail' argument is not given. - -1998-08-24 Martin Baulig - - * gnome-support.m4 (GCC_NEED_DECLARATIONS): Added `setreuid', - `setregid' and `getpagesize'. - (AC_TYPE_UID_T): New check. - -1998-08-24 Christopher Blizzard - - * Makefile.am (MACROS): Add gnome-ghttp-check.m4 to the Makefile. - -1998-08-23 Martin Baulig - - * gnome-libgtop-check.m4 (GNOME_INIT_LIBGTOP): You can give - this macro two parameters: the required version number and - an optional `fail' argument to make it fail if LibGTop is - not found. - -1998-08-22 Martin Baulig - - * gnome-guile-checks.m4: Added check for `-lnsl' and `-lsocket' - if `build-guile' cannot be found. - -1998-08-20 Raja R Harinath - - * compiler-flags.m4: New file. Defines the - GNOME_COMPILER_WARNINGS macro. - * autogen.sh (conf_flags): Add `--enable-compile-warnings' to list - of flags passed to `configure'. - * Makefile.am (MACROS): Add compiler-flags.m4. - -1998-08-18 Martin Baulig - - * gnome-libgtop-check.m4: make it require libgtop >= 0.25.0. - Added (AC_SUBST): `LIBGTOP_MICRO_VERSION' and `LIBGTOP_EXTRA_LIBS'. - -1998-08-17 Martin Baulig - - * gnome-libgtop-check.m4: Completely rewrote this file. It - uses now the `libgtop-config' script and also checks for - correct libgtop version. - -1998-08-06 Martin Baulig - - * gnome-libgtop-sysdeps.m4: Added `freebsd' directory. - -1998-08-04 Raja R Harinath - - * gnome-x-checks.m4: Define USE_DEVGTK unconditionally to `true'. - -1998-08-04 Stuart Parmenter - - * gnome-x-checks.m4: (AM_PATH_GTK) make it require GTK >= 1.1.1 - dnl'd the dev_gtk since they will have to anyways. - -1998-08-04 Sebastian Wilhelmi - - * gnome.m4: (GNOME_INIT_HOOK): Call $1 also, if `gnome-config' is - found and used - -1998-08-02 Raja R Harinath - - * gnome.m4 (GNOME_CONFIG): Use the `gnome-config' program if it - exists. - -1998-08-01 Raja R Harinath - - * Makefile.am (EXTRA_DIST): Remove `macros.dep'. - -1998-07-30 Martin Baulig - - * gnome-libgtop-check.m4 (GNOME_LIBGTOP_TYPES): New macro. - Checks for `u_int64_t' and `int64_t'. - -1998-07-29 Martin Baulig - - * gnome-libgtop-check.m4: Added (AC_SUBST): - `LIBGTOP_NAMES_LIBS', `LIBGTOP_NAMES_INCS', - `LIBGTOP_GUILE_LIBS', `LIBGTOP_GUILE_NAMES_LIBS', - `LIBGTOP_MAJOR_VERSION', `LIBGTOP_MINOR_VERSION', - `LIBGTOP_VERSION'. - - * gnome-libgtop-sysdeps.m4 (libgtop_sysdeps_dir): - Added `AC_SUBST(libgtop_sysdeps_dir)'. - -1998-07-29 Raja R Harinath - - * gnome-support.m4: Check for functions that `error.c' looks for. - -1998-07-29 Martin Baulig - - * gnome-fileutils.m4 (AM_FUNC_ERROR_AT_LINE): Removed. - - * gnome-support.m4 (AM_FUNC_ERROR_AT_LINE): New check. - -1998-07-27 Federico Mena Quintero - - * gnome-x-checks.m4: Changed Gtk version test to use - GTK_HAVE_FEATURES_1_1_0. - -Sun Jul 26 13:59:53 EDT 1998 Daniel Veillard - - * Makefile.am (MACROS): Added gnome-xml-check.m4 - * gnome-xml-check.m4: New file. - -1998-07-24 Martin Baulig - - * gnome-libgtop-check.m4: No longer requiring - `GNOME_LIBGTOP_SYSDEPS'. - -Fri Jul 24 00:45:38 1998 Tom Tromey - - * Makefile.am (MACROS): Added linger.m4. - * linger.m4: New file. - -Thu Jul 23 22:41:23 1998 Tom Tromey - - * Makefile.am (MACROS): Added gnome-undelfs.m4, gnome-vfs.m4. - * gnome-undelfs.m4: New file. - * gnome-vfs.m4: New file. - -1998-07-22 Martin Baulig - - * gnome-fileutils.m4: Added some reasonable defaults to allow - cross compiling; removed `mountlist.o' and `fsusage.o' from - LIBOBJS. - -Tue Jul 21 23:44:53 1998 Tom Tromey - - * gnome-guile-checks.m4: If no build-guile, link against readline - before termcap. - -1998-07-15 Raja R Harinath - - * Makefile.am (MACROS): Add `need-declaration.m4'. - - * gnome-support.m4 (AC_REPLACE_FUNCS): Add memmove, strtod, - strtol, strtoul. - (GCC_NEED_DECLARATIONS): New check. Check whether `gethostname' - needs to be declared. - - * need-declaration.m4: New file. Stolen from EGCS. - -1998-07-13 Raja R Harinath - - * gnome-support.m4 (AC_REPLACE_FUNCS): Add check for `mkstemp'. - -Wed Jul 1 13:50:39 1998 Scott D. Heavner - - * curses.m4: add some docs and start using with tcd - -1998-06-29 Raja R Harinath - - * Makefile.am (MACROS): Add all the `.m4' files here. - -Mon Jun 29 11:12:04 1998 Scott D. Heavner - - * curses.m4: Need AC_SUBST(CURSES_INCLUDEDIR) not CURSES_INCLUDES - -Mon Jun 29 10:35:22 1998 Scott D. Heavner - - * curses.m4: rm conftext* should read rm conftest*, was leaving - conftest.c files around. - -1998-06-27 Christopher Blizzard - - * gnome-objc-checks.m4: Use egcs if it's available. The gcc that - ships with RedHat 5.1 doesn't do objc, egcs does. - -Fri Jun 26 14:36:08 1998 Scott D. Heavner - - * curses.m4 (AC_CHECK_CURSES): New check. mangled out of mc's - configure.in - -1998-06-24 Raja R Harinath - - * gnome-fileutils.m4 (AM_FUNC_ERROR_AT_LINE): New check. - (vprintf): New check. - (ftruncate.c): Remove check. - This needs to be further cleaned up to only list what is - needed for gdiskfree. - * Makefile.am (MACROS): Add gnome-fileutils.m4. - -1998-06-14 Martin Baulig - - * gnome-libgtop-sysdeps.m4 (LINUX_TABLE): New automake conditional; - also defines HAVE_LINUX_TABLE. - -1998-06-13 Martin Baulig - - * gnome-libgtop-sysdeps.m4: Added check for the table () - system call in the linux kernel. - -1998-06-11 Raja R Harinath - - * gnome-x-checks.m4 (USE_DEVGTK): Use AC_EGREP_CPP rather than - AC_CHECK_HEADER. AC_CHECK_HEADER is fooled by warnings. - - * gnome-support.m4 (AC_PROG_AWK): Look for awk. - (CROSS_COMPILING): Remove conditional. - -Wed Jun 10 14:19:39 EDT 1998 Gregory McLean - - * gnome-x-checks.m4: More tweeks to make building against gtk 1.0 - and gtk1.1 less painful. - -1998-06-08 Martin Baulig - - * gnome-support.m4 (CROSS_COMPILING): New automake conditional; - (need_gnome_support): added `AC_SUBST(need_gnome_support)'. - -1998-06-07 Martin Baulig - - * gnome-guile-checks.m4 (GNOME_CHECK_GUILE): When - cross-compiling, we now check for `$host_alias-buile-guile'. - -1998-06-03 Martin Baulig - - * gnome-guile-checks.m4 (GNOME_CHECK_GUILE): Looks also - in $GNOME_LIBDIR; added failflag: GNOME_CHECK_GUILE(fail) - will abort if guile cannot be found. - -1998-05-23 Martin Baulig - - * gnome-libgtop-sysdeps.m4 (GNOME_LIBGTOP_HOOK): - (libgtop_use_machine_h): Set this to true on SunOS. - -1998-05-22 Martin Baulig - - * gnome-fileutils.m4 (GNOME_FILEUTILS_CHECKS): New file. - Imported from `configure.in' in GNU fileutils 3.16. It does - all the checks that are needed for the diskusage applet. - -1998-05-22 Martin Baulig - - * gnome-libgtop-check.m4 (GNOME_LIBGTOP_HOOK): New file. - Checks whether libgtop is installed and reads its `libgtopConf.sh' - file if it can be found. Defines HAVE_LIBGTOP on success and - provides HAVE_LIBGTOP automake conditional. - -1998-05-21 Martin Baulig - - * gnome-libgtop-sysdeps.m4 (GNOME_LIBGTOP_SYSDEPS): New file. - (libgtop_sysdeps_dir): sysdeps directory libgtop uses. - (libgtop_use_machine_h): define HAVE_GLIBTOP_MACHINE_H if this - is `yes'. - (libgtop_need_server): we only need the libgtop server, when - this has a value of `yes'. Defines NEED_LIBGTOP and NEED_LIBGTOP - automake conditional. - -1998-05-19 Raja R Harinath - - * gnome-support.m4 (strerror): New check. - (sys_errlist): Check for this variable, needed for `strerror'. - (program_invocation_name, program_invocation_short_name): Change - method used to check for these. - -1998-05-09 Raja R Harinath - - * autogen.sh: Remove simple-minded check for `gtk+'. - -Fri Apr 24 16:43:38 1998 Owen Taylor - - * autogen.sh: Pass the results of the environment variable - ACLOCAL_FLAGS to aclocal. This allows, for instance, - - ACLOCAL_FLAGS="-I /home/owen/share/aclocal/" autogen.sh - -Sun Apr 19 01:35:53 EDT 1998 Gregory McLean - - * gnome-x-checks.m4: Updated the gtk check to check for 1.0.0. - -1998-04-08 Raja R Harinath - - * autogen.sh: Update to list newer versions of packages. - * gnome-support.m4: Add `scandir' to AC_REPLACE_FUNCS. - Also run AC_HEADER_DIRENT. - -1998-03-31 Raja R Harinath - - * gnome-support.m4 (AC_REPLACE_FUNCS): Look for vasprintf. - -Thu Mar 19 23:23:30 1998 Tom Tromey - - * gnome.m4: An empty true branch of an `if' statement is not valid - sh syntax. If GNOME_INIT_HOOK argument $1 is empty, use ":" - instead. - -1998-03-19 Miguel de Icaza - - * gnome.m4 (GNOME_INIT_HOOK): Provide a way to hook some code to - execute; Accept a probe mode. - - (GNOME_INIT): Define in terms of GNOME_INIT_HOOK. - -Thu Mar 19 00:17:46 1998 Tom Tromey - - * gnome-support.m4: Cache results of check for - program_invocation_short_name, program_invocation_name. Check to - make sure argp functions are in a library. - - * gnome-support.m4: Cache results of argp check. - -Sun Mar 15 15:54:43 1998 Owen Taylor - - * gnome-x-checks.m4: Replaced checks for X and GTK - with AM_PATH_GTK. x_include, X_LIBS, etc, variables no longer - defined. - -1998-03-12 Raja R Harinath - - * gnome-support.m4: Add a check for -- this enables - some optimizations when compiling `argp'. - -Mon Mar 9 19:32:42 1998 Tom Tromey - - * gnome-support.m4: Build vsnprintf.o, not vsnprint.o. - -1998-03-09 Raja R Harinath - - * gnome-support.m4: Add check for `vsnprintf'. - -Sun Mar 8 17:04:28 1998 Tom Tromey - - * gnome-support.m4: Set need_gnome_support shell variable. Define - BUILD_GNOME_SUPPORT automake conditional. Define LTLIBOBJS. Look - for argp_domain element in struct argp. - -Sat Mar 7 00:04:22 1998 Tom Tromey - - * gnome-support.m4 (GNOME_SUPPORT_CHECKS): Add argp-pvh.o to - LIBOBJS. - - * gnome-support.m4 (GNOME_SUPPORT_CHECKS): Check for strnlen(). - -Wed Mar 4 01:02:55 1998 Tom Tromey - - * gnome-support.m4 (GNOME_SUPPORT_CHECKS): Check for argp code, - strndup, program_invocation_name, program_invocation_short_name. - -Mon Mar 2 15:27:44 1998 Tom Tromey - - * gnome-x-checks.m4 (GNOME_X_CHECKS): Also check for SMlib.h; some - Solaris systems have -lSM but not SMlib.h. - -Sun Mar 1 17:49:42 1998 Tom Tromey - - * gnome.m4 (GNOME_INIT): Changed spacing so --help output looks - right. - -Fri Feb 27 10:05:34 1998 Tom Tromey - - * gnome-objc-checks.m4 (GNOME_CHECK_OBJC): Set OBJECTIVE_C shell - variable. - -1998-02-26 Raja R Harinath - - * gnome-x-checks.m4 (CPPFLAGS): Put $X_CFLAGS here, not in - $CFLAGS. - (GNOME_HAVE_SM): New var. `true' if we have libSM, `false' - otherwise. - -1998-02-19 Raja R Harinath - - * gnome.m4: Remove `GNOME_CHECK_GNOME'. - -1998-02-18 Raja R Harinath - - * gnome-support.m4 (GNOME_SUPPORT_CHECKS): Replace `strcasecmp' if - necessary. - -1998-02-15 Raja R Harinath - - * Makefile.am (MACROS): Add `gnome-pthread-check.m4'. - * gnome-pthread-check.m4: New file. Moved pthread check from - gnome-x-checks.m4 to here. - * gnome-objc-checks.m4: Use `gnome-pthread-check'. - (OBJC_LIBS): New config var. - * gnome-x-checks.m4: Add `AC_DEFINE(HAVE_LIBSM)' if `-lSM' is - already part of `$x_libs'. - Move pthread check to new file. - -Sat Feb 14 12:45:35 1998 Tom Tromey - - * Makefile.am (macros.dep): Use single quotes, not double quotes. - Otherwise bash will interpret `$(...)' incorrectly. - (EXTRA_DIST): Include macros.dep in distribution. - -1998-02-14 Raja R Harinath - - * Makefile.am (macros.dep): Put back doubled `$'. We want the - expansion to occur in the including Makefile, not here. - Otherwise, there will be an extra `../' in the rule. - -Sat Feb 14 17:41:28 KST 1998 Changwoo Ryu - - * autogen.sh: multilple aclocal -I directories. - -Sat Feb 14 01:09:37 1998 Tom Tromey - - * Makefile.am (macros.dep): Removed extra `$' from rule. - - * gnome-x-checks.m4: Only check for -lSM if not already in - x_libs. - -1998-02-13 Raja R Harinath - - * Makefile.am (EXTRA_DIST): Add `autogen.sh'. - - * gnome-objc-checks.m4 (GNOME_INIT_OBJC): Solaris /bin/sh doesn't - understand `test -e'. - - * autogen.sh: New file. - - * gnome.m4 (GNOME_INIT): Look for gnomeConf.sh in $libdir, where - the installation actually installs it. - - * Makefile.am (macros.dep): New maintainer rule for handling - automatic rebuilding of aclocal.m4 if any of the macros change. - (MACROS): New variable. List of all `m4' macros in this - directory. - -1998-02-12 Raja R Harinath - - * gnome-support.m4: New file. Defines GNOME_SUPPORT_CHECKS for - libsupport.a support. - -1998-02-10 Raja R Harinath - - * gnome.m4: New file. Moved AC_CHECK_GNOME from `configure.in' to - here, and renamed macro to GNOME_CHECK_GNOME. - * gnome-x-checks.m4: Likewise, move and renaming AC_GNOME_X_CHECKS - to GNOME_X_CHECKS. - - * aclocal-include.m4: New file. Defines AM_ACLOCAL_INCLUDE macro - to provide extra search directories to `aclocal'. - -*Local Variables: -*backup-inhibited: t -*End: diff --git a/macros/Makefile.am b/macros/Makefile.am deleted file mode 100644 index ed4b5fa19e..0000000000 --- a/macros/Makefile.am +++ /dev/null @@ -1,42 +0,0 @@ -## Please update this variable if any new macros are created - -MACROS= \ - aclocal-include.m4 \ - compiler-flags.m4 \ - curses.m4 \ - gnome-bonobo-check.m4 \ - gnome-fileutils.m4 \ - gnome-ghttp-check.m4 \ - gnome-gnorba-check.m4 \ - gnome-guile-checks.m4 \ - gnome-libgtop-check.m4 \ - gnome-objc-checks.m4 \ - gnome-orbit-check.m4 \ - gnome-print-check.m4 \ - gnome-pthread-check.m4 \ - gnome-support.m4 \ - gnome-undelfs.m4 \ - gnome-vfs.m4 \ - gnome-x-checks.m4 \ - gnome-xml-check.m4 \ - gnome.m4 \ - gperf-check.m4 \ - linger.m4 \ - need-declaration.m4 - -EXTRA_DIST=$(MACROS) gnome-common.m4 autogen.sh -MAINTAINERCLEANFILES=macros.dep - -@MAINT@macros.dep: Makefile.am -@MAINT@ @echo '$$(top_srcdir)/aclocal.m4: $(MACROS:%=macros/%)' > $@ - -if INSIDE_GNOME_COMMON -gnome_aclocaldir = $(datadir)/aclocal/gnome-macros - -gnome-macros.dep: Makefile.am - @echo '$$(top_srcdir)/aclocal.m4: $(MACROS:%=$(gnome_aclocaldir)/%)' > $@ - -gnome_aclocal_DATA = $(MACROS) gnome-macros.dep gnome-common.m4 \ - autogen.sh - -endif diff --git a/macros/aclocal-include.m4 b/macros/aclocal-include.m4 deleted file mode 100644 index abf6533fe4..0000000000 --- a/macros/aclocal-include.m4 +++ /dev/null @@ -1,16 +0,0 @@ -# aclocal-include.m4 -# -# This macro adds the name macrodir to the set of directories -# that `aclocal' searches for macros. - -# serial 1 - -dnl AM_ACLOCAL_INCLUDE(macrodir) -AC_DEFUN([AM_ACLOCAL_INCLUDE], -[ - AM_CONDITIONAL(INSIDE_GNOME_COMMON, test x = y) - - test -n "$ACLOCAL_FLAGS" && ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS" - - for k in $1 ; do ACLOCAL="$ACLOCAL -I $k" ; done -]) diff --git a/macros/autogen.sh b/macros/autogen.sh deleted file mode 100644 index 74b8047d1e..0000000000 --- a/macros/autogen.sh +++ /dev/null @@ -1,179 +0,0 @@ -#!/bin/sh -# Run this to generate all the initial makefiles, etc. - -DIE=0 - -if [ -n "$GNOME2_PATH" ]; then - ACLOCAL_FLAGS="-I $GNOME2_PATH/share/aclocal $ACLOCAL_FLAGS" - PATH="$GNOME2_PATH/bin:$PATH" - export PATH -fi - -(autoconf --version) < /dev/null > /dev/null 2>&1 || { - echo - echo "**Error**: You must have \`autoconf' installed to compile Gnome." - echo "Download the appropriate package for your distribution," - echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/" - DIE=1 -} - -(grep "^AM_PROG_LIBTOOL" $srcdir/configure.in >/dev/null) && { - (libtool --version) < /dev/null > /dev/null 2>&1 || { - echo - echo "**Error**: You must have \`libtool' installed to compile Gnome." - echo "Get ftp://ftp.gnu.org/pub/gnu/libtool-1.2d.tar.gz" - echo "(or a newer version if it is available)" - DIE=1 - } -} - -#grep "^AM_GNU_GETTEXT" $srcdir/configure.in >/dev/null && { -# grep "sed.*POTFILES" $srcdir/configure.in >/dev/null || \ -# (gettext --version) < /dev/null > /dev/null 2>&1 || { -# echo -# echo "**Error**: You must have \`gettext' installed to compile Gnome." -# echo "Get ftp://alpha.gnu.org/gnu/gettext-0.10.35.tar.gz" -# echo "(or a newer version if it is available)" -# DIE=1 -# } -#} - -#grep "^AM_GNOME_GETTEXT" $srcdir/configure.in >/dev/null && { -# grep "sed.*POTFILES" $srcdir/configure.in >/dev/null || \ -# (gettext --version) < /dev/null > /dev/null 2>&1 || { -# echo -# echo "**Error**: You must have \`gettext' installed to compile Gnome." -# echo "Get ftp://alpha.gnu.org/gnu/gettext-0.10.35.tar.gz" -# echo "(or a newer version if it is available)" -# DIE=1 -# } -#} - -(automake --version) < /dev/null > /dev/null 2>&1 || { - echo - echo "**Error**: You must have \`automake' installed to compile Gnome." - echo "Get ftp://ftp.gnu.org/pub/gnu/automake-1.3.tar.gz" - echo "(or a newer version if it is available)" - DIE=1 - NO_AUTOMAKE=yes -} - - -# if no automake, don't bother testing for aclocal -test -n "$NO_AUTOMAKE" || (aclocal --version) < /dev/null > /dev/null 2>&1 || { - echo - echo "**Error**: Missing \`aclocal'. The version of \`automake'" - echo "installed doesn't appear recent enough." - echo "Get ftp://ftp.gnu.org/pub/gnu/automake-1.3.tar.gz" - echo "(or a newer version if it is available)" - DIE=1 -} - -if test "$DIE" -eq 1; then - exit 1 -fi - -if test -z "$*"; then - echo "**Warning**: I am going to run \`configure' with no arguments." - echo "If you wish to pass any to it, please specify them on the" - echo \`$0\'" command line." - echo -fi - -case $CC in -xlc ) - am_opt=--include-deps;; -esac - -for coin in `find $srcdir -name configure.in -print` -do - dr=`dirname $coin` - if test -f $dr/NO-AUTO-GEN; then - echo skipping $dr -- flagged as no auto-gen - else - echo processing $dr - macrodirs=`sed -n -e 's,AM_ACLOCAL_INCLUDE(\(.*\)),\1,gp' < $coin` - ( cd $dr - macrosdir=`find . -name macros -print` - for i in $macrodirs; do - if test -f $i/gnome-gettext.m4; then - DELETEFILES="$DELETEFILES $i/gnome-gettext.m4" - fi - done - - echo "deletefiles is $DELETEFILES" - aclocalinclude="$ACLOCAL_FLAGS" - for k in $aclocalinclude; do - if test -d $k; then - if [ -f $k/gnome.m4 -a "$GNOME_INTERFACE_VERSION" = "1" ]; then - rm -f $DELETEFILES - fi - fi - done - for k in $macrodirs; do - if test -d $k; then - aclocalinclude="$aclocalinclude -I $k" - if [ -f $k/gnome.m4 -a "$GNOME_INTERFACE_VERSION" = "1" ]; then - rm -f $DELETEFILES - fi - fi - done - if grep "^AM_GNU_GETTEXT" configure.in >/dev/null; then - if grep "sed.*POTFILES" configure.in >/dev/null; then - : do nothing -- we still have an old unmodified configure.in - else - echo "Creating $dr/aclocal.m4 ..." - test -r $dr/aclocal.m4 || touch $dr/aclocal.m4 - echo "Running gettextize... Ignore non-fatal messages." - echo "no" | gettextize --force --copy - echo "Making $dr/aclocal.m4 writable ..." - test -r $dr/aclocal.m4 && chmod u+w $dr/aclocal.m4 - fi - fi - if grep "^AM_GNOME_GETTEXT" configure.in >/dev/null; then - echo "Creating $dr/aclocal.m4 ..." - test -r $dr/aclocal.m4 || touch $dr/aclocal.m4 - echo "Running gettextize... Ignore non-fatal messages." - echo "no" | gettextize --force --copy - echo "Making $dr/aclocal.m4 writable ..." - test -r $dr/aclocal.m4 && chmod u+w $dr/aclocal.m4 - fi - if grep "^AM_PROG_LIBTOOL" configure.in >/dev/null; then - if test -z "$NO_LIBTOOLIZE" ; then - echo "Running libtoolize..." - libtoolize --force --copy - fi - fi - echo "Running aclocal $aclocalinclude ..." - aclocal $aclocalinclude || { - echo - echo "**Error**: aclocal failed. This may mean that you have not" - echo "installed all of the packages you need, or you may need to" - echo "set ACLOCAL_FLAGS to include \"-I \$prefix/share/aclocal\"" - echo "for the prefix where you installed the packages whose" - echo "macros were not found" - exit 1 - } - - if grep "^AM_CONFIG_HEADER" configure.in >/dev/null; then - echo "Running autoheader..." - autoheader || { echo "**Error**: autoheader failed."; exit 1; } - fi - echo "Running automake --gnu $am_opt ..." - automake --add-missing --gnu $am_opt || - { echo "**Error**: automake failed."; exit 1; } - echo "Running autoconf ..." - autoconf || { echo "**Error**: autoconf failed."; exit 1; } - ) || exit 1 - fi -done - -conf_flags="--enable-maintainer-mode --enable-compile-warnings" #--enable-iso-c - -if test x$NOCONFIGURE = x; then - echo Running $srcdir/configure $conf_flags "$@" ... - $srcdir/configure $conf_flags "$@" \ - && echo Now type \`make\' to compile $PKG_NAME || exit 1 -else - echo Skipping configure process. -fi diff --git a/macros/compiler-flags.m4 b/macros/compiler-flags.m4 deleted file mode 100644 index 63f8e2e6ac..0000000000 --- a/macros/compiler-flags.m4 +++ /dev/null @@ -1,109 +0,0 @@ -dnl GNOME_COMPILE_WARNINGS -dnl Turn on many useful compiler warnings -dnl For now, only works on GCC -AC_DEFUN([GNOME_COMPILE_WARNINGS],[ - AC_ARG_ENABLE(compile-warnings, - [ --enable-compile-warnings=[no/minimum/yes] Turn on compiler warnings.],,enable_compile_warnings=minimum) - - AC_MSG_CHECKING(what warning flags to pass to the C compiler) - warnCFLAGS= - if test "x$GCC" != xyes; then - enable_compile_warnings=no - fi - - if test "x$enable_compile_warnings" != "xno"; then - if test "x$GCC" = "xyes"; then - case " $CFLAGS " in - *[\ \ ]-Wall[\ \ ]*) ;; - *) warnCFLAGS="-Wall -Wunused" ;; - esac - - ## -W is not all that useful. And it cannot be controlled - ## with individual -Wno-xxx flags, unlike -Wall - if test "x$enable_compile_warnings" = "xyes"; then - warnCFLAGS="$warnCFLAGS -Wmissing-prototypes -Wmissing-declarations" - fi - fi - fi - AC_MSG_RESULT($warnCFLAGS) - - AC_ARG_ENABLE(iso-c, - [ --enable-iso-c Try to warn if code is not ISO C ],, - enable_iso_c=no) - - AC_MSG_CHECKING(what language compliance flags to pass to the C compiler) - complCFLAGS= - if test "x$enable_iso_c" != "xno"; then - if test "x$GCC" = "xyes"; then - case " $CFLAGS " in - *[\ \ ]-ansi[\ \ ]*) ;; - *) complCFLAGS="$complCFLAGS -ansi" ;; - esac - - case " $CFLAGS " in - *[\ \ ]-pedantic[\ \ ]*) ;; - *) complCFLAGS="$complCFLAGS -pedantic" ;; - esac - fi - fi - AC_MSG_RESULT($complCFLAGS) - if test "x$cflags_set" != "xyes"; then - CFLAGS="$CFLAGS $warnCFLAGS $complCFLAGS" - cflags_set=yes - AC_SUBST(cflags_set) - fi -]) - -dnl For C++, do basically the same thing. - -AC_DEFUN([GNOME_CXX_WARNINGS],[ - AC_ARG_ENABLE(cxx-warnings, - [ --enable-cxx-warnings=[no/minimum/yes] Turn on compiler warnings.],,enable_cxx_warnings=minimum) - - AC_MSG_CHECKING(what warning flags to pass to the C++ compiler) - warnCXXFLAGS= - if test "x$GCC" != xyes; then - enable_compile_warnings=no - fi - if test "x$enable_cxx_warnings" != "xno"; then - if test "x$GCC" = "xyes"; then - case " $CXXFLAGS " in - *[\ \ ]-Wall[\ \ ]*) ;; - *) warnCXXFLAGS="-Wall -Wno-unused" ;; - esac - - ## -W is not all that useful. And it cannot be controlled - ## with individual -Wno-xxx flags, unlike -Wall - if test "x$enable_cxx_warnings" = "xyes"; then - warnCXXFLAGS="$warnCXXFLAGS -Wmissing-prototypes -Wmissing-declarations -Wshadow -Woverloaded-virtual" - fi - fi - fi - AC_MSG_RESULT($warnCXXFLAGS) - - AC_ARG_ENABLE(iso-cxx, - [ --enable-iso-cxx Try to warn if code is not ISO C++ ],, - enable_iso_cxx=no) - - AC_MSG_CHECKING(what language compliance flags to pass to the C++ compiler) - complCXXFLAGS= - if test "x$enable_iso_cxx" != "xno"; then - if test "x$GCC" = "xyes"; then - case " $CXXFLAGS " in - *[\ \ ]-ansi[\ \ ]*) ;; - *) complCXXFLAGS="$complCXXFLAGS -ansi" ;; - esac - - case " $CXXFLAGS " in - *[\ \ ]-pedantic[\ \ ]*) ;; - *) complCXXFLAGS="$complCXXFLAGS -pedantic" ;; - esac - fi - fi - AC_MSG_RESULT($complCXXFLAGS) - if test "x$cxxflags_set" != "xyes"; then - CXXFLAGS="$CXXFLAGS $warnCXXFLAGS $complCXXFLAGS" - cxxflags_set=yes - AC_SUBST(cxxflags_set) - fi -]) diff --git a/macros/curses.m4 b/macros/curses.m4 deleted file mode 100644 index 3e7092685f..0000000000 --- a/macros/curses.m4 +++ /dev/null @@ -1,318 +0,0 @@ -dnl Curses detection: Munged from Midnight Commander's configure.in -dnl -dnl What it does: -dnl ============= -dnl -dnl - Determine which version of curses is installed on your system -dnl and set the -I/-L/-l compiler entries and add a few preprocessor -dnl symbols -dnl - Do an AC_SUBST on the CURSES_INCLUDEDIR and CURSES_LIBS so that -dnl @CURSES_INCLUDEDIR@ and @CURSES_LIBS@ will be available in -dnl Makefile.in's -dnl - Modify the following configure variables (these are the only -dnl curses.m4 variables you can access from within configure.in) -dnl CURSES_INCLUDEDIR - contains -I's and possibly -DRENAMED_CURSES if -dnl an ncurses.h that's been renamed to curses.h -dnl is found. -dnl CURSES_LIBS - sets -L and -l's appropriately -dnl CFLAGS - if --with-sco, add -D_SVID3 -dnl has_curses - exports result of tests to rest of configure -dnl -dnl Usage: -dnl ====== -dnl 1) Add lines indicated below to acconfig.h -dnl 2) call AC_CHECK_CURSES after AC_PROG_CC in your configure.in -dnl 3) Instead of #include you should use the following to -dnl properly locate ncurses or curses header file -dnl -dnl #if defined(USE_NCURSES) && !defined(RENAMED_NCURSES) -dnl #include -dnl #else -dnl #include -dnl #endif -dnl -dnl 4) Make sure to add @CURSES_INCLUDEDIR@ to your preprocessor flags -dnl 5) Make sure to add @CURSES_LIBS@ to your linker flags or LIBS -dnl -dnl Notes with automake: -dnl - call AM_CONDITIONAL(HAS_CURSES, test "$has_curses" = true) from -dnl configure.in -dnl - your Makefile.am can look something like this -dnl ----------------------------------------------- -dnl INCLUDES= blah blah blah $(CURSES_INCLUDEDIR) -dnl if HAS_CURSES -dnl CURSES_TARGETS=name_of_curses_prog -dnl endif -dnl bin_PROGRAMS = other_programs $(CURSES_TARGETS) -dnl other_programs_SOURCES = blah blah blah -dnl name_of_curses_prog_SOURCES = blah blah blah -dnl other_programs_LDADD = blah -dnl name_of_curses_prog_LDADD = blah $(CURSES_LIBS) -dnl ----------------------------------------------- -dnl -dnl -dnl The following lines should be added to acconfig.h: -dnl ================================================== -dnl -dnl /*=== Curses version detection defines ===*/ -dnl /* Found some version of curses that we're going to use */ -dnl #undef HAS_CURSES -dnl -dnl /* Use SunOS SysV curses? */ -dnl #undef USE_SUNOS_CURSES -dnl -dnl /* Use old BSD curses - not used right now */ -dnl #undef USE_BSD_CURSES -dnl -dnl /* Use SystemV curses? */ -dnl #undef USE_SYSV_CURSES -dnl -dnl /* Use Ncurses? */ -dnl #undef USE_NCURSES -dnl -dnl /* If you Curses does not have color define this one */ -dnl #undef NO_COLOR_CURSES -dnl -dnl /* Define if you want to turn on SCO-specific code */ -dnl #undef SCO_FLAVOR -dnl -dnl /* Set to reflect version of ncurses * -dnl * 0 = version 1.* -dnl * 1 = version 1.9.9g -dnl * 2 = version 4.0/4.1 */ -dnl #undef NCURSES_970530 -dnl -dnl /*=== End new stuff for acconfig.h ===*/ -dnl - - -AC_DEFUN(AC_CHECK_CURSES,[ - search_ncurses=true - screen_manager="" - has_curses=false - - CFLAGS=${CFLAGS--O} - - AC_SUBST(CURSES_LIBS) - AC_SUBST(CURSES_INCLUDEDIR) - - AC_ARG_WITH(sco, - [ --with-sco Use this to turn on SCO-specific code],[ - if test x$withval = xyes; then - AC_DEFINE(SCO_FLAVOR) - CFLAGS="$CFLAGS -D_SVID3" - fi - ]) - - AC_ARG_WITH(sunos-curses, - [ --with-sunos-curses Used to force SunOS 4.x curses],[ - if test x$withval = xyes; then - AC_USE_SUNOS_CURSES - fi - ]) - - AC_ARG_WITH(osf1-curses, - [ --with-osf1-curses Used to force OSF/1 curses],[ - if test x$withval = xyes; then - AC_USE_OSF1_CURSES - fi - ]) - - AC_ARG_WITH(vcurses, - [ --with-vcurses[=incdir] Used to force SysV curses], - if test x$withval != xyes; then - CURSES_INCLUDEDIR="-I$withval" - fi - AC_USE_SYSV_CURSES - ) - - AC_ARG_WITH(ncurses, - [ --with-ncurses[=dir] Compile with ncurses/locate base dir], - if test x$withval = xno ; then - search_ncurses=false - elif test x$withval != xyes ; then - CURSES_LIBS="$LIBS -L$withval/lib -lncurses" - CURSES_INCLUDEDIR="-I$withval/include" - search_ncurses=false - screen_manager="ncurses" - AC_DEFINE(USE_NCURSES) - AC_DEFINE(HAS_CURSES) - has_curses=true - fi - ) - - if $search_ncurses - then - AC_SEARCH_NCURSES() - fi - - -]) - - -AC_DEFUN(AC_USE_SUNOS_CURSES, [ - search_ncurses=false - screen_manager="SunOS 4.x /usr/5include curses" - AC_MSG_RESULT(Using SunOS 4.x /usr/5include curses) - AC_DEFINE(USE_SUNOS_CURSES) - AC_DEFINE(HAS_CURSES) - has_curses=true - AC_DEFINE(NO_COLOR_CURSES) - AC_DEFINE(USE_SYSV_CURSES) - CURSES_INCLUDEDIR="-I/usr/5include" - CURSES_LIBS="/usr/5lib/libcurses.a /usr/5lib/libtermcap.a" - AC_MSG_RESULT(Please note that some screen refreshs may fail) -]) - -AC_DEFUN(AC_USE_OSF1_CURSES, [ - AC_MSG_RESULT(Using OSF1 curses) - search_ncurses=false - screen_manager="OSF1 curses" - AC_DEFINE(HAS_CURSES) - has_curses=true - AC_DEFINE(NO_COLOR_CURSES) - AC_DEFINE(USE_SYSV_CURSES) - CURSES_LIBS="-lcurses" -]) - -AC_DEFUN(AC_USE_SYSV_CURSES, [ - AC_MSG_RESULT(Using SysV curses) - AC_DEFINE(HAS_CURSES) - has_curses=true - AC_DEFINE(USE_SYSV_CURSES) - search_ncurses=false - screen_manager="SysV/curses" - CURSES_LIBS="-lcurses" -]) - -dnl AC_ARG_WITH(bsd-curses, -dnl [--with-bsd-curses Used to compile with bsd curses, not very fancy], -dnl search_ncurses=false -dnl screen_manager="Ultrix/cursesX" -dnl if test $system = ULTRIX -dnl then -dnl THIS_CURSES=cursesX -dnl else -dnl THIS_CURSES=curses -dnl fi -dnl -dnl CURSES_LIBS="-l$THIS_CURSES -ltermcap" -dnl AC_DEFINE(HAS_CURSES) -dnl has_curses=true -dnl AC_DEFINE(USE_BSD_CURSES) -dnl AC_MSG_RESULT(Please note that some screen refreshs may fail) -dnl AC_MSG_WARN(Use of the bsdcurses extension has some) -dnl AC_MSG_WARN(display/input problems.) -dnl AC_MSG_WARN(Reconsider using xcurses) -dnl) - - -dnl -dnl Parameters: directory filename cureses_LIBS curses_INCLUDEDIR nicename -dnl -AC_DEFUN(AC_NCURSES, [ - if $search_ncurses - then - if test -f $1/$2 - then - AC_MSG_RESULT(Found ncurses on $1/$2) - CURSES_LIBS="$3" - CURSES_INCLUDEDIR="$4" - search_ncurses=false - screen_manager=$5 - AC_DEFINE(HAS_CURSES) - has_curses=true - AC_DEFINE(USE_NCURSES) - fi - fi -]) - -AC_DEFUN(AC_SEARCH_NCURSES, [ - AC_CHECKING("location of ncurses.h file") - - AC_NCURSES(/usr/include, ncurses.h, -lncurses,, "ncurses on /usr/include") - AC_NCURSES(/usr/include/ncurses, ncurses.h, -lncurses, -I/usr/include/ncurses, "ncurses on /usr/include/ncurses") - AC_NCURSES(/usr/local/include, ncurses.h, -L/usr/local/lib -lncurses, -I/usr/local/include, "ncurses on /usr/local") - AC_NCURSES(/usr/local/include/ncurses, ncurses.h, -L/usr/local/lib -L/usr/local/lib/ncurses -lncurses, -I/usr/local/include/ncurses, "ncurses on /usr/local/include/ncurses") - - AC_NCURSES(/usr/local/include/ncurses, curses.h, -L/usr/local/lib -lncurses, -I/usr/local/include/ncurses -DRENAMED_NCURSES, "renamed ncurses on /usr/local/.../ncurses") - - AC_NCURSES(/usr/include/ncurses, curses.h, -lncurses, -I/usr/include/ncurses -DRENAMED_NCURSES, "renamed ncurses on /usr/include/ncurses") - - dnl - dnl We couldn't find ncurses, try SysV curses - dnl - if $search_ncurses - then - AC_EGREP_HEADER(init_color, /usr/include/curses.h, - AC_USE_SYSV_CURSES) - AC_EGREP_CPP(USE_NCURSES,[ -#include -#ifdef __NCURSES_H -#undef USE_NCURSES -USE_NCURSES -#endif -],[ - CURSES_INCLUDEDIR="$CURSES_INCLUDEDIR -DRENAMED_NCURSES" - AC_DEFINE(HAS_CURSES) - has_curses=true - AC_DEFINE(USE_NCURSES) - search_ncurses=false - screen_manager="ncurses installed as curses" -]) - fi - - dnl - dnl Try SunOS 4.x /usr/5{lib,include} ncurses - dnl The flags USE_SUNOS_CURSES, USE_BSD_CURSES and BUGGY_CURSES - dnl should be replaced by a more fine grained selection routine - dnl - if $search_ncurses - then - if test -f /usr/5include/curses.h - then - AC_USE_SUNOS_CURSES - fi - else - # check for ncurses version, to properly ifdef mouse-fix - AC_MSG_CHECKING(for ncurses version) - ncurses_version=unknown -cat > conftest.$ac_ext < -#else -#include -#endif -#undef VERSION -VERSION:NCURSES_VERSION -EOF - if (eval "$ac_cpp conftest.$ac_ext") 2>&AC_FD_CC | - egrep "VERSION:" >conftest.out 2>&1; then -changequote(,)dnl - ncurses_version=`cat conftest.out|sed -e 's/^[^"]*"//' -e 's/".*//'` -changequote([,])dnl - fi - rm -rf conftest* - AC_MSG_RESULT($ncurses_version) - case "$ncurses_version" in -changequote(,)dnl - 4.[01]) -changequote([,])dnl - AC_DEFINE(NCURSES_970530,2) - ;; - 1.9.9g) - AC_DEFINE(NCURSES_970530,1) - ;; - 1*) - AC_DEFINE(NCURSES_970530,0) - ;; - esac - fi -]) - - - - - diff --git a/macros/gnome-bonobo-check.m4 b/macros/gnome-bonobo-check.m4 deleted file mode 100644 index 95949cc2db..0000000000 --- a/macros/gnome-bonobo-check.m4 +++ /dev/null @@ -1,166 +0,0 @@ -# Configure paths for Bonobo -# Miguel de Icaza, 99-04-12 -# Stolen from Chris Lahey 99-2-5 -# stolen from Manish Singh again -# stolen back from Frank Belew -# stolen from Manish Singh -# Shamelessly stolen from Owen Taylor - -dnl AM_PATH_BONOBO ([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) -dnl Test for Bonobo, and define BONOBO_CFLAGS and BONOBO_LIBS -dnl -AC_DEFUN([AM_PATH_BONOBO], -[ -dnl -dnl Get the cflags and libraries from the gnome-config script -dnl -AC_ARG_WITH(bonobo-prefix,[ --with-bonobo-prefix=PFX Prefix where Bonobo is installed (optional)], - bonobo_prefix="$withval", bonobo_prefix="") -AC_ARG_WITH(bonobo-exec-prefix,[ --with-bonobo-exec-prefix=PFX Exec prefix where Bonobo is installed (optional)], - bonobo_exec_prefix="$withval", bonobo_exec_prefix="") -AC_ARG_ENABLE(bonobotest, [ --disable-bonobotest Do not try to compile and run a test Bonobo program], - , enable_bonobotest=yes) - - if test x$bonobo_exec_prefix != x ; then - bonobo_args="$bonobo_args --exec-prefix=$bonobo_exec_prefix" - if test x${GNOME_CONFIG+set} != xset ; then - GNOME_CONFIG=$bonobo_exec_prefix/bin/gnome-config - fi - fi - if test x$bonobo_prefix != x ; then - bonobo_args="$bonobo_args --prefix=$bonobo_prefix" - if test x${GNOME_CONFIG+set} != xset ; then - GNOME_CONFIG=$bonobo_prefix/bin/gnome-config - fi - fi - - AC_PATH_PROG(GNOME_CONFIG, gnome-config, no) - min_bonobo_version=ifelse([$1], ,0.1.0,$1) - AC_MSG_CHECKING(for BONOBO - version >= $min_bonobo_version) - no_bonobo="" - if test "$GNOME_CONFIG" = "no" ; then - no_bonobo=yes - else - BONOBO_CFLAGS=`$GNOME_CONFIG $bonoboconf_args --cflags bonobo` - BONOBO_LIBS=`$GNOME_CONFIG $bonoboconf_args --libs bonobo` - - bonobo_major_version=`$GNOME_CONFIG $bonobo_args --version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` - bonobo_minor_version=`$GNOME_CONFIG $bonobo_args --version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` - bonobo_micro_version=`$GNOME_CONFIG $bonobo_config_args --version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` - if test "x$enable_bonobotest" = "xyes" ; then - ac_save_CFLAGS="$CFLAGS" - ac_save_LIBS="$LIBS" - CFLAGS="$CFLAGS $BONOBO_CFLAGS" - LIBS="$LIBS $BONOBO_LIBS" -dnl -dnl Now check if the installed BONOBO is sufficiently new. (Also sanity -dnl checks the results of gnome-config to some extent -dnl - rm -f conf.bonobotest - AC_TRY_RUN([ -#include -#include -#include -#include - -static char* -my_strdup (char *str) -{ - char *new_str; - - if (str) - { - new_str = malloc ((strlen (str) + 1) * sizeof(char)); - strcpy (new_str, str); - } - else - new_str = NULL; - - return new_str; -} - -int main () -{ - int major, minor, micro; - char *tmp_version; - - system ("touch conf.bonobotest"); - bonobo_object_get_type (); - return 0; -} - -],, no_bonobo=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) - CFLAGS="$ac_save_CFLAGS" - LIBS="$ac_save_LIBS" - fi - fi - if test "x$no_bonobo" = x ; then - AC_MSG_RESULT(yes) - ifelse([$2], , :, [$2]) - else - AC_MSG_RESULT(no) - if test "$GNOME_CONFIG" = "no" ; then - echo "*** The gnome-config script installed by GNOME-LIBS could not be found" - echo "*** If BONOBO was installed in PREFIX, make sure PREFIX/bin is in" - echo "*** your path, or set the GNOME_CONFIG environment variable to the" - echo "*** full path to gnome-config." - else - if test -f conf.bonobotest ; then - : - else - echo "*** Could not run BONOBO test program, checking why..." - CFLAGS="$CFLAGS $BONOBO_CFLAGS" - LIBS="$LIBS $BONOBO_LIBS" - AC_TRY_LINK([ -#include -#include -], [ return 0; ], - [ echo "*** The test program compiled, but did not run. This usually means" - echo "*** that the run-time linker is not finding BONOBO or finding the wrong" - echo "*** version of BONOBO. If it is not finding BONOBO, you'll need to set your" - echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" - echo "*** to the installed location Also, make sure you have run ldconfig if that" - echo "*** is required on your system" - echo "***" - echo "*** If you have an old version installed, it is best to remove it, although" - echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"], - [ echo "*** The test program failed to compile or link. See the file config.log for the" - echo "*** exact error that occured. This usually means BONOBO was incorrectly installed" - echo "*** or that you have moved BONOBO since it was installed. In the latter case, you" - echo "*** may want to edit the gnome-config script: $GNOME_CONFIG" ]) - CFLAGS="$ac_save_CFLAGS" - LIBS="$ac_save_LIBS" - fi - fi - BONOBO_CFLAGS="" - BONOBO_LIBS="" - ifelse([$3], , :, [$3]) - fi - AC_SUBST(BONOBO_CFLAGS) - AC_SUBST(BONOBO_LIBS) - rm -f conf.bonobotest -]) - -AC_DEFUN([BONOBO_CHECK], [ - AM_PATH_BONOBO(0.1.0,,[AC_MSG_ERROR(BONOBO not found)]) -]) - -AC_DEFUN([AM_BONOBO_USES_OAF], -[ - AC_REQUIRE([AM_PATH_BONOBO]) - - AC_MSG_CHECKING(if Bonobo uses OAF) - if ( gnome-config --libs bonobo | grep oaf ) > /dev/null 2>&1 ; then - using_oaf="yes" - AC_DEFINE(BONOBO_USES_OAF) - else - using_oaf="no" - fi - - AC_MSG_RESULT("$using_oaf") - - AM_CONDITIONAL(BONOBO_USES_OAF, test x"using_oaf" = "xyes") -]) diff --git a/macros/gnome-common.m4 b/macros/gnome-common.m4 deleted file mode 100644 index 83bb00d709..0000000000 --- a/macros/gnome-common.m4 +++ /dev/null @@ -1,14 +0,0 @@ -# gnome-common.m4 -# -# This only for packages that are not in the GNOME CVS tree. - -dnl GNOME_COMMON_INIT - -AC_DEFUN([GNOME_COMMON_INIT], -[ - GNOME_ACLOCAL_DIR="$GNOME_COMMON_MACROS_DIR" - AC_SUBST(GNOME_ACLOCAL_DIR) - - ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS" -]) - diff --git a/macros/gnome-cxx-check.m4 b/macros/gnome-cxx-check.m4 deleted file mode 100644 index 786138c5d9..0000000000 --- a/macros/gnome-cxx-check.m4 +++ /dev/null @@ -1,10 +0,0 @@ -dnl GNOME_CHECK_CXX(not_found_string) -AC_DEFUN(GNOME_CHECK_CXX, -[ - # see if a C++ compiler exists and works - AC_REQUIRE([AC_PROG_CXX])dnl - if test "x$ac_cv_prog_cxx_works" = xno; then - AC_MSG_WARN(ifelse([$1], , "No C++ compiler", [$1])) - fi - AM_CONDITIONAL(CXX_PRESENT, test "x$ac_cv_prog_cxx_works" != xno) -]) diff --git a/macros/gnome-fileutils.m4 b/macros/gnome-fileutils.m4 deleted file mode 100644 index 7c11a785aa..0000000000 --- a/macros/gnome-fileutils.m4 +++ /dev/null @@ -1,414 +0,0 @@ -dnl -dnl GNOME_FILEUTILS_CHECKS -dnl -dnl checks that are needed for the diskusage applet. -dnl - -AC_DEFUN([GNOME_FILEUTILS_CHECKS], -[ -AC_CHECK_HEADERS(fcntl.h sys/param.h sys/statfs.h sys/fstyp.h \ -mnttab.h mntent.h sys/statvfs.h sys/vfs.h sys/mount.h \ -sys/filsys.h sys/fs_types.h sys/fs/s5param.h) - -AC_CHECK_FUNCS(bcopy endgrent endpwent fchdir ftime ftruncate \ -getcwd getmntinfo gettimeofday isascii lchown \ -listmntent memcpy mkfifo strchr strerror strrchr vprintf) - -dnl Set some defaults when cross-compiling - -if test x$cross_compiling = xyes ; then - case "$host_os" in - linux*) - fu_cv_sys_mounted_getmntent1=yes - fu_cv_sys_stat_statfs2_bsize=yes - ;; - sunos*) - fu_cv_sys_stat_statfs4=yes - ;; - freebsd*) - fu_cv_sys_stat_statfs2_bsize=yes - ;; - osf*) - fu_cv_sys_stat_statfs3_osf1=yes - ;; - esac -fi - -# Determine how to get the list of mounted filesystems. -list_mounted_fs= - -# If the getmntent function is available but not in the standard library, -# make sure LIBS contains -lsun (on Irix4) or -lseq (on PTX). -AC_FUNC_GETMNTENT - -# This test must precede the ones for getmntent because Unicos-9 is -# reported to have the getmntent function, but its support is incompatible -# with other getmntent implementations. - -# NOTE: Normally, I wouldn't use a check for system type as I've done for -# `CRAY' below since that goes against the whole autoconf philosophy. But -# I think there is too great a chance that some non-Cray system has a -# function named listmntent to risk the false positive. - -if test -z "$list_mounted_fs"; then -# Cray UNICOS 9 -AC_MSG_CHECKING([for listmntent of Cray/Unicos-9]) -AC_CACHE_VAL(fu_cv_sys_mounted_cray_listmntent, -[fu_cv_sys_mounted_cray_listmntent=no -AC_EGREP_CPP(yes, -[#ifdef _CRAY -yes -#endif -], [test $ac_cv_func_listmntent = yes \ -&& fu_cv_sys_mounted_cray_listmntent=yes] -) -] -) -AC_MSG_RESULT($fu_cv_sys_mounted_cray_listmntent) -if test $fu_cv_sys_mounted_cray_listmntent = yes; then -list_mounted_fs=found -AC_DEFINE(MOUNTED_LISTMNTENT) -fi -fi - -if test $ac_cv_func_getmntent = yes; then - -# This system has the getmntent function. -# Determine whether it's the one-argument variant or the two-argument one. - -if test -z "$list_mounted_fs"; then -# 4.3BSD, SunOS, HP-UX, Dynix, Irix -AC_MSG_CHECKING([for one-argument getmntent function]) -AC_CACHE_VAL(fu_cv_sys_mounted_getmntent1, -[test $ac_cv_header_mntent_h = yes \ -&& fu_cv_sys_mounted_getmntent1=yes \ -|| fu_cv_sys_mounted_getmntent1=no]) -AC_MSG_RESULT($fu_cv_sys_mounted_getmntent1) -if test $fu_cv_sys_mounted_getmntent1 = yes; then -list_mounted_fs=found -AC_DEFINE(MOUNTED_GETMNTENT1) -fi -fi - -if test -z "$list_mounted_fs"; then -# SVR4 -AC_MSG_CHECKING([for two-argument getmntent function]) -AC_CACHE_VAL(fu_cv_sys_mounted_getmntent2, -[AC_EGREP_HEADER(getmntent, sys/mnttab.h, -fu_cv_sys_mounted_getmntent2=yes, -fu_cv_sys_mounted_getmntent2=no)]) -AC_MSG_RESULT($fu_cv_sys_mounted_getmntent2) -if test $fu_cv_sys_mounted_getmntent2 = yes; then -list_mounted_fs=found -AC_DEFINE(MOUNTED_GETMNTENT2) -fi -fi - -if test -z "$list_mounted_fs"; then -AC_MSG_ERROR([could not determine how to read list of mounted filesystems]) -fi - -fi - -if test -z "$list_mounted_fs"; then -# DEC Alpha running OSF/1. -AC_MSG_CHECKING([for getfsstat function]) -AC_CACHE_VAL(fu_cv_sys_mounted_getsstat, -[AC_TRY_LINK([ -#include -#include -#include ], -[struct statfs *stats; -int numsys = getfsstat ((struct statfs *)0, 0L, MNT_WAIT); ], -fu_cv_sys_mounted_getsstat=yes, -fu_cv_sys_mounted_getsstat=no)]) -AC_MSG_RESULT($fu_cv_sys_mounted_getsstat) -if test $fu_cv_sys_mounted_getsstat = yes; then -list_mounted_fs=found -AC_DEFINE(MOUNTED_GETFSSTAT) -fi -fi - -if test -z "$list_mounted_fs"; then -# AIX. -AC_MSG_CHECKING([for mntctl function and struct vmount]) -AC_CACHE_VAL(fu_cv_sys_mounted_vmount, -[AC_TRY_CPP([#include ], -fu_cv_sys_mounted_vmount=yes, -fu_cv_sys_mounted_vmount=no)]) -AC_MSG_RESULT($fu_cv_sys_mounted_vmount) -if test $fu_cv_sys_mounted_vmount = yes; then -list_mounted_fs=found -AC_DEFINE(MOUNTED_VMOUNT) -fi -fi - -if test -z "$list_mounted_fs"; then -# SVR3 -AC_MSG_CHECKING([for FIXME existence of three headers]) -AC_CACHE_VAL(fu_cv_sys_mounted_fread_fstyp, -[AC_TRY_CPP([ -#include -#include -#include ], -fu_cv_sys_mounted_fread_fstyp=yes, -fu_cv_sys_mounted_fread_fstyp=no)]) -AC_MSG_RESULT($fu_cv_sys_mounted_fread_fstyp) -if test $fu_cv_sys_mounted_fread_fstyp = yes; then -list_mounted_fs=found -AC_DEFINE(MOUNTED_FREAD_FSTYP) -fi -fi - -if test -z "$list_mounted_fs"; then -# 4.4BSD and DEC OSF/1. -AC_MSG_CHECKING([for getmntinfo function]) -AC_CACHE_VAL(fu_cv_sys_mounted_getmntinfo, -[ -ok= -if test $ac_cv_func_getmntinfo = yes; then -AC_EGREP_HEADER(f_type;, sys/mount.h, -ok=yes) -fi -test -n "$ok" \ -&& fu_cv_sys_mounted_getmntinfo=yes \ -|| fu_cv_sys_mounted_getmntinfo=no -]) -AC_MSG_RESULT($fu_cv_sys_mounted_getmntinfo) -if test $fu_cv_sys_mounted_getmntinfo = yes; then -list_mounted_fs=found -AC_DEFINE(MOUNTED_GETMNTINFO) -fi -fi - -# FIXME: add a test for netbsd-1.1 here - -if test -z "$list_mounted_fs"; then -# Ultrix -AC_MSG_CHECKING([for getmnt function]) -AC_CACHE_VAL(fu_cv_sys_mounted_getmnt, -[AC_TRY_CPP([ -#include -#include ], -fu_cv_sys_mounted_getmnt=yes, -fu_cv_sys_mounted_getmnt=no)]) -AC_MSG_RESULT($fu_cv_sys_mounted_getmnt) -if test $fu_cv_sys_mounted_getmnt = yes; then -list_mounted_fs=found -AC_DEFINE(MOUNTED_GETMNT) -fi -fi - -if test -z "$list_mounted_fs"; then -# SVR2 -AC_MSG_CHECKING([whether it is possible to resort to fread on /etc/mnttab]) -AC_CACHE_VAL(fu_cv_sys_mounted_fread, -[AC_TRY_CPP([#include ], -fu_cv_sys_mounted_fread=yes, -fu_cv_sys_mounted_fread=no)]) -AC_MSG_RESULT($fu_cv_sys_mounted_fread) -if test $fu_cv_sys_mounted_fread = yes; then -list_mounted_fs=found -AC_DEFINE(MOUNTED_FREAD) -fi -fi - -if test -z "$list_mounted_fs"; then -AC_MSG_ERROR([could not determine how to read list of mounted filesystems]) -# FIXME -- no need to abort building the whole package -# Can't build mountlist.c or anything that needs its functions -fi - -AC_CHECKING(how to get filesystem space usage) -space=no - -# Perform only the link test since it seems there are no variants of the -# statvfs function. This check is more than just AC_CHECK_FUNCS(statvfs) -# because that got a false positive on SCO OSR5. Adding the declaration -# of a `struct statvfs' causes this test to fail (as it should) on such -# systems. That system is reported to work fine with STAT_STATFS4 which -# is what it gets when this test fails. -if test $space = no; then -# SVR4 -AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs, -[AC_TRY_LINK([#include -#include ], -[struct statvfs fsd; statvfs (0, &fsd);], -fu_cv_sys_stat_statvfs=yes, -fu_cv_sys_stat_statvfs=no)]) -if test $fu_cv_sys_stat_statvfs = yes; then -space=yes -AC_DEFINE(STAT_STATVFS) -fi -fi - -if test $space = no; then -# DEC Alpha running OSF/1 -AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)]) -AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1, -[AC_TRY_RUN([ -#include -#include -#include -main () -{ -struct statfs fsd; -fsd.f_fsize = 0; -exit (statfs (".", &fsd, sizeof (struct statfs))); -}], -fu_cv_sys_stat_statfs3_osf1=yes, -fu_cv_sys_stat_statfs3_osf1=no, -fu_cv_sys_stat_statfs3_osf1=no)]) -AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1) -if test $fu_cv_sys_stat_statfs3_osf1 = yes; then -space=yes -AC_DEFINE(STAT_STATFS3_OSF1) -fi -fi - -if test $space = no; then -# AIX -AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl -member (AIX, 4.3BSD)]) -AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize, -[AC_TRY_RUN([ -#ifdef HAVE_SYS_PARAM_H -#include -#endif -#ifdef HAVE_SYS_MOUNT_H -#include -#endif -#ifdef HAVE_SYS_VFS_H -#include -#endif -main () -{ -struct statfs fsd; -fsd.f_bsize = 0; -exit (statfs (".", &fsd)); -}], -fu_cv_sys_stat_statfs2_bsize=yes, -fu_cv_sys_stat_statfs2_bsize=no, -fu_cv_sys_stat_statfs2_bsize=no)]) -AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize) -if test $fu_cv_sys_stat_statfs2_bsize = yes; then -space=yes -AC_DEFINE(STAT_STATFS2_BSIZE) -fi -fi - -if test $space = no; then -# SVR3 -AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)]) -AC_CACHE_VAL(fu_cv_sys_stat_statfs4, -[AC_TRY_RUN([#include -#include -main () -{ -struct statfs fsd; -exit (statfs (".", &fsd, sizeof fsd, 0)); -}], -fu_cv_sys_stat_statfs4=yes, -fu_cv_sys_stat_statfs4=no, -fu_cv_sys_stat_statfs4=no)]) -AC_MSG_RESULT($fu_cv_sys_stat_statfs4) -if test $fu_cv_sys_stat_statfs4 = yes; then -space=yes -AC_DEFINE(STAT_STATFS4) -fi -fi - -if test $space = no; then -# 4.4BSD and NetBSD -AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl -member (4.4BSD and NetBSD)]) -AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize, -[AC_TRY_RUN([#include -#ifdef HAVE_SYS_PARAM_H -#include -#endif -#ifdef HAVE_SYS_MOUNT_H -#include -#endif -main () -{ -struct statfs fsd; -fsd.f_fsize = 0; -exit (statfs (".", &fsd)); -}], -fu_cv_sys_stat_statfs2_fsize=yes, -fu_cv_sys_stat_statfs2_fsize=no, -fu_cv_sys_stat_statfs2_fsize=no)]) -AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize) -if test $fu_cv_sys_stat_statfs2_fsize = yes; then -space=yes -AC_DEFINE(STAT_STATFS2_FSIZE) -fi -fi - -if test $space = no; then -# Ultrix -AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)]) -AC_CACHE_VAL(fu_cv_sys_stat_fs_data, -[AC_TRY_RUN([#include -#ifdef HAVE_SYS_PARAM_H -#include -#endif -#ifdef HAVE_SYS_MOUNT_H -#include -#endif -#ifdef HAVE_SYS_FS_TYPES_H -#include -#endif -main () -{ -struct fs_data fsd; -/* Ultrix's statfs returns 1 for success, -0 for not mounted, -1 for failure. */ -exit (statfs (".", &fsd) != 1); -}], -fu_cv_sys_stat_fs_data=yes, -fu_cv_sys_stat_fs_data=no, -fu_cv_sys_stat_fs_data=no)]) -AC_MSG_RESULT($fu_cv_sys_stat_fs_data) -if test $fu_cv_sys_stat_fs_data = yes; then -space=yes -AC_DEFINE(STAT_STATFS2_FS_DATA) -fi -fi - -if test $space = no; then -# SVR2 -AC_TRY_CPP([#include ], -AC_DEFINE(STAT_READ_FILSYS) space=yes) -fi - -if test -n "$list_mounted_fs" && test $space != no; then -DF_PROG="df" -# LIBOBJS="$LIBOBJS fsusage.o" -# LIBOBJS="$LIBOBJS mountlist.o" -fi - -# Check for SunOS statfs brokenness wrt partitions 2GB and larger. -# If exists and struct statfs has a member named f_spare, -# enable the work-around code in fsusage.c. -AC_MSG_CHECKING([for statfs that truncates block counts]) -AC_CACHE_VAL(fu_cv_sys_truncating_statfs, -[AC_TRY_COMPILE([ -#if !defined(sun) && !defined(__sun) -choke -- this is a workaround for a Sun-specific problem -#endif -#include -#include ], -[struct statfs t; long c = *(t.f_spare);], -fu_cv_sys_truncating_statfs=yes, -fu_cv_sys_truncating_statfs=no, -)]) -if test $fu_cv_sys_truncating_statfs = yes; then -AC_DEFINE(STATFS_TRUNCATES_BLOCK_COUNTS) -fi -AC_MSG_RESULT($fu_cv_sys_truncating_statfs) - -AC_CHECKING(for AFS) -test -d /afs && AC_DEFINE(AFS) -]) diff --git a/macros/gnome-gettext.m4 b/macros/gnome-gettext.m4 deleted file mode 100644 index 3ebd6d41bc..0000000000 --- a/macros/gnome-gettext.m4 +++ /dev/null @@ -1,336 +0,0 @@ -# Macro to add for using GNU gettext. -# Ulrich Drepper , 1995. -# -# Modified to never use included libintl. -# Owen Taylor , 12/15/1998 -# -# -# This file can be copied and used freely without restrictions. It can -# be used in projects which are not available under the GNU Public License -# but which still want to provide support for the GNU gettext functionality. -# Please note that the actual code is *not* freely available. - -# serial 5 - -AC_DEFUN(AM_GNOME_WITH_NLS, - [AC_MSG_CHECKING([whether NLS is requested]) - dnl Default is enabled NLS - AC_ARG_ENABLE(nls, - [ --disable-nls do not use Native Language Support], - USE_NLS=$enableval, USE_NLS=yes) - AC_MSG_RESULT($USE_NLS) - AC_SUBST(USE_NLS) - - USE_INCLUDED_LIBINTL=no - - dnl If we use NLS figure out what method - if test "$USE_NLS" = "yes"; then - AC_DEFINE(ENABLE_NLS) -# AC_MSG_CHECKING([whether included gettext is requested]) -# AC_ARG_WITH(included-gettext, -# [ --with-included-gettext use the GNU gettext library included here], -# nls_cv_force_use_gnu_gettext=$withval, -# nls_cv_force_use_gnu_gettext=no) -# AC_MSG_RESULT($nls_cv_force_use_gnu_gettext) - nls_cv_force_use_gnu_gettext="no" - - nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" - if test "$nls_cv_force_use_gnu_gettext" != "yes"; then - dnl User does not insist on using GNU NLS library. Figure out what - dnl to use. If gettext or catgets are available (in this order) we - dnl use this. Else we have to fall back to GNU NLS library. - dnl catgets is only used if permitted by option --with-catgets. - nls_cv_header_intl= - nls_cv_header_libgt= - CATOBJEXT=NONE - - AC_CHECK_HEADER(libintl.h, - [AC_CACHE_CHECK([for gettext in libc], gt_cv_func_gettext_libc, - [AC_TRY_LINK([#include ], [return (int) gettext ("")], - gt_cv_func_gettext_libc=yes, gt_cv_func_gettext_libc=no)]) - - if test "$gt_cv_func_gettext_libc" != "yes"; then - AC_CHECK_LIB(intl, bindtextdomain, - [AC_CACHE_CHECK([for gettext in libintl], - gt_cv_func_gettext_libintl, - [AC_CHECK_LIB(intl, gettext, - gt_cv_func_gettext_libintl=yes, - gt_cv_func_gettext_libintl=no)], - gt_cv_func_gettext_libintl=no)]) - fi - - if test "$gt_cv_func_gettext_libc" = "yes" \ - || test "$gt_cv_func_gettext_libintl" = "yes"; then - AC_DEFINE(HAVE_GETTEXT) - AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, - [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl - if test "$MSGFMT" != "no"; then - AC_CHECK_FUNCS(dcgettext) - AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) - AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, - [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :) - AC_TRY_LINK(, [extern int _nl_msg_cat_cntr; - return _nl_msg_cat_cntr], - [CATOBJEXT=.gmo - DATADIRNAME=share], - [CATOBJEXT=.mo - DATADIRNAME=lib]) - INSTOBJEXT=.mo - fi - fi - - # Added by Martin Baulig 12/15/98 for libc5 systems - if test "$gt_cv_func_gettext_libc" != "yes" \ - && test "$gt_cv_func_gettext_libintl" = "yes"; then - INTLLIBS=-lintl - LIBS=`echo $LIBS | sed -e 's/-lintl//'` - fi - ]) - - if test "$CATOBJEXT" = "NONE"; then - AC_MSG_CHECKING([whether catgets can be used]) - AC_ARG_WITH(catgets, - [ --with-catgets use catgets functions if available], - nls_cv_use_catgets=$withval, nls_cv_use_catgets=no) - AC_MSG_RESULT($nls_cv_use_catgets) - - if test "$nls_cv_use_catgets" = "yes"; then - dnl No gettext in C library. Try catgets next. - AC_CHECK_LIB(i, main) - AC_CHECK_FUNC(catgets, - [AC_DEFINE(HAVE_CATGETS) - INTLOBJS="\$(CATOBJS)" - AC_PATH_PROG(GENCAT, gencat, no)dnl -# if test "$GENCAT" != "no"; then -# AC_PATH_PROG(GMSGFMT, gmsgfmt, no) -# if test "$GMSGFMT" = "no"; then -# AM_PATH_PROG_WITH_TEST(GMSGFMT, msgfmt, -# [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no) -# fi -# AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, -# [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :) -# USE_INCLUDED_LIBINTL=yes -# CATOBJEXT=.cat -# INSTOBJEXT=.cat -# DATADIRNAME=lib -# INTLDEPS='$(top_builddir)/intl/libintl.a' -# INTLLIBS=$INTLDEPS -# LIBS=`echo $LIBS | sed -e 's/-lintl//'` -# nls_cv_header_intl=intl/libintl.h -# nls_cv_header_libgt=intl/libgettext.h -# fi - ]) - fi - fi - - if test "$CATOBJEXT" = "NONE"; then - dnl Neither gettext nor catgets in included in the C library. - dnl Fall back on GNU gettext library. - nls_cv_use_gnu_gettext=yes - fi - fi - - if test "$nls_cv_use_gnu_gettext" != "yes"; then - AC_DEFINE(ENABLE_NLS) - else - # Unset this variable since we use the non-zero value as a flag. - CATOBJEXT= -# dnl Mark actions used to generate GNU NLS library. -# INTLOBJS="\$(GETTOBJS)" -# AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, -# [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], msgfmt) -# AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) -# AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, -# [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :) -# AC_SUBST(MSGFMT) -# USE_INCLUDED_LIBINTL=yes -# CATOBJEXT=.gmo -# INSTOBJEXT=.mo -# DATADIRNAME=share -# INTLDEPS='$(top_builddir)/intl/libintl.a' -# INTLLIBS=$INTLDEPS -# LIBS=`echo $LIBS | sed -e 's/-lintl//'` -# nls_cv_header_intl=intl/libintl.h -# nls_cv_header_libgt=intl/libgettext.h - fi - - dnl Test whether we really found GNU xgettext. - if test "$XGETTEXT" != ":"; then - dnl If it is no GNU xgettext we define it as : so that the - dnl Makefiles still can work. - if $XGETTEXT --omit-header /dev/null 2> /dev/null; then - : ; - else - AC_MSG_RESULT( - [found xgettext program is not GNU xgettext; ignore it]) - XGETTEXT=":" - fi - fi - - # We need to process the po/ directory. - POSUB=po - else - DATADIRNAME=share - nls_cv_header_intl=intl/libintl.h - nls_cv_header_libgt=intl/libgettext.h - fi - AC_LINK_FILES($nls_cv_header_libgt, $nls_cv_header_intl) - AC_OUTPUT_COMMANDS( - [case "$CONFIG_FILES" in *po/Makefile.in*) - sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile - esac]) - - -# # If this is used in GNU gettext we have to set USE_NLS to `yes' -# # because some of the sources are only built for this goal. -# if test "$PACKAGE" = gettext; then -# USE_NLS=yes -# USE_INCLUDED_LIBINTL=yes -# fi - - dnl These rules are solely for the distribution goal. While doing this - dnl we only have to keep exactly one list of the available catalogs - dnl in configure.in. - for lang in $ALL_LINGUAS; do - GMOFILES="$GMOFILES $lang.gmo" - POFILES="$POFILES $lang.po" - done - - dnl Make all variables we use known to autoconf. - AC_SUBST(USE_INCLUDED_LIBINTL) - AC_SUBST(CATALOGS) - AC_SUBST(CATOBJEXT) - AC_SUBST(DATADIRNAME) - AC_SUBST(GMOFILES) - AC_SUBST(INSTOBJEXT) - AC_SUBST(INTLDEPS) - AC_SUBST(INTLLIBS) - AC_SUBST(INTLOBJS) - AC_SUBST(POFILES) - AC_SUBST(POSUB) - ]) - -AC_DEFUN(AM_GNOME_GETTEXT, - [AC_REQUIRE([AC_PROG_MAKE_SET])dnl - AC_REQUIRE([AC_PROG_CC])dnl - AC_REQUIRE([AC_PROG_RANLIB])dnl - AC_REQUIRE([AC_ISC_POSIX])dnl - AC_REQUIRE([AC_HEADER_STDC])dnl - AC_REQUIRE([AC_C_CONST])dnl - AC_REQUIRE([AC_C_INLINE])dnl - AC_REQUIRE([AC_TYPE_OFF_T])dnl - AC_REQUIRE([AC_TYPE_SIZE_T])dnl - AC_REQUIRE([AC_FUNC_ALLOCA])dnl - AC_REQUIRE([AC_FUNC_MMAP])dnl - - AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h string.h \ -unistd.h sys/param.h]) - AC_CHECK_FUNCS([getcwd munmap putenv setenv setlocale strchr strcasecmp \ -strdup __argz_count __argz_stringify __argz_next]) - - if test "${ac_cv_func_stpcpy+set}" != "set"; then - AC_CHECK_FUNCS(stpcpy) - fi - if test "${ac_cv_func_stpcpy}" = "yes"; then - AC_DEFINE(HAVE_STPCPY) - fi - - AM_LC_MESSAGES - AM_GNOME_WITH_NLS - - if test "x$CATOBJEXT" != "x"; then - if test "x$ALL_LINGUAS" = "x"; then - LINGUAS= - else - AC_MSG_CHECKING(for catalogs to be installed) - NEW_LINGUAS= - if test "x$LINGUAS" = "x"; then - LINGUAS=$ALL_LINGUAS - fi - for lang in $LINGUAS; do - case "$ALL_LINGUAS" in - *\ $lang\ *|$lang\ *|*\ $lang) NEW_LINGUAS="$NEW_LINGUAS $lang" ;; - esac - done - LINGUAS=$NEW_LINGUAS - AC_MSG_RESULT($LINGUAS) - fi - - dnl Construct list of names of catalog files to be constructed. - if test -n "$LINGUAS"; then - for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done - fi - fi - - dnl The reference to in the installed file - dnl must be resolved because we cannot expect the users of this - dnl to define HAVE_LOCALE_H. - if test $ac_cv_header_locale_h = yes; then - INCLUDE_LOCALE_H="#include " - else - INCLUDE_LOCALE_H="\ -/* The system does not provide the header . Take care yourself. */" - fi - AC_SUBST(INCLUDE_LOCALE_H) - - dnl Determine which catalog format we have (if any is needed) - dnl For now we know about two different formats: - dnl Linux libc-5 and the normal X/Open format - test -d intl || mkdir intl - if test "$CATOBJEXT" = ".cat"; then - AC_CHECK_HEADER(linux/version.h, msgformat=linux, msgformat=xopen) - - dnl Transform the SED scripts while copying because some dumb SEDs - dnl cannot handle comments. - sed -e '/^#/d' $srcdir/intl/$msgformat-msg.sed > intl/po2msg.sed - fi - dnl po2tbl.sed is always needed. - sed -e '/^#.*[^\\]$/d' -e '/^#$/d' \ - $srcdir/intl/po2tbl.sed.in > intl/po2tbl.sed - - dnl In the intl/Makefile.in we have a special dependency which makes - dnl only sense for gettext. We comment this out for non-gettext - dnl packages. - if test "$PACKAGE" = "gettext"; then - GT_NO="#NO#" - GT_YES= - else - GT_NO= - GT_YES="#YES#" - fi - AC_SUBST(GT_NO) - AC_SUBST(GT_YES) - - dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly - dnl find the mkinstalldirs script in another subdir but ($top_srcdir). - dnl Try to locate is. - MKINSTALLDIRS= - if test -n "$ac_aux_dir"; then - MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" - fi - if test -z "$MKINSTALLDIRS"; then - MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" - fi - AC_SUBST(MKINSTALLDIRS) - - dnl *** For now the libtool support in intl/Makefile is not for real. - l= - AC_SUBST(l) - - dnl Generate list of files to be processed by xgettext which will - dnl be included in po/Makefile. - test -d po || mkdir po - if test "x$srcdir" != "x."; then - if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then - posrcprefix="$srcdir/" - else - posrcprefix="../$srcdir/" - fi - else - posrcprefix="../" - fi - rm -f po/POTFILES - sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \ - < $srcdir/po/POTFILES.in > po/POTFILES - ]) - diff --git a/macros/gnome-ghttp-check.m4 b/macros/gnome-ghttp-check.m4 deleted file mode 100644 index 0ecacaaf05..0000000000 --- a/macros/gnome-ghttp-check.m4 +++ /dev/null @@ -1,14 +0,0 @@ -AC_DEFUN([GNOME_GHTTP_CHECK],[ - AC_REQUIRE([GNOME_INIT_HOOK]) - GHTTP_LIB= - AC_CHECK_FUNC(connect,,[ - AC_CHECK_LIB(socket,connect, - GHTTP_LIB="-lsocket $GHTTP_LIB",,$GHTTP_LIB)]) - AC_CHECK_FUNC(gethostbyname,,[ - AC_CHECK_LIB(nsl,gethostbyname, - GHTTP_LIB="-lnsl $GHTTP_LIB",,$GHTTP_LIB)]) - AC_CHECK_LIB(ghttp, ghttp_request_new, - GHTTP_LIB="-lghttp $GHTTP_LIB",GHTTP_LIB="",-L$gnome_prefix $GHTTP_LIB) - AC_SUBST(GHTTP_LIB) - AC_PROVIDE([GNOME_GHTTP_CHECK]) -]) diff --git a/macros/gnome-gnorba-check.m4 b/macros/gnome-gnorba-check.m4 deleted file mode 100644 index dbac0a6cf7..0000000000 --- a/macros/gnome-gnorba-check.m4 +++ /dev/null @@ -1,35 +0,0 @@ -dnl -dnl GNOME_GNORBA_HOOK (script-if-gnorba-found, failflag) -dnl -dnl if failflag is "failure" it aborts if gnorba is not found. -dnl - -AC_DEFUN([GNOME_GNORBA_HOOK],[ - GNOME_ORBIT_HOOK([],$2) - AC_CACHE_CHECK([for gnorba libraries],gnome_cv_gnorba_found,[ - gnome_cv_gnorba_found=no - if test x$gnome_cv_orbit_found = xyes; then - GNORBA_CFLAGS="`gnome-config --cflags gnorba gnomeui`" - GNORBA_LIBS="`gnome-config --libs gnorba gnomeui`" - if test -n "$GNORBA_LIBS"; then - gnome_cv_gnorba_found=yes - fi - fi - ]) - AM_CONDITIONAL(HAVE_GNORBA, test x$gnome_cv_gnorba_found = xyes) - if test x$gnome_cv_orbit_found = xyes; then - $1 - GNORBA_CFLAGS="`gnome-config --cflags gnorba gnomeui`" - GNORBA_LIBS="`gnome-config --libs gnorba gnomeui`" - AC_SUBST(GNORBA_CFLAGS) - AC_SUBST(GNORBA_LIBS) - else - if test x$2 = xfailure; then - AC_MSG_ERROR(gnorba library not installed or installation problem) - fi - fi -]) - -AC_DEFUN([GNOME_GNORBA_CHECK], [ - GNOME_GNORBA_HOOK([],failure) -]) diff --git a/macros/gnome-guile-checks.m4 b/macros/gnome-guile-checks.m4 deleted file mode 100644 index 1086d30a4e..0000000000 --- a/macros/gnome-guile-checks.m4 +++ /dev/null @@ -1,119 +0,0 @@ -dnl -dnl GNOME_CHECK_GUILE (failflag) -dnl -dnl if failflag is "fail" then GNOME_CHECK_GUILE will abort if guile is not found. -dnl - -AC_DEFUN([GNOME_CHECK_GUILE], -[ - saved_ldflags="$LDFLAGS" - saved_cppflags="$CPPFLAGS" - LDFLAGS="$LDFLAGS $GNOME_LIBDIR" - - AC_CHECK_LIB(qthreads,qt_null,[ - QTTHREADS_LIB="-lqthreads" - ],[ - AC_CHECK_LIB(qt, qt_null, QTTHREADS_LIB="-lqt") - ],$LIBS) - AC_SUBST(QTTHREADS_LIB) - - AC_CHECK_LIB(termcap,main,TERMCAP_LIB="-ltermcap") - AC_CHECK_LIB(readline,main,READLINE_LIB="-lreadline",,$TERMCAP_LIB) - - AC_SUBST(TERMCAP_LIB) - AC_SUBST(READLINE_LIB) - - if test "x$cross_compiling" = "xyes" ; then - name_build_guile="$target_alias-guile-config" - else - name_build_guile="guile-config" - fi - - AC_CHECK_PROG(BUILD_GUILE, $name_build_guile, yes, no) - - if test "x$BUILD_GUILE" = "xyes"; then - AC_MSG_CHECKING(whether $name_build_guile works) - if test x`$name_build_guile --version >/dev/null 2>&1 || \ - echo no` = xno; then - BUILD_GUILE=no - fi - AC_MSG_RESULT($BUILD_GUILE) - else - - if test "x$cross_compiling" = "xyes" ; then - name_build_guile="$target_alias-build-guile" - else - name_build_guile="build-guile" - fi - - AC_CHECK_PROG(BUILD_GUILE, $name_build_guile, yes, no) - - if test "x$BUILD_GUILE" = "xyes"; then - AC_MSG_CHECKING(whether $name_build_guile works) - if test x`$name_build_guile --version >/dev/null 2>&1 || \ - echo no` = xno; then - BUILD_GUILE=no - fi - AC_MSG_RESULT($BUILD_GUILE) - fi - fi - - AC_CHECK_LIB(m, sin) - - if test "x$BUILD_GUILE" = "xyes"; then - AC_MSG_CHECKING(for guile libraries) - GUILE_LIBS="`$name_build_guile link`" - AC_MSG_RESULT($GUILE_LIBS) - AC_MSG_CHECKING(for guile headers) - GUILE_INCS="`$name_build_guile compile`" - AC_MSG_RESULT($GUILE_INCS) - else - GUILE_LIBS="$GNOME_LIBDIR" - GUILE_INCS="$GNOME_INCLUDEDIR" - AC_CHECK_LIB(rx, main, GUILE_LIBS="-lrx $GUILE_LIBS") - AC_CHECK_LIB(qt, qt_null, GUILE_LIBS="-lqt $GUILE_LIBS") - AC_CHECK_LIB(dl, dlopen, GUILE_LIBS="-ldl $GUILE_LIBS") - AC_CHECK_LIB(nsl, t_accept, GUILE_LIBS="$GUILE_LIBS -lnsl") - AC_CHECK_LIB(socket, socket, GUILE_LIBS="$GUILE_LIBS -lsocket") - GUILE_LIBS="-lguile $GUILE_LIBS $QTTHREADS_LIB $READLINE_LIB $TERMCAP_LIB" - fi - - AC_SUBST(GUILE_LIBS) - AC_SUBST(GUILE_INCS) - - saved_LIBS="$LIBS" - LIBS="$LIBS $GUILE_LIBS" - CPPFLAGS="$saved_cppflags $GUILE_INCS" - - AC_MSG_CHECKING(whether guile works) - AC_TRY_LINK([ - #include - #include - ],[ - gh_eval_str("(newline)"); - scm_boot_guile(0,NULL,NULL,NULL); - ],[ - ac_cv_guile_found=yes - AC_DEFINE(HAVE_GUILE) - ],[ - ac_cv_guile_found=no - ]) - AC_MSG_RESULT($ac_cv_guile_found) - - if test x$ac_cv_guile_found = xno ; then - if test x$1 = xfail ; then - AC_MSG_ERROR(Can not find Guile on this system) - else - AC_MSG_WARN(Can not find Guile on this system) - fi - ac_cv_guile_found=no - GUILE_LIBS= GUILE_INCS= - fi - - LIBS="$saved_LIBS" - LDFLAGS="$saved_ldflags" - CPPFLAGS="$saved_cppflags" - - AC_SUBST(GUILE_LIBS) - AM_CONDITIONAL(GUILE, test x$ac_cv_guile_found = xyes) -]) diff --git a/macros/gnome-libgtop-check.m4 b/macros/gnome-libgtop-check.m4 deleted file mode 100644 index 0ce6f6f612..0000000000 --- a/macros/gnome-libgtop-check.m4 +++ /dev/null @@ -1,217 +0,0 @@ -dnl -dnl LIBGTOP_CHECK_TYPE -dnl -dnl Improved version of AC_CHECK_TYPE which takes into account -dnl that we need to #include some other header files on some -dnl systems to get some types. - -dnl AC_LIBGTOP_CHECK_TYPE(TYPE, DEFAULT) -AC_DEFUN(AC_LIBGTOP_CHECK_TYPE, -[AC_REQUIRE([AC_HEADER_STDC])dnl -AC_MSG_CHECKING(for $1) -AC_CACHE_VAL(ac_cv_type_$1, -[AC_EGREP_CPP(dnl -changequote(<<,>>)dnl -<<(^|[^a-zA-Z_0-9])$1[^a-zA-Z_0-9]>>dnl -changequote([,]), [#include -#if STDC_HEADERS -#include -#include -#endif - -/* For Tru64 */ -#ifdef HAVE_SYS_BITYPES_H -#include -#endif -], ac_cv_type_$1=yes, ac_cv_type_$1=no)])dnl -AC_MSG_RESULT($ac_cv_type_$1) -if test $ac_cv_type_$1 = no; then - AC_DEFINE($1, $2) -fi -]) - -dnl -dnl GNOME_LIBGTOP_TYPES -dnl -dnl some typechecks for libgtop. -dnl - -AC_DEFUN([GNOME_LIBGTOP_TYPES], -[ - AC_CHECK_HEADERS(sys/bitypes.h) - AC_LIBGTOP_CHECK_TYPE(u_int64_t, unsigned long long int) - AC_LIBGTOP_CHECK_TYPE(int64_t, signed long long int) -]) - -dnl -dnl GNOME_LIBGTOP_HOOK (minversion, script-if-libgtop-enabled, failflag) -dnl -dnl if failflag is "fail" then GNOME_LIBGTOP_HOOK will abort if LibGTop -dnl is not found. -dnl - -AC_DEFUN([GNOME_LIBGTOP_HOOK], -[ - AC_REQUIRE([GNOME_LIBGTOP_TYPES]) - - AC_SUBST(LIBGTOP_LIBDIR) - AC_SUBST(LIBGTOP_INCLUDEDIR) - AC_SUBST(LIBGTOP_EXTRA_LIBS) - AC_SUBST(LIBGTOP_LIBS) - AC_SUBST(LIBGTOP_INCS) - AC_SUBST(LIBGTOP_NAMES_LIBS) - AC_SUBST(LIBGTOP_NAMES_INCS) - AC_SUBST(LIBGTOP_MAJOR_VERSION) - AC_SUBST(LIBGTOP_MINOR_VERSION) - AC_SUBST(LIBGTOP_MICRO_VERSION) - AC_SUBST(LIBGTOP_VERSION) - AC_SUBST(LIBGTOP_VERSION_CODE) - AC_SUBST(LIBGTOP_SERVER_VERSION) - AC_SUBST(LIBGTOP_INTERFACE_AGE) - AC_SUBST(LIBGTOP_BINARY_AGE) - AC_SUBST(LIBGTOP_BINDIR) - AC_SUBST(LIBGTOP_SERVER) - - dnl Get the cflags and libraries from the libgtop-config script - dnl - AC_ARG_WITH(libgtop, - [ --with-libgtop=PFX Prefix where LIBGTOP is installed (optional)], - libgtop_config_prefix="$withval", libgtop_config_prefix="") - AC_ARG_WITH(libgtop-exec, - [ --with-libgtop-exec=PFX Exec prefix where LIBGTOP is installed (optional)], - libgtop_config_exec_prefix="$withval", libgtop_config_exec_prefix="") - - if test x$libgtop_config_exec_prefix != x ; then - libgtop_config_args="$libgtop_config_args --exec-prefix=$libgtop_config_exec_prefix" - if test x${LIBGTOP_CONFIG+set} != xset ; then - LIBGTOP_CONFIG=$libgtop_config_exec_prefix/bin/libgtop-config - fi - fi - if test x$libgtop_config_prefix != x ; then - libgtop_config_args="$libgtop_config_args --prefix=$libgtop_config_prefix" - if test x${LIBGTOP_CONFIG+set} != xset ; then - LIBGTOP_CONFIG=$libgtop_config_prefix/bin/libgtop-config - fi - fi - - AC_PATH_PROG(LIBGTOP_CONFIG, libgtop-config, no) - dnl IMPORTANT NOTICE: - dnl If you increase this number here, this means that *ALL* - dnl modules will require the new version, even if they explicitly - dnl give a lower number in their `configure.in' !!! - real_min_libgtop_version=1.0.0 - min_libgtop_version=ifelse([$1], ,$real_min_libgtop_version,$1) - dnl I know, the following code looks really ugly, but if you want - dnl to make changes, please test it with a brain-dead /bin/sh and - dnl with a brain-dead /bin/test (not all shells/tests support the - dnl `<' operator to compare strings, that's why I convert everything - dnl into numbers and test them). - min_libgtop_major=`echo $min_libgtop_version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` - min_libgtop_minor=`echo $min_libgtop_version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` - min_libgtop_micro=`echo $min_libgtop_version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` - test x$min_libgtop_micro = x && min_libgtop_micro=0 - real_min_libgtop_major=`echo $real_min_libgtop_version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` - real_min_libgtop_minor=`echo $real_min_libgtop_version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` - real_min_libgtop_micro=`echo $real_min_libgtop_version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` - test x$real_min_libgtop_micro = x && real_min_libgtop_micro=0 - dnl You cannot require a version less then $real_min_libgtop_version, - dnl so you don't need to update each `configure.in' when it's increased. - if test $real_min_libgtop_major -gt $min_libgtop_major ; then - min_libgtop_major=$real_min_libgtop_major - min_libgtop_minor=$real_min_libgtop_minor - min_libgtop_micro=$real_min_libgtop_micro - elif test $real_min_libgtop_major = $min_libgtop_major ; then - if test $real_min_libgtop_minor -gt $min_libgtop_minor ; then - min_libgtop_minor=$real_min_libgtop_minor - min_libgtop_micro=$real_min_libgtop_micro - elif test $real_min_libgtop_minor = $min_libgtop_minor ; then - if test $real_min_libgtop_micro -gt $min_libgtop_micro ; then - min_libgtop_micro=$real_min_libgtop_micro - fi - fi - fi - min_libgtop_version="$min_libgtop_major.$min_libgtop_minor.$min_libgtop_micro" - AC_MSG_CHECKING(for libgtop - version >= $min_libgtop_version) - no_libgtop="" - if test "$LIBGTOP_CONFIG" = "no" ; then - no_libgtop=yes - else - configfile=`$LIBGTOP_CONFIG --config` - libgtop_major_version=`$LIBGTOP_CONFIG --version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` - libgtop_minor_version=`$LIBGTOP_CONFIG --version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` - libgtop_micro_version=`$LIBGTOP_CONFIG --version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` - if test $libgtop_major_version != $min_libgtop_major ; then - no_libgtop=mismatch - else - test $libgtop_minor_version -lt $min_libgtop_minor && no_libgtop=yes - if test $libgtop_minor_version = $min_libgtop_minor ; then - test $libgtop_micro_version -lt $min_libgtop_micro && no_libgtop=yes - fi - fi - . $configfile - fi - if test x$no_libgtop = x ; then - AC_DEFINE(HAVE_LIBGTOP) - AC_DEFINE_UNQUOTED(LIBGTOP_VERSION, "$LIBGTOP_VERSION") - AC_DEFINE_UNQUOTED(LIBGTOP_VERSION_CODE, $LIBGTOP_VERSION_CODE) - AC_DEFINE_UNQUOTED(LIBGTOP_MAJOR_VERSION, $LIBGTOP_MAJOR_VERSION) - AC_DEFINE_UNQUOTED(LIBGTOP_MINOR_VERSION, $LIBGTOP_MINOR_VERSION) - AC_DEFINE_UNQUOTED(LIBGTOP_MICRO_VERSION, $LIBGTOP_MICRO_VERSION) - AC_DEFINE_UNQUOTED(LIBGTOP_SERVER_VERSION, $LIBGTOP_SERVER_VERSION) - AC_MSG_RESULT(yes) - dnl Note that an empty true branch is not valid sh syntax. - ifelse([$2], [], :, [$2]) - else - AC_MSG_RESULT(no) - if test "$no_libgtop"x = mismatchx; then - AC_MSG_ERROR(LibGTop major version mismatch $libgtop_major_version != $min_libgtop_major) - fi - if test "x$3" = "xfail"; then - AC_MSG_ERROR(LibGTop >= $min_libgtop_version not found) - else - AC_MSG_WARN(LibGTop >= $min_libgtop_version not found) - fi - fi - - AM_CONDITIONAL(HAVE_LIBGTOP, test x$no_libgtop != xyes) -]) - -AC_DEFUN([GNOME_INIT_LIBGTOP],[ - GNOME_LIBGTOP_HOOK($1,[ifelse([$3], [], :, [$3])],$2) -]) - -dnl -dnl GNOME_LIBGTOP_DOCU -dnl -dnl checks whether the documentation of LibGTop is installed -dnl - -AC_DEFUN([GNOME_LIBGTOP_DOCU], -[ - AC_REQUIRE([GNOME_LIBGTOP_HOOK]) - - helpdir="$LIBGTOP_DATADIR/gnome/help/libgtop" - - AC_MSG_CHECKING(whether you have the LibGTop Documentation) - - if test -f "$helpdir/C/topic.dat" ; then - have_libgtop_docu=yes - AC_DEFINE(HAVE_LIBGTOP_DOCU) - else - have_libgtop_docu=no - fi - - AC_MSG_RESULT($have_libgtop_docu) - - AM_CONDITIONAL(HAVE_LIBGTOP_DOCU, test x$have_libgtop_docu = xyes) -]) - diff --git a/macros/gnome-objc-checks.m4 b/macros/gnome-objc-checks.m4 deleted file mode 100644 index c69acb077e..0000000000 --- a/macros/gnome-objc-checks.m4 +++ /dev/null @@ -1,83 +0,0 @@ -AC_DEFUN([GNOME_CHECK_OBJC], -[ -dnl Look for an ObjC compiler. -dnl FIXME: extend list of possible names of ObjC compilers. - AC_CHECK_PROGS(OBJC, $OBJC egcs, "") - if test "x$OBJC" = "x" ; then - AC_CHECK_PROGS(OBJC, $OBJC egcc, "") - if test "x$OBJC" = "x" ; then - AC_CHECK_PROGS(OBJC, $OBJC gcc, "") - fi - fi - - AC_REQUIRE([GNOME_PTHREAD_CHECK]) - - OBJC_LIBS="-lobjc $PTHREAD_LIB" - AC_CHECK_FUNC(sched_yield,,[ - AC_CHECK_LIB(rt,sched_yield, - OBJC_LIBS="$OBJC_LIBS -lrt",[ - AC_CHECK_LIB(posix4,sched_yield, - OBJC_LIBS="$OBJC_LIBS -lposix4",, - $OBJC_LIBS)], - $OBJC_LIBS)]) - AC_SUBST(OBJC_LIBS) - - AC_CACHE_CHECK([if Objective C compiler ($OBJC) works], - ac_cv_prog_objc_works, [ - if test -n "$OBJC"; then - cat > conftest.m < -@interface myRandomObj : Object -{ -} -@end -@implementation myRandomObj -@end -int main () { - /* No, you are not seeing double. Remember that square brackets - are the autoconf m4 quotes. */ - id myid = [[myRandomObj alloc]]; - [[myid free]]; - return 0; -} -EOF - - $OBJC $CFLAGS -o conftest $LDFLAGS conftest.m $OBJC_LIBS 1>&AC_FD_CC 2>&1 - result=$? - rm -f conftest* - - if test $result -eq 0; then - ac_cv_prog_objc_works=yes - fi - else - ac_cv_prog_objc_works=no - fi - ]) - - AM_CONDITIONAL(OBJECTIVE_C, test x$ac_cv_prog_objc_works = xyes) - dnl Also set the shell variable OBJECTIVE_C to "yes" or "no". - OBJECTIVE_C=$ac_cv_prog_objc_works -]) - -AC_DEFUN([GNOME_INIT_OBJC], -[ - AC_MSG_CHECKING(for an obGnomeConf.sh) - my_gnome_libdir=`$GNOME_CONFIG --libdir` - if test -f $my_gnome_libdir/obGnomeConf.sh; then - . $my_gnome_libdir/obGnomeConf.sh - AC_MSG_RESULT(found $my_gnome_libdir) - ac_cv_have_gnome_objc=yes - else - AC_MSG_RESULT(not found) - AC_MSG_WARN(Could not find the obGnomeConf.sh file that is generated by gnome-objc install) - ac_cv_have_gnome_objc=no - fi - - dnl Add a conditional on whether or not we have gnome-objc - AM_CONDITIONAL(HAVE_GNOME_OBJC, test x$ac_cv_have_gnome_objc = xyes) - HAVE_GNOME_OBJC=$ac_cv_have_gnome_objc - - AC_SUBST(OBGNOME_INCLUDEDIR) - AC_SUBST(OBGNOME_LIBS) - AC_SUBST(OBGTK_LIBS) -]) diff --git a/macros/gnome-orbit-check.m4 b/macros/gnome-orbit-check.m4 deleted file mode 100644 index 54bf33aa4b..0000000000 --- a/macros/gnome-orbit-check.m4 +++ /dev/null @@ -1,33 +0,0 @@ -dnl -dnl GNOME_ORBIT_HOOK (script-if-orbit-found, failflag) -dnl -dnl if failflag is "failure" it aborts if orbit is not found. -dnl - -AC_DEFUN([GNOME_ORBIT_HOOK],[ - AC_PATH_PROG(ORBIT_CONFIG,orbit-config,no) - AC_PATH_PROG(ORBIT_IDL,orbit-idl,no) - AC_CACHE_CHECK([for working ORBit environment],gnome_cv_orbit_found,[ - if test x$ORBIT_CONFIG = xno -o x$ORBIT_IDL = xno; then - gnome_cv_orbit_found=no - else - gnome_cv_orbit_found=yes - fi - ]) - AM_CONDITIONAL(HAVE_ORBIT, test x$gnome_cv_orbit_found = xyes) - if test x$gnome_cv_orbit_found = xyes; then - $1 - ORBIT_CFLAGS=`orbit-config --cflags client server` - ORBIT_LIBS=`orbit-config --use-service=name --libs client server` - AC_SUBST(ORBIT_CFLAGS) - AC_SUBST(ORBIT_LIBS) - else - if test x$2 = xfailure; then - AC_MSG_ERROR(ORBit not installed or installation problem) - fi - fi -]) - -AC_DEFUN([GNOME_ORBIT_CHECK], [ - GNOME_ORBIT_HOOK([],failure) -]) diff --git a/macros/gnome-pilot.m4 b/macros/gnome-pilot.m4 deleted file mode 100644 index b4e176a46c..0000000000 --- a/macros/gnome-pilot.m4 +++ /dev/null @@ -1,137 +0,0 @@ -dnl -dnl GNOME_PILOT_HOOK(script if found, fail) -dnl if fail = "failure", abort if gnome-pilot not found -dnl - -GNOME_PILOT_CFLAGS= -GNOME_PILOT_LIBS= -PISOCK_INCLUDEDIR= -PISOCK_LIBS= -PILOT_BINS= -PILOT_LIBS= - -AC_SUBST(GNOME_PILOT_CFLAGS) -AC_SUBST(GNOME_PILOT_LIBS) -AC_SUBST(PISOCK_INCLUDEDIR) -AC_SUBST(PISOCK_LIBS) -AC_SUBST(PILOT_BINS) -AC_SUBST(PILOT_LIBS) - -AC_DEFUN([PILOT_LINK_HOOK],[ - AC_ARG_WITH(pisock, - [ --with-pisock Specify prefix for pisock files],[ - if test x$withval = xyes; then - dnl Note that an empty true branch is not valid sh syntax. - ifelse([$1], [], :, [$1]) - else - PISOCK_INCLUDEDIR="-I$withval/include" - PISOCK_LIBDIR="-L$withval/lib" - PISOCK_LIBS="-lpisock" - AC_MSG_CHECKING("for existance of $withval/lib/libpisock.so") - if test -r $withval/lib/libpisock.so; then - AC_MSG_RESULT("yes") - else - AC_MSG_ERROR("Unable to find libpisock. Try ftp://ryeham.ee.ryerson.ca/pub/PalmOS/.") - fi - AC_SUBST(PISOCK_INCLUDEDIR) - AC_SUBST(PISOCK_LIBDIR) - fi - ]) - - if test x$PISOCK_INCLUDEDIR = x; then - AC_CHECK_HEADER(pi-version.h, [], [ - AC_CHECK_HEADER(libpisock/pi-version.h, [PISOCK_INCLUDEDIR="-I/usr/include/libpisock" - piversion_include="libpisock/pi-version.h"], - AC_MSG_ERROR("Unable to find pi-version.h")) ]) - fi - - AC_SUBST(PISOCK_INCLUDEDIR) - - if test x$PISOCK_LIBDIR = x; then - AC_CHECK_LIB(pisock, pi_accept, [ PISOCK_LIBS=-lpisock ], - [ AC_MSG_ERROR("Unable to find libpisock. Try ftp://ryeham.ee.ryerson.ca/pub/PalmOS/.") ]) - fi - - AC_ARG_ENABLE(pilotlinktest, - [ --enable-pilotlinktest Test for correct version of pilot-link], - [testplversion=$enableval], - [ testplversion=yes ] - ) - - if test x$piversion_include = x; then - piversion_include="pi-version.h" - fi - - if test x$testplversion = xyes; then - AC_MSG_CHECKING(for pilot-link version >= $1) - pl_ve=`echo $1|sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` - pl_ma=`echo $1|sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` - pl_mi=`echo $1|sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` - CFLAGS_save="$CFLAGS" - CFLAGS="$CFLAGS $PISOCK_INCLUDEDIR" - AC_TRY_RUN( - [ - #include <$piversion_include> - int main(int argc,char *argv[]) { - if (PILOT_LINK_VERSION == $pl_ve) { - if (PILOT_LINK_MAJOR == $pl_ma) { - if (PILOT_LINK_MINOR >= $pl_mi) { - exit(0); - } - } else if (PILOT_LINK_MAJOR > $pl_ma) { - exit(0); - } - } else if (PILOT_LINK_VERSION > $pl_ve) { - exit(0); - } - exit(1); - } - ], - [AC_MSG_RESULT(yes)], - [AC_MSG_ERROR("pilot-link >= $1 required")], - [AC_MSG_WARN("No action taken for crosscompile")] - ) - CFLAGS="$CFLAGS_save" - fi -]) - -AC_DEFUN([PILOT_LINK_CHECK],[ - PILOT_LINK_HOOK($1,[],nofailure) -]) - -AC_DEFUN([GNOME_PILOT_HOOK],[ - AC_PATH_PROG(GNOME_CONFIG,gnome-config,no) - AC_CACHE_CHECK([for gnome-pilot environment],gnome_cv_pilot_found,[ - if test "x$GNOME_CONFIG" = "xno"; then - gnome_cv_pilot_found=no - else - # gnome-config doesn't return a useful error status, - # so we check if it outputs anything to stderr - if test "x`$GNOME_CONFIG gpilot 2>&1 > /dev/null`" = "x"; then - gnome_cv_pilot_found=yes - else - gnome_cv_pilot_found=no - fi - fi - ]) - AM_CONDITIONAL(HAVE_GNOME_PILOT,test x$gnome_cv_pilot_found = xyes) - if test x$gnome_cv_pilot_found = xyes; then - PILOT_LINK_CHECK($1) - GNOME_PILOT_CFLAGS=`gnome-config --cflags gpilot` - GNOME_PILOT_LIBS=`gnome-config --libs gpilot` - $2 - else - if test x$3 = xfailure; then - AC_MSG_ERROR(gnome-pilot development package not installed or installation problem) - fi - fi -]) - -AC_DEFUN([GNOME_PILOT_CHECK],[ - if test x$1 = x; then - GNOME_PILOT_HOOK(0.9.3,[],nofailure) - else - GNOME_PILOT_HOOK($1,[],nofailure) - fi -]) - diff --git a/macros/gnome-print-check.m4 b/macros/gnome-print-check.m4 deleted file mode 100644 index 7d98281d9c..0000000000 --- a/macros/gnome-print-check.m4 +++ /dev/null @@ -1,171 +0,0 @@ -# Configure paths for GNOME-PRINT -# Chris Lahey 99-2-5 -# stolen from Manish Singh again -# stolen back from Frank Belew -# stolen from Manish Singh -# Shamelessly stolen from Owen Taylor - -dnl AM_PATH_GNOME_PRINT([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) -dnl Test for GNOME-PRINT, and define GNOME_PRINT_CFLAGS and GNOME_PRINT_LIBS -dnl -AC_DEFUN(AM_PATH_GNOME_PRINT, -[dnl -dnl Get the cflags and libraries from the gnome-config script -dnl -AC_ARG_WITH(gnome-print-prefix,[ --with-gnome-print-prefix=PFX Prefix where GNOME-PRINT is installed (optional)], - gnome_print_prefix="$withval", gnome_print_prefix="") -AC_ARG_WITH(gnome-print-exec-prefix,[ --with-gnome-print-exec-prefix=PFX Exec prefix where GNOME-PRINT is installed (optional)], - gnome_print_exec_prefix="$withval", gnome_print_exec_prefix="") -AC_ARG_ENABLE(gnome-printtest, [ --disable-gnome-printtest Do not try to compile and run a test GNOME-PRINT program], - , enable_gnome_printtest=yes) - - if test x$gnome_print_exec_prefix != x ; then - gnome_print_args="$gnome_print_args --exec-prefix=$gnome_print_exec_prefix" - if test x${GNOME_CONFIG+set} != xset ; then - GNOME_CONFIG=$gnome_print_exec_prefix/bin/gnome-config - fi - fi - if test x$gnome_print_prefix != x ; then - gnome_print_args="$gnome_print_args --prefix=$gnome_print_prefix" - if test x${GNOME_CONFIG+set} != xset ; then - GNOME_CONFIG=$gnome_print_prefix/bin/gnome-config - fi - fi - - AC_PATH_PROG(GNOME_CONFIG, gnome-config, no) - min_gnome_print_version=ifelse([$1], ,0.1.0,$1) - AC_MSG_CHECKING(for GNOME-PRINT - version >= $min_gnome_print_version) - no_gnome_print="" - if test "$GNOME_CONFIG" = "no" ; then - no_gnome_print=yes - else - GNOME_PRINT_CFLAGS=`$GNOME_CONFIG $gnome_printconf_args --cflags print` - GNOME_PRINT_LIBS=`$GNOME_CONFIG $gnome_printconf_args --libs print` - - gnome_print_major_version=`$GNOME_CONFIG $gnome_print_args --version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` - gnome_print_minor_version=`$GNOME_CONFIG $gnome_print_args --version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` - gnome_print_micro_version=`$GNOME_CONFIG $gnome_print_config_args --version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` - if test "x$enable_gnome_printtest" = "xyes" ; then - ac_save_CFLAGS="$CFLAGS" - ac_save_LIBS="$LIBS" - CFLAGS="$CFLAGS $GNOME_PRINT_CFLAGS" - LIBS="$LIBS $GNOME_PRINT_LIBS" -dnl -dnl Now check if the installed GNOME-PRINT is sufficiently new. (Also sanity -dnl checks the results of gnome-config to some extent -dnl - rm -f conf.gnome_printtest - AC_TRY_RUN([ -#include -#include -#include -#include - -static char* -my_strdup (char *str) -{ - char *new_str; - - if (str) - { - new_str = malloc ((strlen (str) + 1) * sizeof(char)); - strcpy (new_str, str); - } - else - new_str = NULL; - - return new_str; -} - -int main () -{ - int major, minor, micro; - char *tmp_version; - - system ("touch conf.gnome_printtest"); - - /* HP/UX 9 (%@#!) writes to sscanf strings */ - tmp_version = my_strdup("$min_gnome_print_version"); - if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { - printf("%s, bad version string\n", "$min_gnome_print_version"); - exit(1); - } - return 0; -#if 0 - if (($gnome_print_major_version > major) || - (($gnome_print_major_version == major) && ($gnome_print_minor_version > minor)) || - (($gnome_print_major_version == major) && ($gnome_print_minor_version == minor) && ($gnome_print_micro_version >= micro))) - { - return 0; - } - else - { - printf("\n*** 'gnome-config print --version' returned %d.%d.%d, but the minimum version\n", $gnome_print_major_version, $gnome_print_minor_version, $gnome_print_micro_version); - printf("*** of GNOME-PRINT required is %d.%d.%d. If gnome-config is correct, then it is\n", major, minor, micro); - printf("*** best to upgrade to the required version.\n"); - printf("*** If gnome-config was wrong, set the environment variable GNOME_CONFIG\n"); - printf("*** to point to the correct copy of gnome-config, and remove the file\n"); - printf("*** config.cache before re-running configure\n"); - return 1; - } -#endif -} - -],, no_gnome_print=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) - CFLAGS="$ac_save_CFLAGS" - LIBS="$ac_save_LIBS" - fi - fi - if test "x$no_gnome_print" = x ; then - AC_MSG_RESULT(yes) - ifelse([$2], , :, [$2]) - else - AC_MSG_RESULT(no) - if test "$GNOME_CONFIG" = "no" ; then - echo "*** The gnome-config script installed by GNOME-LIBS could not be found" - echo "*** If GNOME-PRINT was installed in PREFIX, make sure PREFIX/bin is in" - echo "*** your path, or set the GNOME_CONFIG environment variable to the" - echo "*** full path to gnome-config." - else - if test -f conf.gnome_printtest ; then - : - else - echo "*** Could not run GNOME-PRINT test program, checking why..." - CFLAGS="$CFLAGS $GNOME_PRINT_CFLAGS" - LIBS="$LIBS $GNOME_PRINT_LIBS" - AC_TRY_LINK([ -#include -#include -], [ return 0; ], - [ echo "*** The test program compiled, but did not run. This usually means" - echo "*** that the run-time linker is not finding GNOME-PRINT or finding the wrong" - echo "*** version of GNOME-PRINT. If it is not finding GNOME-PRINT, you'll need to set your" - echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" - echo "*** to the installed location Also, make sure you have run ldconfig if that" - echo "*** is required on your system" - echo "***" - echo "*** If you have an old version installed, it is best to remove it, although" - echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"], - [ echo "*** The test program failed to compile or link. See the file config.log for the" - echo "*** exact error that occured. This usually means GNOME-PRINT was incorrectly installed" - echo "*** or that you have moved GNOME-PRINT since it was installed. In the latter case, you" - echo "*** may want to edit the gnome-config script: $GNOME_CONFIG" ]) - CFLAGS="$ac_save_CFLAGS" - LIBS="$ac_save_LIBS" - fi - fi - GNOME_PRINT_CFLAGS="" - GNOME_PRINT_LIBS="" - ifelse([$3], , :, [$3]) - fi - AC_SUBST(GNOME_PRINT_CFLAGS) - AC_SUBST(GNOME_PRINT_LIBS) - rm -f conf.gnome_printtest -]) - -AC_DEFUN([GNOME_PRINT_CHECK], [ - AM_PATH_GNOME_PRINT(0.1.0,,[AC_MSG_ERROR(GNOME-PRINT not found)]) -]) diff --git a/macros/gnome-pthread-check.m4 b/macros/gnome-pthread-check.m4 deleted file mode 100644 index a4eb3b4890..0000000000 --- a/macros/gnome-pthread-check.m4 +++ /dev/null @@ -1,16 +0,0 @@ -dnl -dnl And better, use gthreads instead... -dnl - -AC_DEFUN([GNOME_PTHREAD_CHECK],[ - PTHREAD_LIB="" - AC_CHECK_LIB(pthread, pthread_create, PTHREAD_LIB="-lpthread", - [AC_CHECK_LIB(pthreads, pthread_create, PTHREAD_LIB="-lpthreads", - [AC_CHECK_LIB(c_r, pthread_create, PTHREAD_LIB="-lc_r", - [AC_CHECK_FUNC(pthread_create)] - )] - )] - ) - AC_SUBST(PTHREAD_LIB) - AC_PROVIDE([GNOME_PTHREAD_CHECK]) -]) diff --git a/macros/gnome-support.m4 b/macros/gnome-support.m4 deleted file mode 100644 index 2c1d049842..0000000000 --- a/macros/gnome-support.m4 +++ /dev/null @@ -1,68 +0,0 @@ -dnl GNOME_SUPPORT_CHECKS -dnl Check for various support functions needed by the standard -dnl Gnome libraries. Sets LIBOBJS, might define some macros. -dnl This should only be used when building the Gnome libs; -dnl Gnome clients should not need this macro. -AC_DEFUN([GNOME_SUPPORT_CHECKS],[ - # we need an `awk' to build `gnomesupport.h' - AC_REQUIRE([AC_PROG_AWK]) - - # this should go away soon - need_gnome_support=yes - - save_LIBOBJS="$LIBOBJS" - LIBOBJS= - - AC_CHECK_FUNCS(getopt_long,,LIBOBJS="$LIBOBJS getopt.o getopt1.o") - - # for `scandir' - AC_HEADER_DIRENT - - # copied from `configure.in' of `libiberty' - vars="program_invocation_short_name program_invocation_name sys_errlist" - for v in $vars; do - AC_MSG_CHECKING([for $v]) - AC_CACHE_VAL(gnome_cv_var_$v, - [AC_TRY_LINK([int *p;], [extern int $v; p = &$v;], - [eval "gnome_cv_var_$v=yes"], - [eval "gnome_cv_var_$v=no"])]) - if eval "test \"`echo '$gnome_cv_var_'$v`\" = yes"; then - AC_MSG_RESULT(yes) - n=HAVE_`echo $v | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - AC_DEFINE_UNQUOTED($n) - else - AC_MSG_RESULT(no) - fi - done - - AC_REPLACE_FUNCS(memmove mkstemp scandir strcasecmp strerror strndup strnlen) - AC_REPLACE_FUNCS(strtok_r strtod strtol strtoul vasprintf vsnprintf) - - AC_CHECK_FUNCS(realpath,,LIBOBJS="$LIBOBJS canonicalize.o") - - # to include `error.c' error.c has some HAVE_* checks - AC_CHECK_FUNCS(vprintf doprnt strerror_r) - AM_FUNC_ERROR_AT_LINE - - # This is required if we declare setreuid () and setregid (). - AC_TYPE_UID_T - - # see if we need to declare some functions. Solaris is notorious for - # putting functions into the `libc' but not listing them in the headers - AC_CHECK_HEADERS(string.h strings.h stdlib.h unistd.h dirent.h) - GCC_NEED_DECLARATIONS(gethostname setreuid setregid getpagesize) - GCC_NEED_DECLARATION(scandir,[ -#ifdef HAVE_DIRENT_H -#include -#endif -]) - - # Turn our LIBOBJS into libtool objects. This is gross, but it - # requires changes to autoconf before it goes away. - LTLIBOBJS=`echo "$LIBOBJS" | sed 's/\.o/.lo/g'` - AC_SUBST(need_gnome_support) - AC_SUBST(LTLIBOBJS) - - LIBOBJS="$save_LIBOBJS" - AM_CONDITIONAL(BUILD_GNOME_SUPPORT, test "$need_gnome_support" = yes) -]) diff --git a/macros/gnome-undelfs.m4 b/macros/gnome-undelfs.m4 deleted file mode 100644 index c8ea6f4bac..0000000000 --- a/macros/gnome-undelfs.m4 +++ /dev/null @@ -1,20 +0,0 @@ -dnl GNOME_UNDELFS_CHECKS -dnl Check for ext2fs undel support. -dnl Set shell variable ext2fs_undel to "yes" if we have it, -dnl "no" otherwise. May define USE_EXT2FSLIB for cpp. -dnl Will set EXT2FS_UNDEL_LIBS to required libraries. - -AC_DEFUN([GNOME_UNDELFS_CHECKS], [ - AC_CHECK_HEADERS(ext2fs/ext2fs.h linux/ext2_fs.h) - ext2fs_undel=no - EXT2FS_UNDEL_LIBS= - if test x$ac_cv_header_ext2fs_ext2fs_h = xyes - then - if test x$ac_cv_header_linux_ext2_fs_h = xyes - then - AC_DEFINE(USE_EXT2FSLIB) - ext2fs_undel=yes - EXT2FS_UNDEL_LIBS="-lext2fs -lcom_err" - fi - fi -]) diff --git a/macros/gnome-vfs.m4 b/macros/gnome-vfs.m4 deleted file mode 100644 index 137a39dd3c..0000000000 --- a/macros/gnome-vfs.m4 +++ /dev/null @@ -1,120 +0,0 @@ -dnl GNOME_VFS_CHECKS -dnl Check for various functions needed by libvfs. -dnl This has various effects: -dnl Sets GNOME_VFS_LIBS to libraries required -dnl Sets termnet to true or false depending on whether it is required. -dnl If yes, defines USE_TERMNET. -dnl Sets vfs_flags to "pretty" list of vfs implementations we include. -dnl Sets shell variable use_vfs to yes (default, --with-vfs) or -dnl "no" (--without-vfs). -dnl Calls AC_SUBST(mcserv), which is either empty or "mcserv". - -dnl Private define -AC_DEFUN([GNOME_WITH_VFS],[ - dnl FIXME: network checks should probably be in their own macro. - AC_CHECK_LIB(nsl, t_accept) - AC_CHECK_LIB(socket, socket) - - have_socket=no - AC_CHECK_FUNCS(socket, have_socket=yes) - if test $have_socket = no; then - # socket is not in the default libraries. See if it's in some other. - for lib in bsd socket inet; do - AC_CHECK_LIB($lib, socket, [ - LIBS="$LIBS -l$lib" - have_socket=yes - AC_DEFINE(HAVE_SOCKET) - break]) - done - fi - - have_gethostbyname=no - AC_CHECK_FUNC(gethostbyname, have_gethostbyname=yes) - if test $have_gethostbyname = no; then - # gethostbyname is not in the default libraries. See if it's in some other. - for lib in bsd socket inet; do - AC_CHECK_LIB($lib, gethostbyname, [LIBS="$LIBS -l$lib"; have_gethostbyname=yes; break]) - done - fi - - vfs_flags="tarfs" - use_net_code=false - if test $have_socket = yes; then - AC_STRUCT_LINGER - AC_CHECK_FUNCS(pmap_set, , [ - AC_CHECK_LIB(rpc, pmap_set, [ - LIBS="-lrpc $LIBS" - AC_DEFINE(HAVE_PMAP_SET) - ])]) - AC_CHECK_FUNCS(pmap_getport pmap_getmaps rresvport) - dnl add for source routing support setsockopt - AC_CHECK_HEADERS(rpc/pmap_clnt.h) - vfs_flags="$vfs_flags, mcfs, ftpfs, fish" - use_net_code=true - fi - - dnl - dnl Samba support - dnl - smbfs="" - SAMBAFILES="" - AC_ARG_WITH(samba, - [--with-samba Support smb virtual file system],[ - if test "x$withval != xno"; then - AC_DEFINE(WITH_SMBFS) - vfs_flags="$vfs_flags, smbfs" - smbfs="smbfs.o" - SAMBAFILES="\$(SAMBAFILES)" - fi - ]) - AC_SUBST(smbfs) - AC_SUBST(SAMBAFILES) - - dnl - dnl The termnet support - dnl - termnet=false - AC_ARG_WITH(termnet, - [--with-termnet If you want a termified net support],[ - if test x$withval = xyes; then - AC_DEFINE(USE_TERMNET) - termnet=true - fi - ]) - - TERMNET="" - AC_DEFINE(USE_VFS) - if $use_net_code; then - AC_DEFINE(USE_NETCODE) - fi - mcserv= - if test $have_socket = yes; then - mcserv="mcserv" - if $termnet; then - TERMNET="-ltermnet" - fi - fi - - AC_SUBST(TERMNET) - AC_SUBST(mcserv) - -dnl FIXME: -dnl GNOME_VFS_LIBS= - -]) - -AC_DEFUN([GNOME_VFS_CHECKS],[ - use_vfs=yes - AC_ARG_WITH(vfs, - [--with-vfs Compile with the VFS code], - use_vfs=$withval - ) - case $use_vfs in - yes) GNOME_WITH_VFS;; - no) use_vfs=no;; - *) use_vfs=no;; - dnl Should we issue a warning? - esac -]) - - diff --git a/macros/gnome-x-checks.m4 b/macros/gnome-x-checks.m4 deleted file mode 100644 index 1e397ef8e3..0000000000 --- a/macros/gnome-x-checks.m4 +++ /dev/null @@ -1,80 +0,0 @@ -dnl GNOME_X_CHECKS -dnl -dnl Basic X11 related checks for X11. At the end, the following will be -dnl defined/changed: -dnl GTK_{CFLAGS,LIBS} From AM_PATH_GTK -dnl CPPFLAGS Will include $X_CFLAGS -dnl GNOME_HAVE_SM `true' or `false' depending on whether session -dnl management is available. It is available if -dnl both -lSM and X11/SM/SMlib.h exist. (Some -dnl Solaris boxes have the library but not the header) -dnl XPM_LIBS -lXpm if Xpm library is present, otherwise "" -dnl -dnl The following configure cache variables are defined (but not used): -dnl gnome_cv_passdown_{x_libs,X_LIBS,X_CFLAGS} -dnl -AC_DEFUN([GNOME_X_CHECKS], -[ - AM_PATH_GTK(1.2.0,,AC_MSG_ERROR(GTK not installed, or gtk-config not in path)) - dnl Hope that GTK_CFLAGS have only -I and -D. Otherwise, we could - dnl test -z "$x_includes" || CPPFLAGS="$CPPFLAGS -I$x_includes" - dnl - dnl Use CPPFLAGS instead of CFLAGS because AC_CHECK_HEADERS uses - dnl CPPFLAGS, not CFLAGS - CPPFLAGS="$CPPFLAGS $GTK_CFLAGS" - - saved_ldflags="$LDFLAGS" - LDFLAGS="$LDFLAGS $GTK_LIBS" - - gnome_cv_passdown_x_libs="$GTK_LIBS" - gnome_cv_passdown_X_LIBS="$GTK_LIBS" - gnome_cv_passdown_X_CFLAGS="$GTK_CFLAGS" - gnome_cv_passdown_GTK_LIBS="$GTK_LIBS" - - LDFLAGS="$saved_ldflags $GTK_LIBS" - -dnl We are requiring GTK >= 1.1.1, which means this will be fine anyhow. - USE_DEVGTK=true - -dnl AC_MSG_CHECKING([whether to use features from (unstable) GTK+ 1.1.x]) -dnl AC_EGREP_CPP(answer_affirmatively, -dnl [#include -dnl #ifdef GTK_HAVE_FEATURES_1_1_0 -dnl answer_affirmatively -dnl #endif -dnl ], dev_gtk=yes, dev_gtk=no) -dnl if test "$dev_gtk" = "yes"; then -dnl USE_DEVGTK=true -dnl fi -dnl AC_MSG_RESULT("$dev_gtk") - - GNOME_HAVE_SM=true - case "$GTK_LIBS" in - *-lSM*) - dnl Already found it. - ;; - *) - dnl Assume that if we have -lSM then we also have -lICE. - AC_CHECK_LIB(SM, SmcSaveYourselfDone, - [GTK_LIBS="-lSM -lICE $GTK_LIBS"],GNOME_HAVE_SM=false, - $x_libs -lICE) - ;; - esac - - if test "$GNOME_HAVE_SM" = true; then - AC_CHECK_HEADERS(X11/SM/SMlib.h,,GNOME_HAVE_SM=false) - fi - - if test "$GNOME_HAVE_SM" = true; then - AC_DEFINE(HAVE_LIBSM) - fi - - XPM_LIBS="" - AC_CHECK_LIB(Xpm, XpmFreeXpmImage, [XPM_LIBS="-lXpm"], , $x_libs) - AC_SUBST(XPM_LIBS) - - AC_REQUIRE([GNOME_PTHREAD_CHECK]) - LDFLAGS="$saved_ldflags" - - AC_PROVIDE([GNOME_X_CHECKS]) -]) diff --git a/macros/gnome-xml-check.m4 b/macros/gnome-xml-check.m4 deleted file mode 100644 index 4bc91d124d..0000000000 --- a/macros/gnome-xml-check.m4 +++ /dev/null @@ -1,30 +0,0 @@ -dnl -dnl GNOME_XML_HOOK (script-if-xml-found, failflag) -dnl -dnl If failflag is "failure", script aborts due to lack of XML -dnl -dnl Check for availability of the libxml library -dnl the XML parser uses libz if available too -dnl - -AC_DEFUN([GNOME_XML_HOOK],[ - AC_PATH_PROG(GNOME_CONFIG,gnome-config,no) - if test "$GNOME_CONFIG" = no; then - if test x$2 = xfailure; then - AC_MSG_ERROR(Could not find gnome-config) - fi - fi - AC_CHECK_LIB(xml, xmlNewDoc, [ - $1 - GNOME_XML_LIB=`$GNOME_CONFIG --libs xml` - ], [ - if test x$2 = xfailure; then - AC_MSG_ERROR(Could not link sample xml program) - fi - ], `$GNOME_CONFIG --libs xml`) - AC_SUBST(GNOME_XML_LIB) -]) - -AC_DEFUN([GNOME_XML_CHECK], [ - GNOME_XML_HOOK([],failure) -]) diff --git a/macros/gnome.m4 b/macros/gnome.m4 deleted file mode 100644 index 659c22c494..0000000000 --- a/macros/gnome.m4 +++ /dev/null @@ -1,128 +0,0 @@ -dnl -dnl GNOME_INIT_HOOK (script-if-gnome-enabled, [failflag], [additional-inits]) -dnl -dnl if failflag is "fail" then GNOME_INIT_HOOK will abort if gnomeConf.sh -dnl is not found. -dnl - -AC_DEFUN([GNOME_INIT_HOOK],[ - AC_SUBST(GNOME_LIBS) - AC_SUBST(GNOMEUI_LIBS) - AC_SUBST(GNOMEGNORBA_LIBS) - AC_SUBST(GTKXMHTML_LIBS) - AC_SUBST(ZVT_LIBS) - AC_SUBST(GNOME_LIBDIR) - AC_SUBST(GNOME_INCLUDEDIR) - - AC_ARG_WITH(gnome-includes, - [ --with-gnome-includes Specify location of GNOME headers],[ - CFLAGS="$CFLAGS -I$withval" - ]) - - AC_ARG_WITH(gnome-libs, - [ --with-gnome-libs Specify location of GNOME libs],[ - LDFLAGS="$LDFLAGS -L$withval" - gnome_prefix=$withval - ]) - - AC_ARG_WITH(gnome, - [ --with-gnome Specify prefix for GNOME files], - if test x$withval = xyes; then - want_gnome=yes - dnl Note that an empty true branch is not - dnl valid sh syntax. - ifelse([$1], [], :, [$1]) - else - if test "x$withval" = xno; then - want_gnome=no - else - want_gnome=yes - LDFLAGS="$LDFLAGS -L$withval/lib" - CFLAGS="$CFLAGS -I$withval/include" - gnome_prefix=$withval/lib - fi - fi, - want_gnome=yes) - - if test "x$want_gnome" = xyes; then - - AC_PATH_PROG(GNOME_CONFIG,gnome-config,no) - if test "$GNOME_CONFIG" = "no"; then - no_gnome_config="yes" - else - AC_MSG_CHECKING(if $GNOME_CONFIG works) - if $GNOME_CONFIG --libs-only-l gnome >/dev/null 2>&1; then - AC_MSG_RESULT(yes) - GNOME_GNORBA_HOOK([],$2) - GNOME_LIBS="`$GNOME_CONFIG --libs-only-l gnome`" - GNOMEUI_LIBS="`$GNOME_CONFIG --libs-only-l gnomeui`" - GNOMEGNORBA_LIBS="`$GNOME_CONFIG --libs-only-l gnorba gnomeui`" - GTKXMHTML_LIBS="`$GNOME_CONFIG --libs-only-l gtkxmhtml`" - ZVT_LIBS="`$GNOME_CONFIG --libs-only-l zvt`" - GNOME_LIBDIR="`$GNOME_CONFIG --libs-only-L gnorba gnomeui`" - GNOME_INCLUDEDIR="`$GNOME_CONFIG --cflags gnorba gnomeui`" - $1 - else - AC_MSG_RESULT(no) - no_gnome_config="yes" - fi - fi - - if test x$exec_prefix = xNONE; then - if test x$prefix = xNONE; then - gnome_prefix=$ac_default_prefix/lib - else - gnome_prefix=$prefix/lib - fi - else - gnome_prefix=`eval echo \`echo $libdir\`` - fi - - if test "$no_gnome_config" = "yes"; then - AC_MSG_CHECKING(for gnomeConf.sh file in $gnome_prefix) - if test -f $gnome_prefix/gnomeConf.sh; then - AC_MSG_RESULT(found) - echo "loading gnome configuration from" \ - "$gnome_prefix/gnomeConf.sh" - . $gnome_prefix/gnomeConf.sh - $1 - else - AC_MSG_RESULT(not found) - if test x$2 = xfail; then - AC_MSG_ERROR(Could not find the gnomeConf.sh file that is generated by gnome-libs install) - fi - fi - fi - fi - - if test -n "$3"; then - n="$3" - for i in $n; do - AC_MSG_CHECKING(extra library \"$i\") - case $i in - applets) - AC_SUBST(GNOME_APPLETS_LIBS) - GNOME_APPLETS_LIBS=`$GNOME_CONFIG --libs-only-l applets` - AC_MSG_RESULT($GNOME_APPLETS_LIBS);; - docklets) - AC_SUBST(GNOME_DOCKLETS_LIBS) - GNOME_DOCKLETS_LIBS=`$GNOME_CONFIG --libs-only-l docklets` - AC_MSG_RESULT($GNOME_DOCKLETS_LIBS);; - capplet) - AC_SUBST(GNOME_CAPPLET_LIBS) - GNOME_CAPPLET_LIBS=`$GNOME_CONFIG --libs-only-l capplet` - AC_MSG_RESULT($GNOME_CAPPLET_LIBS);; - *) - AC_MSG_RESULT(unknown library) - esac - done - fi -]) - -dnl -dnl GNOME_INIT ([additional-inits]) -dnl - -AC_DEFUN([GNOME_INIT],[ - GNOME_INIT_HOOK([],fail,$1) -]) diff --git a/macros/gperf-check.m4 b/macros/gperf-check.m4 deleted file mode 100644 index 1b73d3f19d..0000000000 --- a/macros/gperf-check.m4 +++ /dev/null @@ -1,79 +0,0 @@ -dnl -dnl AC_PROG_GPERF (MINIMUM-VERSION) -dnl -dnl Check for availability of gperf. -dnl Abort if not found or if current version is not up to par. -dnl - -AC_DEFUN([AC_PROG_GPERF],[ - AC_PATH_PROG(GPERF, gperf, no) - if test "$GPERF" = no; then - AC_MSG_ERROR(Could not find gperf) - fi - min_gperf_version=ifelse([$1], ,2.7,$1) - AC_MSG_CHECKING(for gperf - version >= $min_gperf_version) - gperf_major_version=`$GPERF --version | \ - sed 's/GNU gperf \([[0-9]]*\).\([[0-9]]*\)/\1/'` - gperf_minor_version=`$GPERF --version | \ - sed 's/GNU gperf \([[0-9]]*\).\([[0-9]]*\)/\2/'` - no_gperf="" -dnl -dnl Now check if the installed gperf is sufficiently new. -dnl - AC_TRY_RUN([ -#include -#include -#include - -static char* -my_strdup (char *str) -{ - char *new_str; - - if (str) - { - new_str = malloc ((strlen (str) + 1) * sizeof(char)); - strcpy (new_str, str); - } - else - new_str = NULL; - - return new_str; -} - -int -main () -{ - char *tmp_version; - - int major; - int minor; - - /* HP/UX 9 (%@#!) writes to sscanf strings */ - tmp_version = my_strdup("$min_gperf_version"); - if (sscanf(tmp_version, "%d.%d", &major, &minor) != 2) { - printf ("%s, bad version string\n", "$min_gperf_version"); - exit (1); - } - - if (($gperf_major_version > major) || - (($gperf_major_version == major) && ($gperf_minor_version >= minor))) { - return 0; - } else { - printf ("\n"); - printf ("*** An old version of gperf ($gperf_major_version.$gperf_minor_version) was found.\n"); - printf ("*** You need a version of gperf newer than %d.%d.%d. The latest version of\n", - major, minor); - printf ("*** gperf is always available from ftp://ftp.gnu.org.\n"); - printf ("***\n"); - return 1; - } -} -],,no_gperf=yes,[/bin/true]) - if test "x$no_gperf" = x ; then - AC_MSG_RESULT(yes) - else - AC_MSG_RESULT(no) - fi - -]) diff --git a/macros/linger.m4 b/macros/linger.m4 deleted file mode 100644 index dfa7c8aea0..0000000000 --- a/macros/linger.m4 +++ /dev/null @@ -1,28 +0,0 @@ -dnl -dnl Check for struct linger -dnl -AC_DEFUN(AC_STRUCT_LINGER, [ -av_struct_linger=no -AC_MSG_CHECKING(struct linger is available) -AC_TRY_RUN([ -#include -#include - -struct linger li; - -main () -{ - li.l_onoff = 1; - li.l_linger = 120; - exit (0); -} -],[ -AC_DEFINE(HAVE_STRUCT_LINGER) -av_struct_linger=yes -],[ -av_struct_linger=no -],[ -av_struct_linger=no -]) -AC_MSG_RESULT($av_struct_linger) -]) diff --git a/macros/need-declaration.m4 b/macros/need-declaration.m4 deleted file mode 100644 index d5b7bc66d5..0000000000 --- a/macros/need-declaration.m4 +++ /dev/null @@ -1,42 +0,0 @@ -dnl See whether we need a declaration for a function. -dnl GCC_NEED_DECLARATION(FUNCTION [, EXTRA-HEADER-FILES]) -AC_DEFUN(GCC_NEED_DECLARATION, -[AC_MSG_CHECKING([whether $1 must be declared]) -AC_CACHE_VAL(gcc_cv_decl_needed_$1, -[AC_TRY_COMPILE([ -#include -#ifdef HAVE_STRING_H -#include -#else -#ifdef HAVE_STRINGS_H -#include -#endif -#endif -#ifdef HAVE_STDLIB_H -#include -#endif -#ifdef HAVE_UNISTD_H -#include -#endif -$2], -[char *(*pfn) = (char *(*)) $1], -eval "gcc_cv_decl_needed_$1=no", eval "gcc_cv_decl_needed_$1=yes")]) -if eval "test \"`echo '$gcc_cv_decl_needed_'$1`\" = yes"; then - AC_MSG_RESULT(yes) - gcc_need_declarations="$gcc_need_declarations $1" - gcc_tr_decl=NEED_DECLARATION_`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - AC_DEFINE_UNQUOTED($gcc_tr_decl) -else - AC_MSG_RESULT(no) -fi -])dnl - -dnl Check multiple functions to see whether each needs a declaration. -dnl GCC_NEED_DECLARATIONS(FUNCTION... [, EXTRA-HEADER-FILES]) -AC_DEFUN(GCC_NEED_DECLARATIONS, -[for ac_func in $1 -do -GCC_NEED_DECLARATION($ac_func, $2) -done -] -) diff --git a/widgets/text/e-table-text-model.c b/widgets/text/e-table-text-model.c deleted file mode 100644 index abda0bcc84..0000000000 --- a/widgets/text/e-table-text-model.c +++ /dev/null @@ -1,225 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* ETableTextModel - Text item model for evolution. - * Copyright (C) 2000 Helix Code, Inc. - * - * Author: Chris Lahey - * - * A majority of code taken from: - * - * Text item type for GnomeCanvas widget - * - * GnomeCanvas is basically a port of the Tk toolkit's most excellent - * canvas widget. Tk is copyrighted by the Regents of the University - * of California, Sun Microsystems, and other parties. - * - * Copyright (C) 1998 The Free Software Foundation - * - * Author: Federico Mena */ - -#include -#include -#include "e-table-text-model.h" - -static void e_table_text_model_class_init (ETableTextModelClass *class); -static void e_table_text_model_init (ETableTextModel *model); -static void e_table_text_model_destroy (GtkObject *object); - -static gchar *e_table_text_model_get_text (ETextModel *model); -static void e_table_text_model_set_text (ETextModel *model, gchar *text); -static void e_table_text_model_insert (ETextModel *model, gint postion, gchar *text); -static void e_table_text_model_insert_length (ETextModel *model, gint postion, gchar *text, gint length); -static void e_table_text_model_delete (ETextModel *model, gint postion, gint length); - -static GtkObject *parent_class; - - - -/** - * e_table_text_model_get_type: - * @void: - * - * Registers the &ETableTextModel class if necessary, and returns the type ID - * associated to it. - * - * Return value: The type ID of the &ETableTextModel class. - **/ -GtkType -e_table_text_model_get_type (void) -{ - static GtkType model_type = 0; - - if (!model_type) { - GtkTypeInfo model_info = { - "ETableTextModel", - sizeof (ETableTextModel), - sizeof (ETableTextModelClass), - (GtkClassInitFunc) e_table_text_model_class_init, - (GtkObjectInitFunc) e_table_text_model_init, - NULL, /* reserved_1 */ - NULL, /* reserved_2 */ - (GtkClassInitFunc) NULL - }; - - model_type = gtk_type_unique (e_text_model_get_type (), &model_info); - } - - return model_type; -} - -/* Class initialization function for the text item */ -static void -e_table_text_model_class_init (ETableTextModelClass *klass) -{ - GtkObjectClass *object_class; - ETextModelClass *model_class; - - object_class = (GtkObjectClass *) klass; - model_class = (ETextModelClass *) klass; - - parent_class = gtk_type_class (e_text_model_get_type ()); - - model_class->get_text = e_table_text_model_get_text; - model_class->set_text = e_table_text_model_set_text; - model_class->insert = e_table_text_model_insert; - model_class->insert_length = e_table_text_model_insert_length; - model_class->delete = e_table_text_model_delete; - - object_class->destroy = e_table_text_model_destroy; -} - -/* Object initialization function for the text item */ -static void -e_table_text_model_init (ETableTextModel *model) -{ - model->model = NULL; - model->row = 0; - model->model_col = 0; - model->cell_changed_signal_id = 0; - model->row_changed_signal_id = 0; -} - -/* Destroy handler for the text item */ -static void -e_table_text_model_destroy (GtkObject *object) -{ - ETableTextModel *model; - - g_return_if_fail (object != NULL); - g_return_if_fail (E_IS_TABLE_TEXT_MODEL (object)); - - model = E_TABLE_TEXT_MODEL (object); - - if (model->model) - g_assert (GTK_IS_OBJECT (model->model)); - - if (model->cell_changed_signal_id) - gtk_signal_disconnect (GTK_OBJECT(model->model), - model->cell_changed_signal_id); - - if (model->row_changed_signal_id) - gtk_signal_disconnect (GTK_OBJECT(model->model), - model->row_changed_signal_id); - - if (model->model) - gtk_object_unref (GTK_OBJECT(model->model)); - - if (GTK_OBJECT_CLASS (parent_class)->destroy) - (* GTK_OBJECT_CLASS (parent_class)->destroy) (object); -} -static gchar * -e_table_text_model_get_text (ETextModel *text_model) -{ - ETableTextModel *model = E_TABLE_TEXT_MODEL(text_model); - if (model->model) - return (gchar *)e_table_model_value_at (model->model, model->model_col, model->row); - else - return ""; -} - -static void -e_table_text_model_set_text (ETextModel *text_model, gchar *text) -{ - ETableTextModel *model = E_TABLE_TEXT_MODEL(text_model); - if (model->model) - e_table_model_set_value_at (model->model, model->model_col, model->row, (void *) text); -} - -static void -e_table_text_model_insert (ETextModel *text_model, gint position, gchar *text) -{ - ETableTextModel *model = E_TABLE_TEXT_MODEL(text_model); - if (model->model){ - gchar *temp = (gchar *)e_table_model_value_at (model->model, model->model_col, model->row); - temp = g_strdup_printf ("%.*s%s%s", position, temp, text, temp + position); - e_table_model_set_value_at (model->model, model->model_col, model->row, temp); - g_free (temp); - } -} - -static void -e_table_text_model_insert_length (ETextModel *text_model, gint position, gchar *text, gint length) -{ - ETableTextModel *model = E_TABLE_TEXT_MODEL(text_model); - if (model->model){ - gchar *temp = (gchar *)e_table_model_value_at (model->model, model->model_col, model->row); - temp = g_strdup_printf ("%.*s%.*s%s", position, temp, length, text, temp + position); - e_table_model_set_value_at (model->model, model->model_col, model->row, temp); - g_free (temp); - } -} - -static void -e_table_text_model_delete (ETextModel *text_model, gint position, gint length) -{ - ETableTextModel *model = E_TABLE_TEXT_MODEL(text_model); - if (model->model){ - gchar *temp = (gchar *)e_table_model_value_at (model->model, model->model_col, model->row); - temp = g_strdup_printf ("%.*s%s", position, temp, temp + position + length); - e_table_model_set_value_at (model->model, model->model_col, model->row, temp); - g_free (temp); - } -} - -static void -cell_changed (ETableModel *table_model, int model_col, int row, ETableTextModel *model) -{ - if (model->model_col == model_col && - model->row == row) - e_text_model_changed (E_TEXT_MODEL(model)); -} - -static void -row_changed (ETableModel *table_model, int row, ETableTextModel *model) -{ - if (model->row == row) - e_text_model_changed (E_TEXT_MODEL(model)); -} - -ETableTextModel * -e_table_text_model_new (ETableModel *table_model, int row, int model_col) -{ - ETableTextModel *model; - - g_return_val_if_fail(table_model != NULL, NULL); - g_return_val_if_fail(E_IS_TABLE_MODEL(table_model), NULL); - - model = gtk_type_new (e_table_text_model_get_type ()); - model->model = table_model; - if (model->model){ - gtk_object_ref (GTK_OBJECT(model->model)); - model->cell_changed_signal_id = - gtk_signal_connect (GTK_OBJECT(model->model), - "model_cell_changed", - GTK_SIGNAL_FUNC(cell_changed), - model); - model->row_changed_signal_id = - gtk_signal_connect (GTK_OBJECT(model->model), - "model_row_changed", - GTK_SIGNAL_FUNC(row_changed), - model); - } - model->row = row; - model->model_col = model_col; - return model; -} - diff --git a/widgets/text/e-table-text-model.h b/widgets/text/e-table-text-model.h deleted file mode 100644 index f4d477ecd4..0000000000 --- a/widgets/text/e-table-text-model.h +++ /dev/null @@ -1,61 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* ETableTextModel - Text item for evolution. - * Copyright (C) 2000 Helix Code, Inc. - * - * Author: Chris Lahey - * - * A majority of code taken from: - * - * Text item type for GnomeCanvas widget - * - * GnomeCanvas is basically a port of the Tk toolkit's most excellent - * canvas widget. Tk is copyrighted by the Regents of the University - * of California, Sun Microsystems, and other parties. - * - * Copyright (C) 1998 The Free Software Foundation - * - * Author: Federico Mena */ - -#ifndef E_TABLE_TEXT_MODEL_H -#define E_TABLE_TEXT_MODEL_H - -#include -#include -#include - - -BEGIN_GNOME_DECLS - -#define E_TYPE_TABLE_TEXT_MODEL (e_table_text_model_get_type ()) -#define E_TABLE_TEXT_MODEL(obj) (GTK_CHECK_CAST ((obj), E_TYPE_TABLE_TEXT_MODEL, ETableTextModel)) -#define E_TABLE_TEXT_MODEL_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), E_TYPE_TABLE_TEXT_MODEL, ETableTextModelClass)) -#define E_IS_TABLE_TEXT_MODEL(obj) (GTK_CHECK_TYPE ((obj), E_TYPE_TABLE_TEXT_MODEL)) -#define E_IS_TABLE_TEXT_MODEL_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), E_TYPE_TABLE_TEXT_MODEL)) - -typedef struct _ETableTextModel ETableTextModel; -typedef struct _ETableTextModelClass ETableTextModelClass; - -struct _ETableTextModel { - ETextModel parent; - - ETableModel *model; - int row; - int model_col; - - int cell_changed_signal_id; - int row_changed_signal_id; -}; - -struct _ETableTextModelClass { - ETextModelClass parent_class; - -}; - - -/* Standard Gtk function */ -GtkType e_table_text_model_get_type (void); -ETableTextModel *e_table_text_model_new (ETableModel *table_model, int row, int model_col); - -END_GNOME_DECLS - -#endif -- cgit v1.2.3