]> code.citadel.org Git - citadel.git/blobdiff - webcit/subst.c
* add handler to get the value or string representation of a define
[citadel.git] / webcit / subst.c
index 4f43197cb046c07ee7f78dab91d8ae0c23a8a5a2..07a0c7af38138e06fa066848cda12783e5d49564 100644 (file)
@@ -2442,6 +2442,39 @@ void RegisterTokenParamDefine(const char *Name, long len,
        Put(Defines, Name, len, PVal, NULL);
 }
 
+long GetTokenDefine(const char *Name, long len, 
+                   long DefValue)
+{
+       void *vPVal;
+
+       if (GetHash(Defines, Name, len, &vPVal) &&
+            (vPVal != NULL))
+        {
+                return *(long*) vPVal;
+        }
+        else
+        {
+                return DefValue;
+        }
+}
+
+void tmplput_DefStr(StrBuf *Target, WCTemplputParams *TP)
+{
+       const char *Str;
+       long len;
+       GetTemplateTokenString(Target, TP, 2, &Str, &len);
+       
+       StrBufAppendBufPlain(Target, Str, len, 0);
+}
+
+void tmplput_DefVal(StrBuf *Target, WCTemplputParams *TP)
+{
+       int val;
+
+       val = GetTemplateTokenNumber(Target, TP, 0, 0);
+       StrBufAppendPrintf(Target, "%d", val);
+}
+
 HashList *Defines;
 
 /*-----------------------------------------------------------------------------
@@ -2599,6 +2632,8 @@ void tmpl_do_tabbed(StrBuf *Target, WCTemplputParams *TP)
                DoTemplate(TKEY(i * 2 + 1), Target, TP);
                StrEndTab(Target, i, nTabs);
        }
+       for (i = 0; i < ntabs; i++) 
+               FreeStrBuf(&TabNames[i]);
 }
 
 
@@ -2997,6 +3032,10 @@ InitModule_SUBST
        RegisterControlNS(HKEY("ITERATE:KEY"), 0, 0, tmplput_ITERATE_KEY, CTX_ITERATE);
        RegisterControlNS(HKEY("ITERATE:N"), 0, 0, tmplput_ITERATE_LASTN, CTX_ITERATE);
        RegisterNamespace("CURRENTFILE", 0, 1, tmplput_CURRENT_FILE, NULL, CTX_NONE);
+       RegisterNamespace("DEF:STR", 0, 0, tmplput_DefStr, NULL, CTX_NONE);
+       RegisterNamespace("DEF:VAL", 0, 0, tmplput_DefVal, NULL, CTX_NONE);
+
+
 
 
 }