From 1f5f40c091a3e91626fc39ba31d7407cbae9aa4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20G=C3=B6ttsche?= Date: Sun, 16 May 2021 19:55:31 +0200 Subject: Print current settings on crash --- Settings.c | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) (limited to 'Settings.c') diff --git a/Settings.c b/Settings.c index 0606df30..92d96dd5 100644 --- a/Settings.c +++ b/Settings.c @@ -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); } } -- cgit v1.2.3