Skip to content
Snippets Groups Projects
Commit e9871cbe authored by Rob Swindell's avatar Rob Swindell :speech_balloon:
Browse files

Rename WM_CRLF to WM_EXPANDLF, add WM_CR_STRIP support

So now you can explicitly create/edit files without CRs, for whenever that's
a problem (e.g. in ssh key files), regardless of which message editor is used.
parent 9ff2721d
Branches
No related tags found
No related merge requests found
Pipeline #8903 passed
......@@ -731,7 +731,8 @@ typedef enum { // Values for xtrn_t.event
#define WM_EDIT (1 << 10) // Editing existing message
#define WM_FORCEFWD (1 << 11) // Force "yes" to ForwardMailQ for email
#define WM_NOFWD (1 << 12) // Don't forward email to netmail
#define WM_CRLF (1 << 13) // Insure CRLF-terminated lines
#define WM_EXPANDLF (1 << 13) // Insure CRLF-terminated lines
#define WM_CR_STRIP (1 << 14) // Insure no carriage-returns in output
// Bits in the mode of loadposts()
#define LP_BYSELF (1 << 0) // Include messages sent by self
......
......@@ -155,11 +155,16 @@ int sbbs_t::process_edited_text(char* buf, FILE* stream, int mode, unsigned* lin
useron_xedit = 0;
for (l = i = 0; buf[l] && i < maxlines; l++) {
if (buf[l] == '\r' && (mode & WM_CR_STRIP))
continue;
if ((uchar)buf[l] == FIDO_SOFT_CR && useron_xedit
&& !(cfg.xedit[useron_xedit - 1]->misc & XTRN_UTF8)) {
i++;
switch (cfg.xedit[useron_xedit - 1]->soft_cr) {
case XEDIT_SOFT_CR_EXPAND:
if (mode & WM_CR_STRIP)
len += fwrite("\n", 1, 1, stream);
else
len += fwrite(crlf, 1, 2, stream);
lastch = '\n';
continue;
......@@ -172,7 +177,7 @@ int sbbs_t::process_edited_text(char* buf, FILE* stream, int mode, unsigned* lin
}
/* Expand LF to CRLF? */
if (buf[l] == LF && (!l || buf[l - 1] != CR) &&
((mode & WM_CRLF) || (useron_xedit && cfg.xedit[useron_xedit - 1]->misc & EXPANDLF))) {
((mode & WM_EXPANDLF) || (useron_xedit && cfg.xedit[useron_xedit - 1]->misc & EXPANDLF))) {
len += fwrite(crlf, 1, 2, stream);
lastch = '\n';
i++;
......@@ -220,6 +225,9 @@ int sbbs_t::process_edited_text(char* buf, FILE* stream, int mode, unsigned* lin
buf[l] = 0;
}
if (lastch != '\n') {
if (mode & WM_CR_STRIP)
len += fwrite("\n", 1, 1, stream);
else
len += fwrite(crlf, 1, 2, stream);
++i;
}
......@@ -737,7 +745,7 @@ bool sbbs_t::writemsg(const char *fname, const char *top, char *subj, int mode,
free(buf);
return false;
}
l = process_edited_text(buf, stream, mode | WM_CRLF, &lines, cfg.level_linespermsg[useron_level]);
l = process_edited_text(buf, stream, mode | WM_EXPANDLF, &lines, cfg.level_linespermsg[useron_level]);
if (editor_details[0] && editor != NULL)
*editor = editor_details;
bool utf8 = !str_is_ascii(buf) && utf8_str_is_valid(buf);
......@@ -1704,7 +1712,7 @@ bool sbbs_t::editmsg(smb_t* smb, smbmsg_t *msg)
msg_tmp_fname(useron.xedit, msgtmp, sizeof(msgtmp));
(void)removecase(msgtmp);
msgtotxt(smb, msg, msgtmp, /* header: */ false, /* mode: */ is_msg ? GETMSGTXT_ALL : GETMSGTXT_BODY_ONLY);
if (!editfile(msgtmp, cfg.level_linespermsg[useron.level], WM_CRLF, msg->to, msg->from, msg->subj, subnum_is_valid(smb->subnum) ? cfg.sub[smb->subnum]->sname : nulstr))
if (!editfile(msgtmp, cfg.level_linespermsg[useron.level], WM_EXPANDLF, msg->to, msg->from, msg->subj, subnum_is_valid(smb->subnum) ? cfg.sub[smb->subnum]->sname : nulstr))
return false;
length = (long)flength(msgtmp);
if (length < 1L)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment