diff options
author | Christian Göttsche <cgzones@googlemail.com> | 2021-05-16 19:55:31 +0200 |
---|---|---|
committer | Christian Göttsche <cgzones@googlemail.com> | 2021-05-16 19:55:31 +0200 |
commit | 1f5f40c091a3e91626fc39ba31d7407cbae9aa4d (patch) | |
tree | 8a642b1aaecb3284975e0205db84fb88e590c96f /Settings.c | |
parent | 204bc710baf145212b26a413de3c082ed9d99142 (diff) |
Print current settings on crash
Diffstat (limited to 'Settings.c')
-rw-r--r-- | Settings.c | 24 |
1 files changed, 17 insertions, 7 deletions
@@ -281,13 +281,20 @@ static void writeMeterModes(const Settings* this, FILE* fd, int column) { fprintf(fd, "\n"); } -int Settings_write(const Settings* this) { - FILE* fd = fopen(this->filename, "w"); - if (fd == NULL) - return -errno; +int Settings_write(const Settings* this, bool onCrash) { + FILE* fd; + if (onCrash) { + fd = stderr; + } else { + fd = fopen(this->filename, "w"); + if (fd == NULL) + return -errno; + } - 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"); + if (!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"); + } writeFields(fd, this->fields, "fields"); // This "-1" is for compatibility with the older enum format. fprintf(fd, "sort_key=%d\n", (int) this->sortKey - 1); @@ -333,6 +340,9 @@ int Settings_write(const Settings* this) { fprintf(fd, "topology_affinity=%d\n", (int) this->topologyAffinity); #endif + if (onCrash) + return 0; + int r = 0; if (ferror(fd) != 0) @@ -431,7 +441,7 @@ Settings* Settings_new(unsigned int initialCpuCount) { ok = Settings_read(this, legacyDotfile, initialCpuCount); if (ok) { // Transition to new location and delete old configuration file - if (Settings_write(this) == 0) { + if (Settings_write(this, false) == 0) { unlink(legacyDotfile); } } |