From 2e65636deaee0deea8a41b248f284ce329d6e9b0 Mon Sep 17 00:00:00 2001
From: rswindell <>
Date: Fri, 15 Oct 2004 09:05:13 +0000
Subject: [PATCH] Created smb_netaddr_type() to convert an e-mail address
 string (e.g. "user@addr") into an SMB net_type (or NET_NONE for local
 e-mail).

---
 src/smblib/smblib.h |  1 +
 src/smblib/smbstr.c | 27 +++++++++++++++++++++++++++
 2 files changed, 28 insertions(+)

diff --git a/src/smblib/smblib.h b/src/smblib/smblib.h
index cb48302933..b5a66bc536 100644
--- a/src/smblib/smblib.h
+++ b/src/smblib/smblib.h
@@ -205,6 +205,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 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);
 SMBEXPORT char*		SMBCALL smb_hashsourcetype(uchar type);
diff --git a/src/smblib/smbstr.c b/src/smblib/smbstr.c
index eb8679c75c..1abc34d42c 100644
--- a/src/smblib/smbstr.c
+++ b/src/smblib/smbstr.c
@@ -261,3 +261,30 @@ char* SMBCALL smb_netaddr(net_t* net)
 		return(smb_faddrtoa((fidoaddr_t*)net->addr,NULL));
 	return(net->addr);
 }
+
+/****************************************************************************/
+/* Returns net_type for passing e-mail address (i.e. "user@addr")			*/
+/****************************************************************************/
+ushort SMBCALL smb_netaddr_type(const char* str)
+{
+	char*	p;
+	char*	tp;
+
+	if((p=strchr(str,'@'))==NULL)
+		return(NET_NONE);
+
+	p++;
+	if(isalpha(*p) && strchr(p,'.')==NULL)
+		return(NET_QWK);
+
+	for(tp=p;*tp;tp++) {
+		if(!isdigit(*tp) && *tp!=':' && *tp!='/' && *tp!='.')
+			break;
+	}
+	if(isdigit(*p) && *tp)
+		return(NET_FIDO);
+	if(isalnum(*p))
+		return(NET_INTERNET);
+
+	return(NET_UNKNOWN);
+}
-- 
GitLab