indent -kr -i8 -brf -bbb -fnc -l132 -nce on all of webcit-classic
[citadel.git] / webcit / sieve.c
index 2e3d615853b4f09c68964856ed41ba3b2c358b03..528009ef3f1ebb3f9899175d6aa427631308e28d 100644 (file)
@@ -1,3 +1,4 @@
+
 /*
  * Copyright (c) 1996-2020 by the citadel.org team
  *
@@ -48,19 +49,20 @@ void parse_fields_from_rule_editor(void) {
        char rule[2048];
        char encoded_rule[4096];
        char my_addresses[4096];
-       
+
        /* Enumerate my email addresses in case they are needed for a vacation rule */
        my_addresses[0] = 0;
        serv_puts("GVEA");
        serv_getln(buf, sizeof buf);
-       if (buf[0] == '1') while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) {
-               if (!IsEmptyStr(my_addresses)) {
-                       strcat(my_addresses, ",\n");
+       if (buf[0] == '1')
+               while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) {
+                       if (!IsEmptyStr(my_addresses)) {
+                               strcat(my_addresses, ",\n");
+                       }
+                       strcat(my_addresses, "\"");
+                       strcat(my_addresses, buf);
+                       strcat(my_addresses, "\"");
                }
-               strcat(my_addresses, "\"");
-               strcat(my_addresses, buf);
-               strcat(my_addresses, "\"");
-       }
 
        /* Now generate the script and write it to the Citadel server */
        serv_printf("PIBR");
@@ -69,51 +71,49 @@ void parse_fields_from_rule_editor(void) {
                return;
        }
 
-       for (i=0; i<MAX_RULES; ++i) {
-               
+       for (i = 0; i < MAX_RULES; ++i) {
+
                strcpy(rule, "");
 
                sprintf(fname, "active%d", i);
-               active = !strcasecmp(BSTR(fname), "on") ;
+               active = !strcasecmp(BSTR(fname), "on");
 
                if (active) {
 
                        sprintf(fname, "hfield%d", i);
                        safestrncpy(hfield, BSTR(fname), sizeof hfield);
-       
+
                        sprintf(fname, "compare%d", i);
                        safestrncpy(compare, BSTR(fname), sizeof compare);
-       
+
                        sprintf(fname, "htext%d", i);
                        safestrncpy(htext, BSTR(fname), sizeof htext);
-       
+
                        sprintf(fname, "sizecomp%d", i);
                        safestrncpy(sizecomp, BSTR(fname), sizeof sizecomp);
-       
+
                        sprintf(fname, "sizeval%d", i);
                        sizeval = IBSTR(fname);
-       
+
                        sprintf(fname, "action%d", i);
                        safestrncpy(action, BSTR(fname), sizeof action);
-       
+
                        sprintf(fname, "fileinto%d", i);
                        safestrncpy(fileinto, BSTR(fname), sizeof fileinto);
-       
+
                        sprintf(fname, "redirect%d", i);
                        safestrncpy(redirect, BSTR(fname), sizeof redirect);
-       
+
                        sprintf(fname, "automsg%d", i);
                        safestrncpy(automsg, BSTR(fname), sizeof automsg);
-       
+
                        sprintf(fname, "final%d", i);
                        safestrncpy(final, BSTR(fname), sizeof final);
-       
+
                        snprintf(rule, sizeof rule, "%d|%s|%s|%s|%s|%d|%s|%s|%s|%s|%s",
-                               active, hfield, compare, htext, sizecomp, sizeval, action, fileinto,
-                               redirect, automsg, final
-                       );
-       
-                       size_t len = CtdlEncodeBase64(encoded_rule, rule, strlen(rule)+1, BASE64_NO_LINEBREAKS);
+                                active, hfield, compare, htext, sizecomp, sizeval, action, fileinto, redirect, automsg, final);
+
+                       size_t len = CtdlEncodeBase64(encoded_rule, rule, strlen(rule) + 1, BASE64_NO_LINEBREAKS);
                        if (encoded_rule[len - 1] == '\n') {
                                encoded_rule[len - 1] = '\0';
                        }
@@ -171,43 +171,37 @@ typedef struct __SieveListing {
        StrBuf *Content;
 } SieveListing;
 
-int ConditionalSieveScriptIsActive(StrBuf *Target, WCTemplputParams *TP)
-{
-       SieveListing     *SieveList = (SieveListing *)CTX(CTX_SIEVELIST);
+int ConditionalSieveScriptIsActive(StrBuf * Target, WCTemplputParams * TP) {
+       SieveListing *SieveList = (SieveListing *) CTX(CTX_SIEVELIST);
        return SieveList->IsActive;
 }
-int ConditionalSieveScriptIsRulesScript(StrBuf *Target, WCTemplputParams *TP)
-{
-       SieveListing     *SieveList = (SieveListing *)CTX(CTX_SIEVELIST);
+int ConditionalSieveScriptIsRulesScript(StrBuf * Target, WCTemplputParams * TP) {
+       SieveListing *SieveList = (SieveListing *) CTX(CTX_SIEVELIST);
        return SieveList->IsActive;
 }
-void tmplput_SieveScriptName(StrBuf *Target, WCTemplputParams *TP) 
-{
-       SieveListing     *SieveList = (SieveListing *)CTX(CTX_SIEVELIST);
+void tmplput_SieveScriptName(StrBuf * Target, WCTemplputParams * TP) {
+       SieveListing *SieveList = (SieveListing *) CTX(CTX_SIEVELIST);
        StrBufAppendTemplate(Target, TP, SieveList->Name, 0);
 }
-void tmplput_SieveScriptContent(StrBuf *Target, WCTemplputParams *TP) 
-{
-       SieveListing     *SieveList = (SieveListing *)CTX(CTX_SIEVELIST);
+void tmplput_SieveScriptContent(StrBuf * Target, WCTemplputParams * TP) {
+       SieveListing *SieveList = (SieveListing *) CTX(CTX_SIEVELIST);
        StrBufAppendTemplate(Target, TP, SieveList->Content, 0);
 }
-void FreeSieveListing(void *vSieveListing)
-{
-       SieveListing *List = (SieveListing*) vSieveListing;
+void FreeSieveListing(void *vSieveListing) {
+       SieveListing *List = (SieveListing *) vSieveListing;
 
        FreeStrBuf(&List->Name);
        free(List);
 }
 
-HashList *GetSieveScriptListing(StrBuf *Target, WCTemplputParams *TP)
-{
-        wcsession *WCC = WC;
+HashList *GetSieveScriptListing(StrBuf * Target, WCTemplputParams * TP) {
+       wcsession *WCC = WC;
        StrBuf *Line;
        int num_scripts = 0;
        int rules_script_active = 0;
        int have_rules_script = 0;
        const char *pch;
-       HashPos  *it;
+       HashPos *it;
        int Done = 0;
        SieveListing *Ruleset;
 
@@ -218,31 +212,25 @@ HashList *GetSieveScriptListing(StrBuf *Target, WCTemplputParams *TP)
        serv_puts("MSIV listscripts");
        Line = NewStrBuf();
        StrBuf_ServGetln(Line);
-       if (GetServerStatus(Line, NULL) == 1) 
-       {
+       if (GetServerStatus(Line, NULL) == 1) {
                WCC->KnownSieveScripts = NewHash(1, Flathash);
 
-               while(!Done && (StrBuf_ServGetln(Line) >= 0) )
-                       if ( (StrLength(Line)==3) && 
-                            !strcmp(ChrPtr(Line), "000")) 
-                       {
+               while (!Done && (StrBuf_ServGetln(Line) >= 0))
+                       if ((StrLength(Line) == 3) && !strcmp(ChrPtr(Line), "000")) {
                                Done = 1;
                        }
-                       else
-                       {
+                       else {
                                pch = NULL;
                                Ruleset = (SieveListing *) malloc(sizeof(SieveListing));
                                Ruleset->Name = NewStrBufPlain(NULL, StrLength(Line));
                                StrBufExtract_NextToken(Ruleset->Name, Line, &pch, '|');
-                               Ruleset->IsActive = StrBufExtractNext_int(Line, &pch, '|'); 
+                               Ruleset->IsActive = StrBufExtractNext_int(Line, &pch, '|');
                                Ruleset->Content = NULL;
 
-                               if (!strcasecmp(ChrPtr(Ruleset->Name), RULES_SCRIPT))
-                               {
+                               if (!strcasecmp(ChrPtr(Ruleset->Name), RULES_SCRIPT)) {
                                        Ruleset->IsRulesScript = 1;
                                        have_rules_script = 1;
-                                       if (Ruleset->IsActive)
-                                       {
+                                       if (Ruleset->IsActive) {
                                                rules_script_active = 1;
                                                PutBstr(HKEY("__SIEVE:RULESSCRIPT"), NewStrBufPlain(HKEY("1")));
                                        }
@@ -257,8 +245,7 @@ HashList *GetSieveScriptListing(StrBuf *Target, WCTemplputParams *TP)
                PutBstr(HKEY("__SIEVE:EXTERNAL_SCRIPT"), NewStrBufPlain(HKEY("1")));
        }
 
-       if (num_scripts > have_rules_script)
-       {
+       if (num_scripts > have_rules_script) {
                long rc = 0;
                long len;
                const char *Key;
@@ -270,29 +257,24 @@ HashList *GetSieveScriptListing(StrBuf *Target, WCTemplputParams *TP)
                PutBstr(HKEY("__SIEVE:HAVE_EXTERNAL_SCRIPT"), NewStrBufPlain(HKEY("1")));
 
                it = GetNewHashPos(WCC->KnownSieveScripts, 0);
-               while (GetNextHashPos(WCC->KnownSieveScripts, it, &len, &Key, &vRuleset) && 
-                      (vRuleset != NULL))
-               {
+               while (GetNextHashPos(WCC->KnownSieveScripts, it, &len, &Key, &vRuleset) && (vRuleset != NULL)) {
                        Ruleset = (SieveListing *) vRuleset;
                        serv_printf("MSIV getscript|%s", ChrPtr(Ruleset->Name));
                        StrBuf_ServGetln(Line);
-                       if (GetServerStatus(Line, NULL) == 1) 
-                       {
+                       if (GetServerStatus(Line, NULL) == 1) {
                                Ruleset->Content = NewStrBuf();
                                Done = 0;
-                               while(!Done && (rc = StrBuf_ServGetln(Line), rc >= 0) )
-                                       if ( (StrLength(Line)==3) && 
-                                            !strcmp(ChrPtr(Line), "000")) 
-                                       {
+                               while (!Done && (rc = StrBuf_ServGetln(Line), rc >= 0))
+                                       if ((StrLength(Line) == 3) && !strcmp(ChrPtr(Line), "000")) {
                                                Done = 1;
                                        }
-                                       else
-                                       {
-                                               if (StrLength(Ruleset->Content)>0)
+                                       else {
+                                               if (StrLength(Ruleset->Content) > 0)
                                                        StrBufAppendBufPlain(Ruleset->Content, HKEY("\n"), 0);
                                                StrBufAppendBuf(Ruleset->Content, Line, 0);
                                        }
-                               if (rc < 0) break;
+                               if (rc < 0)
+                                       break;
                        }
                }
        }
@@ -301,22 +283,21 @@ HashList *GetSieveScriptListing(StrBuf *Target, WCTemplputParams *TP)
 }
 
 
-typedef enum __eSieveHfield 
-{
-       from,           
-       tocc,           
-       subject,        
-       replyto,        
-       sender, 
-       resentfrom,     
-       resentto,       
-       envfrom,        
-       envto,  
-       xmailer,        
-       xspamflag,      
-       xspamstatus,    
-       listid, 
-       size,           
+typedef enum __eSieveHfield {
+       from,
+       tocc,
+       subject,
+       replyto,
+       sender,
+       resentfrom,
+       resentto,
+       envfrom,
+       envto,
+       xmailer,
+       xspamflag,
+       xspamstatus,
+       listid,
+       size,
        all
 } eSieveHfield;
 
@@ -362,128 +343,89 @@ typedef struct __SieveRule {
        StrBuf *redirect;
        StrBuf *automsg;
        eSieveFinal final;
-}SieveRule;
+} SieveRule;
 
 
 
-int ConditionalSieveRule_hfield(StrBuf *Target, WCTemplputParams *TP)
-{
-       SieveRule     *Rule = (SieveRule *)CTX(CTX_SIEVESCRIPT);
-       
-        return GetTemplateTokenNumber(Target, 
-                                      TP, 
-                                      3, 
-                                      from)
-                ==
-                Rule->hfield;
+int ConditionalSieveRule_hfield(StrBuf * Target, WCTemplputParams * TP) {
+       SieveRule *Rule = (SieveRule *) CTX(CTX_SIEVESCRIPT);
+
+       return GetTemplateTokenNumber(Target, TP, 3, from)
+           == Rule->hfield;
 }
-int ConditionalSieveRule_compare(StrBuf *Target, WCTemplputParams *TP)
-{
-       SieveRule     *Rule = (SieveRule *)CTX(CTX_SIEVESCRIPT);
-        return GetTemplateTokenNumber(Target, 
-                                      TP, 
-                                      3, 
-                                      contains)
-                ==
-               Rule->compare;
+int ConditionalSieveRule_compare(StrBuf * Target, WCTemplputParams * TP) {
+       SieveRule *Rule = (SieveRule *) CTX(CTX_SIEVESCRIPT);
+       return GetTemplateTokenNumber(Target, TP, 3, contains)
+           == Rule->compare;
 }
-int ConditionalSieveRule_action(StrBuf *Target, WCTemplputParams *TP)
-{
-       SieveRule     *Rule = (SieveRule *)CTX(CTX_SIEVESCRIPT);
-        return GetTemplateTokenNumber(Target, 
-                                      TP, 
-                                      3, 
-                                      keep)
-                ==
-               Rule->Action; 
+int ConditionalSieveRule_action(StrBuf * Target, WCTemplputParams * TP) {
+       SieveRule *Rule = (SieveRule *) CTX(CTX_SIEVESCRIPT);
+       return GetTemplateTokenNumber(Target, TP, 3, keep)
+           == Rule->Action;
 }
-int ConditionalSieveRule_sizecomp(StrBuf *Target, WCTemplputParams *TP)
-{
-       SieveRule     *Rule = (SieveRule *)CTX(CTX_SIEVESCRIPT);
-        return GetTemplateTokenNumber(Target, 
-                                      TP, 
-                                      3, 
-                                      larger)
-                ==
-               Rule->sizecomp;
+int ConditionalSieveRule_sizecomp(StrBuf * Target, WCTemplputParams * TP) {
+       SieveRule *Rule = (SieveRule *) CTX(CTX_SIEVESCRIPT);
+       return GetTemplateTokenNumber(Target, TP, 3, larger)
+           == Rule->sizecomp;
 }
-int ConditionalSieveRule_final(StrBuf *Target, WCTemplputParams *TP)
-{
-       SieveRule     *Rule = (SieveRule *)CTX(CTX_SIEVESCRIPT);
-        return GetTemplateTokenNumber(Target, 
-                                      TP, 
-                                      3, 
-                                      econtinue)
-                ==
-               Rule->final;
+int ConditionalSieveRule_final(StrBuf * Target, WCTemplputParams * TP) {
+       SieveRule *Rule = (SieveRule *) CTX(CTX_SIEVESCRIPT);
+       return GetTemplateTokenNumber(Target, TP, 3, econtinue)
+           == Rule->final;
 }
-int ConditionalSieveRule_ThisRoom(StrBuf *Target, WCTemplputParams *TP)
-{
-       SieveRule     *Rule = (SieveRule *)CTX(CTX_SIEVESCRIPT);
-        return GetTemplateTokenNumber(Target, 
-                                      TP, 
-                                      3, 
-                                      econtinue)
-                ==
-               Rule->final;
+int ConditionalSieveRule_ThisRoom(StrBuf * Target, WCTemplputParams * TP) {
+       SieveRule *Rule = (SieveRule *) CTX(CTX_SIEVESCRIPT);
+       return GetTemplateTokenNumber(Target, TP, 3, econtinue)
+           == Rule->final;
 }
-int ConditionalSieveRule_Active(StrBuf *Target, WCTemplputParams *TP)
-{
-       SieveRule     *Rule = (SieveRule *)CTX(CTX_SIEVESCRIPT);
-        return Rule->active;
+int ConditionalSieveRule_Active(StrBuf * Target, WCTemplputParams * TP) {
+       SieveRule *Rule = (SieveRule *) CTX(CTX_SIEVESCRIPT);
+       return Rule->active;
 }
-void tmplput_SieveRule_htext(StrBuf *Target, WCTemplputParams *TP) 
-{
-       SieveRule     *Rule = (SieveRule *)CTX(CTX_SIEVESCRIPT);
+void tmplput_SieveRule_htext(StrBuf * Target, WCTemplputParams * TP) {
+       SieveRule *Rule = (SieveRule *) CTX(CTX_SIEVESCRIPT);
        StrBufAppendTemplate(Target, TP, Rule->htext, 0);
 }
-void tmplput_SieveRule_fileinto(StrBuf *Target, WCTemplputParams *TP) 
-{
-       SieveRule     *Rule = (SieveRule *)CTX(CTX_SIEVESCRIPT);
+void tmplput_SieveRule_fileinto(StrBuf * Target, WCTemplputParams * TP) {
+       SieveRule *Rule = (SieveRule *) CTX(CTX_SIEVESCRIPT);
        StrBufAppendTemplate(Target, TP, Rule->fileinto, 0);
 }
-void tmplput_SieveRule_redirect(StrBuf *Target, WCTemplputParams *TP) 
-{
-       SieveRule     *Rule = (SieveRule *)CTX(CTX_SIEVESCRIPT);
+void tmplput_SieveRule_redirect(StrBuf * Target, WCTemplputParams * TP) {
+       SieveRule *Rule = (SieveRule *) CTX(CTX_SIEVESCRIPT);
        StrBufAppendTemplate(Target, TP, Rule->redirect, 0);
 }
-void tmplput_SieveRule_automsg(StrBuf *Target, WCTemplputParams *TP) 
-{
-       SieveRule     *Rule = (SieveRule *)CTX(CTX_SIEVESCRIPT);
+void tmplput_SieveRule_automsg(StrBuf * Target, WCTemplputParams * TP) {
+       SieveRule *Rule = (SieveRule *) CTX(CTX_SIEVESCRIPT);
        StrBufAppendTemplate(Target, TP, Rule->automsg, 0);
 }
-void tmplput_SieveRule_sizeval(StrBuf *Target, WCTemplputParams *TP) 
-{
-       SieveRule     *Rule = (SieveRule *)CTX(CTX_SIEVESCRIPT);
+void tmplput_SieveRule_sizeval(StrBuf * Target, WCTemplputParams * TP) {
+       SieveRule *Rule = (SieveRule *) CTX(CTX_SIEVESCRIPT);
        StrBufAppendPrintf(Target, "%d", Rule->sizeval);
 }
 
-void tmplput_SieveRule_lookup_FileIntoRoom(StrBuf *Target, WCTemplputParams *TP) 
-{
+void tmplput_SieveRule_lookup_FileIntoRoom(StrBuf * Target, WCTemplputParams * TP) {
        void *vRoom;
-       SieveRule     *Rule = (SieveRule *)CTX(CTX_SIEVESCRIPT);
-        wcsession *WCC = WC;
+       SieveRule *Rule = (SieveRule *) CTX(CTX_SIEVESCRIPT);
+       wcsession *WCC = WC;
        HashList *Rooms = GetRoomListHashLKRA(Target, TP);
 
        GetHash(Rooms, SKEY(Rule->fileinto), &vRoom);
-       WCC->ThisRoom = (folder*) vRoom;
+       WCC->ThisRoom = (folder *) vRoom;
 }
 
-void FreeSieveRule(void *vRule)
-{
-       SieveRule *Rule = (SieveRule*) vRule;
+void FreeSieveRule(void *vRule) {
+       SieveRule *Rule = (SieveRule *) vRule;
 
        FreeStrBuf(&Rule->htext);
        FreeStrBuf(&Rule->fileinto);
        FreeStrBuf(&Rule->redirect);
        FreeStrBuf(&Rule->automsg);
-       
+
        free(Rule);
 }
 
 #define WC_RULE_HEADER "rule|"
-HashList *GetSieveRules(StrBuf *Target, WCTemplputParams *TP)
-{
+HashList *GetSieveRules(StrBuf * Target, WCTemplputParams * TP) {
        StrBuf *Line = NULL;
        StrBuf *EncodedRule = NULL;
        int n = 0;
@@ -497,38 +439,34 @@ HashList *GetSieveRules(StrBuf *Target, WCTemplputParams *TP)
        Line = NewStrBuf();
        EncodedRule = NewStrBuf();
        StrBuf_ServGetln(Line);
-       if (GetServerStatus(Line, NULL) == 1) 
-       {
-               while(!Done && (StrBuf_ServGetln(Line) >= 0) )
-                       if ( (StrLength(Line)==3) && 
-                            !strcmp(ChrPtr(Line), "000")) 
-                       {
+       if (GetServerStatus(Line, NULL) == 1) {
+               while (!Done && (StrBuf_ServGetln(Line) >= 0))
+                       if ((StrLength(Line) == 3) && !strcmp(ChrPtr(Line), "000")) {
                                Done = 1;
                        }
-                       else
-                       {
+                       else {
                                pch = NULL;
                                /* We just care for our encoded header and skip everything else */
-                               if ((StrLength(Line) > sizeof(WC_RULE_HEADER) - 1) && (!strncasecmp(ChrPtr(Line), HKEY(WC_RULE_HEADER))))
-                               {
+                               if ((StrLength(Line) > sizeof(WC_RULE_HEADER) - 1)
+                                   && (!strncasecmp(ChrPtr(Line), HKEY(WC_RULE_HEADER)))) {
                                        StrBufSkip_NTokenS(Line, &pch, '|', 1);
-                                       n = StrBufExtractNext_int(Line, &pch, '|'); 
+                                       n = StrBufExtractNext_int(Line, &pch, '|');
                                        StrBufExtract_NextToken(EncodedRule, Line, &pch, '|');
                                        StrBufDecodeBase64(EncodedRule);
 
-                                       Rule = (SieveRule*) malloc(sizeof(SieveRule));
+                                       Rule = (SieveRule *) malloc(sizeof(SieveRule));
 
-                                       Rule->htext = NewStrBufPlain (NULL, StrLength(EncodedRule));
+                                       Rule->htext = NewStrBufPlain(NULL, StrLength(EncodedRule));
 
-                                       Rule->fileinto = NewStrBufPlain (NULL, StrLength(EncodedRule));
-                                       Rule->redirect = NewStrBufPlain (NULL, StrLength(EncodedRule));
-                                       Rule->automsg = NewStrBufPlain (NULL, StrLength(EncodedRule));
+                                       Rule->fileinto = NewStrBufPlain(NULL, StrLength(EncodedRule));
+                                       Rule->redirect = NewStrBufPlain(NULL, StrLength(EncodedRule));
+                                       Rule->automsg = NewStrBufPlain(NULL, StrLength(EncodedRule));
 
                                        /* Grab our existing values to populate */
                                        pch = NULL;
                                        Rule->active = StrBufExtractNext_int(EncodedRule, &pch, '|');
                                        StrBufExtract_NextToken(Line, EncodedRule, &pch, '|');
-                                       
+
                                        Rule->hfield = (eSieveHfield) GetTokenDefine(SKEY(Line), tocc);
                                        StrBufExtract_NextToken(Line, EncodedRule, &pch, '|');
                                        Rule->compare = (eSieveCompare) GetTokenDefine(SKEY(Line), contains);
@@ -550,10 +488,10 @@ HashList *GetSieveRules(StrBuf *Target, WCTemplputParams *TP)
        }
 
        while (n < MAX_RULES) {
-               Rule = (SieveRule*) malloc(sizeof(SieveRule));
+               Rule = (SieveRule *) malloc(sizeof(SieveRule));
                memset(Rule, 0, sizeof(SieveRule));
                Put(SieveRules, IKEY(n), Rule, FreeSieveRule);
-           
+
                n++;
        }
 
@@ -563,33 +501,27 @@ HashList *GetSieveRules(StrBuf *Target, WCTemplputParams *TP)
        return SieveRules;
 }
 
-void
-SessionDetachModule_SIEVE
-(wcsession *sess)
-{
+void SessionDetachModule_SIEVE(wcsession * sess) {
        DeleteHash(&sess->KnownSieveScripts);
 }
 
-void 
-InitModule_SIEVE
-(void)
-{
+void InitModule_SIEVE(void) {
        RegisterCTX(CTX_SIEVELIST);
        RegisterCTX(CTX_SIEVESCRIPT);
-       REGISTERTokenParamDefine(from);         
-       REGISTERTokenParamDefine(tocc);         
-       REGISTERTokenParamDefine(subject);      
-       REGISTERTokenParamDefine(replyto);      
-       REGISTERTokenParamDefine(sender);       
-       REGISTERTokenParamDefine(resentfrom);   
-       REGISTERTokenParamDefine(resentto);     
-       REGISTERTokenParamDefine(envfrom);      
-       REGISTERTokenParamDefine(envto);        
-       REGISTERTokenParamDefine(xmailer);      
-       REGISTERTokenParamDefine(xspamflag);    
-       REGISTERTokenParamDefine(xspamstatus);  
-       REGISTERTokenParamDefine(listid);       
-       REGISTERTokenParamDefine(size);         
+       REGISTERTokenParamDefine(from);
+       REGISTERTokenParamDefine(tocc);
+       REGISTERTokenParamDefine(subject);
+       REGISTERTokenParamDefine(replyto);
+       REGISTERTokenParamDefine(sender);
+       REGISTERTokenParamDefine(resentfrom);
+       REGISTERTokenParamDefine(resentto);
+       REGISTERTokenParamDefine(envfrom);
+       REGISTERTokenParamDefine(envto);
+       REGISTERTokenParamDefine(xmailer);
+       REGISTERTokenParamDefine(xspamflag);
+       REGISTERTokenParamDefine(xspamstatus);
+       REGISTERTokenParamDefine(listid);
+       REGISTERTokenParamDefine(size);
        REGISTERTokenParamDefine(all);
 
        REGISTERTokenParamDefine(contains);
@@ -620,7 +552,7 @@ InitModule_SIEVE
        RegisterNamespace("SIEVE:SCRIPT:NAME", 0, 1, tmplput_SieveScriptName, NULL, CTX_SIEVELIST);
        RegisterNamespace("SIEVE:SCRIPT:CONTENT", 0, 1, tmplput_SieveScriptContent, NULL, CTX_SIEVELIST);
 
+
        RegisterIterator("SIEVE:RULES", 0, NULL, GetSieveRules, NULL, DeleteHash, CTX_SIEVESCRIPT, CTX_NONE, IT_NOFLAG);
 
        RegisterConditional("COND:SIEVE:ACTIVE", 1, ConditionalSieveRule_Active, CTX_SIEVESCRIPT);