From f827fcc84815c3727aae652d2a60a801b2432768 Mon Sep 17 00:00:00 2001 From: fusion32 Date: Sun, 13 Jul 2025 10:04:53 -0300 Subject: reorganize query functions and impl SET_NOTATION --- src/querymanager.cc | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'src/querymanager.cc') diff --git a/src/querymanager.cc b/src/querymanager.cc index 7d6c830..dddb86f 100644 --- a/src/querymanager.cc +++ b/src/querymanager.cc @@ -129,6 +129,31 @@ bool StringCopy(char *Dest, int DestCapacity, const char *Src){ return StringCopyN(Dest, DestCapacity, Src, SrcLength); } +bool ParseIPAddress(const char *String, int *OutAddr){ + int Addr[4]; + if(sscanf(String, "%d.%d.%d.%d", &Addr[0], &Addr[1], &Addr[2], &Addr[3]) != 4){ + LOG_ERR("Invalid IP Address format \"%s\"", String); + return false; + } + + if(Addr[0] < 0 || Addr[0] > 0xFF + || Addr[1] < 0 || Addr[1] > 0xFF + || Addr[2] < 0 || Addr[2] > 0xFF + || Addr[3] < 0 || Addr[3] > 0xFF){ + LOG_ERR("Invalid IP Address \"%s\"", String); + return false; + } + + if(OutAddr){ + *OutAddr = ((int)Addr[0] << 24) + | ((int)Addr[1] << 16) + | ((int)Addr[2] << 8) + | ((int)Addr[3] << 0); + } + + return true; +} + bool ReadBooleanConfig(bool *Dest, const char *Val){ ASSERT(Dest && Val); *Dest = StringEqCI(Val, "true"); -- cgit v1.2.3