typedef struct urlcontent urlcontent;
struct urlcontent {
char url_key[32]; /**< the variable name */
- char *url_data; /**< its value */
- size_t url_data_size; /**< how big is it? */
+ StrBuf *url_data; /**< its value */
};
/**
extern time_t if_modified_since;
extern int follow_xff;
extern HashList *HandlerHash;
+extern HashList *PreferenceHooks;
void InitialiseSemaphores(void);
void begin_critical_section(int which_one);
int tcp_connectsock(char *, char *);
int serv_getln(char *strbuf, int bufsize);
int StrBuf_ServGetln(StrBuf *buf);
-void serv_puts(char *string);
+void serv_puts(const char *string);
void who(void);
void who_inner_div(void);
void ajax_mini_calendar(void);
void pullquote_fmout(void);
void wDumpContent(int);
-/* TODO: get rid of the non-const-typecast */
-#define bstr(a) (char*) Bstr(a, sizeof(a) - 1)
-const char *BSTR(char *key);
-const char *Bstr(char *key, size_t keylen);
+
+/* These may return NULL if not foud */
+#define sbstr(a) SBstr(a, sizeof(a) - 1)
+const StrBuf *SBSTR(const char *key);
+const StrBuf *SBstr(const char *key, size_t keylen);
#define xbstr(a, b) (char*) XBstr(a, sizeof(a) - 1, b)
const char *XBstr(char *key, size_t keylen, size_t *len);
int YesBstr(char *key, size_t keylen);
int YESBSTR(char *key);
+/* TODO: get rid of the non-const-typecast */
+#define bstr(a) (char*) Bstr(a, sizeof(a) - 1)
+const char *BSTR(char *key);
+const char *Bstr(char *key, size_t keylen);
void urlescputs(char *);
void jsesc(char *, size_t, char *);
void do_graphics_upload(char *upl_cmd);
void serv_read(char *buf, int bytes);
void serv_gets(char *strbuf);
-void serv_write(char *buf, int nbytes);
-void serv_puts(char *string);
+void serv_write(const char *buf, int nbytes);
+void serv_puts(const char *string);
void serv_printf(const char *format,...)__attribute__((__format__(__printf__,1,2)));
void load_floorlist(void);
void shutdown_sessions(void);
#define set_pref_yesno(a, b, c) set_PREF_YESNO(a, sizeof(a) - 1, b, c)
void set_PREF_YESNO(const char *key, size_t keylen, int value, int save_to_server);
+#define get_room_pref(a) get_ROOM_PREFS(a, sizeof(a) - 1)
+StrBuf *get_ROOM_PREFS(const char *key, size_t keylen);
+#define set_room_pref(a, b, c) set_ROOM_PREFS(a, sizeof(a) - 1, b, c)
+void set_ROOM_PREFS(const char *key, size_t keylen, StrBuf *value, int save_to_server);
int is_msg_in_mset(char *mset, long msgnum);
void display_addressbook(long msgnum, char alpha);
#ifdef ENABLE_NLS
void initialize_locales(void);
+void ShutdownLocale(void);
#endif
extern char *months[];
extern char *days[];
-StrBuf *read_server_binary(size_t total_len);
+int read_server_binary(StrBuf *Ret, size_t total_len);
int StrBuf_ServGetBLOB(StrBuf *buf, long BlobSize);
-StrBuf *read_server_text(long *nLines);
+int read_server_text(StrBuf *Buf, long *nLines);;
int goto_config_room(void);
long locate_user_vcard(char *username, long usernum);
void sleeeeeeeeeep(int);
-void http_transmit_thing(StrBuf *thing, const char *content_type, int is_static);
+void http_transmit_thing(const char *content_type, int is_static);
long unescape_input(char *buf);
void do_selected_iconbar(void);
int CtdlDecodeQuotedPrintable(char *decoded, char *encoded, int sourcelen);
void spawn_another_worker_thread(void);
void display_rss(char *roomname, char *request_method);
void offer_languages(void);
-void set_selected_language(char *);
+void set_selected_language(const char *);
void go_selected_language(void);
void stop_selected_language(void);
void preset_locale(void);