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,
void CM_CopyField (struct CtdlMessage *Msg, eMsgField WhichToPutTo, eMsgField WhichtToCopy);
void CM_CutFieldAt (struct CtdlMessage *Msg, eMsgField WhichToCut, long maxlen);
void CM_FlushField (struct CtdlMessage *Msg, eMsgField which);
+void CM_Flush (struct CtdlMessage *Msg);
void CM_SetAsField (struct CtdlMessage *Msg, eMsgField which, char **buf, long length);
void CM_SetAsFieldSB (struct CtdlMessage *Msg, eMsgField which, StrBuf **buf);
void CM_GetAsField (struct CtdlMessage *Msg, eMsgField which, char **ret, long *retlen);
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]
+
void CtdlSerializeMessage(struct ser_ret *, struct CtdlMessage *);
void ReplicationChecks(struct CtdlMessage *);
int CtdlSaveMsgPointersInRoom(char *roomname, long newmsgidlist[], int num_newmsgs,
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: