Make integer parsing a bit prettier, and fix problems with backlogs larger than 32...
authorSteinar H. Gunderson <sgunderson@bigfoot.com>
Thu, 1 Nov 2018 16:40:24 +0000 (17:40 +0100)
committerSteinar H. Gunderson <sgunderson@bigfoot.com>
Thu, 1 Nov 2018 16:40:24 +0000 (17:40 +0100)
config.cpp

index 919f212..062f5bf 100644 (file)
@@ -77,7 +77,7 @@ bool parse_hostport(const string &hostport, sockaddr_in6 *addr)
                addr->sin6_addr.s6_addr32[3] = addr4.s_addr;
        }
 
-       int port = atoi(port_string.c_str());
+       int port = stoi(port_string);
        if (port < 1 || port >= 65536) {
                log(ERROR, "port %d is out of range (must be [1,65536>).", port);
                return false;
@@ -171,7 +171,7 @@ bool fetch_config_int(const vector<ConfigLine> &config, const string &keyword, i
                        log(ERROR, "'%s' takes one argument and no parameters", keyword.c_str());
                        return false;
                }
-               *value = atoi(line.arguments[0].c_str());  // TODO: verify int validity.
+               *value = stoi(line.arguments[0]);  // TODO: verify int validity.
                return true;
        }
        return false;
@@ -282,7 +282,7 @@ bool parse_port(const ConfigLine &line, Config *config)
                return false;
        }
 
-       int port = atoi(line.arguments[0].c_str());
+       int port = stoi(line.arguments[0]);
        if (port < 1 || port >= 65536) {
                log(ERROR, "port %d is out of range (must be [1,65536>).", port);
                return false;
@@ -348,14 +348,14 @@ bool parse_stream(const ConfigLine &line, Config *config)
        if (backlog_it == line.parameters.end()) {
                stream.backlog_size = DEFAULT_BACKLOG_SIZE;
        } else {
-               stream.backlog_size = atoi(backlog_it->second.c_str());
+               stream.backlog_size = stoll(backlog_it->second);
        }
 
        const auto prebuffer_it = line.parameters.find("force_prebuffer");
        if (prebuffer_it == line.parameters.end()) {
                stream.prebuffering_bytes = 0;
        } else {
-               stream.prebuffering_bytes = atoi(prebuffer_it->second.c_str());
+               stream.prebuffering_bytes = stoll(prebuffer_it->second);
        }
 
        // Parse output encoding.
@@ -392,7 +392,7 @@ bool parse_stream(const ConfigLine &line, Config *config)
        if (pacing_rate_it == line.parameters.end()) {
                stream.pacing_rate = ~0U;
        } else {
-               stream.pacing_rate = atoi(pacing_rate_it->second.c_str()) * 1024 / 8;
+               stream.pacing_rate = stoll(pacing_rate_it->second.c_str()) * 1024 / 8;
        }
 
        // Parse the HLS URL, if any.
@@ -476,7 +476,7 @@ bool parse_udpstream(const ConfigLine &line, Config *config)
        if (pacing_rate_it == line.parameters.end()) {
                udpstream.pacing_rate = ~0U;
        } else {
-               udpstream.pacing_rate = atoi(pacing_rate_it->second.c_str()) * 1024 / 8;
+               udpstream.pacing_rate = stoi(pacing_rate_it->second) * 1024 / 8;
        }
 
        // Parse the TTL. The same value is used for unicast and multicast.
@@ -484,7 +484,7 @@ bool parse_udpstream(const ConfigLine &line, Config *config)
        if (ttl_it == line.parameters.end()) {
                udpstream.ttl = -1;
        } else {
-               udpstream.ttl = atoi(ttl_it->second.c_str());
+               udpstream.ttl = stoi(ttl_it->second);
        }
 
        // Parse the multicast interface index.