HUGE PATCH. This moves all of mime_parser.c and all
[citadel.git] / webcit / webcit.h
index 96367bea063404bd472794005303e5032ca8f9ee..d918d71b3e7dda49b29192b11d23e712b293d312 100644 (file)
@@ -2,6 +2,9 @@
 
 #include "sysdep.h"
 
+
+#include <sys/select.h>
+
 #include <ctype.h>
 #include <stdlib.h>
 #ifdef HAVE_UNISTD_H
@@ -35,6 +38,8 @@
 #include <signal.h>
 #include <sys/utsname.h>
 
+#include <libcitadel.h>
+
 #ifndef INADDR_NONE
 #define INADDR_NONE 0xffffffff
 #endif
@@ -67,40 +72,33 @@ extern locale_t wc_locales[];
 #include <zlib.h>
 #endif
 
-#ifdef HAVE_ICAL_H
-#ifdef HAVE_LIBICAL
-#define WEBCIT_WITH_CALENDAR_SERVICE 1
-#endif
-#endif
-
 
-
-#ifdef WEBCIT_WITH_CALENDAR_SERVICE
 /* Work around PACKAGE/VERSION defs that are (not supposed to be?) in ical.h */
 #ifdef PACKAGE
 # define CTDL_PACKAGE PACKAGE
 # undef PACKAGE
 #endif
+
+#ifdef PACKAGE_STRING
+# define CTDL_PACKAGE_STRING PACKAGE_STRING
+//# undef PACKAGE_STRING
+#endif
+
 #ifdef VERSION
 # define CTDL_VERSION VERSION
 # undef VERSION
 #endif
+
 #include <ical.h>
-#ifdef CTDL_PACKAGE
-# ifdef PACKAGE
-#  undef PACKAGE
-# endif
-# define PACKAGE CTDL_PACKAGE
-# undef CTDL_PACKAGE
-#endif
-#ifdef CTDL_VERSION
-# ifdef VERSION
-#  undef VERSION
-# endif
-# define VERSION CTDL_VERSION
-# undef CTDL_VERSION
-#endif
-#endif
+
+#undef PACKAGE
+#undef VERSION
+#undef PACKAGE_NAME
+#undef PACKAGE_STRING
+#undef PACKAGE_TARNAME
+#undef PACKAGE_VERSION
+#undef PACKAGE_BUGREPORT
+#include "sysdep.h"
 
 
 
@@ -122,11 +120,10 @@ extern locale_t wc_locales[];
 #define SLEEPING               180             /* TCP connection timeout */
 #define WEBCIT_TIMEOUT         900             /* WebCit session timeout */
 #define PORT_NUM               2000            /* port number to listen on */
-#define SERVER                 "WebCit v7.13"  /* who's in da house */
 #define DEVELOPER_ID           0
 #define CLIENT_ID              4
-#define CLIENT_VERSION         713             /* This version of WebCit */
-#define MINIMUM_CIT_VERSION    710             /* min required Citadel ver. */
+#define CLIENT_VERSION         723             /* This version of WebCit */
+#define MINIMUM_CIT_VERSION    723             /* min required Citadel ver. */
 #define DEFAULT_HOST           "localhost"     /* Default Citadel server */
 #define DEFAULT_PORT           "504"
 #define LB                     (1)             /* Internal escape chars */
@@ -323,6 +320,7 @@ struct folder {
        int is_mailbox; /**< is it a mailbox?  */
        int selectable; /**< can we select it ??? */
        int view;       /**< whats its default view? inbox/calendar.... */
+       int num_rooms;  /**< If this is a floor, how many rooms does it have */
 };
 
 /**
@@ -411,9 +409,15 @@ enum {
        current_iconbar_menu,     /**< view the icon menue */
        current_iconbar_roomlist  /**< view the roomtree */
 };
+enum {
+       S_SELECT,
+       S_SHUTDOWN,
+       MAX_SEMAPHORES
+};
 
-
+#ifndef num_parms
 #define num_parms(source)              num_tokens(source, '|') 
+#endif
 
 /* Per-session data */
 #define WC ((struct wcsession *)pthread_getspecific(MyConKey))
@@ -442,6 +446,12 @@ extern time_t if_modified_since;
 extern int follow_xff;
 void do_setup_wizard(void);
 
+
+void InitialiseSemaphores(void);
+void begin_critical_section(int which_one);
+void end_critical_section(int which_one);
+
+
 void stuff_to_cookie(char *cookie, int session,
                        char *user, char *pass, char *room);
 void cookie_to_stuff(char *cookie, int *session,
@@ -471,6 +481,7 @@ void who_inner_div(void);
 void wholist_section(void);
 void tasks_section(void);
 void calendar_section(void);
+void ajax_mini_calendar(void);
 void new_messages_section(void);
 void fmout(char *align);
 void pullquote_fmout(void);
@@ -497,13 +508,10 @@ void escputs1(char *strbuf, int nbsp, int nolinebreaks);
 void msgesc(char *target, char *strbuf);
 void msgescputs(char *strbuf);
 void msgescputs1(char *strbuf);
-int extract_int(const char *source, int parmnum);
-long extract_long(const char *source, int parmnum);
 void stripout(char *str, char leftboundary, char rightboundary);
 void dump_vars(void);
 void embed_main_menu(void);
 void serv_read(char *buf, int bytes);
-int haschar(const char *, char);
 void readloop(char *oper);
 void read_message(long msgnum, int printable_view, char *section);
 void embed_message(char *msgnum_as_string);
@@ -562,6 +570,8 @@ void display_confirm_delete_node(void);
 void delete_node(void);
 void display_add_node(void);
 void terminate_session(void);
+void shutdown_sessions(void);
+void do_housekeeping(void);
 void edit_me(void);
 void display_siteconfig(void);
 void siteconfig(void);
@@ -573,7 +583,6 @@ void smart_goto(char *);
 void worker_entry(void);
 void session_loop(struct httprequest *);
 size_t wc_strftime(char *s, size_t max, const char *format, const struct tm *tm);
-void fmt_date(char *buf, time_t thetime, int brief);
 void fmt_time(char *buf, time_t thetime);
 void httpdate(char *buf, time_t thetime);
 time_t httpdate_to_timestamp(char *buf);
@@ -582,13 +591,14 @@ void page_popup(void);
 void chat_recv(void);
 void chat_send(void);
 void http_redirect(char *);
+void clear_substs(struct wcsession *wc);
 void clear_local_substs(void);
 void svprintf(char *keyname, int keytype, const char *format,...);
 void svcallback(char *keyname, void (*fcn_ptr)() );
 void do_template(void *templatename);
 int lingering_close(int fd);
 char *memreadline(char *start, char *buf, int maxlen);
-int num_tokens (char *source, char tok);
+char *memreadlinelen(char *start, char *buf, int maxlen, int *retlen);
 long extract_token(char *dest, const char *source, int parmnum, char separator, int maxlen);
 void remove_token(char *source, int parmnum, char separator);
 char *load_mimepart(long msgnum, char *partnum);
@@ -637,8 +647,6 @@ void do_tasks_view(void);
 void free_calendar_buffer(void);
 void calendar_summary_view(void);
 int load_msg_ptrs(char *servcmd, int with_headers);
-size_t CtdlEncodeBase64(char **dest, const char *source, size_t sourcelen, size_t *destlen, int linebreaks);
-int CtdlDecodeBase64(char *dest, const char *source, size_t length);
 void free_attachments(struct wcsession *sess);
 void free_march_list(struct wcsession *wcf);
 void set_room_policy(void);
@@ -649,6 +657,8 @@ void display_smtpqueue_inner_div(void);
 void display_sieve(void);
 void display_rules_editor_inner_div(void);
 void save_sieve(void);
+void display_pushemail(void);
+void save_pushemail(void);
 void display_add_remove_scripts(char *);
 void create_script(void);
 void delete_script(void);
@@ -686,6 +696,12 @@ void partstat_as_string(char *buf, icalproperty *attendee);
 icalcomponent *ical_encapsulate_subcomponent(icalcomponent *subcomp);
 void check_attendee_availability(icalcomponent *supplied_vevent);
 void do_freebusy(char *req);
+int ical_ctdl_is_overlap(
+                        struct icaltimetype t1start,
+                        struct icaltimetype t1end,
+                        struct icaltimetype t2start,
+                        struct icaltimetype t2end
+);
 #endif
 
 #ifdef ENABLE_NLS
@@ -721,8 +737,9 @@ void begin_tab(int tabnum, int num_tabs);
 void end_tab(int tabnum, int num_tabs);
 void str_wiki_index(char *s);
 void display_wiki_page(void);
-char *bmstrcasestr(char *text, char *pattern);
 int get_time_format_cached (void);
+int xtoi(char *in, size_t len);
+void webcit_fmt_date(char *buf, time_t thetime, int brief);
 
 #ifdef HAVE_ICONV
 iconv_t ctdl_iconv_open(const char *tocode, const char *fromcode);