diff options
author | Daniel Lange <DLange@git.local> | 2021-08-23 14:53:24 +0200 |
---|---|---|
committer | Daniel Lange <DLange@git.local> | 2021-08-23 14:53:24 +0200 |
commit | 6d10736a647d5f83e48abbb9a8db2f0a44e7ed29 (patch) | |
tree | 879a444d6a886695a90f1707afc92e0395d8d52d | |
parent | a912512ac917698cd1fabd01e289f86dd55b43fe (diff) | |
parent | 35d94a5ae5c167c74c42452c8c0d4729c5b3f337 (diff) |
Merge branch 'config_versions' of fasterit/htop
-rw-r--r-- | Settings.c | 12 | ||||
-rw-r--r-- | Settings.h | 3 |
2 files changed, 14 insertions, 1 deletions
@@ -167,7 +167,15 @@ static bool Settings_read(Settings* this, const char* fileName, unsigned int ini String_freeArray(option); continue; } - if (String_eq(option[0], "fields")) { + if (String_eq(option[0], "config_reader_min_version")) { + this->config_version = atoi(option[1]); + if (this->config_version > CONFIG_READER_MIN_VERSION) { + // the version of the config file on disk is newer than what we can read + fprintf(stderr, "WARNING: %s specifies configuration format version v%d, but this %s binary supports up to v%d.", fileName, this->config_version, PACKAGE, CONFIG_READER_MIN_VERSION); + fprintf(stderr, " The configuration version will be downgraded to v%d when %s exits.\n", CONFIG_READER_MIN_VERSION, PACKAGE); + return false; + } + } else if (String_eq(option[0], "fields")) { Settings_readFields(this, option[1]); } else if (String_eq(option[0], "sort_key")) { // This "+1" is for compatibility with the older enum format. @@ -326,6 +334,8 @@ int Settings_write(const Settings* this, bool onCrash) { fprintf(fd, "# Beware! This file is rewritten by htop when settings are changed in the interface.\n"); fprintf(fd, "# The parser is also very primitive, and not human-friendly.\n"); } + fprintf(fd, "htop_version=%s\n", VERSION); + fprintf(fd, "config_reader_min_version=%d\n", CONFIG_READER_MIN_VERSION); writeFields(fd, this->fields, this->dynamicColumns, "fields"); // This "-1" is for compatibility with the older enum format. fprintf(fd, "sort_key=%d\n", (int) this->sortKey - 1); @@ -18,6 +18,8 @@ in the source distribution for its full text. #define DEFAULT_DELAY 15 +#define CONFIG_READER_MIN_VERSION 2 + typedef struct { int len; char** names; @@ -26,6 +28,7 @@ typedef struct { typedef struct Settings_ { char* filename; + int config_version; MeterColumnSettings columns[2]; Hashtable* dynamicColumns; |