From 9cf809f80eb6bf3f864eeeeb20c7ad277500ccf6 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Wilfried=20G=C3=B6esgens?= Date: Wed, 19 Nov 2008 22:20:57 +0000 Subject: [PATCH] * rework who.c so it doesn't use svput() and friends but rather preregistered callback hooks (like the other new stuff) * more syntax error detections and warnings in the template engine... * change trailing_js to be a static template hook too * pre-evaluate conditionals too * swap startup sequence so pre-evaluation actualy works (first register hooks, then parse templates) * global function to be used by string tmplput hooks which evaluates escaping demanded by template tokens in a central place * fix spelling in some mobile templates * move SERV: template hooks into serv_func.c --- webcit/serv_func.c | 72 +++++ webcit/static/t/head.m.html | 2 +- webcit/static/t/msgcontrols.m.html | 2 +- webcit/static/t/newstartpage.html | 4 +- webcit/static/t/who.html | 2 +- webcit/static/t/wholiststatic_header.html | 2 +- webcit/static/t/whosection.html | 12 +- webcit/static/t/whosimplesection.html | 2 +- webcit/static/t/whosummarysection.html | 2 +- webcit/subst.c | 223 ++++++++------ webcit/webcit.c | 8 +- webcit/webcit.h | 7 +- webcit/webserver.c | 7 +- webcit/who.c | 351 ++++++---------------- 14 files changed, 320 insertions(+), 376 deletions(-) diff --git a/webcit/serv_func.c b/webcit/serv_func.c index fbaa088d8..a01184f35 100644 --- a/webcit/serv_func.c +++ b/webcit/serv_func.c @@ -491,6 +491,10 @@ int read_server_text(StrBuf *Buf, long *nLines) } + + + + int GetServerStatus(StrBuf *Line, long* FullState) { if (FullState != NULL) @@ -498,4 +502,72 @@ int GetServerStatus(StrBuf *Line, long* FullState) return ChrPtr(Line)[0] - 48; } + +void tmplput_serv_ip(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType) +{ + StrBufAppendPrintf(Target, "%d", WC->ctdl_pid); +} + +void tmplput_serv_nodename(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType) +{ + StrEscAppend(Target, NULL, serv_info.serv_nodename, 0, 0); +} + +void tmplput_serv_humannode(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType) +{ + StrEscAppend(Target, NULL, serv_info.serv_humannode, 0, 0); +} + +void tmplput_serv_fqdn(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType) +{ + StrEscAppend(Target, NULL, serv_info.serv_fqdn, 0, 0); +} + +void tmmplput_serv_software(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType) +{ + StrEscAppend(Target, NULL, serv_info.serv_software, 0, 0); +} + +void tmplput_serv_rev_level(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType) +{ + 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 *Context, int ContextType) +{ + StrEscAppend(Target, NULL, serv_info.serv_bbs_city, 0, 0); +} + +void tmplput_current_user(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType) +{ + StrEscAppend(Target, NULL, WC->wc_fullname, 0, 0); +} + +void tmplput_current_room(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType) +{ + StrEscAppend(Target, NULL, WC->wc_roomname, 0, 0); +} + + + + + +void +InitModule_SERVFUNC +(void) +{ + RegisterNamespace("CURRENT_USER", 0, 0, tmplput_current_user, CTX_NONE); + RegisterNamespace("CURRENT_ROOM", 0, 0, tmplput_current_room, CTX_NONE); + RegisterNamespace("SERV:PID", 0, 0, tmplput_serv_ip, CTX_NONE); + RegisterNamespace("SERV:NODENAME", 0, 0, tmplput_serv_nodename, CTX_NONE); + RegisterNamespace("SERV:HUMANNODE", 0, 0, tmplput_serv_humannode, CTX_NONE); + RegisterNamespace("SERV:FQDN", 0, 0, tmplput_serv_fqdn, CTX_NONE); + RegisterNamespace("SERV:SOFTWARE", 0, 0, tmmplput_serv_software, CTX_NONE); + RegisterNamespace("SERV:REV_LEVEL", 0, 0, tmplput_serv_rev_level, CTX_NONE); + RegisterNamespace("SERV:BBS_CITY", 0, 0, tmmplput_serv_bbs_city, CTX_NONE); +/// RegisterNamespace("SERV:LDAP_SUPP", 0, 0, tmmplput_serv_ldap_enabled, 0); +} + /*@}*/ diff --git a/webcit/static/t/head.m.html b/webcit/static/t/head.m.html index 9e85a78b8..08cd33278 100644 --- a/webcit/static/t/head.m.html +++ b/webcit/static/t/head.m.html @@ -2,7 +2,7 @@ "http://www.w3.org/TR/html4/strict.dtd"> -<?CURRENT_USER> - <?SERV_HUMANNODE> +<?CURRENT_USER> - <?SERV:HUMANNODE> diff --git a/webcit/static/t/msgcontrols.m.html b/webcit/static/t/msgcontrols.m.html index 9d467578a..f2451d64b 100644 --- a/webcit/static/t/msgcontrols.m.html +++ b/webcit/static/t/msgcontrols.m.html @@ -2,7 +2,7 @@ "http://www.w3.org/TR/html4/strict.dtd"> -<?CURRENT_USER> - <?SERV_HUMANNODE> +<?CURRENT_USER> - <?SERV:HUMANNODE> diff --git a/webcit/static/t/newstartpage.html b/webcit/static/t/newstartpage.html index 72247e3d7..fddf46d46 100644 --- a/webcit/static/t/newstartpage.html +++ b/webcit/static/t/newstartpage.html @@ -10,10 +10,10 @@

(Note: this does not change your browser's home page. -It changes the page you begin on when you log on to ). +It changes the page you begin on when you log on to ).

Back...
- \ No newline at end of file + diff --git a/webcit/static/t/who.html b/webcit/static/t/who.html index 08a1b7b20..522f52819 100644 --- a/webcit/static/t/who.html +++ b/webcit/static/t/who.html @@ -12,7 +12,7 @@ return confirm('');

- +