} TemplateParam;
typedef struct _TemplateToken {
+ StrBuf *FlatToken;
+ long Line;
const char *pTokenStart;
size_t TokenStart;
size_t TokenEnd;
-typedef void (*SubTemplFunc)(StrBuf *TemplBuffer, void *Context);
-typedef HashList *(*RetrieveHashlistFunc)(void);
-typedef void (*HashDestructorFunc) (HashList *KillMe);
-void RegisterITERATOR(const char *Name, long len,
+typedef void (*SubTemplFunc)(StrBuf *TemplBuffer, void *Context, WCTemplateToken *Token);
+typedef HashList *(*RetrieveHashlistFunc)(WCTemplateToken *Token);
+typedef void (*HashDestructorFunc) (HashList **KillMe);
+void RegisterITERATOR(const char *Name, long len,
+ int AdditionalParams,
HashList *StaticList,
RetrieveHashlistFunc GetHash,
SubTemplFunc DoSubTempl,
HashDestructorFunc Destructor);
-#define RegisterIterator(a, b, c, d, e) RegisterITERATOR(a, sizeof(a)-1, b, c, d, e)
-
+#define RegisterIterator(a, b, c, d, e, f) RegisterITERATOR(a, sizeof(a)-1, b, c, d, e, f)
/**
* \brief Values for wcs_type
StrBuf *HBuf; /**< Our HeaderBuffer */
HashList *ServCfg; /**< cache our server config for editing */
+ HashList *InetCfg; /**< Our inet server config for editing */
};
/** values for WC->current_iconbar */
void SVCallback(char *keyname, size_t keylen, var_callback_fptr fcn_ptr);
#define svcallback(a, b) SVCallback(a, sizeof(a) - 1, b)
-void SVPUTBuf(const char *keyname, int keylen, StrBuf *Buf, int ref);
+void SVPUTBuf(const char *keyname, int keylen, const 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);
void url_do_template(void);
+int CompareSubstToToken(TemplateParam *ParamToCompare, TemplateParam *ParamToLookup);
+int CompareSubstToStrBuf(StrBuf *Compare, TemplateParam *ParamToLookup);
int lingering_close(int fd);
char *memreadline(char *start, char *buf, int maxlen);