From 202102380e8df9e7f8e33f3a6dfaa906b6ae8ea6 Mon Sep 17 00:00:00 2001 From: Hisham Muhammad Date: Wed, 10 Jan 2018 02:57:22 -0200 Subject: [PATCH] Read/write list of plugins in htoprc --- Settings.c | 29 ++++++++++++++++++++++++++--- Settings.h | 3 +++ 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/Settings.c b/Settings.c index fdef956..9723e15 100644 --- a/Settings.c +++ b/Settings.c @@ -34,6 +34,9 @@ typedef struct Settings_ { MeterColumnSettings columns[2]; + char** plugins; + int nPlugins; + ProcessField* fields; int flags; int colorScheme; @@ -75,6 +78,7 @@ void Settings_delete(Settings* this) { String_freeArray(this->columns[i].names); free(this->columns[i].modes); } + String_freeArray(this->plugins); free(this); } @@ -86,6 +90,12 @@ static void Settings_readMeters(Settings* this, char* line, int column) { this->columns[column].names = ids; } +static void Settings_readPlugins(Settings* this, char* line) { + char* trim = String_trim(line); + this->plugins = String_split(trim, ' ', &(this->nPlugins)); + free(trim); +} + static void Settings_readMeterModes(Settings* this, char* line, int column) { char* trim = String_trim(line); int nIds; @@ -242,6 +252,8 @@ static bool Settings_read(Settings* this, const char* fileName) { } else if (String_eq(option[0], "right_meter_modes")) { Settings_readMeterModes(this, option[1], 1); readMeters = true; + } else if (String_eq(option[0], "plugins")) { + Settings_readPlugins(this, option[1]); } String_freeArray(option); } @@ -263,15 +275,19 @@ static void writeFields(FILE* fd, ProcessField* fields, const char* name) { fprintf(fd, "\n"); } -static void writeMeters(Settings* this, FILE* fd, int column) { +static void writeList(FILE* fd, char** list, int len) { const char* sep = ""; - for (int i = 0; i < this->columns[column].len; i++) { - fprintf(fd, "%s%s", sep, this->columns[column].names[i]); + for (int i = 0; i < len; i++) { + fprintf(fd, "%s%s", sep, list[i]); sep = " "; } fprintf(fd, "\n"); } +static void writeMeters(Settings* this, FILE* fd, int column) { + writeList(fd, this->columns[column].names, this->columns[column].len); +} + static void writeMeterModes(Settings* this, FILE* fd, int column) { const char* sep = ""; for (int i = 0; i < this->columns[column].len; i++) { @@ -281,6 +297,10 @@ static void writeMeterModes(Settings* this, FILE* fd, int column) { fprintf(fd, "\n"); } +static void writePlugins(Settings* this, FILE* fd) { + writeList(fd, this->plugins, this->nPlugins); +} + bool Settings_write(Settings* this) { FILE* fd; @@ -318,6 +338,9 @@ bool Settings_write(Settings* this) { fprintf(fd, "left_meter_modes="); writeMeterModes(this, fd, 0); fprintf(fd, "right_meters="); writeMeters(this, fd, 1); fprintf(fd, "right_meter_modes="); writeMeterModes(this, fd, 1); + if (this->nPlugins > 0) { + fprintf(fd, "plugins="); writePlugins(this, fd); + } fclose(fd); return true; } diff --git a/Settings.h b/Settings.h index d9dc068..2efe273 100644 --- a/Settings.h +++ b/Settings.h @@ -25,6 +25,9 @@ typedef struct Settings_ { MeterColumnSettings columns[2]; + char** plugins; + int nPlugins; + ProcessField* fields; int flags; int colorScheme; -- GitLab