From 29beba34ee9df67504497e644a6856bc57879103 Mon Sep 17 00:00:00 2001
From: rswindell <>
Date: Thu, 21 Feb 2008 09:53:04 +0000
Subject: [PATCH] Changed some of the header field type names returned from
 smb_hfieldtype() to be RFC-822 (or RFC-977) compliant. Added smb_netaddrstr()
 for a thread-safe version of smb_netaddr().

---
 src/smblib/smblib.h |  3 +-
 src/smblib/smbstr.c | 69 +++++++++++++++++++++++++--------------------
 2 files changed, 41 insertions(+), 31 deletions(-)

diff --git a/src/smblib/smblib.h b/src/smblib/smblib.h
index f5336b8147..083032f23d 100644
--- a/src/smblib/smblib.h
+++ b/src/smblib/smblib.h
@@ -8,7 +8,7 @@
  * @format.tab-size 4		(Plain Text/Source Code File Header)			*
  * @format.use-tabs true	(see http://www.synchro.net/ptsc_hdr.html)		*
  *																			*
- * Copyright 2005 Rob Swindell - http://www.synchro.net/copyright.html		*
+ * Copyright 2008 Rob Swindell - http://www.synchro.net/copyright.html		*
  *																			*
  * This library is free software; you can redistribute it and/or			*
  * modify it under the terms of the GNU Lesser General Public License		*
@@ -210,6 +210,7 @@ SMBEXPORT ushort	SMBCALL smb_hfieldtypelookup(const char*);
 SMBEXPORT char*		SMBCALL smb_dfieldtype(ushort type);
 SMBEXPORT char*		SMBCALL smb_faddrtoa(fidoaddr_t* addr, char* outstr);
 SMBEXPORT char*		SMBCALL smb_netaddr(net_t* net);
+SMBEXPORT char*		SMBCALL smb_netaddrstr(net_t* net, char* fidoaddr_buf);
 SMBEXPORT ushort	SMBCALL smb_netaddr_type(const char* str);
 SMBEXPORT char*		SMBCALL smb_zonestr(short zone, char* outstr);
 SMBEXPORT char*		SMBCALL smb_hashsource(smbmsg_t* msg, int source);
diff --git a/src/smblib/smbstr.c b/src/smblib/smbstr.c
index c1c82034de..091355a799 100644
--- a/src/smblib/smbstr.c
+++ b/src/smblib/smbstr.c
@@ -8,7 +8,7 @@
  * @format.tab-size 4		(Plain Text/Source Code File Header)			*
  * @format.use-tabs true	(see http://www.synchro.net/ptsc_hdr.html)		*
  *																			*
- * Copyright 2006 Rob Swindell - http://www.synchro.net/copyright.html		*
+ * Copyright 2008 Rob Swindell - http://www.synchro.net/copyright.html		*
  *																			*
  * This library is free software; you can redistribute it and/or			*
  * modify it under the terms of the GNU Lesser General Public License		*
@@ -45,57 +45,58 @@ char* SMBCALL smb_hfieldtype(ushort type)
 	static char str[8];
 
 	switch(type) {
-		case SENDER:			return("Sender");
+		case SENDER:			return("Sender");				/* RFC-compliant */
 		case SENDERAGENT:		return("SenderAgent");
 		case SENDERNETTYPE:		return("SenderNetType");
 		case SENDERNETADDR:		return("SenderNetAddr");
 		case SENDEREXT:			return("SenderExt");
-		case SENDERORG:			return("SenderOrg");
+		case SENDERORG:			return("Organization");			/* RFC-compliant */
 		case SENDERIPADDR:		return("SenderIpAddr");
 		case SENDERHOSTNAME:	return("SenderHostName");
 		case SENDERPROTOCOL:	return("SenderProtocol");
 		case SENDERPORT:		return("SenderPort");
 
-		case REPLYTO:			return("ReplyTo");
-		case REPLYTOAGENT:		return("ReplyToAgent");
-		case REPLYTONETTYPE:	return("ReplyToNetType");
-		case REPLYTONETADDR:	return("ReplyToNetAddr");
-		case REPLYTOEXT:		return("ReplyToExt");
+		case REPLYTO:			return("Reply-To");				/* RFC-compliant */
+		case REPLYTOAGENT:		return("Reply-ToAgent");
+		case REPLYTONETTYPE:	return("Reply-ToNetType");
+		case REPLYTONETADDR:	return("Reply-ToNetAddr");
+		case REPLYTOEXT:		return("Reply-ToExt");
 								
-		case RECIPIENT:			return("Recipient");
-		case RECIPIENTAGENT:	return("RecipientAgent");
-		case RECIPIENTNETTYPE:	return("RecipientNetType");
-		case RECIPIENTNETADDR:	return("RecipientNetAddr");
-		case RECIPIENTEXT:		return("RecipientExt");
+		case RECIPIENT:			return("To");					/* RFC-compliant */
+		case RECIPIENTAGENT:	return("ToAgent");
+		case RECIPIENTNETTYPE:	return("ToNetType");
+		case RECIPIENTNETADDR:	return("ToNetAddr");
+		case RECIPIENTEXT:		return("ToExt");
 
-		case SUBJECT:			return("Subject");
+		case SUBJECT:			return("Subject");				/* RFC-compliant */
 		case SMB_SUMMARY:		return("Summary");
-		case SMB_COMMENT:		return("Comment");
-		case SMB_CARBONCOPY:	return("CarbonCopy");
+		case SMB_COMMENT:		return("Comment");				/* RFC-compliant */
+		case SMB_CARBONCOPY:	return("CC");					/* RFC-compliant */
 		case SMB_GROUP:			return("Group");
 		case SMB_EXPIRATION:	return("Expiration");
 		case SMB_PRIORITY:		return("Priority");
 		case SMB_COST:			return("Cost");
 
-		case FIDOCTRL:			return("FidoCtrl");
-		case FIDOAREA:			return("FidoArea");
-		case FIDOSEENBY:		return("FidoSeenBy");
-		case FIDOPATH:			return("FidoPath");
-		case FIDOMSGID:			return("FidoMsgID");
-		case FIDOREPLYID:		return("FidoReplyID");
-		case FIDOPID:			return("FidoPID");
-		case FIDOFLAGS:			return("FidoFlags");
-		case FIDOTID:			return("FidoTID");
+		/* All X-FTN-* are RFC-compliant */
+		case FIDOCTRL:			return("X-FTN-Kludge");
+		case FIDOAREA:			return("X-FTN-AREA");
+		case FIDOSEENBY:		return("X-FTN-SEEN-BY");
+		case FIDOPATH:			return("X-FTN-PATH");
+		case FIDOMSGID:			return("X-FTN-MSGID");
+		case FIDOREPLYID:		return("X-FTN-REPLY");
+		case FIDOPID:			return("X-FTN-PID");
+		case FIDOFLAGS:			return("X-FTN-Flags");
+		case FIDOTID:			return("X-FTN-TID");
 
 		case RFC822HEADER:		return("RFC822Header");
-		case RFC822MSGID:		return("RFC822MsgID");
-		case RFC822REPLYID:		return("RFC822ReplyID");
+		case RFC822MSGID:		return("Message-ID");			/* RFC-compliant */
+		case RFC822REPLYID:		return("In-Reply-To");			/* RFC-compliant */
 		case RFC822TO:			return("RFC822To");
 		case RFC822FROM:		return("RFC822From");
 		case RFC822REPLYTO:		return("RFC822ReplyTo");
 
-		case USENETPATH:		return("UsenetPath");
-		case USENETNEWSGROUPS:	return("UsenetNewsgroups");
+		case USENETPATH:		return("Path");					/* RFC-compliant */
+		case USENETNEWSGROUPS:	return("Newsgroups");			/* RFC-compliant */
 
 		case SMTPCOMMAND:		return("SMTPCommand");
 		case SMTPREVERSEPATH:	return("SMTPReversePath");
@@ -293,9 +294,17 @@ fidoaddr_t SMBCALL smb_atofaddr(const fidoaddr_t* sys_addr, const char *str)
 /* Returns ASCIIZ representation of network address (net_t)					*/
 /****************************************************************************/
 char* SMBCALL smb_netaddr(net_t* net)
+{
+	return(smb_netaddrstr(net, NULL));
+}
+
+/****************************************************************************/
+/* Copies ASCIIZ representation of network address (net_t) into buf			*/
+/****************************************************************************/
+char* SMBCALL smb_netaddrstr(net_t* net, char* fidoaddr_buf)
 {
 	if(net->type==NET_FIDO)
-		return(smb_faddrtoa((fidoaddr_t*)net->addr,NULL));
+		return(smb_faddrtoa((fidoaddr_t*)net->addr,fidoaddr_buf));
 	return(net->addr);
 }
 
-- 
GitLab