Back to index

lightning-sunbird  0.9+nobinonly
Functions
recur.c File Reference
#include <assert.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <signal.h>
#include <unistd.h>
#include "ical.h"
#include "icalss.h"

Go to the source code of this file.

Functions

static void sig_alrm (int i)
static void recur_callback (icalcomponent *comp, struct icaltime_span *span, void *data)
int main (int argc, char *argv[])

Function Documentation

int main ( int  argc,
char *  argv[] 
)

Definition at line 60 of file recur.c.

{
    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";
    } else if (argc == 2){
              file = argv[1];
    } else {
              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);
      

              
    }

       icalset_free(cin);

       icaltimezone_free_builtin_timezones();
       
       icalmemory_free_ring();
       
       free_zone_directory();
       
    return 0;
}

Here is the call graph for this function:

static void recur_callback ( icalcomponent *  comp,
struct icaltime_span span,
void data 
) [static]

Definition at line 51 of file recur.c.

{
  printf("cb: %s", ctime(&span->start));
  printf("    %s\n", ctime(&span->end));

}

Here is the caller graph for this function:

static void sig_alrm ( int  i) [static]

Definition at line 46 of file recur.c.

                           {
    fprintf(stderr,"Could not get lock on file\n");
    exit(1);
}

Here is the call graph for this function:

Here is the caller graph for this function: