silenced a silly little compiler warning
[citadel.git] / webcit / subst.c
index 7964ab4c2795f3481421da790a0acee9f743b687..b54e921ee9946b3c1c738ad9576f96dd26bb83ab 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;
                                }
@@ -2229,8 +2229,17 @@ void tmplput_ITERATE_KEY(StrBuf *Target, WCTemplputParams *TP)
        StrBufAppendBufPlain(Target, Ctx->Key, Ctx->KeyLen, 0);
 }
 
+void tmplput_ITERATE_N_DIV(StrBuf *Target, WCTemplputParams *TP)
+{
+       IterateStruct *Ctx = CTX(CTX_ITERATE);
+       long div;
+       long divisor = GetTemplateTokenNumber(Target, TP, 0, 1);
+///TODO divisor == 0 -> log error exit
+       div = Ctx->n / divisor;
+       StrBufAppendPrintf(Target, "%ld", div);
+}
 
-void tmplput_ITERATE_LASTN(StrBuf *Target, WCTemplputParams *TP)
+void tmplput_ITERATE_N(StrBuf *Target, WCTemplputParams *TP)
 {
        IterateStruct *Ctx = CTX(CTX_ITERATE);
        StrBufAppendPrintf(Target, "%d", Ctx->n);
@@ -2248,6 +2257,16 @@ int conditional_ITERATE_LASTN(StrBuf *Target, WCTemplputParams *TP)
        return Ctx->LastN;
 }
 
+int conditional_ITERATE_ISMOD(StrBuf *Target, WCTemplputParams *TP)
+{
+       IterateStruct *Ctx = CTX(CTX_ITERATE);
+
+       long divisor = GetTemplateTokenNumber(Target, TP, 2, 1);
+       long expectRemainder = GetTemplateTokenNumber(Target, TP, 3, 0);
+       
+       return Ctx->n % divisor == expectRemainder;
+}
+
 
 
 /*-----------------------------------------------------------------------------
@@ -2663,7 +2682,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 +2774,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,10 +2997,14 @@ 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);
-       RegisterNamespace("ITERATE:N", 0, 0, tmplput_ITERATE_LASTN, NULL, CTX_ITERATE);
+       RegisterNamespace("ITERATE:N", 0, 0, tmplput_ITERATE_N, NULL, CTX_ITERATE);
+       RegisterNamespace("ITERATE:N:DIV", 1, 1, tmplput_ITERATE_N_DIV, NULL, CTX_ITERATE);
        RegisterNamespace("CURRENTFILE", 0, 1, tmplput_CURRENT_FILE, NULL, CTX_NONE);
        RegisterNamespace("DEF:STR", 1, 1, tmplput_DefStr, NULL, CTX_NONE);
        RegisterNamespace("DEF:VAL", 1, 1, tmplput_DefVal, NULL, CTX_NONE);