X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=webcit%2Fsubst.c;h=d52fc4f0ac50276917594487ceb6ed14a7c91c57;hb=6f1846672284d64b74a10937813320271293ad66;hp=45af8bf9978bc71cc80708560d439c1fb05c5305;hpb=d3865a3e08f6e62ded13210dccb4da0d26eee532;p=citadel.git diff --git a/webcit/subst.c b/webcit/subst.c index 45af8bf99..d52fc4f0a 100644 --- a/webcit/subst.c +++ b/webcit/subst.c @@ -316,7 +316,7 @@ void print_value_of(const char *keyname, size_t keylen) { /*if (WCC->vars != NULL) PrintHash(WCC->vars, VarPrintTransition, VarPrintEntry);*/ if (keyname[0] == '=') { - DoTemplate(keyname+1, keylen - 1); + DoTemplate(keyname+1, keylen - 1, NULL); } /** Page-local variables */ if ((WCC->vars!= NULL) && GetHash(WCC->vars, keyname, keylen, &vVar)) { @@ -497,7 +497,7 @@ void FreeWCTemplate(void *vFreeMe) free(FreeMe); } -void EvaluateToken(StrBuf *Target, WCTemplateToken *Token) +void EvaluateToken(StrBuf *Target, WCTemplateToken *Token, void *Context) { void *vVar; // much output, since pName is not terminated... @@ -516,7 +516,8 @@ void EvaluateToken(StrBuf *Target, WCTemplateToken *Token) else { Handler->HandlerFunc(Target, Token->nParameters, - &Token); /*TODO: subset of that */ + Token, + Context); /*TODO: subset of that */ } @@ -526,7 +527,7 @@ void EvaluateToken(StrBuf *Target, WCTemplateToken *Token) } } -void ProcessTemplate(WCTemplate *Tmpl, StrBuf *Target) +void ProcessTemplate(WCTemplate *Tmpl, StrBuf *Target, void *Context) { int done = 0; int i; @@ -545,7 +546,7 @@ void ProcessTemplate(WCTemplate *Tmpl, StrBuf *Target) StrBufAppendBufPlain( Target, pData, Tmpl->Tokens[i]->pTokenStart - pData, 0); - EvaluateToken(Target, Tmpl->Tokens[i]); + EvaluateToken(Target, Tmpl->Tokens[i], Context); pData = Tmpl->Tokens[i++]->pTokenEnd + 1; } } @@ -632,7 +633,7 @@ void *load_template(StrBuf *filename, StrBuf *Key, HashList *PutThere) * \brief Display a variable-substituted template * \param templatename template file to load */ -void DoTemplate(const char *templatename, long len) +void DoTemplate(const char *templatename, long len, void *Context) { HashList *Static; HashList *StaticLocal; @@ -654,7 +655,7 @@ void DoTemplate(const char *templatename, long len) } if (vTmpl == NULL) return; - ProcessTemplate(vTmpl, WC->WBuf); + ProcessTemplate(vTmpl, WC->WBuf, Context); } int LoadTemplateDir(const char *DirName, HashList *wireless, HashList *big) @@ -721,49 +722,49 @@ void InitTemplateCache(void) LocalTemplateCache); } -void tmplput_serv_ip(StrBuf *Target, int nArgs, WCTemplateToken **Tokens) +void tmplput_serv_ip(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context) { StrBufAppendPrintf(Target, "%d", WC->ctdl_pid); } -void tmplput_serv_nodename(StrBuf *Target, int nArgs, WCTemplateToken **Tokens) +void tmplput_serv_nodename(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context) { escputs(serv_info.serv_nodename); ////TODO: respcect Target } -void tmplput_serv_humannode(StrBuf *Target, int nArgs, WCTemplateToken **Tokens) +void tmplput_serv_humannode(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context) { escputs(serv_info.serv_humannode);////TODO: respcect Target } -void tmplput_serv_fqdn(StrBuf *Target, int nArgs, WCTemplateToken **Tokens) +void tmplput_serv_fqdn(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context) { escputs(serv_info.serv_fqdn);////TODO: respcect Target } -void tmmplput_serv_software(StrBuf *Target, int nArgs, WCTemplateToken **Tokens) +void tmmplput_serv_software(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context) { escputs(serv_info.serv_software);////TODO: respcect Target } -void tmplput_serv_rev_level(StrBuf *Target, int nArgs, WCTemplateToken **Tokens) +void tmplput_serv_rev_level(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context) { StrBufAppendPrintf(Target, "%d.%02d", serv_info.serv_rev_level / 100, serv_info.serv_rev_level % 100); } -void tmmplput_serv_bbs_city(StrBuf *Target, int nArgs, WCTemplateToken **Tokens) +void tmmplput_serv_bbs_city(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context) { escputs(serv_info.serv_bbs_city);////TODO: respcect Target } -void tmplput_current_user(StrBuf *Target, int nArgs, WCTemplateToken **Tokens) +void tmplput_current_user(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context) { escputs(WC->wc_fullname);////TODO: respcect Target } -void tmplput_current_room(StrBuf *Target, int nArgs, WCTemplateToken **Tokens) +void tmplput_current_room(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context) { escputs(WC->wc_roomname);////TODO: respcect Target }