diff options
author | Hans Petter <hansp@src.gnome.org> | 2003-09-12 06:04:44 +0800 |
---|---|---|
committer | Hans Petter <hansp@src.gnome.org> | 2003-09-12 06:04:44 +0800 |
commit | 697761cc337aa77a47140c8df50ed84bc25e23f6 (patch) | |
tree | b785830f72e9938cceaa016a419c7b6d9892bada /libical/src/Net-ICal-Libical | |
parent | 733d77e657516f9a59b5c1a7b62acb87b03ec86f (diff) | |
download | gsoc2013-evolution-697761cc337aa77a47140c8df50ed84bc25e23f6.tar gsoc2013-evolution-697761cc337aa77a47140c8df50ed84bc25e23f6.tar.gz gsoc2013-evolution-697761cc337aa77a47140c8df50ed84bc25e23f6.tar.bz2 gsoc2013-evolution-697761cc337aa77a47140c8df50ed84bc25e23f6.tar.lz gsoc2013-evolution-697761cc337aa77a47140c8df50ed84bc25e23f6.tar.xz gsoc2013-evolution-697761cc337aa77a47140c8df50ed84bc25e23f6.tar.zst gsoc2013-evolution-697761cc337aa77a47140c8df50ed84bc25e23f6.zip |
Import new libical from mainline HEAD and make appropriate changes to
Evolution.
svn path=/trunk/; revision=22538
Diffstat (limited to 'libical/src/Net-ICal-Libical')
22 files changed, 10909 insertions, 0 deletions
diff --git a/libical/src/Net-ICal-Libical/MANIFEST b/libical/src/Net-ICal-Libical/MANIFEST new file mode 100644 index 0000000000..1a6880e8b4 --- /dev/null +++ b/libical/src/Net-ICal-Libical/MANIFEST @@ -0,0 +1,16 @@ +MANIFEST +Makefile.PL +lib/Net/ICal/Libical.pm +netical.i +netical_wrap.c +netical_wrap.doc +test-data/2446.mime +test-data/error +test-data/mail-examples +test-data/no-error +test-data/rfc2445.ics +test-data/rfc2446.ics +test-data/single-with-error +test/example.pl +test/libical.pl +test/swig.pl diff --git a/libical/src/Net-ICal-Libical/Makefile.PL b/libical/src/Net-ICal-Libical/Makefile.PL new file mode 100644 index 0000000000..f46c61bc02 --- /dev/null +++ b/libical/src/Net-ICal-Libical/Makefile.PL @@ -0,0 +1,42 @@ +#!/usr/bin/perl +# -*- Mode: perl -*- + +use ExtUtils::MakeMaker; +WriteMakefile( + 'MAKEFILE'=> 'Makefile', + 'VERSION_FROM' => 'lib/Net/ICal/Libical.pm', + 'NAME' => 'Net::ICal::Libical', + 'INC' => '-I../libical -I ../libicalss', + 'LIBS' => ['-L../libical/.libs -L../libicalss/.libs -lical -licalss -lm'], + 'OBJECT' => 'netical_wrap.o', # Object files + dist => { + COMPRESS =>'gzip', + SUFFIX =>'gz' + }, + + ); + +sub MY::top_targets +{ + my $self = shift; + + my $old = $self->MM::top_targets; + + return "all:: netical_wrap.o\n$old"; + +} + +sub MY::postamble +{ + + return <<EOM; + +netical_wrap.c: netical.i + swig -perl5 -package Net::ICal::Libical netical.i + +wrap: + swig -perl5 -package Net::ICal::Libical netical.i + + +EOM +} diff --git a/libical/src/Net-ICal-Libical/README b/libical/src/Net-ICal-Libical/README new file mode 100644 index 0000000000..b4b4b9c8b9 --- /dev/null +++ b/libical/src/Net-ICal-Libical/README @@ -0,0 +1,7 @@ + +Net::ICal::Libical: A perl binding to libical. + +This code is PRE-ALPHA. Some of the test routines work, but the code +is not really useful. It is looking for an author, so if you'd like to +have this binding working, please volunteer to work on it. Contact +Eric Busboom, eric@softwarestudio.org diff --git a/libical/src/Net-ICal-Libical/lib/Net/ICal/Libical.pm b/libical/src/Net-ICal-Libical/lib/Net/ICal/Libical.pm new file mode 100644 index 0000000000..a9b15f3855 --- /dev/null +++ b/libical/src/Net-ICal-Libical/lib/Net/ICal/Libical.pm @@ -0,0 +1,386 @@ +#!/usr/bin/perl +# -*- Mode: perl -*- +#====================================================================== +# FILE: Libical.pm +# CREATOR: eric +# +# DESCRIPTION: +# +# +# $Id$ +# $Locker$ +# +# (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org +# +# This package is free software and is provided "as is" without express +# or implied warranty. It may be used, redistributed and/or modified +# under the same terms as perl itself. ( Either the Artistic License or the +# GPL. ) +# +#====================================================================== + +# This part of this file was automatically generated by SWIG + +require Net::ICal::Libical::Component; +require Net::ICal::Libical::Property; +require Net::ICal::Libical::Time; +require Net::ICal::Libical::Duration; + +package Net::ICal::Libical; +require Exporter; +require DynaLoader; +@ISA = qw(Exporter DynaLoader); +package Net::ICal::Libical; +bootstrap Net::ICal::Libical; +var_Net__ICal__Libical_init(); +@EXPORT = qw( ); + +$VERSION = "0.01"; + +1; + + + + +sub validate_component { + my $comp_str = shift; + + + my $c = Net::ICal::Libical::icalparser_parse_string($comp_str); + my $out; + + die "Failed to parse component" if !$c; + + my $r = Net::ICal::Libical::icalrestriction_check($c); + + $out = Net::ICal::Libical::icalcomponent_as_ical_string($c); + + Net::ICal::Libical::icalcomponent_free($c); + + return $out; + +} + + +sub generate_occurrences { + my $rule = shift; + my $start = shift; + my $count = shift; + + my @out; + + my $array = Net::ICal::Libical::icallangbind_new_array(25); + + Net::ICal::Libical::icalrecur_expand_recurrence($rule,$start, + $count,$array); + + for($i = 0; $i<$count; $i++){ + my $t = Net::ICal::Libical::icallangbind_access_array($array,$i); + if($t != 0) { + push(@out,$t); + } + + } + + Net::ICal::Libical::icallangbind_free_array($array); + + return @out; +} + + +# The remaining code is just the interface declarations for a complete +# perl binding to libical. Currently, it is looking for an author.... + + + + + +1; + +__END__ + +#""" Represent iCalendar DATE, TIME and DATE-TIME "" + +package Net::ICal::Libical::Time; +@ISA = (Property); + +sub new {} + +#"""Updates value and value_type based on the (internal) self.tt.""" +sub _update_value { } + +# " Return true if this is a valid time " +sub valid { } + +# """ Return or set time in seconds past POSIX epoch""" +sub utc_seconds {} + +# """ Return or set boolean indicating if time is in UTC """ +sub is_utc {} + +# Get/Set booll indicating is time is a date +sub is_date(self,v=None): + +#"" Return or set the timezone string for this time """ +sub timezone {} + +#"" Get or set the seconds component of this time """ +sub second {} +sub minute {} +sub hour {} +sub day {} +sub month {} +sub year {} + +# How dow you over load +,- in perl? + +# Add duration to time = time +sub __add__{} + +# Subtract time from time = duration +# Subtract duration from time = time +sub __sub__(self,o): + + +package Net::ICal::Libical::Duration(Property): +@ISA = (Property); + +sub new {} +sub _update_value {} +#"Return true if this is a valid duration" +sub valid {} +# """Return or set duration in seconds""" +sub seconds {} + + +#"""Represent a span of time""" + +package Net::ICal::Libical::Period; +@ISA = (Property); + +sub new{} + +sub _end_is_duration {} +sub _end_is_time {} +sub _update_value {} + +#"Return true if this is a valid period" +sub valid {} + +#Return or set start time of the period. The start time may be +#expressed as an RFC2445 format string or an instance of Time. +#The return value is an instance of Time +sub start {} + +#Return or set end time of the period. The end time may be +#expressed as an RFC2445 format string or an instance of Time. +#The return value is an instance of Time. + +#If the Period has a duration set, but not an end time, this +#method will caluculate the end time from the duration. +sub end {} + +#Return or set the duration of the period. The duration may be +#expressed as an RFC2445 format string or an instance of Duration. +#The return value is an instance of Duration. +#If the period has an end time set, but not a duration, this +#method will calculate the duration from the end time. +sub duration{} + +# Get set the timezone for the period. Basically returns self->dict{TZID} +sub timezone(self,v=None): + + +# Represents the value and all parameters of an attendee +package Net::ICal::Libical::Attendee(Property): +@ISA = (Property); + +sub new{} + +# Methods for accessing enumerated parameters +sub cn {} +sub cutype {} +sub dir {} +sub delegated_from {} +sub delegated_to {} +sub language {} +sub member {} +sub partstat {} +sub role {} +sub rsvp {} +sub sent_by {} + + +package Net::ICal::Libical::Organizer; +@ISA = (Property) +# Methods for accessing enumerated parameters +sub cn{} +sub dir{} +sub language {} +sub sent_by {} + +package Net::ICal::Libical::Recurrence_Id; +@ISA= (Property) + +package Net::ICal::Libical::Attach; +@ISA= (Property) + +package Net::ICal::Libical::Event; +@ISA= (Component) + +sub component_type {} + +#"Returns a copy of the object." +sub clone {} + +#Sets or returns the value of the DTEND property. +#Usage: +#dtend(time_obj) # Set the value using a Time object +#dtend('19970101T123000Z') # Set the value as an iCalendar string +#dtend(982362522) # Set the value using seconds (time_t) +#dtend() # Return a Time +# +#If the dtend value is being set and duration() has a value, the +#duration property will be removed. +sub dtend{} + +#Sets or returns the value of the duration property. +#Usage: +#duration(dur_obj) # Set the value using a Duration object +#duration("P3DT12H") # Set value as an iCalendar string +#duration(3600) # Set duration using seconds +#duration() # Return a duration +# +#If the duration value is being set and dtend() has a value, the dtend +#property will be removed. +sub duration{} + +#Sets attendees or returns a list of Attendee objects. +sub attendees {} + +#Sets or gets the value of the ORGANIZER property. +#Usage: +#organizer(orgObj) # Set value using an organizer object +#organizer('MAILTO:jd@not.com') # Set value using a CAL-ADDRESS string +#organizer() # Return a CAL-ADDRESS string +sub organizer{} + +#"Sets or gets the SUMMARY value of the Event." +sub summary{} + +#Sets or gets the UID of the Event. +sub uid{} + +#Sets or gets the value for the RECURRENCE-ID property. +#Usage: +#Recurrence_id(recIdObj) # Set using a Recurrence_Id object +#Recurrence_id("19700801T133000") # Set using an iCalendar string +#Recurrence_id(8349873494) # Set using seconds from epoch +#Recurrence_id() # Return a Time +sub recurrence_id{} + +#Sets or gets the SEQUENCE value of the Event. +#Usage: +#sequence(1) # Set the value using an integer +#sequence('2') # Set the value using a string containing an integer +#sequence() # Return an integer +sub sequence{} + +#Sets or returns the value of the LAST-MODIFIED property. +#Usage: +#lastmodified(time_obj) # Set the value using a Time object +#lastmodified('19970101T123000Z')# Set using an iCalendar string +#lastmodified(982362522) # Set using seconds +#lastmodified() # Return a Time +sub lastmodified{} + + + +#Sets or returns the value of the CREATED property. +#Usage: +#created(time_obj) # Set the value using a Time object +#created('19970101T123000Z') # Set using an iCalendar string +#created(982362522) # Set using seconds +#created() # Return a Time +sub created {} + + +sub related_to{} +sub comment{} + +"Sets or returns the value of the DESCRIPTION property." + +sub description {} + +#Sets categories or returns a list of Attendee objects. +sub categories {} + +sub attach{} + +#Represents a set of event occurrences. This +#package controls a component's RRULE, EXRULE, RDATE and EXDATE +#properties and can produce from them a set of occurrences. +package Net::ICal::Libical::RecurrenceSet: + + +#Include a date or rule to the set. +#Use date= or pass in a +#Time instance to include a date. Included dates will add an +#RDATE property or will remove an EXDATE property of the same +#date. +#Use rule= or pass in a string to include a rule. Included +#rules with either add a RRULE property or remove an EXRULE +#property. + +sub include{} + +#Exclude date or rule to the set. +#Use date= or pass in a Time instance to exclude a +#date. Excluded dates will add an EXDATE property or will remove +#an RDATE property of the same date. +#Use rule= or pass in a string to exclude a rule. Excluded +#rules with either add an EXRULE property or remove an RRULE +#property. +sub exclude{} + +#Return 'count' occurrences as a tuple of Time instances. +sub occurrences{} + +package Net::ICal::Libical::Store; +sub new{} +sub path{} +sub mark{} +sub commit{} +sub addComponent{} +sub removeComponent{} +sub countComponents{} +sub select{} +sub clearSelect{} +sub fetch{} +sub fetchMatchK{} +sub modify{} +sub currentComponent{} +sub firstComponent{} +sub nextComponent{} + + +package Net::ICal::Libical::FileStore; +@ISA = (Store) +sub new{} +sub path{} +sub mark{} +sub commit{} +sub addComponent{} +sub removeComponent{} +sub countComponents{} +sub select{} +sub clearSelect{} +sub fetch{} +sub fetchMatchK{} +sub modify{} +sub currentComponent{} +sub firstComponent{} +sub nextComponent{} + + +1; diff --git a/libical/src/Net-ICal-Libical/lib/Net/ICal/Libical/Component.pm b/libical/src/Net-ICal-Libical/lib/Net/ICal/Libical/Component.pm new file mode 100644 index 0000000000..c25297c111 --- /dev/null +++ b/libical/src/Net-ICal-Libical/lib/Net/ICal/Libical/Component.pm @@ -0,0 +1,175 @@ +#!/usr/bin/perl +# -*- Mode: perl -*- +#====================================================================== +# FILE: Component.pm +# CREATOR: eric 1 Mar 01 +# +# DESCRIPTION: +# +# +# $Id$ +# $Locker$ +# +# (C) COPYRIGHT 2000, Eric Busboom, eric@softwarestudio.org +# +# This package is free software and is provided "as is" without express +# or implied warranty. It may be used, redistributed and/or modified +# under the same terms as perl itself. ( Either the Artistic License or the +# GPL. ) +# +# +#====================================================================== + + + +package Net::ICal::Libical::Component; +use Net::ICal::Libical; + +use strict; + +sub new{ + my $class = shift; + my $ical_str = shift; # Ical data in string form + my $self = {}; + + $self->{'comp_p'} = Net::ICal::Libical::icalparser_parse_string($ical_str); + + die "Can't parse string into component" if !$self->{'comp_p'}; + + bless $self, $class; +} + +sub new_from_ref { + my $class = shift; + my $r = shift; + my $self = {}; + + $self->{'comp_p'} = $r; + + bless $self, $class; +} + +# Destroy must call icalcomponent_free() if icalcomponent_get_parent() +# returns NULL +sub DESTROY { + my $self = shift; + + my $c = $self->{'comp_p'}; + + if($c && !Net::ICal::Libical::icalcomponent_get_parent($c)){ + Net::ICal::Libical::icalcomponent_free($c); + } + +} + +# Return an array of all properties of the given type +sub properties{ + + my $self = shift; + my $prop_name = shift; + + my @props; + + if(!$prop_name){ + $prop_name = 'ANY'; + } + + # To loop over properties + # $comp_p = $self->{'comp_p'} + # $p = icallangbind_get_first_property($comp_p,$prop_name) + # $p = icallangbind_get_next_property($comp_p,$prop_name) + + my $c = $self->{'comp_p'}; + my $p; + + for($p = Net::ICal::Libical::icallangbind_get_first_property($c,$prop_name); + $p; + $p = Net::ICal::Libical::icallangbind_get_next_property($c,$prop_name)){ + + my $d_string = Net::ICal::Libical::icallangbind_property_eval_string($p,"=>"); + my %dict = %{eval($d_string)}; + + $dict{'ref'} = $p; + + # Now, look at $dict{'value_type'} or $dict{'name'} to construct a + # derived class of Property. I'll do this later. + + my $prop; + + if($dict{'value_type'} eq 'DATE' or $dict{'value_type'} eq 'DATE-TIME'){ + $prop = new Net::ICal::Libical::Time(\%dict); + } elsif($dict{'value_type'} eq 'DURATION' ) { + $prop = new Net::ICal::Libical::Duration(\%dict); + } else { + $prop = new Net::ICal::Libical::Property(\%dict); + } + + push(@props,$prop); + + } + + + return @props; + +} + + +sub add_property { + + # if there is a 'ref' key in the prop's dict, then it is owned by + # an icalcomponent, so dont add it again. But, you may check that + # it is owned by this component with: + # icalproperty_get_parent(p->{'ref'}') != $self->{'comp_p'} + + # If there is no 'ref' key, then create one with $p->{'ref'} = + # icalproperty_new_from_string($p->as_ical_string) + +} + +sub remove_property { + +# If $p->{'ref'} is set, then remove the property with +# icalcomponent_remove_property() } +} + +# Return an array of all components of the given type +sub components { + + my $self = shift; + my $comp_name = shift; + + my @comps; + + if(!$comp_name){ + $comp_name = 'ANY'; + } + + my $c = $self->{'comp_p'}; + my $p; + + for($p = Net::ICal::Libical::icallangbind_get_first_component($c,$comp_name); + $p; + $p = Net::ICal::Libical::icallangbind_get_next_component($c,$comp_name)){ + + push(@comps, Net::ICal::Libical::Component->new_from_ref($p)); + + } + + return @comps; + +} + + +sub add_component {} + +sub remove_component {} + +sub as_ical_string { + my $self = shift; + + return Net::ICal::Libical::icalcomponent_as_ical_string($self->{'comp_p'}) +} + + + +1; diff --git a/libical/src/Net-ICal-Libical/lib/Net/ICal/Libical/Duration.pm b/libical/src/Net-ICal-Libical/lib/Net/ICal/Libical/Duration.pm new file mode 100644 index 0000000000..13ec9c437e --- /dev/null +++ b/libical/src/Net-ICal-Libical/lib/Net/ICal/Libical/Duration.pm @@ -0,0 +1,160 @@ +#============================================================================= +# +# This package is free software and is provided "as is" without express +# or implied warranty. It may be used, redistributed and/or modified +# under the same terms as perl itself. (Either the Artistic License or +# the GPL.) +# +#============================================================================= + +=head1 NAME + +Net::ICal::Duration -- represent a length of time + +=head1 SYNOPSIS + + use Net::ICal; + $d = Net::ICal::Duration->new("P3DT6H15M10S"); + $d = Net::ICal::Duration->new(3600); # 1 hour in seconds + +=head1 DESCRIPTION + +I<Duration> Represents a length of time, such a 3 days, 30 seconds or +7 weeks. You would use this for representing an abstract block of +time; "I want to have a 1-hour meeting sometime." If you want a +calendar- and timezone-specific block of time, see Net::ICal::Period. + +=cut + +#============================================================================= + +package Net::ICal::Libical::Duration; +use Net::ICal::Libical::Property; +use strict; +use Carp; +@Net::ICal::Libical::Duration::ISA = qw ( Net::ICal::Libical::Property ); + +=head1 METHODS + +=head2 new + +Create a new I<Duration> from: + +=over 4 + +=item * A string in RFC2445 duration format + +=item * An integer representing a number of seconds + +=cut + +sub new { + my $package = shift; + my $arg = shift; + my $self; + + if (ref($arg) == 'HASH'){ + # Construct from dictionary + $self = Net::ICal::Libical::Property::new($package,$arg); + my $val=Net::ICal::Libical::icalproperty_get_value_as_string($self->{'ref'}); + $self->{'dur'} = Net::ICal::Libical::icaldurationtype_from_string($val); + + return $self; + + } elsif ($arg =~ /^[-+]?\d+$/){ + # Seconds + $self = Net::ICal::Libical::Property::new($package,'DURATION'); + $self->{'dur'} = Net::ICal::Libical::icaldurationtype_new_from_int($arg); + } elsif ($arg) { + # iCalendar string + $self = Net::ICal::Libical::Property::new($package,'DURATION'); + $self->{'dur'} = Net::ICal::Libical::icaldurationtype_new_from_string($arg); + } else { + die; + } + + $self->_update_value(); + return $self; + +} + +sub _update_value { + my $self = shift; + + die "Can't find internal icalduration reference" if !$self->{'dur'}; + + $self->value(Net::ICal::Libical::icaldurationtype_as_ical_string($self->{'dur'})); + +} +=head2 clone() + +Return a new copy of the duration. + +=cut + +sub clone { + die "Not Implemented"; + +} + + +=head2 is_valid() + +Determine if this is a valid duration (given criteria TBD). + +=cut + +sub is_valid { + + die "Not Implemented;" + +} + +=head2 seconds() + +Set or Get the length of the duration as seconds. + +=cut + +sub seconds { + my $self = shift; + my $seconds = shift; + + if($seconds){ + $self->{'dur'} = + Net::ICal::Libical::icaldurationtype_from_int($seconds); + $self->_update_value(); + } + + return Net::ICal::Libical::icaldurationtype_as_int($self->{'dur'}); + +} + +=head2 add($duration) + +Return a new duration that is the sum of this and $duration. Does not +modify this object. + +=cut + +sub add { + my ($self, $duration) = @_; + + return new Duration($self->seconds() + $duration->seconds()); +} + + +=head2 subtract($duration) + +Return a new duration that is the difference between this and +$duration. Does not modify this object. + +=cut + +sub subtract { + my ($self, $duration) = @_; + + return new Duration($self->seconds() - $duration->seconds()); +} + +1; diff --git a/libical/src/Net-ICal-Libical/lib/Net/ICal/Libical/Period.pm b/libical/src/Net-ICal-Libical/lib/Net/ICal/Libical/Period.pm new file mode 100644 index 0000000000..ecf29f3370 --- /dev/null +++ b/libical/src/Net-ICal-Libical/lib/Net/ICal/Libical/Period.pm @@ -0,0 +1,359 @@ +#!/usr/bin/perl -w +# -*- Mode: perl -*- +#====================================================================== +# +# This package is free software and is provided "as is" without express +# or implied warranty. It may be used, redistributed and/or modified +# under the same terms as perl itself. ( Either the Artistic License or the +# GPL. ) +# +# $Id$ +# +# (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org +# +# $Log +#====================================================================== + + +=pod +=head1 NAME + +Net::ICal::Period -- represent a period of time + +=head1 SYNOPSIS + + use Net::ICal; + $p = new Net::ICal::Period("19970101T120000","19970101T123000"); + $p = new Net::ICal::Period("19970101T120000","PT3W2D40S"); + $p = new Net::ICal::Period(time(),3600); + $p = new Net::ICal::Period( + new Net::ICal::Time("19970101T120000", + "America/Los_Angeles"), + new Net::ICal::Duration("2h")); + +=head1 DESCRIPTION + +Use this to make an object representing a block of time on a +real schedule. You can either say, "This event starts at 12 +and ends at 2" or "This event starts at 12 and lasts 2 hours." + +These two ways of specifying events can be treated differently +in schedules. If you say, "The meeting is from 12 to 2, but I +have to leave at 2," you are implying that the start date and +end date are fixed. If you say, "I have a 2-hour drive to +Chicago, and I need to leave at 4," you are saying that it will +take 2 hours no matter when you leave, and that moving the start +time will slide the end time correspondingly. + +=head1 BASIC METHODS + +=cut + + +#========================================================================= + +package Net::ICal::Period; +use strict; +use Net::ICal::Time; +use Net::ICal::Duration; + +use UNIVERSAL qw(isa); + +#------------------------------------------------------------------------- + +=pod +=head2 new($time, $time|$duration) + +Creates a new period object given to parameters: The first must be a +I<Time> object or valid argument to Net::ICal::Time::new. + +The second can be either: + +=pod + +=over 4 + +=item * a I<Time> object + +=item * a valid argument to Net::ICal::Time::new. + +=item * a I<Duration> object + +=item * a valid argument to Net::ICal::Duration::new. + +=back + +Either give a start time and an end time, or a start time and a duration. + +=cut + +sub new{ + my $package = shift; + my $arg1 = shift; + my $arg2 = shift; + my $self = {}; + + # Is the string in RFC2445 Format? + if(!$arg2 and $arg1 =~ /\//){ + my $tmp = $arg1; + ($arg1,$arg2) = split(/\//,$tmp); + } + + + if( ref($arg1) eq 'Net::ICal::Time'){ + $self->{START} = $arg1->clone(); + } else { + $self->{START} = new Net::ICal::Time($arg1); + } + + + if(isa($arg2,'Net::ICal::Time')){ + $self->{END} = $arg2->clone(); + } elsif (isa($arg2,'Net::ICal::Duration')) { + $self->{DURATION} = $arg2->clone(); + } elsif ($arg2 =~ /^P/) { + $self->{DURATION} = new Net::ICal::Duration($arg2); + } else { + # Hope that it is a time string + $self->{END} = new Net::ICal::Time($arg2); + } + + return bless($self,$package); +} + +#-------------------------------------------------------------------------- +=pod +=head2 clone() + +Create a copy of this component + +=cut +# XXX implement this +sub clone { + return "Not implemented"; +} + +#---------------------------------------------------------------------------- +=pod +=head2 is_valid() + +Return true if: + There is an end time and: + Both start and end times have no timezone ( Floating time) or + Both start and end time have (possibly different) timezones or + Both start and end times are in UTC and + The end time is after the start time. + + There is a duration and the duration is positive + +=cut + +# XXX implement this + +sub is_valid { + return "Not implemented"; +} + +#--------------------------------------------------------------------------- +=pod +=head2 start([$time]) + +Accessor for the start time of the event as a I<Time> object. +Can also take a valid time string or an integer (number of +seconds since the epoch) as a parameter. If a second parameter +is given, it'll set this Duration's start time. + +=cut + +sub start{ + my $self = shift; + my $t = shift; + + if($t){ + if(isa($t,'Net::ICal::Time')){ + $self->{START} = $t->clone(); + } else { + $self->{START} = new Net::ICal::Time($t); + } + } + + return $self->{START}; +} + +#----------------------------------------------------------------- +=pod +=head2 end([$time]) + +Accessor for the end time. Takes a I<Time> object, a valid time string, +or an integer and returns a time object. This routine is coupled to +the I<duration> accessor. See I<duration> below for more imformation. + +=cut + +sub end{ + + my $self = shift; + my $t = shift; + my $end; + + if($t){ + if(isa($t,'Net::ICal::Time')){ + $end = $t->clone(); + } else { + $end = new Net::ICal::Time($t); + } + + # If duration exists, use the time to compute a new duration + if ($self->{DURATION}){ + $self->{DURATION} = $end->subtract($self->{START}); + } else { + $self->{END} = $end; + } + } + + # Return end time, possibly computing it from DURATION + if($self->{DURATION}){ + return $self->{START}->add($self->{DURATION}); + } else { + return $self->{END}; + } + +} + +#---------------------------------------------------------------------- +=pod +=head2 duration([$duration]) + +Accessor for the duration of the event. Takes a I<duration> object and +returns a I<Duration> object. + +Since the end time and the duration both specify the end time, the +object will store one and access to the other will be computed. So, + +if you create: + + $p = new Net::ICal::Period("19970101T120000","19970101T123000") + +And then execute: + + $p->duration(45*60); + +The period object will adjust the end time to be 45 minutes after +the start time. It will not replace the end time with a +duration. This is required so that a CUA can take an incoming +component from a server, modify it, and send it back out in the same +basic form. + +=cut + +sub duration{ + my $self = shift; + my $d = shift; + my $dur; + + if($d){ + if(isa($d,'Net::ICal::Duration')){ + $dur = $d->clone(); + } else { + $dur = new Net::ICal::Duration($d); + } + + # If end exists, use the duration to compute a new end + # otherwise, set the duration. + if ($self->{END}){ + $self->{END} = $self->{START}->add($dur); + } else { + $self->{DURATION} = $dur; + } + } + + # Return duration, possibly computing it from END + if($self->{END}){ + return $self->{END}->subtract($self->{START}); + } else { + return $self->{DURATION}; + } + +} + +#------------------------------------------------------------------------ +=pod + +=head2 as_ical() + +Return a string that holds the RFC2445 text form of this duration + +=cut +sub as_ical { + my $self = shift; + my $out; + + $out = $self->{START}->as_ical() ."/"; + + if($self->{DURATION}){ + $out .= $self->{DURATION}->as_ical() + } else { + $out .= $self->{END}->as_ical() + } + + return $out; + +} + + +#------------------------------------------------------------------------ +=pod + +=head2 test() + +A set of developers' tests to make sure the module's working properly. + +=cut + +# Run this with a one-liner: +# perl -e "use lib('/home/srl/dev/rk/reefknot/base/'); use Net::ICal::Period; Net::ICal::Period::test();" +# adjusted for your environment. +sub test { + + print("--------- Test Net::ICal::Period --------------\n"); + + + my $p = new Net::ICal::Period("19970101T180000Z/19970102T070000Z"); + print $p->as_ical()."\n"; + die if $p->as_ical() ne "19970101T180000Z/19970102T070000Z"; + + $p = new Net::ICal::Period("19970101T180000Z/PT5H30M"); + print $p->as_ical()."\n"; + die if $p->as_ical() ne "19970101T180000Z/PT5H30M"; + + $p->duration("PT5H30M10S"); + print $p->as_ical()."\n"; + die if $p->as_ical() ne "19970101T180000Z/PT5H30M10S" ; + + $p->duration(new Net::ICal::Duration("P10DT30M5S")); + print $p->as_ical()."\n"; + die if $p->as_ical() ne "19970101T180000Z/P10DT30M5S" ; + + $p->end("19970101T183000Z"); + print $p->as_ical()."\n"; + die if $p->as_ical() ne "19970101T180000Z/PT30M" ; + + $p = new Net::ICal::Period("19970101T180000Z/19970102T070000Z"); + + $p->end("19970101T183000Z"); + print $p->as_ical()."\n"; + die if $p->as_ical() ne "19970101T180000Z/19970101T183000Z" ; + + $p->duration("P1DT1H10M"); + print $p->as_ical()."\n"; + die if $p->as_ical() ne "19970101T180000Z/19970102T191000Z" ; + + + +} + +1; + + +__END__ + diff --git a/libical/src/Net-ICal-Libical/lib/Net/ICal/Libical/Property.pm b/libical/src/Net-ICal-Libical/lib/Net/ICal/Libical/Property.pm new file mode 100644 index 0000000000..0aef347c43 --- /dev/null +++ b/libical/src/Net-ICal-Libical/lib/Net/ICal/Libical/Property.pm @@ -0,0 +1,173 @@ +#!/usr/bin/perl +# -*- Mode: perl -*- +#====================================================================== +# FILE: Property.pm +# CREATOR: eric 1 Mar 01 +# +# DESCRIPTION: +# +# +# $Id$ +# $Locker$ +# +# (C) COPYRIGHT 2000, Eric Busboom, eric@softwarestudio.org +# +# This package is free software and is provided "as is" without express +# or implied warranty. It may be used, redistributed and/or modified +# under the same terms as perl itself. ( Either the Artistic License or the +# GPL. ) +# +# +#====================================================================== + +use Net::ICal::Libical::Property; + + +package Net::ICal::Libical::Property; +use strict; + + +sub new { + + my $class = shift; + my $arg = shift; + my $self = {}; + my $kind; + + if(ref($arg) == 'HASH'){ + + $self->{'ref'} = $arg->{'ref'}; + + } else { + $kind = Net::ICal::Libical::icalproperty_string_to_kind($arg); + $self->{'ref'} = Net::ICal::Libical::icalproperty_new($kind); + } + + die "Did not get icalproperty ref in Net::ICal::Libical::Property::new " if !$self->{'ref'}; + + bless $self, $class; +} + + +sub DESTROY { + my $self = shift; + + my $r = $self->{'ref'}; + + if($r && !Net::ICal::Libical::icalproperty_get_parent($r)){ + Net::ICal::Libical::icalproperty_free($self->{'ref'}); + } +} + +sub name { + my $self = shift; + my $str; + + die if !$self->{'ref'}; + + $str = Net::ICal::Libical::icalproperty_as_ical_string($self->{'ref'}); + + $str =~ /^([A-Z\-]+)\n/; + + return $1; + +} + +#Get/Set the internal reference to the libical icalproperty """ +sub prop_ref { + my $self = shift; + my $p_r = shift; + + if($p_r){ + $self->{'ref'} = $p_r; + } + + return $self->{'ref'}; + +} + + +#Get/set the RFC2445 representation of the value. Dict value 'value' +sub value { + my $self = shift; + my $v = shift; + my $kind = shift; + + my $vt; + if($v){ + + if ($kind) { + $self->{'VALUE'} = $kind; + $vt = $kind; + } + elsif ($self->{'VALUE'}) { + $vt = $self->{'VALUE'}; + } + else { + $vt = 'NO'; # Use the kind of the existing value + } + + + Net::ICal::Libical::icalproperty_set_value_from_string($self->{'ref'},$v,$vt); + + } + + return Net::ICal::Libical::icalproperty_get_value_as_string($self->{'ref'}); + +} + + +# Get a named parameter +sub get_parameter{ + my $self = shift; + my $key = shift; + + die "get_parameter: missing parameter name" if !$key; + + $key = uc($key); + my $ref = $self->{'ref'}; + + my $str = Net::ICal::Libical::icalproperty_get_parameter_as_string($ref,$key); + + if($str eq 'NULL') { + return undef; + } + + return $str + +} + + +# Set the value of the named parameter +sub set_parameter{ + my $self = shift; + my $key = shift; + my $value = shift; + + die "set_parameter: missing parameter name" if !$key; + die "set_parameter: missing parameter value" if !$value; + + $key = uc($key); + my $ref = $self->{'ref'}; + + my $str = Net::ICal::Libical::icalproperty_set_parameter_from_string($ref,$key,$value); + + + return $self->get_parameter($self); + +} + + +sub as_ical_string { + my $self = shift; + my $str = Net::ICal::Libical::icalproperty_as_ical_string($self->{'ref'}); + + $str =~ s/\r//g; + $str =~ s/\n\s?//g; + + return $str; +} + + + +1; diff --git a/libical/src/Net-ICal-Libical/lib/Net/ICal/Libical/Time.pm b/libical/src/Net-ICal-Libical/lib/Net/ICal/Libical/Time.pm new file mode 100644 index 0000000000..76969ac60d --- /dev/null +++ b/libical/src/Net-ICal-Libical/lib/Net/ICal/Libical/Time.pm @@ -0,0 +1,468 @@ +#!/usr/bin/perl -w +# -*- Mode: perl -*- +#====================================================================== +# +# This package is free software and is provided "as is" without express +# or implied warranty. It may be used, redistributed and/or modified +# under the same terms as perl itself. ( Either the Artistic License or the +# GPL. ) +# +# +#====================================================================== + + + +=pod + +=head1 NAME + +Net::ICal::Time -- represent a time and date + +=head1 SYNOPSIS + + $t = new Net::ICal::Time("19970101T120000Z"); + $t = new Net::ICal::Time("19970101T120000","America/Los_Angeles"); + $t = new Net::ICal::Time(time(),"America/Los_Angeles"); + + $t2 = $t->add(Net::Ical::Duration("1D")); + + $duration = $t->subtract(Net::ICal::Time("19970101T110000Z")) + + # Add 5 minutes + $t->min($t->min()+5); + + # Add 5 minutes + $t->sec($t->sec()+300); + + # Compare + if($t->compare($t2) > 0) {} + +=head1 DESCRIPTION + +I<Time> represents a time, but can also hold the time zone for the +time and indicate if the time should be treated as a date. The time +can be constructed from a variey of formats. + +=head1 METHODS + +=cut + +package Net::ICal::Libical::Time; +use Net::ICal::Libical::Duration; +use Net::ICal::Libical::Property; +use Time::Local; +use POSIX; +use Carp qw(confess cluck); +use strict; +use UNIVERSAL qw(isa); + +@Net::ICal::Libical::Time::ISA = qw(Net::ICal::Libical::Property); + +=pod + +=head2 new + +Creates a new time object given one of: + +=over 4 + +=item * ISO format string + +=item * Some other format string, maybe whatever a Date module understands + +=item * Integer representing seconds past the POSIX epoch + +=back + +The optional second argument is the timezone in Olsen place name format, +which looks like "America/Los_Angeles"; it can be used to get the standard +offset from UTC, the dates the location goes to and from Daylight Savings +Time, and the magnitude of the Daylight Savings time offset. + +=cut + +sub new{ + my $package = shift; + my $arg = shift; + + my $self; + + if (ref($arg) == 'HASH'){ + # Construct from dictionary + $self = Net::ICal::Libical::Property::new($package,$arg); + my $val=Net::ICal::Libical::icalproperty_get_value_as_string($self->{'ref'}); + $self->{'tt'} = Net::ICal::Libical::icaltime_from_string($val); + + return $self; + + } else { + + if ($#_ = 1){ + # iCalendar string + $self = Net::ICal::Libical::Property::new($package,'DTSTART'); + $self->{'tt'} = Net::ICal::Libical::icaltime_new_from_string($arg); + } else { + # Broken out time + die; + } + + $self->_update_value(); + return $self; + } + +} + + +sub _update_value { + my $self = shift; + + if(!$self->{'tt'}){ + die "Can't find reference to icaltimetype"; + } + + $self->value(Net::ICal::Libical::icaltime_as_ical_string($self->{'tt'})); + +} + +=pod + +=head2 clone() + +Create a new copy of this time. + +=cut + +# clone a Time object. +sub clone { + my $self = shift; + + bless( {%$self},ref($self)); + + $self->{'ref'} = Net::ICal::Libical::icalproperty_new_clone($self->{'ref'}); + +} + + + +=pod + +=head2 is_valid() + +TBD + +=cut + +sub is_valid{ + my $self = shift; + + return Net::ICal::Libical::icaltime_is_null_time($self->{'tt'}); + +} + + + +=pod + +=head2 is_date([true|false]) + +Accessor to the is_date flag. If true, the flag indicates that the +hour, minute and second fields are set to zero and not used in +comparisons. + +=cut + + +sub is_date { + my $self = shift; + if(@_){ + + # Convert to true or false + Net::ICal::Libical::icaltimetype_is_date_set($self->{'tt'}, + !(!($_[0]))); + } + + return Net::ICal::Libical::icaltimetype_is_date_get($self->{'tt'}); + +} + + +=pod + +=head2 is_utc([true|false]) + +Is_utc indicates if the time should be interpreted in the UTC timezone. + +=cut + +sub is_utc { + my $self = shift; + if(@_){ + + # Convert to true or false + Net::ICal::Libical::icaltimetype_is_utc_set($self->{'tt'}, + !(!($_[0]))); + } + + return Net::ICal::Libical::icaltimetype_is_utc_get($self->{'tt'}); + +} +=pod + +=head2 timezone + +Accessor to the timezone. Takes & Returns an Olsen place name +("America/Los_Angeles", etc. ) , an Abbreviation, 'UTC', or 'float' if +no zone was specified. + +=cut + +sub timezone { + my $self = shift; + my $tz = shift; + + if($tz){ + $self->set_parameter('TZID',$tz); + } + + return $self->get_parameter('TZID'); + +} + + + +=pod + +=head2 normalize() + +Adjust any out-of range values so that they are in-range. For +instance, 12:65:00 would become 13:05:00. + +=cut + +sub normalize{ + my $self = shift; + + $self->{'tt'} = Net::ICal::Libical::icaltime_normalize($self->{'tt'}); + $self->value(Net::ICal::Libical::icaltime_as_ical_string($self->{'tt'})); + +} + + +=pod + +=head2 hour([$hour]) + +Accessor to the hour. Out of range values are normalized. + +=cut + +=pod +=head2 minute([$min]) + +Accessor to the minute. Out of range values are normalized. + +=cut + +=pod +=head2 second([$dsecond]) + +Accessor to the second. Out of range values are normalized. For +instance, setting the second to -1 will decrement the minute and set +the second to 59, while setting the second to 3600 will increment the +hour. + +=cut + +=pod + +=head2 year([$year]) + +Accessor to the year. Out of range values are normalized. + +=cut + +=pod + +=head2 month([$month]) + +Accessor to the month. Out of range values are normalized. + +=cut + + +=pod + +=head2 day([$day]) + +Accessor to the month day. Out of range values are normalized. + +=cut + +sub _do_accessor { +no strict; + my $self = shift; + my $type = shift; + my $value = shift; + + $type = lc($type); + + if($value){ + my $set = "Net::ICal::Libical::icaltimetype_${type}_set"; + + &$set($self->{'tt'},$value); + $self->normalize(); + $self->_update_value(); + + } + + my $get = "Net::ICal::Libical::icaltimetype_${type}_get"; + + return &$get($self->{'tt'}); +} + + +sub second {my $s = shift; my $v = shift; return $s->_do_accessor('SECOND',$v);} +sub minute {my $s = shift; my $v = shift;return $s->_do_accessor('MINUTE',$v);} +sub hour {my $s = shift; my $v = shift; return $s->_do_accessor('HOUR',$v);} +sub day {my $s = shift; my $v = shift; return $s->_do_accessor('DAY',$v);} +sub month {my $s = shift; my $v = shift; return $s->_do_accessor('MONTH',$v);} +sub year {my $s = shift; my $v = shift; return $s->_do_accessor('YEAR',$v);} + + +=pod + +=head2 add($duration) + +Takes a I<Duration> and returns a I<Time> that is the sum of the time +and the duration. Does not modify this time. + +=cut +sub add { + my $self = shift; + my $dur = shift; + + cluck "Net::ICal::Time::add argument 1 requires a Net::ICal::Duration" if !isa($dur,'Net::ICal::Duration'); + + my $c = $self->clone(); + + $c->second($dur->as_int()); + + $c->normalize(); + + return $c; + +} + +=pod + +=head2 subtract($time) + +Subtract out a time of type I<Time> and return a I<Duration>. Does not +modify this time. + +=cut +sub subtract { + my $self = shift; + my $t = shift; + + cluck "Net::ICal::Time::subtract argrument 1 requires a Net::ICal::Time" if !isa($t,'Net::ICal::Time'); + + my $tint1 = $self->as_int(); + my $tint2 = $t->as_int(); + + return new Net::ICal::Duration($tint1 - $tint2); + +} + +=pod + +=head2 move_to_zone($zone); + +Change the time to what it would be in the named timezone. +The zone can be an Olsen placename or "UTC". + +=cut + +# XXX this needs implementing. +sub move_to_zone { + confess "Not Implemented\n"; +} + + + +=pod + +=head2 as_int() + +Convert the time to an integer that represents seconds past the POSIX +epoch + +=cut +sub as_int { + my $self = shift; + + return Net::ICal::Libical::icaltime_as_timet($self->{'tt'}); +} + +=pod + +=head2 as_localtime() + +Convert to list format, as per localtime() + +=cut +sub as_localtime { + my $self = shift; + + return localtime($self->as_int()); + +} + +=pod + +=head2 as_gmtime() + +Convert to list format, as per gmtime() + +=cut +sub as_gmtime { + my $self = shift; + + return gmtime($self->as_int()); + +} + +=pod + +=head2 compare($time) + +Compare a time to this one and return -1 if the argument is earlier +than this one, 1 if it is later, and 0 if it is the same. The routine +does the comparision after converting the time to UTC. It converts +floating times using the system notion of the timezone. + +=cut +sub compare { + my $self = shift; + my $a = $self->as_int(); + + my $arg = shift; + + if(!isa($arg,'Net::ICal::Time')){ + $arg = new Net::ICal::Time($arg); + } + + my $b = $arg->as_int(); + + if($a < $b){ + return -1; + } elsif ($a > $b) { + return 1; + } else { + return 0; + } + +} + +1; + diff --git a/libical/src/Net-ICal-Libical/netical.i b/libical/src/Net-ICal-Libical/netical.i new file mode 100644 index 0000000000..9d380dcec1 --- /dev/null +++ b/libical/src/Net-ICal-Libical/netical.i @@ -0,0 +1,317 @@ +/* -*- Mode: C -*-*/ +/*====================================================================== + FILE: ical.i + + (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 + + Contributions from: + Graham Davison (g.m.davison@computer.org) + + ======================================================================*/ + +%module Net__ICal__Libical + +%{ +#include "ical.h" + +#include <sys/types.h> /* for size_t */ +#include <time.h> + +%} + + + +typedef void icalcomponent; +typedef void icalproperty; + +icalcomponent* icalparser_parse_string(char* str); + + +icalcomponent* icalcomponent_new(icalcomponent_kind kind); +icalcomponent* icalcomponent_new_clone(icalcomponent* component); +icalcomponent* icalcomponent_new_from_string(char* str); + +char* icalcomponent_as_ical_string(icalcomponent* component); + +void icalcomponent_free(icalcomponent* component); +int icalcomponent_count_errors(icalcomponent* component); +void icalcomponent_strip_errors(icalcomponent* component); +void icalcomponent_convert_errors(icalcomponent* component); + +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); + +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); + +void icalcomponent_add_property(icalcomponent* component, + icalproperty* property); + +void icalcomponent_remove_property(icalcomponent* component, + icalproperty* property); + + +icalcomponent* icalcomponent_get_parent(icalcomponent* component); + +icalcomponent_kind icalcomponent_isa(icalcomponent* component); + +int icalrestriction_check(icalcomponent* comp); + + +/* actually returns icalproperty_kind */ +int icalproperty_string_to_kind(const char* string); + +/* actually takes icalproperty_kind */ +icalproperty* icalproperty_new(int kind); + +icalproperty* icalproperty_new_from_string(char* str); + +char* icalproperty_as_ical_string(icalproperty *prop); + +void icalproperty_set_parameter_from_string(icalproperty* prop, + const char* name, const char* value); +void icalproperty_set_value_from_string(icalproperty* prop,const char* value, const char * kind); + +const char* icalproperty_get_value_as_string(icalproperty* prop); +const char* icalproperty_get_parameter_as_string(icalproperty* prop, + const char* name); + + +icalcomponent* icalproperty_get_parent(icalproperty* property); + +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_UNKNOWN_ERROR /* Used for problems in input to icalerror_strerror()*/ + +} icalerrorenum; + +/* Make an individual error fatal or non-fatal. */ +typedef enum icalererorstate { + ICAL_ERROR_FATAL, /* Not fata */ + ICAL_ERROR_NONFATAL, /* Fatal */ + ICAL_ERROR_DEFAULT, /* Use the value of icalerror_errors_are_fatal*/ + ICAL_ERROR_UNKNOWN /* Asked state for an unknown error type */ +} icalerrorstate ; + +void icalerror_set_error_state( icalerrorenum error, icalerrorstate); +icalerrorstate icalerror_get_error_state( icalerrorenum error); + + +const char* icalenum_property_kind_to_string(icalproperty_kind kind); +icalproperty_kind icalenum_string_to_property_kind(const char* string); + +const char* icalenum_value_kind_to_string(icalvalue_kind kind); +/*icalvalue_kind icalenum_value_kind_by_prop(icalproperty_kind kind);*/ + +const char* icalenum_parameter_kind_to_string(icalparameter_kind kind); +icalparameter_kind icalenum_string_to_parameter_kind(const char* string); + +const char* icalenum_component_kind_to_string(icalcomponent_kind kind); +icalcomponent_kind icalenum_string_to_component_kind(const char* string); + +icalvalue_kind icalenum_property_kind_to_value_kind(icalproperty_kind kind); + + +int* icallangbind_new_array(int size); +void icallangbind_free_array(int* array); +int icallangbind_access_array(int* array, int index); +int icalrecur_expand_recurrence(char* rule, int start, + int count, int* array); + + +/* Iterate through properties and components using strings for the kind */ +icalproperty* icallangbind_get_first_property(icalcomponent *c, + const char* prop); + +icalproperty* icallangbind_get_next_property(icalcomponent *c, + const char* prop); + +icalcomponent* icallangbind_get_first_component(icalcomponent *c, + const char* comp); + +icalcomponent* icallangbind_get_next_component(icalcomponent *c, + const char* comp); + + +/* Return a string that can be evaluated in perl or python to + generated a hash that holds the property's name, value and + parameters. Sep is the hash seperation string, "=>" for perl and + ":" for python */ +const char* icallangbind_property_eval_string(icalproperty* prop, char* sep); + +/*********************************************************************** + Time routines +***********************************************************************/ + + +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. */ + + const char* zone; /*Ptr to Olsen placename. Libical does not own mem*/ +}; + + +/* Convert seconds past UNIX epoch to a timetype*/ +struct icaltimetype icaltime_from_timet(int v, int is_date); + +/* Return the time as seconds past the UNIX epoch */ +/* Normally, this returns a time_t, but SWIG tries to turn that type + into a pointer */ +int icaltime_as_timet(struct icaltimetype); + +/* Return a string represention of the time, in RFC2445 format. The + string is owned by libical */ +char* icaltime_as_ical_string(struct icaltimetype tt); + +/* create a time from an ISO format string */ +struct icaltimetype icaltime_from_string(const char* str); + +/* Routines for handling timezones */ +/* Return the offset of the named zone as seconds. tt is a time + indicating the date for which you want the offset */ +int icaltime_utc_offset(struct icaltimetype tt, const char* tzid); + +/* convert tt, of timezone tzid, into a utc time. Does nothing if the + time is already UTC. */ +struct icaltimetype icaltime_as_utc(struct icaltimetype tt, + const char* tzid); + +/* convert tt, a time in UTC, into a time in timezone tzid */ +struct icaltimetype icaltime_as_zone(struct icaltimetype tt, + const char* tzid); + +/* Return a null time, which indicates no time has been set. This time represent the beginning of the epoch */ +struct icaltimetype icaltime_null_time(void); + +/* Return true of the time is null. */ +int icaltime_is_null_time(struct icaltimetype t); + +/* Returns false if the time is clearly invalid, but is not null. This + is usually the result of creating a new time type buy not clearing + it, or setting one of the flags to an illegal value. */ +int icaltime_is_valid_time(struct icaltimetype t); + +/* Reset all of the time components to be in their normal ranges. For + instance, given a time with minutes=70, the minutes will be reduces + to 10, and the hour incremented. This allows the caller to do + arithmetic on times without worrying about overflow or + underflow. */ +struct icaltimetype icaltime_normalize(struct icaltimetype t); + +/* Return the day of the year of the given time */ +short icaltime_day_of_year(struct icaltimetype t); + +/* Create a new time, given a day of year and a year. */ +struct icaltimetype icaltime_from_day_of_year(short doy, short year); + +/* Return the day of the week of the given time. Sunday is 0 */ +short icaltime_day_of_week(struct icaltimetype t); + +/* Return the day of the year for the Sunday of the week that the + given time is within. */ +short icaltime_start_doy_of_week(struct icaltimetype t); + +/* Return a string with the time represented in the same format as ctime(). THe string is owned by libical */ +char* icaltime_as_ctime(struct icaltimetype); + +/* Return the week number for the week the given time is within */ +short icaltime_week_number(struct icaltimetype t); + +/* Return -1, 0, or 1 to indicate that a<b, a==b or a>b */ +int icaltime_compare(struct icaltimetype a,struct icaltimetype b); + +/* like icaltime_compare, but only use the date parts. */ +int icaltime_compare_date_only(struct icaltimetype a, struct icaltimetype b); + +/* Return the number of days in the given month */ +short icaltime_days_in_month(short month,short year); + + +/*********************************************************************** + Duration Routines +***********************************************************************/ + + +struct icaldurationtype +{ + int is_neg; + unsigned int days; + unsigned int weeks; + unsigned int hours; + unsigned int minutes; + unsigned int seconds; +}; + +struct icaldurationtype icaldurationtype_from_int(int t); +struct icaldurationtype icaldurationtype_from_string(const char*); +int icaldurationtype_as_int(struct icaldurationtype duration); +char* icaldurationtype_as_ical_string(struct icaldurationtype d); +struct icaldurationtype icaldurationtype_null_duration(); +int icaldurationtype_is_null_duration(struct icaldurationtype d); + +struct icaltimetype icaltime_add(struct icaltimetype t, + struct icaldurationtype d); + +struct icaldurationtype icaltime_subtract(struct icaltimetype t1, + struct icaltimetype t2); + + +/*********************************************************************** + Period Routines +***********************************************************************/ + + +struct icalperiodtype +{ + struct icaltimetype start; + struct icaltimetype end; + struct icaldurationtype duration; +}; + +struct icalperiodtype icalperiodtype_from_string (const char* str); + +const char* icalperiodtype_as_ical_string(struct icalperiodtype p); +struct icalperiodtype icalperiodtype_null_period(); +int icalperiodtype_is_null_period(struct icalperiodtype p); +int icalperiodtype_is_valid_period(struct icalperiodtype p); + diff --git a/libical/src/Net-ICal-Libical/netical_wrap.c b/libical/src/Net-ICal-Libical/netical_wrap.c new file mode 100644 index 0000000000..233c2dc7f7 --- /dev/null +++ b/libical/src/Net-ICal-Libical/netical_wrap.c @@ -0,0 +1,3048 @@ +/* + * FILE : netical_wrap.c + * + * This file was automatically generated by : + * Simplified Wrapper and Interface Generator (SWIG) + * Version 1.1 (Patch 5) + * + * Portions Copyright (c) 1995-1998 + * The University of Utah and The Regents of the University of California. + * Permission is granted to distribute this file in any manner provided + * this notice remains intact. + * + * Do not make changes to this file--changes will be lost! + * + */ + + +#define SWIGCODE +/* Implementation : PERL 5 */ + +#define SWIGPERL +#define SWIGPERL5 +#ifdef __cplusplus +#include <math.h> +#include <stdlib.h> +extern "C" { +#endif +#include "EXTERN.h" +#include "perl.h" +#include "XSUB.h" +#undef free +#undef malloc +#include <string.h> +#ifdef __cplusplus +} +#endif +/* Definitions for compiling Perl extensions on a variety of machines */ + +#if defined(WIN32) || defined(__WIN32__) +# if defined(_MSC_VER) +# define SWIGEXPORT(a,b) __declspec(dllexport) a b +# else +# if defined(__BORLANDC__) +# define SWIGEXPORT(a,b) a _export b +# else +# define SWIGEXPORT(a,b) a b +# endif +# endif +#else +# define SWIGEXPORT(a,b) a b +#endif + +#ifdef PERL_OBJECT +#define MAGIC_PPERL CPerl *pPerl = (CPerl *) this; +#define MAGIC_CAST (int (CPerl::*)(SV *, MAGIC *)) +#define SWIGCLASS_STATIC +#else +#define MAGIC_PPERL +#define MAGIC_CAST +#define SWIGCLASS_STATIC static +#endif + + +/***************************************************************************** + * $Header$ + * + * perl5ptr.swg + * + * This file contains supporting code for the SWIG run-time type checking + * mechanism. The following functions are available : + * + * SWIG_RegisterMapping(char *origtype, char *newtype, void *(*cast)(void *)); + * + * Registers a new type-mapping with the type-checker. origtype is the + * original datatype and newtype is an equivalent type. cast is optional + * pointer to a function to cast pointer values between types (this + * is only used to cast pointers from derived classes to base classes in C++) + * + * SWIG_MakePtr(char *buffer, void *ptr, char *typestring); + * + * Makes a pointer string from a pointer and typestring. The result is returned + * in buffer. + * + * char * SWIG_GetPtr(SV *obj, void **ptr, char *type) + * + * Gets a pointer value from a Perl5 scalar value. If there is a + * type-mismatch, returns a character string to the received type. + * On success, returns NULL. + * + * + * You can remap these functions by making a file called "swigptr.swg" in + * your the same directory as the interface file you are wrapping. + * + * These functions are normally declared static, but this file can be + * can be used in a multi-module environment by redefining the symbol + * SWIGSTATIC. + * + * $Log$ + * Revision 1.1 2003/09/11 22:04:08 hansp + * Import new libical from mainline HEAD and make appropriate changes to + * Evolution. + * + * Revision 1.6 2001/04/02 18:17:40 ebusboom + * Get perl extension compiling again. + * + * Revision 1.1 1996/12/26 22:17:29 beazley + * Initial revision + * + *****************************************************************************/ + +#include <stdlib.h> + +#ifdef SWIG_GLOBAL +#ifdef __cplusplus +#define SWIGSTATIC extern "C" +#else +#define SWIGSTATIC +#endif +#endif + +#ifndef SWIGSTATIC +#define SWIGSTATIC static +#endif + +/* These are internal variables. Should be static */ + +typedef struct SwigPtrType { + char *name; + int len; + void *(*cast)(void *); + struct SwigPtrType *next; +} SwigPtrType; + +/* Pointer cache structure */ + +typedef struct { + int stat; /* Status (valid) bit */ + SwigPtrType *tp; /* Pointer to type structure */ + char name[256]; /* Given datatype name */ + char mapped[256]; /* Equivalent name */ +} SwigCacheType; + +static int SwigPtrMax = 64; /* Max entries that can be currently held */ +static int SwigPtrN = 0; /* Current number of entries */ +static int SwigPtrSort = 0; /* Status flag indicating sort */ +static SwigPtrType *SwigPtrTable = 0; /* Table containing pointer equivalences */ +static int SwigStart[256]; /* Table containing starting positions */ + +/* Cached values */ + +#define SWIG_CACHESIZE 8 +#define SWIG_CACHEMASK 0x7 +static SwigCacheType SwigCache[SWIG_CACHESIZE]; +static int SwigCacheIndex = 0; +static int SwigLastCache = 0; + +/* Sort comparison function */ +static int swigsort(const void *data1, const void *data2) { + SwigPtrType *d1 = (SwigPtrType *) data1; + SwigPtrType *d2 = (SwigPtrType *) data2; + return strcmp(d1->name,d2->name); +} + +/* Binary Search function */ +static int swigcmp(const void *key, const void *data) { + char *k = (char *) key; + SwigPtrType *d = (SwigPtrType *) data; + return strncmp(k,d->name,d->len); +} + +/* Register a new datatype with the type-checker */ + +#ifndef PERL_OBJECT +SWIGSTATIC +void SWIG_RegisterMapping(char *origtype, char *newtype, void *(*cast)(void *)) { +#else +SWIGSTATIC +#define SWIG_RegisterMapping(a,b,c) _SWIG_RegisterMapping(pPerl, a,b,c) +void _SWIG_RegisterMapping(CPerl *pPerl, char *origtype, char *newtype, void *(*cast)(void *)) { +#endif + + int i; + SwigPtrType *t = 0, *t1; + + if (!SwigPtrTable) { + SwigPtrTable = (SwigPtrType *) malloc(SwigPtrMax*sizeof(SwigPtrType)); + SwigPtrN = 0; + } + if (SwigPtrN >= SwigPtrMax) { + SwigPtrMax = 2*SwigPtrMax; + SwigPtrTable = (SwigPtrType *) realloc(SwigPtrTable,SwigPtrMax*sizeof(SwigPtrType)); + } + for (i = 0; i < SwigPtrN; i++) + if (strcmp(SwigPtrTable[i].name,origtype) == 0) { + t = &SwigPtrTable[i]; + break; + } + if (!t) { + t = &SwigPtrTable[SwigPtrN]; + t->name = origtype; + t->len = strlen(t->name); + t->cast = 0; + t->next = 0; + SwigPtrN++; + } + while (t->next) { + if (strcmp(t->name,newtype) == 0) { + if (cast) t->cast = cast; + return; + } + t = t->next; + } + t1 = (SwigPtrType *) malloc(sizeof(SwigPtrType)); + t1->name = newtype; + t1->len = strlen(t1->name); + t1->cast = cast; + t1->next = 0; + t->next = t1; + SwigPtrSort = 0; +} + +/* Make a pointer value string */ + +SWIGSTATIC +void SWIG_MakePtr(char *_c, const void *_ptr, char *type) { + static char _hex[16] = + {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + 'a', 'b', 'c', 'd', 'e', 'f'}; + unsigned long _p, _s; + char _result[20], *_r; /* Note : a 64-bit hex number = 16 digits */ + _r = _result; + _p = (unsigned long) _ptr; + if (_p > 0) { + while (_p > 0) { + _s = _p & 0xf; + *(_r++) = _hex[_s]; + _p = _p >> 4; + } + *_r = '_'; + while (_r >= _result) + *(_c++) = *(_r--); + } else { + strcpy (_c, "NULL"); + } + if (_ptr) + strcpy (_c, type); +} + +/* Define for backwards compatibility */ + +#define _swig_make_hex SWIG_MakePtr + +/* Function for getting a pointer value */ + +#ifndef PERL_OBJECT +SWIGSTATIC +char *SWIG_GetPtr(SV *sv, void **ptr, char *_t) +#else +SWIGSTATIC +#define SWIG_GetPtr(a,b,c) _SWIG_GetPtr(pPerl,a,b,c) +char *_SWIG_GetPtr(CPerl *pPerl, SV *sv, void **ptr, char *_t) +#endif +{ + char temp_type[256]; + char *name,*_c; + int len,i,start,end; + IV tmp; + SwigPtrType *sp,*tp; + SwigCacheType *cache; + + /* If magical, apply more magic */ + + if (SvGMAGICAL(sv)) + mg_get(sv); + + /* Check to see if this is an object */ + if (sv_isobject(sv)) { + SV *tsv = (SV*) SvRV(sv); + if ((SvTYPE(tsv) == SVt_PVHV)) { + MAGIC *mg; + if (SvMAGICAL(tsv)) { + mg = mg_find(tsv,'P'); + if (mg) { + SV *rsv = mg->mg_obj; + if (sv_isobject(rsv)) { + tmp = SvIV((SV*)SvRV(rsv)); + } + } + } else { + return "Not a valid pointer value"; + } + } else { + tmp = SvIV((SV*)SvRV(sv)); + } + if (!_t) { + *(ptr) = (void *) tmp; + return (char *) 0; + } + } else if (sv == &sv_undef) { /* Check for undef */ + *(ptr) = (void *) 0; + return (char *) 0; + } else if (SvTYPE(sv) == SVt_RV) { /* Check for NULL pointer */ + *(ptr) = (void *) 0; + if (!SvROK(sv)) + return (char *) 0; + else + return "Not a valid pointer value"; + } else { /* Don't know what it is */ + *(ptr) = (void *) 0; + return "Not a valid pointer value"; + } + if (_t) { + /* Now see if the types match */ + + if (!sv_isa(sv,_t)) { + _c = HvNAME(SvSTASH(SvRV(sv))); + if (!SwigPtrSort) { + qsort((void *) SwigPtrTable, SwigPtrN, sizeof(SwigPtrType), swigsort); + for (i = 0; i < 256; i++) { + SwigStart[i] = SwigPtrN; + } + for (i = SwigPtrN-1; i >= 0; i--) { + SwigStart[SwigPtrTable[i].name[0]] = i; + } + for (i = 255; i >= 1; i--) { + if (SwigStart[i-1] > SwigStart[i]) + SwigStart[i-1] = SwigStart[i]; + } + SwigPtrSort = 1; + for (i = 0; i < SWIG_CACHESIZE; i++) + SwigCache[i].stat = 0; + } + /* First check cache for matches. Uses last cache value as starting point */ + cache = &SwigCache[SwigLastCache]; + for (i = 0; i < SWIG_CACHESIZE; i++) { + if (cache->stat) { + if (strcmp(_t,cache->name) == 0) { + if (strcmp(_c,cache->mapped) == 0) { + cache->stat++; + *ptr = (void *) tmp; + if (cache->tp->cast) *ptr = (*(cache->tp->cast))(*ptr); + return (char *) 0; + } + } + } + SwigLastCache = (SwigLastCache+1) & SWIG_CACHEMASK; + if (!SwigLastCache) cache = SwigCache; + else cache++; + } + + start = SwigStart[_t[0]]; + end = SwigStart[_t[0]+1]; + sp = &SwigPtrTable[start]; + while (start < end) { + if (swigcmp(_t,sp) == 0) break; + sp++; + start++; + } + if (start >= end) sp = 0; + if (sp) { + while (swigcmp(_t,sp) == 0) { + name = sp->name; + len = sp->len; + tp = sp->next; + while(tp) { + if (tp->len >= 255) { + return _c; + } + strcpy(temp_type,tp->name); + strncat(temp_type,_t+len,255-tp->len); + if (sv_isa(sv,temp_type)) { + /* Get pointer value */ + *ptr = (void *) tmp; + if (tp->cast) *ptr = (*(tp->cast))(*ptr); + + strcpy(SwigCache[SwigCacheIndex].mapped,_c); + strcpy(SwigCache[SwigCacheIndex].name,_t); + SwigCache[SwigCacheIndex].stat = 1; + SwigCache[SwigCacheIndex].tp = tp; + SwigCacheIndex = SwigCacheIndex & SWIG_CACHEMASK; + return (char *) 0; + } + tp = tp->next; + } + /* Hmmm. Didn't find it this time */ + sp++; + } + } + /* Didn't find any sort of match for this data. + Get the pointer value and return the received type */ + *ptr = (void *) tmp; + return _c; + } else { + /* Found a match on the first try. Return pointer value */ + *ptr = (void *) tmp; + return (char *) 0; + } + } + *ptr = (void *) tmp; + return (char *) 0; +} + +/* Compatibility mode */ + +#define _swig_get_hex SWIG_GetPtr +/* Magic variable code */ +#ifndef PERL_OBJECT +#define swig_create_magic(s,a,b,c) _swig_create_magic(s,a,b,c) +static void _swig_create_magic(SV *sv, char *name, int (*set)(SV *, MAGIC *), int (*get)(SV *,MAGIC *)) { +#else +#define swig_create_magic(s,a,b,c) _swig_create_magic(pPerl,s,a,b,c) +static void _swig_create_magic(CPerl *pPerl, SV *sv, char *name, int (CPerl::*set)(SV *, MAGIC *), int (CPerl::*get)(SV *, MAGIC *)) { +#endif + MAGIC *mg; + sv_magic(sv,sv,'U',name,strlen(name)); + mg = mg_find(sv,'U'); + mg->mg_virtual = (MGVTBL *) malloc(sizeof(MGVTBL)); + mg->mg_virtual->svt_get = get; + mg->mg_virtual->svt_set = set; + mg->mg_virtual->svt_len = 0; + mg->mg_virtual->svt_clear = 0; + mg->mg_virtual->svt_free = 0; +} + +#define SWIG_init boot_Net__ICal__Libical + +#define SWIG_name "Net::ICal::Libical::boot_Net__ICal__Libical" +#define SWIG_varinit "Net::ICal::Libical::var_Net__ICal__Libical_init();" +#ifdef __cplusplus +extern "C" +#endif +#ifndef PERL_OBJECT +SWIGEXPORT(void,boot_Net__ICal__Libical)(CV* cv); +#else +SWIGEXPORT(void,boot_Net__ICal__Libical)(CPerl *, CV *cv); +#endif + +#include "ical.h" + +#include <sys/types.h> /* for size_t */ +#include <time.h> + +#ifndef PERL_OBJECT +#define swig_setiv(a,b) _swig_setiv(a,b) +static void _swig_setiv(char *name, long value) { +#else +#define swig_setiv(a,b) _swig_setiv(pPerl,a,b) +static void _swig_setiv(CPerl *pPerl, char *name, long value) { +#endif + SV *sv; + sv = perl_get_sv(name,TRUE | 0x2); + sv_setiv(sv, (IV) value); + SvREADONLY_on(sv); +} + +#ifndef PERL_OBJECT +#define swig_setpv(a,b) _swig_setpv(a,b) +static void _swig_setpv(char *name, char *value) { +#else +#define swig_setpv(a,b) _swig_setpv(pPerl,a,b) +static void _swig_setpv(CPerl *pPerl, char *name, char *value) { +#endif + SV *sv; + sv = perl_get_sv(name,TRUE | 0x2); + sv_setpv(sv, value); + SvREADONLY_on(sv); +} + +#ifdef PERL_OBJECT +#define MAGIC_CLASS _wrap_Net__ICal__Libical_var:: +class _wrap_Net__ICal__Libical_var : public CPerl { +public: +#else +#define MAGIC_CLASS +#endif +SWIGCLASS_STATIC int swig_magic_readonly(SV *sv, MAGIC *mg) { + MAGIC_PPERL + sv = sv; mg = mg; + croak("Value is read-only."); + return 0; +} + + +#ifdef PERL_OBJECT +}; +#endif + +XS(_wrap_icalparser_parse_string) { + + icalcomponent * _result; + char * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icalparser_parse_string(str);"); + _arg0 = (char *) SvPV(ST(0),na); + _result = (icalcomponent *)icalparser_parse_string(_arg0); + ST(argvi) = sv_newmortal(); + sv_setref_pv(ST(argvi++),"icalcomponentPtr", (void *) _result); + XSRETURN(argvi); +} + +XS(_wrap_icalcomponent_new) { + + icalcomponent * _result; + icalcomponent_kind * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icalcomponent_new(kind);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"icalcomponent_kindPtr")) { + croak("Type error in argument 1 of icalcomponent_new. Expected icalcomponent_kindPtr."); + XSRETURN(1); + } + _result = (icalcomponent *)icalcomponent_new(*_arg0); + ST(argvi) = sv_newmortal(); + sv_setref_pv(ST(argvi++),"icalcomponentPtr", (void *) _result); + XSRETURN(argvi); +} + +XS(_wrap_icalcomponent_new_clone) { + + icalcomponent * _result; + icalcomponent * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icalcomponent_new_clone(component);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,(char *) 0 )) { + croak("Type error in argument 1 of icalcomponent_new_clone. Expected icalcomponentPtr."); + XSRETURN(1); + } + _result = (icalcomponent *)icalcomponent_new_clone(_arg0); + ST(argvi) = sv_newmortal(); + sv_setref_pv(ST(argvi++),"icalcomponentPtr", (void *) _result); + XSRETURN(argvi); +} + +XS(_wrap_icalcomponent_new_from_string) { + + icalcomponent * _result; + char * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icalcomponent_new_from_string(str);"); + _arg0 = (char *) SvPV(ST(0),na); + _result = (icalcomponent *)icalcomponent_new_from_string(_arg0); + ST(argvi) = sv_newmortal(); + sv_setref_pv(ST(argvi++),"icalcomponentPtr", (void *) _result); + XSRETURN(argvi); +} + +XS(_wrap_icalcomponent_as_ical_string) { + + char * _result; + icalcomponent * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icalcomponent_as_ical_string(component);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,(char *) 0 )) { + croak("Type error in argument 1 of icalcomponent_as_ical_string. Expected icalcomponentPtr."); + XSRETURN(1); + } + _result = (char *)icalcomponent_as_ical_string(_arg0); + ST(argvi) = sv_newmortal(); + sv_setpv((SV*)ST(argvi++),(char *) _result); + XSRETURN(argvi); +} + +XS(_wrap_icalcomponent_free) { + + icalcomponent * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icalcomponent_free(component);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,(char *) 0 )) { + croak("Type error in argument 1 of icalcomponent_free. Expected icalcomponentPtr."); + XSRETURN(1); + } + icalcomponent_free(_arg0); + XSRETURN(argvi); +} + +XS(_wrap_icalcomponent_count_errors) { + + int _result; + icalcomponent * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icalcomponent_count_errors(component);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,(char *) 0 )) { + croak("Type error in argument 1 of icalcomponent_count_errors. Expected icalcomponentPtr."); + XSRETURN(1); + } + _result = (int )icalcomponent_count_errors(_arg0); + ST(argvi) = sv_newmortal(); + sv_setiv(ST(argvi++),(IV) _result); + XSRETURN(argvi); +} + +XS(_wrap_icalcomponent_strip_errors) { + + icalcomponent * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icalcomponent_strip_errors(component);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,(char *) 0 )) { + croak("Type error in argument 1 of icalcomponent_strip_errors. Expected icalcomponentPtr."); + XSRETURN(1); + } + icalcomponent_strip_errors(_arg0); + XSRETURN(argvi); +} + +XS(_wrap_icalcomponent_convert_errors) { + + icalcomponent * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icalcomponent_convert_errors(component);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,(char *) 0 )) { + croak("Type error in argument 1 of icalcomponent_convert_errors. Expected icalcomponentPtr."); + XSRETURN(1); + } + icalcomponent_convert_errors(_arg0); + XSRETURN(argvi); +} + +XS(_wrap_icalcomponent_get_current_property) { + + icalproperty * _result; + icalcomponent * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icalcomponent_get_current_property(component);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,(char *) 0 )) { + croak("Type error in argument 1 of icalcomponent_get_current_property. Expected icalcomponentPtr."); + XSRETURN(1); + } + _result = (icalproperty *)icalcomponent_get_current_property(_arg0); + ST(argvi) = sv_newmortal(); + sv_setref_pv(ST(argvi++),"icalpropertyPtr", (void *) _result); + XSRETURN(argvi); +} + +XS(_wrap_icalcomponent_get_first_property) { + + icalproperty * _result; + icalcomponent * _arg0; + icalproperty_kind * _arg1; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 2) || (items > 2)) + croak("Usage: icalcomponent_get_first_property(component,kind);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,(char *) 0 )) { + croak("Type error in argument 1 of icalcomponent_get_first_property. Expected icalcomponentPtr."); + XSRETURN(1); + } + if (SWIG_GetPtr(ST(1),(void **) &_arg1,"icalproperty_kindPtr")) { + croak("Type error in argument 2 of icalcomponent_get_first_property. Expected icalproperty_kindPtr."); + XSRETURN(1); + } + _result = (icalproperty *)icalcomponent_get_first_property(_arg0,*_arg1); + ST(argvi) = sv_newmortal(); + sv_setref_pv(ST(argvi++),"icalpropertyPtr", (void *) _result); + XSRETURN(argvi); +} + +XS(_wrap_icalcomponent_get_next_property) { + + icalproperty * _result; + icalcomponent * _arg0; + icalproperty_kind * _arg1; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 2) || (items > 2)) + croak("Usage: icalcomponent_get_next_property(component,kind);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,(char *) 0 )) { + croak("Type error in argument 1 of icalcomponent_get_next_property. Expected icalcomponentPtr."); + XSRETURN(1); + } + if (SWIG_GetPtr(ST(1),(void **) &_arg1,"icalproperty_kindPtr")) { + croak("Type error in argument 2 of icalcomponent_get_next_property. Expected icalproperty_kindPtr."); + XSRETURN(1); + } + _result = (icalproperty *)icalcomponent_get_next_property(_arg0,*_arg1); + ST(argvi) = sv_newmortal(); + sv_setref_pv(ST(argvi++),"icalpropertyPtr", (void *) _result); + XSRETURN(argvi); +} + +XS(_wrap_icalcomponent_get_current_component) { + + icalcomponent * _result; + icalcomponent * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icalcomponent_get_current_component(component);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,(char *) 0 )) { + croak("Type error in argument 1 of icalcomponent_get_current_component. Expected icalcomponentPtr."); + XSRETURN(1); + } + _result = (icalcomponent *)icalcomponent_get_current_component(_arg0); + ST(argvi) = sv_newmortal(); + sv_setref_pv(ST(argvi++),"icalcomponentPtr", (void *) _result); + XSRETURN(argvi); +} + +XS(_wrap_icalcomponent_get_first_component) { + + icalcomponent * _result; + icalcomponent * _arg0; + icalcomponent_kind * _arg1; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 2) || (items > 2)) + croak("Usage: icalcomponent_get_first_component(component,kind);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,(char *) 0 )) { + croak("Type error in argument 1 of icalcomponent_get_first_component. Expected icalcomponentPtr."); + XSRETURN(1); + } + if (SWIG_GetPtr(ST(1),(void **) &_arg1,"icalcomponent_kindPtr")) { + croak("Type error in argument 2 of icalcomponent_get_first_component. Expected icalcomponent_kindPtr."); + XSRETURN(1); + } + _result = (icalcomponent *)icalcomponent_get_first_component(_arg0,*_arg1); + ST(argvi) = sv_newmortal(); + sv_setref_pv(ST(argvi++),"icalcomponentPtr", (void *) _result); + XSRETURN(argvi); +} + +XS(_wrap_icalcomponent_get_next_component) { + + icalcomponent * _result; + icalcomponent * _arg0; + icalcomponent_kind * _arg1; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 2) || (items > 2)) + croak("Usage: icalcomponent_get_next_component(component,kind);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,(char *) 0 )) { + croak("Type error in argument 1 of icalcomponent_get_next_component. Expected icalcomponentPtr."); + XSRETURN(1); + } + if (SWIG_GetPtr(ST(1),(void **) &_arg1,"icalcomponent_kindPtr")) { + croak("Type error in argument 2 of icalcomponent_get_next_component. Expected icalcomponent_kindPtr."); + XSRETURN(1); + } + _result = (icalcomponent *)icalcomponent_get_next_component(_arg0,*_arg1); + ST(argvi) = sv_newmortal(); + sv_setref_pv(ST(argvi++),"icalcomponentPtr", (void *) _result); + XSRETURN(argvi); +} + +XS(_wrap_icalcomponent_add_property) { + + icalcomponent * _arg0; + icalproperty * _arg1; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 2) || (items > 2)) + croak("Usage: icalcomponent_add_property(component,property);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,(char *) 0 )) { + croak("Type error in argument 1 of icalcomponent_add_property. Expected icalcomponentPtr."); + XSRETURN(1); + } + if (SWIG_GetPtr(ST(1),(void **) &_arg1,(char *) 0 )) { + croak("Type error in argument 2 of icalcomponent_add_property. Expected icalpropertyPtr."); + XSRETURN(1); + } + icalcomponent_add_property(_arg0,_arg1); + XSRETURN(argvi); +} + +XS(_wrap_icalcomponent_remove_property) { + + icalcomponent * _arg0; + icalproperty * _arg1; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 2) || (items > 2)) + croak("Usage: icalcomponent_remove_property(component,property);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,(char *) 0 )) { + croak("Type error in argument 1 of icalcomponent_remove_property. Expected icalcomponentPtr."); + XSRETURN(1); + } + if (SWIG_GetPtr(ST(1),(void **) &_arg1,(char *) 0 )) { + croak("Type error in argument 2 of icalcomponent_remove_property. Expected icalpropertyPtr."); + XSRETURN(1); + } + icalcomponent_remove_property(_arg0,_arg1); + XSRETURN(argvi); +} + +XS(_wrap_icalcomponent_get_parent) { + + icalcomponent * _result; + icalcomponent * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icalcomponent_get_parent(component);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,(char *) 0 )) { + croak("Type error in argument 1 of icalcomponent_get_parent. Expected icalcomponentPtr."); + XSRETURN(1); + } + _result = (icalcomponent *)icalcomponent_get_parent(_arg0); + ST(argvi) = sv_newmortal(); + sv_setref_pv(ST(argvi++),"icalcomponentPtr", (void *) _result); + XSRETURN(argvi); +} + +XS(_wrap_icalcomponent_isa) { + + icalcomponent_kind * _result; + icalcomponent * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icalcomponent_isa(component);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,(char *) 0 )) { + croak("Type error in argument 1 of icalcomponent_isa. Expected icalcomponentPtr."); + XSRETURN(1); + } + _result = (icalcomponent_kind *) malloc(sizeof(icalcomponent_kind )); + *(_result) = icalcomponent_isa(_arg0); + ST(argvi) = sv_newmortal(); + sv_setref_pv(ST(argvi++),"icalcomponent_kindPtr", (void *) _result); + XSRETURN(argvi); +} + +XS(_wrap_icalrestriction_check) { + + int _result; + icalcomponent * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icalrestriction_check(comp);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,(char *) 0 )) { + croak("Type error in argument 1 of icalrestriction_check. Expected icalcomponentPtr."); + XSRETURN(1); + } + _result = (int )icalrestriction_check(_arg0); + ST(argvi) = sv_newmortal(); + sv_setiv(ST(argvi++),(IV) _result); + XSRETURN(argvi); +} + +XS(_wrap_icalproperty_string_to_kind) { + + int _result; + char * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icalproperty_string_to_kind(string);"); + _arg0 = (char *) SvPV(ST(0),na); + _result = (int )icalproperty_string_to_kind(_arg0); + ST(argvi) = sv_newmortal(); + sv_setiv(ST(argvi++),(IV) _result); + XSRETURN(argvi); +} + +XS(_wrap_icalproperty_new) { + + icalproperty * _result; + int _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icalproperty_new(kind);"); + _arg0 = (int )SvIV(ST(0)); + _result = (icalproperty *)icalproperty_new(_arg0); + ST(argvi) = sv_newmortal(); + sv_setref_pv(ST(argvi++),"icalpropertyPtr", (void *) _result); + XSRETURN(argvi); +} + +XS(_wrap_icalproperty_new_from_string) { + + icalproperty * _result; + char * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icalproperty_new_from_string(str);"); + _arg0 = (char *) SvPV(ST(0),na); + _result = (icalproperty *)icalproperty_new_from_string(_arg0); + ST(argvi) = sv_newmortal(); + sv_setref_pv(ST(argvi++),"icalpropertyPtr", (void *) _result); + XSRETURN(argvi); +} + +XS(_wrap_icalproperty_as_ical_string) { + + char * _result; + icalproperty * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icalproperty_as_ical_string(prop);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,(char *) 0 )) { + croak("Type error in argument 1 of icalproperty_as_ical_string. Expected icalpropertyPtr."); + XSRETURN(1); + } + _result = (char *)icalproperty_as_ical_string(_arg0); + ST(argvi) = sv_newmortal(); + sv_setpv((SV*)ST(argvi++),(char *) _result); + XSRETURN(argvi); +} + +XS(_wrap_icalproperty_set_parameter_from_string) { + + icalproperty * _arg0; + char * _arg1; + char * _arg2; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 3) || (items > 3)) + croak("Usage: icalproperty_set_parameter_from_string(prop,name,value);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,(char *) 0 )) { + croak("Type error in argument 1 of icalproperty_set_parameter_from_string. Expected icalpropertyPtr."); + XSRETURN(1); + } + _arg1 = (char *) SvPV(ST(1),na); + _arg2 = (char *) SvPV(ST(2),na); + icalproperty_set_parameter_from_string(_arg0,_arg1,_arg2); + XSRETURN(argvi); +} + +XS(_wrap_icalproperty_set_value_from_string) { + + icalproperty * _arg0; + char * _arg1; + char * _arg2; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 3) || (items > 3)) + croak("Usage: icalproperty_set_value_from_string(prop,value,kind);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,(char *) 0 )) { + croak("Type error in argument 1 of icalproperty_set_value_from_string. Expected icalpropertyPtr."); + XSRETURN(1); + } + _arg1 = (char *) SvPV(ST(1),na); + _arg2 = (char *) SvPV(ST(2),na); + icalproperty_set_value_from_string(_arg0,_arg1,_arg2); + XSRETURN(argvi); +} + +XS(_wrap_icalproperty_get_value_as_string) { + + char * _result; + icalproperty * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icalproperty_get_value_as_string(prop);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,(char *) 0 )) { + croak("Type error in argument 1 of icalproperty_get_value_as_string. Expected icalpropertyPtr."); + XSRETURN(1); + } + _result = (char *)icalproperty_get_value_as_string(_arg0); + ST(argvi) = sv_newmortal(); + sv_setpv((SV*)ST(argvi++),(char *) _result); + XSRETURN(argvi); +} + +XS(_wrap_icalproperty_get_parameter_as_string) { + + char * _result; + icalproperty * _arg0; + char * _arg1; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 2) || (items > 2)) + croak("Usage: icalproperty_get_parameter_as_string(prop,name);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,(char *) 0 )) { + croak("Type error in argument 1 of icalproperty_get_parameter_as_string. Expected icalpropertyPtr."); + XSRETURN(1); + } + _arg1 = (char *) SvPV(ST(1),na); + _result = (char *)icalproperty_get_parameter_as_string(_arg0,_arg1); + ST(argvi) = sv_newmortal(); + sv_setpv((SV*)ST(argvi++),(char *) _result); + XSRETURN(argvi); +} + +XS(_wrap_icalproperty_get_parent) { + + icalcomponent * _result; + icalproperty * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icalproperty_get_parent(property);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,(char *) 0 )) { + croak("Type error in argument 1 of icalproperty_get_parent. Expected icalpropertyPtr."); + XSRETURN(1); + } + _result = (icalcomponent *)icalproperty_get_parent(_arg0); + ST(argvi) = sv_newmortal(); + sv_setref_pv(ST(argvi++),"icalcomponentPtr", (void *) _result); + XSRETURN(argvi); +} + +XS(_wrap_icalerror_set_error_state) { + + icalerrorenum _arg0; + icalerrorstate _arg1; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 2) || (items > 2)) + croak("Usage: icalerror_set_error_state(error,icalerrorstate );"); + _arg0 = (icalerrorenum )SvIV(ST(0)); + _arg1 = (icalerrorstate )SvIV(ST(1)); + icalerror_set_error_state(_arg0,_arg1); + XSRETURN(argvi); +} + +XS(_wrap_icalerror_get_error_state) { + + icalerrorstate _result; + icalerrorenum _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icalerror_get_error_state(error);"); + _arg0 = (icalerrorenum )SvIV(ST(0)); + _result = (icalerrorstate )icalerror_get_error_state(_arg0); + ST(argvi) = sv_newmortal(); + sv_setiv(ST(argvi++),(IV) _result); + XSRETURN(argvi); +} + +XS(_wrap_icalenum_property_kind_to_string) { + + char * _result; + icalproperty_kind * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icalenum_property_kind_to_string(kind);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"icalproperty_kindPtr")) { + croak("Type error in argument 1 of icalenum_property_kind_to_string. Expected icalproperty_kindPtr."); + XSRETURN(1); + } + _result = (char *)icalenum_property_kind_to_string(*_arg0); + ST(argvi) = sv_newmortal(); + sv_setpv((SV*)ST(argvi++),(char *) _result); + XSRETURN(argvi); +} + +XS(_wrap_icalenum_string_to_property_kind) { + + icalproperty_kind * _result; + char * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icalenum_string_to_property_kind(string);"); + _arg0 = (char *) SvPV(ST(0),na); + _result = (icalproperty_kind *) malloc(sizeof(icalproperty_kind )); + *(_result) = icalenum_string_to_property_kind(_arg0); + ST(argvi) = sv_newmortal(); + sv_setref_pv(ST(argvi++),"icalproperty_kindPtr", (void *) _result); + XSRETURN(argvi); +} + +XS(_wrap_icalenum_value_kind_to_string) { + + char * _result; + icalvalue_kind * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icalenum_value_kind_to_string(kind);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"icalvalue_kindPtr")) { + croak("Type error in argument 1 of icalenum_value_kind_to_string. Expected icalvalue_kindPtr."); + XSRETURN(1); + } + _result = (char *)icalenum_value_kind_to_string(*_arg0); + ST(argvi) = sv_newmortal(); + sv_setpv((SV*)ST(argvi++),(char *) _result); + XSRETURN(argvi); +} + +XS(_wrap_icalenum_parameter_kind_to_string) { + + char * _result; + icalparameter_kind * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icalenum_parameter_kind_to_string(kind);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"icalparameter_kindPtr")) { + croak("Type error in argument 1 of icalenum_parameter_kind_to_string. Expected icalparameter_kindPtr."); + XSRETURN(1); + } + _result = (char *)icalenum_parameter_kind_to_string(*_arg0); + ST(argvi) = sv_newmortal(); + sv_setpv((SV*)ST(argvi++),(char *) _result); + XSRETURN(argvi); +} + +XS(_wrap_icalenum_string_to_parameter_kind) { + + icalparameter_kind * _result; + char * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icalenum_string_to_parameter_kind(string);"); + _arg0 = (char *) SvPV(ST(0),na); + _result = (icalparameter_kind *) malloc(sizeof(icalparameter_kind )); + *(_result) = icalenum_string_to_parameter_kind(_arg0); + ST(argvi) = sv_newmortal(); + sv_setref_pv(ST(argvi++),"icalparameter_kindPtr", (void *) _result); + XSRETURN(argvi); +} + +XS(_wrap_icalenum_component_kind_to_string) { + + char * _result; + icalcomponent_kind * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icalenum_component_kind_to_string(kind);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"icalcomponent_kindPtr")) { + croak("Type error in argument 1 of icalenum_component_kind_to_string. Expected icalcomponent_kindPtr."); + XSRETURN(1); + } + _result = (char *)icalenum_component_kind_to_string(*_arg0); + ST(argvi) = sv_newmortal(); + sv_setpv((SV*)ST(argvi++),(char *) _result); + XSRETURN(argvi); +} + +XS(_wrap_icalenum_string_to_component_kind) { + + icalcomponent_kind * _result; + char * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icalenum_string_to_component_kind(string);"); + _arg0 = (char *) SvPV(ST(0),na); + _result = (icalcomponent_kind *) malloc(sizeof(icalcomponent_kind )); + *(_result) = icalenum_string_to_component_kind(_arg0); + ST(argvi) = sv_newmortal(); + sv_setref_pv(ST(argvi++),"icalcomponent_kindPtr", (void *) _result); + XSRETURN(argvi); +} + +XS(_wrap_icalenum_property_kind_to_value_kind) { + + icalvalue_kind * _result; + icalproperty_kind * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icalenum_property_kind_to_value_kind(kind);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"icalproperty_kindPtr")) { + croak("Type error in argument 1 of icalenum_property_kind_to_value_kind. Expected icalproperty_kindPtr."); + XSRETURN(1); + } + _result = (icalvalue_kind *) malloc(sizeof(icalvalue_kind )); + *(_result) = icalenum_property_kind_to_value_kind(*_arg0); + ST(argvi) = sv_newmortal(); + sv_setref_pv(ST(argvi++),"icalvalue_kindPtr", (void *) _result); + XSRETURN(argvi); +} + +XS(_wrap_icallangbind_new_array) { + + int * _result; + int _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icallangbind_new_array(size);"); + _arg0 = (int )SvIV(ST(0)); + _result = (int *)icallangbind_new_array(_arg0); + ST(argvi) = sv_newmortal(); + sv_setref_pv(ST(argvi++),"intPtr", (void *) _result); + XSRETURN(argvi); +} + +XS(_wrap_icallangbind_free_array) { + + int * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icallangbind_free_array(array);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"intPtr")) { + croak("Type error in argument 1 of icallangbind_free_array. Expected intPtr."); + XSRETURN(1); + } + icallangbind_free_array(_arg0); + XSRETURN(argvi); +} + +XS(_wrap_icallangbind_access_array) { + + int _result; + int * _arg0; + int _arg1; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 2) || (items > 2)) + croak("Usage: icallangbind_access_array(array,index);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"intPtr")) { + croak("Type error in argument 1 of icallangbind_access_array. Expected intPtr."); + XSRETURN(1); + } + _arg1 = (int )SvIV(ST(1)); + _result = (int )icallangbind_access_array(_arg0,_arg1); + ST(argvi) = sv_newmortal(); + sv_setiv(ST(argvi++),(IV) _result); + XSRETURN(argvi); +} + +XS(_wrap_icalrecur_expand_recurrence) { + + int _result; + char * _arg0; + int _arg1; + int _arg2; + int * _arg3; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 4) || (items > 4)) + croak("Usage: icalrecur_expand_recurrence(rule,start,count,array);"); + _arg0 = (char *) SvPV(ST(0),na); + _arg1 = (int )SvIV(ST(1)); + _arg2 = (int )SvIV(ST(2)); + if (SWIG_GetPtr(ST(3),(void **) &_arg3,"intPtr")) { + croak("Type error in argument 4 of icalrecur_expand_recurrence. Expected intPtr."); + XSRETURN(1); + } + _result = (int )icalrecur_expand_recurrence(_arg0,_arg1,_arg2,_arg3); + ST(argvi) = sv_newmortal(); + sv_setiv(ST(argvi++),(IV) _result); + XSRETURN(argvi); +} + +XS(_wrap_icallangbind_get_first_property) { + + icalproperty * _result; + icalcomponent * _arg0; + char * _arg1; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 2) || (items > 2)) + croak("Usage: icallangbind_get_first_property(c,prop);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,(char *) 0 )) { + croak("Type error in argument 1 of icallangbind_get_first_property. Expected icalcomponentPtr."); + XSRETURN(1); + } + _arg1 = (char *) SvPV(ST(1),na); + _result = (icalproperty *)icallangbind_get_first_property(_arg0,_arg1); + ST(argvi) = sv_newmortal(); + sv_setref_pv(ST(argvi++),"icalpropertyPtr", (void *) _result); + XSRETURN(argvi); +} + +XS(_wrap_icallangbind_get_next_property) { + + icalproperty * _result; + icalcomponent * _arg0; + char * _arg1; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 2) || (items > 2)) + croak("Usage: icallangbind_get_next_property(c,prop);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,(char *) 0 )) { + croak("Type error in argument 1 of icallangbind_get_next_property. Expected icalcomponentPtr."); + XSRETURN(1); + } + _arg1 = (char *) SvPV(ST(1),na); + _result = (icalproperty *)icallangbind_get_next_property(_arg0,_arg1); + ST(argvi) = sv_newmortal(); + sv_setref_pv(ST(argvi++),"icalpropertyPtr", (void *) _result); + XSRETURN(argvi); +} + +XS(_wrap_icallangbind_get_first_component) { + + icalcomponent * _result; + icalcomponent * _arg0; + char * _arg1; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 2) || (items > 2)) + croak("Usage: icallangbind_get_first_component(c,comp);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,(char *) 0 )) { + croak("Type error in argument 1 of icallangbind_get_first_component. Expected icalcomponentPtr."); + XSRETURN(1); + } + _arg1 = (char *) SvPV(ST(1),na); + _result = (icalcomponent *)icallangbind_get_first_component(_arg0,_arg1); + ST(argvi) = sv_newmortal(); + sv_setref_pv(ST(argvi++),"icalcomponentPtr", (void *) _result); + XSRETURN(argvi); +} + +XS(_wrap_icallangbind_get_next_component) { + + icalcomponent * _result; + icalcomponent * _arg0; + char * _arg1; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 2) || (items > 2)) + croak("Usage: icallangbind_get_next_component(c,comp);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,(char *) 0 )) { + croak("Type error in argument 1 of icallangbind_get_next_component. Expected icalcomponentPtr."); + XSRETURN(1); + } + _arg1 = (char *) SvPV(ST(1),na); + _result = (icalcomponent *)icallangbind_get_next_component(_arg0,_arg1); + ST(argvi) = sv_newmortal(); + sv_setref_pv(ST(argvi++),"icalcomponentPtr", (void *) _result); + XSRETURN(argvi); +} + +XS(_wrap_icallangbind_property_eval_string) { + + char * _result; + icalproperty * _arg0; + char * _arg1; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 2) || (items > 2)) + croak("Usage: icallangbind_property_eval_string(prop,sep);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,(char *) 0 )) { + croak("Type error in argument 1 of icallangbind_property_eval_string. Expected icalpropertyPtr."); + XSRETURN(1); + } + _arg1 = (char *) SvPV(ST(1),na); + _result = (char *)icallangbind_property_eval_string(_arg0,_arg1); + ST(argvi) = sv_newmortal(); + sv_setpv((SV*)ST(argvi++),(char *) _result); + XSRETURN(argvi); +} + +XS(_wrap_icaltime_from_timet) { + + struct icaltimetype * _result; + int _arg0; + int _arg1; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 2) || (items > 2)) + croak("Usage: icaltime_from_timet(v,is_date);"); + _arg0 = (int )SvIV(ST(0)); + _arg1 = (int )SvIV(ST(1)); + _result = (struct icaltimetype *) malloc(sizeof(struct icaltimetype )); + *(_result) = icaltime_from_timet(_arg0,_arg1); + ST(argvi) = sv_newmortal(); + sv_setref_pv(ST(argvi++),"struct icaltimetypePtr", (void *) _result); + XSRETURN(argvi); +} + +XS(_wrap_icaltime_as_timet) { + + int _result; + struct icaltimetype * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icaltime_as_timet(struct icaltimetype *);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"struct icaltimetypePtr")) { + croak("Type error in argument 1 of icaltime_as_timet. Expected struct icaltimetypePtr."); + XSRETURN(1); + } + _result = (int )icaltime_as_timet(*_arg0); + ST(argvi) = sv_newmortal(); + sv_setiv(ST(argvi++),(IV) _result); + XSRETURN(argvi); +} + +XS(_wrap_icaltime_as_ical_string) { + + char * _result; + struct icaltimetype * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icaltime_as_ical_string(tt);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"struct icaltimetypePtr")) { + croak("Type error in argument 1 of icaltime_as_ical_string. Expected struct icaltimetypePtr."); + XSRETURN(1); + } + _result = (char *)icaltime_as_ical_string(*_arg0); + ST(argvi) = sv_newmortal(); + sv_setpv((SV*)ST(argvi++),(char *) _result); + XSRETURN(argvi); +} + +XS(_wrap_icaltime_from_string) { + + struct icaltimetype * _result; + char * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icaltime_from_string(str);"); + _arg0 = (char *) SvPV(ST(0),na); + _result = (struct icaltimetype *) malloc(sizeof(struct icaltimetype )); + *(_result) = icaltime_from_string(_arg0); + ST(argvi) = sv_newmortal(); + sv_setref_pv(ST(argvi++),"struct icaltimetypePtr", (void *) _result); + XSRETURN(argvi); +} + +XS(_wrap_icaltime_utc_offset) { + + int _result; + struct icaltimetype * _arg0; + char * _arg1; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 2) || (items > 2)) + croak("Usage: icaltime_utc_offset(tt,tzid);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"struct icaltimetypePtr")) { + croak("Type error in argument 1 of icaltime_utc_offset. Expected struct icaltimetypePtr."); + XSRETURN(1); + } + _arg1 = (char *) SvPV(ST(1),na); + _result = (int )icaltime_utc_offset(*_arg0,_arg1); + ST(argvi) = sv_newmortal(); + sv_setiv(ST(argvi++),(IV) _result); + XSRETURN(argvi); +} + +XS(_wrap_icaltime_as_utc) { + + struct icaltimetype * _result; + struct icaltimetype * _arg0; + char * _arg1; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 2) || (items > 2)) + croak("Usage: icaltime_as_utc(tt,tzid);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"struct icaltimetypePtr")) { + croak("Type error in argument 1 of icaltime_as_utc. Expected struct icaltimetypePtr."); + XSRETURN(1); + } + _arg1 = (char *) SvPV(ST(1),na); + _result = (struct icaltimetype *) malloc(sizeof(struct icaltimetype )); + *(_result) = icaltime_as_utc(*_arg0,_arg1); + ST(argvi) = sv_newmortal(); + sv_setref_pv(ST(argvi++),"struct icaltimetypePtr", (void *) _result); + XSRETURN(argvi); +} + +XS(_wrap_icaltime_as_zone) { + + struct icaltimetype * _result; + struct icaltimetype * _arg0; + char * _arg1; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 2) || (items > 2)) + croak("Usage: icaltime_as_zone(tt,tzid);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"struct icaltimetypePtr")) { + croak("Type error in argument 1 of icaltime_as_zone. Expected struct icaltimetypePtr."); + XSRETURN(1); + } + _arg1 = (char *) SvPV(ST(1),na); + _result = (struct icaltimetype *) malloc(sizeof(struct icaltimetype )); + *(_result) = icaltime_as_zone(*_arg0,_arg1); + ST(argvi) = sv_newmortal(); + sv_setref_pv(ST(argvi++),"struct icaltimetypePtr", (void *) _result); + XSRETURN(argvi); +} + +XS(_wrap_icaltime_null_time) { + + struct icaltimetype * _result; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 0) || (items > 0)) + croak("Usage: icaltime_null_time();"); + _result = (struct icaltimetype *) malloc(sizeof(struct icaltimetype )); + *(_result) = icaltime_null_time(); + ST(argvi) = sv_newmortal(); + sv_setref_pv(ST(argvi++),"struct icaltimetypePtr", (void *) _result); + XSRETURN(argvi); +} + +XS(_wrap_icaltime_is_null_time) { + + int _result; + struct icaltimetype * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icaltime_is_null_time(t);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"struct icaltimetypePtr")) { + croak("Type error in argument 1 of icaltime_is_null_time. Expected struct icaltimetypePtr."); + XSRETURN(1); + } + _result = (int )icaltime_is_null_time(*_arg0); + ST(argvi) = sv_newmortal(); + sv_setiv(ST(argvi++),(IV) _result); + XSRETURN(argvi); +} + +XS(_wrap_icaltime_is_valid_time) { + + int _result; + struct icaltimetype * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icaltime_is_valid_time(t);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"struct icaltimetypePtr")) { + croak("Type error in argument 1 of icaltime_is_valid_time. Expected struct icaltimetypePtr."); + XSRETURN(1); + } + _result = (int )icaltime_is_valid_time(*_arg0); + ST(argvi) = sv_newmortal(); + sv_setiv(ST(argvi++),(IV) _result); + XSRETURN(argvi); +} + +XS(_wrap_icaltime_normalize) { + + struct icaltimetype * _result; + struct icaltimetype * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icaltime_normalize(t);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"struct icaltimetypePtr")) { + croak("Type error in argument 1 of icaltime_normalize. Expected struct icaltimetypePtr."); + XSRETURN(1); + } + _result = (struct icaltimetype *) malloc(sizeof(struct icaltimetype )); + *(_result) = icaltime_normalize(*_arg0); + ST(argvi) = sv_newmortal(); + sv_setref_pv(ST(argvi++),"struct icaltimetypePtr", (void *) _result); + XSRETURN(argvi); +} + +XS(_wrap_icaltime_day_of_year) { + + short _result; + struct icaltimetype * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icaltime_day_of_year(t);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"struct icaltimetypePtr")) { + croak("Type error in argument 1 of icaltime_day_of_year. Expected struct icaltimetypePtr."); + XSRETURN(1); + } + _result = (short )icaltime_day_of_year(*_arg0); + ST(argvi) = sv_newmortal(); + sv_setiv(ST(argvi++),(IV) _result); + XSRETURN(argvi); +} + +XS(_wrap_icaltime_from_day_of_year) { + + struct icaltimetype * _result; + short _arg0; + short _arg1; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 2) || (items > 2)) + croak("Usage: icaltime_from_day_of_year(doy,year);"); + _arg0 = (short )SvIV(ST(0)); + _arg1 = (short )SvIV(ST(1)); + _result = (struct icaltimetype *) malloc(sizeof(struct icaltimetype )); + *(_result) = icaltime_from_day_of_year(_arg0,_arg1); + ST(argvi) = sv_newmortal(); + sv_setref_pv(ST(argvi++),"struct icaltimetypePtr", (void *) _result); + XSRETURN(argvi); +} + +XS(_wrap_icaltime_day_of_week) { + + short _result; + struct icaltimetype * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icaltime_day_of_week(t);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"struct icaltimetypePtr")) { + croak("Type error in argument 1 of icaltime_day_of_week. Expected struct icaltimetypePtr."); + XSRETURN(1); + } + _result = (short )icaltime_day_of_week(*_arg0); + ST(argvi) = sv_newmortal(); + sv_setiv(ST(argvi++),(IV) _result); + XSRETURN(argvi); +} + +XS(_wrap_icaltime_start_doy_of_week) { + + short _result; + struct icaltimetype * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icaltime_start_doy_of_week(t);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"struct icaltimetypePtr")) { + croak("Type error in argument 1 of icaltime_start_doy_of_week. Expected struct icaltimetypePtr."); + XSRETURN(1); + } + _result = (short )icaltime_start_doy_of_week(*_arg0); + ST(argvi) = sv_newmortal(); + sv_setiv(ST(argvi++),(IV) _result); + XSRETURN(argvi); +} + +XS(_wrap_icaltime_as_ctime) { + + char * _result; + struct icaltimetype * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icaltime_as_ctime(struct icaltimetype *);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"struct icaltimetypePtr")) { + croak("Type error in argument 1 of icaltime_as_ctime. Expected struct icaltimetypePtr."); + XSRETURN(1); + } + _result = (char *)icaltime_as_ctime(*_arg0); + ST(argvi) = sv_newmortal(); + sv_setpv((SV*)ST(argvi++),(char *) _result); + XSRETURN(argvi); +} + +XS(_wrap_icaltime_week_number) { + + short _result; + struct icaltimetype * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icaltime_week_number(t);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"struct icaltimetypePtr")) { + croak("Type error in argument 1 of icaltime_week_number. Expected struct icaltimetypePtr."); + XSRETURN(1); + } + _result = (short )icaltime_week_number(*_arg0); + ST(argvi) = sv_newmortal(); + sv_setiv(ST(argvi++),(IV) _result); + XSRETURN(argvi); +} + +XS(_wrap_icaltime_compare) { + + int _result; + struct icaltimetype * _arg0; + struct icaltimetype * _arg1; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 2) || (items > 2)) + croak("Usage: icaltime_compare(a,b);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"struct icaltimetypePtr")) { + croak("Type error in argument 1 of icaltime_compare. Expected struct icaltimetypePtr."); + XSRETURN(1); + } + if (SWIG_GetPtr(ST(1),(void **) &_arg1,"struct icaltimetypePtr")) { + croak("Type error in argument 2 of icaltime_compare. Expected struct icaltimetypePtr."); + XSRETURN(1); + } + _result = (int )icaltime_compare(*_arg0,*_arg1); + ST(argvi) = sv_newmortal(); + sv_setiv(ST(argvi++),(IV) _result); + XSRETURN(argvi); +} + +XS(_wrap_icaltime_compare_date_only) { + + int _result; + struct icaltimetype * _arg0; + struct icaltimetype * _arg1; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 2) || (items > 2)) + croak("Usage: icaltime_compare_date_only(a,b);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"struct icaltimetypePtr")) { + croak("Type error in argument 1 of icaltime_compare_date_only. Expected struct icaltimetypePtr."); + XSRETURN(1); + } + if (SWIG_GetPtr(ST(1),(void **) &_arg1,"struct icaltimetypePtr")) { + croak("Type error in argument 2 of icaltime_compare_date_only. Expected struct icaltimetypePtr."); + XSRETURN(1); + } + _result = (int )icaltime_compare_date_only(*_arg0,*_arg1); + ST(argvi) = sv_newmortal(); + sv_setiv(ST(argvi++),(IV) _result); + XSRETURN(argvi); +} + +XS(_wrap_icaltime_days_in_month) { + + short _result; + short _arg0; + short _arg1; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 2) || (items > 2)) + croak("Usage: icaltime_days_in_month(month,year);"); + _arg0 = (short )SvIV(ST(0)); + _arg1 = (short )SvIV(ST(1)); + _result = (short )icaltime_days_in_month(_arg0,_arg1); + ST(argvi) = sv_newmortal(); + sv_setiv(ST(argvi++),(IV) _result); + XSRETURN(argvi); +} + +XS(_wrap_icaldurationtype_from_int) { + + struct icaldurationtype * _result; + int _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icaldurationtype_from_int(t);"); + _arg0 = (int )SvIV(ST(0)); + _result = (struct icaldurationtype *) malloc(sizeof(struct icaldurationtype )); + *(_result) = icaldurationtype_from_int(_arg0); + ST(argvi) = sv_newmortal(); + sv_setref_pv(ST(argvi++),"struct icaldurationtypePtr", (void *) _result); + XSRETURN(argvi); +} + +XS(_wrap_icaldurationtype_from_string) { + + struct icaldurationtype * _result; + char * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icaldurationtype_from_string(char *);"); + _arg0 = (char *) SvPV(ST(0),na); + _result = (struct icaldurationtype *) malloc(sizeof(struct icaldurationtype )); + *(_result) = icaldurationtype_from_string(_arg0); + ST(argvi) = sv_newmortal(); + sv_setref_pv(ST(argvi++),"struct icaldurationtypePtr", (void *) _result); + XSRETURN(argvi); +} + +XS(_wrap_icaldurationtype_as_int) { + + int _result; + struct icaldurationtype * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icaldurationtype_as_int(duration);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"struct icaldurationtypePtr")) { + croak("Type error in argument 1 of icaldurationtype_as_int. Expected struct icaldurationtypePtr."); + XSRETURN(1); + } + _result = (int )icaldurationtype_as_int(*_arg0); + ST(argvi) = sv_newmortal(); + sv_setiv(ST(argvi++),(IV) _result); + XSRETURN(argvi); +} + +XS(_wrap_icaldurationtype_as_ical_string) { + + char * _result; + struct icaldurationtype * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icaldurationtype_as_ical_string(d);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"struct icaldurationtypePtr")) { + croak("Type error in argument 1 of icaldurationtype_as_ical_string. Expected struct icaldurationtypePtr."); + XSRETURN(1); + } + _result = (char *)icaldurationtype_as_ical_string(*_arg0); + ST(argvi) = sv_newmortal(); + sv_setpv((SV*)ST(argvi++),(char *) _result); + XSRETURN(argvi); +} + +XS(_wrap_icaldurationtype_null_duration) { + + struct icaldurationtype * _result; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 0) || (items > 0)) + croak("Usage: icaldurationtype_null_duration();"); + _result = (struct icaldurationtype *) malloc(sizeof(struct icaldurationtype )); + *(_result) = icaldurationtype_null_duration(); + ST(argvi) = sv_newmortal(); + sv_setref_pv(ST(argvi++),"struct icaldurationtypePtr", (void *) _result); + XSRETURN(argvi); +} + +XS(_wrap_icaldurationtype_is_null_duration) { + + int _result; + struct icaldurationtype * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icaldurationtype_is_null_duration(d);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"struct icaldurationtypePtr")) { + croak("Type error in argument 1 of icaldurationtype_is_null_duration. Expected struct icaldurationtypePtr."); + XSRETURN(1); + } + _result = (int )icaldurationtype_is_null_duration(*_arg0); + ST(argvi) = sv_newmortal(); + sv_setiv(ST(argvi++),(IV) _result); + XSRETURN(argvi); +} + +XS(_wrap_icaltime_add) { + + struct icaltimetype * _result; + struct icaltimetype * _arg0; + struct icaldurationtype * _arg1; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 2) || (items > 2)) + croak("Usage: icaltime_add(t,d);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"struct icaltimetypePtr")) { + croak("Type error in argument 1 of icaltime_add. Expected struct icaltimetypePtr."); + XSRETURN(1); + } + if (SWIG_GetPtr(ST(1),(void **) &_arg1,"struct icaldurationtypePtr")) { + croak("Type error in argument 2 of icaltime_add. Expected struct icaldurationtypePtr."); + XSRETURN(1); + } + _result = (struct icaltimetype *) malloc(sizeof(struct icaltimetype )); + *(_result) = icaltime_add(*_arg0,*_arg1); + ST(argvi) = sv_newmortal(); + sv_setref_pv(ST(argvi++),"struct icaltimetypePtr", (void *) _result); + XSRETURN(argvi); +} + +XS(_wrap_icaltime_subtract) { + + struct icaldurationtype * _result; + struct icaltimetype * _arg0; + struct icaltimetype * _arg1; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 2) || (items > 2)) + croak("Usage: icaltime_subtract(t1,t2);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"struct icaltimetypePtr")) { + croak("Type error in argument 1 of icaltime_subtract. Expected struct icaltimetypePtr."); + XSRETURN(1); + } + if (SWIG_GetPtr(ST(1),(void **) &_arg1,"struct icaltimetypePtr")) { + croak("Type error in argument 2 of icaltime_subtract. Expected struct icaltimetypePtr."); + XSRETURN(1); + } + _result = (struct icaldurationtype *) malloc(sizeof(struct icaldurationtype )); + *(_result) = icaltime_subtract(*_arg0,*_arg1); + ST(argvi) = sv_newmortal(); + sv_setref_pv(ST(argvi++),"struct icaldurationtypePtr", (void *) _result); + XSRETURN(argvi); +} + +XS(_wrap_icalperiodtype_from_string) { + + struct icalperiodtype * _result; + char * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icalperiodtype_from_string(str);"); + _arg0 = (char *) SvPV(ST(0),na); + _result = (struct icalperiodtype *) malloc(sizeof(struct icalperiodtype )); + *(_result) = icalperiodtype_from_string(_arg0); + ST(argvi) = sv_newmortal(); + sv_setref_pv(ST(argvi++),"struct icalperiodtypePtr", (void *) _result); + XSRETURN(argvi); +} + +XS(_wrap_icalperiodtype_as_ical_string) { + + char * _result; + struct icalperiodtype * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icalperiodtype_as_ical_string(p);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"struct icalperiodtypePtr")) { + croak("Type error in argument 1 of icalperiodtype_as_ical_string. Expected struct icalperiodtypePtr."); + XSRETURN(1); + } + _result = (char *)icalperiodtype_as_ical_string(*_arg0); + ST(argvi) = sv_newmortal(); + sv_setpv((SV*)ST(argvi++),(char *) _result); + XSRETURN(argvi); +} + +XS(_wrap_icalperiodtype_null_period) { + + struct icalperiodtype * _result; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 0) || (items > 0)) + croak("Usage: icalperiodtype_null_period();"); + _result = (struct icalperiodtype *) malloc(sizeof(struct icalperiodtype )); + *(_result) = icalperiodtype_null_period(); + ST(argvi) = sv_newmortal(); + sv_setref_pv(ST(argvi++),"struct icalperiodtypePtr", (void *) _result); + XSRETURN(argvi); +} + +XS(_wrap_icalperiodtype_is_null_period) { + + int _result; + struct icalperiodtype * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icalperiodtype_is_null_period(p);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"struct icalperiodtypePtr")) { + croak("Type error in argument 1 of icalperiodtype_is_null_period. Expected struct icalperiodtypePtr."); + XSRETURN(1); + } + _result = (int )icalperiodtype_is_null_period(*_arg0); + ST(argvi) = sv_newmortal(); + sv_setiv(ST(argvi++),(IV) _result); + XSRETURN(argvi); +} + +XS(_wrap_icalperiodtype_is_valid_period) { + + int _result; + struct icalperiodtype * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icalperiodtype_is_valid_period(p);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"struct icalperiodtypePtr")) { + croak("Type error in argument 1 of icalperiodtype_is_valid_period. Expected struct icalperiodtypePtr."); + XSRETURN(1); + } + _result = (int )icalperiodtype_is_valid_period(*_arg0); + ST(argvi) = sv_newmortal(); + sv_setiv(ST(argvi++),(IV) _result); + XSRETURN(argvi); +} + +#define icaltimetype_year_set(_swigobj,_swigval) (_swigobj->year = _swigval,_swigval) +XS(_wrap_icaltimetype_year_set) { + + int _result; + struct icaltimetype * _arg0; + int _arg1; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 2) || (items > 2)) + croak("Usage: icaltimetype_year_set(struct icaltimetype *,int );"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"struct icaltimetypePtr")) { + croak("Type error in argument 1 of icaltimetype_year_set. Expected struct icaltimetypePtr."); + XSRETURN(1); + } + _arg1 = (int )SvIV(ST(1)); + _result = (int )icaltimetype_year_set(_arg0,_arg1); + ST(argvi) = sv_newmortal(); + sv_setiv(ST(argvi++),(IV) _result); + XSRETURN(argvi); +} + +#define icaltimetype_year_get(_swigobj) ((int ) _swigobj->year) +XS(_wrap_icaltimetype_year_get) { + + int _result; + struct icaltimetype * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icaltimetype_year_get(struct icaltimetype *);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"struct icaltimetypePtr")) { + croak("Type error in argument 1 of icaltimetype_year_get. Expected struct icaltimetypePtr."); + XSRETURN(1); + } + _result = (int )icaltimetype_year_get(_arg0); + ST(argvi) = sv_newmortal(); + sv_setiv(ST(argvi++),(IV) _result); + XSRETURN(argvi); +} + +#define icaltimetype_month_set(_swigobj,_swigval) (_swigobj->month = _swigval,_swigval) +XS(_wrap_icaltimetype_month_set) { + + int _result; + struct icaltimetype * _arg0; + int _arg1; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 2) || (items > 2)) + croak("Usage: icaltimetype_month_set(struct icaltimetype *,int );"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"struct icaltimetypePtr")) { + croak("Type error in argument 1 of icaltimetype_month_set. Expected struct icaltimetypePtr."); + XSRETURN(1); + } + _arg1 = (int )SvIV(ST(1)); + _result = (int )icaltimetype_month_set(_arg0,_arg1); + ST(argvi) = sv_newmortal(); + sv_setiv(ST(argvi++),(IV) _result); + XSRETURN(argvi); +} + +#define icaltimetype_month_get(_swigobj) ((int ) _swigobj->month) +XS(_wrap_icaltimetype_month_get) { + + int _result; + struct icaltimetype * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icaltimetype_month_get(struct icaltimetype *);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"struct icaltimetypePtr")) { + croak("Type error in argument 1 of icaltimetype_month_get. Expected struct icaltimetypePtr."); + XSRETURN(1); + } + _result = (int )icaltimetype_month_get(_arg0); + ST(argvi) = sv_newmortal(); + sv_setiv(ST(argvi++),(IV) _result); + XSRETURN(argvi); +} + +#define icaltimetype_day_set(_swigobj,_swigval) (_swigobj->day = _swigval,_swigval) +XS(_wrap_icaltimetype_day_set) { + + int _result; + struct icaltimetype * _arg0; + int _arg1; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 2) || (items > 2)) + croak("Usage: icaltimetype_day_set(struct icaltimetype *,int );"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"struct icaltimetypePtr")) { + croak("Type error in argument 1 of icaltimetype_day_set. Expected struct icaltimetypePtr."); + XSRETURN(1); + } + _arg1 = (int )SvIV(ST(1)); + _result = (int )icaltimetype_day_set(_arg0,_arg1); + ST(argvi) = sv_newmortal(); + sv_setiv(ST(argvi++),(IV) _result); + XSRETURN(argvi); +} + +#define icaltimetype_day_get(_swigobj) ((int ) _swigobj->day) +XS(_wrap_icaltimetype_day_get) { + + int _result; + struct icaltimetype * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icaltimetype_day_get(struct icaltimetype *);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"struct icaltimetypePtr")) { + croak("Type error in argument 1 of icaltimetype_day_get. Expected struct icaltimetypePtr."); + XSRETURN(1); + } + _result = (int )icaltimetype_day_get(_arg0); + ST(argvi) = sv_newmortal(); + sv_setiv(ST(argvi++),(IV) _result); + XSRETURN(argvi); +} + +#define icaltimetype_hour_set(_swigobj,_swigval) (_swigobj->hour = _swigval,_swigval) +XS(_wrap_icaltimetype_hour_set) { + + int _result; + struct icaltimetype * _arg0; + int _arg1; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 2) || (items > 2)) + croak("Usage: icaltimetype_hour_set(struct icaltimetype *,int );"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"struct icaltimetypePtr")) { + croak("Type error in argument 1 of icaltimetype_hour_set. Expected struct icaltimetypePtr."); + XSRETURN(1); + } + _arg1 = (int )SvIV(ST(1)); + _result = (int )icaltimetype_hour_set(_arg0,_arg1); + ST(argvi) = sv_newmortal(); + sv_setiv(ST(argvi++),(IV) _result); + XSRETURN(argvi); +} + +#define icaltimetype_hour_get(_swigobj) ((int ) _swigobj->hour) +XS(_wrap_icaltimetype_hour_get) { + + int _result; + struct icaltimetype * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icaltimetype_hour_get(struct icaltimetype *);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"struct icaltimetypePtr")) { + croak("Type error in argument 1 of icaltimetype_hour_get. Expected struct icaltimetypePtr."); + XSRETURN(1); + } + _result = (int )icaltimetype_hour_get(_arg0); + ST(argvi) = sv_newmortal(); + sv_setiv(ST(argvi++),(IV) _result); + XSRETURN(argvi); +} + +#define icaltimetype_minute_set(_swigobj,_swigval) (_swigobj->minute = _swigval,_swigval) +XS(_wrap_icaltimetype_minute_set) { + + int _result; + struct icaltimetype * _arg0; + int _arg1; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 2) || (items > 2)) + croak("Usage: icaltimetype_minute_set(struct icaltimetype *,int );"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"struct icaltimetypePtr")) { + croak("Type error in argument 1 of icaltimetype_minute_set. Expected struct icaltimetypePtr."); + XSRETURN(1); + } + _arg1 = (int )SvIV(ST(1)); + _result = (int )icaltimetype_minute_set(_arg0,_arg1); + ST(argvi) = sv_newmortal(); + sv_setiv(ST(argvi++),(IV) _result); + XSRETURN(argvi); +} + +#define icaltimetype_minute_get(_swigobj) ((int ) _swigobj->minute) +XS(_wrap_icaltimetype_minute_get) { + + int _result; + struct icaltimetype * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icaltimetype_minute_get(struct icaltimetype *);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"struct icaltimetypePtr")) { + croak("Type error in argument 1 of icaltimetype_minute_get. Expected struct icaltimetypePtr."); + XSRETURN(1); + } + _result = (int )icaltimetype_minute_get(_arg0); + ST(argvi) = sv_newmortal(); + sv_setiv(ST(argvi++),(IV) _result); + XSRETURN(argvi); +} + +#define icaltimetype_second_set(_swigobj,_swigval) (_swigobj->second = _swigval,_swigval) +XS(_wrap_icaltimetype_second_set) { + + int _result; + struct icaltimetype * _arg0; + int _arg1; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 2) || (items > 2)) + croak("Usage: icaltimetype_second_set(struct icaltimetype *,int );"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"struct icaltimetypePtr")) { + croak("Type error in argument 1 of icaltimetype_second_set. Expected struct icaltimetypePtr."); + XSRETURN(1); + } + _arg1 = (int )SvIV(ST(1)); + _result = (int )icaltimetype_second_set(_arg0,_arg1); + ST(argvi) = sv_newmortal(); + sv_setiv(ST(argvi++),(IV) _result); + XSRETURN(argvi); +} + +#define icaltimetype_second_get(_swigobj) ((int ) _swigobj->second) +XS(_wrap_icaltimetype_second_get) { + + int _result; + struct icaltimetype * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icaltimetype_second_get(struct icaltimetype *);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"struct icaltimetypePtr")) { + croak("Type error in argument 1 of icaltimetype_second_get. Expected struct icaltimetypePtr."); + XSRETURN(1); + } + _result = (int )icaltimetype_second_get(_arg0); + ST(argvi) = sv_newmortal(); + sv_setiv(ST(argvi++),(IV) _result); + XSRETURN(argvi); +} + +#define icaltimetype_is_utc_set(_swigobj,_swigval) (_swigobj->is_utc = _swigval,_swigval) +XS(_wrap_icaltimetype_is_utc_set) { + + int _result; + struct icaltimetype * _arg0; + int _arg1; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 2) || (items > 2)) + croak("Usage: icaltimetype_is_utc_set(struct icaltimetype *,int );"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"struct icaltimetypePtr")) { + croak("Type error in argument 1 of icaltimetype_is_utc_set. Expected struct icaltimetypePtr."); + XSRETURN(1); + } + _arg1 = (int )SvIV(ST(1)); + _result = (int )icaltimetype_is_utc_set(_arg0,_arg1); + ST(argvi) = sv_newmortal(); + sv_setiv(ST(argvi++),(IV) _result); + XSRETURN(argvi); +} + +#define icaltimetype_is_utc_get(_swigobj) ((int ) _swigobj->is_utc) +XS(_wrap_icaltimetype_is_utc_get) { + + int _result; + struct icaltimetype * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icaltimetype_is_utc_get(struct icaltimetype *);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"struct icaltimetypePtr")) { + croak("Type error in argument 1 of icaltimetype_is_utc_get. Expected struct icaltimetypePtr."); + XSRETURN(1); + } + _result = (int )icaltimetype_is_utc_get(_arg0); + ST(argvi) = sv_newmortal(); + sv_setiv(ST(argvi++),(IV) _result); + XSRETURN(argvi); +} + +#define icaltimetype_is_date_set(_swigobj,_swigval) (_swigobj->is_date = _swigval,_swigval) +XS(_wrap_icaltimetype_is_date_set) { + + int _result; + struct icaltimetype * _arg0; + int _arg1; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 2) || (items > 2)) + croak("Usage: icaltimetype_is_date_set(struct icaltimetype *,int );"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"struct icaltimetypePtr")) { + croak("Type error in argument 1 of icaltimetype_is_date_set. Expected struct icaltimetypePtr."); + XSRETURN(1); + } + _arg1 = (int )SvIV(ST(1)); + _result = (int )icaltimetype_is_date_set(_arg0,_arg1); + ST(argvi) = sv_newmortal(); + sv_setiv(ST(argvi++),(IV) _result); + XSRETURN(argvi); +} + +#define icaltimetype_is_date_get(_swigobj) ((int ) _swigobj->is_date) +XS(_wrap_icaltimetype_is_date_get) { + + int _result; + struct icaltimetype * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icaltimetype_is_date_get(struct icaltimetype *);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"struct icaltimetypePtr")) { + croak("Type error in argument 1 of icaltimetype_is_date_get. Expected struct icaltimetypePtr."); + XSRETURN(1); + } + _result = (int )icaltimetype_is_date_get(_arg0); + ST(argvi) = sv_newmortal(); + sv_setiv(ST(argvi++),(IV) _result); + XSRETURN(argvi); +} + +#define icaldurationtype_is_neg_set(_swigobj,_swigval) (_swigobj->is_neg = _swigval,_swigval) +XS(_wrap_icaldurationtype_is_neg_set) { + + int _result; + struct icaldurationtype * _arg0; + int _arg1; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 2) || (items > 2)) + croak("Usage: icaldurationtype_is_neg_set(struct icaldurationtype *,int );"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"struct icaldurationtypePtr")) { + croak("Type error in argument 1 of icaldurationtype_is_neg_set. Expected struct icaldurationtypePtr."); + XSRETURN(1); + } + _arg1 = (int )SvIV(ST(1)); + _result = (int )icaldurationtype_is_neg_set(_arg0,_arg1); + ST(argvi) = sv_newmortal(); + sv_setiv(ST(argvi++),(IV) _result); + XSRETURN(argvi); +} + +#define icaldurationtype_is_neg_get(_swigobj) ((int ) _swigobj->is_neg) +XS(_wrap_icaldurationtype_is_neg_get) { + + int _result; + struct icaldurationtype * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icaldurationtype_is_neg_get(struct icaldurationtype *);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"struct icaldurationtypePtr")) { + croak("Type error in argument 1 of icaldurationtype_is_neg_get. Expected struct icaldurationtypePtr."); + XSRETURN(1); + } + _result = (int )icaldurationtype_is_neg_get(_arg0); + ST(argvi) = sv_newmortal(); + sv_setiv(ST(argvi++),(IV) _result); + XSRETURN(argvi); +} + +#define icaldurationtype_days_set(_swigobj,_swigval) (_swigobj->days = _swigval,_swigval) +XS(_wrap_icaldurationtype_days_set) { + + unsigned int _result; + struct icaldurationtype * _arg0; + unsigned int _arg1; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 2) || (items > 2)) + croak("Usage: icaldurationtype_days_set(struct icaldurationtype *,unsigned int );"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"struct icaldurationtypePtr")) { + croak("Type error in argument 1 of icaldurationtype_days_set. Expected struct icaldurationtypePtr."); + XSRETURN(1); + } + _arg1 = (unsigned int )SvIV(ST(1)); + _result = (unsigned int )icaldurationtype_days_set(_arg0,_arg1); + ST(argvi) = sv_newmortal(); + sv_setiv(ST(argvi++),(IV) _result); + XSRETURN(argvi); +} + +#define icaldurationtype_days_get(_swigobj) ((unsigned int ) _swigobj->days) +XS(_wrap_icaldurationtype_days_get) { + + unsigned int _result; + struct icaldurationtype * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icaldurationtype_days_get(struct icaldurationtype *);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"struct icaldurationtypePtr")) { + croak("Type error in argument 1 of icaldurationtype_days_get. Expected struct icaldurationtypePtr."); + XSRETURN(1); + } + _result = (unsigned int )icaldurationtype_days_get(_arg0); + ST(argvi) = sv_newmortal(); + sv_setiv(ST(argvi++),(IV) _result); + XSRETURN(argvi); +} + +#define icaldurationtype_weeks_set(_swigobj,_swigval) (_swigobj->weeks = _swigval,_swigval) +XS(_wrap_icaldurationtype_weeks_set) { + + unsigned int _result; + struct icaldurationtype * _arg0; + unsigned int _arg1; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 2) || (items > 2)) + croak("Usage: icaldurationtype_weeks_set(struct icaldurationtype *,unsigned int );"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"struct icaldurationtypePtr")) { + croak("Type error in argument 1 of icaldurationtype_weeks_set. Expected struct icaldurationtypePtr."); + XSRETURN(1); + } + _arg1 = (unsigned int )SvIV(ST(1)); + _result = (unsigned int )icaldurationtype_weeks_set(_arg0,_arg1); + ST(argvi) = sv_newmortal(); + sv_setiv(ST(argvi++),(IV) _result); + XSRETURN(argvi); +} + +#define icaldurationtype_weeks_get(_swigobj) ((unsigned int ) _swigobj->weeks) +XS(_wrap_icaldurationtype_weeks_get) { + + unsigned int _result; + struct icaldurationtype * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icaldurationtype_weeks_get(struct icaldurationtype *);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"struct icaldurationtypePtr")) { + croak("Type error in argument 1 of icaldurationtype_weeks_get. Expected struct icaldurationtypePtr."); + XSRETURN(1); + } + _result = (unsigned int )icaldurationtype_weeks_get(_arg0); + ST(argvi) = sv_newmortal(); + sv_setiv(ST(argvi++),(IV) _result); + XSRETURN(argvi); +} + +#define icaldurationtype_hours_set(_swigobj,_swigval) (_swigobj->hours = _swigval,_swigval) +XS(_wrap_icaldurationtype_hours_set) { + + unsigned int _result; + struct icaldurationtype * _arg0; + unsigned int _arg1; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 2) || (items > 2)) + croak("Usage: icaldurationtype_hours_set(struct icaldurationtype *,unsigned int );"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"struct icaldurationtypePtr")) { + croak("Type error in argument 1 of icaldurationtype_hours_set. Expected struct icaldurationtypePtr."); + XSRETURN(1); + } + _arg1 = (unsigned int )SvIV(ST(1)); + _result = (unsigned int )icaldurationtype_hours_set(_arg0,_arg1); + ST(argvi) = sv_newmortal(); + sv_setiv(ST(argvi++),(IV) _result); + XSRETURN(argvi); +} + +#define icaldurationtype_hours_get(_swigobj) ((unsigned int ) _swigobj->hours) +XS(_wrap_icaldurationtype_hours_get) { + + unsigned int _result; + struct icaldurationtype * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icaldurationtype_hours_get(struct icaldurationtype *);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"struct icaldurationtypePtr")) { + croak("Type error in argument 1 of icaldurationtype_hours_get. Expected struct icaldurationtypePtr."); + XSRETURN(1); + } + _result = (unsigned int )icaldurationtype_hours_get(_arg0); + ST(argvi) = sv_newmortal(); + sv_setiv(ST(argvi++),(IV) _result); + XSRETURN(argvi); +} + +#define icaldurationtype_minutes_set(_swigobj,_swigval) (_swigobj->minutes = _swigval,_swigval) +XS(_wrap_icaldurationtype_minutes_set) { + + unsigned int _result; + struct icaldurationtype * _arg0; + unsigned int _arg1; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 2) || (items > 2)) + croak("Usage: icaldurationtype_minutes_set(struct icaldurationtype *,unsigned int );"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"struct icaldurationtypePtr")) { + croak("Type error in argument 1 of icaldurationtype_minutes_set. Expected struct icaldurationtypePtr."); + XSRETURN(1); + } + _arg1 = (unsigned int )SvIV(ST(1)); + _result = (unsigned int )icaldurationtype_minutes_set(_arg0,_arg1); + ST(argvi) = sv_newmortal(); + sv_setiv(ST(argvi++),(IV) _result); + XSRETURN(argvi); +} + +#define icaldurationtype_minutes_get(_swigobj) ((unsigned int ) _swigobj->minutes) +XS(_wrap_icaldurationtype_minutes_get) { + + unsigned int _result; + struct icaldurationtype * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icaldurationtype_minutes_get(struct icaldurationtype *);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"struct icaldurationtypePtr")) { + croak("Type error in argument 1 of icaldurationtype_minutes_get. Expected struct icaldurationtypePtr."); + XSRETURN(1); + } + _result = (unsigned int )icaldurationtype_minutes_get(_arg0); + ST(argvi) = sv_newmortal(); + sv_setiv(ST(argvi++),(IV) _result); + XSRETURN(argvi); +} + +#define icaldurationtype_seconds_set(_swigobj,_swigval) (_swigobj->seconds = _swigval,_swigval) +XS(_wrap_icaldurationtype_seconds_set) { + + unsigned int _result; + struct icaldurationtype * _arg0; + unsigned int _arg1; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 2) || (items > 2)) + croak("Usage: icaldurationtype_seconds_set(struct icaldurationtype *,unsigned int );"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"struct icaldurationtypePtr")) { + croak("Type error in argument 1 of icaldurationtype_seconds_set. Expected struct icaldurationtypePtr."); + XSRETURN(1); + } + _arg1 = (unsigned int )SvIV(ST(1)); + _result = (unsigned int )icaldurationtype_seconds_set(_arg0,_arg1); + ST(argvi) = sv_newmortal(); + sv_setiv(ST(argvi++),(IV) _result); + XSRETURN(argvi); +} + +#define icaldurationtype_seconds_get(_swigobj) ((unsigned int ) _swigobj->seconds) +XS(_wrap_icaldurationtype_seconds_get) { + + unsigned int _result; + struct icaldurationtype * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icaldurationtype_seconds_get(struct icaldurationtype *);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"struct icaldurationtypePtr")) { + croak("Type error in argument 1 of icaldurationtype_seconds_get. Expected struct icaldurationtypePtr."); + XSRETURN(1); + } + _result = (unsigned int )icaldurationtype_seconds_get(_arg0); + ST(argvi) = sv_newmortal(); + sv_setiv(ST(argvi++),(IV) _result); + XSRETURN(argvi); +} + +#define icalperiodtype_start_set(_swigobj,_swigval) (_swigobj->start = *(_swigval),_swigval) +XS(_wrap_icalperiodtype_start_set) { + + struct icaltimetype * _result; + struct icalperiodtype * _arg0; + struct icaltimetype * _arg1; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 2) || (items > 2)) + croak("Usage: icalperiodtype_start_set(struct icalperiodtype *,struct icaltimetype *);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"struct icalperiodtypePtr")) { + croak("Type error in argument 1 of icalperiodtype_start_set. Expected struct icalperiodtypePtr."); + XSRETURN(1); + } + if (SWIG_GetPtr(ST(1),(void **) &_arg1,"struct icaltimetypePtr")) { + croak("Type error in argument 2 of icalperiodtype_start_set. Expected struct icaltimetypePtr."); + XSRETURN(1); + } + _result = (struct icaltimetype *)icalperiodtype_start_set(_arg0,_arg1); + ST(argvi) = sv_newmortal(); + sv_setref_pv(ST(argvi++),"struct icaltimetypePtr", (void *) _result); + XSRETURN(argvi); +} + +#define icalperiodtype_start_get(_swigobj) (&_swigobj->start) +XS(_wrap_icalperiodtype_start_get) { + + struct icaltimetype * _result; + struct icalperiodtype * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icalperiodtype_start_get(struct icalperiodtype *);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"struct icalperiodtypePtr")) { + croak("Type error in argument 1 of icalperiodtype_start_get. Expected struct icalperiodtypePtr."); + XSRETURN(1); + } + _result = (struct icaltimetype *)icalperiodtype_start_get(_arg0); + ST(argvi) = sv_newmortal(); + sv_setref_pv(ST(argvi++),"struct icaltimetypePtr", (void *) _result); + XSRETURN(argvi); +} + +#define icalperiodtype_end_set(_swigobj,_swigval) (_swigobj->end = *(_swigval),_swigval) +XS(_wrap_icalperiodtype_end_set) { + + struct icaltimetype * _result; + struct icalperiodtype * _arg0; + struct icaltimetype * _arg1; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 2) || (items > 2)) + croak("Usage: icalperiodtype_end_set(struct icalperiodtype *,struct icaltimetype *);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"struct icalperiodtypePtr")) { + croak("Type error in argument 1 of icalperiodtype_end_set. Expected struct icalperiodtypePtr."); + XSRETURN(1); + } + if (SWIG_GetPtr(ST(1),(void **) &_arg1,"struct icaltimetypePtr")) { + croak("Type error in argument 2 of icalperiodtype_end_set. Expected struct icaltimetypePtr."); + XSRETURN(1); + } + _result = (struct icaltimetype *)icalperiodtype_end_set(_arg0,_arg1); + ST(argvi) = sv_newmortal(); + sv_setref_pv(ST(argvi++),"struct icaltimetypePtr", (void *) _result); + XSRETURN(argvi); +} + +#define icalperiodtype_end_get(_swigobj) (&_swigobj->end) +XS(_wrap_icalperiodtype_end_get) { + + struct icaltimetype * _result; + struct icalperiodtype * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icalperiodtype_end_get(struct icalperiodtype *);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"struct icalperiodtypePtr")) { + croak("Type error in argument 1 of icalperiodtype_end_get. Expected struct icalperiodtypePtr."); + XSRETURN(1); + } + _result = (struct icaltimetype *)icalperiodtype_end_get(_arg0); + ST(argvi) = sv_newmortal(); + sv_setref_pv(ST(argvi++),"struct icaltimetypePtr", (void *) _result); + XSRETURN(argvi); +} + +#define icalperiodtype_duration_set(_swigobj,_swigval) (_swigobj->duration = *(_swigval),_swigval) +XS(_wrap_icalperiodtype_duration_set) { + + struct icaldurationtype * _result; + struct icalperiodtype * _arg0; + struct icaldurationtype * _arg1; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 2) || (items > 2)) + croak("Usage: icalperiodtype_duration_set(struct icalperiodtype *,struct icaldurationtype *);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"struct icalperiodtypePtr")) { + croak("Type error in argument 1 of icalperiodtype_duration_set. Expected struct icalperiodtypePtr."); + XSRETURN(1); + } + if (SWIG_GetPtr(ST(1),(void **) &_arg1,"struct icaldurationtypePtr")) { + croak("Type error in argument 2 of icalperiodtype_duration_set. Expected struct icaldurationtypePtr."); + XSRETURN(1); + } + _result = (struct icaldurationtype *)icalperiodtype_duration_set(_arg0,_arg1); + ST(argvi) = sv_newmortal(); + sv_setref_pv(ST(argvi++),"struct icaldurationtypePtr", (void *) _result); + XSRETURN(argvi); +} + +#define icalperiodtype_duration_get(_swigobj) (&_swigobj->duration) +XS(_wrap_icalperiodtype_duration_get) { + + struct icaldurationtype * _result; + struct icalperiodtype * _arg0; + int argvi = 0; + dXSARGS ; + + cv = cv; + if ((items < 1) || (items > 1)) + croak("Usage: icalperiodtype_duration_get(struct icalperiodtype *);"); + if (SWIG_GetPtr(ST(0),(void **) &_arg0,"struct icalperiodtypePtr")) { + croak("Type error in argument 1 of icalperiodtype_duration_get. Expected struct icalperiodtypePtr."); + XSRETURN(1); + } + _result = (struct icaldurationtype *)icalperiodtype_duration_get(_arg0); + ST(argvi) = sv_newmortal(); + sv_setref_pv(ST(argvi++),"struct icaldurationtypePtr", (void *) _result); + XSRETURN(argvi); +} + +XS(_wrap_perl5_Net__ICal__Libical_var_init) { + dXSARGS; + SV *sv; + cv = cv; items = items; + swig_setiv("ICAL_BADARG_ERROR", (long) ICAL_BADARG_ERROR); + swig_setiv("ICAL_NEWFAILED_ERROR", (long) ICAL_NEWFAILED_ERROR); + swig_setiv("ICAL_MALFORMEDDATA_ERROR", (long) ICAL_MALFORMEDDATA_ERROR); + swig_setiv("ICAL_PARSE_ERROR", (long) ICAL_PARSE_ERROR); + swig_setiv("ICAL_INTERNAL_ERROR", (long) ICAL_INTERNAL_ERROR); + swig_setiv("ICAL_FILE_ERROR", (long) ICAL_FILE_ERROR); + swig_setiv("ICAL_ALLOCATION_ERROR", (long) ICAL_ALLOCATION_ERROR); + swig_setiv("ICAL_USAGE_ERROR", (long) ICAL_USAGE_ERROR); + swig_setiv("ICAL_NO_ERROR", (long) ICAL_NO_ERROR); + swig_setiv("ICAL_UNKNOWN_ERROR", (long) ICAL_UNKNOWN_ERROR); + swig_setiv("ICAL_ERROR_FATAL", (long) ICAL_ERROR_FATAL); + swig_setiv("ICAL_ERROR_NONFATAL", (long) ICAL_ERROR_NONFATAL); + swig_setiv("ICAL_ERROR_DEFAULT", (long) ICAL_ERROR_DEFAULT); + swig_setiv("ICAL_ERROR_UNKNOWN", (long) ICAL_ERROR_UNKNOWN); + swig_setpv("icaltimetype_zone", "icaltimetype::zone"); + XSRETURN(1); +} +#ifdef __cplusplus +extern "C" +#endif +XS(boot_Net__ICal__Libical) { + dXSARGS; + char *file = __FILE__; + cv = cv; items = items; + newXS("Net::ICal::Libical::var_Net__ICal__Libical_init", _wrap_perl5_Net__ICal__Libical_var_init, file); + newXS("Net::ICal::Libical::icalparser_parse_string", _wrap_icalparser_parse_string, file); + newXS("Net::ICal::Libical::icalcomponent_new", _wrap_icalcomponent_new, file); + newXS("Net::ICal::Libical::icalcomponent_new_clone", _wrap_icalcomponent_new_clone, file); + newXS("Net::ICal::Libical::icalcomponent_new_from_string", _wrap_icalcomponent_new_from_string, file); + newXS("Net::ICal::Libical::icalcomponent_as_ical_string", _wrap_icalcomponent_as_ical_string, file); + newXS("Net::ICal::Libical::icalcomponent_free", _wrap_icalcomponent_free, file); + newXS("Net::ICal::Libical::icalcomponent_count_errors", _wrap_icalcomponent_count_errors, file); + newXS("Net::ICal::Libical::icalcomponent_strip_errors", _wrap_icalcomponent_strip_errors, file); + newXS("Net::ICal::Libical::icalcomponent_convert_errors", _wrap_icalcomponent_convert_errors, file); + newXS("Net::ICal::Libical::icalcomponent_get_current_property", _wrap_icalcomponent_get_current_property, file); + newXS("Net::ICal::Libical::icalcomponent_get_first_property", _wrap_icalcomponent_get_first_property, file); + newXS("Net::ICal::Libical::icalcomponent_get_next_property", _wrap_icalcomponent_get_next_property, file); + newXS("Net::ICal::Libical::icalcomponent_get_current_component", _wrap_icalcomponent_get_current_component, file); + newXS("Net::ICal::Libical::icalcomponent_get_first_component", _wrap_icalcomponent_get_first_component, file); + newXS("Net::ICal::Libical::icalcomponent_get_next_component", _wrap_icalcomponent_get_next_component, file); + newXS("Net::ICal::Libical::icalcomponent_add_property", _wrap_icalcomponent_add_property, file); + newXS("Net::ICal::Libical::icalcomponent_remove_property", _wrap_icalcomponent_remove_property, file); + newXS("Net::ICal::Libical::icalcomponent_get_parent", _wrap_icalcomponent_get_parent, file); + newXS("Net::ICal::Libical::icalcomponent_isa", _wrap_icalcomponent_isa, file); + newXS("Net::ICal::Libical::icalrestriction_check", _wrap_icalrestriction_check, file); + newXS("Net::ICal::Libical::icalproperty_string_to_kind", _wrap_icalproperty_string_to_kind, file); + newXS("Net::ICal::Libical::icalproperty_new", _wrap_icalproperty_new, file); + newXS("Net::ICal::Libical::icalproperty_new_from_string", _wrap_icalproperty_new_from_string, file); + newXS("Net::ICal::Libical::icalproperty_as_ical_string", _wrap_icalproperty_as_ical_string, file); + newXS("Net::ICal::Libical::icalproperty_set_parameter_from_string", _wrap_icalproperty_set_parameter_from_string, file); + newXS("Net::ICal::Libical::icalproperty_set_value_from_string", _wrap_icalproperty_set_value_from_string, file); + newXS("Net::ICal::Libical::icalproperty_get_value_as_string", _wrap_icalproperty_get_value_as_string, file); + newXS("Net::ICal::Libical::icalproperty_get_parameter_as_string", _wrap_icalproperty_get_parameter_as_string, file); + newXS("Net::ICal::Libical::icalproperty_get_parent", _wrap_icalproperty_get_parent, file); + newXS("Net::ICal::Libical::icalerror_set_error_state", _wrap_icalerror_set_error_state, file); + newXS("Net::ICal::Libical::icalerror_get_error_state", _wrap_icalerror_get_error_state, file); + newXS("Net::ICal::Libical::icalenum_property_kind_to_string", _wrap_icalenum_property_kind_to_string, file); + newXS("Net::ICal::Libical::icalenum_string_to_property_kind", _wrap_icalenum_string_to_property_kind, file); + newXS("Net::ICal::Libical::icalenum_value_kind_to_string", _wrap_icalenum_value_kind_to_string, file); + newXS("Net::ICal::Libical::icalenum_parameter_kind_to_string", _wrap_icalenum_parameter_kind_to_string, file); + newXS("Net::ICal::Libical::icalenum_string_to_parameter_kind", _wrap_icalenum_string_to_parameter_kind, file); + newXS("Net::ICal::Libical::icalenum_component_kind_to_string", _wrap_icalenum_component_kind_to_string, file); + newXS("Net::ICal::Libical::icalenum_string_to_component_kind", _wrap_icalenum_string_to_component_kind, file); + newXS("Net::ICal::Libical::icalenum_property_kind_to_value_kind", _wrap_icalenum_property_kind_to_value_kind, file); + newXS("Net::ICal::Libical::icallangbind_new_array", _wrap_icallangbind_new_array, file); + newXS("Net::ICal::Libical::icallangbind_free_array", _wrap_icallangbind_free_array, file); + newXS("Net::ICal::Libical::icallangbind_access_array", _wrap_icallangbind_access_array, file); + newXS("Net::ICal::Libical::icalrecur_expand_recurrence", _wrap_icalrecur_expand_recurrence, file); + newXS("Net::ICal::Libical::icallangbind_get_first_property", _wrap_icallangbind_get_first_property, file); + newXS("Net::ICal::Libical::icallangbind_get_next_property", _wrap_icallangbind_get_next_property, file); + newXS("Net::ICal::Libical::icallangbind_get_first_component", _wrap_icallangbind_get_first_component, file); + newXS("Net::ICal::Libical::icallangbind_get_next_component", _wrap_icallangbind_get_next_component, file); + newXS("Net::ICal::Libical::icallangbind_property_eval_string", _wrap_icallangbind_property_eval_string, file); + newXS("Net::ICal::Libical::icaltime_from_timet", _wrap_icaltime_from_timet, file); + newXS("Net::ICal::Libical::icaltime_as_timet", _wrap_icaltime_as_timet, file); + newXS("Net::ICal::Libical::icaltime_as_ical_string", _wrap_icaltime_as_ical_string, file); + newXS("Net::ICal::Libical::icaltime_from_string", _wrap_icaltime_from_string, file); + newXS("Net::ICal::Libical::icaltime_utc_offset", _wrap_icaltime_utc_offset, file); + newXS("Net::ICal::Libical::icaltime_as_utc", _wrap_icaltime_as_utc, file); + newXS("Net::ICal::Libical::icaltime_as_zone", _wrap_icaltime_as_zone, file); + newXS("Net::ICal::Libical::icaltime_null_time", _wrap_icaltime_null_time, file); + newXS("Net::ICal::Libical::icaltime_is_null_time", _wrap_icaltime_is_null_time, file); + newXS("Net::ICal::Libical::icaltime_is_valid_time", _wrap_icaltime_is_valid_time, file); + newXS("Net::ICal::Libical::icaltime_normalize", _wrap_icaltime_normalize, file); + newXS("Net::ICal::Libical::icaltime_day_of_year", _wrap_icaltime_day_of_year, file); + newXS("Net::ICal::Libical::icaltime_from_day_of_year", _wrap_icaltime_from_day_of_year, file); + newXS("Net::ICal::Libical::icaltime_day_of_week", _wrap_icaltime_day_of_week, file); + newXS("Net::ICal::Libical::icaltime_start_doy_of_week", _wrap_icaltime_start_doy_of_week, file); + newXS("Net::ICal::Libical::icaltime_as_ctime", _wrap_icaltime_as_ctime, file); + newXS("Net::ICal::Libical::icaltime_week_number", _wrap_icaltime_week_number, file); + newXS("Net::ICal::Libical::icaltime_compare", _wrap_icaltime_compare, file); + newXS("Net::ICal::Libical::icaltime_compare_date_only", _wrap_icaltime_compare_date_only, file); + newXS("Net::ICal::Libical::icaltime_days_in_month", _wrap_icaltime_days_in_month, file); + newXS("Net::ICal::Libical::icaldurationtype_from_int", _wrap_icaldurationtype_from_int, file); + newXS("Net::ICal::Libical::icaldurationtype_from_string", _wrap_icaldurationtype_from_string, file); + newXS("Net::ICal::Libical::icaldurationtype_as_int", _wrap_icaldurationtype_as_int, file); + newXS("Net::ICal::Libical::icaldurationtype_as_ical_string", _wrap_icaldurationtype_as_ical_string, file); + newXS("Net::ICal::Libical::icaldurationtype_null_duration", _wrap_icaldurationtype_null_duration, file); + newXS("Net::ICal::Libical::icaldurationtype_is_null_duration", _wrap_icaldurationtype_is_null_duration, file); + newXS("Net::ICal::Libical::icaltime_add", _wrap_icaltime_add, file); + newXS("Net::ICal::Libical::icaltime_subtract", _wrap_icaltime_subtract, file); + newXS("Net::ICal::Libical::icalperiodtype_from_string", _wrap_icalperiodtype_from_string, file); + newXS("Net::ICal::Libical::icalperiodtype_as_ical_string", _wrap_icalperiodtype_as_ical_string, file); + newXS("Net::ICal::Libical::icalperiodtype_null_period", _wrap_icalperiodtype_null_period, file); + newXS("Net::ICal::Libical::icalperiodtype_is_null_period", _wrap_icalperiodtype_is_null_period, file); + newXS("Net::ICal::Libical::icalperiodtype_is_valid_period", _wrap_icalperiodtype_is_valid_period, file); + newXS("Net::ICal::Libical::icaltimetype_year_set", _wrap_icaltimetype_year_set, file); + newXS("Net::ICal::Libical::icaltimetype_year_get", _wrap_icaltimetype_year_get, file); + newXS("Net::ICal::Libical::icaltimetype_month_set", _wrap_icaltimetype_month_set, file); + newXS("Net::ICal::Libical::icaltimetype_month_get", _wrap_icaltimetype_month_get, file); + newXS("Net::ICal::Libical::icaltimetype_day_set", _wrap_icaltimetype_day_set, file); + newXS("Net::ICal::Libical::icaltimetype_day_get", _wrap_icaltimetype_day_get, file); + newXS("Net::ICal::Libical::icaltimetype_hour_set", _wrap_icaltimetype_hour_set, file); + newXS("Net::ICal::Libical::icaltimetype_hour_get", _wrap_icaltimetype_hour_get, file); + newXS("Net::ICal::Libical::icaltimetype_minute_set", _wrap_icaltimetype_minute_set, file); + newXS("Net::ICal::Libical::icaltimetype_minute_get", _wrap_icaltimetype_minute_get, file); + newXS("Net::ICal::Libical::icaltimetype_second_set", _wrap_icaltimetype_second_set, file); + newXS("Net::ICal::Libical::icaltimetype_second_get", _wrap_icaltimetype_second_get, file); + newXS("Net::ICal::Libical::icaltimetype_is_utc_set", _wrap_icaltimetype_is_utc_set, file); + newXS("Net::ICal::Libical::icaltimetype_is_utc_get", _wrap_icaltimetype_is_utc_get, file); + newXS("Net::ICal::Libical::icaltimetype_is_date_set", _wrap_icaltimetype_is_date_set, file); + newXS("Net::ICal::Libical::icaltimetype_is_date_get", _wrap_icaltimetype_is_date_get, file); + newXS("Net::ICal::Libical::icaldurationtype_is_neg_set", _wrap_icaldurationtype_is_neg_set, file); + newXS("Net::ICal::Libical::icaldurationtype_is_neg_get", _wrap_icaldurationtype_is_neg_get, file); + newXS("Net::ICal::Libical::icaldurationtype_days_set", _wrap_icaldurationtype_days_set, file); + newXS("Net::ICal::Libical::icaldurationtype_days_get", _wrap_icaldurationtype_days_get, file); + newXS("Net::ICal::Libical::icaldurationtype_weeks_set", _wrap_icaldurationtype_weeks_set, file); + newXS("Net::ICal::Libical::icaldurationtype_weeks_get", _wrap_icaldurationtype_weeks_get, file); + newXS("Net::ICal::Libical::icaldurationtype_hours_set", _wrap_icaldurationtype_hours_set, file); + newXS("Net::ICal::Libical::icaldurationtype_hours_get", _wrap_icaldurationtype_hours_get, file); + newXS("Net::ICal::Libical::icaldurationtype_minutes_set", _wrap_icaldurationtype_minutes_set, file); + newXS("Net::ICal::Libical::icaldurationtype_minutes_get", _wrap_icaldurationtype_minutes_get, file); + newXS("Net::ICal::Libical::icaldurationtype_seconds_set", _wrap_icaldurationtype_seconds_set, file); + newXS("Net::ICal::Libical::icaldurationtype_seconds_get", _wrap_icaldurationtype_seconds_get, file); + newXS("Net::ICal::Libical::icalperiodtype_start_set", _wrap_icalperiodtype_start_set, file); + newXS("Net::ICal::Libical::icalperiodtype_start_get", _wrap_icalperiodtype_start_get, file); + newXS("Net::ICal::Libical::icalperiodtype_end_set", _wrap_icalperiodtype_end_set, file); + newXS("Net::ICal::Libical::icalperiodtype_end_get", _wrap_icalperiodtype_end_get, file); + newXS("Net::ICal::Libical::icalperiodtype_duration_set", _wrap_icalperiodtype_duration_set, file); + newXS("Net::ICal::Libical::icalperiodtype_duration_get", _wrap_icalperiodtype_duration_get, file); +/* + * These are the pointer type-equivalency mappings. + * (Used by the SWIG pointer type-checker). + */ + SWIG_RegisterMapping("unsigned short","short",0); + SWIG_RegisterMapping("struct icaldurationtype","icaldurationtype",0); + SWIG_RegisterMapping("icalperiodtype","struct icalperiodtype",0); + SWIG_RegisterMapping("long","unsigned long",0); + SWIG_RegisterMapping("long","signed long",0); + SWIG_RegisterMapping("struct icaltimetype","icaltimetype",0); + SWIG_RegisterMapping("icaldurationtype","struct icaldurationtype",0); + SWIG_RegisterMapping("signed short","short",0); + SWIG_RegisterMapping("struct icalperiodtype","icalperiodtype",0); + SWIG_RegisterMapping("signed int","int",0); + SWIG_RegisterMapping("short","unsigned short",0); + SWIG_RegisterMapping("short","signed short",0); + SWIG_RegisterMapping("unsigned long","long",0); + SWIG_RegisterMapping("int","unsigned int",0); + SWIG_RegisterMapping("int","signed int",0); + SWIG_RegisterMapping("unsigned int","int",0); + SWIG_RegisterMapping("icaltimetype","struct icaltimetype",0); + SWIG_RegisterMapping("signed long","long",0); + ST(0) = &sv_yes; + XSRETURN(1); +} diff --git a/libical/src/Net-ICal-Libical/netical_wrap.doc b/libical/src/Net-ICal-Libical/netical_wrap.doc new file mode 100644 index 0000000000..41616c00da --- /dev/null +++ b/libical/src/Net-ICal-Libical/netical_wrap.doc @@ -0,0 +1,393 @@ +netical_wrap.c + +[ Module : Net__ICal__Libical, Package : Net::ICal::Libical ] + + +icalparser_parse_string(str); + [ returns icalcomponent * ] + +icalcomponent_new(kind); + [ returns icalcomponent * ] + +icalcomponent_new_clone(component); + [ returns icalcomponent * ] + +icalcomponent_new_from_string(str); + [ returns icalcomponent * ] + +icalcomponent_as_ical_string(component); + [ returns char * ] + +icalcomponent_free(component); + [ returns void ] + +icalcomponent_count_errors(component); + [ returns int ] + +icalcomponent_strip_errors(component); + [ returns void ] + +icalcomponent_convert_errors(component); + [ returns void ] + +icalcomponent_get_current_property(component); + [ returns icalproperty * ] + +icalcomponent_get_first_property(component,kind); + [ returns icalproperty * ] + +icalcomponent_get_next_property(component,kind); + [ returns icalproperty * ] + +icalcomponent_get_current_component(component); + [ returns icalcomponent * ] + +icalcomponent_get_first_component(component,kind); + [ returns icalcomponent * ] + +icalcomponent_get_next_component(component,kind); + [ returns icalcomponent * ] + +icalcomponent_add_property(component,property); + [ returns void ] + +icalcomponent_remove_property(component,property); + [ returns void ] + +icalcomponent_get_parent(component); + [ returns icalcomponent * ] + +icalcomponent_isa(component); + [ returns icalcomponent_kind ] + +icalrestriction_check(comp); + [ returns int ] + +icalproperty_string_to_kind(string); + [ returns int ] + +icalproperty_new(kind); + [ returns icalproperty * ] + +icalproperty_new_from_string(str); + [ returns icalproperty * ] + +icalproperty_as_ical_string(prop); + [ returns char * ] + +icalproperty_set_parameter_from_string(prop,name,value); + [ returns void ] + +icalproperty_set_value_from_string(prop,value,kind); + [ returns void ] + +icalproperty_get_value_as_string(prop); + [ returns char * ] + +icalproperty_get_parameter_as_string(prop,name); + [ returns char * ] + +icalproperty_get_parent(property); + [ returns icalcomponent * ] + +$ICAL_BADARG_ERROR = ICAL_BADARG_ERROR + [ Constant: int ] + +$ICAL_NEWFAILED_ERROR = ICAL_NEWFAILED_ERROR + [ Constant: int ] + +$ICAL_MALFORMEDDATA_ERROR = ICAL_MALFORMEDDATA_ERROR + [ Constant: int ] + +$ICAL_PARSE_ERROR = ICAL_PARSE_ERROR + [ Constant: int ] + +$ICAL_INTERNAL_ERROR = ICAL_INTERNAL_ERROR + [ Constant: int ] + Like assert --internal consist. prob + +$ICAL_FILE_ERROR = ICAL_FILE_ERROR + [ Constant: int ] + +$ICAL_ALLOCATION_ERROR = ICAL_ALLOCATION_ERROR + [ Constant: int ] + +$ICAL_USAGE_ERROR = ICAL_USAGE_ERROR + [ Constant: int ] + +$ICAL_NO_ERROR = ICAL_NO_ERROR + [ Constant: int ] + Used for problems in input to icalerror_strerror() + +$ICAL_UNKNOWN_ERROR = ICAL_UNKNOWN_ERROR + [ Constant: int ] + +$ICAL_ERROR_FATAL = ICAL_ERROR_FATAL + [ Constant: int ] + Not fata + +$ICAL_ERROR_NONFATAL = ICAL_ERROR_NONFATAL + [ Constant: int ] + Fatal + +$ICAL_ERROR_DEFAULT = ICAL_ERROR_DEFAULT + [ Constant: int ] + Use the value of icalerror_errors_are_fatal Asked state for an unknown + error type + +$ICAL_ERROR_UNKNOWN = ICAL_ERROR_UNKNOWN + [ Constant: int ] + +icalerror_set_error_state(error,icalerrorstate ); + [ returns void ] + +icalerror_get_error_state(error); + [ returns icalerrorstate ] + +icalenum_property_kind_to_string(kind); + [ returns char * ] + +icalenum_string_to_property_kind(string); + [ returns icalproperty_kind ] + +icalenum_value_kind_to_string(kind); + [ returns char * ] + icalvalue_kind icalenum_value_kind_by_prop(icalproperty_kind kind); + + +icalenum_parameter_kind_to_string(kind); + [ returns char * ] + +icalenum_string_to_parameter_kind(string); + [ returns icalparameter_kind ] + +icalenum_component_kind_to_string(kind); + [ returns char * ] + +icalenum_string_to_component_kind(string); + [ returns icalcomponent_kind ] + +icalenum_property_kind_to_value_kind(kind); + [ returns icalvalue_kind ] + +icallangbind_new_array(size); + [ returns int * ] + +icallangbind_free_array(array); + [ returns void ] + +icallangbind_access_array(array,index); + [ returns int ] + +icalrecur_expand_recurrence(rule,start,count,array); + [ returns int ] + +icallangbind_get_first_property(c,prop); + [ returns icalproperty * ] + +icallangbind_get_next_property(c,prop); + [ returns icalproperty * ] + +icallangbind_get_first_component(c,comp); + [ returns icalcomponent * ] + +icallangbind_get_next_component(c,comp); + [ returns icalcomponent * ] + +icallangbind_property_eval_string(prop,sep); + [ returns char * ] + +1. class icaltimetype +====================== +[ created from struct icaltimetype ] + + +icaltimetype_year_set(struct icaltimetype *,int ); +icaltimetype_year_get(struct icaltimetype *); + [ Member data: returns int ] + +icaltimetype_month_set(struct icaltimetype *,int ); +icaltimetype_month_get(struct icaltimetype *); + [ Member data: returns int ] + +icaltimetype_day_set(struct icaltimetype *,int ); +icaltimetype_day_get(struct icaltimetype *); + [ Member data: returns int ] + +icaltimetype_hour_set(struct icaltimetype *,int ); +icaltimetype_hour_get(struct icaltimetype *); + [ Member data: returns int ] + +icaltimetype_minute_set(struct icaltimetype *,int ); +icaltimetype_minute_get(struct icaltimetype *); + [ Member data: returns int ] + +icaltimetype_second_set(struct icaltimetype *,int ); +icaltimetype_second_get(struct icaltimetype *); + [ Member data: returns int ] + +icaltimetype_is_utc_set(struct icaltimetype *,int ); +icaltimetype_is_utc_get(struct icaltimetype *); + [ Member data: returns int ] + 1-> time is in UTC timezone + +icaltimetype_is_date_set(struct icaltimetype *,int ); +icaltimetype_is_date_get(struct icaltimetype *); + [ Member data: returns int ] + 1 -> interpret this as date. + +$icaltimetype_zone = icaltimetype::zone + [ Constant: char * ] + Ptr to Olsen placename. Libical does not own mem + +---------- + +icaltime_from_timet(v,is_date); + [ returns struct icaltimetype ] + +icaltime_as_timet(struct icaltimetype *); + [ returns int ] + +icaltime_as_ical_string(tt); + [ returns char * ] + +icaltime_from_string(str); + [ returns struct icaltimetype ] + +icaltime_utc_offset(tt,tzid); + [ returns int ] + +icaltime_as_utc(tt,tzid); + [ returns struct icaltimetype ] + +icaltime_as_zone(tt,tzid); + [ returns struct icaltimetype ] + +icaltime_null_time(); + [ returns struct icaltimetype ] + +icaltime_is_null_time(t); + [ returns int ] + +icaltime_is_valid_time(t); + [ returns int ] + +icaltime_normalize(t); + [ returns struct icaltimetype ] + +icaltime_day_of_year(t); + [ returns short ] + +icaltime_from_day_of_year(doy,year); + [ returns struct icaltimetype ] + +icaltime_day_of_week(t); + [ returns short ] + +icaltime_start_doy_of_week(t); + [ returns short ] + +icaltime_as_ctime(struct icaltimetype *); + [ returns char * ] + +icaltime_week_number(t); + [ returns short ] + +icaltime_compare(a,b); + [ returns int ] + +icaltime_compare_date_only(a,b); + [ returns int ] + +icaltime_days_in_month(month,year); + [ returns short ] + +2. class icaldurationtype +========================== +[ created from struct icaldurationtype ] + + +icaldurationtype_is_neg_set(struct icaldurationtype *,int ); +icaldurationtype_is_neg_get(struct icaldurationtype *); + [ Member data: returns int ] + +icaldurationtype_days_set(struct icaldurationtype *,unsigned int ); +icaldurationtype_days_get(struct icaldurationtype *); + [ Member data: returns unsigned int ] + +icaldurationtype_weeks_set(struct icaldurationtype *,unsigned int ); +icaldurationtype_weeks_get(struct icaldurationtype *); + [ Member data: returns unsigned int ] + +icaldurationtype_hours_set(struct icaldurationtype *,unsigned int ); +icaldurationtype_hours_get(struct icaldurationtype *); + [ Member data: returns unsigned int ] + +icaldurationtype_minutes_set(struct icaldurationtype *,unsigned int ); +icaldurationtype_minutes_get(struct icaldurationtype *); + [ Member data: returns unsigned int ] + +icaldurationtype_seconds_set(struct icaldurationtype *,unsigned int ); +icaldurationtype_seconds_get(struct icaldurationtype *); + [ Member data: returns unsigned int ] + +---------- + +icaldurationtype_from_int(t); + [ returns struct icaldurationtype ] + +icaldurationtype_from_string(char *); + [ returns struct icaldurationtype ] + +icaldurationtype_as_int(duration); + [ returns int ] + +icaldurationtype_as_ical_string(d); + [ returns char * ] + +icaldurationtype_null_duration(); + [ returns struct icaldurationtype ] + +icaldurationtype_is_null_duration(d); + [ returns int ] + +icaltime_add(t,d); + [ returns struct icaltimetype ] + +icaltime_subtract(t1,t2); + [ returns struct icaldurationtype ] + +3. class icalperiodtype +======================== +[ created from struct icalperiodtype ] + + +icalperiodtype_start_set(struct icalperiodtype *,struct icaltimetype *); +icalperiodtype_start_get(struct icalperiodtype *); + [ Member data: returns struct icaltimetype * ] + +icalperiodtype_end_set(struct icalperiodtype *,struct icaltimetype *); +icalperiodtype_end_get(struct icalperiodtype *); + [ Member data: returns struct icaltimetype * ] + +icalperiodtype_duration_set(struct icalperiodtype *,struct icaldurationtype *); +icalperiodtype_duration_get(struct icalperiodtype *); + [ Member data: returns struct icaldurationtype * ] + +---------- + +icalperiodtype_from_string(str); + [ returns struct icalperiodtype ] + +icalperiodtype_as_ical_string(p); + [ returns char * ] + +icalperiodtype_null_period(); + [ returns struct icalperiodtype ] + +icalperiodtype_is_null_period(p); + [ returns int ] + +icalperiodtype_is_valid_period(p); + [ returns int ] + diff --git a/libical/src/Net-ICal-Libical/test-data/2446.mime b/libical/src/Net-ICal-Libical/test-data/2446.mime new file mode 100644 index 0000000000..919bfc423f --- /dev/null +++ b/libical/src/Net-ICal-Libical/test-data/2446.mime @@ -0,0 +1,3426 @@ +From eric@busboom.org Wed Jan 26 21:46:04 2000 +Content-Type: multipart/mixed; boundary="----------=_948951964-26278-0" +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) +From: eric@busboom.org +To: alice +Subject: Hello, nurse! + +This is a multi-part message in MIME format... + +------------=_948951964-26278-0 +Content-Type: text/plain +Content-Disposition: inline + +Hey! Come to the meeting! +------------=_948951964-26278-0 +Content-Type: text/calendar; method=PUBLISH; charset=US-ASCII +Content-Disposition: inline +Content-Transfer-Encoding: 7bit +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) + +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 + +------------=_948951964-26278-0-- + + +From eric@busboom.org Wed Jan 26 21:46:04 2000 +Content-Type: multipart/mixed; boundary="----------=_948951964-26278-1" +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) +From: eric@busboom.org +To: alice +Subject: Hello, nurse! + +This is a multi-part message in MIME format... + +------------=_948951964-26278-1 +Content-Type: text/plain +Content-Disposition: inline + +Hey! Come to the meeting! +------------=_948951964-26278-1 +Content-Type: text/calendar; method=PUBLISH; charset=US-ASCII +Content-Disposition: inline +Content-Transfer-Encoding: 7bit +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) + +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 + +------------=_948951964-26278-1-- + + +From eric@busboom.org Wed Jan 26 21:46:04 2000 +Content-Type: multipart/mixed; boundary="----------=_948951964-26278-2" +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) +From: eric@busboom.org +To: alice +Subject: Hello, nurse! + +This is a multi-part message in MIME format... + +------------=_948951964-26278-2 +Content-Type: text/plain +Content-Disposition: inline + +Hey! Come to the meeting! +------------=_948951964-26278-2 +Content-Type: text/calendar; method=CANCEL; charset=US-ASCII +Content-Disposition: inline +Content-Transfer-Encoding: 7bit +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) + +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 + +------------=_948951964-26278-2-- + + +From eric@busboom.org Wed Jan 26 21:46:04 2000 +Content-Type: multipart/mixed; boundary="----------=_948951964-26278-3" +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) +From: eric@busboom.org +To: alice +Subject: Hello, nurse! + +This is a multi-part message in MIME format... + +------------=_948951964-26278-3 +Content-Type: text/plain +Content-Disposition: inline + +Hey! Come to the meeting! +------------=_948951964-26278-3 +Content-Type: text/calendar; method=PUBLISH; charset=US-ASCII +Content-Disposition: inline +Content-Transfer-Encoding: 7bit +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) + +BEGIN:VCALENDAR +PRODID + :-//ACME/DesktopCalendar//EN +METHOD + :PUBLISH +X-LIC-ERROR + ;X-LIC-ERRORTYPE=PROPERTY_PARSE_ERROR + :Parse error in property name: 'SCALE' +VERSION + :2.0 +BEGIN:VTIMEZONE +TZID + :America-Chicago +TZURL + :http://zones.stds_r_us.net/tz/America-Chicago +BEGIN:STANDARD +DTSTART + :19671029T020000 +X-LIC-ERROR + ;X-LIC-ERRORTYPE=VALUE_PARSE_ERROR + :Can't parse as RECUR value in RRULE property. Removing entire property: + 'FREQ=YEARLY\;BYDAY=-1SU\;BYMONTH=10' +TZOFFSETFROM + :-050000 +TZOFFSETTO + :-060000 +TZNAME + :CST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART + :19870405T020000 +X-LIC-ERROR + ;X-LIC-ERRORTYPE=VALUE_PARSE_ERROR + :Can't parse as RECUR value in RRULE property. Removing entire property: + 'FREQ=YEARLY\;BYDAY=1SU\;BYMONTH=4' +TZOFFSETFROM + :-060000 +TZOFFSETTO + :-050000 +TZNAME + :CDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER + :mailto:a@example.com +ATTACH + :http://www.dukes.com/ +CATEGORIES + :SPORTS EVENT +CATEGORIES + :ENTERTAINMENT +CLASS + :PRIVATE +DESCRIPTION + :MIDWAY STADIUM\nBig time game. MUST see.\nExpected duration:2 hours\n +DTEND + ;TZID=America-Chicago + :19970701T180000 +DTSTART + ;TZID=America-Chicago + :19970702T160000 +DTSTAMP + :19970614T190000Z +STATUS + :CONFIRMED +LOCATION + ;VALUE=America-Chicago + :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 + +------------=_948951964-26278-3-- + + +From eric@busboom.org Wed Jan 26 21:46:04 2000 +Content-Type: multipart/mixed; boundary="----------=_948951964-26278-4" +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) +From: eric@busboom.org +To: alice +Subject: Hello, nurse! + +This is a multi-part message in MIME format... + +------------=_948951964-26278-4 +Content-Type: text/plain +Content-Disposition: inline + +Hey! Come to the meeting! +------------=_948951964-26278-4 +Content-Type: text/calendar; method=PUBLISH; charset=US-ASCII +Content-Disposition: inline +Content-Transfer-Encoding: 7bit +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) + +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 +X-LIC-ERROR + ;X-LIC-ERRORTYPE=VALUE_PARSE_ERROR + :Can't parse as RECUR value in RRULE property. Removing entire property: + 'FREQ=YEARLY\;INTERVAL=1' +SUMMARY + : Bastille Day +END:VEVENT +END:VCALENDAR + +------------=_948951964-26278-4-- + + +From eric@busboom.org Wed Jan 26 21:46:04 2000 +Content-Type: multipart/mixed; boundary="----------=_948951964-26278-5" +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) +From: eric@busboom.org +To: alice +Subject: Hello, nurse! + +This is a multi-part message in MIME format... + +------------=_948951964-26278-5 +Content-Type: text/plain +Content-Disposition: inline + +Hey! Come to the meeting! +------------=_948951964-26278-5 +Content-Type: text/calendar; method=REQUEST; charset=US-ASCII +Content-Disposition: inline +Content-Transfer-Encoding: 7bit +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) + +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 + ;CN=B + :Mailto:B@example.com +X-LIC-ERROR + ;X-LIC-ERRORTYPE=PARAMETER_PARSE_ERROR + :Can't parse parameter name: 'TYPE=INDIVIDUAL' +ATTENDEE + ;RSVP=TRUE + ;CN=C + :Mailto:C@example.com +X-LIC-ERROR + ;X-LIC-ERRORTYPE=PARAMETER_PARSE_ERROR + :Can't parse parameter name: 'TYPE=INDIVIDUAL' +ATTENDEE + ;RSVP=TRUE + ;CN=Hal + :Mailto:D@example.com +X-LIC-ERROR + ;X-LIC-ERRORTYPE=PARAMETER_PARSE_ERROR + :Can't parse parameter name: 'TYPE=INDIVIDUAL' +ATTENDEE + ;RSVP=FALSE + :conf_Big@example.com +X-LIC-ERROR + ;X-LIC-ERRORTYPE=PARAMETER_PARSE_ERROR + :Can't parse parameter name: 'TYPE=ROOM' +ATTENDEE + ;ROLE=NON-PARTICIPANT + ;RSVP=FALSE + :Mailto:E@example.com +DTSTAMP + :19970611T190000Z +DTSTART + :19970701T200000Z +DTEND + :19970701T200000Z +SUMMARY + :Conference +UID + :calsrv.example.com-873970198738777@example.com +SEQUENCE + :0 +STATUS + :CONFIRMED +END:VEVENT +END:VCALENDAR + +------------=_948951964-26278-5-- + + +From eric@busboom.org Wed Jan 26 21:46:04 2000 +Content-Type: multipart/mixed; boundary="----------=_948951964-26278-6" +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) +From: eric@busboom.org +To: alice +Subject: Hello, nurse! + +This is a multi-part message in MIME format... + +------------=_948951964-26278-6 +Content-Type: text/plain +Content-Disposition: inline + +Hey! Come to the meeting! +------------=_948951964-26278-6 +Content-Type: text/calendar; method=REPLY; charset=US-ASCII +Content-Disposition: inline +Content-Transfer-Encoding: 7bit +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) + +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 + +------------=_948951964-26278-6-- + + +From eric@busboom.org Wed Jan 26 21:46:05 2000 +Content-Type: multipart/mixed; boundary="----------=_948951964-26278-7" +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) +From: eric@busboom.org +To: alice +Subject: Hello, nurse! + +This is a multi-part message in MIME format... + +------------=_948951964-26278-7 +Content-Type: text/plain +Content-Disposition: inline + +Hey! Come to the meeting! +------------=_948951964-26278-7 +Content-Type: text/calendar; method=REQUEST; charset=US-ASCII +Content-Disposition: inline +Content-Transfer-Encoding: 7bit +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) + +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 + :Mailto:B@example.com +X-LIC-ERROR + ;X-LIC-ERRORTYPE=PARAMETER_PARSE_ERROR + :Can't parse parameter name: 'TYPE=INDIVIDUAL' +ATTENDEE + ;RSVP=TRUE + :Mailto:C@example.com +X-LIC-ERROR + ;X-LIC-ERRORTYPE=PARAMETER_PARSE_ERROR + :Can't parse parameter name: 'TYPE=INDIVIDUAL' +ATTENDEE + ;RSVP=TRUE + ;CN=Hal + :Mailto:D@example.com +X-LIC-ERROR + ;X-LIC-ERRORTYPE=PARAMETER_PARSE_ERROR + :Can't parse parameter name: 'TYPE=INDIVIDUAL' +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 + +------------=_948951964-26278-7-- + + +From eric@busboom.org Wed Jan 26 21:46:05 2000 +Content-Type: multipart/mixed; boundary="----------=_948951964-26278-8" +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) +From: eric@busboom.org +To: alice +Subject: Hello, nurse! + +This is a multi-part message in MIME format... + +------------=_948951964-26278-8 +Content-Type: text/plain +Content-Disposition: inline + +Hey! Come to the meeting! +------------=_948951964-26278-8 +Content-Type: text/calendar; method=REQUEST; charset=US-ASCII +Content-Disposition: inline +Content-Transfer-Encoding: 7bit +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) + +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 + :Mailto:B@example.com +X-LIC-ERROR + ;X-LIC-ERRORTYPE=PARAMETER_PARSE_ERROR + :Can't parse parameter name: 'TYPE=INDIVIDUAL' +ATTENDEE + ;RSVP=TRUE + :Mailto:C@example.com +X-LIC-ERROR + ;X-LIC-ERRORTYPE=PARAMETER_PARSE_ERROR + :Can't parse parameter name: 'TYPE=INDIVIDUAL' +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 + +------------=_948951964-26278-8-- + + +From eric@busboom.org Wed Jan 26 21:46:05 2000 +Content-Type: multipart/mixed; boundary="----------=_948951965-26278-9" +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) +From: eric@busboom.org +To: alice +Subject: Hello, nurse! + +This is a multi-part message in MIME format... + +------------=_948951965-26278-9 +Content-Type: text/plain +Content-Disposition: inline + +Hey! Come to the meeting! +------------=_948951965-26278-9 +Content-Type: text/calendar; method=COUNTER; charset=US-ASCII +Content-Disposition: inline +Content-Transfer-Encoding: 7bit +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) + +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 + :Mailto:B@example.com +X-LIC-ERROR + ;X-LIC-ERRORTYPE=PARAMETER_PARSE_ERROR + :Can't parse parameter name: 'TYPE=INDIVIDUAL' +ATTENDEE + ;RSVP=TRUE + :Mailto:C@example.com +X-LIC-ERROR + ;X-LIC-ERRORTYPE=PARAMETER_PARSE_ERROR + :Can't parse parameter name: 'TYPE=INDIVIDUAL' +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 +DTSTAMP + :19970611T190000Z +END:VEVENT +END:VCALENDAR + +------------=_948951965-26278-9-- + + +From eric@busboom.org Wed Jan 26 21:46:05 2000 +Content-Type: multipart/mixed; boundary="----------=_948951965-26278-10" +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) +From: eric@busboom.org +To: alice +Subject: Hello, nurse! + +This is a multi-part message in MIME format... + +------------=_948951965-26278-10 +Content-Type: text/plain +Content-Disposition: inline + +Hey! Come to the meeting! +------------=_948951965-26278-10 +Content-Type: text/calendar; method=REQUEST; charset=US-ASCII +Content-Disposition: inline +Content-Transfer-Encoding: 7bit +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) + +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 + :Mailto:B@example.com +X-LIC-ERROR + ;X-LIC-ERRORTYPE=PARAMETER_PARSE_ERROR + :Can't parse parameter name: 'TYPE=INDIVIDUAL' +ATTENDEE + ;RSVP=TRUE + :Mailto:C@example.com +X-LIC-ERROR + ;X-LIC-ERRORTYPE=PARAMETER_PARSE_ERROR + :Can't parse parameter name: 'TYPE=INDIVIDUAL' +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 + +------------=_948951965-26278-10-- + + +From eric@busboom.org Wed Jan 26 21:46:05 2000 +Content-Type: multipart/mixed; boundary="----------=_948951965-26278-11" +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) +From: eric@busboom.org +To: alice +Subject: Hello, nurse! + +This is a multi-part message in MIME format... + +------------=_948951965-26278-11 +Content-Type: text/plain +Content-Disposition: inline + +Hey! Come to the meeting! +------------=_948951965-26278-11 +Content-Type: text/calendar; method=DECLINECOUNTER; charset=US-ASCII +Content-Disposition: inline +Content-Transfer-Encoding: 7bit +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) + +BEGIN:VCALENDAR +PRODID + :-//ACME/DesktopCalendar//EN +METHOD + :DECLINECOUNTER +VERSION + :2.0 +BEGIN:VEVENT +ORGANIZER + :Mailto:A@example.com +ATTENDEE + ;RSVP=TRUE + :Mailto:B@example.com +X-LIC-ERROR + ;X-LIC-ERRORTYPE=PARAMETER_PARSE_ERROR + :Can't parse parameter name: 'TYPE=INDIVIDUAL' +COMMENT + :Sorry +COMMENT + : I cannot change this meeting time +UID + :calsrv.example.com-873970198738777@example.com +SEQUENCE + :0 +DTSTAMP + :19970614T190000Z +END:VEVENT +END:VCALENDAR + +------------=_948951965-26278-11-- + + +From eric@busboom.org Wed Jan 26 21:46:05 2000 +Content-Type: multipart/mixed; boundary="----------=_948951965-26278-12" +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) +From: eric@busboom.org +To: alice +Subject: Hello, nurse! + +This is a multi-part message in MIME format... + +------------=_948951965-26278-12 +Content-Type: text/plain +Content-Disposition: inline + +Hey! Come to the meeting! +------------=_948951965-26278-12 +Content-Type: text/calendar; method=REPLY; charset=US-ASCII +Content-Disposition: inline +Content-Transfer-Encoding: 7bit +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) + +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 + +------------=_948951965-26278-12-- + + +From eric@busboom.org Wed Jan 26 21:46:05 2000 +Content-Type: multipart/mixed; boundary="----------=_948951965-26278-13" +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) +From: eric@busboom.org +To: alice +Subject: Hello, nurse! + +This is a multi-part message in MIME format... + +------------=_948951965-26278-13 +Content-Type: text/plain +Content-Disposition: inline + +Hey! Come to the meeting! +------------=_948951965-26278-13 +Content-Type: text/calendar; method=REQUEST; charset=US-ASCII +Content-Disposition: inline +Content-Transfer-Encoding: 7bit +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) + +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 + +------------=_948951965-26278-13-- + + +From eric@busboom.org Wed Jan 26 21:46:05 2000 +Content-Type: multipart/mixed; boundary="----------=_948951965-26278-14" +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) +From: eric@busboom.org +To: alice +Subject: Hello, nurse! + +This is a multi-part message in MIME format... + +------------=_948951965-26278-14 +Content-Type: text/plain +Content-Disposition: inline + +Hey! Come to the meeting! +------------=_948951965-26278-14 +Content-Type: text/calendar; method=REPLY; charset=US-ASCII +Content-Disposition: inline +Content-Transfer-Encoding: 7bit +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) + +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 +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 + :19970614T190000Z +END:VEVENT +END:VCALENDAR + +------------=_948951965-26278-14-- + + +From eric@busboom.org Wed Jan 26 21:46:05 2000 +Content-Type: multipart/mixed; boundary="----------=_948951965-26278-15" +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) +From: eric@busboom.org +To: alice +Subject: Hello, nurse! + +This is a multi-part message in MIME format... + +------------=_948951965-26278-15 +Content-Type: text/plain +Content-Disposition: inline + +Hey! Come to the meeting! +------------=_948951965-26278-15 +Content-Type: text/calendar; method=REPLY; charset=US-ASCII +Content-Disposition: inline +Content-Transfer-Encoding: 7bit +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) + +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 +ATTENDEE + ;PARTSTAT=DECLINED + ;DELEGATED-FROM="Mailto:C@example.com" + :Mailto:E@example.com +COMMENT + :Sorry +COMMENT + : 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 + +------------=_948951965-26278-15-- + + +From eric@busboom.org Wed Jan 26 21:46:05 2000 +Content-Type: multipart/mixed; boundary="----------=_948951965-26278-16" +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) +From: eric@busboom.org +To: alice +Subject: Hello, nurse! + +This is a multi-part message in MIME format... + +------------=_948951965-26278-16 +Content-Type: text/plain +Content-Disposition: inline + +Hey! Come to the meeting! +------------=_948951965-26278-16 +Content-Type: text/calendar; method=REQUEST; charset=US-ASCII +Content-Disposition: inline +Content-Transfer-Encoding: 7bit +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) + +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 YOURINVITATION +END:VEVENT +END:VCALENDAR + +------------=_948951965-26278-16-- + + +From eric@busboom.org Wed Jan 26 21:46:05 2000 +Content-Type: multipart/mixed; boundary="----------=_948951965-26278-17" +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) +From: eric@busboom.org +To: alice +Subject: Hello, nurse! + +This is a multi-part message in MIME format... + +------------=_948951965-26278-17 +Content-Type: text/plain +Content-Disposition: inline + +Hey! Come to the meeting! +------------=_948951965-26278-17 +Content-Type: text/calendar; method=CANCEL; charset=US-ASCII +Content-Disposition: inline +Content-Transfer-Encoding: 7bit +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) + +BEGIN:VCALENDAR +PRODID + :-//ACME/DesktopCalendar//EN +METHOD + :CANCEL +VERSION + :2.0 +BEGIN:VEVENT +ORGANIZER + :Mailto:A@example.com +ATTENDEE + :A@example.com +X-LIC-ERROR + ;X-LIC-ERRORTYPE=PARAMETER_PARSE_ERROR + :Can't parse parameter name: 'TYPE=INDIVIDUAL' +X-LIC-ERROR + ;X-LIC-ERRORTYPE=PARAMETER_PARSE_ERROR + :Can't parse parameter name: 'Mailto' +ATTENDEE + :Mailto:B@example.com +X-LIC-ERROR + ;X-LIC-ERRORTYPE=PARAMETER_PARSE_ERROR + :Can't parse parameter name: 'TYPE=INDIVIDUAL' +ATTENDEE + :Mailto:C@example.com +X-LIC-ERROR + ;X-LIC-ERRORTYPE=PARAMETER_PARSE_ERROR + :Can't parse parameter name: 'TYPE=INDIVIDUAL' +ATTENDEE + :Mailto:D@example.com +X-LIC-ERROR + ;X-LIC-ERRORTYPE=PARAMETER_PARSE_ERROR + :Can't parse parameter name: 'TYPE=INDIVIDUAL' +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 + +------------=_948951965-26278-17-- + + +From eric@busboom.org Wed Jan 26 21:46:05 2000 +Content-Type: multipart/mixed; boundary="----------=_948951965-26278-18" +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) +From: eric@busboom.org +To: alice +Subject: Hello, nurse! + +This is a multi-part message in MIME format... + +------------=_948951965-26278-18 +Content-Type: text/plain +Content-Disposition: inline + +Hey! Come to the meeting! +------------=_948951965-26278-18 +Content-Type: text/calendar; method=CANCEL; charset=US-ASCII +Content-Disposition: inline +Content-Transfer-Encoding: 7bit +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) + +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 + +------------=_948951965-26278-18-- + + +From eric@busboom.org Wed Jan 26 21:46:05 2000 +Content-Type: multipart/mixed; boundary="----------=_948951965-26278-19" +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) +From: eric@busboom.org +To: alice +Subject: Hello, nurse! + +This is a multi-part message in MIME format... + +------------=_948951965-26278-19 +Content-Type: text/plain +Content-Disposition: inline + +Hey! Come to the meeting! +------------=_948951965-26278-19 +Content-Type: text/calendar; method=REQUEST; charset=US-ASCII +Content-Disposition: inline +Content-Transfer-Encoding: 7bit +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) + +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 + :Mailto:C@example.com +X-LIC-ERROR + ;X-LIC-ERRORTYPE=PARAMETER_PARSE_ERROR + :Can't parse parameter name: 'TYPE=INDIVIDUAL' +ATTENDEE + :Mailto:D@example.com +X-LIC-ERROR + ;X-LIC-ERRORTYPE=PARAMETER_PARSE_ERROR + :Can't parse parameter name: 'TYPE=INDIVIDUAL' +ATTENDEE + :CR_Big@example.com +X-LIC-ERROR + ;X-LIC-ERRORTYPE=PARAMETER_PARSE_ERROR + :Can't parse parameter name: 'TYPE=ROOM' +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 + +------------=_948951965-26278-19-- + + +From eric@busboom.org Wed Jan 26 21:46:05 2000 +Content-Type: multipart/mixed; boundary="----------=_948951965-26278-20" +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) +From: eric@busboom.org +To: alice +Subject: Hello, nurse! + +This is a multi-part message in MIME format... + +------------=_948951965-26278-20 +Content-Type: text/plain +Content-Disposition: inline + +Hey! Come to the meeting! +------------=_948951965-26278-20 +Content-Type: text/calendar; method=REQUEST; charset=US-ASCII +Content-Disposition: inline +Content-Transfer-Encoding: 7bit +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) + +BEGIN:VCALENDAR +PRODID + :-//ACME/DesktopCalendar//EN +METHOD + :REQUEST +VERSION + :2.0 +BEGIN:VEVENT +ORGANIZER + :Mailto:B@example.com +ATTENDEE + ;ROLE=CHAIR + :Mailto:B@example.com +X-LIC-ERROR + ;X-LIC-ERRORTYPE=PARAMETER_PARSE_ERROR + :Can't parse parameter name: 'STATUS=ACCEPTED' +ATTENDEE + :Mailto:C@example.com +X-LIC-ERROR + ;X-LIC-ERRORTYPE=PARAMETER_PARSE_ERROR + :Can't parse parameter name: 'TYPE=INDIVIDUAL' +ATTENDEE + :Mailto:D@example.com +X-LIC-ERROR + ;X-LIC-ERRORTYPE=PARAMETER_PARSE_ERROR + :Can't parse parameter name: 'TYPE=INDIVIDUAL' +DTSTAMP + :19970611T190000Z +DTSTART + :19970701T200000Z +DTEND + :19970701T203000Z +X-LIC-ERROR + ;X-LIC-ERRORTYPE=VALUE_PARSE_ERROR + :Can't parse as RECUR value in RRULE property. Removing entire property: + 'FREQ=WEEKLY' +SUMMARY + :Phone Conference +UID + :123456@example.com +SEQUENCE + :1 +STATUS + :CONFIRMED +END:VEVENT +END:VCALENDAR + +------------=_948951965-26278-20-- + + +From eric@busboom.org Wed Jan 26 21:46:05 2000 +Content-Type: multipart/mixed; boundary="----------=_948951965-26278-21" +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) +From: eric@busboom.org +To: alice +Subject: Hello, nurse! + +This is a multi-part message in MIME format... + +------------=_948951965-26278-21 +Content-Type: text/plain +Content-Disposition: inline + +Hey! Come to the meeting! +------------=_948951965-26278-21 +Content-Type: text/calendar; method=PUBLISH; charset=US-ASCII +Content-Disposition: inline +Content-Transfer-Encoding: 7bit +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) + +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 + +------------=_948951965-26278-21-- + + +From eric@busboom.org Wed Jan 26 21:46:05 2000 +Content-Type: multipart/mixed; boundary="----------=_948951965-26278-22" +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) +From: eric@busboom.org +To: alice +Subject: Hello, nurse! + +This is a multi-part message in MIME format... + +------------=_948951965-26278-22 +Content-Type: text/plain +Content-Disposition: inline + +Hey! Come to the meeting! +------------=_948951965-26278-22 +Content-Type: text/calendar; method=REQUEST; charset=US-ASCII +Content-Disposition: inline +Content-Transfer-Encoding: 7bit +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) + +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 + +------------=_948951965-26278-22-- + + +From eric@busboom.org Wed Jan 26 21:46:05 2000 +Content-Type: multipart/mixed; boundary="----------=_948951965-26278-23" +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) +From: eric@busboom.org +To: alice +Subject: Hello, nurse! + +This is a multi-part message in MIME format... + +------------=_948951965-26278-23 +Content-Type: text/plain +Content-Disposition: inline + +Hey! Come to the meeting! +------------=_948951965-26278-23 +Content-Type: text/calendar; method=REPLY; charset=US-ASCII +Content-Disposition: inline +Content-Transfer-Encoding: 7bit +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) + +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 +X-LIC-ERROR + ;X-LIC-ERRORTYPE=VALUE_PARSE_ERROR + :Can't parse as PERIOD value in FREEBUSY property. Removing entire + property: '19970701T090000Z/PT1H' +DTSTAMP + :19970613T190030Z +END:VFREEBUSY +END:VCALENDAR + +------------=_948951965-26278-23-- + + +From eric@busboom.org Wed Jan 26 21:46:05 2000 +Content-Type: multipart/mixed; boundary="----------=_948951965-26278-24" +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) +From: eric@busboom.org +To: alice +Subject: Hello, nurse! + +This is a multi-part message in MIME format... + +------------=_948951965-26278-24 +Content-Type: text/plain +Content-Disposition: inline + +Hey! Come to the meeting! +------------=_948951965-26278-24 +Content-Type: text/calendar; method=REQUEST; charset=US-ASCII +Content-Disposition: inline +Content-Transfer-Encoding: 7bit +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) + +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 +X-LIC-ERROR + ;X-LIC-ERRORTYPE=VALUE_PARSE_ERROR + :Can't parse as RECUR value in RRULE property. Removing entire property: + 'FREQ=YEARLY\;BYDAY=-1SU\;BYMONTH=10' +TZOFFSETFROM + :-070000 +TZOFFSETTO + :-080000 +TZNAME + :PST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART + :19870405T020000 +X-LIC-ERROR + ;X-LIC-ERRORTYPE=VALUE_PARSE_ERROR + :Can't parse as RECUR value in RRULE property. Removing entire property: + 'FREQ=YEARLY\;BYDAY=1SU\;BYMONTH=4' +TZOFFSETFROM + :-080000 +TZOFFSETTO + :-070000 +TZNAME + :PDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER + :Mailto:A@example.com +ATTENDEE + ;ROLE=CHAIR + ;PARTSTAT=ACCEPTED + :A@example.COM +X-LIC-ERROR + ;X-LIC-ERRORTYPE=PARAMETER_PARSE_ERROR + :Can't parse parameter name: 'TYPE=INDIVIDUAL' +ATTENDEE + ;RSVP=TRUE + :B@example.fr +X-LIC-ERROR + ;X-LIC-ERRORTYPE=PARAMETER_PARSE_ERROR + :Can't parse parameter name: 'TYPE=INDIVIDUAL' +ATTENDEE + ;RSVP=TRUE + :c@example.jp +X-LIC-ERROR + ;X-LIC-ERRORTYPE=PARAMETER_PARSE_ERROR + :Can't parse parameter name: 'TYPE=INDIVIDUAL' +DTSTAMP + :19970613T190030Z +DTSTART + ;TZID=America-SanJose + :19970701T140000 +DTEND + ;TZID=America-SanJose + :19970701T150000 +X-LIC-ERROR + ;X-LIC-ERRORTYPE=VALUE_PARSE_ERROR + :Can't parse as RECUR value in RRULE property. Removing entire property: + '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 + +------------=_948951965-26278-24-- + + +From eric@busboom.org Wed Jan 26 21:46:05 2000 +Content-Type: multipart/mixed; boundary="----------=_948951965-26278-25" +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) +From: eric@busboom.org +To: alice +Subject: Hello, nurse! + +This is a multi-part message in MIME format... + +------------=_948951965-26278-25 +Content-Type: text/plain +Content-Disposition: inline + +Hey! Come to the meeting! +------------=_948951965-26278-25 +Content-Type: text/calendar; method=REQUEST; charset=US-ASCII +Content-Disposition: inline +Content-Transfer-Encoding: 7bit +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) + +BEGIN:VCALENDAR +METHOD + :REQUEST +PRODID + :-//RDU Software//NONSGML HandCal//EN +VERSION + :2.0 +BEGIN:VEVENT +UID + :guid-1@host1.com +SEQUENCE + :0 +X-LIC-ERROR + ;X-LIC-ERRORTYPE=VALUE_PARSE_ERROR + :Can't parse as RECUR value in RRULE property. Removing entire property: + '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 + +------------=_948951965-26278-25-- + + +From eric@busboom.org Wed Jan 26 21:46:05 2000 +Content-Type: multipart/mixed; boundary="----------=_948951965-26278-26" +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) +From: eric@busboom.org +To: alice +Subject: Hello, nurse! + +This is a multi-part message in MIME format... + +------------=_948951965-26278-26 +Content-Type: text/plain +Content-Disposition: inline + +Hey! Come to the meeting! +------------=_948951965-26278-26 +Content-Type: text/calendar; method=REQUEST; charset=US-ASCII +Content-Disposition: inline +Content-Transfer-Encoding: 7bit +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) + +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 + +------------=_948951965-26278-26-- + + +From eric@busboom.org Wed Jan 26 21:46:05 2000 +Content-Type: multipart/mixed; boundary="----------=_948951965-26278-27" +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) +From: eric@busboom.org +To: alice +Subject: Hello, nurse! + +This is a multi-part message in MIME format... + +------------=_948951965-26278-27 +Content-Type: text/plain +Content-Disposition: inline + +Hey! Come to the meeting! +------------=_948951965-26278-27 +Content-Type: text/calendar; method=CANCEL; charset=US-ASCII +Content-Disposition: inline +Content-Transfer-Encoding: 7bit +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) + +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 + +------------=_948951965-26278-27-- + + +From eric@busboom.org Wed Jan 26 21:46:05 2000 +Content-Type: multipart/mixed; boundary="----------=_948951965-26278-28" +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) +From: eric@busboom.org +To: alice +Subject: Hello, nurse! + +This is a multi-part message in MIME format... + +------------=_948951965-26278-28 +Content-Type: text/plain +Content-Disposition: inline + +Hey! Come to the meeting! +------------=_948951965-26278-28 +Content-Type: text/calendar; method=CANCEL; charset=US-ASCII +Content-Disposition: inline +Content-Transfer-Encoding: 7bit +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) + +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 + +------------=_948951965-26278-28-- + + +From eric@busboom.org Wed Jan 26 21:46:05 2000 +Content-Type: multipart/mixed; boundary="----------=_948951965-26278-29" +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) +From: eric@busboom.org +To: alice +Subject: Hello, nurse! + +This is a multi-part message in MIME format... + +------------=_948951965-26278-29 +Content-Type: text/plain +Content-Disposition: inline + +Hey! Come to the meeting! +------------=_948951965-26278-29 +Content-Type: text/calendar; method=REQUEST; charset=US-ASCII +Content-Disposition: inline +Content-Transfer-Encoding: 7bit +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) + +BEGIN:VCALENDAR +METHOD + :REQUEST +PRODID + :-//RDU Software//NONSGML HandCal//EN +VERSION + :2.0 +BEGIN:VEVENT +UID + :guid-1@host1.com +RECURRENCE-ID + :19970901T210000Z +X-LIC-ERROR + ;X-LIC-ERRORTYPE=PARAMETER_PARSE_ERROR + :Can't parse parameter name: 'THISANDFUTURE' +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 +LOCATION + : Microsoft +LOCATION + : Seattle +LOCATION + : WA +DTSTAMP + :19970526T083000Z +STATUS + :CONFIRMED +END:VEVENT +END:VCALENDAR + +------------=_948951965-26278-29-- + + +From eric@busboom.org Wed Jan 26 21:46:06 2000 +Content-Type: multipart/mixed; boundary="----------=_948951965-26278-30" +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) +From: eric@busboom.org +To: alice +Subject: Hello, nurse! + +This is a multi-part message in MIME format... + +------------=_948951965-26278-30 +Content-Type: text/plain +Content-Disposition: inline + +Hey! Come to the meeting! +------------=_948951965-26278-30 +Content-Type: text/calendar; method=ADD; charset=US-ASCII +Content-Disposition: inline +Content-Transfer-Encoding: 7bit +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) + +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 + +------------=_948951965-26278-30-- + + +From eric@busboom.org Wed Jan 26 21:46:06 2000 +Content-Type: multipart/mixed; boundary="----------=_948951965-26278-31" +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) +From: eric@busboom.org +To: alice +Subject: Hello, nurse! + +This is a multi-part message in MIME format... + +------------=_948951965-26278-31 +Content-Type: text/plain +Content-Disposition: inline + +Hey! Come to the meeting! +------------=_948951965-26278-31 +Content-Type: text/calendar; method=REQUEST; charset=US-ASCII +Content-Disposition: inline +Content-Transfer-Encoding: 7bit +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) + +BEGIN:VCALENDAR +METHOD + :REQUEST +PRODID + :-//RDU Software//NONSGML HandCal//EN +VERSION + :2.0 +BEGIN:VEVENT +UID + :123456789@host1.com +SEQUENCE + :0 +X-LIC-ERROR + ;X-LIC-ERRORTYPE=VALUE_PARSE_ERROR + :Can't parse as RECUR value in RRULE property. Removing entire property: + 'WKST=SU\;BYDAY=TU\;FREQ=WEEKLY' +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 + +------------=_948951965-26278-31-- + + +From eric@busboom.org Wed Jan 26 21:46:06 2000 +Content-Type: multipart/mixed; boundary="----------=_948951966-26278-32" +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) +From: eric@busboom.org +To: alice +Subject: Hello, nurse! + +This is a multi-part message in MIME format... + +------------=_948951966-26278-32 +Content-Type: text/plain +Content-Disposition: inline + +Hey! Come to the meeting! +------------=_948951966-26278-32 +Content-Type: text/calendar; method=ADD; charset=US-ASCII +Content-Disposition: inline +Content-Transfer-Encoding: 7bit +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) + +BEGIN:VCALENDAR +METHOD + :ADD +PRODID + :-//RDU Software//NONSGML HandCal//EN +VERSION + :2.0 +BEGIN:VEVENT +UID + :123456789@host1.com +SEQUENCE + :7 +X-LIC-ERROR + ;X-LIC-ERRORTYPE=VALUE_PARSE_ERROR + :Can't parse as RECUR value in RRULE property. Removing entire property: + 'WKST=SU\;BYDAY=TH\;FREQ=WEEKLY' +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 + +------------=_948951966-26278-32-- + + +From eric@busboom.org Wed Jan 26 21:46:06 2000 +Content-Type: multipart/mixed; boundary="----------=_948951966-26278-33" +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) +From: eric@busboom.org +To: alice +Subject: Hello, nurse! + +This is a multi-part message in MIME format... + +------------=_948951966-26278-33 +Content-Type: text/plain +Content-Disposition: inline + +Hey! Come to the meeting! +------------=_948951966-26278-33 +Content-Type: text/calendar; method=REQUEST; charset=US-ASCII +Content-Disposition: inline +Content-Transfer-Encoding: 7bit +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) + +BEGIN:VCALENDAR +METHOD + :REQUEST +PRODID + :-//RDU Software//NONSGML HandCal//EN +VERSION + :2.0 +BEGIN:VEVENT +UID + :123456789@host1.com +SEQUENCE + :7 +X-LIC-ERROR + ;X-LIC-ERRORTYPE=VALUE_PARSE_ERROR + :Can't parse as RECUR value in RRULE property. Removing entire property: + '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 +DTSTAMP + :19980303T193000Z +LOCATION + :The White Room +STATUS + :CONFIRMED +END:VEVENT +END:VCALENDAR + +------------=_948951966-26278-33-- + + +From eric@busboom.org Wed Jan 26 21:46:06 2000 +Content-Type: multipart/mixed; boundary="----------=_948951966-26278-34" +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) +From: eric@busboom.org +To: alice +Subject: Hello, nurse! + +This is a multi-part message in MIME format... + +------------=_948951966-26278-34 +Content-Type: text/plain +Content-Disposition: inline + +Hey! Come to the meeting! +------------=_948951966-26278-34 +Content-Type: text/calendar; method=REQUEST; charset=US-ASCII +Content-Disposition: inline +Content-Transfer-Encoding: 7bit +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) + +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 + +------------=_948951966-26278-34-- + + +From eric@busboom.org Wed Jan 26 21:46:06 2000 +Content-Type: multipart/mixed; boundary="----------=_948951966-26278-35" +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) +From: eric@busboom.org +To: alice +Subject: Hello, nurse! + +This is a multi-part message in MIME format... + +------------=_948951966-26278-35 +Content-Type: text/plain +Content-Disposition: inline + +Hey! Come to the meeting! +------------=_948951966-26278-35 +Content-Type: text/calendar; method=REQUEST; charset=US-ASCII +Content-Disposition: inline +Content-Transfer-Encoding: 7bit +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) + +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 + +------------=_948951966-26278-35-- + + +From eric@busboom.org Wed Jan 26 21:46:06 2000 +Content-Type: multipart/mixed; boundary="----------=_948951966-26278-36" +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) +From: eric@busboom.org +To: alice +Subject: Hello, nurse! + +This is a multi-part message in MIME format... + +------------=_948951966-26278-36 +Content-Type: text/plain +Content-Disposition: inline + +Hey! Come to the meeting! +------------=_948951966-26278-36 +Content-Type: text/calendar; method=ADD; charset=US-ASCII +Content-Disposition: inline +Content-Transfer-Encoding: 7bit +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) + +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 + +------------=_948951966-26278-36-- + + +From eric@busboom.org Wed Jan 26 21:46:06 2000 +Content-Type: multipart/mixed; boundary="----------=_948951966-26278-37" +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) +From: eric@busboom.org +To: alice +Subject: Hello, nurse! + +This is a multi-part message in MIME format... + +------------=_948951966-26278-37 +Content-Type: text/plain +Content-Disposition: inline + +Hey! Come to the meeting! +------------=_948951966-26278-37 +Content-Type: text/calendar; method=REQUEST; charset=US-ASCII +Content-Disposition: inline +Content-Transfer-Encoding: 7bit +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) + +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 +X-LIC-ERROR + ;X-LIC-ERRORTYPE=COMPONENT_PARSE_ERROR + :Got a data line\, but could not find a property name or component + begin tag: 'Error! Bookmark not defined.' +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 +X-LIC-ERROR + ;X-LIC-ERRORTYPE=COMPONENT_PARSE_ERROR + :Got a data line\, but could not find a property name or component + begin tag: 'Error! Bookmark not defined.' +SEQUENCE + :2 +RECURRENCE-ID + :19980311T160000Z +X-LIC-ERROR + ;X-LIC-ERRORTYPE=COMPONENT_PARSE_ERROR + :Got a data line\, but could not find a property name or component + begin tag: 'Error! Bookmark not defined.' +ATTENDEE + :ROLE=CHAIR;Error! Bookmark not defined. +ATTENDEE + :Error! Bookmark not defined. +SUMMARY + :Review Accounts +DTSTART + :19980311T160000Z +DTEND + :19980304T180000Z +DTSTAMP + :19980306T193000Z +LOCATION + :The Small conference room +STATUS + :CONFIRMED +END:VEVENT +END:VCALENDAR + +------------=_948951966-26278-37-- + + +From eric@busboom.org Wed Jan 26 21:46:06 2000 +Content-Type: multipart/mixed; boundary="----------=_948951966-26278-38" +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) +From: eric@busboom.org +To: alice +Subject: Hello, nurse! + +This is a multi-part message in MIME format... + +------------=_948951966-26278-38 +Content-Type: text/plain +Content-Disposition: inline + +Hey! Come to the meeting! +------------=_948951966-26278-38 +Content-Type: text/calendar; method=COUNTER; charset=US-ASCII +Content-Disposition: inline +Content-Transfer-Encoding: 7bit +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) + +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 + +------------=_948951966-26278-38-- + + +From eric@busboom.org Wed Jan 26 21:46:06 2000 +Content-Type: multipart/mixed; boundary="----------=_948951966-26278-39" +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) +From: eric@busboom.org +To: alice +Subject: Hello, nurse! + +This is a multi-part message in MIME format... + +------------=_948951966-26278-39 +Content-Type: text/plain +Content-Disposition: inline + +Hey! Come to the meeting! +------------=_948951966-26278-39 +Content-Type: text/calendar; method=REQUEST; charset=US-ASCII +Content-Disposition: inline +Content-Transfer-Encoding: 7bit +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) + +BEGIN:VCALENDAR +METHOD + :REQUEST +PRODID + :-//RDU Software//NONSGML HandCal//EN +VERSION + :2.0 +BEGIN:VEVENT +UID + :guid-1@host1.com +SEQUENCE + :0 +X-LIC-ERROR + ;X-LIC-ERRORTYPE=VALUE_PARSE_ERROR + :Can't parse as RECUR value in RRULE property. Removing entire property: + '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 +X-LIC-ERROR + ;X-LIC-ERRORTYPE=PROPERTY_PARSE_ERROR + :Parse error in property name: 'FOO' +END:VEVENT +END:VCALENDAR + +------------=_948951966-26278-39-- + + +From eric@busboom.org Wed Jan 26 21:46:06 2000 +Content-Type: multipart/mixed; boundary="----------=_948951966-26278-40" +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) +From: eric@busboom.org +To: alice +Subject: Hello, nurse! + +This is a multi-part message in MIME format... + +------------=_948951966-26278-40 +Content-Type: text/plain +Content-Disposition: inline + +Hey! Come to the meeting! +------------=_948951966-26278-40 +Content-Type: text/calendar; method=REPLY; charset=US-ASCII +Content-Disposition: inline +Content-Transfer-Encoding: 7bit +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) + +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 + +------------=_948951966-26278-40-- + + +From eric@busboom.org Wed Jan 26 21:46:06 2000 +Content-Type: multipart/mixed; boundary="----------=_948951966-26278-41" +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) +From: eric@busboom.org +To: alice +Subject: Hello, nurse! + +This is a multi-part message in MIME format... + +------------=_948951966-26278-41 +Content-Type: text/plain +Content-Disposition: inline + +Hey! Come to the meeting! +------------=_948951966-26278-41 +Content-Type: text/calendar; method=REQUEST; charset=US-ASCII +Content-Disposition: inline +Content-Transfer-Encoding: 7bit +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) + +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 + +------------=_948951966-26278-41-- + + +From eric@busboom.org Wed Jan 26 21:46:06 2000 +Content-Type: multipart/mixed; boundary="----------=_948951966-26278-42" +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) +From: eric@busboom.org +To: alice +Subject: Hello, nurse! + +This is a multi-part message in MIME format... + +------------=_948951966-26278-42 +Content-Type: text/plain +Content-Disposition: inline + +Hey! Come to the meeting! +------------=_948951966-26278-42 +Content-Type: text/calendar; method=REPLY; charset=US-ASCII +Content-Disposition: inline +Content-Transfer-Encoding: 7bit +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) + +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 + +------------=_948951966-26278-42-- + + +From eric@busboom.org Wed Jan 26 21:46:06 2000 +Content-Type: multipart/mixed; boundary="----------=_948951966-26278-43" +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) +From: eric@busboom.org +To: alice +Subject: Hello, nurse! + +This is a multi-part message in MIME format... + +------------=_948951966-26278-43 +Content-Type: text/plain +Content-Disposition: inline + +Hey! Come to the meeting! +------------=_948951966-26278-43 +Content-Type: text/calendar; method=REQUEST; charset=US-ASCII +Content-Disposition: inline +Content-Transfer-Encoding: 7bit +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) + +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 +X-LIC-ERROR + ;X-LIC-ERRORTYPE=PARAMETER_PARSE_ERROR + :Can't parse parameter name: 'TYPE=INDIVIDUAL' +ATTENDEE + ;RSVP=TRUE + :Mailto:D@example.com +X-LIC-ERROR + ;X-LIC-ERRORTYPE=PARAMETER_PARSE_ERROR + :Can't parse parameter name: 'TYPE=INDIVIDUAL' +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 + +------------=_948951966-26278-43-- + + +From eric@busboom.org Wed Jan 26 21:46:06 2000 +Content-Type: multipart/mixed; boundary="----------=_948951966-26278-44" +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) +From: eric@busboom.org +To: alice +Subject: Hello, nurse! + +This is a multi-part message in MIME format... + +------------=_948951966-26278-44 +Content-Type: text/plain +Content-Disposition: inline + +Hey! Come to the meeting! +------------=_948951966-26278-44 +Content-Type: text/calendar; method=REPLY; charset=US-ASCII +Content-Disposition: inline +Content-Transfer-Encoding: 7bit +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) + +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 +UID + :calsrv.example.com-873970198738777-00@example.com +DTSTAMP + :19970717T233000Z +SEQUENCE + :0 +END:VTODO +END:VCALENDAR + +------------=_948951966-26278-44-- + + +From eric@busboom.org Wed Jan 26 21:46:06 2000 +Content-Type: multipart/mixed; boundary="----------=_948951966-26278-45" +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) +From: eric@busboom.org +To: alice +Subject: Hello, nurse! + +This is a multi-part message in MIME format... + +------------=_948951966-26278-45 +Content-Type: text/plain +Content-Disposition: inline + +Hey! Come to the meeting! +------------=_948951966-26278-45 +Content-Type: text/calendar; method=REPLY; charset=US-ASCII +Content-Disposition: inline +Content-Transfer-Encoding: 7bit +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) + +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 +DTSTAMP + :19970717T233000Z +SEQUENCE + :0 +END:VTODO +END:VCALENDAR + +------------=_948951966-26278-45-- + + +From eric@busboom.org Wed Jan 26 21:46:06 2000 +Content-Type: multipart/mixed; boundary="----------=_948951966-26278-46" +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) +From: eric@busboom.org +To: alice +Subject: Hello, nurse! + +This is a multi-part message in MIME format... + +------------=_948951966-26278-46 +Content-Type: text/plain +Content-Disposition: inline + +Hey! Come to the meeting! +------------=_948951966-26278-46 +Content-Type: text/calendar; method=REQUEST; charset=US-ASCII +Content-Disposition: inline +Content-Transfer-Encoding: 7bit +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) + +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 + :Mailto:B@example.com +X-LIC-ERROR + ;X-LIC-ERRORTYPE=PARAMETER_PARSE_ERROR + :Can't parse parameter name: 'TYPE=INDIVIDUAL' +ATTENDEE + ;PARTSTAT=IN-PROCESS + :Mailto:D@example.com +X-LIC-ERROR + ;X-LIC-ERRORTYPE=PARAMETER_PARSE_ERROR + :Can't parse parameter name: 'TYPE=INDIVIDUAL' +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 + +------------=_948951966-26278-46-- + + +From eric@busboom.org Wed Jan 26 21:46:06 2000 +Content-Type: multipart/mixed; boundary="----------=_948951966-26278-47" +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) +From: eric@busboom.org +To: alice +Subject: Hello, nurse! + +This is a multi-part message in MIME format... + +------------=_948951966-26278-47 +Content-Type: text/plain +Content-Disposition: inline + +Hey! Come to the meeting! +------------=_948951966-26278-47 +Content-Type: text/calendar; method=REQUEST; charset=US-ASCII +Content-Disposition: inline +Content-Transfer-Encoding: 7bit +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) + +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 +X-LIC-ERROR + ;X-LIC-ERRORTYPE=PARAMETER_PARSE_ERROR + :Can't parse parameter name: 'TYPE=INDIVIDUAL' +ATTENDEE + ;RSVP=TRUE + :Mailto:D@example.com +X-LIC-ERROR + ;X-LIC-ERRORTYPE=PARAMETER_PARSE_ERROR + :Can't parse parameter name: 'TYPE=INDIVIDUAL' +X-LIC-ERROR + ;X-LIC-ERRORTYPE=VALUE_PARSE_ERROR + :Can't parse as RECUR value in RRULE property. Removing entire property: + 'FREQ=MONTHLY\;COUNT=10\;BYDAY=1FR' +X-LIC-ERROR + ;X-LIC-ERRORTYPE=VALUE_PARSE_ERROR + :Can't parse as DATE-TIME value in DTSTART property. Removing entire + property: '19980101T100000-0700' +X-LIC-ERROR + ;X-LIC-ERRORTYPE=VALUE_PARSE_ERROR + :Can't parse as DATE-TIME value in DUE property. Removing entire property: + '19980103T100000-0700' +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 + +------------=_948951966-26278-47-- + + +From eric@busboom.org Wed Jan 26 21:46:06 2000 +Content-Type: multipart/mixed; boundary="----------=_948951966-26278-48" +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) +From: eric@busboom.org +To: alice +Subject: Hello, nurse! + +This is a multi-part message in MIME format... + +------------=_948951966-26278-48 +Content-Type: text/plain +Content-Disposition: inline + +Hey! Come to the meeting! +------------=_948951966-26278-48 +Content-Type: text/calendar; method=REPLY; charset=US-ASCII +Content-Disposition: inline +Content-Transfer-Encoding: 7bit +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) + +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 +END:VTODO +END:VCALENDAR + +------------=_948951966-26278-48-- + + +From eric@busboom.org Wed Jan 26 21:46:06 2000 +Content-Type: multipart/mixed; boundary="----------=_948951966-26278-49" +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) +From: eric@busboom.org +To: alice +Subject: Hello, nurse! + +This is a multi-part message in MIME format... + +------------=_948951966-26278-49 +Content-Type: text/plain +Content-Disposition: inline + +Hey! Come to the meeting! +------------=_948951966-26278-49 +Content-Type: text/calendar; method=PUBLISH; charset=US-ASCII +Content-Disposition: inline +Content-Transfer-Encoding: 7bit +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) + +BEGIN:VCALENDAR +METHOD + :PUBLISH +PRODID + :-//ACME/DesktopCalendar//EN +VERSION + :2.0 +BEGIN:VJOURNAL +DTSTART + :19971002T200000Z +ORGANIZER + :MAILTO:A@Example.com +SUMMARY + :Phone conference minutes +DESCRIPTION + :The editors meeting was held on October 1 +DESCRIPTION + : 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 + +------------=_948951966-26278-49-- + + +From eric@busboom.org Wed Jan 26 21:46:06 2000 +Content-Type: multipart/mixed; boundary="----------=_948951966-26278-50" +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) +From: eric@busboom.org +To: alice +Subject: Hello, nurse! + +This is a multi-part message in MIME format... + +------------=_948951966-26278-50 +Content-Type: text/plain +Content-Disposition: inline + +Hey! Come to the meeting! +------------=_948951966-26278-50 +Content-Type: text/calendar; method=REFRESH; charset=US-ASCII +Content-Disposition: inline +Content-Transfer-Encoding: 7bit +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) + +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 +ATTENDEE + :Mailto:B@example.com +ATTENDEE + :Mailto:C@example.com +ATTENDEE + :Mailto:D@example.com +UID + : guid-1-12345@host1.com +DTSTAMP + :19970603T094000 +END:VEVENT +END:VCALENDAR + +------------=_948951966-26278-50-- + + +From eric@busboom.org Wed Jan 26 21:46:06 2000 +Content-Type: multipart/mixed; boundary="----------=_948951966-26278-51" +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) +From: eric@busboom.org +To: alice +Subject: Hello, nurse! + +This is a multi-part message in MIME format... + +------------=_948951966-26278-51 +Content-Type: text/plain +Content-Disposition: inline + +Hey! Come to the meeting! +------------=_948951966-26278-51 +Content-Type: text/calendar; method=REQUEST; charset=US-ASCII +Content-Disposition: inline +Content-Transfer-Encoding: 7bit +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) + +BEGIN:VCALENDAR +METHOD + :REQUEST +PRODID + :-//RDU Software//NONSGML HandCal//EN +VERSION + :2.0 +BEGIN:VEVENT +UID + :acme-12345@host1.com +SEQUENCE + :3 +X-LIC-ERROR + ;X-LIC-ERRORTYPE=VALUE_PARSE_ERROR + :Can't parse as RECUR value in RRULE property. Removing entire property: + 'FREQ=WEEKLY' +RDATE + ;VALUE=PERIOD + :19970819T210000Z/19970081T220000Z +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 + +------------=_948951966-26278-51-- + + +From eric@busboom.org Wed Jan 26 21:46:06 2000 +Content-Type: multipart/mixed; boundary="----------=_948951966-26278-52" +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) +From: eric@busboom.org +To: alice +Subject: Hello, nurse! + +This is a multi-part message in MIME format... + +------------=_948951966-26278-52 +Content-Type: text/plain +Content-Disposition: inline + +Hey! Come to the meeting! +------------=_948951966-26278-52 +Content-Type: text/calendar; method=REFRESH; charset=US-ASCII +Content-Disposition: inline +Content-Transfer-Encoding: 7bit +Mime-Version: 1.0 +X-Mailer: MIME-tools 4.104 (Entity 4.117) + +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 + +------------=_948951966-26278-52-- + + diff --git a/libical/src/Net-ICal-Libical/test-data/error b/libical/src/Net-ICal-Libical/test-data/error new file mode 100644 index 0000000000..aa0efce1b4 --- /dev/null +++ b/libical/src/Net-ICal-Libical/test-data/error @@ -0,0 +1,58 @@ +From foo6@example.com Sun Jan 16 17:34:23 2000 +From: foo6@example.com +MIME-Version: 1.0 +To: alice@agony +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: 7bit +Content-Disposition: attachment; filename="event.vcs" + +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:foo1@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:foo1@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:mailto:foo2@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:mailto:foo3@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970621T170000Z +DTEND:199706211T173000Z +SUMMARY:Let's discuss the attached document +UID:calsvr.example.com-873970198738777-8aa +ATTACH:cid:calsvr.example.com-12345aaa +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR + +----00FEE3790DC7E35189CA67CE2C00-- + +----FEE3790DC7E35189CA67CE2C +Content-Type: application/msword; name="FieldReport.doc" +Content-Transfer-Encoding: base64 +Content-Disposition: inline; filename="FieldReport.doc" +Content-ID: <calsvr.example.com-12345aaa> + + +R0lGODdhTAQZAJEAAFVVVd3d3e4AAP///ywAAAAATAQZAAAC/5yPOSLhD6OctNqLs94XqAG +4kiW5omm6sq27gvH8kzX9o1y+s73/g8MCofEovGITCoxKMbyCR16cNSq9YrNarfcrvdriIH +5LL5jE6rxc3G+v2cguf0uv2Oz+v38L7/DxgoOKjURnjIIbe3yNjo+AgZWYVIWWl5iZnJY6J. + +----FEE3790DC7E35189CA67CE2C-- diff --git a/libical/src/Net-ICal-Libical/test-data/mail-examples b/libical/src/Net-ICal-Libical/test-data/mail-examples new file mode 100644 index 0000000000..5fb7c55c82 --- /dev/null +++ b/libical/src/Net-ICal-Libical/test-data/mail-examples @@ -0,0 +1,262 @@ +From foo1@example.com Sun Jan 16 17:34:23 2000 +From: foo1@example.com +To: alice@agony +Subject: Phone Conference +Mime-Version: 1.0 +Content-Type:text/calendar; method=REQUEST; charset=US-ASCII +Content-Transfer-Encoding: 7bit + +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:sman@netscape.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:mailto:sman@netscape.com +ATTENDEE;RSVP=TRUE:mailto:stevesil@microsoft.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T210000Z +DTEND:19970701T230000Z +SUMMARY:Phone Conference +DESCRIPTION:Please review the attached document. +UID:calsvr.example.com-873970198738777 +ATTACH:ftp://ftp.bar.com/pub/docs/foo.doc +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR + +From foo2@example.com Sun Jan 16 17:34:23 2000 +From: foo2@example.com +To: alice@agony +Subject: Phone Conference +Mime-Version: 1.0 +Content-Type: multipart/alternative;boundary="01BD3665.3AF0D360" + +--01BD3665.3AF0D360 +Content-Type: text/plain;charset=us-ascii +Content-Transfer-Encoding: 7bit + +This is an alternative representation of a TEXT/CALENDAR MIME Object +When: 7/1/1997 10:00AM PDT - 7/1/97 10:30AM PDT +Where: +Organizer: foo1@example.com +Summary: Phone Conference + +--01BD3665.3AF0D360 +Content-Type:text/calendar; method=REQUEST; charset=US-ASCII +Content-Transfer-Encoding: 7bit + +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:foo1@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:mailto:foo1@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:mailto:foo2@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T170000Z +DTEND:19970701T173000Z +SUMMARY:Phone Conference +UID:calsvr.example.com-8739701987387771 +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR + +--01BD3665.3AF0D360-- + +From foo3@example.com Sun Jan 16 17:34:23 2000 +From: foo3@example.com +To: alice@agony +Subject: Phone Conference +Mime-Version: 1.0 +Content-Type: multipart/related; boundary="boundary-example-1";type=text/calendar + +--boundary-example-1 +Content-Type:text/calendar; method=REQUEST; charset=US-ASCII +Content-Transfer-Encoding: 7bit +Content-Disposition: attachment; filename="event.vcs" + +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:foo1@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:mailto:foo1@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:mailto:foo2@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T180000Z +DTEND:19970701T183000Z +SUMMARY:Phone Conference +UID:calsvr.example.com-8739701987387771 +ATTACH:cid:123456789@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR + +--boundary-example-1 +Content-Type: application/msword; name="FieldReport.doc" +Content-Transfer-Encoding: base64 +Content-Disposition: inline; filename="FieldReport.doc" +Content-ID: <123456789@example.com> + +0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAABAAAARAAAAAAA +AAAAEAAAQAAAAAEAAAD+////AAAAAEUAAAD///////////////////////////////// + +--boundary-example-1-- + +From foo4@example.com Sun Jan 16 17:34:23 2000 +From: foo4@example.com +To: alice@agony +Subject: Summer Company Holidays +Mime-Version: 1.0 +Content-Type:text/calendar; method=PUBLISH; charset=US-ASCII +Content-Transfer-Encoding: 7bit +Content-Disposition: attachment; filename="event.vcs" + +BEGIN:VCALENDAR +PRODID:-//ACME/DESKTOPCALENDAR//EN +METHOD:PUBLISH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:FOO1@EXAMPLE.COM +DTSTAMP:19970611T150000Z +DTSTART:19970701T150000Z +DTEND:19970701T230000Z +SUMMARY:Company Picnic +DESCRIPTION:Food and drink will be provided +UID:CALSVR.EXAMPLE.COM-873970198738777-1 +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +BEGIN:VEVENT +ORGANIZER:MAILTO:FOO1@EXAMPLE.COM +DTSTAMP:19970611T190000Z +DTSTART:19970715T150000Z +DTEND:19970715T230000Z +SUMMARY:Company Bowling Tournament +DESCRIPTION:We have 10 lanes reserved +UID:CALSVR.EXAMPLE.COM-873970198738777-2 +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR + +From foo5@example.com Sun Jan 16 17:34:23 2000 +From: foo5@example.com +To: alice@agony +Subject: Phone Conference +Mime-Version: 1.0 +Content-Type:multipart/mixed;boundary="--FEE3790DC7E35189CA67CE2C" + +This is a multi-part message in MIME format. + +----FEE3790DC7E35189CA67CE2C +Content-Type:text/calendar; method=REQUEST; charset=US-ASCII +Content-Transfer-Encoding: 7bit +Content-Disposition: attachment; filename="event1.vcs" + +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:foo1@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:mailto:foo1@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:mailto:foo2@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T210000Z +DTEND:19970701T230000Z +SUMMARY:Phone Conference +DESCRIPTION:Discuss what happened at the last meeting +UID:calsvr.example.com-8739701987387772 +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR + +----FEE3790DC7E35189CA67CE2C +Content-Type:text/calendar; method=REQUEST; charset=US-ASCII +Content-Transfer-Encoding:7bit +Content-Disposition: attachment; filename="todo1.vcs" + +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +DUE:19970701T090000 +ORGANIZER:mailto:foo1@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:mailto:foo1@example.com +ATTENDEE;RSVP=TRUE:mailto:foo2@example.com +SUMMARY:Phone Conference +DESCRIPTION:Discuss a new location for the company picnic +UID:calsvr.example.com-td-8739701987387773 +SEQUENCE:0 +STATUS:NEEDS ACTION +END:VEVENT +END:VCALENDAR + +----FEE3790DC7E35189CA67CE2C-- + +From foo6@example.com Sun Jan 16 17:34:23 2000 +From: foo6@example.com +MIME-Version: 1.0 +To: alice@agony +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: 7bit +Content-Disposition: attachment; filename="event.vcs" + +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:foo1@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:foo1@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:mailto:foo2@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:mailto:foo3@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970621T170000Z +DTEND:199706211T173000Z +SUMMARY:Let's discuss the attached document +UID:calsvr.example.com-873970198738777-8aa +ATTACH:cid:calsvr.example.com-12345aaa +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR + +----00FEE3790DC7E35189CA67CE2C00-- + +----FEE3790DC7E35189CA67CE2C +Content-Type: application/msword; name="FieldReport.doc" +Content-Transfer-Encoding: base64 +Content-Disposition: inline; filename="FieldReport.doc" +Content-ID: <calsvr.example.com-12345aaa> + + +R0lGODdhTAQZAJEAAFVVVd3d3e4AAP///ywAAAAATAQZAAAC/5yPOSLhD6OctNqLs94XqAG +4kiW5omm6sq27gvH8kzX9o1y+s73/g8MCofEovGITCoxKMbyCR16cNSq9YrNarfcrvdriIH +5LL5jE6rxc3G+v2cguf0uv2Oz+v38L7/DxgoOKjURnjIIbe3yNjo+AgZWYVIWWl5iZnJY6J. + +----FEE3790DC7E35189CA67CE2C--
\ No newline at end of file diff --git a/libical/src/Net-ICal-Libical/test-data/no-error b/libical/src/Net-ICal-Libical/test-data/no-error new file mode 100644 index 0000000000..f5b5ce995d --- /dev/null +++ b/libical/src/Net-ICal-Libical/test-data/no-error @@ -0,0 +1,26 @@ +From foo1@example.com Sun Jan 16 17:34:23 2000 +From: foo1@example.com +To: alice@agony +Subject: Phone Conference +Mime-Version: 1.0 +Content-Type:text/calendar; method=REQUEST; charset=US-ASCII +Content-Transfer-Encoding: 7bit + +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:sman@netscape.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:mailto:sman@netscape.com +ATTENDEE;RSVP=TRUE:mailto:stevesil@microsoft.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T210000Z +DTEND:19970701T230000Z +SUMMARY:Phone Conference +DESCRIPTION:Please review the attached document. +UID:calsvr.example.com-873970198738777 +ATTACH:ftp://ftp.bar.com/pub/docs/foo.doc +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR diff --git a/libical/src/Net-ICal-Libical/test-data/rfc2445.ics b/libical/src/Net-ICal-Libical/test-data/rfc2445.ics new file mode 100644 index 0000000000..f225f26331 --- /dev/null +++ b/libical/src/Net-ICal-Libical/test-data/rfc2445.ics @@ -0,0 +1,321 @@ +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/src/Net-ICal-Libical/test-data/rfc2446.ics b/libical/src/Net-ICal-Libical/test-data/rfc2446.ics new file mode 100644 index 0000000000..8bf5c7e8f3 --- /dev/null +++ b/libical/src/Net-ICal-Libical/test-data/rfc2446.ics @@ -0,0 +1,1004 @@ + +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/src/Net-ICal-Libical/test-data/single-with-error b/libical/src/Net-ICal-Libical/test-data/single-with-error new file mode 100644 index 0000000000..6a368d9997 --- /dev/null +++ b/libical/src/Net-ICal-Libical/test-data/single-with-error @@ -0,0 +1,39 @@ +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/src/Net-ICal-Libical/test/component.pl b/libical/src/Net-ICal-Libical/test/component.pl new file mode 100644 index 0000000000..2fdaf41d65 --- /dev/null +++ b/libical/src/Net-ICal-Libical/test/component.pl @@ -0,0 +1,106 @@ +#!/usr/bin/perl + +use lib "../blib/lib"; +use lib "../blib/arch"; +use lib "../"; + +use Time::Local; + +use Net::ICal::Libical; + +use POSIX; + + + my $comp_str=<<EOM; +BEGIN:VCALENDAR +METHOD + :PUBLISH +PRODID + :-//ACME/DesktopCalendar//EN +VERSION + :2.0 +BEGIN:VEVENT +ORGANIZER + :mailto:a\@example.com +ATTENDEE + ;RSVP=TRUE + ;ROLE=REQ-PARTICIPANT + ;CUTYPE=GROUP + :MAILTO:employee-A\@host.com +DTSTART + :19970701T200000Z +DURATION + :P3DT4H50M36S +DTSTAMP + :19970611T190000Z +SUMMARY + :ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID + :0981234-1234234-23\@example.com +END:VEVENT +END:VCALENDAR +EOM + +my $c; + +$c = new Net::ICal::Libical::Component($comp_str); + +my @props = $c->properties(); + +my $p; +foreach $p (@props) { + print $p->name()." ".$p->value()."\n"; + +} + +$inner = ($c->components())[0]; + +print "\n"; + +print " -------- Attendee \n"; + +$p = ($inner->properties('ATTENDEE'))[0]; + +print $p->as_ical_string(),"\n"; + +print $p->get_parameter('ROLE'),"\n"; + +die if $p->get_parameter('ROLE') ne 'REQ-PARTICIPANT'; + +$p->set_parameter('ROLE','INDIVIDUAL'); + +print $p->as_ical_string(),"\n"; + +print " -------- DTSTART \n"; + +$p = ($inner->properties('DTSTART'))[0]; + +print $p->as_ical_string()."\n"; +print $p->as_ical_string()."\n"; + +print "hour: ". $p->hour()." \n"; + +$p->hour($p->hour() - 10); + +print $p->hour(),"\n"; + +$p->timezone('America/Los_Angeles'); + +print $p->as_ical_string()."\n"; + + +print "----------- DURATION \n"; + +$p = ($inner->properties('DURATION'))[0]; + +print $p->as_ical_string()."\n"; + +print $p->seconds(),"\n"; + +$p->seconds(3630); + +print $p->as_ical_string()."\n"; +print $p->seconds(),"\n"; + + + diff --git a/libical/src/Net-ICal-Libical/test/libical.pl b/libical/src/Net-ICal-Libical/test/libical.pl new file mode 100755 index 0000000000..9499dd9850 --- /dev/null +++ b/libical/src/Net-ICal-Libical/test/libical.pl @@ -0,0 +1,94 @@ +#!/usr/bin/perl + +use lib "../blib/lib"; +use lib "../blib/arch"; +use lib "../"; + +use Time::Local; + +use Net::ICal::Libical; + +use POSIX; + + +my $comp_str=<<EOM; +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 +EOM + +my $comp_str_error=<<EOM; +BEGIN:VCALENDAR +METHOD:REQUEST +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a\@example.com +DTSTAMP:19970612T190000Z +DTSTART:19970701T210000Z +DTEND:19970701T230000Z +SEQENCE:1 +UID:0981234-1234234-23\@example.com +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +END:VEVENT +END:VCALENDAR +EOM + +print "-- Good Component --\n"; +print Net::ICal::Libical::validate_component($comp_str); + +print "-- BadComponent --\n"; +print Net::ICal::Libical::validate_component($comp_str_error); + + +print "-- Generate Occurrences --\n"; +$rule = "FREQ=MONTHLY;UNTIL=19971224T000000Z;INTERVAL=1;BYDAY=TU,2FR,3SA"; +$limit = 25; +$start = timelocal(0,0,9,5,8,1997); # 19970905T090000Z + +@occur = Net::ICal::Libical::generate_occurrences($rule,$start,$limit); + +print $rule."\n"; + +foreach $i (@occur){ + + my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = gmtime($i); + + printf("%s %s %2d %02d:%02d:%02d %d\n", + (Sun,Mon,Tue,Wed,Thur,Fri,Sat)[$wday], + (Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec)[$mon], + $mday, + $hour,$min,$sec, + $year); + +} + +print "-- Interpret iCal data --\n"; + + +my $comp_str=<<EOM; +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 + +EOM + + + diff --git a/libical/src/Net-ICal-Libical/test/swig.pl b/libical/src/Net-ICal-Libical/test/swig.pl new file mode 100755 index 0000000000..939f5ce936 --- /dev/null +++ b/libical/src/Net-ICal-Libical/test/swig.pl @@ -0,0 +1,29 @@ +#!/usr/bin/perl + +use lib "../blib/lib"; +use lib "../blib/arch"; +use lib "../"; + +use Net::ICal::Libical; + + +my $comp_str=<<EOM; +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 +EOM + +$c = Net::ICal::Libical::icalparser_parse_string($comp_str); + +print Net::ICal::Libical::icalcomponent_as_ical_string($c)."\n"; |