diff options
Diffstat (limited to 'libical/src/test/recur.c')
-rw-r--r-- | libical/src/test/recur.c | 151 |
1 files changed, 55 insertions, 96 deletions
diff --git a/libical/src/test/recur.c b/libical/src/test/recur.c index bb23337adb..f4d9a38647 100644 --- a/libical/src/test/recur.c +++ b/libical/src/test/recur.c @@ -25,137 +25,96 @@ ======================================================================*/ +#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 */ -#endif - -#include "ical.h" -#include "icalss.h" - -#ifdef WIN32 -#define snprintf _snprintf -#define strcasecmp stricmp -#endif +#include "icalmemory.h" +#include "icaldirset.h" +#include "icalfileset.h" 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[]) { - icalset *cin; - struct icaltimetype next; + icalfileset *cin; + struct icaltimetype start, 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); - } - - - 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); - - - + fprintf(stderr,"recur: can't open file %s\n",file); + exit(1); } - icalset_free(cin); - icaltimezone_free_builtin_timezones(); - - icalmemory_free_ring(); + 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); - free_zone_directory(); + 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 )); + + } + + } + return 0; } |