summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Lange <DLange@git.local>2021-08-23 14:53:24 +0200
committerDaniel Lange <DLange@git.local>2021-08-23 14:53:24 +0200
commit6d10736a647d5f83e48abbb9a8db2f0a44e7ed29 (patch)
tree879a444d6a886695a90f1707afc92e0395d8d52d
parenta912512ac917698cd1fabd01e289f86dd55b43fe (diff)
parent35d94a5ae5c167c74c42452c8c0d4729c5b3f337 (diff)
Merge branch 'config_versions' of fasterit/htop
-rw-r--r--Settings.c12
-rw-r--r--Settings.h3
2 files changed, 14 insertions, 1 deletions
diff --git a/Settings.c b/Settings.c
index 3931bbf2..2b864d5a 100644
--- a/Settings.c
+++ b/Settings.c
@@ -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);
diff --git a/Settings.h b/Settings.h
index 97ef58a0..a512341b 100644
--- a/Settings.h
+++ b/Settings.h
@@ -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;

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