void MainWindow::saveToIcsFile(icalcomponent *comp, std::string uid) { icalset* file = icalfileset_new("/home/quentin/Public/test.ics"); icalfileset *fset = (icalfileset*) file; icalcomponent* old = fetch(file, uid.c_str()); if (old != NULL) { icalcomponent_remove_component(icalcomponent_get_first_component(fset->cluster, ICAL_ANY_COMPONENT), old); } icalcomponent_add_component(icalcomponent_get_first_component(fset->cluster, ICAL_ANY_COMPONENT), comp); icalfileset_mark(file); icalfileset_commit(file); icalfileset_free(file); }
int main(int c, char *argv[]){ icalset *clusterin, *clusterout = NULL; icalcomponent *itr; int count=0; int tostdout = 0; if(c < 2 || c > 3){ usage(argv[0]); exit(1); } if (c == 2){ tostdout = 1; } /*icalerror_set_error_state(ICAL_PARSE_ERROR, ICAL_ERROR_NONFATAL);*/ #ifdef SIGALRM signal(SIGALRM,sig_alrm); alarm(10); #endif clusterin = icalfileset_new(argv[1]); #ifdef SIGALRM alarm(0); #endif if (clusterin == 0){ printf("Could not open input cluster \"%s\"\n",argv[1]); if(icalerrno!= ICAL_NO_ERROR){ printf("Error: %s\n",icalerror_strerror(icalerrno)); } exit(1); } if (!tostdout){ #ifdef SIGALRM alarm(10); #endif clusterout = icalfileset_new(argv[2]); #ifdef SIGALRM alarm(0); #endif if (clusterout == 0){ printf("Could not open output cluster \"%s\"\n",argv[2]); exit(1); } } for (itr = icalset_get_first_component(clusterin); itr != 0; itr = icalset_get_next_component(clusterin)){ icalerror_set_error_state(ICAL_BADARG_ERROR, ICAL_ERROR_NONFATAL); icalrestriction_check(itr); icalerror_set_error_state(ICAL_BADARG_ERROR, ICAL_ERROR_DEFAULT); if (itr != 0){ if(tostdout){ printf("--------------\n%s\n",icalcomponent_as_ical_string(itr)); } else { icalfileset_add_component(clusterout, icalcomponent_new_clone(itr)); } count++; } else { printf("Got NULL component"); } } printf("Transfered %d components\n",count); icalset_free(clusterin); if (!tostdout){ icalfileset_mark(clusterout); icalset_free(clusterout); } return 0; }