summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/convto.h11
-rw-r--r--src/base.cpp2
-rw-r--r--src/channels.cpp2
-rw-r--r--src/coremods/core_channel/cmd_invite.cpp4
-rw-r--r--src/coremods/core_channel/invite.cpp2
-rw-r--r--src/modules/m_callerid.cpp2
-rw-r--r--src/modules/m_chanhistory.cpp2
-rw-r--r--src/modules/m_delaymsg.cpp6
-rw-r--r--src/modules/m_filter.cpp2
-rw-r--r--src/modules/m_joinflood.cpp4
-rw-r--r--src/modules/m_jumpserver.cpp4
-rw-r--r--src/modules/m_kicknorejoin.cpp4
-rw-r--r--src/modules/m_messageflood.cpp4
-rw-r--r--src/modules/m_nickflood.cpp4
-rw-r--r--src/modules/m_pbkdf2.cpp2
-rw-r--r--src/modules/m_repeat.cpp6
-rw-r--r--src/modules/m_spanningtree/addline.cpp4
-rw-r--r--src/modules/m_spanningtree/away.cpp2
-rw-r--r--src/modules/m_spanningtree/capab.cpp2
-rw-r--r--src/modules/m_spanningtree/compat.cpp2
-rw-r--r--src/modules/m_spanningtree/main.h4
-rw-r--r--src/modules/m_spanningtree/num.cpp2
-rw-r--r--src/modules/m_spanningtree/servercommand.cpp2
-rw-r--r--src/modules/m_spanningtree/svsnick.cpp4
-rw-r--r--src/modules/m_spanningtree/treesocket.h2
-rw-r--r--src/modules/m_spanningtree/treesocket2.cpp2
-rw-r--r--src/modules/m_topiclock.cpp2
-rw-r--r--src/socket.cpp2
28 files changed, 41 insertions, 50 deletions
diff --git a/include/convto.h b/include/convto.h
index c306283fc..3332580ed 100644
--- a/include/convto.h
+++ b/include/convto.h
@@ -89,17 +89,8 @@ template <class T> inline std::string ConvToStr(const T& in)
return tmp.str();
}
-/** Template function to convert any input type to any other type
- * (usually an integer or numeric type)
+/** Template function to convert a std::string to any numeric type.
*/
-template<typename T> inline long ConvToInt(const T& in)
-{
- std::stringstream tmp;
- if (!(tmp << in))
- return 0;
- return atol(tmp.str().c_str());
-}
-
template<typename TOut> inline TOut ConvToNum(const std::string& in)
{
TOut ret;
diff --git a/src/base.cpp b/src/base.cpp
index f698bad2e..8749aee8e 100644
--- a/src/base.cpp
+++ b/src/base.cpp
@@ -278,7 +278,7 @@ std::string LocalIntExt::serialize(SerializeFormat format, const Extensible* con
void LocalIntExt::unserialize(SerializeFormat format, Extensible* container, const std::string& value)
{
if (format != FORMAT_NETWORK)
- set(container, ConvToInt(value));
+ set(container, ConvToNum<intptr_t>(value));
}
intptr_t LocalIntExt::get(const Extensible* container) const
diff --git a/src/channels.cpp b/src/channels.cpp
index e25500892..e5fd7265e 100644
--- a/src/channels.cpp
+++ b/src/channels.cpp
@@ -178,7 +178,7 @@ Channel* Channel::JoinUser(LocalUser* user, std::string cname, bool override, co
unsigned int maxchans = user->GetClass()->maxchans;
if (user->IsOper())
{
- unsigned int opermaxchans = ConvToInt(user->oper->getConfig("maxchans"));
+ unsigned int opermaxchans = ConvToNum<unsigned int>(user->oper->getConfig("maxchans"));
// If not set, use 2.0's <channels:opers>, if that's not set either, use limit from CC
if (!opermaxchans && user->HasPrivPermission("channels/high-join-limit"))
opermaxchans = ServerInstance->Config->OperMaxChans;
diff --git a/src/coremods/core_channel/cmd_invite.cpp b/src/coremods/core_channel/cmd_invite.cpp
index 1b480aa20..ebb95f1b4 100644
--- a/src/coremods/core_channel/cmd_invite.cpp
+++ b/src/coremods/core_channel/cmd_invite.cpp
@@ -53,7 +53,7 @@ CmdResult CommandInvite::Handle(User* user, const Params& parameters)
if (IS_LOCAL(user))
timeout = ServerInstance->Time() + InspIRCd::Duration(parameters[2]);
else if (parameters.size() > 3)
- timeout = ConvToInt(parameters[3]);
+ timeout = ConvToNum<time_t>(parameters[3]);
}
if (!c)
@@ -75,7 +75,7 @@ CmdResult CommandInvite::Handle(User* user, const Params& parameters)
return CMD_INVALID;
// Drop the invite if our channel TS is lower
- time_t RemoteTS = ConvToInt(parameters[2]);
+ time_t RemoteTS = ConvToNum<time_t>(parameters[2]);
if (c->age < RemoteTS)
return CMD_FAILURE;
}
diff --git a/src/coremods/core_channel/invite.cpp b/src/coremods/core_channel/invite.cpp
index 7ac662edc..51fb638f8 100644
--- a/src/coremods/core_channel/invite.cpp
+++ b/src/coremods/core_channel/invite.cpp
@@ -162,7 +162,7 @@ void Invite::APIImpl::Unserialize(LocalUser* user, const std::string& value)
{
Channel* chan = ServerInstance->FindChan(channame);
if (chan)
- Create(user, chan, ConvToInt(exptime));
+ Create(user, chan, ConvToNum<time_t>(exptime));
}
}
diff --git a/src/modules/m_callerid.cpp b/src/modules/m_callerid.cpp
index 40cbc3506..3810fcf32 100644
--- a/src/modules/m_callerid.cpp
+++ b/src/modules/m_callerid.cpp
@@ -99,7 +99,7 @@ struct CallerIDExtInfo : public ExtensionItem
irc::commasepstream s(value);
std::string tok;
if (s.GetToken(tok))
- dat->lastnotify = ConvToInt(tok);
+ dat->lastnotify = ConvToNum<time_t>(tok);
while (s.GetToken(tok))
{
diff --git a/src/modules/m_chanhistory.cpp b/src/modules/m_chanhistory.cpp
index 08f4291c9..47e27172c 100644
--- a/src/modules/m_chanhistory.cpp
+++ b/src/modules/m_chanhistory.cpp
@@ -71,7 +71,7 @@ class HistoryMode : public ParamMode<HistoryMode, SimpleExtItem<HistoryList> >
return MODEACTION_DENY;
}
- unsigned int len = ConvToInt(parameter.substr(0, colon));
+ unsigned int len = ConvToNum<unsigned int>(parameter.substr(0, colon));
unsigned int time = InspIRCd::Duration(duration);
if (len == 0 || (len > maxlines && IS_LOCAL(source)))
{
diff --git a/src/modules/m_delaymsg.cpp b/src/modules/m_delaymsg.cpp
index b39fb1d0a..9015e7bf9 100644
--- a/src/modules/m_delaymsg.cpp
+++ b/src/modules/m_delaymsg.cpp
@@ -38,7 +38,7 @@ class DelayMsgMode : public ParamMode<DelayMsgMode, LocalIntExt>
ModeAction OnSet(User* source, Channel* chan, std::string& parameter) CXX11_OVERRIDE;
void OnUnset(User* source, Channel* chan);
- void SerializeParam(Channel* chan, int n, std::string& out)
+ void SerializeParam(Channel* chan, intptr_t n, std::string& out)
{
out += ConvToStr(n);
}
@@ -62,8 +62,8 @@ class ModuleDelayMsg : public Module
ModeAction DelayMsgMode::OnSet(User* source, Channel* chan, std::string& parameter)
{
// Setting a new limit, sanity check
- unsigned int limit = ConvToInt(parameter);
- if (limit == 0)
+ intptr_t limit = ConvToNum<intptr_t>(parameter);
+ if (limit <= 0)
limit = 1;
ext.set(chan, limit);
diff --git a/src/modules/m_filter.cpp b/src/modules/m_filter.cpp
index 584bfef00..cfba6c067 100644
--- a/src/modules/m_filter.cpp
+++ b/src/modules/m_filter.cpp
@@ -637,7 +637,7 @@ FilterResult ModuleFilter::DecodeFilter(const std::string &data)
std::string duration;
tokens.GetMiddle(duration);
- res.duration = ConvToInt(duration);
+ res.duration = ConvToNum<long>(duration);
tokens.GetTrailing(res.reason);
diff --git a/src/modules/m_joinflood.cpp b/src/modules/m_joinflood.cpp
index aaf266216..cc62eb13b 100644
--- a/src/modules/m_joinflood.cpp
+++ b/src/modules/m_joinflood.cpp
@@ -109,8 +109,8 @@ class JoinFlood : public ParamMode<JoinFlood, SimpleExtItem<joinfloodsettings> >
}
/* Set up the flood parameters for this channel */
- unsigned int njoins = ConvToInt(parameter.substr(0, colon));
- unsigned int nsecs = ConvToInt(parameter.substr(colon+1));
+ unsigned int njoins = ConvToNum<unsigned int>(parameter.substr(0, colon));
+ unsigned int nsecs = ConvToNum<unsigned int>(parameter.substr(colon+1));
if ((njoins<1) || (nsecs<1))
{
source->WriteNumeric(Numerics::InvalidModeParameter(channel, this, parameter));
diff --git a/src/modules/m_jumpserver.cpp b/src/modules/m_jumpserver.cpp
index fc13a831c..02950e0e9 100644
--- a/src/modules/m_jumpserver.cpp
+++ b/src/modules/m_jumpserver.cpp
@@ -103,8 +103,8 @@ class CommandJumpserver : public Command
}
size_t delimpos = parameters[1].find(':');
- port = ConvToInt(parameters[1].substr(0, delimpos ? delimpos : std::string::npos));
- sslport = (delimpos == std::string::npos ? 0 : ConvToInt(parameters[1].substr(delimpos + 1)));
+ port = ConvToNum<int>(parameters[1].substr(0, delimpos ? delimpos : std::string::npos));
+ sslport = (delimpos == std::string::npos ? 0 : ConvToNum<int>(parameters[1].substr(delimpos + 1)));
if (parameters[1].find_first_not_of("0123456789:") != std::string::npos
|| parameters[1].rfind(':') != delimpos
diff --git a/src/modules/m_kicknorejoin.cpp b/src/modules/m_kicknorejoin.cpp
index 4d911e78b..70f3578b2 100644
--- a/src/modules/m_kicknorejoin.cpp
+++ b/src/modules/m_kicknorejoin.cpp
@@ -101,14 +101,14 @@ class KickRejoin : public ParamMode<KickRejoin, SimpleExtItem<KickRejoinData> >
ModeAction OnSet(User* source, Channel* channel, std::string& parameter) CXX11_OVERRIDE
{
- int v = ConvToInt(parameter);
+ unsigned int v = ConvToNum<unsigned int>(parameter);
if (v <= 0)
{
source->WriteNumeric(Numerics::InvalidModeParameter(channel, this, parameter));
return MODEACTION_DENY;
}
- if ((IS_LOCAL(source) && ((unsigned int)v > max)))
+ if (IS_LOCAL(source) && v > max)
v = max;
ext.set(channel, new KickRejoinData(v));
diff --git a/src/modules/m_messageflood.cpp b/src/modules/m_messageflood.cpp
index 0707e6ae4..af976afd5 100644
--- a/src/modules/m_messageflood.cpp
+++ b/src/modules/m_messageflood.cpp
@@ -83,8 +83,8 @@ class MsgFlood : public ParamMode<MsgFlood, SimpleExtItem<floodsettings> >
/* Set up the flood parameters for this channel */
bool ban = (parameter[0] == '*');
- unsigned int nlines = ConvToInt(parameter.substr(ban ? 1 : 0, ban ? colon-1 : colon));
- unsigned int nsecs = ConvToInt(parameter.substr(colon+1));
+ unsigned int nlines = ConvToNum<unsigned int>(parameter.substr(ban ? 1 : 0, ban ? colon-1 : colon));
+ unsigned int nsecs = ConvToNum<unsigned int>(parameter.substr(colon+1));
if ((nlines<2) || (nsecs<1))
{
diff --git a/src/modules/m_nickflood.cpp b/src/modules/m_nickflood.cpp
index 50e2b3d93..ce8b364e4 100644
--- a/src/modules/m_nickflood.cpp
+++ b/src/modules/m_nickflood.cpp
@@ -100,8 +100,8 @@ class NickFlood : public ParamMode<NickFlood, SimpleExtItem<nickfloodsettings> >
}
/* Set up the flood parameters for this channel */
- unsigned int nnicks = ConvToInt(parameter.substr(0, colon));
- unsigned int nsecs = ConvToInt(parameter.substr(colon+1));
+ unsigned int nnicks = ConvToNum<unsigned int>(parameter.substr(0, colon));
+ unsigned int nsecs = ConvToNum<unsigned int>(parameter.substr(colon+1));
if ((nnicks<1) || (nsecs<1))
{
diff --git a/src/modules/m_pbkdf2.cpp b/src/modules/m_pbkdf2.cpp
index 89bc39ef4..86530c5dd 100644
--- a/src/modules/m_pbkdf2.cpp
+++ b/src/modules/m_pbkdf2.cpp
@@ -43,7 +43,7 @@ class PBKDF2Hash
std::string tok;
ss.GetToken(tok);
- this->iterations = ConvToInt(tok);
+ this->iterations = ConvToNum<unsigned int>(tok);
ss.GetToken(tok);
this->hash = Base64ToBin(tok);
diff --git a/src/modules/m_repeat.cpp b/src/modules/m_repeat.cpp
index ef62e9ab1..af69f6be1 100644
--- a/src/modules/m_repeat.cpp
+++ b/src/modules/m_repeat.cpp
@@ -274,7 +274,7 @@ class RepeatMode : public ParamMode<RepeatMode, SimpleExtItem<ChannelSettings> >
else
settings.Action = ChannelSettings::ACT_KICK;
- if ((settings.Lines = ConvToInt(item)) == 0)
+ if ((settings.Lines = ConvToNum<unsigned int>(item)) == 0)
return false;
if ((!stream.GetToken(item)) || ((settings.Seconds = InspIRCd::Duration(item)) == 0))
@@ -286,13 +286,13 @@ class RepeatMode : public ParamMode<RepeatMode, SimpleExtItem<ChannelSettings> >
if (stream.GetToken(item))
{
// There is a diff parameter, see if it's valid (> 0)
- if ((settings.Diff = ConvToInt(item)) == 0)
+ if ((settings.Diff = ConvToNum<unsigned int>(item)) == 0)
return false;
if (stream.GetToken(item))
{
// There is a backlog parameter, see if it's valid
- if ((settings.Backlog = ConvToInt(item)) == 0)
+ if ((settings.Backlog = ConvToNum<unsigned int>(item)) == 0)
return false;
// If there are still tokens, then it's invalid because we allow only 4
diff --git a/src/modules/m_spanningtree/addline.cpp b/src/modules/m_spanningtree/addline.cpp
index 00ef5b8d1..623942d95 100644
--- a/src/modules/m_spanningtree/addline.cpp
+++ b/src/modules/m_spanningtree/addline.cpp
@@ -38,14 +38,14 @@ CmdResult CommandAddLine::Handle(User* usr, Params& params)
XLine* xl = NULL;
try
{
- xl = xlf->Generate(ServerInstance->Time(), ConvToInt(params[4]), params[2], params[5], params[1]);
+ xl = xlf->Generate(ServerInstance->Time(), ConvToNum<long>(params[4]), params[2], params[5], params[1]);
}
catch (ModuleException &e)
{
ServerInstance->SNO->WriteToSnoMask('x',"Unable to ADDLINE type %s from %s: %s", params[0].c_str(), setter.c_str(), e.GetReason().c_str());
return CMD_FAILURE;
}
- xl->SetCreateTime(ConvToInt(params[3]));
+ xl->SetCreateTime(ConvToNum<time_t>(params[3]));
if (ServerInstance->XLines->AddLine(xl, NULL))
{
if (xl->duration)
diff --git a/src/modules/m_spanningtree/away.cpp b/src/modules/m_spanningtree/away.cpp
index 282f52a35..13972589b 100644
--- a/src/modules/m_spanningtree/away.cpp
+++ b/src/modules/m_spanningtree/away.cpp
@@ -28,7 +28,7 @@ CmdResult CommandAway::HandleRemote(::RemoteUser* u, Params& params)
if (!params.empty())
{
if (params.size() > 1)
- u->awaytime = ConvToInt(params[0]);
+ u->awaytime = ConvToNum<time_t>(params[0]);
else
u->awaytime = ServerInstance->Time();
diff --git a/src/modules/m_spanningtree/capab.cpp b/src/modules/m_spanningtree/capab.cpp
index 5daea5202..c29330516 100644
--- a/src/modules/m_spanningtree/capab.cpp
+++ b/src/modules/m_spanningtree/capab.cpp
@@ -249,7 +249,7 @@ bool TreeSocket::Capab(const CommandBase::Params& params)
capab->OptModuleList.clear();
capab->CapKeys.clear();
if (params.size() > 1)
- proto_version = ConvToInt(params[1]);
+ proto_version = ConvToNum<unsigned int>(params[1]);
if (proto_version < MinCompatProtocol)
{
diff --git a/src/modules/m_spanningtree/compat.cpp b/src/modules/m_spanningtree/compat.cpp
index b2967af3b..8e5361b16 100644
--- a/src/modules/m_spanningtree/compat.cpp
+++ b/src/modules/m_spanningtree/compat.cpp
@@ -521,7 +521,7 @@ bool TreeSocket::PreProcessOldProtocolMessage(User*& who, std::string& cmd, Comm
// See if it's a numeric being sent to the target via PUSH
unsigned int numeric_number = 0;
if (token.length() == 3)
- numeric_number = ConvToInt(token);
+ numeric_number = ConvToNum<unsigned int>(token);
if ((numeric_number > 0) && (numeric_number < 1000))
{
diff --git a/src/modules/m_spanningtree/main.h b/src/modules/m_spanningtree/main.h
index d619c43bc..4f8875a02 100644
--- a/src/modules/m_spanningtree/main.h
+++ b/src/modules/m_spanningtree/main.h
@@ -40,8 +40,8 @@
* Failure to document your protocol changes will result in a painfully
* painful death by pain. You have been warned.
*/
-const long ProtocolVersion = 1205;
-const long MinCompatProtocol = 1202;
+const unsigned int ProtocolVersion = 1205;
+const unsigned int MinCompatProtocol = 1202;
/** Forward declarations
*/
diff --git a/src/modules/m_spanningtree/num.cpp b/src/modules/m_spanningtree/num.cpp
index f83f91286..564b808fd 100644
--- a/src/modules/m_spanningtree/num.cpp
+++ b/src/modules/m_spanningtree/num.cpp
@@ -33,7 +33,7 @@ CmdResult CommandNum::HandleServer(TreeServer* server, CommandBase::Params& para
if (!localtarget)
return CMD_SUCCESS;
- Numeric::Numeric numeric(ConvToInt(params[2]));
+ Numeric::Numeric numeric(ConvToNum<unsigned int>(params[2]));
// Passing NULL is ok, in that case the numeric source becomes this server
numeric.SetServer(Utils->FindServerID(params[0]));
numeric.GetParams().insert(numeric.GetParams().end(), params.begin()+3, params.end());
diff --git a/src/modules/m_spanningtree/servercommand.cpp b/src/modules/m_spanningtree/servercommand.cpp
index 5b8152846..2f5c7ea3e 100644
--- a/src/modules/m_spanningtree/servercommand.cpp
+++ b/src/modules/m_spanningtree/servercommand.cpp
@@ -40,7 +40,7 @@ RouteDescriptor ServerCommand::GetRouting(User* user, const Params& parameters)
time_t ServerCommand::ExtractTS(const std::string& tsstr)
{
- time_t TS = ConvToInt(tsstr);
+ time_t TS = ConvToNum<time_t>(tsstr);
if (!TS)
throw ProtocolException("Invalid TS");
return TS;
diff --git a/src/modules/m_spanningtree/svsnick.cpp b/src/modules/m_spanningtree/svsnick.cpp
index 2514dfd6f..a734dc8ed 100644
--- a/src/modules/m_spanningtree/svsnick.cpp
+++ b/src/modules/m_spanningtree/svsnick.cpp
@@ -47,7 +47,7 @@ CmdResult CommandSVSNick::Handle(User* user, Params& parameters)
// won't happen because the timestamps won't match.
if (parameters.size() > 3)
{
- time_t ExpectedTS = ConvToInt(parameters[3]);
+ time_t ExpectedTS = ConvToNum<time_t>(parameters[3]);
if (u->age != ExpectedTS)
return CMD_FAILURE; // Ignore SVSNICK
}
@@ -56,7 +56,7 @@ CmdResult CommandSVSNick::Handle(User* user, Params& parameters)
if (isdigit(nick[0]))
nick = u->uuid;
- time_t NickTS = ConvToInt(parameters[2]);
+ time_t NickTS = ConvToNum<time_t>(parameters[2]);
if (NickTS <= 0)
return CMD_FAILURE;
diff --git a/src/modules/m_spanningtree/treesocket.h b/src/modules/m_spanningtree/treesocket.h
index e8dbfd7cf..36dd8bb93 100644
--- a/src/modules/m_spanningtree/treesocket.h
+++ b/src/modules/m_spanningtree/treesocket.h
@@ -95,7 +95,7 @@ class TreeSocket : public BufferedSocket
ServerState LinkState; /* Link state */
CapabData* capab; /* Link setup data (held until burst is sent) */
TreeServer* MyRoot; /* The server we are talking to */
- int proto_version; /* Remote protocol version */
+ unsigned int proto_version; /* Remote protocol version */
/** True if we've sent our burst.
* This only changes the behavior of message translation for 1202 protocol servers and it can be
diff --git a/src/modules/m_spanningtree/treesocket2.cpp b/src/modules/m_spanningtree/treesocket2.cpp
index 513fa6dbf..293cdd695 100644
--- a/src/modules/m_spanningtree/treesocket2.cpp
+++ b/src/modules/m_spanningtree/treesocket2.cpp
@@ -148,7 +148,7 @@ void TreeSocket::ProcessLine(std::string &line)
{
if (params.size())
{
- time_t them = ConvToInt(params[0]);
+ time_t them = ConvToNum<time_t>(params[0]);
time_t delta = them - ServerInstance->Time();
if ((delta < -600) || (delta > 600))
{
diff --git a/src/modules/m_topiclock.cpp b/src/modules/m_topiclock.cpp
index c65f27668..b0d004b1c 100644
--- a/src/modules/m_topiclock.cpp
+++ b/src/modules/m_topiclock.cpp
@@ -48,7 +48,7 @@ class CommandSVSTOPIC : public Command
if (parameters.size() == 4)
{
// 4 parameter version, set all topic data on the channel to the ones given in the parameters
- time_t topicts = ConvToInt(parameters[1]);
+ time_t topicts = ConvToNum<time_t>(parameters[1]);
if (!topicts)
{
ServerInstance->Logs->Log(MODNAME, LOG_DEFAULT, "Received SVSTOPIC with a 0 topicts, dropped.");
diff --git a/src/socket.cpp b/src/socket.cpp
index cdbc83e44..d48a1907c 100644
--- a/src/socket.cpp
+++ b/src/socket.cpp
@@ -354,7 +354,7 @@ irc::sockets::cidr_mask::cidr_mask(const std::string& mask)
}
else
{
- int range = ConvToInt(mask.substr(bits_chars + 1));
+ unsigned char range = ConvToNum<unsigned char>(mask.substr(bits_chars + 1));
irc::sockets::aptosa(mask.substr(0, bits_chars), 0, sa);
sa2cidr(*this, sa, range);
}