diff options
author | Hisham Muhammad <hisham@gobolinux.org> | 2018-02-18 20:35:23 -0300 |
---|---|---|
committer | Hisham Muhammad <hisham@gobolinux.org> | 2018-02-18 20:35:23 -0300 |
commit | 03b2581745daed28d4f155728889642da522b653 (patch) | |
tree | 43c857e96d002b70c57e5257d4c5cb2996bad1e4 /Settings.c | |
parent | 8c653212c0e6d15997e4217a514301f5682a41c4 (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.c | 16 |
1 files changed, 9 insertions, 7 deletions
@@ -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) { |