]> 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 6bb18019771959b4374aa1e6de6e055fe70492b8..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;
 
 /*-----------------------------------------------------------------------------
@@ -2999,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);
+
+
 
 
 }