* remove old (replaced) code
authorWilfried Göesgens <willi@citadel.org>
Mon, 24 Nov 2008 22:14:03 +0000 (22:14 +0000)
committerWilfried Göesgens <willi@citadel.org>
Mon, 24 Nov 2008 22:14:03 +0000 (22:14 +0000)
* name it Tokens consistantly...
* use the generic token escaping logic
* QP-Decode Mime Name

webcit/auth.c
webcit/gettext.c
webcit/inetconf.c
webcit/messages.c
webcit/msg_renderers.c
webcit/notes.c
webcit/preferences.c
webcit/roomops.c
webcit/siteconfig.c
webcit/subst.c
webcit/useredit.c

index 73a39ba62657cd0f4365c586f81eb9f41ff2eda7..be6b00ef32114feb333c71af0e8e6106595d0a22 100644 (file)
@@ -884,17 +884,17 @@ void changepw(void)
        }
 }
 
-int ConditionalAide(WCTemplateToken *Token, void *Context, int ContextType)
+int ConditionalAide(WCTemplateToken *Tokens, void *Context, int ContextType)
 {
        return (WC->is_aide == 0);
 }
 
-int ConditionalRoomAide(WCTemplateToken *Token, void *Context, int ContextType)
+int ConditionalRoomAide(WCTemplateToken *Tokens, void *Context, int ContextType)
 {
        return (WC->is_room_aide == 0);
 }
 
-int ConditionalRoomAcessDelete(WCTemplateToken *Token, void *Context, int ContextType)
+int ConditionalRoomAcessDelete(WCTemplateToken *Tokens, void *Context, int ContextType)
 {
        struct wcsession *WCC = WC;
        return ( (WCC->is_room_aide) || (WCC->is_mailbox) || (WCC->room_flags2 & QR2_COLLABDEL) );
index 0994161e77cd59aabd8450c029dc6571b7f4e84b..1402983c01865e0e15c9b80eec1cf7403df65de6 100644 (file)
@@ -205,7 +205,7 @@ void httplang_to_locale(StrBuf *LocaleString)
  * depending on the browser locale change the sequence of the 
  * language chooser.
  */
-void offer_languages(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType) {
+void offer_languages(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType) {
        int i;
 #ifndef HAVE_USELOCALE
        char *Lang = getenv("LANG");
@@ -366,10 +366,9 @@ void preset_locale(void)
 #endif /* ENABLE_NLS */
 
 
-void TmplGettext(StrBuf *Target, int nTokens, WCTemplateToken *Token)
+void TmplGettext(StrBuf *Target, int nTokens, WCTemplateToken *Tokens)
 {
-       StrBufAppendBufPlain(Target, _(Token->Params[0]->Start), -1, 0);
-
+       StrBufAppendBufPlain(Target, _(Tokens->Params[0]->Start), -1, 0);
 }
 
 
index 191f90e76787a6b3525f6893654446c411d90869..8814784fb9a974427708b3b156db8a2ee3fa5191 100644 (file)
@@ -7,212 +7,6 @@
 #include "webcit.h"
 #include "webserver.h"
 
-/*
- * display the inet config dialog 
- */
-void display_inetconf(void)
-{
-       char buf[SIZ];
-       char ename[SIZ];
-       char etype[SIZ];
-       int i;
-       int which;
-       int bg = 0;
-
-       enum {
-               ic_localhost,
-               ic_directory,
-               ic_smarthost,
-               ic_rbl,
-               ic_spamass,
-               ic_masq,
-               ic_clamav,
-               ic_max
-       };
-
-       char *ic_spec[ic_max];
-       char *ic_misc;
-       char *ic_keyword[ic_max];
-       char *ic_boxtitle[ic_max];
-       char *ic_desc[ic_max];
-
-       /* These are server config keywords; do not localize! */
-       ic_keyword[0] = "localhost";
-       ic_keyword[1] = "directory";
-       ic_keyword[2] = "smarthost";
-       ic_keyword[3] = "rbl";
-       ic_keyword[4] = "spamassassin";
-       ic_keyword[5] = "masqdomain";
-       ic_keyword[6] = "clamav";
-
-       ic_boxtitle[0] = _("Local host aliases");
-       ic_boxtitle[1] = _("Directory domains");
-       ic_boxtitle[2] = _("Smart hosts");
-       ic_boxtitle[3] = _("RBL hosts");
-       ic_boxtitle[4] = _("SpamAssassin hosts");
-       ic_boxtitle[5] = _("Masqueradable domains");
-       ic_boxtitle[6] = _("ClamAV clamd hosts");
-
-       ic_desc[0] = _("(domains for which this host receives mail)");
-       ic_desc[1] = _("(domains mapped with the Global Address Book)");
-       ic_desc[2] = _("(if present, forward all outbound mail to one of these hosts)");
-       ic_desc[3] = _("(hosts running a Realtime Blackhole List)");
-       ic_desc[4] = _("(hosts running the SpamAssassin service)");
-       ic_desc[5] = _("(Domains as which users are allowed to masquerade)");
-       ic_desc[6] = _("(hosts running the ClamAV clamd service)");
-
-       for (i=0; i<ic_max; ++i) {
-               ic_spec[i] = strdup("");
-       }
-
-       ic_misc = strdup("");
-
-       serv_printf("CONF GETSYS|application/x-citadel-internet-config");
-       serv_getln(buf, sizeof buf);
-       if (buf[0] == '1') while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) {
-
-               extract_token(ename, buf, 0, '|', sizeof ename);
-               extract_token(etype, buf, 1, '|', sizeof etype);
-               which = (-1);
-               for (i=0; i<ic_max; ++i) {
-                       if (!strcasecmp(etype, ic_keyword[i])) {
-                               which = i;
-                       }
-               }
-
-               if (which >= 0) {
-                       ic_spec[which] = realloc(ic_spec[which], strlen(ic_spec[which]) + strlen(ename) + 2);
-                       if (!IsEmptyStr(ic_spec[which])) strcat(ic_spec[which], "\n");
-                       strcat(ic_spec[which], ename);
-               }
-               else {
-                       ic_misc = realloc(ic_misc, strlen(ic_misc) + strlen(buf) + 2);
-                       if (!IsEmptyStr(ic_misc)) strcat(ic_misc, "\n");
-                       strcat(ic_misc, buf);
-               }
-
-       }
-
-       output_headers(1, 1, 2, 0, 0, 0);
-       wprintf("<div id=\"banner\">\n");
-       wprintf("<h1>");
-       wprintf(_("Internet configuration"));
-       wprintf("</h1>");
-       wprintf("</div>\n");
-
-       wprintf("<div id=\"content\" class=\"service\">\n");
-
-       wprintf("<div class=\"fix_scrollbar_bug\">"
-               "<table border=0 width=100%% cellspacing=\"10\" cellpadding=\"10\"> "
-               "<tr><td valign=top width=50%%>\n");
-       for (which=0; which<ic_max; ++which) {
-               if (which == (ic_max / 2)) {
-                       wprintf("</td><td valign=top>");
-               }
-               svput("BOXTITLE", WCS_STRING, ic_boxtitle[which]);
-               do_template("beginboxx", NULL);
-               wprintf("<span class=\"menudesc\">");
-               escputs(ic_desc[which]);
-               wprintf("</span><br />");
-               wprintf("<table border=0 cellspacing=\"2px\" cellpadding=\"2px\" width=94%% "
-                       "class=\"altern\" >\n");
-               bg = 0;
-               if (!IsEmptyStr(ic_spec[which])) {
-                       for (i=0; i<num_tokens(ic_spec[which], '\n'); ++i) {
-                               bg = 1 - bg;
-                               wprintf("<tr class=\"%s\">",
-                                       (bg ? "even" : "odd")
-                               );
-                               wprintf("<td align=left>");
-                               extract_token(buf, ic_spec[which], i, '\n', sizeof buf);
-                               escputs(buf);
-                               wprintf("</td><td align=left>"
-                                       "<span class=\"button_link\">"
-                                       "<a href=\"save_inetconf?oper=delete&ename=");
-                               escputs(buf);
-                               wprintf("&etype=%s\" ", ic_keyword[which]);
-                               wprintf("onClick=\"return confirm('%s');\">",
-                                       _("Delete this entry?"));
-                               wprintf(_("Delete"));
-                               wprintf("</a></span></td></tr>\n");
-                       }
-
-               }
-               wprintf("<form method=\"post\" action=\"save_inetconf\">\n");
-               wprintf("<input type=\"hidden\" name=\"nonce\" value=\"%d\">\n", WC->nonce);
-               wprintf("<tr><td>"
-                       "<input type=\"text\" name=\"ename\" maxlength=\"64\">"
-                       "<input type=\"hidden\" name=\"etype\" VALUE=\"%s\">", ic_keyword[which]);
-               wprintf("</td><td align=left>"
-                       "<input type=\"submit\" name=\"oper\" value=\"Add\">"
-                       "</td></tr></table></form>\n");
-               do_template("endbox", NULL);
-               wprintf("<br />");
-       }
-       wprintf("</td></tr></table></div>\n");
-       wDumpContent(1);
-
-       for (i=0; i<ic_max; ++i) {
-               free(ic_spec[i]);
-       }
-       free(ic_misc);
-}
-
-
-
-/*
- * save changes to the inet config
- */
-void save_inetconf(void) {
-       char *buf;
-       char *ename;
-       char *etype;
-       char *newconfig;
-
-       buf = malloc(SIZ);
-       ename = malloc(SIZ);
-       etype = malloc(SIZ);
-       newconfig = malloc(65536);
-
-       strcpy(newconfig, "");
-       serv_printf("CONF GETSYS|application/x-citadel-internet-config");
-       serv_getln(buf, SIZ);
-       if (buf[0] == '1') while (serv_getln(buf, SIZ), strcmp(buf, "000")) {
-               extract_token(ename, buf, 0, '|', SIZ);
-               extract_token(etype, buf, 1, '|', SIZ);
-               if (IsEmptyStr(buf)) {
-                       /* skip blank lines */
-               }
-               else if ((!strcasecmp(ename, bstr("ename")))
-                  &&   (!strcasecmp(etype, bstr("etype")))
-                  &&   (!strcasecmp(bstr("oper"), "delete"))
-               ) {
-                       sprintf(WC->ImportantMessage, _("%s has been deleted."), ename);
-               }
-               else {
-                       if (!IsEmptyStr(newconfig)) strcat(newconfig, "\n");
-                       strcat(newconfig, buf);
-               }
-       }
-
-       serv_printf("CONF PUTSYS|application/x-citadel-internet-config");
-       serv_getln(buf, SIZ);
-       if (buf[0] == '4') {
-               serv_puts(newconfig);
-               if (!strcasecmp(bstr("oper"), "add")) {
-                       serv_printf("%s|%s", bstr("ename"), bstr("etype") );
-                       sprintf(WC->ImportantMessage, _("%s added."), bstr("ename"));
-               }
-               serv_puts("000");
-       }
-       
-       display_inetconf();
-
-       free(buf);
-       free(ename);
-       free(etype);
-       free(newconfig);
-}
 
 typedef enum _e_cfg {
        ic_localhost,
@@ -251,7 +45,7 @@ ConstStrBuf CfgNames[] = {
 void load_inetconf(void)
 {
        struct wcsession *WCC = WC;
-       StrBuf *Buf, *Token, *Value;
+       StrBuf *Buf, *CfgToken, *Value;
        void *vHash;
        HashList *Hash;
        char nnn[64];
@@ -270,14 +64,14 @@ void load_inetconf(void)
        
        if (buf[0] == '1') {
                Buf = NewStrBuf();
-               Token = NewStrBuf();
+               CfgToken = NewStrBuf();
                while ((len = StrBuf_ServGetln(Buf),
                        strcmp(ChrPtr(Buf), "000"))) {
                        Value = NewStrBuf();
  
-                       StrBufExtract_token(Token, Buf, 1, '|');
+                       StrBufExtract_token(CfgToken, Buf, 1, '|');
                        StrBufExtract_token(Value, Buf, 0, '|');
-                       GetHash(WCC->InetCfg, ChrPtr(Token), StrLength(Token), &vHash);
+                       GetHash(WCC->InetCfg, ChrPtr(CfgToken), StrLength(CfgToken), &vHash);
                        Hash = (HashList*) vHash;
                        if (Hash == NULL) {
                                lprintf(1, "ERROR Loading inet config line: [%s]\n", 
@@ -290,7 +84,7 @@ void load_inetconf(void)
                        Put(Hash, nnn, nUsed, Value, HFreeStrBuf); 
                }
                FreeStrBuf(&Buf);
-               FreeStrBuf(&Token);
+               FreeStrBuf(&CfgToken);
        }
 }
 
@@ -381,12 +175,12 @@ void new_save_inetconf(void) {
        url_do_template();
 }
 
-void InetCfgSubst(StrBuf *TemplBuffer, void *vContext, WCTemplateToken *Token)
+void InetCfgSubst(StrBuf *TemplBuffer, void *vContext, WCTemplateToken *Tokens)
 {
        SVPutBuf("SERVCFG:INET:HOSTNAME", vContext, 1);
 }
 
-void DeleteInetConfHash(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void DeleteInetConfHash(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
 {
        struct wcsession *WCC = WC;
 
@@ -415,7 +209,6 @@ void
 InitModule_INETCONF
 (void)
 {
-       WebcitAddUrlHandler(HKEY("display_inetconf"), display_inetconf, 0);
        WebcitAddUrlHandler(HKEY("save_inetconf"), new_save_inetconf, AJAX);
        RegisterIterator("SERVCFG:INET", 1, NULL, GetInetConfHash, InetCfgSubst, NULL, CTX_INETCFG, CTX_NONE);
        RegisterNamespace("SERVCFG:FLUSHINETCFG",0, 0, DeleteInetConfHash, CTX_NONE);
index 1cc4fa7a8a97ed65653e41bfc730d5e991ac7b69..0ad1b776e64fb4dc2c6c853556e19f73e34bf531 100644 (file)
@@ -230,7 +230,7 @@ int summcmp_rdate(const void *s1, const void *s2) {
  */
 int read_message(StrBuf *Target, const char *tmpl, long tmpllen, long msgnum, int printable_view, const StrBuf *PartNum) {
        StrBuf *Buf;
-       StrBuf *Token;
+       StrBuf *HdrToken;
        StrBuf *FoundCharset;
        HashPos  *it;
        void *vMime;
@@ -260,7 +260,7 @@ int read_message(StrBuf *Target, const char *tmpl, long tmpllen, long msgnum, in
        /** begin everythingamundo table */
 
 
-       Token = NewStrBuf();
+       HdrToken = NewStrBuf();
        Msg = (message_summary *)malloc(sizeof(message_summary));
        memset(Msg, 0, sizeof(message_summary));
        Msg->msgnum = msgnum;
@@ -280,7 +280,7 @@ int read_message(StrBuf *Target, const char *tmpl, long tmpllen, long msgnum, in
                                StrBufAppendPrintf(Target, " (1)</i><br /><br />\n");
                                StrBufAppendPrintf(Target, "</div>\n");
                                FreeStrBuf(&Buf);
-                               FreeStrBuf(&Token);
+                               FreeStrBuf(&HdrToken);
                                DestroyMessageSummary(Msg);
                                FreeStrBuf(&FoundCharset);
                                return 0;
@@ -295,11 +295,11 @@ int read_message(StrBuf *Target, const char *tmpl, long tmpllen, long msgnum, in
                                state ++;
                                break;
                        }
-                       StrBufExtract_token(Token, Buf, 0, '=');
-                       StrBufCutLeft(Buf, StrLength(Token) + 1);
+                       StrBufExtract_token(HdrToken, Buf, 0, '=');
+                       StrBufCutLeft(Buf, StrLength(HdrToken) + 1);
                        
-                       lprintf(1, ":: [%s] = [%s]\n", ChrPtr(Token), ChrPtr(Buf));
-                       if (GetHash(MsgHeaderHandler, SKEY(Token), &vHdr) &&
+                       lprintf(1, ":: [%s] = [%s]\n", ChrPtr(HdrToken), ChrPtr(Buf));
+                       if (GetHash(MsgHeaderHandler, SKEY(HdrToken), &vHdr) &&
                            (vHdr != NULL)) {
                                Hdr = (headereval*)vHdr;
                                Hdr->evaluator(Msg, Buf, FoundCharset);
@@ -307,7 +307,7 @@ int read_message(StrBuf *Target, const char *tmpl, long tmpllen, long msgnum, in
                                        state++;
                                }
                        }
-                       else lprintf(1, "don't know how to handle message header[%s]\n", ChrPtr(Token));
+                       else lprintf(1, "don't know how to handle message header[%s]\n", ChrPtr(HdrToken));
                        break;
                case 1:/* Message Mime Header */
                        if (StrLength(Buf) == 0) {
@@ -319,11 +319,11 @@ int read_message(StrBuf *Target, const char *tmpl, long tmpllen, long msgnum, in
                        }
                        else
                        {
-                               StrBufExtract_token(Token, Buf, 0, ':');
-                               if (StrLength(Token) > 0) {
-                                       StrBufCutLeft(Buf, StrLength(Token) + 1);
-                                       lprintf(1, ":: [%s] = [%s]\n", ChrPtr(Token), ChrPtr(Buf));
-                                       if (GetHash(MsgHeaderHandler, SKEY(Token), &vHdr) &&
+                               StrBufExtract_token(HdrToken, Buf, 0, ':');
+                               if (StrLength(HdrToken) > 0) {
+                                       StrBufCutLeft(Buf, StrLength(HdrToken) + 1);
+                                       lprintf(1, ":: [%s] = [%s]\n", ChrPtr(HdrToken), ChrPtr(Buf));
+                                       if (GetHash(MsgHeaderHandler, SKEY(HdrToken), &vHdr) &&
                                            (vHdr != NULL)) {
                                                Hdr = (headereval*)vHdr;
                                                Hdr->evaluator(Msg, Buf, FoundCharset);
@@ -420,7 +420,7 @@ int read_message(StrBuf *Target, const char *tmpl, long tmpllen, long msgnum, in
 
        DestroyMessageSummary(Msg);
        FreeStrBuf(&FoundCharset);
-       FreeStrBuf(&Token);
+       FreeStrBuf(&HdrToken);
        FreeStrBuf(&Buf);
        return 1;
 }
index f294c5e3537ab894babe9b943775687e508eb587..ae4cf267b1e15ef34b47703666e49eea3e2cb696 100644 (file)
@@ -94,10 +94,10 @@ void examine_from(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset)
        Msg->from = NewStrBufPlain(NULL, StrLength(HdrLine));
        StrBuf_RFC822_to_Utf8(Msg->from, HdrLine, WC->DefaultCharset, FoundCharset);
 }
-void tmplput_MAIL_SUMM_FROM(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_MAIL_SUMM_FROM(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
 {
        message_summary *Msg = (message_summary*) Context;
-       StrBufAppendBuf(Target, Msg->from, 0);
+       StrBufAppendTemplate(Target, nArgs, Tokens, Context, ContextType, Msg->from, 0);
 }
 
 
@@ -108,10 +108,10 @@ void examine_subj(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset)
        Msg->subj = NewStrBufPlain(NULL, StrLength(HdrLine));
        StrBuf_RFC822_to_Utf8(Msg->subj, HdrLine, WC->DefaultCharset, FoundCharset);
 }
-void tmplput_MAIL_SUMM_SUBJECT(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_MAIL_SUMM_SUBJECT(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
 {/////TODO: Fwd: and RE: filter!!
        message_summary *Msg = (message_summary*) Context;
-       StrBufAppendBuf(Target, Msg->subj, 0);
+       StrBufAppendTemplate(Target, nArgs, Tokens, Context, ContextType, Msg->subj, 0);
 }
 
 
@@ -121,10 +121,10 @@ void examine_msgn(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset)
        Msg->reply_inreplyto = NewStrBufPlain(NULL, StrLength(HdrLine));
        StrBuf_RFC822_to_Utf8(Msg->reply_inreplyto, HdrLine, WC->DefaultCharset, FoundCharset);
 }
-void tmplput_MAIL_SUMM_INREPLYTO(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_MAIL_SUMM_INREPLYTO(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
 {
        message_summary *Msg = (message_summary*) Context;
-       StrBufAppendBuf(Target, Msg->reply_inreplyto, 0);
+       StrBufAppendTemplate(Target, nArgs, Tokens, Context, ContextType, Msg->reply_inreplyto, 0);
 }
 
 int Conditional_MAIL_SUMM_UNREAD(WCTemplateToken *Tokens, void *Context, int ContextType)
@@ -139,10 +139,10 @@ void examine_wefw(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset)
        Msg->reply_references = NewStrBufPlain(NULL, StrLength(HdrLine));
        StrBuf_RFC822_to_Utf8(Msg->reply_references, HdrLine, WC->DefaultCharset, FoundCharset);
 }
-void tmplput_MAIL_SUMM_REFIDS(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_MAIL_SUMM_REFIDS(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
 {
        message_summary *Msg = (message_summary*) Context;
-       StrBufAppendBuf(Target, Msg->reply_references, 0);
+       StrBufAppendTemplate(Target, nArgs, Tokens, Context, ContextType, Msg->reply_references, 0);
 }
 
 
@@ -158,10 +158,10 @@ void examine_cccc(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset)
        }
        StrBufAppendBuf(Msg->AllRcpt, Msg->cccc, 0);
 }
-void tmplput_MAIL_SUMM_CCCC(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_MAIL_SUMM_CCCC(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
 {
        message_summary *Msg = (message_summary*) Context;
-       StrBufAppendBuf(Target, Msg->cccc, 0);
+       StrBufAppendTemplate(Target, nArgs, Tokens, Context, ContextType, Msg->cccc, 0);
 }
 
 
@@ -175,10 +175,10 @@ void examine_room(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset)
                Msg->Room = NewStrBufDup(HdrLine);              
        }
 }
-void tmplput_MAIL_SUMM_ORGROOM(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_MAIL_SUMM_ORGROOM(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
 {
        message_summary *Msg = (message_summary*) Context;
-       StrBufAppendBuf(Target, Msg->Room, 0);
+       StrBufAppendTemplate(Target, nArgs, Tokens, Context, ContextType, Msg->Room, 0);
 }
 
 
@@ -187,10 +187,10 @@ void examine_rfca(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset)
        FreeStrBuf(&Msg->Rfca);
        Msg->Rfca = NewStrBufDup(HdrLine);
 }
-void tmplput_MAIL_SUMM_RFCA(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_MAIL_SUMM_RFCA(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
 {
        message_summary *Msg = (message_summary*) Context;
-       StrBufAppendBuf(Target, Msg->Rfca, 0);
+       StrBufAppendTemplate(Target, nArgs, Tokens, Context, ContextType, Msg->Rfca, 0);
 }
 int Conditional_MAIL_SUMM_RFCA(WCTemplateToken *Tokens, void *Context, int ContextType)
 {
@@ -208,10 +208,10 @@ void examine_node(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset)
                Msg->OtherNode = NewStrBufDup(HdrLine);
        }
 }
-void tmplput_MAIL_SUMM_OTHERNODE(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_MAIL_SUMM_OTHERNODE(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
 {
        message_summary *Msg = (message_summary*) Context;
-       StrBufAppendBuf(Target, Msg->OtherNode, 0);
+       StrBufAppendTemplate(Target, nArgs, Tokens, Context, ContextType, Msg->OtherNode, 0);
 }
 int Conditional_MAIL_SUMM_OTHERNODE(WCTemplateToken *Tokens, void *Context, int ContextType)
 {
@@ -232,15 +232,15 @@ void examine_rcpt(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset)
        }
        StrBufAppendBuf(Msg->AllRcpt, Msg->to, 0);
 }
-void tmplput_MAIL_SUMM_TO(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_MAIL_SUMM_TO(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
 {
        message_summary *Msg = (message_summary*) Context;
-       StrBufAppendBuf(Target, Msg->to, 0);
+       StrBufAppendTemplate(Target, nArgs, Tokens, Context, ContextType, Msg->to, 0);
 }
-void tmplput_MAIL_SUMM_ALLRCPT(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_MAIL_SUMM_ALLRCPT(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
 {
        message_summary *Msg = (message_summary*) Context;
-       StrBufAppendBuf(Target, Msg->AllRcpt, 0);
+       StrBufAppendTemplate(Target, nArgs, Tokens, Context, ContextType, Msg->AllRcpt, 0);
 }
 
 
@@ -249,14 +249,14 @@ void examine_time(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset)
 {
        Msg->date = StrTol(HdrLine);
 }
-void tmplput_MAIL_SUMM_DATE_STR(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_MAIL_SUMM_DATE_STR(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
 {
        char datebuf[64];
        message_summary *Msg = (message_summary*) Context;
        webcit_fmt_date(datebuf, Msg->date, 1);
        StrBufAppendBufPlain(Target, datebuf, -1, 0);
 }
-void tmplput_MAIL_SUMM_DATE_NO(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_MAIL_SUMM_DATE_NO(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
 {
        message_summary *Msg = (message_summary*) Context;
        StrBufAppendPrintf(Target, "%ld", Msg->date, 0);
@@ -325,7 +325,8 @@ void examine_mime_part(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundChars
        Buf = NewStrBuf();
 
        Mime->Name = NewStrBuf();
-       StrBufExtract_token(Mime->Name, HdrLine, 0, '|');
+       StrBufExtract_token(Buf, HdrLine, 0, '|');
+       StrBuf_RFC822_to_Utf8(Mime->Name, Buf, WC->DefaultCharset, FoundCharset);
        StrBufTrim(Mime->Name);
 
        StrBufExtract_token(Buf, HdrLine, 1, '|');
@@ -409,7 +410,7 @@ void evaluate_mime_part(message_summary *Msg, wc_mime_attachment *Mime)
        }
 }
 
-void tmplput_MAIL_SUMM_NATTACH(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_MAIL_SUMM_NATTACH(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
 {
        message_summary *Msg = (message_summary*) Context;
        StrBufAppendPrintf(Target, "%ld", GetCount(Msg->Attachments));
@@ -427,10 +428,10 @@ void examine_hnod(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset)
        Msg->hnod = NewStrBufPlain(NULL, StrLength(HdrLine));
        StrBuf_RFC822_to_Utf8(Msg->hnod, HdrLine, WC->DefaultCharset, FoundCharset);
 }
-void tmplput_MAIL_SUMM_H_NODE(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_MAIL_SUMM_H_NODE(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
 {
        message_summary *Msg = (message_summary*) Context;
-       StrBufAppendBuf(Target, Msg->hnod, 0);
+       StrBufAppendTemplate(Target, nArgs, Tokens, Context, ContextType, Msg->hnod, 0);
 }
 int Conditional_MAIL_SUMM_H_NODE(WCTemplateToken *Tokens, void *Context, int ContextType)
 {
@@ -490,7 +491,7 @@ void examine_content_type(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCh
         */
 }
 
-void tmplput_MAIL_SUMM_N(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_MAIL_SUMM_N(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
 {
        message_summary *Msg = (message_summary*) Context;
        StrBufAppendPrintf(Target, "%ld", Msg->msgnum);
@@ -525,17 +526,17 @@ int Conditional_MAIL_MIME_ATTACH(WCTemplateToken *Tokens, void *Context, int Con
 
 
 /*----------------------------------------------------------------------------*/
-void tmplput_QUOTED_MAIL_BODY(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_QUOTED_MAIL_BODY(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
 {
        long MsgNum;
-       MsgNum = LBstr(Token->Params[0]->Start, Token->Params[0]->len);
+       MsgNum = LBstr(Tokens->Params[0]->Start, Tokens->Params[0]->len);
        read_message(Target, HKEY("view_message_replyquote"), MsgNum, 0, NULL);
 }
 
-void tmplput_MAIL_BODY(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_MAIL_BODY(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
 {
        message_summary *Msg = (message_summary*) Context;
-       StrBufAppendBuf(Target, Msg->MsgBody->Data, 0);
+       StrBufAppendTemplate(Target, nArgs, Tokens, Context, ContextType, Msg->MsgBody->Data, 0);
 }
 
 
@@ -707,57 +708,58 @@ HashList *iterate_get_mime_Attachments(StrBuf *Target, int nArgs, WCTemplateToke
        return Msg->AllAttach;
 }
 
-void tmplput_MIME_Name(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_MIME_Name(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
 {
        wc_mime_attachment *mime = (wc_mime_attachment*) Context;
-       StrBufAppendBuf(Target, mime->Name, 0);
+       StrBufAppendTemplate(Target, nArgs, Tokens, Context, ContextType, mime->Name, 0);
 }
 
-void tmplput_MIME_FileName(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_MIME_FileName(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
 {
        wc_mime_attachment *mime = (wc_mime_attachment*) Context;
-       StrBufAppendBuf(Target, mime->FileName, 0);
+       StrBufAppendTemplate(Target, nArgs, Tokens, Context, ContextType, mime->FileName, 0);
 }
 
-void tmplput_MIME_PartNum(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_MIME_PartNum(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
 {
        wc_mime_attachment *mime = (wc_mime_attachment*) Context;
-       StrBufAppendBuf(Target, mime->PartNum, 0);
+       StrBufAppendTemplate(Target, nArgs, Tokens, Context, ContextType, mime->PartNum, 0);
 }
 
-void tmplput_MIME_MsgNum(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_MIME_MsgNum(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
 {
        wc_mime_attachment *mime = (wc_mime_attachment*) Context;
        StrBufAppendPrintf(Target, "%ld", mime->msgnum);
 }
 
-void tmplput_MIME_Disposition(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_MIME_Disposition(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
 {
        wc_mime_attachment *mime = (wc_mime_attachment*) Context;
-       StrBufAppendBuf(Target, mime->Disposition, 0);
+       StrBufAppendTemplate(Target, nArgs, Tokens, Context, ContextType, mime->Disposition, 0);
 }
 
-void tmplput_MIME_ContentType(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_MIME_ContentType(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
 {
        wc_mime_attachment *mime = (wc_mime_attachment*) Context;
-       StrBufAppendBuf(Target, mime->ContentType, 0);
+       StrBufAppendTemplate(Target, nArgs, Tokens, Context, ContextType, mime->ContentType, 0);
 }
 
-void tmplput_MIME_Charset(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_MIME_Charset(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
 {
        wc_mime_attachment *mime = (wc_mime_attachment*) Context;
-       StrBufAppendBuf(Target, mime->Charset, 0);
+       StrBufAppendTemplate(Target, nArgs, Tokens, Context, ContextType, mime->Charset, 0);
 }
 
-void tmplput_MIME_Data(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_MIME_Data(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
 {
        wc_mime_attachment *mime = (wc_mime_attachment*) Context;
        if (mime->Renderer != NULL)
                mime->Renderer(mime, NULL, NULL);
-       StrBufAppendBuf(Target, mime->Data, 0); /// TODO: check whether we need to load it now?
+       StrBufAppendTemplate(Target, nArgs, Tokens, Context, ContextType, mime->Data, 0);
+ /// TODO: check whether we need to load it now?
 }
 
-void tmplput_MIME_Length(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_MIME_Length(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
 {
        wc_mime_attachment *mime = (wc_mime_attachment*) Context;
        StrBufAppendPrintf(Target, "%ld", mime->length);
@@ -768,22 +770,22 @@ HashList *iterate_get_registered_Attachments(StrBuf *Target, int nArgs, WCTempla
        return WC->attachments;
 }
 
-void tmplput_ATT_Length(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_ATT_Length(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
 {
        wc_attachment *att = (wc_attachment*) Context;
        StrBufAppendPrintf(Target, "%ld", att->length);
 }
 
-void tmplput_ATT_Contenttype(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_ATT_Contenttype(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
 {
        wc_attachment *att = (wc_attachment*) Context;
-       StrBufAppendBuf(Target, att->content_type, 0);
+       StrBufAppendTemplate(Target, nArgs, Tokens, Context, ContextType, att->content_type, 0);
 }
 
-void tmplput_ATT_FileName(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_ATT_FileName(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
 {
        wc_attachment *att = (wc_attachment*) Context;
-       StrBufAppendBuf(Target, att->filename, 0);
+       StrBufAppendTemplate(Target, nArgs, Tokens, Context, ContextType, att->filename, 0);
 }
 
 
index 7d496f638e30cd50a96f22f94c7604a6795cfe27..82b6c9262489af64b9f92802a60c9776ad937967 100644 (file)
@@ -386,61 +386,61 @@ void add_new_note(void) {
 }
 
 
-void tmpl_vcard_put_posleft(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmpl_vcard_put_posleft(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
 {
        struct vnote *v = (struct vnote *) Context;
        StrBufAppendPrintf(Target, "%d", v->pos_left);
 }
 
-void tmpl_vcard_put_postop(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmpl_vcard_put_postop(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
 {
        struct vnote *v = (struct vnote *) Context;
        StrBufAppendPrintf(Target, "%d", v->pos_top);
 }
 
-void tmpl_vcard_put_poswidth(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmpl_vcard_put_poswidth(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
 {
        struct vnote *v = (struct vnote *) Context;
        StrBufAppendPrintf(Target, "%d", v->pos_width);
 }
 
-void tmpl_vcard_put_posheight(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmpl_vcard_put_posheight(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
 {
        struct vnote *v = (struct vnote *) Context;
        StrBufAppendPrintf(Target, "%d", v->pos_height);
 }
 
-void tmpl_vcard_put_posheight2(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmpl_vcard_put_posheight2(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
 {
        struct vnote *v = (struct vnote *) Context;
        StrBufAppendPrintf(Target, "%d", (v->pos_height / 16) - 5);
 }
 
-void tmpl_vcard_put_width2(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmpl_vcard_put_width2(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
 {
        struct vnote *v = (struct vnote *) Context;
        StrBufAppendPrintf(Target, "%d", (v->pos_width / 9) - 1);
 }
 
-void tmpl_vcard_put_color(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmpl_vcard_put_color(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
 {
        struct vnote *v = (struct vnote *) Context;
        StrBufAppendPrintf(Target, "%02X%02X%02X", v->color_red, v->color_green, v->color_blue);
 }
 
-void tmpl_vcard_put_bgcolor(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmpl_vcard_put_bgcolor(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
 {
        struct vnote *v = (struct vnote *) Context;
        StrBufAppendPrintf(Target, "%02X%02X%02X", v->color_red/2, v->color_green/2, v->color_blue/2);
 }
 
-void tmpl_vcard_put_message(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmpl_vcard_put_message(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
 {
        struct vnote *v = (struct vnote *) Context;
        StrEscAppend(Target, NULL, v->body, 0, 0); ///TODO?
 }
 
-void tmpl_vcard_put_uid(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmpl_vcard_put_uid(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
 {
        struct vnote *v = (struct vnote *) Context;
        StrBufAppendBufPlain(Target, v->uid, -1, 0);
index 800968875305650841a980f9bdb21edba460b522..382667f38e89f9f1860dff8b2172ea2e5c042831 100644 (file)
@@ -626,37 +626,37 @@ void set_preferences(void)
        StrBuf *buf, *encBuf;
        int *time_format_cache;
        
-       time_format_cache = &(WC->time_format_cache);
-
-       if (!havebstr("change_button")) {
-               safestrncpy(WC->ImportantMessage, 
-                       _("Cancelled.  No settings were changed."),
-                       sizeof WC->ImportantMessage);
-               display_main_menu();
-               return;
-       }
-
-       /**
-        * Set the last argument to 1 only for the final setting, so
-        * we don't send the prefs file to the server repeatedly
-        */
-       set_preference("roomlistview", NewStrBufPlain(bstr("roomlistview"), -1), 0);
-       fmt = lbstr("calhourformat");
-       set_pref_long("calhourformat", fmt, 0);
-       if (fmt == 24) 
-               *time_format_cache = WC_TIMEFORMAT_24;
-       else
-               *time_format_cache = WC_TIMEFORMAT_AMPM;
-
-       set_pref_long("weekstart", lbstr("weekstart"), 0);
-       set_pref_yesno("use_sig", yesbstr("use_sig"), 0);
-       set_pref_long("daystart", lbstr("daystart"), 0);
-       set_pref_long("dayend", lbstr("dayend"), 0);
-       set_preference("default_header_charset", NewStrBufPlain(bstr("default_header_charset"), -1), 0);
-       set_preference("emptyfloors", NewStrBufPlain(bstr("emptyfloors"), -1), 0);
-       set_preference("defaultfrom", NewStrBufDup(sbstr("defaultfrom")), 0);
-       set_preference("defaultname", NewStrBufDup(sbstr("defaultname")), 0);
-       set_preference("defaulthandle", NewStrBufDup(sbstr("defaulthandle")), 0);
+        time_format_cache = &(WC->time_format_cache);
+
+        if (!havebstr("change_button")) {
+                safestrncpy(WC->ImportantMessage, 
+                        _("Cancelled.  No settings were changed."),
+                        sizeof WC->ImportantMessage);
+                display_main_menu();
+                return;
+        }
+
+        /**
+         * Set the last argument to 1 only for the final setting, so
+         * we don't send the prefs file to the server repeatedly
+         */
+        set_preference("roomlistview", NewStrBufPlain(bstr("roomlistview"), -1), 0);
+        fmt = lbstr("calhourformat");
+        set_pref_long("calhourformat", fmt, 0);
+        if (fmt == 24) 
+                *time_format_cache = WC_TIMEFORMAT_24;
+        else
+                *time_format_cache = WC_TIMEFORMAT_AMPM;
+
+        set_pref_long("weekstart", lbstr("weekstart"), 0);
+        set_pref_yesno("use_sig", yesbstr("use_sig"), 0);
+        set_pref_long("daystart", lbstr("daystart"), 0);
+        set_pref_long("dayend", lbstr("dayend"), 0);
+        set_preference("default_header_charset", NewStrBufPlain(bstr("default_header_charset"), -1), 0);
+        set_preference("emptyfloors", NewStrBufPlain(bstr("emptyfloors"), -1), 0);
+        set_preference("defaultfrom", NewStrBufDup(sbstr("defaultfrom")), 0);
+        set_preference("defaultname", NewStrBufDup(sbstr("defaultname")), 0);
+        set_preference("defaulthandle", NewStrBufDup(sbstr("defaulthandle")), 0);
 
 
        buf = NewStrBufPlain(bstr("signature"), -1);
@@ -675,20 +675,20 @@ void set_preferences(void)
 #define PRF_YESNO 4
 
 
-void tmplput_CFG_Value(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_CFG_Value(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
 {
        StrBuf *Setting;
-       if (get_PREFERENCE(Token->Params[0]->Start,
-                          Token->Params[0]->len,
+       if (get_PREFERENCE(Tokens->Params[0]->Start,
+                          Tokens->Params[0]->len,
                           &Setting))
-               StrBufAppendBuf(Target, Setting, 0);
+       StrBufAppendTemplate(Target, nArgs, Tokens, Context, ContextType, Setting, 1);
 }
 
-void tmplput_CFG_Descr(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_CFG_Descr(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
 {
        const char *SettingStr;
-       SettingStr = PrefGetLocalStr(Token->Params[0]->Start,
-                                    Token->Params[0]->len);
+       SettingStr = PrefGetLocalStr(Tokens->Params[0]->Start,
+                                    Tokens->Params[0]->len);
        if (SettingStr != NULL) 
                StrBufAppendBufPlain(Target, SettingStr, -1, 0);
 }
@@ -701,23 +701,23 @@ void CfgZoneTempl(StrBuf *TemplBuffer, void *vContext, WCTemplateToken *Token)
        SVPutBuf("ZONENAME", Zone, 1);
 }
 
-int ConditionalPreference(WCTemplateToken *Token, void *Context, int ContextType)
+int ConditionalPreference(WCTemplateToken *Tokens, void *Context, int ContextType)
 {
        StrBuf *Pref;
 
-       if (!get_PREFERENCE(Token->Params[2]->Start,
-                           Token->Params[2]->len,
+       if (!get_PREFERENCE(Tokens->Params[2]->Start,
+                           Tokens->Params[2]->len,
                            &Pref)) 
                return 0;
        
-       if (Token->nParameters == 3) {
+       if (Tokens->nParameters == 3) {
                return 1;
        }
-       else if (Token->Params[3]->Type == TYPE_STR)
-               return ((Token->Params[3]->len == StrLength(Pref)) &&
-                       (strcmp(Token->Params[3]->Start, ChrPtr(Pref)) == 0));
+       else if (Tokens->Params[3]->Type == TYPE_STR)
+               return ((Tokens->Params[3]->len == StrLength(Pref)) &&
+                       (strcmp(Tokens->Params[3]->Start, ChrPtr(Pref)) == 0));
        else 
-               return (StrTol(Pref) == Token->Params[3]->lvalue);
+               return (StrTol(Pref) == Tokens->Params[3]->lvalue);
 }
 
 HashList *GetGVEAHash(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
index 8d690195e4541014521c0521599d95aaebd0ab81..2f4b0f1dff9a4104b31e58910321f4b3f3542015 100644 (file)
@@ -276,7 +276,7 @@ void zapped_list(void)
 /**
  * \brief read this room's info file (set v to 1 for verbose mode)
  */
-void readinfo(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void readinfo(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
 {
        char buf[256];
        char briefinfo[128];
@@ -325,7 +325,7 @@ void readinfo(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context,
  * keep the browser from using a cached icon from 
  * another room.
  */
-void embed_room_graphic(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType) {
+void embed_room_graphic(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType) {
        char buf[SIZ];
 
        serv_puts("OIMG _roompic_");
@@ -381,7 +381,7 @@ void embed_room_graphic(StrBuf *Target, int nArgs, WCTemplateToken *Token, void
 /**
  * \brief Display the current view and offer an option to change it
  */
-void embed_view_o_matic(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType) {
+void embed_view_o_matic(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType) {
        int i;
 
        wprintf("<form name=\"viewomatic\" action=\"changeview\">\n");
@@ -422,7 +422,7 @@ void embed_view_o_matic(StrBuf *Target, int nArgs, WCTemplateToken *Token, void
 /**
  * \brief Display a search box
  */
-void embed_search_o_matic(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType) {
+void embed_search_o_matic(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType) {
        wprintf("<form name=\"searchomatic\" action=\"do_search\">\n");
        wprintf("<div style=\"display: inline;\"><input type=\"hidden\" name=\"nonce\" value=\"%d\">\n", WC->nonce);
        wprintf("<label for=\"search_name\">");
index 4a67d748bc7375ba9b79f88e9528ce2de71a05be..5cdeae1bc39b60595154518e5a113b6fbabe4196 100644 (file)
@@ -35,760 +35,6 @@ void LoadZoneFiles(void)
 }
 
 
-
-
-/*
- *  display all configuration items
- */
-void display_siteconfig(void)
-{
-       char buf[SIZ];
-       int i, j;
-       struct wcsession *WCC = WC;
-       const char *VCZname;
-
-       char general[65536];
-       char access[SIZ];
-       char network[SIZ];
-       char tuning[SIZ];
-       char directory[SIZ];
-       char purger[SIZ];
-       char idxjnl[SIZ];
-       char funambol[SIZ];
-       char pop3[SIZ];
-       
-       /** expire policy settings */
-       int sitepolicy = 0;
-       int sitevalue = 0;
-       int mboxpolicy = 0;
-       int mboxvalue = 0;
-
-       output_headers(1, 1, 2, 0, 0, 0);
-       wprintf("<div id=\"banner\">\n");
-       wprintf("<h1>");
-       wprintf(_("Site configuration"));
-       wprintf("</h1>");
-       wprintf("</div>\n");
-
-       wprintf("<div id=\"content\" class=\"service fix_scrollbar_bug\">\n");
-
-       serv_printf("CONF get");
-       serv_getln(buf, sizeof buf);
-       if (buf[0] != '1') {
-               wprintf("<div class=\"errormsg\">");
-               wprintf(_("Error"));
-               wprintf("<br />\n");
-               wprintf("%s<br />\n", &buf[4]);
-               wDumpContent(1);
-               wprintf("</div>\n");
-               return;
-       }
-
-       wprintf("<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" ><tr><td>");
-
-       char *tabnames[] = {
-               _("General"),
-               _("Access"),
-               _("Network"),
-               _("Tuning"),
-               _("Directory"),
-               _("Auto-purger"),
-               _("Indexing/Journaling"),
-               _("Push Email"),
-               _("Pop3")
-       };
-
-       sprintf(general, "<center><h1>%s</h1><table border=\"0\">",
-                       _("General site configuration items")
-       );
-
-       sprintf(access, "<center><h1>%s</h1><table border=\"0\">",
-                       _("Access controls and site policy settings")
-       );
-
-       sprintf(network, "<center><h1>%s</h1><h2>%s</h2><table border=\"0\">",
-                       _("Network services"),
-                       _("Changes made on this screen will not take effect "
-                       "until you restart the Citadel server.")
-       );
-
-       sprintf(tuning, "<center><h1>%s</h1><table border=\"0\">",
-                       _("Advanced server fine-tuning controls")
-       );
-
-       sprintf(directory, "<center><h1>%s</h1><h2>%s</h2><table border=\"0\">",
-                       _("Configure the LDAP connector for Citadel"),
-                       (serv_info.serv_supports_ldap
-                       ?       _("Changes made on this screen will not take effect "
-                               "until you restart the Citadel server.")
-                       :       _("NOTE: This Citadel server has been built without "
-                               "LDAP support.  These options will have no effect.")
-                       )
-       );
-
-       sprintf(purger, "<center><h1>%s</h1><h2>%s</h2><table border=\"0\">",
-                       _("Configure automatic expiry of old messages"),
-                       _("These settings may be overridden on a per-floor or per-room basis.")
-       );
-
-       sprintf(idxjnl, "<center><h1>%s</h1><h2>%s</h2><table border=\"0\">",
-                       _("Indexing and Journaling"),
-                       _("Warning: these facilities are resource intensive.")
-       );
-       sprintf(funambol, "<center><h1>%s</h1><table border=\"0\">",
-               _("Push Email")
-               );
-
-       sprintf(pop3, "<center><h1>%s</h1><table border=\"0\">",
-               _("POP3")
-               );
-               
-       wprintf("<form method=\"post\" action=\"siteconfig\">\n");
-       wprintf("<input type=\"hidden\" name=\"nonce\" value=\"%d\">\n", WCC->nonce);
-       
-       sprintf(&general[strlen(general)], "<tr><td><a href=\"display_edithello\"> %s </a></td>",           _("Change Login Logo"));
-       sprintf(&general[strlen(general)],     "<td><a href=\"display_editgoodbuye\"> %s </a></td></tr>\n", _("Change Logout Logo"));
-
-       i = 0;
-       while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) {
-               switch (i++) {
-               case 0:
-                       sprintf(&general[strlen(general)], "<tr><td>");
-                       sprintf(&general[strlen(general)], _("Node name"));
-                       sprintf(&general[strlen(general)], "</td><td>");
-                       sprintf(&general[strlen(general)], "<input type=\"text\" name=\"c_nodename\" maxlength=\"15\" value=\"%s\">", buf);
-                       sprintf(&general[strlen(general)], "</td></tr>\n");
-                       break;
-               case 1:
-                       sprintf(&general[strlen(general)], "<tr><td>");
-                       sprintf(&general[strlen(general)], _("Fully qualified domain name"));
-                       sprintf(&general[strlen(general)], "</td><td>");
-                       sprintf(&general[strlen(general)], "<input type=\"text\" name=\"c_fqdn\" maxlength=\"63\" value=\"%s\">", buf);
-                       sprintf(&general[strlen(general)], "</td></tr>\n");
-                       break;
-               case 2:
-                       sprintf(&general[strlen(general)], "<tr><td>");
-                       sprintf(&general[strlen(general)], _("Human-readable node name"));
-                       sprintf(&general[strlen(general)], "</td><td>");
-                       sprintf(&general[strlen(general)], "<input type=\"text\" name=\"c_humannode\" maxlength=\"20\" value=\"%s\">", buf);
-                       sprintf(&general[strlen(general)], "</td></tr>\n");
-                       break;
-               case 3:
-                       sprintf(&general[strlen(general)], "<tr><td>");
-                       sprintf(&general[strlen(general)], _("Telephone number"));
-                       sprintf(&general[strlen(general)], "</td><td>");
-                       sprintf(&general[strlen(general)], "<input type=\"text\" name=\"c_phonenum\" maxlength=\"15\" value=\"%s\">", buf);
-                       sprintf(&general[strlen(general)], "</td></tr>\n");
-                       break;
-               case 4:
-                       sprintf(&access[strlen(access)], "<tr><td>");
-                       sprintf(&access[strlen(access)], _("Automatically grant room-aide status to users who create private rooms"));
-                       sprintf(&access[strlen(access)], "</td><td>");
-                       sprintf(&access[strlen(access)], "<input type=\"checkbox\" name=\"c_creataide\" value=\"yes\" %s>",
-                               ((atoi(buf) != 0) ? "checked" : ""));
-                       sprintf(&access[strlen(access)], "</td></tr>\n");
-                       break;
-               case 5:
-                       sprintf(&tuning[strlen(tuning)], "<tr><td>");
-                       sprintf(&tuning[strlen(tuning)], _("Server connection idle timeout (in seconds)"));
-                       sprintf(&tuning[strlen(tuning)], "</td><td>");
-                       sprintf(&tuning[strlen(tuning)], "<input type=\"text\" name=\"c_sleeping\" maxlength=\"15\" value=\"%s\">", buf);
-                       sprintf(&tuning[strlen(tuning)], "</td></tr>\n");
-                       break;
-               case 6:
-                       sprintf(&access[strlen(access)], "<tr><td>");
-                       sprintf(&access[strlen(access)], _("Initial access level for new users"));
-                       sprintf(&access[strlen(access)], "</td><td>");
-                       sprintf(&access[strlen(access)], "<select name=\"c_initax\" size=\"1\">\n");
-                       for (j=0; j<=6; ++j) {
-                               sprintf(&access[strlen(access)], "<option %s value=\"%d\">%d - %s</option>\n",
-                                       ((atoi(buf) == j) ? "selected" : ""),
-                                       j, j, axdefs[j]
-                               );
-                       }
-                       sprintf(&access[strlen(access)], "</select>");
-                       sprintf(&access[strlen(access)], "</td></tr>\n");
-                       break;
-               case 7:
-                       sprintf(&access[strlen(access)], "<tr><td>");
-                       sprintf(&access[strlen(access)], _("Require registration for new users"));
-                       sprintf(&access[strlen(access)], "</td><td>");
-                       sprintf(&access[strlen(access)], "<input type=\"checkbox\" name=\"c_regiscall\" value=\"yes\" %s>",
-                               ((atoi(buf) != 0) ? "checked" : ""));
-                       sprintf(&access[strlen(access)], "</td></tr>\n");
-                       break;
-               case 8:
-                       sprintf(&access[strlen(access)], "<tr><td>");
-                       sprintf(&access[strlen(access)], _("Quarantine messages from problem users"));
-                       sprintf(&access[strlen(access)], "</td><td>");
-                       sprintf(&access[strlen(access)], "<input type=\"checkbox\" name=\"c_twitdetect\" value=\"yes\" %s>",
-                               ((atoi(buf) != 0) ? "checked" : ""));
-                       sprintf(&access[strlen(access)], "</td></tr>\n");
-                       break;
-               case 9:
-                       sprintf(&access[strlen(access)], "<tr><td>");
-                       sprintf(&access[strlen(access)], _("Name of quarantine room"));
-                       sprintf(&access[strlen(access)], "</td><td>");
-                       sprintf(&access[strlen(access)], "<input type=\"text\" name=\"c_twitroom\" maxlength=\"63\" value=\"%s\">", buf);
-                       sprintf(&access[strlen(access)], "</td></tr>\n");
-                       break;
-               case 10:
-                       sprintf(&general[strlen(general)], "<tr><td>");
-                       sprintf(&general[strlen(general)], _("Paginator prompt (for text mode clients)"));
-                       sprintf(&general[strlen(general)], "</td><td>");
-                       sprintf(&general[strlen(general)], "<input type=\"text\" name=\"c_moreprompt\" maxlength=\"79\" value=\"%s\">", buf);
-                       sprintf(&general[strlen(general)], "</td></tr>\n");
-                       break;
-               case 11:
-                       sprintf(&access[strlen(access)], "<tr><td>");
-                       sprintf(&access[strlen(access)], _("Restrict access to Internet mail"));
-                       sprintf(&access[strlen(access)], "</td><td>");
-                       sprintf(&access[strlen(access)], "<input type=\"checkbox\" name=\"c_restrict\" value=\"yes\" %s>",
-                               ((atoi(buf) != 0) ? "checked" : ""));
-                       sprintf(&access[strlen(access)], "</td></tr>\n");
-                       break;
-               case 12:
-                       sprintf(&general[strlen(general)], "<tr><td>");
-                       sprintf(&general[strlen(general)], _("Geographic location of this system"));
-                       sprintf(&general[strlen(general)], "</td><td>");
-                       sprintf(&general[strlen(general)], "<input type=\"text\" name=\"c_bbs_city\" maxlength=\"31\" value=\"%s\">", buf);
-                       sprintf(&general[strlen(general)], "</td></tr>\n");
-                       break;
-               case 13:
-                       sprintf(&general[strlen(general)], "<tr><td>");
-                       sprintf(&general[strlen(general)], _("Name of system administrator"));
-                       sprintf(&general[strlen(general)], "</td><td>");
-                       sprintf(&general[strlen(general)], "<input type=\"text\" name=\"c_sysadm\" MAXLENGTH=\"25\" VALUE=\"%s\">", buf);
-                       sprintf(&general[strlen(general)], "</td></tr>\n");
-                       break;
-               case 14:
-                       sprintf(&tuning[strlen(tuning)], "<tr><td>");
-                       sprintf(&tuning[strlen(tuning)], _("Maximum concurrent sessions (0 = no limit)"));
-                       sprintf(&tuning[strlen(tuning)], "</td><td>");
-                       sprintf(&tuning[strlen(tuning)], "<input type=\"text\" name=\"c_maxsessions\" maxlength=\"5\" value=\"%s\">", buf);
-                       sprintf(&tuning[strlen(tuning)], "</td></tr>\n");
-                       break;
-               case 16:
-                       sprintf(&tuning[strlen(tuning)], "<tr><td>");
-                       sprintf(&tuning[strlen(tuning)], _("Default user purge time (days)"));
-                       sprintf(&tuning[strlen(tuning)], "</td><td>");
-                       sprintf(&tuning[strlen(tuning)], "<input type=\"text\" name=\"c_userpurge\" maxlength=\"5\" value=\"%s\">", buf);
-                       sprintf(&tuning[strlen(tuning)], "</td></tr>\n");
-                       break;
-               case 17:
-                       sprintf(&tuning[strlen(tuning)], "<tr><td>");
-                       sprintf(&tuning[strlen(tuning)], _("Default room purge time (days)"));
-                       sprintf(&tuning[strlen(tuning)], "</td><td>");
-                       sprintf(&tuning[strlen(tuning)], "<input type=\"text\" name=\"c_roompurge\" maxlength=\"5\" value=\"%s\">", buf);
-                       sprintf(&tuning[strlen(tuning)], "</td></tr>\n");
-                       break;
-               case 18:
-                       sprintf(&access[strlen(access)], "<tr><td>");
-                       sprintf(&access[strlen(access)], _("Name of room to log pages"));
-                       sprintf(&access[strlen(access)], "</td><td>");
-                       sprintf(&access[strlen(access)], "<input type=\"text\" name=\"c_logpages\" maxlength=\"63\" value=\"%s\">", buf);
-                       sprintf(&access[strlen(access)], "</td></tr>\n");
-                       break;
-               case 19:
-                       sprintf(&access[strlen(access)], "<tr><td>");
-                       sprintf(&access[strlen(access)], _("Access level required to create rooms"));
-                       sprintf(&access[strlen(access)], "</td><td>");
-                       sprintf(&access[strlen(access)], "<select name=\"c_createax\" size=\"1\">\n");
-                       for (j=0; j<=6; ++j) {
-                               sprintf(&access[strlen(access)], "<option %s value=\"%d\">%d - %s</option>\n",
-                                       ((atoi(buf) == j) ? "selected" : ""),
-                                       j, j, axdefs[j]
-                               );
-                       }
-                       sprintf(&access[strlen(access)], "</select>");
-                       sprintf(&access[strlen(access)], "</td></tr>\n");
-                       break;
-               case 20:
-                       sprintf(&tuning[strlen(tuning)], "<tr><td>");
-                       sprintf(&tuning[strlen(tuning)], _("Maximum message length"));
-                       sprintf(&tuning[strlen(tuning)], "</td><td>");
-                       sprintf(&tuning[strlen(tuning)], "<input type=\"text\" name=\"c_maxmsglen\" maxlength=\"20\" value=\"%s\">", buf);
-                       sprintf(&tuning[strlen(tuning)], "</td></tr>\n");
-                       break;
-               case 21:
-                       sprintf(&tuning[strlen(tuning)], "<tr><td>");
-                       sprintf(&tuning[strlen(tuning)], _("Minimum number of worker threads"));
-                       sprintf(&tuning[strlen(tuning)], "</td><td>");
-                       sprintf(&tuning[strlen(tuning)], "<input type=\"text\" name=\"c_min_workers\" maxlength=\"5\" value=\"%s\">", buf);
-                       sprintf(&tuning[strlen(tuning)], "</td></tr>\n");
-                       break;
-               case 22:
-                       sprintf(&tuning[strlen(tuning)], "<tr><td>");
-                       sprintf(&tuning[strlen(tuning)], _("Maximum number of worker threads"));
-                       sprintf(&tuning[strlen(tuning)], "</td><td>");
-                       sprintf(&tuning[strlen(tuning)], "<input type=\"text\" name=\"c_max_workers\" maxlength=\"5\" value=\"%s\">", buf);
-                       sprintf(&tuning[strlen(tuning)], "</td></tr>\n");
-                       break;
-               case 23:
-                       sprintf(&pop3[strlen(pop3)], "<tr><td>");
-                       sprintf(&pop3[strlen(pop3)], _("POP3 listener port (-1 to disable)"));
-                       sprintf(&pop3[strlen(pop3)], "</td><td>");
-                       sprintf(&pop3[strlen(pop3)], "<input type=\"text\" name=\"c_pop3_port\" maxlength=\"5\" value=\"%s\">", buf);
-                       sprintf(&pop3[strlen(pop3)], "</TD></TR>\n");
-                       break;
-               case 24:
-                       sprintf(&network[strlen(network)], "<TR><TD>");
-                       sprintf(&network[strlen(network)], _("SMTP MTA port (-1 to disable)"));
-                       sprintf(&network[strlen(network)], "</TD><TD>");
-                       sprintf(&network[strlen(network)], "<input type=\"text\" NAME=\"c_smtp_port\" MAXLENGTH=\"5\" VALUE=\"%s\">", buf);
-                       sprintf(&network[strlen(network)], "</TD></TR>\n");
-                       break;
-               case 25:        /* note: reverse bool */
-                       sprintf(&network[strlen(network)], "<TR><TD>");
-                       sprintf(&network[strlen(network)], _("Correct forged From: lines during authenticated SMTP"));
-                       sprintf(&network[strlen(network)], "</TD><TD>");
-                       sprintf(&network[strlen(network)], "<input type=\"checkbox\" NAME=\"c_rfc822_strict_from\" VALUE=\"yes\" %s>",
-                               ((atoi(buf) == 0) ? "CHECKED" : ""));
-                       sprintf(&network[strlen(network)], "</TD></TR>\n");
-                       break;
-               case 26:
-                       sprintf(&access[strlen(access)], "<TR><TD>");
-                       sprintf(&access[strlen(access)], _("Allow aides to zap (forget) rooms"));
-                       sprintf(&access[strlen(access)], "</TD><TD>");
-                       sprintf(&access[strlen(access)], "<input type=\"checkbox\" NAME=\"c_aide_zap\" VALUE=\"yes\" %s>",
-                               ((atoi(buf) != 0) ? "CHECKED" : ""));
-                       sprintf(&access[strlen(access)], "</TD></TR>\n");
-                       break;
-               case 27:
-                       sprintf(&network[strlen(network)], "<TR><TD>");
-                       sprintf(&network[strlen(network)], _("IMAP listener port (-1 to disable)"));
-                       sprintf(&network[strlen(network)], "</TD><TD>");
-                       sprintf(&network[strlen(network)], "<input type=\"text\" NAME=\"c_imap_port\" MAXLENGTH=\"5\" VALUE=\"%s\">", buf);
-                       sprintf(&network[strlen(network)], "</TD></TR>\n");
-                       break;
-               case 28:
-                       sprintf(&network[strlen(network)], "<TR><TD>");
-                       sprintf(&network[strlen(network)], _("Network run frequency (in seconds)"));
-                       sprintf(&network[strlen(network)], "</TD><TD>");
-                       sprintf(&network[strlen(network)], "<input type=\"text\" NAME=\"c_net_freq\" MAXLENGTH=\"5\" VALUE=\"%s\">", buf);
-                       sprintf(&network[strlen(network)], "</TD></TR>\n");
-                       break;
-               case 29:
-                       sprintf(&access[strlen(access)], "<TR><TD>");
-                       sprintf(&access[strlen(access)], _("Disable self-service user account creation"));
-                       sprintf(&access[strlen(access)], "</TD><TD>");
-                       sprintf(&access[strlen(access)], "<input type=\"checkbox\" NAME=\"c_disable_newu\" VALUE=\"yes\" %s>",
-                               ((atoi(buf) != 0) ? "CHECKED" : ""));
-                       sprintf(&access[strlen(access)], "</TD></TR>\n");
-                       break;
-               case 31:
-                       sprintf(&purger[strlen(purger)], "<TR><TD>");
-                       sprintf(&purger[strlen(purger)], _("Hour to run database auto-purge"));
-                       sprintf(&purger[strlen(purger)], "</TD><TD>");
-                       sprintf(&purger[strlen(purger)], "<SELECT NAME=\"c_purge_hour\" SIZE=\"1\">\n");
-                       for (j=0; j<=23; ++j) {
-                               sprintf(&purger[strlen(purger)], "<OPTION %s VALUE=\"%d\">%d:00%s</OPTION>\n",
-                                       ((atoi(buf) == j) ? "SELECTED" : ""),
-                                       j,
-                                       (get_time_format_cached() == WC_TIMEFORMAT_24) ? j : ((j == 0) ? 12 : ((j>12) ? j-12 : j)),
-                                       (get_time_format_cached() == WC_TIMEFORMAT_24) ? "" : ((j >= 12) ? "pm" : "am")
-                               );
-                       }
-                       sprintf(&purger[strlen(purger)], "</SELECT>");
-                       sprintf(&purger[strlen(purger)], "</TD></TR>\n");
-                       break;
-               case 32:
-                       sprintf(&directory[strlen(directory)], "<TR><TD>");
-                       sprintf(&directory[strlen(directory)], _("Host name of LDAP server (blank to disable)"));
-                       sprintf(&directory[strlen(directory)], "</TD><TD>");
-                       sprintf(&directory[strlen(directory)], "<input type=\"text\" NAME=\"c_ldap_host\" MAXLENGTH=\"127\" VALUE=\"%s\">", buf);
-                       sprintf(&directory[strlen(directory)], "</TD></TR>\n");
-                       break;
-               case 33:
-                       sprintf(&directory[strlen(directory)], "<TR><TD>");
-                       sprintf(&directory[strlen(directory)], _("Port number of LDAP server (blank to disable)"));
-                       sprintf(&directory[strlen(directory)], "</TD><TD>");
-                       sprintf(&directory[strlen(directory)], "<input type=\"text\" NAME=\"c_ldap_port\" MAXLENGTH=\"127\" VALUE=\"%d\">", atoi(buf));
-                       sprintf(&directory[strlen(directory)], "</TD></TR>\n");
-                       break;
-               case 34:
-                       sprintf(&directory[strlen(directory)], "<TR><TD>");
-                       sprintf(&directory[strlen(directory)], _("Base DN"));
-                       sprintf(&directory[strlen(directory)], "</TD><TD>");
-                       sprintf(&directory[strlen(directory)], "<input type=\"text\" NAME=\"c_ldap_base_dn\" MAXLENGTH=\"255\" VALUE=\"%s\">", buf);
-                       sprintf(&directory[strlen(directory)], "</TD></TR>\n");
-                       break;
-               case 35:
-                       sprintf(&directory[strlen(directory)], "<TR><TD>");
-                       sprintf(&directory[strlen(directory)], _("Bind DN"));
-                       sprintf(&directory[strlen(directory)], "</TD><TD>");
-                       sprintf(&directory[strlen(directory)], "<input type=\"text\" NAME=\"c_ldap_bind_dn\" MAXLENGTH=\"255\" VALUE=\"%s\">", buf);
-                       sprintf(&directory[strlen(directory)], "</TD></TR>\n");
-                       break;
-               case 36:
-                       sprintf(&directory[strlen(directory)], "<TR><TD>");
-                       sprintf(&directory[strlen(directory)], _("Password for bind DN"));
-                       sprintf(&directory[strlen(directory)], "</TD><TD>");
-                       sprintf(&directory[strlen(directory)], "<input type=\"password\" NAME=\"c_ldap_bind_pw\" MAXLENGTH=\"255\" VALUE=\"%s\">",
-                               buf);
-                       sprintf(&directory[strlen(directory)], "</TD></TR>\n");
-                       break;
-               case 37:
-                       sprintf(&network[strlen(network)], "<TR><TD>");
-                       sprintf(&network[strlen(network)], _("Server IP address (0.0.0.0 for 'any')"));
-                       sprintf(&network[strlen(network)], "</TD><TD>");
-                       sprintf(&network[strlen(network)], "<input type=\"text\" NAME=\"c_ip_addr\" MAXLENGTH=\"15\" VALUE=\"%s\">", buf);
-                       sprintf(&network[strlen(network)], "</TD></TR>\n");
-                       break;
-               case 38:
-                       sprintf(&network[strlen(network)], "<TR><TD>");
-                       sprintf(&network[strlen(network)], _("SMTP MSA port (-1 to disable)"));
-                       sprintf(&network[strlen(network)], "</TD><TD>");
-                       sprintf(&network[strlen(network)], "<input type=\"text\" NAME=\"c_msa_port\" MAXLENGTH=\"5\" VALUE=\"%s\">", buf);
-                       sprintf(&network[strlen(network)], "</TD></TR>\n");
-                       break;
-               case 39:
-                       sprintf(&network[strlen(network)], "<TR><TD>");
-                       sprintf(&network[strlen(network)], _("IMAP over SSL port (-1 to disable)"));
-                       sprintf(&network[strlen(network)], "</TD><TD>");
-                       sprintf(&network[strlen(network)], "<input type=\"text\" NAME=\"c_imaps_port\" MAXLENGTH=\"5\" VALUE=\"%s\">", buf);
-                       sprintf(&network[strlen(network)], "</TD></TR>\n");
-                       break;
-               case 40:
-                       sprintf(&pop3[strlen(pop3)], "<TR><TD>");
-                       sprintf(&pop3[strlen(pop3)], _("POP3 over SSL port (-1 to disable)"));
-                       sprintf(&pop3[strlen(pop3)], "</TD><TD>");
-                       sprintf(&pop3[strlen(pop3)], "<input type=\"text\" NAME=\"c_pop3s_port\" MAXLENGTH=\"5\" VALUE=\"%s\">", buf);
-                       sprintf(&pop3[strlen(pop3)], "</TD></TR>\n");
-                       break;
-               case 41:
-                       sprintf(&network[strlen(network)], "<TR><TD>");
-                       sprintf(&network[strlen(network)], _("SMTP over SSL port (-1 to disable)"));
-                       sprintf(&network[strlen(network)], "</TD><TD>");
-                       sprintf(&network[strlen(network)], "<input type=\"text\" NAME=\"c_smtps_port\" MAXLENGTH=\"5\" VALUE=\"%s\">", buf);
-                       sprintf(&network[strlen(network)], "</TD></TR>\n");
-                       break;
-               case 42:
-                               sprintf(&idxjnl[strlen(idxjnl)], "<TR><TD>");
-                               sprintf(&idxjnl[strlen(idxjnl)], _("Enable full text index"));
-                               sprintf(&idxjnl[strlen(idxjnl)], "</TD><TD>");
-                               sprintf(&idxjnl[strlen(idxjnl)], "<input type=\"checkbox\" NAME=\"c_enable_fulltext\" VALUE=\"yes\" %s>",
-                                       ((atoi(buf) != 0) ? "CHECKED" : ""));
-                               sprintf(&idxjnl[strlen(idxjnl)], "</TD></TR>\n");
-                       break;
-               case 43:
-                       sprintf(&tuning[strlen(tuning)], "<TR><TD>");
-                       sprintf(&tuning[strlen(tuning)], _("Automatically delete committed database logs"));
-                       sprintf(&tuning[strlen(tuning)], "</TD><TD>");
-                       sprintf(&tuning[strlen(tuning)], "<input type=\"checkbox\" NAME=\"c_auto_cull\" VALUE=\"yes\" %s>",
-                               ((atoi(buf) != 0) ? "CHECKED" : ""));
-                       sprintf(&tuning[strlen(tuning)], "</TD></TR>\n");
-                       break;
-               case 44:
-                       sprintf(&network[strlen(network)], "<TR><TD>");
-                       sprintf(&network[strlen(network)], _("Instantly expunge deleted messages in IMAP"));
-                       sprintf(&network[strlen(network)], "</TD><TD>");
-                       sprintf(&network[strlen(network)], "<input type=\"checkbox\" NAME=\"c_instant_expunge\" VALUE=\"yes\" %s>",
-                               ((atoi(buf) != 0) ? "CHECKED" : ""));
-                       sprintf(&network[strlen(network)], "</TD></TR>\n");
-                       break;
-               case 45:
-                       sprintf(&network[strlen(network)], "<TR><TD>");
-                       sprintf(&network[strlen(network)], _("Allow unauthenticated SMTP clients to spoof this site's domains"));
-                       sprintf(&network[strlen(network)], "</TD><TD>");
-                       sprintf(&network[strlen(network)], "<input type=\"checkbox\" NAME=\"c_allow_spoofing\" VALUE=\"yes\" %s>",
-                               ((atoi(buf) != 0) ? "CHECKED" : ""));
-                       sprintf(&network[strlen(network)], "</TD></TR>\n");
-                       break;
-               case 46:
-                       sprintf(&idxjnl[strlen(idxjnl)], "<TR><TD>");
-                       sprintf(&idxjnl[strlen(idxjnl)], _("Perform journaling of email messages"));
-                       sprintf(&idxjnl[strlen(idxjnl)], "</TD><TD>");
-                       sprintf(&idxjnl[strlen(idxjnl)], "<input type=\"checkbox\" NAME=\"c_journal_email\" VALUE=\"yes\" %s>",
-                               ((atoi(buf) != 0) ? "CHECKED" : ""));
-                       sprintf(&idxjnl[strlen(idxjnl)], "</TD></TR>\n");
-                       break;
-               case 47:
-                       sprintf(&idxjnl[strlen(idxjnl)], "<TR><TD>");
-                       sprintf(&idxjnl[strlen(idxjnl)], _("Perform journaling of non-email messages"));
-                       sprintf(&idxjnl[strlen(idxjnl)], "</TD><TD>");
-                       sprintf(&idxjnl[strlen(idxjnl)], "<input type=\"checkbox\" NAME=\"c_journal_pubmsgs\" VALUE=\"yes\" %s>",
-                               ((atoi(buf) != 0) ? "CHECKED" : ""));
-                       sprintf(&idxjnl[strlen(idxjnl)], "</TD></TR>\n");
-                       break;
-               case 48:
-                       sprintf(&idxjnl[strlen(idxjnl)], "<TR><TD>");
-                       sprintf(&idxjnl[strlen(idxjnl)], _("Email destination of journalized messages"));
-                       sprintf(&idxjnl[strlen(idxjnl)], "</TD><TD>");
-                       sprintf(&idxjnl[strlen(idxjnl)], "<input type=\"text\" NAME=\"c_journal_dest\" MAXLENGTH=\"127\" VALUE=\"%s\">", buf);
-                       sprintf(&idxjnl[strlen(idxjnl)], "</TD></TR>\n");
-                       break;
-               case 49:
-                       if (strlen(buf) == 0) {
-                               strcpy(buf, "UTC");
-                       }
-                       sprintf(&general[strlen(general)], "<TR><TD>");
-                       sprintf(&general[strlen(general)], _("Default timezone for unzoned calendar items"));
-                       sprintf(&general[strlen(general)], "</TD><TD>");
-                       sprintf(&general[strlen(general)], "<select name=\"c_default_cal_zone\" size=\"1\">\n");
-
-                       icalarray *zones;
-                       int z;
-                       long len;
-                       char this_zone[128];
-                       char *ZName;
-                       void *ZNamee;
-                       HashList *List;
-                       HashPos  *it;
-
-                       List = NewHash(1, NULL);
-                       len = sizeof("UTC") + 1;
-                       ZName = malloc(len + 1);
-                       memcpy(ZName, "UTC", len + 1);
-                       Put(List, ZName, len, ZName, NULL);
-                       zones = icaltimezone_get_builtin_timezones();
-                       for (z = 0; z < zones->num_elements; ++z) {
-                               strcpy(this_zone, icaltimezone_get_location(icalarray_element_at(zones, z)));
-                               len = strlen(this_zone);
-                               ZName = (char*)malloc(len +1);
-                               memcpy(ZName, this_zone, len + 1);
-                               Put(List, ZName, len, ZName, NULL);
-                       }
-                       SortByHashKey(List, 0);
-                       it = GetNewHashPos();
-                       while (GetNextHashPos(List, it, &len, &VCZname, &ZNamee)) {
-                               sprintf(&general[strlen(general)], "<option %s value=\"%s\">%s</option>\n",
-                                       (!strcasecmp((char*)ZName, buf) ? "selected" : ""),
-                                       ZName, ZName
-                               );
-                       }
-                       DeleteHashPos(&it);
-                       DeleteHash(&List);
-
-                       sprintf(&general[strlen(general)], "</select>");
-                       sprintf(&general[strlen(general)], "</TD></TR>\n");
-                       break;
-               case 50:
-                       sprintf(&network[strlen(network)], "<TR><TD>");
-                       sprintf(&network[strlen(network)], _("<a href=\"http://www.postfix.org/tcp_table.5.html\">Postfix TCP Dictionary Port </a> (-1 to disable)"));
-                       sprintf(&network[strlen(network)], "</TD><TD>");
-                       sprintf(&network[strlen(network)], "<input type=\"text\" NAME=\"c_pftcpdict_port\" MAXLENGTH=\"5\" VALUE=\"%s\">", buf);
-                       sprintf(&network[strlen(network)], "</TD></TR>\n");
-                       break;
-               case 51:
-                       sprintf(&network[strlen(network)], "<TR><TD>");
-                       sprintf(&network[strlen(network)], _("ManageSieve Port (-1 to disable)"));
-                       sprintf(&network[strlen(network)], "</TD><TD>");
-                       sprintf(&network[strlen(network)], "<input type=\"text\" NAME=\"c_mgesve_port\" MAXLENGTH=\"5\" VALUE=\"%s\">", buf);
-                       sprintf(&network[strlen(network)], "</TD></TR>\n");
-                       break;
-               case 52:
-                       sprintf(&access[strlen(access)], "<TR><TD>");
-                       sprintf(&access[strlen(access)], _("Enable host based authentication mode"));
-                       sprintf(&access[strlen(access)], "</TD><TD><input type=\"hidden\" NAME=\"c_auth_mode\" VALUE=\"%s\">%s",
-                               buf,
-                               ((atoi(buf) != 0) ? "Yes" : "No"));
-                       sprintf(&access[strlen(access)], "</TD></TR>\n");
-                       break;
-               case 53:
-                       sprintf(&funambol[strlen(funambol)], "<TR><TD>");
-                       sprintf(&funambol[strlen(funambol)], _("Funambol server host (blank to disable)"));
-                       sprintf(&funambol[strlen(funambol)], "</TD><TD>");
-                       sprintf(&funambol[strlen(funambol)], "<input type=\"text\" NAME=\"c_funambol_host\" MAXLENGTH=\"255\" VALUE=\"%s\">", buf);
-                       sprintf(&funambol[strlen(funambol)], "</TD></TR>\n");
-                       break;
-               case 54:
-                       sprintf(&funambol[strlen(funambol)], "<TR><TD>");
-                       sprintf(&funambol[strlen(funambol)], _("Funambol server port "));
-                       sprintf(&funambol[strlen(funambol)], "</TD><TD>");
-                       sprintf(&funambol[strlen(funambol)], "<input type=\"text\" NAME=\"c_funambol_port\" MAXLENGTH=\"5\" VALUE=\"%s\">", buf);
-                       sprintf(&funambol[strlen(funambol)], "</TD></TR>\n");
-                       break;
-               case 55:
-                       sprintf(&funambol[strlen(funambol)], "<TR><TD>");
-                       sprintf(&funambol[strlen(funambol)], _("Funambol sync source"));
-                       sprintf(&funambol[strlen(funambol)], "</TD><TD>");
-                       sprintf(&funambol[strlen(funambol)], "<input type=\"text\" NAME=\"c_funambol_source\" MAXLENGTH=\"255\" VALUE=\"%s\">", buf);
-                       sprintf(&funambol[strlen(funambol)], "</TD></TR>\n");
-                       break;
-               case 56:
-                       sprintf(&funambol[strlen(funambol)], "<TR><TD>");
-                       sprintf(&funambol[strlen(funambol)], _("Funambol auth details (user:pass)"));
-                       sprintf(&funambol[strlen(funambol)], "</TD><TD>");
-                       sprintf(&funambol[strlen(funambol)], "<input type=\"text\" NAME=\"c_funambol_auth\" MAXLENGTH=\"255\" VALUE=\"%s\">", buf);
-                       sprintf(&funambol[strlen(funambol)], "</TD></TR>\n");
-                       break;
-               case 57:
-                       sprintf(&network[strlen(network)], "<TR><TD>");
-                       sprintf(&network[strlen(network)], _("Perform RBL checks upon connect instead of after RCPT"));
-                       sprintf(&network[strlen(network)], "</TD><TD>");
-                       sprintf(&network[strlen(network)], "<input type=\"checkbox\" NAME=\"c_rbl_at_greeting\" VALUE=\"yes\" %s>",
-                               ((atoi(buf) != 0) ? "CHECKED" : ""));
-                       sprintf(&network[strlen(network)], "</TD></TR>\n");
-                       break;
-               case 58:
-                       sprintf(&access[strlen(access)], "<TR><TD>");
-                       sprintf(&access[strlen(access)], _("Master user name (blank to disable)"));
-                       sprintf(&access[strlen(access)], "</TD><TD>");
-                       sprintf(&access[strlen(access)], "<input type=\"text\" NAME=\"c_master_user\" MAXLENGTH=\"31\" VALUE=\"%s\">", buf);
-                       sprintf(&access[strlen(access)], "</TD></TR>\n");
-                       break;
-               case 59:
-                       sprintf(&access[strlen(access)], "<TR><TD>");
-                       sprintf(&access[strlen(access)], _("Master user password"));
-                       sprintf(&access[strlen(access)], "</TD><TD>");
-                       sprintf(&access[strlen(access)], "<input type=\"password\" NAME=\"c_master_pass\" MAXLENGTH=\"31\" VALUE=\"%s\">",
-                       buf);
-                       sprintf(&directory[strlen(directory)], "</TD></TR>\n");
-                       break;
-               case 60:
-                       sprintf(&funambol[strlen(funambol)], "<TR><TD>");
-                       sprintf(&funambol[strlen(funambol)], _("External pager tool (blank to disable)"));
-                       sprintf(&funambol[strlen(funambol)], "</TD><TD>");
-                       sprintf(&funambol[strlen(funambol)], "<input type=\"text\" NAME=\"c_pager_program\" MAXLENGTH=\"255\" VALUE=\"%s\">", buf);
-                       sprintf(&funambol[strlen(funambol)], "</TD></TR>\n");
-                       break;
-               case 61:
-                       sprintf(&network[strlen(network)], "<TR><TD>");
-                       sprintf(&network[strlen(network)], _("Keep original from headers in IMAP"));
-                       sprintf(&network[strlen(network)], "</TD><TD>");
-                       sprintf(&network[strlen(network)], "<input type=\"checkbox\" NAME=\"c_imap_keep_from\" VALUE=\"yes\" %s>",
-                               ((atoi(buf) != 0) ? "CHECKED" : ""));
-                       sprintf(&network[strlen(network)], "</TD></TR>\n");
-                       break;
-               case 62:
-                       sprintf(&network[strlen(network)], "<tr><td>");
-                       sprintf(&network[strlen(network)], _("XMPP (Jabber) client to server port (-1 to disable)"));
-                       sprintf(&network[strlen(network)], "</td><td>");
-                       sprintf(&network[strlen(network)], "<input type=\"text\" name=\"c_xmpp_c2s_port\" maxlength=\"5\" value=\"%s\">", buf);
-                       sprintf(&network[strlen(network)], "</TD></TR>\n");
-                       break;
-               case 63:
-                       sprintf(&network[strlen(network)], "<tr><td>");
-                       sprintf(&network[strlen(network)], _("XMPP (Jabber) server to server port (-1 to disable)"));
-                       sprintf(&network[strlen(network)], "</td><td>");
-                       sprintf(&network[strlen(network)], "<input type=\"hidden\" name=\"c_xmpp_s2s_port\" value=\"%s\">\n", buf);
-                       sprintf(&network[strlen(network)], "</TD></TR>\n");
-                       break;
-               case 64:
-                       sprintf(&pop3[strlen(pop3)], "<tr><td>");
-                       sprintf(&pop3[strlen(pop3)], _("POP3 fetch frequency in seconds"));
-                       sprintf(&pop3[strlen(pop3)], "</td><td>");
-                       sprintf(&pop3[strlen(pop3)], "<input type=\"text\" name=\"c_pop3_fetch\" MAXLENGTH=\"5\" value=\"%s\">\n", buf);
-                       sprintf(&pop3[strlen(pop3)], "</TD></TR>\n");
-                       break;
-               case 65:
-                       sprintf(&pop3[strlen(pop3)], "<tr><td>");
-                       sprintf(&pop3[strlen(pop3)], _("POP3 fastest fetch frequency in seconds"));
-                       sprintf(&pop3[strlen(pop3)], "</td><td>");
-                       sprintf(&pop3[strlen(pop3)], "<input type=\"text\" name=\"c_pop3_fastest\" MAXLENGTH=\"5\" value=\"%s\">\n", buf);
-                       sprintf(&pop3[strlen(pop3)], "</TD></TR>\n");
-                       break;
-               case 66: /* Flag spam */
-                       sprintf(&network[strlen(network)], "<TR><TD>");
-                       sprintf(&network[strlen(network)], _("Flag message as spam, instead of rejecting it"));
-                       sprintf(&network[strlen(network)], "</TD><TD>");
-                       sprintf(&network[strlen(network)], "<input type=\"checkbox\" NAME=\"c_spam_flag_only\" VALUE=\"yes\" %s>",
-                               (atoi(buf) ? "CHECKED" : ""));
-                       sprintf(&network[strlen(network)], "</TD></TR>\n");
-                       break;
-                       
-               }
-       
-       }
-
-       serv_puts("GPEX site");
-       serv_getln(buf, sizeof buf);
-       if (buf[0] == '2') {
-               sitepolicy = extract_int(&buf[4], 0);
-               sitevalue = extract_int(&buf[4], 1);
-       }
-
-       serv_puts("GPEX mailboxes");
-       serv_getln(buf, sizeof buf);
-       if (buf[0] == '2') {
-               mboxpolicy = extract_int(&buf[4], 0);
-               mboxvalue = extract_int(&buf[4], 1);
-       }
-
-
-       sprintf(&purger[strlen(purger)], "<TR><TD COLSPAN=2><hr /></TD></TR>\n");
-
-       sprintf(&purger[strlen(purger)], "<TR><TD>");
-       sprintf(&purger[strlen(purger)], _("Default message expire policy for public rooms"));
-       sprintf(&purger[strlen(purger)], "</TD><TD>");
-       sprintf(&purger[strlen(purger)], "<input type=\"radio\" NAME=\"sitepolicy\" VALUE=\"1\" %s>",
-               ((sitepolicy == 1) ? "CHECKED" : "") );
-       sprintf(&purger[strlen(purger)], _("Never automatically expire messages"));
-       sprintf(&purger[strlen(purger)], "<br />\n");
-       sprintf(&purger[strlen(purger)], "<input type=\"radio\" NAME=\"sitepolicy\" VALUE=\"2\" %s>",
-               ((sitepolicy == 2) ? "CHECKED" : "") );
-       sprintf(&purger[strlen(purger)], _("Expire by message count"));
-       sprintf(&purger[strlen(purger)], "<br />\n");
-       sprintf(&purger[strlen(purger)], "<input type=\"radio\" NAME=\"sitepolicy\" VALUE=\"3\" %s>",
-               ((sitepolicy == 3) ? "CHECKED" : "") );
-       sprintf(&purger[strlen(purger)], _("Expire by message age"));
-       sprintf(&purger[strlen(purger)], "<br />");
-       sprintf(&purger[strlen(purger)], _("Number of messages or days: "));
-       sprintf(&purger[strlen(purger)], "<input type=\"text\" NAME=\"sitevalue\" MAXLENGTH=\"5\" VALUE=\"%d\">", sitevalue);
-       sprintf(&purger[strlen(purger)], "</TD></TR>\n");
-
-       sprintf(&purger[strlen(purger)], "<TR><TD COLSPAN=2><hr /></TD></TR>\n");
-
-       sprintf(&purger[strlen(purger)], "<TR><TD>");
-       sprintf(&purger[strlen(purger)], _("Default message expire policy for private mailboxes"));
-       sprintf(&purger[strlen(purger)], "</TD><TD>");
-       sprintf(&purger[strlen(purger)], "<input type=\"radio\" NAME=\"mboxpolicy\" VALUE=\"0\" %s>",
-               ((mboxpolicy == 0) ? "CHECKED" : "") );
-       sprintf(&purger[strlen(purger)], _("Same policy as public rooms"));
-       sprintf(&purger[strlen(purger)], "<br />\n");
-       sprintf(&purger[strlen(purger)], "<input type=\"radio\" NAME=\"mboxpolicy\" VALUE=\"1\" %s>",
-                       ((mboxpolicy == 1) ? "CHECKED" : "") );
-       sprintf(&purger[strlen(purger)], _("Never automatically expire messages"));
-       sprintf(&purger[strlen(purger)], "<br />\n");
-       sprintf(&purger[strlen(purger)], "<input type=\"radio\" NAME=\"mboxpolicy\" VALUE=\"2\" %s>",
-               ((mboxpolicy == 2) ? "CHECKED" : "") );
-       sprintf(&purger[strlen(purger)], _("Expire by message count"));
-       sprintf(&purger[strlen(purger)], "<br />\n");
-       sprintf(&purger[strlen(purger)], "<input type=\"radio\" NAME=\"mboxpolicy\" VALUE=\"3\" %s>",
-               ((mboxpolicy == 3) ? "CHECKED" : "") );
-       sprintf(&purger[strlen(purger)], _("Expire by message age"));
-       sprintf(&purger[strlen(purger)], "<br />");
-       sprintf(&purger[strlen(purger)], _("Number of messages or days: "));
-       sprintf(&purger[strlen(purger)], "<input type=\"text\" NAME=\"mboxvalue\" MAXLENGTH=\"5\" VALUE=\"%d\">", mboxvalue);
-       sprintf(&purger[strlen(purger)], "</TD></TR>\n");
-
-       sprintf(&purger[strlen(purger)], "<TR><TD COLSPAN=2><hr /></TD></TR>\n");
-
-
-       sprintf(&general[strlen(general)], "</table>");
-       sprintf(&access[strlen(access)], "</table>");
-       sprintf(&network[strlen(network)], "</table>");
-       sprintf(&tuning[strlen(tuning)], "</table>");
-       sprintf(&directory[strlen(directory)], "</table>");
-       sprintf(&purger[strlen(purger)], "</table>");
-       sprintf(&idxjnl[strlen(idxjnl)], "</table>");
-       sprintf(&funambol[strlen(funambol)], "</table>");
-       sprintf(&pop3[strlen(pop3)], "</table>");
-
-       tabbed_dialog(9, tabnames);
-
-       begin_tab(0, 9);        StrBufAppendBufPlain(WCC->WBuf, general, strlen(general), 0);            end_tab(0, 9);
-       begin_tab(1, 9);        StrBufAppendBufPlain(WCC->WBuf, access, strlen(access), 0);              end_tab(1, 9);
-       begin_tab(2, 9);        StrBufAppendBufPlain(WCC->WBuf, network, strlen(network), 0);            end_tab(2, 9);
-       begin_tab(3, 9);        StrBufAppendBufPlain(WCC->WBuf, tuning, strlen(tuning), 0);              end_tab(3, 9);
-       begin_tab(4, 9);        StrBufAppendBufPlain(WCC->WBuf, directory, strlen(directory), 0);        end_tab(4, 9);
-       begin_tab(5, 9);        StrBufAppendBufPlain(WCC->WBuf, purger, strlen(purger), 0);              end_tab(5, 9);
-       begin_tab(6, 9);        StrBufAppendBufPlain(WCC->WBuf, idxjnl, strlen(idxjnl), 0);              end_tab(6, 9);
-       begin_tab(7, 9);        StrBufAppendBufPlain(WCC->WBuf, funambol, strlen(funambol), 0);  end_tab(7, 9);
-       begin_tab(8, 9);        StrBufAppendBufPlain(WCC->WBuf, pop3, strlen(pop3), 0);          end_tab(8, 9);
-
-       begin_tab(9, 9);
-       wprintf("<input type=\"submit\" NAME=\"ok_button\" VALUE=\"%s\">", _("Save changes"));
-       wprintf("&nbsp;");
-       wprintf("<input type=\"submit\" NAME=\"cancel_button\" VALUE=\"%s\">\n", _("Cancel"));
-       end_tab(9, 9);
-
-       wprintf("</FORM>\n");
-       wprintf("</td></tr></table>\n");
-       wDumpContent(1);
-}
-
 typedef struct _CfgMapping {
        int type;
        const char *Key;
@@ -876,7 +122,7 @@ CfgMapping ServerConfig[] = {
 void load_siteconfig(void)
 {
        struct wcsession *WCC = WC;
-       StrBuf *Buf, *Token;
+       StrBuf *Buf, *CfgToken;
        HashList *Cfg;
        char buf[SIZ];
        long len;
@@ -910,18 +156,18 @@ void load_siteconfig(void)
 
        serv_puts("GPEX site");
        Buf = NewStrBuf();
-       Token = NULL;
+       CfgToken = NULL;
        StrBuf_ServGetln(Buf);
        if (ChrPtr(Buf)[0] == '2') {
                StrBufCutLeft(Buf, 4);
 
-               Token = NewStrBuf();
-               StrBufExtract_token(Token, Buf, 0, '|');
-               Put(Cfg, HKEY("sitepolicy"), Token, HFreeStrBuf);
+               CfgToken = NewStrBuf();
+               StrBufExtract_token(CfgToken, Buf, 0, '|');
+               Put(Cfg, HKEY("sitepolicy"), CfgToken, HFreeStrBuf);
 
-               Token = NewStrBuf();
-               StrBufExtract_token(Token, Buf, 1, '|');
-               Put(Cfg, HKEY("sitevalue"), Token, HFreeStrBuf);
+               CfgToken = NewStrBuf();
+               StrBufExtract_token(CfgToken, Buf, 1, '|');
+               Put(Cfg, HKEY("sitevalue"), CfgToken, HFreeStrBuf);
        }
 
        serv_puts("GPEX mailboxes");
@@ -929,13 +175,13 @@ void load_siteconfig(void)
        if (buf[0] == '2') {
                StrBufCutLeft(Buf, 4);
 
-               Token = NewStrBuf();
-               StrBufExtract_token(Token, Buf, 0, '|');
-               Put(Cfg, HKEY("mboxpolicy"), Token, HFreeStrBuf);
+               CfgToken = NewStrBuf();
+               StrBufExtract_token(CfgToken, Buf, 0, '|');
+               Put(Cfg, HKEY("mboxpolicy"), CfgToken, HFreeStrBuf);
 
-               Token = NewStrBuf();
-               StrBufExtract_token(Token, Buf, 1, '|');
-               Put(Cfg, HKEY("mboxvalue"), Token, HFreeStrBuf);
+               CfgToken = NewStrBuf();
+               StrBufExtract_token(CfgToken, Buf, 1, '|');
+               Put(Cfg, HKEY("mboxvalue"), CfgToken, HFreeStrBuf);
        }
 }
 
@@ -1009,7 +255,7 @@ void tmplput_servcfg(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *C
                        Tokens->Params[0]->len, 
                        &vBuf);
                Buf = (StrBuf*) vBuf;
-               StrBufAppendBuf(Target, Buf, 0);
+               StrBufAppendTemplate(Target, nArgs, Tokens, Context, ContextType, Buf, 1);
        }
 }
 
@@ -1063,10 +309,9 @@ void
 InitModule_SITECONFIG
 (void)
 {
-       WebcitAddUrlHandler(HKEY("display_siteconfig"), display_siteconfig, CTX_NONE);
        WebcitAddUrlHandler(HKEY("siteconfig"), siteconfig, CTX_NONE);
 
-       RegisterNamespace("SERV:CFG", 1, 1, tmplput_servcfg, CTX_NONE);
+       RegisterNamespace("SERV:CFG", 1, 2, tmplput_servcfg, CTX_NONE);
        RegisterConditional(HKEY("COND:SERVCFG"), 3, ConditionalServCfg, CTX_NONE);
        RegisterConditional(HKEY("COND:SERVCFG:SUBST"), 4, ConditionalServCfgSubst, CTX_NONE);
 }
index a1879ba9d39628b7b070502b7a783e04b1dfb2f4..05f03c6b925d0bf658915418d88a16ef26cbe57b 100644 (file)
@@ -558,21 +558,21 @@ void GetTemplateTokenString(WCTemplateToken *Tokens,
  * \brief Print the value of a variable
  * \param keyname get a key to print
  */
-void print_value_of(StrBuf *Target, WCTemplateToken *Token, void *Context, int ContextType) {
+void print_value_of(StrBuf *Target, WCTemplateToken *Tokens, void *Context, int ContextType) {
        struct wcsession *WCC = WC;
        wcsubst *ptr;
        void *vVar;
 
        /*if (WCC->vars != NULL) PrintHash(WCC->vars, VarPrintTransition, VarPrintEntry);*/
        /// TODO: debricated!
-       if (Token->pName[0] == '=') {
-               DoTemplate(Token->pName+1, Token->NameEnd - 1, NULL, NULL, 0);
+       if (Tokens->pName[0] == '=') {
+               DoTemplate(Tokens->pName+1, Tokens->NameEnd - 1, NULL, NULL, 0);
        }
 
 //////TODO: if param[1] == "U" -> urlescape
 /// X -> escputs
        /** Page-local variables */
-       if ((WCC->vars!= NULL) && GetHash(WCC->vars, Token->pName, Token->NameEnd, &vVar)) {
+       if ((WCC->vars!= NULL) && GetHash(WCC->vars, Tokens->pName, Tokens->NameEnd, &vVar)) {
                ptr = (wcsubst*) vVar;
                switch(ptr->wcs_type) {
                case WCS_STRING:
@@ -582,7 +582,7 @@ void print_value_of(StrBuf *Target, WCTemplateToken *Token, void *Context, int C
                        pvo_do_cmd(Target, ptr->wcs_value);
                        break;
                case WCS_FUNCTION:
-                       (*ptr->wcs_function) (Target, Token->nParameters, Token, Context, ContextType);
+                       (*ptr->wcs_function) (Target, Tokens->nParameters, Tokens, Context, ContextType);
                        break;
                case WCS_STRBUF:
                case WCS_STRBUF_REF:
@@ -592,17 +592,17 @@ void print_value_of(StrBuf *Target, WCTemplateToken *Token, void *Context, int C
                        StrBufAppendPrintf(Target, "%ld", ptr->lvalue);
                        break;
                default:
-                       lprintf(1,"WARNING: invalid value in SV-Hash at %s!\n", Token->pName);
-                       StrBufAppendPrintf(Target, "<pre>WARNING: \ninvalid value in SV-Hash at %s!\n</pre>", Token->pName);
+                       lprintf(1,"WARNING: invalid value in SV-Hash at %s!\n", Tokens->pName);
+                       StrBufAppendPrintf(Target, "<pre>WARNING: \ninvalid value in SV-Hash at %s!\n</pre>", Tokens->pName);
                }
        }
        else {
                lprintf(1, "didn't find Handler [%s] (in '%s' line %ld); "
                        " [%s]\n", 
-                       Token->pName,
-                       ChrPtr(Token->FileName),
-                       Token->Line,
-                       ChrPtr(Token->FlatToken));
+                       Tokens->pName,
+                       ChrPtr(Tokens->FileName),
+                       Tokens->Line,
+                       ChrPtr(Tokens->FlatToken));
                wc_backtrace();
        }
 }
@@ -699,7 +699,7 @@ void PutNewToken(WCTemplate *Template, WCTemplateToken *NewToken)
        Template->Tokens[(Template->nTokensUsed)++] = NewToken;
 }
 
-TemplateParam *GetNextParameter(StrBuf *Buf, const char **pCh, const char *pe, WCTemplateToken *Token, WCTemplate *pTmpl)
+TemplateParam *GetNextParameter(StrBuf *Buf, const char **pCh, const char *pe, WCTemplateToken *Tokens, WCTemplate *pTmpl)
 {
        const char *pch = *pCh;
        const char *pchs, *pche;
@@ -751,8 +751,8 @@ TemplateParam *GetNextParameter(StrBuf *Buf, const char **pCh, const char *pe, W
                        lprintf(1, "Error (in '%s' line %ld); "
                                "evaluating template param [%s] in Token [%s]\n",
                                ChrPtr(pTmpl->FileName),
-                               Token->Line,
-                               ChrPtr(Token->FlatToken),
+                               Tokens->Line,
+                               ChrPtr(Tokens->FlatToken),
                                *pCh);
                        pch ++;
                        free(Parm);
@@ -789,8 +789,8 @@ TemplateParam *GetNextParameter(StrBuf *Buf, const char **pCh, const char *pe, W
                        lprintf(1, "Error (in '%s' line %ld); "
                                "evaluating long template param [%s] in Token [%s]\n",
                                ChrPtr(pTmpl->FileName),
-                               Token->Line,
-                               ChrPtr(Token->FlatToken),
+                               Tokens->Line,
+                               ChrPtr(Tokens->FlatToken),
                                *pCh);
                        free(Parm);
                        return NULL;
@@ -978,43 +978,43 @@ WCTemplateToken *NewTemplateSubstitute(StrBuf *Buf,
 
 
 
-int EvaluateConditional(StrBuf *Target, WCTemplateToken *Token, WCTemplate *pTmpl, void *Context, int Neg, int state, int ContextType)
+int EvaluateConditional(StrBuf *Target, WCTemplateToken *Tokens, WCTemplate *pTmpl, void *Context, int Neg, int state, int ContextType)
 {
        ConditionalStruct *Cond;
 
-       if ((Token->Params[0]->len == 1) &&
-           (Token->Params[0]->Start[0] == 'X'))
-               return (state != 0)?Token->Params[1]->lvalue:0;
+       if ((Tokens->Params[0]->len == 1) &&
+           (Tokens->Params[0]->Start[0] == 'X'))
+               return (state != 0)?Tokens->Params[1]->lvalue:0;
            
-       Cond = (ConditionalStruct *) Token->PreEval;
+       Cond = (ConditionalStruct *) Tokens->PreEval;
        if (Cond == NULL) {
                lprintf(1, "Conditional [%s] (in '%s' line %ld); unknown![%s]\n", 
-                       Token->Params[0]->Start,
+                       Tokens->Params[0]->Start,
                        ChrPtr(pTmpl->FileName),
-                       Token->Line,
-                       ChrPtr(Token->FlatToken));
+                       Tokens->Line,
+                       ChrPtr(Tokens->FlatToken));
                return 1;
        }
 
-       if (Token->nParameters < Cond->nParams) {
+       if (Tokens->nParameters < Cond->nParams) {
                lprintf(1, "Conditional [%s] (in '%s' line %ld); needs %ld Params![%s]\n", 
-                       Token->Params[0]->Start,
+                       Tokens->Params[0]->Start,
                        ChrPtr(pTmpl->FileName),
-                       Token->Line,
+                       Tokens->Line,
                        Cond->nParams,
-                       ChrPtr(Token->FlatToken));
+                       ChrPtr(Tokens->FlatToken));
                StrBufAppendPrintf(
                        Target, 
                        "<pre>\nConditional [%s] (in '%s' line %ld); needs %ld Params!\n[%s]\n</pre>\n", 
-                       Token->Params[0]->Start,
+                       Tokens->Params[0]->Start,
                        ChrPtr(pTmpl->FileName),
-                       Token->Line,
+                       Tokens->Line,
                        Cond->nParams,
-                       ChrPtr(Token->FlatToken));
+                       ChrPtr(Tokens->FlatToken));
                return 0;
        }
-       if (Cond->CondF(Token, Context, ContextType) == Neg)
-               return Token->Params[1]->lvalue;
+       if (Cond->CondF(Tokens, Context, ContextType) == Neg)
+               return Tokens->Params[1]->lvalue;
        return 0;
 }
 
@@ -1027,141 +1027,141 @@ int EvaluateConditional(StrBuf *Target, WCTemplateToken *Token, WCTemplate *pTmp
  * \param state are we in conditional state?
  * \param ContextType what type of information does context giv us?
  */
-int EvaluateToken(StrBuf *Target, WCTemplateToken *Token, WCTemplate *pTmpl, void *Context, int state, int ContextType)
+int EvaluateToken(StrBuf *Target, WCTemplateToken *Tokens, WCTemplate *pTmpl, void *Context, int state, int ContextType)
 {
        HashHandler *Handler;
        void *vVar;
 // much output, since pName is not terminated...
 //     lprintf(1,"Doing token: %s\n",Token->pName);
 
-       switch (Token->Flags) {
+       switch (Tokens->Flags) {
        case SV_GETTEXT:
-               TmplGettext(Target, Token->nParameters, Token);
+               TmplGettext(Target, Tokens->nParameters, Tokens);
                break;
        case SV_CONDITIONAL: /** Forward conditional evaluation */
-               return EvaluateConditional(Target, Token, pTmpl, Context, 1, state, ContextType);
+               return EvaluateConditional(Target, Tokens, pTmpl, Context, 1, state, ContextType);
                break;
        case SV_NEG_CONDITIONAL: /** Reverse conditional evaluation */
-               return EvaluateConditional(Target, Token, pTmpl, Context, 0, state, ContextType);
+               return EvaluateConditional(Target, Tokens, pTmpl, Context, 0, state, ContextType);
                break;
        case SV_CUST_STR_CONDITIONAL: /** Conditional put custom strings from params */
-               if (Token->nParameters >= 6) {
-                       if (EvaluateConditional(Target, Token, pTmpl, Context, 0, state, ContextType))
+               if (Tokens->nParameters >= 6) {
+                       if (EvaluateConditional(Target, Tokens, pTmpl, Context, 0, state, ContextType))
                                StrBufAppendBufPlain(Target, 
-                                                    Token->Params[5]->Start,
-                                                    Token->Params[5]->len,
+                                                    Tokens->Params[5]->Start,
+                                                    Tokens->Params[5]->len,
                                                     0);
                        else
                                StrBufAppendBufPlain(Target, 
-                                                    Token->Params[4]->Start,
-                                                    Token->Params[4]->len,
+                                                    Tokens->Params[4]->Start,
+                                                    Tokens->Params[4]->len,
                                                     0);
                }
                else  {
                        lprintf(1, "Conditional [%s] (in '%s' line %ld); needs at least 6 Params![%s]\n", 
-                               Token->Params[0]->Start,
+                               Tokens->Params[0]->Start,
                                ChrPtr(pTmpl->FileName),
-                               Token->Line,
-                               ChrPtr(Token->FlatToken));
+                               Tokens->Line,
+                               ChrPtr(Tokens->FlatToken));
                        StrBufAppendPrintf(
                                Target, 
                                "<pre>\nConditional [%s] (in '%s' line %ld); needs 6 Params!\n[%s]\n</pre>\n", 
-                               Token->Params[0]->Start,
+                               Tokens->Params[0]->Start,
                                ChrPtr(pTmpl->FileName),
-                               Token->Line,
-                               ChrPtr(Token->FlatToken));
+                               Tokens->Line,
+                               ChrPtr(Tokens->FlatToken));
                }
                break;
        case SV_SUBTEMPL:
-               if (Token->nParameters == 1)
-                       DoTemplate(Token->Params[0]->Start, Token->Params[0]->len, NULL, NULL, ContextType);
+               if (Tokens->nParameters == 1)
+                       DoTemplate(Tokens->Params[0]->Start, Tokens->Params[0]->len, NULL, NULL, ContextType);
                break;
        case SV_PREEVALUATED:
-               Handler = (HashHandler*) Token->PreEval;
+               Handler = (HashHandler*) Tokens->PreEval;
                if ((Handler->ContextRequired != CTX_NONE) &&
                    (Handler->ContextRequired != ContextType)) {
                        lprintf(1, "Handler [%s] (in '%s' line %ld); "
                                "requires context of type %ld, have %ld [%s]\n", 
-                               Token->pName,
+                               Tokens->pName,
                                ChrPtr(pTmpl->FileName),
-                               Token->Line,
+                               Tokens->Line,
                                Handler->ContextRequired, 
                                ContextType,
-                               ChrPtr(Token->FlatToken));
+                               ChrPtr(Tokens->FlatToken));
                        StrBufAppendPrintf(
                                Target, 
                                "<pre>\nHandler [%s] (in '%s' line %ld);"
                                " requires context of type %ld, have %ld!\n[%s]\n</pre>\n", 
-                               Token->pName,
+                               Tokens->pName,
                                ChrPtr(pTmpl->FileName),
-                               Token->Line,
+                               Tokens->Line,
                                Handler->ContextRequired, 
                                ContextType,
-                               ChrPtr(Token->FlatToken));
+                               ChrPtr(Tokens->FlatToken));
                        return -1;
 
                }
                Handler->HandlerFunc(Target, 
-                                    Token->nParameters,
-                                    Token,
+                                    Tokens->nParameters,
+                                    Tokens,
                                     Context, 
                                     ContextType); 
                break;          
        default:
-               if (GetHash(GlobalNS, Token->pName, Token->NameEnd, &vVar)) {
+               if (GetHash(GlobalNS, Tokens->pName, Tokens->NameEnd, &vVar)) {
                        Handler = (HashHandler*) vVar;
                        if ((Handler->ContextRequired != CTX_NONE) &&
                            (Handler->ContextRequired != ContextType)) {
                                lprintf(1, "Handler [%s] (in '%s' line %ld); "
                                        "requires context of type %ld, have %ld [%s]\n", 
-                                       Token->pName,
+                                       Tokens->pName,
                                        ChrPtr(pTmpl->FileName),
-                                       Token->Line,
+                                       Tokens->Line,
                                        Handler->ContextRequired, 
                                        ContextType,
-                                       ChrPtr(Token->FlatToken));
+                                       ChrPtr(Tokens->FlatToken));
                                StrBufAppendPrintf(
                                        Target, 
                                        "<pre>\nHandler [%s] (in '%s' line %ld);"
                                        " requires context of type %ld, have %ld!\n[%s]\n</pre>\n", 
-                                       Token->pName,
+                                       Tokens->pName,
                                        ChrPtr(pTmpl->FileName),
-                                       Token->Line,
+                                       Tokens->Line,
                                        Handler->ContextRequired, 
                                        ContextType,
-                                       ChrPtr(Token->FlatToken));
+                                       ChrPtr(Tokens->FlatToken));
                                return -1;
                        }
-                       else if ((Token->nParameters < Handler->nMinArgs) || 
-                                (Token->nParameters > Handler->nMaxArgs)) {
+                       else if ((Tokens->nParameters < Handler->nMinArgs) || 
+                                (Tokens->nParameters > Handler->nMaxArgs)) {
                                lprintf(1, "Handler [%s] (in '%s' line %ld); "
                                        "doesn't work with %ld params [%s]\n", 
-                                       Token->pName,
+                                       Tokens->pName,
                                        ChrPtr(pTmpl->FileName),
-                                       Token->Line,
-                                       Token->nParameters, 
-                                       ChrPtr(Token->FlatToken));
+                                       Tokens->Line,
+                                       Tokens->nParameters, 
+                                       ChrPtr(Tokens->FlatToken));
                                StrBufAppendPrintf(
                                        Target, 
                                        "<pre>\nHandler [%s] (in '%s' line %ld);"
                                        " doesn't work with %ld params!\n[%s]\n</pre>\n", 
-                                       Token->pName,
+                                       Tokens->pName,
                                        ChrPtr(pTmpl->FileName),
-                                       Token->Line,
-                                       Token->nParameters,
-                                       ChrPtr(Token->FlatToken));
+                                       Tokens->Line,
+                                       Tokens->nParameters,
+                                       ChrPtr(Tokens->FlatToken));
                        }
                        else {
                                Handler->HandlerFunc(Target, 
-                                                    Token->nParameters,
-                                                    Token,
+                                                    Tokens->nParameters,
+                                                    Tokens,
                                                     Context, 
                                                     ContextType); /*TODO: subset of that */
                                
                        }
                }
                else {
-                       print_value_of(Target, Token, Context, ContextType);
+                       print_value_of(Target, Tokens, Context, ContextType);
                }
        }
        return 0;
index 97e59de1dd9dd67a4fe29d3020636c67623846ff..ca9bf2045eb1102227755fbed07e82c6b582a6a5 100644 (file)
  *  preselect which user should be selected in the browser
  */
 void select_user_to_edit(char *message, char *preselect)
-{/*
-       char buf[SIZ];
-       char username[SIZ];
- */
+{
        output_headers(1, 0, 0, 0, 1, 0);
        do_template("edituser_select", NULL);
         end_burst();
-
-/*
-
-       output_headers(1, 1, 2, 0, 0, 0);
-       wprintf("<div id=\"banner\">\n");
-       wprintf("<img src=\"static/usermanag_48x.gif\">");
-        wprintf("<h1>");
-       wprintf(_("Edit or delete users"));
-        wprintf("</h1>");
-        wprintf("</div>");
-
-        wprintf("<div id=\"content\" class=\"service\">\n");
-
-       if (message != NULL) wprintf(message);
-
-       wprintf("<table border=0 cellspacing=10><tr valign=top><td>\n");
-
-       svput("BOXTITLE", WCS_STRING, _("Add users"));
-       do_template("beginbox", NULL);
-
-       wprintf(_("To create a new user account, enter the desired "
-               "user name in the box below and click 'Create'."));
-       wprintf("<br /><br />");
-
-        wprintf("<center><form method=\"POST\" action=\"create_user\">\n");
-       wprintf("<input type=\"hidden\" name=\"nonce\" value=\"%d\">\n", WC->nonce);
-        wprintf(_("New user: "));
-        wprintf("<input type=\"text\" name=\"username\"><br />\n"
-               "<input type=\"submit\" name=\"create_button\" value=\"%s\">"
-               "</form></center>\n", _("Create"));
-
-       do_template("endbox", NULL);
-
-       wprintf("</td><td>");
-
-       svput("BOXTITLE", WCS_STRING, _("Edit or Delete users"));
-       do_template("beginbox", NULL);
-
-       wprintf(_("To edit an existing user account, select the user "
-               "name from the list and click 'Edit'."));
-       wprintf("<br /><br />");
-       
-        wprintf("<center>"
-               "<form method=\"POST\" action=\"display_edituser\">\n");
-       wprintf("<input type=\"hidden\" name=\"nonce\" value=\"%d\">\n", WC->nonce);
-        wprintf("<select name=\"username\" size=10 style=\"width:100%%\">\n");
-        serv_puts("LIST");
-        serv_getln(buf, sizeof buf);
-        if (buf[0] == '1') {
-                while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) {
-                        extract_token(username, buf, 0, '|', sizeof username);
-                        wprintf("<option");
-                       if (preselect != NULL)
-                          if (!strcasecmp(username, preselect))
-                             wprintf(" selected");
-                       wprintf(">");
-                        escputs(username);
-                        wprintf("\n");
-                }
-        }
-        wprintf("</select><br />\n");
-
-        wprintf("<input type=\"submit\" name=\"edit_config_button\" value=\"%s\">", _("Edit configuration"));
-        wprintf("<input type=\"submit\" name=\"edit_abe_button\" value=\"%s\">", _("Edit address book entry"));
-        wprintf("<input type=\"submit\" name=\"delete_button\" value=\"%s\" "
-               "onClick=\"return confirm('%s');\">", _("Delete user"), _("Delete this user?"));
-        wprintf("</form></center>\n");
-       do_template("endbox", NULL);
-
-       wprintf("</td></tr></table>\n");
-
-       wDumpContent(1);
-*/
 }
 
 
@@ -344,68 +268,67 @@ HashList *iterate_load_userlist(StrBuf *Target, int nArgs, WCTemplateToken *Toke
 }
 
 
-void tmplput_USERLIST_UserName(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_USERLIST_UserName(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
 {
        UserListEntry *ul = (UserListEntry*) Context;
-/// TODO: X
-       StrBufAppendBuf(Target, ul->UserName, 0);
+       StrBufAppendTemplate(Target, nArgs, Tokens, Context, ContextType, ul->UserName, 0);
 }
 
-void tmplput_USERLIST_AccessLevelNo(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_USERLIST_AccessLevelNo(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
 {
        UserListEntry *ul = (UserListEntry*) Context;
 
        StrBufAppendPrintf(Target, "%d", ul->AccessLevel, 0);
 }
 
-void tmplput_USERLIST_AccessLevelStr(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_USERLIST_AccessLevelStr(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
 {
        UserListEntry *ul = (UserListEntry*) Context;
        
        StrBufAppendBufPlain(Target, _(axdefs[ul->AccessLevel]), -1, 0);
 }
 
-void tmplput_USERLIST_UID(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_USERLIST_UID(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
 {
        UserListEntry *ul = (UserListEntry*) Context;
 
        StrBufAppendPrintf(Target, "%d", ul->UID, 0);
 }
 
-void tmplput_USERLIST_LastLogonNo(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_USERLIST_LastLogonNo(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
 {
        UserListEntry *ul = (UserListEntry*) Context;
 
        StrBufAppendPrintf(Target,"%ld", ul->LastLogonT, 0);
 }
-void tmplput_USERLIST_LastLogonStr(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_USERLIST_LastLogonStr(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
 {
        UserListEntry *ul = (UserListEntry*) Context;
        StrEscAppend(Target, NULL, asctime(localtime(&ul->LastLogonT)), 0, 0);
 }
 
-void tmplput_USERLIST_nLogons(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_USERLIST_nLogons(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
 {
        UserListEntry *ul = (UserListEntry*) Context;
 
        StrBufAppendPrintf(Target, "%d", ul->nLogons, 0);
 }
 
-void tmplput_USERLIST_nPosts(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_USERLIST_nPosts(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
 {
        UserListEntry *ul = (UserListEntry*) Context;
 
        StrBufAppendPrintf(Target, "%d", ul->nPosts, 0);
 }
 
-void tmplput_USERLIST_Flags(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_USERLIST_Flags(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
 {
        UserListEntry *ul = (UserListEntry*) Context;
 
        StrBufAppendPrintf(Target, "%d", ul->Flags, 0);
 }
 
-void tmplput_USERLIST_DaysTillPurge(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_USERLIST_DaysTillPurge(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
 {
        UserListEntry *ul = (UserListEntry*) Context;
 
@@ -605,191 +528,6 @@ void display_edituser(char *supplied_username, int is_new) {
        FreeStrBuf(&Buf);
 }
 
-
-
-/* *
- *  Edit a user.  
- * If supplied_username is null, look in the "username"
- * web variable for the name of the user to edit.
- * 
- * If "is_new" is set to nonzero, this screen will set the web variables
- * to send the user to the vCard editor next.
- *  supplied_username user to look up or NULL if to search in the environment
- *  is_new should we create the user?
- * /
-void display_edituser(char *supplied_username, int is_new) {
-       char buf[1024];
-       char error_message[1024];
-       time_t now;
-
-       char username[256];
-       char password[256];
-       unsigned int flags;
-       int timescalled;
-       int msgsposted;
-       int axlevel;
-       long usernum;
-       time_t lastcall;
-       int purgedays;
-       int i;
-
-       if (supplied_username != NULL) {
-               safestrncpy(username, supplied_username, sizeof username);
-       }
-       else {
-               safestrncpy(username, bstr("username"), sizeof username);
-       }
-
-       serv_printf("AGUP %s", username);
-       serv_getln(buf, sizeof buf);
-       if (buf[0] != '2') {
-               sprintf(error_message,
-                       "<img src=\"static/error.gif\" align=center>"
-                       "%s<br /><br />\n", &buf[4]);
-               select_user_to_edit(error_message, username);
-               return;
-       }
-
-       extract_token(username, &buf[4], 0, '|', sizeof username);
-       extract_token(password, &buf[4], 1, '|', sizeof password);
-       flags = extract_int(&buf[4], 2);
-       timescalled = extract_int(&buf[4], 3);
-       msgsposted = extract_int(&buf[4], 4);
-       axlevel = extract_int(&buf[4], 5);
-       usernum = extract_long(&buf[4], 6);
-       lastcall = extract_long(&buf[4], 7);
-       purgedays = extract_long(&buf[4], 8);
-
-       if (havebstr("edit_abe_button")) {
-               display_edit_address_book_entry(username, usernum);
-               return;
-       }
-
-       if (havebstr("delete_button")) {
-               delete_user(username);
-               return;
-       }
-
-       output_headers(1, 1, 2, 0, 0, 0);
-       wprintf("<div id=\"banner\">\n");
-       wprintf("<h1>");
-       wprintf(_("Edit user account: "));
-       escputs(username);
-        wprintf("</h1>");
-        wprintf("</div>");
-
-        wprintf("<div id=\"content\" class=\"service\">\n");
-
-       wprintf("<div class=\"fix_scrollbar_bug\">"
-               "<table class=\"useredit_background\"><tr><td>\n");
-       wprintf("<form method=\"POST\" action=\"edituser\">\n"
-               "<input type=\"hidden\" name=\"username\" value=\"");
-       escputs(username);
-       wprintf("\">\n");
-       wprintf("<input type=\"hidden\" name=\"is_new\" value=\"%d\">\n"
-               "<input type=\"hidden\" name=\"usernum\" value=\"%ld\">\n",
-               is_new, usernum);
-       wprintf("<input type=\"hidden\" name=\"nonce\" value=\"%d\">\n", WC->nonce);
-
-       wprintf("<input type=\"hidden\" name=\"flags\" value=\"%d\">\n", flags);
-
-       wprintf("<center><table>");
-
-       wprintf("<tr><td>");
-       wprintf(_("User name:"));
-       wprintf("</td><td>"
-               "<input type=\"text\" name=\"newname\" value=\"");
-       escputs(username);
-       wprintf("\" maxlength=\"63\"></td></tr>\n");
-
-       wprintf("<tr><td>");
-       wprintf(_("Password"));
-       wprintf("</td><td>"
-               "<input type=\"password\" name=\"password\" value=\"");
-       escputs(password);
-       wprintf("\" maxlength=\"20\"></td></tr>\n");
-
-       wprintf("<tr><td>");
-       wprintf(_("Permission to send Internet mail"));
-       wprintf("</td><td>");
-       wprintf("<input type=\"checkbox\" name=\"inetmail\" value=\"yes\" ");
-       if (flags & US_INTERNET) {
-               wprintf("checked ");
-       }
-       wprintf("></td></tr>\n");
-
-       wprintf("<tr><td>");
-       wprintf(_("Number of logins"));
-       wprintf("</td><td>"
-               "<input type=\"text\" name=\"timescalled\" value=\"");
-       wprintf("%d", timescalled);
-       wprintf("\" maxlength=\"6\"></td></tr>\n");
-
-       wprintf("<tr><td>");
-       wprintf(_("Messages submitted"));
-       wprintf("</td><td>"
-               "<input type=\"text\" name=\"msgsposted\" value=\"");
-       wprintf("%d", msgsposted);
-       wprintf("\" maxlength=\"6\"></td></tr>\n");
-
-       wprintf("<tr><td>");
-       wprintf(_("Access level"));
-       wprintf("</td><td>"
-               "<select name=\"axlevel\">\n");
-       for (i=0; i<7; ++i) {
-               wprintf("<option ");
-               if (axlevel == i) {
-                       wprintf("selected ");
-               }
-               wprintf("value=\"%d\">%d - %s</option>\n",
-                       i, i, axdefs[i]);
-       }
-       wprintf("</select></td></tr>\n");
-
-       wprintf("<tr><td>");
-       wprintf(_("User ID number"));
-       wprintf("</td><td>"
-               "<input type=\"text\" name=\"usernum\" value=\"");
-       wprintf("%ld", usernum);
-       wprintf("\" maxlength=\"7\"></td></tr>\n");
-
-       now = time(NULL);
-       wprintf("<tr><td>");
-       wprintf(_("Date and time of last login"));
-       wprintf("</td><td>"
-               "<select name=\"lastcall\">\n");
-
-       wprintf("<option selected value=\"%ld\">", lastcall);
-       escputs(asctime(localtime(&lastcall)));
-       wprintf("</option>\n");
-
-       wprintf("<option value=\"%ld\">", now);
-       escputs(asctime(localtime(&now)));
-       wprintf("</option>\n");
-
-       wprintf("</select></td></tr>");
-
-       wprintf("<tr><td>");
-       wprintf(_("Auto-purge after this many days"));
-       wprintf("</td><td>"
-               "<input type=\"text\" name=\"purgedays\" value=\"");
-       wprintf("%d", purgedays);
-       wprintf("\" maxlength=\"5\"></td></tr>\n");
-
-       wprintf("</table>\n");
-
-       wprintf("<input type=\"submit\" name=\"ok_button\" value=\"%s\">\n"
-               "&nbsp;"
-               "<input type=\"submit\" name=\"cancel\" value=\"%s\">\n"
-               "<br /><br /></form>\n", _("Save changes"), _("Cancel"));
-
-       wprintf("</center>\n");
-       wprintf("</td></tr></table></div>\n");
-       wDumpContent(1);
-
-}
-*/
-
 /**
  *  do the backend operation of the user edit on the server
  */