]> code.citadel.org Git - citadel.git/blobdiff - webcit/webcit.h
* fix HTTPS; this broke while migrating the request data to strbuf
[citadel.git] / webcit / webcit.h
index d263e643997c9b2d8a7a81dd00f006f4b3603bd8..92e5b610264e70502f29bc3988703e7bc00341d6 100644 (file)
@@ -129,9 +129,6 @@ extern locale_t wc_locales[];
 #define        LIBCITADEL_MIN          738             /* min required libcitadel ver */
 #define DEFAULT_HOST           "localhost"     /* Default Citadel server */
 #define DEFAULT_PORT           "504"
-#define LB                     (1)             /* Internal escape chars */
-#define RB                     (2)
-#define QU                     (3)
 #define TARGET                 "webcit01"      /* Target for inline URL's */
 #define HOUSEKEEPING           15              /* Housekeeping frequency */
 #define MIN_WORKER_THREADS     5
@@ -316,15 +313,34 @@ typedef struct _TemplateToken {
        TemplateParam *Params[MAXPARAM];
 } WCTemplateToken;
 
-typedef void (*WCHandlerFunc)(StrBuf *Target, int nArgs, WCTemplateToken **Tokens);
+typedef void (*WCHandlerFunc)(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context);
+void RegisterNS(const char *NSName, long len, 
+               int nMinArgs, 
+               int nMaxArgs, 
+               WCHandlerFunc HandlerFunc);
+#define RegisterNamespace(a, b, c, d) RegisterNS(a, sizeof(a)-1, b, c, d)
+
+
+typedef void (*SubTemplFunc)(StrBuf *TemplBuffer, void *Context);
+typedef HashList *(*RetrieveHashlistFunc)(void);
+typedef void (*HashDestructorFunc) (HashList *KillMe);
+void RegisterITERATOR(const char *Name, long len, 
+                     HashList *StaticList, 
+                     RetrieveHashlistFunc GetHash, 
+                     SubTemplFunc DoSubTempl,
+                     HashDestructorFunc Destructor);
+#define RegisterIterator(a, b, c, d, e) RegisterITERATOR(a, sizeof(a)-1, b, c, d, e)
+
 
 /**
  * \brief Values for wcs_type
  */
 enum {
-       WCS_STRING,   /**< its a string */
-       WCS_FUNCTION, /**< its a function callback */
-       WCS_SERVCMD   /**< its a command to send to the citadel server */
+       WCS_STRING,       /**< its a string */
+       WCS_FUNCTION,     /**< its a function callback */
+       WCS_SERVCMD,      /**< its a command to send to the citadel server */
+       WCS_STRBUF,       /**< its a strbuf we own */
+       WCS_STRBUF_REF    /**< its a strbuf we mustn't free */
 };
 
 /**
@@ -502,6 +518,10 @@ extern HashList *WirelessLocalTemplateCache;
 extern HashList *TemplateCache;
 extern HashList *LocalTemplateCache;
 extern HashList *GlobalNS;
+extern HashList *Iterators;
+extern HashList *ZoneHash;
+
+
 
 void InitialiseSemaphores(void);
 void begin_critical_section(int which_one);
@@ -535,6 +555,7 @@ void who(void);
 void who_inner_div(void);
 void ajax_mini_calendar(void);
 void fmout(char *align);
+void _fmout(StrBuf *Targt, char *align);
 void pullquote_fmout(void);
 void wDumpContent(int);
 
@@ -569,8 +590,14 @@ int YESBSTR(char *key);
 const char *BSTR(char *key);
 const char *Bstr(char *key, size_t keylen);
 
-void urlescputs(char *);
-void hurlescputs(char *);
+
+
+void UrlescPutStrBuf(const StrBuf *strbuf);
+void StrEscPuts(const StrBuf *strbuf);
+void StrEscputs1(const StrBuf *strbuf, int nbsp, int nolinebreaks);
+
+void urlescputs(const char *);
+void hurlescputs(const char *);
 void jsesc(char *, size_t, char *);
 void jsescputs(char *);
 void output_headers(    int do_httpheaders,
@@ -644,8 +671,11 @@ void SVCALLBACK(char *keyname, var_callback_fptr fcn_ptr);
 void SVCallback(char *keyname, size_t keylen,  var_callback_fptr fcn_ptr);
 #define svcallback(a, b) SVCallback(a, sizeof(a) - 1, b)
 
-void DoTemplate(const char *templatename, long len);
-#define do_template(a) DoTemplate(a, sizeof(a) -1);
+void SVPUTBuf(const char *keyname, int keylen, StrBuf *Buf, int ref);
+#define SVPutBuf(a, b, c); SVPUTBuf(a, sizeof(a) - 1, b, c)
+
+void DoTemplate(const char *templatename, long len, void *Context, StrBuf *Target);
+#define do_template(a, b) DoTemplate(a, sizeof(a) -1, b, NULL);
 
 
 int lingering_close(int fd);
@@ -797,7 +827,7 @@ void ssl_lock(int mode, int n, const char *file, int line);
 int starttls(int sock);
 extern SSL_CTX *ssl_ctx;  
 int client_read_ssl(char *buf, int bytes, int timeout);
-void client_write_ssl(const char *buf, int nbytes);
+void client_write_ssl(const StrBuf *Buf);
 #endif
 
 #ifdef HAVE_ZLIB