Back to index

courier  0.68.2
testmaildirsearch.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      "maildirsearch.h"
00007 
00008 
00009 static int testmaildirsearch(const char *chset, const char *needle,
00010                           const char *haystack)
00011 {
00012        struct maildir_searchengine se;
00013        unicode_char *ucptr;
00014        size_t ucsize;
00015        size_t i;
00016        libmail_u_convert_handle_t h=libmail_u_convert_tou_init(chset, &ucptr,
00017                                                         &ucsize, 1);
00018 
00019        if (h == NULL)
00020        {
00021               perror("libmail_u_convert_tou_init");
00022               return 1;
00023        }
00024 
00025        if (libmail_u_convert(h, haystack, strlen(haystack)))
00026        {
00027               libmail_u_convert_deinit(h, NULL);
00028               perror("libmail_u_convert_tou");
00029               return 1;
00030        }
00031 
00032        if (libmail_u_convert_deinit(h, NULL))
00033        {
00034               perror("libmail_u_convert_deinit");
00035               return 1;
00036        }
00037 
00038        maildir_search_init(&se);
00039 
00040        if (maildir_search_start_str_chset(&se, needle, chset))
00041        {
00042               perror("maildir_search_start_str_chset");
00043               maildir_search_destroy(&se);
00044               free(ucptr);
00045               return 1;
00046        }
00047        maildir_search_reset(&se);
00048 
00049        for (i=0; ucptr[i]; ++i)
00050        {
00051               maildir_search_step_unicode_lc(&se, ucptr[i]);
00052               if (maildir_search_found(&se))
00053               {
00054                      free(ucptr);
00055                      maildir_search_destroy(&se);
00056                      return 0;
00057               }
00058        }
00059        free(ucptr);
00060        maildir_search_destroy(&se);
00061        return 2;
00062 }
00063 
00064 int main(int argc, char **argv)
00065 {
00066        if (argc < 4)
00067        {
00068               fprintf(stderr, "Invalid args\n");
00069               return (1);
00070        }
00071 
00072        exit(testmaildirsearch(argv[1], argv[2], argv[3]));
00073        return (0);
00074 }