diff --git a/src/smblib/smblib.h b/src/smblib/smblib.h index cb48302933ffe5fcadaa479f1912c29db9600e43..b5a66bc536d26765765019b45a30822f6535d8cd 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 eb8679c75c91756a678eb38395a1edbd07ce036a..1abc34d42caa75a03bb093df44ed4c6ddba4068d 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); +}