From 5ca1c40c92f074315bbdfe328c00484ff18146f2 Mon Sep 17 00:00:00 2001 From: Bent Bisballe Nyeng Date: Fri, 1 Feb 2019 17:57:58 +0100 Subject: Fix configfile parsing of empty value lines and creation of missing configuration directory. --- src/configfile.cc | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/configfile.cc b/src/configfile.cc index 731d3aa..54fb4d1 100644 --- a/src/configfile.cc +++ b/src/configfile.cc @@ -84,10 +84,10 @@ static bool createConfigPath() std::string configpath = getConfigPath(); struct stat st; - if(stat(configpath.c_str(), &st) == 0) + if(stat(configpath.c_str(), &st) != 0) { DEBUG(configfile, "No configuration exists, creating directory '%s'\n", - configpath.c_str()); + configpath.c_str()); #if DG_PLATFORM == DG_PLATFORM_WINDOWS if(mkdir(configpath.c_str()) < 0) { @@ -221,7 +221,7 @@ std::string ConfigFile::readLine() { return ""; } - + std::string line; char buf[1024]; @@ -383,7 +383,8 @@ bool ConfigFile::parseLine(const std::string& line) } // If state == in_value_XXX_quoted here, the string was not terminated. - if(state != after_value && state != in_value) + // If state == before_value it means that the value is empty. + if(state != after_value && state != in_value && state != before_value) { ERR(configfile, "Malformed line: '%s'", line.c_str()); return false; -- cgit v1.2.3