aboutsummaryrefslogtreecommitdiffstats
path: root/libical/src/test/icaltestparser.c
diff options
context:
space:
mode:
Diffstat (limited to 'libical/src/test/icaltestparser.c')
-rw-r--r--libical/src/test/icaltestparser.c123
1 files changed, 68 insertions, 55 deletions
diff --git a/libical/src/test/icaltestparser.c b/libical/src/test/icaltestparser.c
index d56af49258..3f07fcd044 100644
--- a/libical/src/test/icaltestparser.c
+++ b/libical/src/test/icaltestparser.c
@@ -33,78 +33,91 @@
#include <stdlib.h>
-char str[] = "BEGIN:VCALENDAR
-PRODID:\"-//RDU Software//NONSGML HandCal//EN\"
-VERSION:2.0
-BEGIN:VTIMEZONE
-TZID:US-Eastern
-BEGIN:STANDARD
-DTSTART:19990404T020000
-RDATE:19990u404xT020000
-TZOFFSETFROM:-0500
-TZOFFSETTO:-0400
-END:STANDARD
-BEGIN:DAYLIGHT
-DTSTART:19990404T020000
-RDATE:19990404T020000
-TZOFFSETFROM:-0500
-TZOFFSETTO:-0400
-TZNAME:EDT
-Dkjhgri:derhvnv;
-BEGIN:dfkjh
-END:dfdfkjh
-END:DAYLIGHT
-END:VTIMEZONE
-BEGIN:VEVENT
-GEO:Bongo
-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
+char str[] = "BEGIN:VCALENDAR\
+PRODID:\"-//RDU Software//NONSGML HandCal//EN\"\
+VERSION:2.0\
+BEGIN:VTIMEZONE\
+TZID:US-Eastern\
+BEGIN:STANDARD\
+DTSTART:19990404T020000\
+RDATE:19990u404xT020000\
+TZOFFSETFROM:-0500\
+TZOFFSETTO:-0400\
+END:STANDARD\
+BEGIN:DAYLIGHT\
+DTSTART:19990404T020000\
+RDATE:19990404T020000\
+TZOFFSETFROM:-0500\
+TZOFFSETTO:-0400\
+TZNAME:EDT\
+Dkjhgri:derhvnv;\
+BEGIN:dfkjh\
+END:dfdfkjh\
+END:DAYLIGHT\
+END:VTIMEZONE\
+BEGIN:VEVENT\
+GEO:Bongo\
+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\
";
extern int yydebug;
/* Have the parser fetch data from stdin */
-char* read_stdin(char *s, size_t size, void *d)
+char* read_stream(char *s, size_t size, void *d)
{
- char *c = fgets(s,size, stdin);
+ char *c = fgets(s,size, (FILE*)d);
return c;
}
-int main()
+
+
+int main(int argc, char* argv[])
{
- /* This is how we would have the parser parse a string */
- /* icalcomponent *c = icalparser_parse_string(str);*/
+ int lineno = 0;
+ char* line;
+ FILE* stream;
+ icalcomponent *c;
+ icalparser *parser = icalparser_new();
- icalcomponent *c = icalparser_parse(read_stdin);
+ stream = fopen(argv[1],"r");
- printf("%s\n",icalcomponent_as_ical_string(c));
+ assert(stream != 0);
- /* Strip errors and spit it out again
- printf("\n%d Errors in Component\n",icalcomponent_count_errors(c));
- icalcomponent_strip_errors(c);
- printf("%s\n",icalcomponent_as_ical_string(c));
- */
+ icalparser_set_gen_data(parser,stream);
- icalmemory_free_ring();
- icalcomponent_free(c);
+ do{
+
+ line = icalparser_get_line(parser,read_stream);
- return 1;
-}
+ c = icalparser_add_line(parser,line);
+ if (c != 0){
+ icalcomponent_convert_errors(c);
+ printf("%s",icalcomponent_as_ical_string(c));
+ icalparser_claim(parser);
+ printf("\n---------------\n");
+ icalcomponent_free(c);
+ }
+
+ } while ( line != 0);
+
+
+}