aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/ConfigData.cxx21
-rw-r--r--src/ConfigData.hxx6
2 files changed, 27 insertions, 0 deletions
diff --git a/src/ConfigData.cxx b/src/ConfigData.cxx
index 395d768f6..9712eef3e 100644
--- a/src/ConfigData.cxx
+++ b/src/ConfigData.cxx
@@ -29,6 +29,17 @@
#include <string.h>
#include <stdlib.h>
+int
+block_param::GetIntValue() const
+{
+ char *endptr;
+ long value2 = strtol(value.c_str(), &endptr, 0);
+ if (*endptr != 0)
+ FormatFatalError("Not a valid number in line %i", line);
+
+ return value2;
+}
+
unsigned
block_param::GetUnsignedValue() const
{
@@ -120,6 +131,16 @@ config_param::GetBlockPath(const char *name, Error &error) const
return GetBlockPath(name, nullptr, error);
}
+int
+config_param::GetBlockValue(const char *name, int default_value) const
+{
+ const block_param *bp = GetBlockParam(name);
+ if (bp == nullptr)
+ return default_value;
+
+ return bp->GetIntValue();
+}
+
unsigned
config_param::GetBlockValue(const char *name, unsigned default_value) const
{
diff --git a/src/ConfigData.hxx b/src/ConfigData.hxx
index d85228cc3..b41b27420 100644
--- a/src/ConfigData.hxx
+++ b/src/ConfigData.hxx
@@ -46,6 +46,9 @@ struct block_param {
:name(_name), value(_value), line(_line), used(false) {}
gcc_pure
+ int GetIntValue() const;
+
+ gcc_pure
unsigned GetUnsignedValue() const;
gcc_pure
@@ -115,6 +118,9 @@ struct config_param {
AllocatedPath GetBlockPath(const char *name, Error &error) const;
gcc_pure
+ int GetBlockValue(const char *name, int default_value) const;
+
+ gcc_pure
unsigned GetBlockValue(const char *name, unsigned default_value) const;
gcc_pure