summaryrefslogtreecommitdiffstats
path: root/Settings.c
diff options
context:
space:
mode:
authorHisham Muhammad <hisham@gobolinux.org>2018-02-18 20:35:23 -0300
committerHisham Muhammad <hisham@gobolinux.org>2018-02-18 20:35:23 -0300
commit03b2581745daed28d4f155728889642da522b653 (patch)
tree43c857e96d002b70c57e5257d4c5cb2996bad1e4 /Settings.c
parent8c653212c0e6d15997e4217a514301f5682a41c4 (diff)
Only consider a read successful when the file seems valid
Require at least the `fields` entry to be present, so we can have a decent guess that it was indeed a settings file.
Diffstat (limited to 'Settings.c')
-rw-r--r--Settings.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/Settings.c b/Settings.c
index fdef9566..098902b4 100644
--- a/Settings.c
+++ b/Settings.c
@@ -172,7 +172,8 @@ static bool Settings_read(Settings* this, const char* fileName) {
if (!fd)
return false;
- bool readMeters = false;
+ bool didReadMeters = false;
+ bool didReadFields = false;
for (;;) {
char* line = String_readLine(fd);
if (!line) {
@@ -187,6 +188,7 @@ static bool Settings_read(Settings* this, const char* fileName) {
}
if (String_eq(option[0], "fields")) {
readFields(this->fields, &(this->flags), option[1]);
+ didReadFields = true;
} else if (String_eq(option[0], "sort_key")) {
// This "+1" is for compatibility with the older enum format.
this->sortKey = atoi(option[1]) + 1;
@@ -232,24 +234,24 @@ static bool Settings_read(Settings* this, const char* fileName) {
if (this->colorScheme < 0 || this->colorScheme >= LAST_COLORSCHEME) this->colorScheme = 0;
} else if (String_eq(option[0], "left_meters")) {
Settings_readMeters(this, option[1], 0);
- readMeters = true;
+ didReadMeters = true;
} else if (String_eq(option[0], "right_meters")) {
Settings_readMeters(this, option[1], 1);
- readMeters = true;
+ didReadMeters = true;
} else if (String_eq(option[0], "left_meter_modes")) {
Settings_readMeterModes(this, option[1], 0);
- readMeters = true;
+ didReadMeters = true;
} else if (String_eq(option[0], "right_meter_modes")) {
Settings_readMeterModes(this, option[1], 1);
- readMeters = true;
+ didReadMeters = true;
}
String_freeArray(option);
}
fclose(fd);
- if (!readMeters) {
+ if (!didReadMeters) {
Settings_defaultMeters(this);
}
- return true;
+ return didReadFields;
}
static void writeFields(FILE* fd, ProcessField* fields, const char* name) {

© 2014-2024 Faster IT GmbH | imprint | privacy policy