feat: add smartcmd dedicated server
major bug: when connecting to the server a second time, it gets softlocked and keeps repeating ticking connection A\n in debug logs until it times out.
This commit is contained in:
146 files changed
+32837
-272
No files matched your search
@@ -0,0 +1,39 @@
|
||||
#pragma once
|
||||
|
||||
#include <cerrno>
|
||||
#include <cstdlib>
|
||||
#include <limits>
|
||||
#include <string>
|
||||
|
||||
namespace ServerRuntime
|
||||
{
|
||||
namespace CommandParsing
|
||||
{
|
||||
inline bool TryParseInt(const std::string &text, int *outValue)
|
||||
{
|
||||
if (outValue == nullptr || text.empty())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
char *end = nullptr;
|
||||
errno = 0;
|
||||
const long parsedValue = std::strtol(text.c_str(), &end, 10);
|
||||
if (end == text.c_str() || *end != '\0')
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (errno == ERANGE)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (parsedValue < (std::numeric_limits<int>::min)() || parsedValue > (std::numeric_limits<int>::max)())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
*outValue = static_cast<int>(parsedValue);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user