Send crashmessage just once per day.
[citadel.git] / citadel / msgbase.h
index 7780d69fc54b3784e209d5d602c6ea31d618ebee..6d5f726baafd6fe68cd73aa999829c6b3631cbb1 100644 (file)
@@ -77,7 +77,7 @@ void memfmout (char *mptr, const char *nl);
 void output_mime_parts(char *);
 long send_message (struct CtdlMessage *);
 void loadtroom (void);
-long CtdlSubmitMsg(struct CtdlMessage *, struct recptypes *, const char *, int);
+long CtdlSubmitMsg(struct CtdlMessage *, recptypes *, const char *, int);
 
 void quickie_message(const char *from,
                     const char *fromaddr,
@@ -96,7 +96,7 @@ void flood_protect_quickie_message(const char *from,
                                   const char *subject,
                                   int nCriterions,
                                   const char **CritStr,
-                                  long *CritStrLen,
+                                  const long *CritStrLen,
                                   long ccid,
                                   long ioid,
                                   time_t NOW);
@@ -145,6 +145,10 @@ void CM_Free           (struct CtdlMessage *msg);
 void CM_FreeContents   (struct CtdlMessage *msg);
 int  CM_IsValidMsg     (struct CtdlMessage *msg);
 
+#define CM_KEY(Message, Which) Message->cm_fields[Which], Message->cm_lengths[Which]
+#define CM_RANGE(Message, Which) Message->cm_fields[Which], \
+               Message->cm_fields[Which] + Message->cm_lengths[Which]
+
 void CtdlSerializeMessage(struct ser_ret *, struct CtdlMessage *);
 void ReplicationChecks(struct CtdlMessage *);
 int CtdlSaveMsgPointersInRoom(char *roomname, long newmsgidlist[], int num_newmsgs,
@@ -161,14 +165,15 @@ StrBuf *CtdlReadMessageBodyBuf(char *terminator,  /* token signalling EOT */
        );
 
 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? */
-                 int crlf,             /* 0=LF, 1=CRLF */
-                 char *section,                /* output a message/rfc822 section */
-                 int flags,            /* should the bessage be exported clean? */
-                 char **Author,        /* if you want to know the author of the message... */
-                 char **Address        /* if you want to know the sender address of the message... */
+               int mode,               /* how would you like that message? */
+               int headers_only,       /* eschew the message body? */
+               int do_proto,           /* do Citadel protocol responses? */
+               int crlf,               /* 0=LF, 1=CRLF */
+               char *section,          /* output a message/rfc822 section */
+               int flags,              /* should the bessage be exported clean? */
+               char **Author,          /* if you want to know the author of the message... */
+               char **Address,         /* if you want to know the sender address of the message... */
+               char **MessageID        /* if you want to know the Message-ID of the message... */
 );
 
 /* Flags which may be passed to CtdlOutputMsg() and CtdlOutputPreLoadedMsg() */
@@ -211,7 +216,29 @@ struct CtdlMessage *CtdlMakeMessage(
         char *preformatted_text,        /* ...or NULL to read text from client */
        char *references                /* Thread references */
 );
-int CtdlIsMe(char *addr, int addr_buf_len);
+
+struct CtdlMessage *CtdlMakeMessageLen(
+       struct ctdluser *author,        /* author's user structure */
+       char *recipient,                /* NULL if it's not mail */
+       long rcplen,
+       char *recp_cc,                  /* NULL if it's not mail */
+       long cclen,
+       char *room,                     /* room where it's going */
+       long roomlen,
+       int type,                       /* see MES_ types in header file */
+       int format_type,                /* variformat, plain text, MIME... */
+       char *fake_name,                /* who we're masquerading as */
+       long fnlen,
+       char *my_email,                 /* which of my email addresses to use (empty is ok) */
+       long myelen,
+       char *subject,                  /* Subject (optional) */
+       long subjlen,
+       char *supplied_euid,            /* ...or NULL if this is irrelevant */
+       long euidlen,
+       char *preformatted_text,        /* ...or NULL to read text from client */
+       long textlen,
+       char *references,               /* Thread references */
+       long reflen);
 
 /* 
  * loading messages async via an FD: