syslog(LOG_DEBUG, "internet_addressing: converted to <%s@%s> (%s)", user, node, name);
snprintf(addr, sizeof(addr), "%s@%s", user, node);
if (CM_IsEmpty(msg, eAuthor) && !IsEmptyStr(name)) {
- CM_SetField(msg, eAuthor, name, -1);
+ CM_SetField(msg, eAuthor, name);
}
if (CM_IsEmpty(msg, erFc822Addr) && !IsEmptyStr(addr)) {
- CM_SetField(msg, erFc822Addr, addr, -1);
+ CM_SetField(msg, erFc822Addr, addr);
}
processed = 1;
}
else if (!strcasecmp(key, "Subject")) {
if (CM_IsEmpty(msg, eMsgSubject))
- CM_SetField(msg, eMsgSubject, value, valuelen);
+ CM_SetField(msg, eMsgSubject, value);
processed = 1;
}
else if (!strcasecmp(key, "List-ID")) {
if (CM_IsEmpty(msg, eListID))
- CM_SetField(msg, eListID, value, valuelen);
+ CM_SetField(msg, eListID, value);
processed = 1;
}
else if (!strcasecmp(key, "To")) {
if (CM_IsEmpty(msg, eRecipient))
- CM_SetField(msg, eRecipient, value, valuelen);
+ CM_SetField(msg, eRecipient, value);
processed = 1;
}
else if (!strcasecmp(key, "CC")) {
if (CM_IsEmpty(msg, eCarbonCopY))
- CM_SetField(msg, eCarbonCopY, value, valuelen);
+ CM_SetField(msg, eCarbonCopY, value);
processed = 1;
}
break;
}
- CM_SetField(msg, emessageId, pValue, pValueLen);
+ CM_SetField(msg, emessageId, pValue);
}
processed = 1;
else if (!strcasecmp(key, "Return-Path")) {
if (CM_IsEmpty(msg, eMessagePath))
- CM_SetField(msg, eMessagePath, value, valuelen);
+ CM_SetField(msg, eMessagePath, value);
processed = 1;
}
else if (!strcasecmp(key, "Envelope-To")) {
if (CM_IsEmpty(msg, eenVelopeTo))
- CM_SetField(msg, eenVelopeTo, value, valuelen);
+ CM_SetField(msg, eenVelopeTo, value);
processed = 1;
}
else if (!strcasecmp(key, "References")) {
- CM_SetField(msg, eWeferences, value, valuelen);
+ CM_SetField(msg, eWeferences, value);
processed = 1;
}
else if (!strcasecmp(key, "Reply-To")) {
- CM_SetField(msg, eReplyTo, value, valuelen);
+ CM_SetField(msg, eReplyTo, value);
processed = 1;
}
else if (!strcasecmp(key, "In-reply-to")) {
if (CM_IsEmpty(msg, eWeferences)) // References: supersedes In-reply-to:
- CM_SetField(msg, eWeferences, value, valuelen);
+ CM_SetField(msg, eWeferences, value);
processed = 1;
}
// Message journaling functions.
//
-// Copyright (c) 1987-2022 by the citadel.org team
+// Copyright (c) 1987-2023 by the citadel.org team
//
// This program is open source software. Use, duplication, or disclosure
// is subject to the terms of the GNU General Public License, version 3.
journal_msg->cm_magic = CTDLMESSAGE_MAGIC;
journal_msg->cm_anon_type = MES_NORMAL;
journal_msg->cm_format_type = FMT_RFC822;
- CM_SetField(journal_msg, eJournal, HKEY("is journal"));
+ CM_SetField(journal_msg, eJournal, "is journal");
if (!IsEmptyStr(jmsg->from)) {
- CM_SetField(journal_msg, eAuthor, jmsg->from, -1);
+ CM_SetField(journal_msg, eAuthor, jmsg->from);
}
if (!IsEmptyStr(jmsg->rfca)) {
- CM_SetField(journal_msg, erFc822Addr, jmsg->rfca, -1);
+ CM_SetField(journal_msg, erFc822Addr, jmsg->rfca);
}
if (!IsEmptyStr(jmsg->subj)) {
- CM_SetField(journal_msg, eMsgSubject, jmsg->subj, -1);
+ CM_SetField(journal_msg, eMsgSubject, jmsg->subj);
}
mblen = snprintf(mime_boundary, sizeof(mime_boundary),
// Support for blog rooms
//
-// Copyright (c) 1999-2022 by the citadel.org team
+// Copyright (c) 1999-2023 by the citadel.org team
//
// This program is open source software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License as published
if (CM_IsEmpty(msg, eExclusiveID)) {
char uuid[SIZ];
generate_uuid(uuid);
- CM_SetField(msg, eExclusiveID, uuid, strlen(uuid));
+ CM_SetField(msg, eExclusiveID, uuid);
}
// We also want to define a maximum length, whether we generated it or not.
* room on a Citadel server. It handles iCalendar objects using the
* iTIP protocol. See RFCs 2445 and 2446.
*
- * Copyright (c) 1987-2022 by the citadel.org team
+ * Copyright (c) 1987-2023 by the citadel.org team
*
* This program is open source software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3.
msg->cm_magic = CTDLMESSAGE_MAGIC;
msg->cm_anon_type = MES_NORMAL;
msg->cm_format_type = 4;
- CM_SetField(msg, eAuthor, CCC->user.fullname, strlen(CCC->user.fullname));
- CM_SetField(msg, eOriginalRoom, CCC->room.QRname, strlen(CCC->room.QRname));
+ CM_SetField(msg, eAuthor, CCC->user.fullname);
+ CM_SetField(msg, eOriginalRoom, CCC->room.QRname);
MsgBody = NewStrBufPlain(NULL, serlen + 100);
StrBufAppendBufPlain(MsgBody, HKEY("Content-type: text/calendar\r\n\r\n"), 0);
if (p != NULL) {
pch = icalproperty_get_comment(p);
if (!IsEmptyStr(pch)) {
- CM_SetField(msg, eExclusiveID, pch, strlen(pch));
+ CM_SetField(msg, eExclusiveID, pch);
syslog(LOG_DEBUG, "calendar: saving calendar UID <%s>", pch);
}
}
* http://clamav.net (the ClamAV project is not in any way
* affiliated with the Citadel project).
*
- * Copyright (c) 1987-2022 by the citadel.org team
+ * Copyright (c) 1987-2023 by the citadel.org team
*
* This program is open source software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3.
}
if (is_virus) {
- CM_SetField(msg, eErrorMsg, HKEY("message rejected by virus filter"));
+ CM_SetField(msg, eErrorMsg, "message rejected by virus filter");
}
bail: close(sock);
// Message-related protocol commands for Citadel clients
//
-// Copyright (c) 1987-2022 by the citadel.org team
+// Copyright (c) 1987-2023 by the citadel.org team
//
// This program is open source software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License version 3.
{
tValueLen = extract_token(tvalue, buf, 1, '|', sizeof tvalue);
if (tValueLen >= 0) {
- CM_SetField(template, f, tvalue, tValueLen);
+ CM_SetField(template, f, tvalue);
}
}
}
// posting into a mailing list room? set the envelope from
// to the actual mail address so others get a valid reply-to-header.
if ((valid != NULL) && (valid->num_room == 1) && !IsEmptyStr(valid->recp_orgroom)) {
- CM_SetField(msg, eenVelopeTo, valid->recp_orgroom, strlen(valid->recp_orgroom));
+ CM_SetField(msg, eenVelopeTo, valid->recp_orgroom);
}
if (msg != NULL) {
/*
- * Copyright (c) 1987-2020 by the citadel.org team
+ * Copyright (c) 1987-2023 by the citadel.org team
*
* This program is open source software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* show up as the real sender. (Configurable setting)
*/
if (CC->logged_in) {
- if ( ((CC->room.QRflags & QR_MAILBOX) == 0) && (CtdlGetConfigInt("c_imap_keep_from") == 0))
- {
- CM_SetField(msg, eAuthor, CC->user.fullname, strlen(CC->user.fullname));
+ if ( ((CC->room.QRflags & QR_MAILBOX) == 0) && (CtdlGetConfigInt("c_imap_keep_from") == 0)) {
+ CM_SetField(msg, eAuthor, CC->user.fullname);
}
}
// This module handles instant messaging between users.
//
-// Copyright (c) 1987-2022 by the citadel.org team
+// Copyright (c) 1987-2023 by the citadel.org team
//
// This program is open source software. Use, duplication, or disclosure
// is subject to the terms of the GNU General Public License, version 3.
msg->cm_anon_type = MES_NORMAL;
msg->cm_format_type = FMT_RFC822;
if (!IsEmptyStr(im->usernames[0])) {
- CM_SetField(msg, eAuthor, im->usernames[0], strlen(im->usernames[0]));
+ CM_SetField(msg, eAuthor, im->usernames[0]);
}
else {
- CM_SetField(msg, eAuthor, HKEY("Citadel"));
+ CM_SetField(msg, eAuthor, "Citadel");
}
if (!IsEmptyStr(im->usernames[1])) {
- CM_SetField(msg, eRecipient, im->usernames[1], strlen(im->usernames[1]));
+ CM_SetField(msg, eRecipient, im->usernames[1]);
}
- CM_SetField(msg, eOriginalRoom, HKEY(PAGELOGROOM));
+ CM_SetField(msg, eOriginalRoom, PAGELOGROOM);
CM_SetAsFieldSB(msg, eMesageText, &FullMsgBuf); /* we own this memory now */
// Start with usernums[1] because it's guaranteed to be higher than usernums[0],
// This module delivers messages to mailing lists.
//
-// Copyright (c) 2002-2022 by the citadel.org team
+// Copyright (c) 2002-2023 by the citadel.org team
//
// This program is open source software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License version 3.
// If the subject line does not contain the name of the room, add it now.
if (!bmstrcasestr(TheMessage->cm_fields[eMsgSubject], CC->room.QRname)) {
snprintf(buf, sizeof buf, "[%s] %s", CC->room.QRname, TheMessage->cm_fields[eMsgSubject]);
- CM_SetField(TheMessage, eMsgSubject, buf, strlen(buf));
+ CM_SetField(TheMessage, eMsgSubject, buf);
}
// From: should be set to the list address because doing otherwise makes DKIM parsers angry.
for (ch=buf; *ch; ++ch) {
if (isspace(*ch)) *ch = '_';
}
- CM_SetField(TheMessage, erFc822Addr, buf, strlen(buf));
- CM_SetField(TheMessage, eReplyTo, buf, strlen(buf));
+ CM_SetField(TheMessage, erFc822Addr, buf);
+ CM_SetField(TheMessage, eReplyTo, buf);
// With that out of the way, let's figure out who this message needs to be sent to.
char *recipients = malloc(strlen(ld->netconf));
/*
* Handles functions related to yellow sticky notes.
*
- * Copyright (c) 2007-2022 by the citadel.org team
+ * Copyright (c) 2007-2023 by the citadel.org team
*
* This program is open source software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3.
syslog(LOG_DEBUG, "UUID of note is: %s\n", uuid);
if (!IsEmptyStr(uuid)) {
- CM_SetField(msg, eExclusiveID, uuid, strlen(uuid));
+ CM_SetField(msg, eExclusiveID, uuid);
CM_CopyField(msg, eMsgSubject, eExclusiveID);
}
if ((v->uid) && (!IsEmptyStr(v->uid))) {
syslog(LOG_DEBUG, "UID of vNote is: %s\n", v->uid);
- CM_SetField(msg, eExclusiveID, v->uid, strlen(v->uid));
+ CM_SetField(msg, eExclusiveID, v->uid);
}
/* Set the message Subject to the vNote Summary */
if ((v->summary) && (!IsEmptyStr(v->summary))) {
- CM_SetField(msg, eMsgSubject, v->summary, strlen(v->summary));
+ CM_SetField(msg, eMsgSubject, v->summary);
if (msg->cm_lengths[eMsgSubject] > 72) {
strcpy(&msg->cm_fields[eMsgSubject][68], "...");
StrBufAppendBuf(TheMessage, TheMessage_Encoded, 0);
FreeStrBuf(&TheMessage_Encoded);
- CM_SetField(r->msg, eMesageText, ChrPtr(TheMessage), StrLength(TheMessage));
+ CM_SetField(r->msg, eMesageText, ChrPtr(TheMessage));
FreeStrBuf(&TheMessage);
if (CM_IsEmpty(r->msg, eAuthor)) {
- CM_SetField(r->msg, eAuthor, HKEY("rss"));
+ CM_SetField(r->msg, eAuthor, "rss");
}
if (CM_IsEmpty(r->msg, eTimestamp)) {
// The VRFY and EXPN commands have been removed from this implementation
// because nobody uses these commands anymore, except for spammers.
//
-// Copyright (c) 1998-2022 by the citadel.org team
+// Copyright (c) 1998-2023 by the citadel.org team
//
// This program is open source software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License version 3.
return;
}
- CM_SetField(msg, eOriginalRoom, HKEY(MAILROOM));
+ CM_SetField(msg, eOriginalRoom, MAILROOM);
if (SMTP->preferred_sender_name != NULL)
- CM_SetField(msg, eAuthor, SKEY(SMTP->preferred_sender_name));
+ CM_SetField(msg, eAuthor, ChrPtr(SMTP->preferred_sender_name));
else
- CM_SetField(msg, eAuthor, CC->user.fullname, strlen(CC->user.fullname));
+ CM_SetField(msg, eAuthor, CC->user.fullname);
if (!validemail) {
if (SMTP->preferred_sender_email != NULL) {
- CM_SetField(msg, erFc822Addr, SKEY(SMTP->preferred_sender_email));
+ CM_SetField(msg, erFc822Addr, ChrPtr(SMTP->preferred_sender_email));
}
else {
- CM_SetField(msg, erFc822Addr, CC->cs_inet_email, strlen(CC->cs_inet_email));
+ CM_SetField(msg, erFc822Addr, CC->cs_inet_email);
}
}
}
// Set the "envelope from" address
- CM_SetField(msg, eMessagePath, SKEY(SMTP->from));
+ CM_SetField(msg, eMessagePath, ChrPtr(SMTP->from));
// Set the "envelope to" address
- CM_SetField(msg, eenVelopeTo, SKEY(SMTP->recipients));
+ CM_SetField(msg, eenVelopeTo, ChrPtr(SMTP->recipients));
// Submit the message into the Citadel system.
valid = validate_recipients(
if (scan_errors > 0) { // We don't want this message!
if (CM_IsEmpty(msg, eErrorMsg)) {
- CM_SetField(msg, eErrorMsg, HKEY("Message rejected by filter"));
+ CM_SetField(msg, eErrorMsg, "Message rejected by filter");
}
StrBufPrintf(SMTP->OneRcpt, "550 %s\r\n", msg->cm_fields[eErrorMsg]);
imsg->cm_magic = CTDLMESSAGE_MAGIC;
imsg->cm_anon_type = MES_NORMAL;
imsg->cm_format_type = FMT_RFC822;
- CM_SetField(imsg, eMsgSubject, HKEY("QMSG"));
- CM_SetField(imsg, eAuthor, HKEY("Citadel"));
- CM_SetField(imsg, eJournal, HKEY("do not journal"));
+ CM_SetField(imsg, eMsgSubject, "QMSG");
+ CM_SetField(imsg, eAuthor, "Citadel");
+ CM_SetField(imsg, eJournal, "do not journal");
CM_SetAsFieldSB(imsg, eMesageText, &SpoolMsg);
last_queue_job_submitted = CtdlSubmitMsg(imsg, NULL, SMTP_SPOOLOUT_ROOM);
CM_Free(imsg);
/*
* Utility functions for the Citadel SMTP implementation
*
- * Copyright (c) 1998-2021 by the citadel.org team
+ * Copyright (c) 1998-2023 by the citadel.org team
*
* This program is open source software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3.
bmsg->cm_magic = CTDLMESSAGE_MAGIC;
bmsg->cm_anon_type = MES_NORMAL;
bmsg->cm_format_type = FMT_RFC822;
- CM_SetField(bmsg, eAuthor, HKEY("Citadel"));
- CM_SetField(bmsg, eOriginalRoom, HKEY(MAILROOM));
- CM_SetField(bmsg, eMsgSubject, HKEY("Delivery Status Notification (Failure)"));
+ CM_SetField(bmsg, eAuthor, "Citadel");
+ CM_SetField(bmsg, eOriginalRoom, MAILROOM);
+ CM_SetField(bmsg, eMsgSubject, "Delivery Status Notification (Failure)");
StrBufAppendBufPlain(BounceMB, HKEY("Content-type: multipart/mixed; boundary=\""), 0);
StrBufAppendBuf(BounceMB, boundary, 0);
StrBufAppendBufPlain(BounceMB, HKEY("\"\r\n"), 0);
// This module allows Citadel to use an external SpamAssassin service to filter incoming messages arriving via SMTP.
//
-// Copyright (c) 1998-2022 by the citadel.org team
+// Copyright (c) 1998-2023 by the citadel.org team
//
// This program is open source software. Use, duplication, or disclosure
// is subject to the terms of the GNU General Public License, version 3.
}
if (is_spam) {
- CM_SetField(msg, eErrorMsg, HKEY("message rejected by spam filter"));
+ CM_SetField(msg, eErrorMsg, "message rejected by spam filter");
}
}
// Make the author of the message the name of the user.
if (!IsEmptyStr(usbuf.fullname)) {
- CM_SetField(msg, eAuthor, usbuf.fullname, strlen(usbuf.fullname));
+ CM_SetField(msg, eAuthor, usbuf.fullname);
}
}
snprintf(buf, sizeof buf, VCARD_EXT_FORMAT, msg->cm_fields[eAuthor], NODENAME);
}
else {
- // If the vCard has no UID, then give it one. */
+ // If the vCard has no UID, then give it one.
generate_uuid(buf);
}
vcard_set_prop(v, "UID", buf, 0);
s = vcard_get_prop(v, "UID", 1, 0, 0);
if (!IsEmptyStr(s)) {
- CM_SetField(msg, eExclusiveID, s, strlen(s));
+ CM_SetField(msg, eExclusiveID, s);
if (CM_IsEmpty(msg, eMsgSubject)) {
CM_CopyField(msg, eMsgSubject, eExclusiveID);
}
s = vcard_get_prop(v, "N", 1, 0, 0);
}
if (!IsEmptyStr(s)) {
- CM_SetField(msg, eMsgSubject, s, strlen(s));
+ CM_SetField(msg, eMsgSubject, s);
}
/* Re-serialize it back into the msg body */
vmsg->cm_magic = CTDLMESSAGE_MAGIC;
vmsg->cm_anon_type = MES_NORMAL;
vmsg->cm_format_type = FMT_RFC822;
- CM_SetField(vmsg, eAuthor, HKEY("Citadel"));
+ CM_SetField(vmsg, eAuthor, "Citadel");
s = vcard_get_prop(v, "UID", 1, 0, 0);
if (!IsEmptyStr(s)) {
- CM_SetField(vmsg, eExclusiveID, s, strlen(s));
+ CM_SetField(vmsg, eExclusiveID, s);
}
ser = vcard_serialize(v);
if (ser != NULL) {
/*
* Server-side module for Wiki rooms. This handles things like version control.
*
- * Copyright (c) 2009-2022 by the citadel.org team
+ * Copyright (c) 2009-2023 by the citadel.org team
*
* This program is open source software. You can redistribute it and/or
* modify it under the terms of the GNU General Public License, version 3.
history_msg->cm_magic = CTDLMESSAGE_MAGIC;
history_msg->cm_anon_type = MES_NORMAL;
history_msg->cm_format_type = FMT_RFC822;
- CM_SetField(history_msg, eAuthor, HKEY("Citadel"));
+ CM_SetField(history_msg, eAuthor, "Citadel");
if (!IsEmptyStr(CC->room.QRname)){
- CM_SetField(history_msg, eRecipient, CC->room.QRname, strlen(CC->room.QRname));
+ CM_SetField(history_msg, eRecipient, CC->room.QRname);
}
- CM_SetField(history_msg, eExclusiveID, history_page, history_page_len);
- CM_SetField(history_msg, eMsgSubject, history_page, history_page_len);
- CM_SetField(history_msg, eSuppressIdx, HKEY("1")); /* suppress full text indexing */
+ CM_SetField(history_msg, eExclusiveID, history_page);
+ CM_SetField(history_msg, eMsgSubject, history_page);
+ CM_SetField(history_msg, eSuppressIdx, "1"); /* suppress full text indexing */
snprintf(boundary, sizeof boundary, "Citadel--Multipart--%04x--%08lx", getpid(), time(NULL));
buf = (char*) malloc(1024);
len = snprintf(buf, 1024,
msgnum = (-1L);
}
else if (!strcasecmp(operation, "fetch")) {
- CM_SetField(msg, eAuthor, HKEY("Citadel"));
+ CM_SetField(msg, eAuthor, "Citadel");
CtdlCreateRoom(wwm, 5, "", 0, 1, 1, VIEW_BBS); /* Not an error if already exists */
msgnum = CtdlSubmitMsg(msg, NULL, wwm); /* Store the revision here */
else if (!strcasecmp(operation, "revert")) {
CM_SetFieldLONG(msg, eTimestamp, time(NULL));
if (!IsEmptyStr(CC->user.fullname)) {
- CM_SetField(msg, eAuthor, CC->user.fullname, strlen(CC->user.fullname));
+ CM_SetField(msg, eAuthor, CC->user.fullname);
}
if (!IsEmptyStr(CC->cs_inet_email)) {
- CM_SetField(msg, erFc822Addr, CC->cs_inet_email, strlen(CC->cs_inet_email));
+ CM_SetField(msg, erFc822Addr, CC->cs_inet_email);
}
if (!IsEmptyStr(CC->room.QRname)) {
- CM_SetField(msg, eOriginalRoom, CC->room.QRname, strlen(CC->room.QRname));
+ CM_SetField(msg, eOriginalRoom, CC->room.QRname);
}
if (!IsEmptyStr(pagename)) {
- CM_SetField(msg, eExclusiveID, pagename, strlen(pagename));
+ CM_SetField(msg, eExclusiveID, pagename);
}
msgnum = CtdlSubmitMsg(msg, NULL, ""); /* Replace the current revision */
}
}
-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);
struct CtdlMessage * CM_Duplicate
(struct CtdlMessage *OrgMsg);
int CM_IsEmpty (struct CtdlMessage *Msg, eMsgField which);
-void CM_SetField (struct CtdlMessage *Msg, eMsgField which, const char *buf, long length);
+void CM_SetField (struct CtdlMessage *Msg, eMsgField which, const char *buf);
void CM_SetFieldLONG (struct CtdlMessage *Msg, eMsgField which, long lvalue);
void CM_CopyField (struct CtdlMessage *Msg, eMsgField WhichToPutTo, eMsgField WhichtToCopy);
void CM_CutFieldAt (struct CtdlMessage *Msg, eMsgField WhichToCut, long maxlen);
cdbfr = cdb_fetch(CDB_MSGLISTS, &roomnum, sizeof(long));
if (cdbfr.ptr == NULL) {
- syslog(LOG_ERR, "room_ops: no msglist for room %ld", roomnum);
*msgs = malloc(sizeof(long)); // dummy buffer
*msgs[0] = 0;
return (0);
serv_gets(buf);
if (buf[0] == '4') {
- bigness = random() % 500;
+ bigness = random() % 10;
strcpy(buf, "");
for (i=0; i<bigness; ++i) {
strcat(buf, words[random() % nwords]);
snprintf(buf, sizeof buf, "DELE %ld", selected_msg);
serv_puts(buf);
serv_gets(buf);
- } while(buf[0] != '2'); // make sure we always delete exactly one message
+ } while ( (buf[0] != '2') && (total_msgs > 0));
}
}