Back to index

courier  0.68.2
Functions
testmaildirfilter.c File Reference
#include "maildirfilter.h"
#include "maildirfiltertypelist.h"
#include <stdio.h>
#include <string.h>
#include <unistd.h>

Go to the source code of this file.

Functions

int main (int argc, char **argv)

Function Documentation

int main ( int  argc,
char **  argv 
)

Definition at line 13 of file testmaildirfilter.c.

{
const char *name;
enum maildirfiltertype type;
const char *header;
const char *value;
const char *folder;
int errcode, i;
struct maildirfilter mf;
struct maildirfilterrule *r;
int flags=0;

       if (argc < 6)
       {
              fprintf(stderr, "Invalid args\n");
              return (1);
       }

       name=argv[1];

       value=argv[2];
       if (*value == '-')
       {
              flags |= MFR_DOESNOT;
              ++value;
       }
       if (*value == '/')
       {
              flags |= MFR_BODY;
              ++value;
       }

       for (i=0; typelist[i].name; i++)
              if (strcasecmp(typelist[i].name, value) == 0)
                     break;
       if (!typelist[i].name)
       {
              fprintf(stderr, "unknown op: %s\n", argv[2]);
              return (1);
       }
       type=typelist[i].type;
       header=argv[3];
       value=argv[4];
       folder=argv[5];

       memset(&mf, 0, sizeof(mf));

       errcode=maildir_filter_loadrules(&mf, "testrules");
       if (errcode && errcode != MF_LOADNOTFOUND)
       {
              fprintf(stderr, "Error loading testrules: %d\n", errcode);
              return (1);
       }

       r=maildir_filter_appendrule(&mf, name, type, flags,
              header, value, folder, "", &errcode);

       if (!r)
       {
              fprintf(stderr, "Error appending %s: %d\n", name, errcode);
              return (1);
       }

       unlink("maildirsize");
       errcode=maildir_filter_saverules(&mf, "testrules2", ".", "Maildir", "nobody@example.com");
       if (errcode)
       {
              fprintf(stderr, "Error saving testrules2: %d\n", errcode);
              return (1);
       }
       rename("testrules2", "testrules");
       printf("Added %s\n", name);
       return (0);
}

Here is the call graph for this function: