summaryrefslogtreecommitdiff
path: root/examples/parse_text.c
diff options
context:
space:
mode:
authorAllen Winter <allen.winter@kdab.com>2014-06-28 17:45:24 -0400
committerAllen Winter <allen.winter@kdab.com>2014-06-28 17:45:24 -0400
commit43858141030ba123a4959231cadc9951b983f0fd (patch)
tree8256c1dbf3ca7c9e58a3dbecf07cf826fb2e0ce2 /examples/parse_text.c
downloadlibical-git-1.0.0.tar.gz
libical 1.0.0 (non-ancestor)v1.0.01.0.0
Diffstat (limited to 'examples/parse_text.c')
-rw-r--r--examples/parse_text.c70
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);
+}