]> code.citadel.org Git - citadel.git/blobdiff - citadel/msgbase.h
* Temporary hack to ig_tcp_server() to listen on an arbitrary port if the
[citadel.git] / citadel / msgbase.h
index df8dec8256d6f3bd1f5b9dcdfb5d480bd3f17f49..51e104ff99c3e7b80aa2d56faff2452f85cf8b9f 100644 (file)
@@ -9,6 +9,26 @@
 #define MSGS_LAST       4
 #define MSGS_GT         5
 
+/*
+ * Flags which may be passed to CtdlSaveMsgPointerInRoom()
+ */
+#define SM_VERIFY_GOODNESS     1       /* Verify this is a real msg number */
+#define SM_DO_REPL_CHECK       2       /* Perform replication checks */
+#define SM_DONT_BUMP_REF       3       /* Don't bump reference count
+                                          (use with extreme care!!!!!!) */
+
+
+/*
+ * Possible return codes from CtdlOutputMsg()
+ */
+enum {
+       om_ok,
+       om_not_logged_in,
+       om_no_such_msg,
+       om_mime_error
+};
+       
+
 
 struct ma_info {
        char prefix[256];       /* Prefix for a multipart/alternative */
@@ -17,6 +37,10 @@ struct ma_info {
 };
 
 
+struct repl {                  /* Info for replication checking */
+       char extended_id[256];
+       time_t highest;
+};
 
 
 int alias (char *name);
@@ -26,7 +50,6 @@ void help_subst (char *strbuf, char *source, char *dest);
 void do_help_subst (char *buffer);
 void memfmout (int width, char *mptr, char subst);
 void output_mime_parts(char *);
-void output_message (char *, int, int);
 void cmd_msg0 (char *cmdbuf);
 void cmd_msg2 (char *cmdbuf);
 void cmd_msg3 (char *cmdbuf);
@@ -34,7 +57,7 @@ void cmd_msg4 (char *cmdbuf);
 void cmd_opna (char *cmdbuf);
 long send_message (struct CtdlMessage *, int, FILE *);
 void loadtroom (void);
-void CtdlSaveMsg(struct CtdlMessage *, char *, char *, int, int);
+long CtdlSaveMsg(struct CtdlMessage *, char *, char *, int, int);
 void quickie_message (char *, char *, char *, char *);
 struct CtdlMessage *make_message (struct usersupp *, char *,
                   char *, int, int, int, char *);
@@ -46,12 +69,27 @@ void GetSuppMsgInfo(struct SuppMsgInfo *, long);
 void PutSuppMsgInfo(struct SuppMsgInfo *);
 void AdjRefCount(long, int);
 void simple_listing(long);
+int CtdlMsgCmp(struct CtdlMessage *msg, struct CtdlMessage *template);
 void CtdlForEachMessage(int mode, long ref,
                        char *content_type,
+                       struct CtdlMessage *compare,
                         void (*CallBack) (long msgnum) );
 int CtdlDeleteMessages(char *, long, char *);
-void CtdlWriteObject(char *, char *, char *, struct usersupp *, int, int);
+void CtdlWriteObject(char *, char *, char *, struct usersupp *,
+                       int, int, unsigned int);
 struct CtdlMessage *CtdlFetchMessage(long msgnum);
 void CtdlFreeMessage(struct CtdlMessage *msg);
 void serialize_message(struct ser_ret *, struct CtdlMessage *);
 int is_valid_message(struct CtdlMessage *);
+int ReplicationChecks(struct CtdlMessage *);
+int CtdlSaveMsgPointerInRoom(char *roomname, long msgid, int flags);
+char *CtdlReadMessageBody(char *terminator, size_t maxlen, char *exist);
+char *CtdlGetSysConfig(char *sysconfname);
+void CtdlPutSysConfig(char *sysconfname, char *sysconfdata);
+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? */
+               int do_proto,           /* do Citadel protocol responses? */
+               FILE *outfp,
+               int outsock,
+               int crlf);