Back to index

courier  0.68.2
testrfc3676parser.c
Go to the documentation of this file.
00001 /*
00002 ** Copyright 2011 Double Precision, Inc.
00003 ** See COPYING for distribution information.
00004 */
00005 
00006 #include      "rfc3676parser.h"
00007 
00008 #include      <stdlib.h>
00009 #include      <stdio.h>
00010 
00011 
00012 static int line_begin(size_t quote_level, void *arg)
00013 {
00014        printf("[%d: ", (int)quote_level);
00015        return 0;
00016 }
00017 
00018 static int line_contents(const unicode_char *txt,
00019                       size_t txt_size,
00020                       void *arg)
00021 {
00022        while (txt_size--)
00023               putchar(*txt++);
00024        return 0;
00025 }
00026 
00027 static int line_flowed_notify(void *arg)
00028 {
00029        printf("...");
00030        return 0;
00031 }
00032 
00033 static int line_end(void *arg)
00034 {
00035        printf("]\n");
00036        return 0;
00037 }
00038 
00039 int main(int argc, char **argv)
00040 {
00041        struct rfc3676_parser_info info;
00042        int n=0;
00043        char buf[BUFSIZ];
00044        rfc3676_parser_t parser;
00045 
00046        if (argc > 1)
00047               n=atoi(argv[1]);
00048 
00049        memset(&info, 0, sizeof(info));
00050 
00051        info.charset="utf-8";
00052 
00053        info.isflowed=n != 0;
00054        info.isdelsp= n == 2;
00055 
00056        info.line_begin=line_begin;
00057        info.line_contents=line_contents;
00058        info.line_flowed_notify=line_flowed_notify;
00059        info.line_end=line_end;
00060 
00061        if ((parser=rfc3676parser_init(&info)) != NULL)
00062        {
00063               while (fgets(buf, sizeof(buf), stdin))
00064                      rfc3676parser(parser, buf, strlen(buf));
00065               rfc3676parser_deinit(parser, NULL);
00066               printf("\n");
00067        }
00068 
00069        return (0);
00070 }