From ea859f50d9438bc61ae96721a4d255b49de78653 Mon Sep 17 00:00:00 2001 From: Daniel Lange Date: Mon, 11 Apr 2016 13:00:20 +0200 Subject: Imported Upstream version 0.6.2 --- Settings.c | 39 ++++++++++++++++++++++++--------------- 1 file changed, 24 insertions(+), 15 deletions(-) (limited to 'Settings.c') diff --git a/Settings.c b/Settings.c index 30b5c54..91a833e 100644 --- a/Settings.c +++ b/Settings.c @@ -1,6 +1,6 @@ /* htop - Settings.c -(C) 2004,2005 Hisham H. Muhammad +(C) 2004-2006 Hisham H. Muhammad Released under the GNU GPL, see the COPYING file in the source distribution for its full text. */ @@ -32,9 +32,15 @@ Settings* Settings_new(ProcessList* pl, Header* header) { this->pl = pl; this->header = header; char* home; + char* rcfile; home = getenv("HOME_ETC"); if (!home) home = getenv("HOME"); - this->userSettings = String_cat(home, "/.htoprc"); + if (!home) home = ""; + rcfile = getenv("HOMERC"); + if (!rcfile) + this->userSettings = String_cat(home, "/.htoprc"); + else + this->userSettings = String_copy(rcfile); this->colorScheme = 0; this->changed = false; this->delay = DEFAULT_DELAY; @@ -142,17 +148,17 @@ bool Settings_read(Settings* this, char* fileName) { if (this->colorScheme < 0) this->colorScheme = 0; if (this->colorScheme > 5) this->colorScheme = 5; } else if (String_eq(option[0], "left_meters")) { - Settings_readMeters(this, option[1], LEFT_HEADER); - readMeters = true; + Settings_readMeters(this, option[1], LEFT_HEADER); + readMeters = true; } else if (String_eq(option[0], "right_meters")) { - Settings_readMeters(this, option[1], RIGHT_HEADER); - readMeters = true; + Settings_readMeters(this, option[1], RIGHT_HEADER); + readMeters = true; } else if (String_eq(option[0], "left_meter_modes")) { - Settings_readMeterModes(this, option[1], LEFT_HEADER); - readMeters = true; + Settings_readMeterModes(this, option[1], LEFT_HEADER); + readMeters = true; } else if (String_eq(option[0], "right_meter_modes")) { - Settings_readMeterModes(this, option[1], RIGHT_HEADER); - readMeters = true; + Settings_readMeterModes(this, option[1], RIGHT_HEADER); + readMeters = true; } String_freeArray(option); } @@ -195,7 +201,9 @@ bool Settings_write(Settings* this) { fprintf(fd, "delay=%d\n", (int) this->delay); fprintf(fd, "left_meters="); for (int i = 0; i < Header_size(this->header, LEFT_HEADER); i++) { - fprintf(fd, "%s ", Header_readMeterName(this->header, i, LEFT_HEADER)); + char* name = Header_readMeterName(this->header, i, LEFT_HEADER); + fprintf(fd, "%s ", name); + free(name); } fprintf(fd, "\n"); fprintf(fd, "left_meter_modes="); @@ -203,14 +211,15 @@ bool Settings_write(Settings* this) { fprintf(fd, "%d ", Header_readMeterMode(this->header, i, LEFT_HEADER)); fprintf(fd, "\n"); fprintf(fd, "right_meters="); - for (int i = 0; i < Header_size(this->header, RIGHT_HEADER); i++) - fprintf(fd, "%s ", Header_readMeterName(this->header, i, RIGHT_HEADER)); + for (int i = 0; i < Header_size(this->header, RIGHT_HEADER); i++) { + char* name = Header_readMeterName(this->header, i, RIGHT_HEADER); + fprintf(fd, "%s ", name); + free(name); + } fprintf(fd, "\n"); fprintf(fd, "right_meter_modes="); for (int i = 0; i < Header_size(this->header, RIGHT_HEADER); i++) fprintf(fd, "%d ", Header_readMeterMode(this->header, i, RIGHT_HEADER)); - fprintf(fd, "\n"); - fclose(fd); return true; } -- cgit v1.2.3