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/test/recur.c | |
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/test/recur.c')
-rw-r--r-- | libical/src/test/recur.c | 151 |
1 files changed, 96 insertions, 55 deletions
diff --git a/libical/src/test/recur.c b/libical/src/test/recur.c index f4d9a38647..bb23337adb 100644 --- a/libical/src/test/recur.c +++ b/libical/src/test/recur.c @@ -25,96 +25,137 @@ ======================================================================*/ -#include "ical.h" #include <assert.h> #include <string.h> /* for strdup */ #include <stdlib.h> /* for malloc */ #include <stdio.h> /* for printf */ #include <time.h> /* for time() */ #include <signal.h> /* for signal */ +#ifndef WIN32 #include <unistd.h> /* for alarm */ -#include "icalmemory.h" -#include "icaldirset.h" -#include "icalfileset.h" +#endif + +#include "ical.h" +#include "icalss.h" + +#ifdef WIN32 +#define snprintf _snprintf +#define strcasecmp stricmp +#endif static void sig_alrm(int i){ fprintf(stderr,"Could not get lock on file\n"); exit(1); } +static void recur_callback(icalcomponent *comp, + struct icaltime_span *span, + void *data) +{ + printf("cb: %s", ctime(&span->start)); + printf(" %s\n", ctime(&span->end)); + +} + int main(int argc, char *argv[]) { - icalfileset *cin; - struct icaltimetype start, next; + icalset *cin; + struct icaltimetype next; icalcomponent *itr; icalproperty *desc, *dtstart, *rrule; struct icalrecurrencetype recur; icalrecur_iterator* ritr; time_t tt; char* file; - + icalerror_set_error_state(ICAL_PARSE_ERROR, ICAL_ERROR_NONFATAL); - + +#ifndef WIN32 signal(SIGALRM,sig_alrm); - - +#endif + if (argc <= 1){ - file = "../../test-data/recur.txt"; + file = "../../test-data/recur.txt"; } else if (argc == 2){ - file = argv[1]; + file = argv[1]; } else { - fprintf(stderr,"usage: recur [input file]\n"); - exit(1); + fprintf(stderr,"usage: recur [input file]\n"); + exit(1); } - + +#ifndef WIN32 alarm(300); /* to get file lock */ +#endif cin = icalfileset_new(file); +#ifndef WIN32 alarm(0); - +#endif + if(cin == 0){ - fprintf(stderr,"recur: can't open file %s\n",file); - exit(1); + fprintf(stderr,"recur: can't open file %s\n",file); + exit(1); } - - - for (itr = icalfileset_get_first_component(cin); - itr != 0; - itr = icalfileset_get_next_component(cin)){ - - desc = icalcomponent_get_first_property(itr,ICAL_DESCRIPTION_PROPERTY); - dtstart = icalcomponent_get_first_property(itr,ICAL_DTSTART_PROPERTY); - rrule = icalcomponent_get_first_property(itr,ICAL_RRULE_PROPERTY); - - if (desc == 0 || dtstart == 0 || rrule == 0){ - printf("\n******** Error in input component ********\n"); - printf("The following component is malformed:\n %s\n", - icalcomponent_as_ical_string(itr)); - continue; - } - - printf("\n\n#### %s\n",icalproperty_get_description(desc)); - printf("#### %s\n",icalvalue_as_ical_string(icalproperty_get_value(rrule))); - recur = icalproperty_get_rrule(rrule); - start = icalproperty_get_dtstart(dtstart); - ritr = icalrecur_iterator_new(recur,start); - tt = icaltime_as_timet(start); - - printf("#### %s\n",ctime(&tt )); - - for(ritr = icalrecur_iterator_new(recur,start), - next = icalrecur_iterator_next(ritr); - !icaltime_is_null_time(next); - next = icalrecur_iterator_next(ritr)){ - - tt = icaltime_as_timet(next); - - printf(" %s",ctime(&tt )); - - } - + for (itr = icalfileset_get_first_component(cin); + itr != 0; + itr = icalfileset_get_next_component(cin)){ + + struct icaltimetype start = icaltime_from_timet(1,0); + struct icaltimetype end = icaltime_today(); + + + + desc = icalcomponent_get_first_property(itr,ICAL_DESCRIPTION_PROPERTY); + dtstart = icalcomponent_get_first_property(itr,ICAL_DTSTART_PROPERTY); + rrule = icalcomponent_get_first_property(itr,ICAL_RRULE_PROPERTY); + + if (desc == 0 || dtstart == 0 || rrule == 0){ + printf("\n******** Error in input component ********\n"); + printf("The following component is malformed:\n %s\n", + icalcomponent_as_ical_string(itr)); + continue; + } + + printf("\n\n#### %s\n",icalproperty_get_description(desc)); + printf("#### %s\n",icalvalue_as_ical_string(icalproperty_get_value(rrule))); + recur = icalproperty_get_rrule(rrule); + start = icalproperty_get_dtstart(dtstart); + + ritr = icalrecur_iterator_new(recur,start); + + tt = icaltime_as_timet(start); + + printf("#### %s\n",ctime(&tt )); + + icalrecur_iterator_free(ritr); + + for(ritr = icalrecur_iterator_new(recur,start), + next = icalrecur_iterator_next(ritr); + !icaltime_is_null_time(next); + next = icalrecur_iterator_next(ritr)){ + + tt = icaltime_as_timet(next); + + printf(" %s",ctime(&tt )); + + } + icalrecur_iterator_free(ritr); + + icalcomponent_foreach_recurrence(itr, start, end, + recur_callback, NULL); + + + } + icalset_free(cin); + + icaltimezone_free_builtin_timezones(); + + icalmemory_free_ring(); + + free_zone_directory(); + return 0; } |