diff options
author | Allen Winter <allen.winter@kdab.com> | 2014-06-28 17:45:24 -0400 |
---|---|---|
committer | Allen Winter <allen.winter@kdab.com> | 2014-06-28 17:45:24 -0400 |
commit | 43858141030ba123a4959231cadc9951b983f0fd (patch) | |
tree | 8256c1dbf3ca7c9e58a3dbecf07cf826fb2e0ce2 /examples/parse_text.c | |
download | libical-git-1.0.0.tar.gz |
Diffstat (limited to 'examples/parse_text.c')
-rw-r--r-- | examples/parse_text.c | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/examples/parse_text.c b/examples/parse_text.c new file mode 100644 index 00000000..2fc9051b --- /dev/null +++ b/examples/parse_text.c @@ -0,0 +1,70 @@ +/* parse_text.c + + */ +#include <stdio.h> +#include <errno.h> +#include <stdio.h> +#include <string.h> +#include <libical/ical.h> + +#include <stdlib.h> + +/* The icalparser_get_line routine will create a single *content* line +out of one or more input lines. The content line is all of the +properties and values for a single property, and it can span several +input lines. So, icalparser_get_line will need to be able to get more +data on its own. Read_string is a routine that does this. You can +write your own version of read stream to get data from other types of +files, sockets, etc. */ + +char* read_stream(char *s, size_t size, void *d) +{ + char *c = fgets(s,size, (FILE*)d); + + return c; + +} + +void parse_text(int argc, char* argv[]) +{ + + char* line; + FILE* stream; + icalcomponent *c; + + /* Create a new parser object */ + icalparser *parser = icalparser_new(); + + stream = fopen(argv[1],"r"); + + assert(stream != 0); + + /* Tell the parser what input routie it should use. */ + icalparser_set_gen_data(parser,stream); + + do{ + + /* Get a single content line by making one or more calls to + read_stream()*/ + line = icalparser_get_line(parser,read_stream); + + /* Now, add that line into the parser object. If that line + completes a component, c will be non-zero */ + c = icalparser_add_line(parser,line); + + + if (c != 0){ + char *temp = icalcomponent_as_ical_string_r(c); + printf("%s", temp); + free(temp); + + printf("\n---------------\n"); + + icalcomponent_free(c); + } + + } while ( line != 0); + + + icalparser_free(parser); +} |