diff options
author | Bent Bisballe Nyeng <deva@aasimon.org> | 2019-02-01 17:57:58 +0100 |
---|---|---|
committer | Bent Bisballe Nyeng <deva@aasimon.org> | 2019-02-01 17:57:58 +0100 |
commit | 5ca1c40c92f074315bbdfe328c00484ff18146f2 (patch) | |
tree | 3d801d2ec86d9b155326289bd4e557e8b956a61d /src | |
parent | f3fa39437c711f75949fbe0056007e343a428062 (diff) |
Fix configfile parsing of empty value lines and creation of missing configuration directory.
Diffstat (limited to 'src')
-rw-r--r-- | src/configfile.cc | 9 |
1 files changed, 5 insertions, 4 deletions
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; |