}
-void CM_SetField(struct CtdlMessage *Msg, eMsgField which, const char *buf, long length) {
+void CM_SetField(struct CtdlMessage *Msg, eMsgField which, const char *buf) {
if (Msg->cm_fields[which] != NULL) {
- free (Msg->cm_fields[which]);
- }
- if (length < 0) { // You can set the length to -1 to have CM_SetField measure it for you
- length = strlen(buf);
+ free(Msg->cm_fields[which]);
}
- Msg->cm_fields[which] = malloc(length + 1);
- memcpy(Msg->cm_fields[which], buf, length);
- Msg->cm_fields[which][length] = '\0';
- Msg->cm_lengths[which] = length;
+ Msg->cm_fields[which] = strdup(buf);
+ Msg->cm_lengths[which] = strlen(buf);
}
char buf[128];
long len;
len = snprintf(buf, sizeof(buf), "%ld", lvalue);
- CM_SetField(Msg, which, buf, len);
+ CM_SetField(Msg, which, buf);
}
}
+// wtf?
void CM_SetAsField(struct CtdlMessage *Msg, eMsgField which, char **buf, long length) {
if (Msg->cm_fields[which] != NULL) {
free (Msg->cm_fields[which]);
which = field_header;
len = strlen(mptr);
- CM_SetField(ret, which, mptr, len);
+ CM_SetField(ret, which, mptr);
mptr += len + 1; // advance to next field
}
}
if (CM_IsEmpty(ret, eMesageText)) {
- CM_SetField(ret, eMesageText, HKEY("\r\n\r\n (no text)\r\n"));
+ CM_SetField(ret, eMesageText, "\r\n\r\n (no text)\r\n");
}
return (ret);
CtdlGetConfigStr("c_fqdn")
);
- CM_SetField(msg, emessageId, msgidbuf, msgidbuflen);
+ CM_SetField(msg, emessageId, msgidbuf);
}
retval = CtdlSaveThisMessage(msg, newmsgid, 1);
}
}
else {
- CM_SetField(msg, eMessagePath, HKEY("unknown"));
+ CM_SetField(msg, eMessagePath, "unknown");
}
}
* If this message has no O (room) field, generate one.
*/
if (CM_IsEmpty(msg, eOriginalRoom) && !IsEmptyStr(CC->room.QRname)) {
- CM_SetField(msg, eOriginalRoom, CC->room.QRname, -1);
+ CM_SetField(msg, eOriginalRoom, CC->room.QRname);
}
/* Perform "before save" hooks (aborting if any return nonzero) */
msg->cm_format_type = format_type;
if (!IsEmptyStr(from)) {
- CM_SetField(msg, eAuthor, from, -1);
+ CM_SetField(msg, eAuthor, from);
}
else if (!IsEmptyStr(fromaddr)) {
char *pAt;
- CM_SetField(msg, eAuthor, fromaddr, -1);
+ CM_SetField(msg, eAuthor, fromaddr);
pAt = strchr(msg->cm_fields[eAuthor], '@');
if (pAt != NULL) {
CM_CutFieldAt(msg, eAuthor, pAt - msg->cm_fields[eAuthor]);
msg->cm_fields[eAuthor] = strdup("Citadel");
}
- if (!IsEmptyStr(fromaddr)) CM_SetField(msg, erFc822Addr, fromaddr, -1);
- if (!IsEmptyStr(room)) CM_SetField(msg, eOriginalRoom, room, -1);
+ if (!IsEmptyStr(fromaddr)) CM_SetField(msg, erFc822Addr, fromaddr);
+ if (!IsEmptyStr(room)) CM_SetField(msg, eOriginalRoom, room);
if (!IsEmptyStr(to)) {
- CM_SetField(msg, eRecipient, to, -1);
+ CM_SetField(msg, eRecipient, to);
recp = validate_recipients(to, NULL, 0);
}
if (!IsEmptyStr(subject)) {
- CM_SetField(msg, eMsgSubject, subject, -1);
+ CM_SetField(msg, eMsgSubject, subject);
}
if (!IsEmptyStr(text)) {
- CM_SetField(msg, eMesageText, text, -1);
+ CM_SetField(msg, eMesageText, text);
}
long msgnum = CtdlSubmitMsg(msg, recp, room);
/* Path or Return-Path */
if (myelen > 0) {
- CM_SetField(msg, eMessagePath, my_email, myelen);
+ CM_SetField(msg, eMessagePath, my_email);
}
else if (!IsEmptyStr(author->fullname)) {
- CM_SetField(msg, eMessagePath, author->fullname, -1);
+ CM_SetField(msg, eMessagePath, author->fullname);
}
convert_spaces_to_underscores(msg->cm_fields[eMessagePath]);
blen = snprintf(buf, sizeof buf, "%ld", (long)time(NULL));
- CM_SetField(msg, eTimestamp, buf, blen);
+ CM_SetField(msg, eTimestamp, buf);
if (fnlen > 0) {
FakeAuthor = NewStrBufPlain (fake_name, fnlen);
if (!!IsEmptyStr(CC->room.QRname)) {
if (CC->room.QRflags & QR_MAILBOX) { /* room */
- CM_SetField(msg, eOriginalRoom, &CC->room.QRname[11], -1);
+ CM_SetField(msg, eOriginalRoom, &CC->room.QRname[11]);
}
else {
- CM_SetField(msg, eOriginalRoom, CC->room.QRname, -1);
+ CM_SetField(msg, eOriginalRoom, CC->room.QRname);
}
}
if (rcplen > 0) {
- CM_SetField(msg, eRecipient, recipient, rcplen);
+ CM_SetField(msg, eRecipient, recipient);
}
if (cclen > 0) {
- CM_SetField(msg, eCarbonCopY, recp_cc, cclen);
+ CM_SetField(msg, eCarbonCopY, recp_cc);
}
if (myelen > 0) {
- CM_SetField(msg, erFc822Addr, my_email, myelen);
+ CM_SetField(msg, erFc822Addr, my_email);
}
else if ( (author == &CC->user) && (!IsEmptyStr(CC->cs_inet_email)) ) {
- CM_SetField(msg, erFc822Addr, CC->cs_inet_email, -1);
+ CM_SetField(msg, erFc822Addr, CC->cs_inet_email);
}
if (subject != NULL) {
(IsAscii = isascii(subject[i]) != 0 ))
i++;
if (IsAscii != 0)
- CM_SetField(msg, eMsgSubject, subject, subjlen);
+ CM_SetField(msg, eMsgSubject, subject);
else /* ok, we've got utf8 in the string. */
{
char *rfc2047Subj;
}
if (euidlen > 0) {
- CM_SetField(msg, eExclusiveID, supplied_euid, euidlen);
+ CM_SetField(msg, eExclusiveID, supplied_euid);
}
if (reflen > 0) {
- CM_SetField(msg, eWeferences, references, reflen);
+ CM_SetField(msg, eWeferences, references);
}
if (preformatted_text != NULL) {
- CM_SetField(msg, eMesageText, preformatted_text, textlen);
+ CM_SetField(msg, eMesageText, preformatted_text);
}
else {
StrBuf *MsgBody;
msg->cm_magic = CTDLMESSAGE_MAGIC;
msg->cm_anon_type = MES_NORMAL;
msg->cm_format_type = 4;
- CM_SetField(msg, eAuthor, CC->user.fullname, -1);
- CM_SetField(msg, eOriginalRoom, req_room, -1);
+ CM_SetField(msg, eAuthor, CC->user.fullname);
+ CM_SetField(msg, eOriginalRoom, req_room);
msg->cm_flags = flags;
CM_SetAsFieldSB(msg, eMesageText, &encoded_message);