]> code.citadel.org Git - citadel.git/blobdiff - webcit/subst.c
Make it const.
[citadel.git] / webcit / subst.c
index 7964ab4c2795f3481421da790a0acee9f743b687..e76044f48b5619685c8bff4bc3e4e084e831ee92 100644 (file)
@@ -2140,7 +2140,7 @@ void tmpl_iterate_subtmpl(StrBuf *Target, WCTemplputParams *TP)
                                /** Ok, its us, lets see in which direction we should sort... */
                                    (havebstr("SortOrder"))) {
                                        int SortOrder;
-                                       SortOrder = LBSTR("SortOrder");
+                                       SortOrder = lbstr("SortOrder");
                                        if (SortOrder != 0)
                                                DetectGroupChange = 1;
                                }
@@ -2170,7 +2170,7 @@ void tmpl_iterate_subtmpl(StrBuf *Target, WCTemplputParams *TP)
                        if ((Status.n >= StartAt) && (Status.n <= StopAt)) {
 
                                if ((It->Filter != NULL) &&
-                                   It->Filter(Status.Key, Status.KeyLen, vContext, Target, TP)) 
+                                   !It->Filter(Status.Key, Status.KeyLen, vContext, Target, TP)) 
                                {
                                        continue;
                                }
@@ -2242,10 +2242,20 @@ int conditional_ITERATE_FIRSTN(StrBuf *Target, WCTemplputParams *TP)
        return Ctx->n == 0;
 }
 
+int conditional_ITERATE_ISMOD(StrBuf *Target, WCTemplputParams *TP)
+{
+       IterateStruct *Ctx = CTX(CTX_ITERATE);
+       
+       return Ctx->n == 0;
+}
+
 int conditional_ITERATE_LASTN(StrBuf *Target, WCTemplputParams *TP)
 {
        IterateStruct *Ctx = CTX(CTX_ITERATE);
-       return Ctx->LastN;
+
+       long divisor = GetTemplateTokenNumber(Target, TP, 2, 1);
+       long expectRemainder = GetTemplateTokenNumber(Target, TP, 2, 1);
+       return Ctx->n % divisor == expectRemainder;
 }
 
 
@@ -2663,7 +2673,7 @@ CompareFunc RetrieveSort(WCTemplputParams *TP,
 
        /** Ok, its us, lets see in which direction we should sort... */
        if (havebstr("SortOrder")) {
-               SortOrder = LBSTR("SortOrder");
+               SortOrder = lbstr("SortOrder");
        }
        else { /** Try to fallback to our remembered values... */
                StrBuf *Buf = NULL;
@@ -2755,7 +2765,7 @@ int GetSortMetric(WCTemplputParams *TP, SortStruct **Next, SortStruct **Param, l
 
        /** Ok, its us, lets see in which direction we should sort... */
        if (havebstr("SortOrder")) {
-               *SortOrder = LBSTR("SortOrder");
+               *SortOrder = lbstr("SortOrder");
        }
        else { /** Try to fallback to our remembered values... */
                if ((*Param)->PrefPrepend == NULL) {
@@ -2978,6 +2988,9 @@ InitModule_SUBST
        RegisterConditional("COND:ITERATE:FIRSTN", 2, 
                            conditional_ITERATE_FIRSTN, 
                            CTX_ITERATE);
+       RegisterConditional("COND:ITERATE:ISMOD", 3, 
+                           conditional_ITERATE_ISMOD, 
+                           CTX_ITERATE);
 
        RegisterNamespace("ITERATE:ODDEVEN", 0, 0, tmplput_ITERATE_ODDEVEN, NULL, CTX_ITERATE);
        RegisterNamespace("ITERATE:KEY", 0, 0, tmplput_ITERATE_KEY, NULL, CTX_ITERATE);