From 2349daec052842b97b628afedf989440013d51fd Mon Sep 17 00:00:00 2001
From: "Rob Swindell (on Windows 11)" <rob@synchro.net>
Date: Sat, 16 Mar 2024 20:02:04 -0700
Subject: [PATCH] Rename SMB message header 'netattr' bit flags to NETMSG_*

This resolves the conflict with MSG_HOLD definition in socket.h on MacOS:
 /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/socket.h

And hey... [NET]MSG_HOLD isn't actually used anywhere? What's up with that.
---
 src/sbbs3/atcodes.cpp | 16 ++++++++--------
 src/sbbs3/chksmb.c    |  2 +-
 src/sbbs3/fixsmb.c    |  4 ++--
 src/sbbs3/getmsg.cpp  | 16 ++++++++--------
 src/sbbs3/mailsrvr.c  | 18 +++++++++---------
 src/sbbs3/netmail.cpp | 16 ++++++++--------
 src/sbbs3/sbbsecho.c  | 14 +++++++-------
 src/smblib/smbdefs.h  | 16 ++++++++--------
 src/smblib/smbstr.c   | 18 ++++++++++--------
 9 files changed, 61 insertions(+), 59 deletions(-)

diff --git a/src/sbbs3/atcodes.cpp b/src/sbbs3/atcodes.cpp
index 5c5ef9b3ca..086cb2fe82 100644
--- a/src/sbbs3/atcodes.cpp
+++ b/src/sbbs3/atcodes.cpp
@@ -2040,14 +2040,14 @@ const char* sbbs_t::atcode(const char* sp, char* str, size_t maxlen, int* pmode,
 	}
 	if(!strcmp(sp,"MSG_NETATTR") && current_msg!=NULL) {
 		safe_snprintf(str,maxlen,"%s%s%s%s%s%s%s%s"
-			,current_msg->hdr.netattr&MSG_LOCAL			? "Local  "			:nulstr
-			,current_msg->hdr.netattr&MSG_INTRANSIT		? "InTransit  "     :nulstr
-			,current_msg->hdr.netattr&MSG_SENT			? "Sent  "			:nulstr
-			,current_msg->hdr.netattr&MSG_KILLSENT		? "KillSent  "      :nulstr
-			,current_msg->hdr.netattr&MSG_HOLD			? "Hold  "			:nulstr
-			,current_msg->hdr.netattr&MSG_CRASH			? "Crash  "			:nulstr
-			,current_msg->hdr.netattr&MSG_IMMEDIATE		? "Immediate  "		:nulstr
-			,current_msg->hdr.netattr&MSG_DIRECT		? "Direct  "		:nulstr
+			,current_msg->hdr.netattr&NETMSG_LOCAL			? "Local  "			:nulstr
+			,current_msg->hdr.netattr&NETMSG_INTRANSIT		? "InTransit  "     :nulstr
+			,current_msg->hdr.netattr&NETMSG_SENT			? "Sent  "			:nulstr
+			,current_msg->hdr.netattr&NETMSG_KILLSENT		? "KillSent  "      :nulstr
+			,current_msg->hdr.netattr&NETMSG_HOLD			? "Hold  "			:nulstr
+			,current_msg->hdr.netattr&NETMSG_CRASH			? "Crash  "			:nulstr
+			,current_msg->hdr.netattr&NETMSG_IMMEDIATE		? "Immediate  "		:nulstr
+			,current_msg->hdr.netattr&NETMSG_DIRECT			? "Direct  "		:nulstr
 			);
 		return(str);
 	}
diff --git a/src/sbbs3/chksmb.c b/src/sbbs3/chksmb.c
index 1853b1aba6..ad338389f4 100644
--- a/src/sbbs3/chksmb.c
+++ b/src/sbbs3/chksmb.c
@@ -640,7 +640,7 @@ int main(int argc, char **argv)
 							,smb_name_crc(msg.to),msg.idx.to);
 					tocrc++;
 				}
-				if(msg.hdr.netattr&MSG_INTRANSIT) {
+				if(msg.hdr.netattr&NETMSG_INTRANSIT) {
 					fprintf(stderr,"%sIn transit\n",beep);
 					msgerr=TRUE;
 					if(extinfo)
diff --git a/src/sbbs3/fixsmb.c b/src/sbbs3/fixsmb.c
index dd3a18e3c6..f537446cf3 100644
--- a/src/sbbs3/fixsmb.c
+++ b/src/sbbs3/fixsmb.c
@@ -270,9 +270,9 @@ int fixsmb(char* sub)
 			msg.idx_offset=n;
 			if(msg.hdr.number > highest)
 				highest = msg.hdr.number;
-			if(msg.hdr.netattr&MSG_INTRANSIT) {
+			if(msg.hdr.netattr&NETMSG_INTRANSIT) {
 				printf("Removing 'in transit' attribute\n");
-				msg.hdr.netattr&=~MSG_INTRANSIT;
+				msg.hdr.netattr&=~NETMSG_INTRANSIT;
 			}
 			if((i=smb_putmsg(&smb,&msg))!=0) {
 				printf("\nsmb_putmsg returned %d: %s\n",i,smb.last_error);
diff --git a/src/sbbs3/getmsg.cpp b/src/sbbs3/getmsg.cpp
index c81fc2864a..063c20d84f 100644
--- a/src/sbbs3/getmsg.cpp
+++ b/src/sbbs3/getmsg.cpp
@@ -113,14 +113,14 @@ void sbbs_t::show_msgattr(const smbmsg_t* msg)
 
 	char netattr_str[64];
 	safe_snprintf(netattr_str, sizeof(netattr_str), "%s%s%s%s%s%s%s%s"
-		,netattr&MSG_LOCAL		? "Local  "			:nulstr
-		,netattr&MSG_INTRANSIT	? "InTransit  "     :nulstr
-		,netattr&MSG_SENT		? "Sent  "			:nulstr
-		,netattr&MSG_KILLSENT	? "KillSent  "      :nulstr
-		,netattr&MSG_HOLD		? "Hold  "			:nulstr
-		,netattr&MSG_CRASH		? "Crash  "			:nulstr
-		,netattr&MSG_IMMEDIATE	? "Immediate  "		:nulstr
-		,netattr&MSG_DIRECT		? "Direct  "		:nulstr
+		,netattr&NETMSG_LOCAL		? "Local  "			:nulstr
+		,netattr&NETMSG_INTRANSIT	? "InTransit  "     :nulstr
+		,netattr&NETMSG_SENT		? "Sent  "			:nulstr
+		,netattr&NETMSG_KILLSENT	? "KillSent  "      :nulstr
+		,netattr&NETMSG_HOLD		? "Hold  "			:nulstr
+		,netattr&NETMSG_CRASH		? "Crash  "			:nulstr
+		,netattr&NETMSG_IMMEDIATE	? "Immediate  "		:nulstr
+		,netattr&NETMSG_DIRECT		? "Direct  "		:nulstr
 		);
 
 	bprintf(text[MsgAttr], attr_str, auxattr_str, netattr_str
diff --git a/src/sbbs3/mailsrvr.c b/src/sbbs3/mailsrvr.c
index 5c4ccd2cea..11abdcf8b3 100644
--- a/src/sbbs3/mailsrvr.c
+++ b/src/sbbs3/mailsrvr.c
@@ -3799,7 +3799,7 @@ static bool smtp_client_thread(smtp_t* smtp)
 				i=savemsg(&scfg, &smb, &msg, &client, server_host_name(), msgbuf, /* remsg: */NULL);
 				if(smb_countattachments(&smb, &msg, msgbuf) > 0)
 					msg.hdr.auxattr |= MSG_MIMEATTACH;
-				msg.hdr.netattr |= MSG_KILLSENT;
+				msg.hdr.netattr |= NETMSG_KILLSENT;
 				free(msgbuf);
 				if(i!=SMB_SUCCESS) {
 					smb_close(&smb);
@@ -3872,7 +3872,7 @@ static bool smtp_client_thread(smtp_t* smtp)
 					smb_hfield_add_str(&newmsg, SMTPRECEIVED, hdrfield, /* insert: */TRUE);
 
 					if(nettype == NET_FIDO) {
-						newmsg.hdr.netattr |= MSG_LOCAL | MSG_KILLSENT;
+						newmsg.hdr.netattr |= NETMSG_LOCAL | NETMSG_KILLSENT;
 						char* tp = strchr(rcpt_name, '@');
 						if(tp != NULL)
 							*tp = 0;
@@ -5168,7 +5168,7 @@ static int remove_msg_intransit(smb_t* smb, smbmsg_t* msg)
 			,i, smb->last_error, msg->idx.number);
 		return(i);
 	}
-	msg->hdr.netattr&=~MSG_INTRANSIT;
+	msg->hdr.netattr&=~NETMSG_INTRANSIT;
 	i=smb_putmsghdr(smb,msg);
 	smb_unlockmsghdr(smb,msg);
 
@@ -5549,7 +5549,7 @@ static void sendmail_thread(void* arg)
 				continue;
 			}
 			if(msg.hdr.attr&MSG_DELETE || msg.to_net.type!=NET_INTERNET || msg.to_net.addr==NULL
-				|| (msg.hdr.netattr&MSG_SENT)) {
+				|| (msg.hdr.netattr&NETMSG_SENT)) {
 				smb_unlockmsghdr(&smb,&msg);
 				continue;
 			}
@@ -5572,13 +5572,13 @@ static void sendmail_thread(void* arg)
 			else
 				safe_snprintf(rcpt_info, sizeof(rcpt_info), "'%s' %s", msg.to, angle_bracket(tmp, sizeof(tmp), (char*)msg.to_net.addr));
 
-			if(!(startup->options&MAIL_OPT_SEND_INTRANSIT) && msg.hdr.netattr&MSG_INTRANSIT) {
+			if(!(startup->options&MAIL_OPT_SEND_INTRANSIT) && msg.hdr.netattr&NETMSG_INTRANSIT) {
 				smb_unlockmsghdr(&smb,&msg);
 				lprintf(LOG_NOTICE,"0000 SEND Message #%u from %s to %s - in transit"
 					,msg.hdr.number, sender_info, rcpt_info);
 				continue;
 			}
-			msg.hdr.netattr|=MSG_INTRANSIT;	/* Prevent another sendmail thread from sending this msg */
+			msg.hdr.netattr|=NETMSG_INTRANSIT;	/* Prevent another sendmail thread from sending this msg */
 			smb_putmsghdr(&smb,&msg);
 			smb_unlockmsghdr(&smb,&msg);
 
@@ -5819,10 +5819,10 @@ static void sendmail_thread(void* arg)
 				,sock, prot, msg.hdr.number, bytes, lines, sender_info, msg.to, toaddr);
 
 			/* Now lets mark this message for deletion without corrupting the index */
-			if((msg.hdr.netattr & MSG_KILLSENT) || msg.from_ext == NULL)
+			if((msg.hdr.netattr & NETMSG_KILLSENT) || msg.from_ext == NULL)
 				msg.hdr.attr|=MSG_DELETE;
-			msg.hdr.netattr|=MSG_SENT;
-			msg.hdr.netattr&=~MSG_INTRANSIT;
+			msg.hdr.netattr|=NETMSG_SENT;
+			msg.hdr.netattr&=~NETMSG_INTRANSIT;
 			if((i=smb_updatemsg(&smb,&msg))!=SMB_SUCCESS)
 				lprintf(LOG_ERR,"%04d %s !ERROR %d (%s) deleting message #%u"
 					,sock, prot, i, smb.last_error, msg.hdr.number);
diff --git a/src/sbbs3/netmail.cpp b/src/sbbs3/netmail.cpp
index eb5f7cb127..9c996c0d72 100644
--- a/src/sbbs3/netmail.cpp
+++ b/src/sbbs3/netmail.cpp
@@ -186,9 +186,9 @@ bool sbbs_t::netmail(const char *into, const char *title, int mode, smb_t* resmb
 	smb_faddrtoa(&cfg.faddr[i], str);
 	bprintf(text[NetMailing], to, smb_faddrtoa(&dest_addr,tmp), from, str);
 
-	if(cfg.netmail_misc&NMAIL_CRASH) msg.hdr.netattr |= MSG_CRASH;
-	if(cfg.netmail_misc&NMAIL_HOLD)  msg.hdr.netattr |= MSG_HOLD;
-	if(cfg.netmail_misc&NMAIL_KILL)  msg.hdr.netattr |= MSG_KILLSENT;
+	if(cfg.netmail_misc&NMAIL_CRASH) msg.hdr.netattr |= NETMSG_CRASH;
+	if(cfg.netmail_misc&NMAIL_HOLD)  msg.hdr.netattr |= NETMSG_HOLD;
+	if(cfg.netmail_misc&NMAIL_KILL)  msg.hdr.netattr |= NETMSG_KILLSENT;
 	if(mode&WM_FILE) msg.hdr.auxattr |= (MSG_FILEATTACH | MSG_KILLFILE); 
 
 	if(remsg != NULL && resmb != NULL && !(mode&WM_QUOTE)) {
@@ -248,14 +248,14 @@ bool sbbs_t::netmail(const char *into, const char *title, int mode, smb_t* resmb
 		} 
 	}
 
-	msg.hdr.netattr |= MSG_LOCAL; 
+	msg.hdr.netattr |= NETMSG_LOCAL; 
 	lprintf(LOG_DEBUG, "NetMail subject: %s", subj);
 	p=subj;
 	if((SYSOP || useron.exempt&FLAG('F'))
 		&& !strnicmp(p,"CR:",3)) {     /* Crash over-ride by sysop */
 		p+=3;				/* skip CR: */
 		SKIP_WHITESPACE(p);
-		msg.hdr.netattr |= MSG_CRASH; 
+		msg.hdr.netattr |= NETMSG_CRASH; 
 	}
 
 	if((SYSOP || useron.exempt&FLAG('F'))
@@ -321,7 +321,7 @@ bool sbbs_t::netmail(const char *into, const char *title, int mode, smb_t* resmb
 	editor_info_to_msg(&msg, editor, charset);
 
 	if(cfg.netmail_misc&NMAIL_DIRECT)
-		msg.hdr.netattr |= MSG_DIRECT;
+		msg.hdr.netattr |= NETMSG_DIRECT;
 
 	smb_t smb;
 	memset(&smb, 0, sizeof(smb));
@@ -1136,9 +1136,9 @@ bool sbbs_t::inetmail(const char *into, const char *subj, int mode, smb_t* resmb
 	msg.hdr.when_written.time=msg.hdr.when_imported.time=time32(NULL);
 	msg.hdr.when_written.zone=msg.hdr.when_imported.zone=sys_timezone(&cfg);
 
-	msg.hdr.netattr |= MSG_LOCAL;
+	msg.hdr.netattr |= NETMSG_LOCAL;
 	if(cfg.inetmail_misc&NMAIL_KILL)
-		msg.hdr.netattr |= MSG_KILLSENT;
+		msg.hdr.netattr |= NETMSG_KILLSENT;
 
 	if(rcpt_count > 1)
 		smb_hfield_str(&msg, RECIPIENTLIST, to_list);
diff --git a/src/sbbs3/sbbsecho.c b/src/sbbs3/sbbsecho.c
index 6cdd111415..cad3d9b1ff 100644
--- a/src/sbbs3/sbbsecho.c
+++ b/src/sbbs3/sbbsecho.c
@@ -1107,7 +1107,7 @@ int create_netmail(const char *to, const smbmsg_t* msg, const char *subject, con
 
 	hdr.attr=(FIDO_PRIVATE|FIDO_KILLSENT|FIDO_LOCAL);
 	if(msg != NULL) {
-		if(msg->hdr.netattr&MSG_CRASH)
+		if(msg->hdr.netattr&NETMSG_CRASH)
 			hdr.attr|=FIDO_CRASH;
 		if(msg->hdr.auxattr&MSG_FILEATTACH)
 			hdr.attr|=FIDO_FILE;
@@ -3260,7 +3260,7 @@ int fmsgtosmsg(char* fbuf, fmsghdr_t* hdr, uint usernumber, uint subnum)
 	if(hdr->attr&FIDO_FILE)
 		msg.hdr.auxattr|=MSG_FILEATTACH;
 	if(hdr->attr&FIDO_INTRANS)
-		msg.hdr.netattr|=MSG_INTRANSIT;
+		msg.hdr.netattr|=NETMSG_INTRANSIT;
 
 	msg.hdr.when_imported.time=now;
 	msg.hdr.when_imported.zone=sys_timezone(&scfg);
@@ -5284,11 +5284,11 @@ int export_netmail(void)
 
 		printf("NetMail msg #%u from %s to %s (%s): "
 			,msg.hdr.number, msg.from, msg.to, smb_faddrtoa(msg.to_net.addr,NULL));
-		if(msg.hdr.netattr&MSG_INTRANSIT) {
+		if(msg.hdr.netattr&NETMSG_INTRANSIT) {
 			printf("in-transit\n");
 			continue;
 		}
-		if((msg.hdr.netattr&MSG_SENT) && !cfg.ignore_netmail_sent_attr) {
+		if((msg.hdr.netattr&NETMSG_SENT) && !cfg.ignore_netmail_sent_attr) {
 			printf("already sent\n");
 			continue;
 		}
@@ -5335,9 +5335,9 @@ int export_netmail(void)
 		create_netmail(msg.to, &msg, msg_subj, txt, /* dest: */*(fidoaddr_t*)msg.to_net.addr, /* src: */NULL);
 		FREE_AND_NULL(txt);
 
-		msg.hdr.netattr |= MSG_SENT;
-		msg.hdr.netattr &= ~MSG_INTRANSIT;
-		if(cfg.delete_netmail || (msg.hdr.netattr&MSG_KILLSENT) || msg.from_ext == NULL) {
+		msg.hdr.netattr |= NETMSG_SENT;
+		msg.hdr.netattr &= ~NETMSG_INTRANSIT;
+		if(cfg.delete_netmail || (msg.hdr.netattr&NETMSG_KILLSENT) || msg.from_ext == NULL) {
 			/* Delete exported netmail */
 			msg.hdr.attr |= MSG_DELETE;
 			if((i = smb_updatemsg(email, &msg)) != SMB_SUCCESS)
diff --git a/src/smblib/smbdefs.h b/src/smblib/smbdefs.h
index e5005805e1..ad6974c104 100644
--- a/src/smblib/smbdefs.h
+++ b/src/smblib/smbdefs.h
@@ -314,14 +314,14 @@
 #define POLL_RESULTS_SHIFT	30
 
 										/* Message network attributes */
-#define MSG_LOCAL			(1<<0)		/* Msg created locally */
-#define MSG_INTRANSIT		(1<<1)		/* Msg is in-transit */
-#define MSG_SENT			(1<<2)		/* Sent to remote */
-#define MSG_KILLSENT		(1<<3)		/* Kill when sent */
-#define MSG_HOLD			(1<<5)		/* Hold for pick-up */
-#define MSG_CRASH			(1<<6)		/* Crash */
-#define MSG_IMMEDIATE		(1<<7)		/* Send Msg now, ignore restrictions */
-#define MSG_DIRECT			(1<<8)		/* Send directly to destination */
+#define NETMSG_LOCAL		(1<<0)		/* Msg created locally */
+#define NETMSG_INTRANSIT	(1<<1)		/* Msg is in-transit */
+#define NETMSG_SENT			(1<<2)		/* Sent to remote */
+#define NETMSG_KILLSENT		(1<<3)		/* Kill when sent */
+#define NETMSG_HOLD			(1<<5)		/* Hold for pick-up */
+#define NETMSG_CRASH		(1<<6)		/* Crash */
+#define NETMSG_IMMEDIATE	(1<<7)		/* Send Msg now, ignore restrictions */
+#define NETMSG_DIRECT		(1<<8)		/* Send directly to destination */
 
 enum smb_net_type {
      NET_NONE				/* Local message */
diff --git a/src/smblib/smbstr.c b/src/smblib/smbstr.c
index 11a721ef5c..21de6dc085 100644
--- a/src/smblib/smbstr.c
+++ b/src/smblib/smbstr.c
@@ -488,17 +488,19 @@ char* smb_auxattrstr(int32_t attr, char* outstr, size_t maxlen)
 	return outstr;
 }
 
+#define NETMSG_ATTR_CHECK(a, f) if(a&NETMSG_##f)	sprintf(str + strlen(str), "%s%s", str[0] == 0 ? "" : ", ", #f);
+
 char* smb_netattrstr(int32_t attr, char* outstr, size_t maxlen)
 {
 	char str[128] = "";
-	MSG_ATTR_CHECK(attr, LOCAL);
-	MSG_ATTR_CHECK(attr, INTRANSIT);
-	MSG_ATTR_CHECK(attr, SENT);
-	MSG_ATTR_CHECK(attr, KILLSENT);
-	MSG_ATTR_CHECK(attr, HOLD);
-	MSG_ATTR_CHECK(attr, CRASH);
-	MSG_ATTR_CHECK(attr, IMMEDIATE);
-	MSG_ATTR_CHECK(attr, DIRECT);
+	NETMSG_ATTR_CHECK(attr, LOCAL);
+	NETMSG_ATTR_CHECK(attr, INTRANSIT);
+	NETMSG_ATTR_CHECK(attr, SENT);
+	NETMSG_ATTR_CHECK(attr, KILLSENT);
+	NETMSG_ATTR_CHECK(attr, HOLD);
+	NETMSG_ATTR_CHECK(attr, CRASH);
+	NETMSG_ATTR_CHECK(attr, IMMEDIATE);
+	NETMSG_ATTR_CHECK(attr, DIRECT);
 	strncpy(outstr, str, maxlen);
 	return outstr;
 }
-- 
GitLab