From 2a51efeff0d23b2b8e43ec33e2bf80f5c38679b5 Mon Sep 17 00:00:00 2001 From: Art Cancro Date: Wed, 29 Jul 2009 03:51:47 +0000 Subject: [PATCH] * Eliminated the 'gotonext' problem with the bbs view drop-down selector by changing it to 'readgt' and keeping track of the range of messages which was returned from the previous operation. I'm assuming that this 'longvector' stuff is a set of general purpose registers; if that's not the case then I broke something. --- webcit/messages.c | 9 +- webcit/static/t/select_messageindex.html | 2 +- webcit/static/t/select_messageindex_all.html | 2 +- webcit/subst.c | 90 +++++++++----------- 4 files changed, 49 insertions(+), 54 deletions(-) diff --git a/webcit/messages.c b/webcit/messages.c index 8060e2248..73fb0f37c 100644 --- a/webcit/messages.c +++ b/webcit/messages.c @@ -701,7 +701,10 @@ inline message_summary* GetMessagePtrAt(int n, HashList *Summ) } -long DrawMessageDropdown(StrBuf *Selector, long maxmsgs, long startmsg, int nMessages) +/* startmsg is an index within the message list. + * starting_from is the Citadel message number to be supplied to a "MSGS GT" operation + */ +long DrawMessageDropdown(StrBuf *Selector, long maxmsgs, long startmsg, int nMessages, long starting_from) { StrBuf *TmpBuf; wcsession *WCC = WC; @@ -727,6 +730,7 @@ long DrawMessageDropdown(StrBuf *Selector, long maxmsgs, long startmsg, int nMes vector[2] = 1; vector[1] = startmsg; vector[3] = 0; + vector[7] = starting_from; while (!done) { vector[3] = abs(nMessages); @@ -1004,7 +1008,8 @@ void readloop(long oper) BBViewToolBar = NewStrBufPlain(NULL, SIZ); MessageDropdown = NewStrBufPlain(NULL, SIZ); - maxmsgs = DrawMessageDropdown(MessageDropdown, maxmsgs, startmsg, num_displayed); + maxmsgs = DrawMessageDropdown(MessageDropdown, maxmsgs, startmsg, + num_displayed, lowest_found-1); if (num_displayed < 0) { startmsg += maxmsgs; if (num_displayed != maxmsgs) diff --git a/webcit/static/t/select_messageindex.html b/webcit/static/t/select_messageindex.html index 558a302aa..62b5b92da 100644 --- a/webcit/static/t/select_messageindex.html +++ b/webcit/static/t/select_messageindex.html @@ -1 +1 @@ - + diff --git a/webcit/static/t/select_messageindex_all.html b/webcit/static/t/select_messageindex_all.html index e36f687d2..9c123af55 100644 --- a/webcit/static/t/select_messageindex_all.html +++ b/webcit/static/t/select_messageindex_all.html @@ -1 +1 @@ - + diff --git a/webcit/subst.c b/webcit/subst.c index b073b580a..2f45c8088 100644 --- a/webcit/subst.c +++ b/webcit/subst.c @@ -1,12 +1,6 @@ /* * $Id$ */ -/** - * \defgroup Subst Variable substitution type stuff - * \ingroup CitadelConfig - */ - -/*@{*/ #include "sysdep.h" #include @@ -20,7 +14,7 @@ #include "webcit.h" #include "webserver.h" -extern char *static_dirs[PATH_MAX]; /**< Disk representation */ +extern char *static_dirs[PATH_MAX]; /* Disk representation */ HashList *WirelessTemplateCache; HashList *WirelessLocalTemplateCache; @@ -49,15 +43,15 @@ const char EmptyStr[]=""; /* - * \brief Dynamic content for variable substitution in templates + * Dynamic content for variable substitution in templates */ typedef struct _wcsubst { ContextFilter Filter; - int wcs_type; /* which type of Substitution are we */ - char wcs_key[32]; /* copy of our hashkey for debugging */ - StrBuf *wcs_value; /* if we're a string, keep it here */ - long lvalue; /* type long? keep data here */ - WCHandlerFunc wcs_function; /* funcion hook ???*/ + int wcs_type; /* which type of Substitution are we */ + char wcs_key[32]; /* copy of our hashkey for debugging */ + StrBuf *wcs_value; /* if we're a string, keep it here */ + long lvalue; /* type long? keep data here */ + WCHandlerFunc wcs_function; /* funcion hook ???*/ } wcsubst; @@ -396,12 +390,13 @@ void FreeWCTemplate(void *vFreeMe) } -/** - * \brief debugging function to print array to log +/* + * debugging function to print array to log */ void VarPrintTransition(void *vVar1, void *vVar2, int odd){} -/** - * \brief debugging function to print array to log + +/* + * debugging function to print array to log */ void VarPrintEntry(const char *Key, void *vSubst, int odd) { @@ -426,8 +421,8 @@ void VarPrintEntry(const char *Key, void *vSubst, int odd) -/** - * \brief Clear out the list of substitution variables local to this session +/* + * Clear out the list of substitution variables local to this session */ void clear_substs(wcsession *wc) { @@ -436,8 +431,8 @@ void clear_substs(wcsession *wc) { } } -/** - * \brief Clear out the list of substitution variables local to this session +/* + * Clear out the list of substitution variables local to this session */ void clear_local_substs(void) { clear_substs (WC); @@ -497,8 +492,8 @@ void FlushPayload(wcsubst *ptr, int reusestrbuf, int type) } -/** - * \brief destructor; kill one entry. +/* + * destructor; kill one entry. */ void deletevar(void *data) { @@ -536,12 +531,12 @@ wcsubst *NewSubstVar(const char *keyname, int keylen, int type) } -/** - * \brief Add a substitution variable (local to this session) (strlen version...) - * \param keyname the replacementstring to substitute - * \param keytype the kind of the key - * \param format the format string ala printf - * \param ... the arguments to substitute in the formatstring +/* + * Add a substitution variable (local to this session) (strlen version...) + * keyname the replacementstring to substitute + * keytype the kind of the key + * format the format string ala printf + * ... the arguments to substitute in the formatstring */ void SVPRINTF(char *keyname, int keytype, const char *format,...) { @@ -552,7 +547,7 @@ void SVPRINTF(char *keyname, int keytype, const char *format,...) wcsession *WCC = WC; keylen = strlen(keyname); - /** + /* * First look if we're doing a replacement of * an existing key */ @@ -567,18 +562,18 @@ void SVPRINTF(char *keyname, int keytype, const char *format,...) ptr = NewSubstVar(keyname, keylen, keytype); } - /** Format the string */ + /* Format the string */ va_start(arg_ptr, format); StrBufVAppendPrintf(ptr->wcs_value, format, arg_ptr); va_end(arg_ptr); } -/** - * \brief Add a substitution variable (local to this session) - * \param keyname the replacementstring to substitute - * \param keytype the kind of the key - * \param format the format string ala printf - * \param ... the arguments to substitute in the formatstring +/* + * Add a substitution variable (local to this session) + * keyname the replacementstring to substitute + * keytype the kind of the key + * format the format string ala printf + * ... the arguments to substitute in the formatstring */ void svprintf(char *keyname, size_t keylen, int keytype, const char *format,...) { @@ -587,7 +582,7 @@ void svprintf(char *keyname, size_t keylen, int keytype, const char *format,...) wcsubst *ptr = NULL; wcsession *WCC = WC; - /** + /* * First look if we're doing a replacement of * an existing key */ @@ -608,12 +603,12 @@ void svprintf(char *keyname, size_t keylen, int keytype, const char *format,...) va_end(arg_ptr); } -/** - * \brief Add a substitution variable (local to this session) - * \param keyname the replacementstring to substitute - * \param keytype the kind of the key - * \param format the format string ala printf - * \param ... the arguments to substitute in the formatstring +/* + * Add a substitution variable (local to this session) + * keyname the replacementstring to substitute + * keytype the kind of the key + * format the format string ala printf + * ... the arguments to substitute in the formatstring */ void SVPut(char *keyname, size_t keylen, int keytype, char *Data) { @@ -622,7 +617,7 @@ void SVPut(char *keyname, size_t keylen, int keytype, char *Data) wcsession *WCC = WC; - /** + /* * First look if we're doing a replacement of * an existing key */ @@ -2673,8 +2668,3 @@ SessionDestroyModule_SUBST { } - - - - -/*@}*/ -- 2.30.2