avoid decoding mime-parts unless we realy need to.
[citadel.git] / citadel / msgbase.h
index beced22efd3e7c7ed65aeaf45d4a5f993bfad01c..b2a8bccbdc721594f5c20a5f2b9f858b8b2ea09a 100644 (file)
@@ -1,9 +1,7 @@
-/* $Id$ */
 
 #ifndef MSGBASE_H
 #define MSGBASE_H
 
-#define aide_message(text, subject)      quickie_message("Citadel",NULL,NULL,AIDEROOM,text,FMT_CITADEL,subject)
 
 enum {
        MSGS_ALL,
@@ -13,7 +11,14 @@ enum {
        MSGS_LAST,
        MSGS_GT,
        MSGS_EQ,
-       MSGS_SEARCH
+       MSGS_SEARCH,
+       MSGS_LT
+};
+
+enum {
+       MSG_HDRS_BRIEF = 0,
+       MSG_HDRS_ALL = 1,
+       MSG_HDRS_EUID = 4
 };
 
 /*
@@ -43,6 +48,7 @@ struct ma_info {
        char chosen_part[128];  /* Which part of a m/a did we choose? */
        int chosen_pref;        /* Chosen part preference level (lower is better) */
        int use_fo_hooks;       /* Use fixed output hooks */
+       int dont_decode;        /* should we call the decoder or not? */
 };
 
 
@@ -90,7 +96,7 @@ void cmd_msgs (char *cmdbuf);
 void cmd_isme (char *cmdbuf);
 void help_subst (char *strbuf, char *source, char *dest);
 void do_help_subst (char *buffer);
-void memfmout (char *mptr, char subst, char *nl);
+void memfmout (char *mptr, const char *nl);
 void output_mime_parts(char *);
 void cmd_msg0 (char *cmdbuf);
 void cmd_msg2 (char *cmdbuf);
@@ -113,12 +119,13 @@ void TDAP_AdjRefCount(long, int);
 int TDAP_ProcessAdjRefCountQueue(void);
 void simple_listing(long, void *);
 int CtdlMsgCmp(struct CtdlMessage *msg, struct CtdlMessage *template);
+typedef void (*ForEachMsgCallback)(long MsgNumber, void *UserData);
 int CtdlForEachMessage(int mode,
                        long ref,
                        char *searchstring,
                        char *content_type,
                        struct CtdlMessage *compare,
-                        void (*CallBack) (long, void *),
+                        ForEachMsgCallback CallBack,
                        void *userdata);
 int CtdlDeleteMessages(char *, long *, int, char *);
 void CtdlWriteObject(char *req_room,                   /* Room to stuff it in */
@@ -137,11 +144,18 @@ void dump_message(struct CtdlMessage *msg, long Siz);
 int is_valid_message(struct CtdlMessage *);
 void ReplicationChecks(struct CtdlMessage *);
 int CtdlSaveMsgPointersInRoom(char *roomname, long newmsgidlist[], int num_newmsgs,
-                               int do_repl_check, struct CtdlMessage *supplied_msg);
+                       int do_repl_check, struct CtdlMessage *supplied_msg, int suppress_refcount_adj);
 int CtdlSaveMsgPointerInRoom(char *roomname, long msgid, int do_repl_check, struct CtdlMessage *msg);
-char *CtdlReadMessageBody(char *terminator, size_t maxlen, char *exist, int crlf, int sock);
-char *CtdlGetSysConfig(char *sysconfname);
-void CtdlPutSysConfig(char *sysconfname, char *sysconfdata);
+char *CtdlReadMessageBody(char *terminator, long tlen, size_t maxlen, char *exist, int crlf, int *sock);
+StrBuf *CtdlReadMessageBodyBuf(char *terminator,       /* token signalling EOT */
+                              long tlen,
+                              size_t maxlen,           /* maximum message length */
+                              char *exist,             /* if non-null, append to it;
+                                                          exist is ALWAYS freed  */
+                              int crlf,                /* CRLF newlines instead of LF */
+                              int *sock                /* socket handle or 0 for this session's client socket */
+       );
+
 int CtdlOutputMsg(long msg_num,                /* message number (local) to fetch */
                  int mode,             /* how would you like that message? */
                  int headers_only,     /* eschew the message body? */
@@ -160,11 +174,12 @@ int CtdlOutputMsg(long msg_num,           /* message number (local) to fetch */
 int CtdlOutputPreLoadedMsg(struct CtdlMessage *,
                           int mode,            /* how would you like that message? */
                           int headers_only,    /* eschew the message body? */
-                          int do_proto,                /* do Citadel protocol responses? */
+                          int do_proto,        /* do Citadel protocol responses? */
                           int crlf,            /* 0=LF, 1=CRLF */
                           int flags            /* should the bessage be exported clean? */
 );
 int CtdlDoIHavePermissionToDeleteMessagesFromThisRoom(void);
+int CtdlDoIHavePermissionToReadMessagesInThisRoom(void);
 
 enum {
        POST_LOGGED_IN,
@@ -172,10 +187,13 @@ enum {
        CHECK_EXISTANCE,
        POST_LMTP
 };
+
 int CtdlDoIHavePermissionToPostInThisRoom(char *errmsgbuf, 
-                                         size_t n, 
-                                         const char* RemoteIdentifier,
-                                         int PostPublic);
+       size_t n, 
+       const char* RemoteIdentifier,
+       int PostPublic,
+       int is_reply
+);
 
 
 /* values for which_set */
@@ -188,7 +206,7 @@ void CtdlSetSeen(long *target_msgnums, int num_target_msgnums,
                struct ctdluser *which_user, struct ctdlroom *which_room);
 void CtdlGetSeen(char *buf, int which_set);
 
-struct recptypes *validate_recipients(char *recipients,
+struct recptypes *validate_recipients(const char *recipients,
                                      const char *RemoteIdentifier, 
                                      int Flags);
 
@@ -211,4 +229,13 @@ struct CtdlMessage *CtdlMakeMessage(
 int CtdlCheckInternetMailPermission(struct ctdluser *who);
 int CtdlIsMe(char *addr, int addr_buf_len);
 
+/*
+ * Use of aide_message is deprecated.
+ * It has been replaced with CtdlAideMessage.
+ * All parameters remain the same.
+*/
+void aide_message(char *text, char *subject) __attribute__ ((deprecated));
+
+
+
 #endif /* MSGBASE_H */