summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Lange <DLange@git.local>2021-07-16 17:04:23 +0200
committerBenny Baumann <BenBE@geshi.org>2021-08-13 23:21:54 +0200
commit4b59a2e6b7997dcd35097cbdef9d80873a23f263 (patch)
treecfe4ed629f1cf7e0e90a882ff9fb153f14ca9355
parentdd91e9a9dabf6e61bd550eac33688f78d9da8320 (diff)
Introduce versioned config files and config_reader_min_version
-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 569d5450..8fb79877 100644
--- a/Settings.c
+++ b/Settings.c
@@ -166,7 +166,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: The config file %s requires support for a newer format (v%d) than what this version of htop can read (v%d).\n", fileName, this->config_version, CONFIG_READER_MIN_VERSION);
+ fprintf(stderr, " It will be overwritten when this version of htop exits.\n");
+ return false;
+ }
+ } else if (String_eq(option[0], "fields")) {
Settings_readFields(this, option[1]);
didReadFields = true;
} else if (String_eq(option[0], "sort_key")) {
@@ -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