]> code.citadel.org Git - citadel.git/blobdiff - webcit/webcit.h
* added GCC Format String checkers to the remaining printf alikes
[citadel.git] / webcit / webcit.h
index 6f123d5a6ff78ce7ca939027128a2e17ee62bd93..51171f287154df318f38bc6277753f8a88c9d443 100644 (file)
@@ -124,9 +124,9 @@ extern locale_t wc_locales[];
 #define PORT_NUM               2000            /* port number to listen on */
 #define DEVELOPER_ID           0
 #define CLIENT_ID              4
-#define CLIENT_VERSION         735             /* This version of WebCit */
-#define MINIMUM_CIT_VERSION    730             /* min required Citadel ver */
-#define        LIBCITADEL_MIN          113             /* min required libcitadel ver */
+#define CLIENT_VERSION         737             /* This version of WebCit */
+#define MINIMUM_CIT_VERSION    737             /* min required Citadel ver */
+#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 */
@@ -252,6 +252,7 @@ struct serv_info {
        int serv_supports_sieve;        /* Does the server support Sieve mail filtering? */
        int serv_fulltext_enabled;      /* Does the server have the full text index enabled? */
        char serv_svn_revision[256];    /* SVN revision of the server */
+       int serv_supports_openid;       /* Does the server support authentication via OpenID? */
 };
 
 
@@ -396,7 +397,7 @@ struct wcsession {
        long msgarr[10000];                     /**< for read operations */
        int num_summ;                           /**< number of messages in mailbox summary view */
        struct message_summary *summ;           /**< array of messages for mailbox summary view */
-       int is_wap;                             /**< Client is a WAP gateway */
+       int is_mobile;                  /**< Client is a handheld browser */
        HashList *urlstrings;                   /**< variables passed to webcit in a URL */
        HashList *vars;                         /**< HTTP variable substitutions for this page */
        char this_page[512];                    /**< URL of current page */
@@ -418,8 +419,9 @@ struct wcsession {
        int cache_max_folders;                  /**< ??? todo */
        int cache_num_floors;                   /**< ??? todo */
        time_t cache_timestamp;                 /**< ??? todo */
-       int current_iconbar;                    /**< What is currently in the iconbar? */
-       char floordiv_expanded[32];             /**< which floordiv currently expanded */
+       HashList *IconBarSetttings;             /**< which icons should be shown / not shown? */
+       long current_iconbar;                   /**< What is currently in the iconbar? */
+       StrBuf *floordiv_expanded;              /**< which floordiv currently expanded */
        int selected_language;                  /**< Language selected by user */
        time_t last_pager_check;                /**< last time we polled for instant msgs */
        int nonce;                              /**< session nonce (to prevent session riding) */
@@ -484,7 +486,14 @@ void cookie_to_stuff(char *cookie, int *session,
 void locate_host(char *, int);
 void become_logged_in(char *, char *, char *);
 void do_login(void);
+void do_openid_login(void);
+void finalize_openid_login(void);
+void openid_manual_create(void);
 void display_login(char *mesg);
+void display_openid_login(char *mesg);
+void display_openids(void);
+void openid_attach(void);
+void openid_detach(void);
 void do_welcome(void);
 void do_logout(void);
 void display_main_menu(void);
@@ -498,6 +507,7 @@ void get_serv_info(char *, char *);
 int uds_connectsock(char *);
 int tcp_connectsock(char *, char *);
 int serv_getln(char *strbuf, int bufsize);
+int StrBuf_ServGetln(StrBuf *buf);
 void serv_puts(char *string);
 void who(void);
 void who_inner_div(void);
@@ -509,7 +519,6 @@ void new_messages_section(void);
 void fmout(char *align);
 void pullquote_fmout(void);
 void wDumpContent(int);
-void serv_printf(const char *format,...);
 
 /* TODO: get rid of the non-const-typecast */
 #define bstr(a) (char*) Bstr(a, sizeof(a) - 1)
@@ -546,7 +555,7 @@ void output_headers(    int do_httpheaders,
                        int unset_cookies,
                        int suppress_check,
                        int cache);
-void wprintf(const char *format,...);
+void wprintf(const char *format,...)__attribute__((__format__(__printf__,1,2)));
 void output_static(char *what);
 void display_mime_icon(void);
 void print_menu_box(char* Title, char *Class, int nLines, ...);
@@ -607,7 +616,7 @@ 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_printf(const char *format,...);
+void serv_printf(const char *format,...)__attribute__((__format__(__printf__,1,2)));
 void load_floorlist(void);
 void display_reg(int);
 void display_changepw(void);
@@ -639,7 +648,7 @@ void end_webcit_session(void);
 void page_popup(void);
 void chat_recv(void);
 void chat_send(void);
-void http_redirect(char *);
+void http_redirect(const char *);
 void clear_substs(struct wcsession *wc);
 void clear_local_substs(void);
 
@@ -649,8 +658,8 @@ typedef void (*var_callback_fptr)();
 
 void SVPut(char *keyname, size_t keylen, int keytype, char *Data);
 #define svput(a, b, c) SVPut(a, sizeof(a) - 1, b, c)
-void svprintf(char *keyname, size_t keylen, int keytype, const char *format,...);
-void SVPRINTF(char *keyname, int keytype, const char *format,...);
+void svprintf(char *keyname, size_t keylen, int keytype, const char *format,...) __attribute__((__format__(__printf__,4,5)));
+void SVPRINTF(char *keyname, int keytype, const char *format,...) __attribute__((__format__(__printf__,3,4)));
 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)
@@ -678,10 +687,29 @@ void edituser(void);
 void do_change_view(int);
 void change_view(void);
 void folders(void);
+
+
 void load_preferences(void);
 void save_preferences(void);
-void get_preference(char *key, char *value, size_t value_len);
-void set_preference(char *key, char *value, int save_to_server);
+#define get_preference(a, b) get_PREFERENCE(a, sizeof(a) - 1, b)
+#define get_pref(a, b)       get_PREFERENCE(ChrPtr(a), StrLength(a), b)
+int get_PREFERENCE(const char *key, size_t keylen, StrBuf **value);
+#define set_preference(a, b, c) set_PREFERENCE(a, sizeof(a) - 1, b, c)
+#define set_pref(a, b, c)       set_PREFERENCE(ChrPtr(a), StrLength(a), b, c)
+void set_PREFERENCE(const char *key, size_t keylen, StrBuf *value, int save_to_server);
+
+#define get_pref_long(a, b, c) get_PREF_LONG(a, sizeof(a) - 1, b, c)
+int get_PREF_LONG(const char *key, size_t keylen, long *value, long Default);
+#define set_pref_long(a, b, c) set_PREF_LONG(a, sizeof(a) - 1, b, c)
+void set_PREF_LONG(const char *key, size_t keylen, long value, int save_to_server);
+
+#define get_pref_yesno(a, b, c) get_PREF_YESNO(a, sizeof(a) - 1, b, c)
+int get_PREF_YESNO(const char *key, size_t keylen, int *value, int Default);
+#define set_pref_yesno(a, b, c) set_PREF_LONG(a, sizeof(a) - 1, b, c)
+void set_PREF_YESNO(const char *key, size_t keylen, int value, int save_to_server);
+
+
+
 void knrooms(void);
 int is_msg_in_mset(char *mset, long msgnum);
 void display_addressbook(long msgnum, char alpha);
@@ -737,7 +765,7 @@ void end_ajax_response(void);
 void initialize_viewdefs(void);
 void initialize_axdefs(void);
 void burn_folder_cache(time_t age);
-void list_all_rooms_by_floor(char *viewpref);
+void list_all_rooms_by_floor(const char *viewpref);
 void display_room_directory(void);
 void display_picture(void);
 void display_pictureview(void);
@@ -805,7 +833,9 @@ void display_wiki_page(void);
 int get_time_format_cached (void);
 int xtoi(char *in, size_t len);
 void webcit_fmt_date(char *buf, time_t thetime, int brief);
+int fetch_http(char *url, char *target_buf, int maxbytes);
 
+int is_mobile_ua(char *user_agent);
 
 #ifdef HAVE_ICONV
 iconv_t ctdl_iconv_open(const char *tocode, const char *fromcode);