X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=webcit%2Fsubst.c;h=a1879ba9d39628b7b070502b7a783e04b1dfb2f4;hb=8aec1a788f381cbe18eafc729a89b303bec05944;hp=4d102045bd0d9ab7a3481fed3989d3de3cc8d9bd;hpb=aafa773c33eef66c0d1836d034419bf96e94c156;p=citadel.git diff --git a/webcit/subst.c b/webcit/subst.c index 4d102045b..a1879ba9d 100644 --- a/webcit/subst.c +++ b/webcit/subst.c @@ -513,7 +513,7 @@ void GetTemplateTokenString(WCTemplateToken *Tokens, { StrBuf *Buf; - if (Tokens->HaveParameters < N) { + if (Tokens->nParameters < N) { *Value = ""; *len = 0; return; @@ -1057,6 +1057,20 @@ int EvaluateToken(StrBuf *Target, WCTemplateToken *Token, WCTemplate *pTmpl, voi Token->Params[4]->len, 0); } + else { + lprintf(1, "Conditional [%s] (in '%s' line %ld); needs at least 6 Params![%s]\n", + Token->Params[0]->Start, + ChrPtr(pTmpl->FileName), + Token->Line, + ChrPtr(Token->FlatToken)); + StrBufAppendPrintf( + Target, + "
\nConditional [%s] (in '%s' line %ld); needs 6 Params!\n[%s]\n
\n", + Token->Params[0]->Start, + ChrPtr(pTmpl->FileName), + Token->Line, + ChrPtr(Token->FlatToken)); + } break; case SV_SUBTEMPL: if (Token->nParameters == 1) @@ -1635,6 +1649,7 @@ void RegisterConditional(const char *Name, long len, int ContextRequired) { ConditionalStruct *Cond = (ConditionalStruct*)malloc(sizeof(ConditionalStruct)); + Cond->PlainName = Name; Cond->nParams = nParams; Cond->CondF = CondF; Cond->ContextRequired = ContextRequired; @@ -1648,12 +1663,12 @@ void tmplput_ContextString(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, v } int ConditionalContextStr(WCTemplateToken *Tokens, void *Context, int ContextType) { - StrBuf *EmailAddr = (StrBuf*) Context; + StrBuf *TokenText = (StrBuf*) Context; const char *CompareToken; long len; - GetTemplateTokenString(Tokens, 3, &CompareToken, &len); - return strcmp(ChrPtr(EmailAddr), CompareToken) == 0; + GetTemplateTokenString(Tokens, 2, &CompareToken, &len); + return strcmp(ChrPtr(TokenText), CompareToken) == 0; } @@ -1671,7 +1686,7 @@ void tmpl_do_boxed(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Con } else { const char *Ch; - long *len; + long len; GetTemplateTokenString(Tokens, 1, &Ch, @@ -1735,8 +1750,7 @@ InitModule_SUBST RegisterNamespace("DOBOXED", 1, 2, tmpl_do_boxed, CTX_NONE); RegisterNamespace("DOTABBED", 2, 100, tmpl_do_tabbed, CTX_NONE); RegisterConditional(HKEY("COND:SUBST"), 3, ConditionalVar, CTX_NONE); - RegisterConditional(HKEY("COND:CONTEXT"), 3, ConditionalContextStr, CTX_NONE); - + RegisterConditional(HKEY("COND:CONTEXTSTR"), 3, ConditionalContextStr, CTX_STRBUF); } /*@}*/