This commit is contained in:
Timerix22 2024-01-04 00:58:10 +06:00
parent 918588e0e4
commit 95a9fcfd5e
2 changed files with 6 additions and 3 deletions

View File

@ -71,13 +71,16 @@ Maybe knIPV4Endpoint_fromStr(char* endStr, knIPV4Endpoint* endVal){
i32 sep_i = cptr_seekChar(endStr, ':', 0, 48);
if(sep_i < 7)
safethrow(cptr_concat("can't find ':' in '", endStr, "'"), ;);
char* portBegin = endStr+sep_i+1;
const char* portBegin = endStr+sep_i+1;
u64 port = knPort_INVALID;
if(sscanf(portBegin, IFWIN("%llu", "%lu"), &port)!=1)
safethrow(cptr_concat("can't recognise port number in '", portBegin, "'"), ;)
knIPV4Address addr = knIPV4Address_INVALID;
try(knIPV4Address_fromStr(endStr, &addr), _m865, ;);
char* addrStr = cptr_copy(endStr);
addrStr[sep_i] = 0;
try(knIPV4Address_fromStr(addrStr, &addr), _m865, ;);
free(addrStr);
*endVal = knIPV4Endpoint_create(addr, port);
return MaybeNull;

View File

@ -23,7 +23,7 @@ kt_declare(knIPV4Address);
#define knIPV4Address_ANY knIPV4Address_fromBytes(0,0,0,0)
#define knIPV4Address_LOOPBACK knIPV4Address_fromBytes(127,0,0,1)
#define knIPV4Address_INVALID knIPV4Address_fromBytes(255,255,255,255)
#define knIPV4Address_isINVALID(ADDR) (ADDR.UintBigEndian == ~0)
#define knIPV4Address_isINVALID(ADDR) (ADDR.UintBigEndian == (u32)~0)
///@return Maybe<null>
Maybe knIPV4Address_fromStr(char* addrStr, knIPV4Address* addrPtr);