diff options
author | Nathan Scott <nathans@redhat.com> | 2021-07-12 16:51:19 +1000 |
---|---|---|
committer | Nathan Scott <nathans@redhat.com> | 2021-07-14 11:58:46 +1000 |
commit | bf853addc3e4b855cc8fb09a6558733d12548fbe (patch) | |
tree | f09dce3297b7fe05f0169d6f3ea3a5ddede4e9b7 /Header.c | |
parent | a4764902829d2a25a0e27c31824274362e11adea (diff) |
Ensure PCP dynamic metric configuration definition uniqueness
It can happen that pcp-htop is presented multiple definitions
of the same dynamic meter, e.g. if /etc/pcp/htop/meters has a
definition matching one in ~/.config/htop/meters - instead of
exiting with a duplicate metric error provide more meaningful
diagnostics (on close) and also just skip over such entries.
System files override home directories which overrides those
found below the current working directory.
Also fix the derived metric error diagnostic; because this is
using CRT_fatalError, which is like perror(3), we must give a
meaningful prefix (like program name) at the string end.
Diffstat (limited to 'Header.c')
-rw-r--r-- | Header.c | 4 |
1 files changed, 2 insertions, 2 deletions
@@ -75,7 +75,7 @@ void Header_writeBackToSettings(const Header* this) { const Meter* meter = (Meter*) Vector_get(vec, i); char* name; if (meter->param && As_Meter(meter) == &DynamicMeter_class) { - const char* dynamic = DynamicMeter_lookup(this->pl, meter->param); + const char* dynamic = DynamicMeter_lookup(this->pl->dynamicMeters, meter->param); xAsprintf(&name, "%s(%s)", As_Meter(meter)->name, dynamic); } else if (meter->param && As_Meter(meter) == &CPUMeter_class) { xAsprintf(&name, "%s(%u)", As_Meter(meter)->name, meter->param); @@ -101,7 +101,7 @@ bool Header_addMeterByName(Header* this, const char* name, int column) { if ((end = strrchr(dynamic, ')')) == NULL) return false; // indicate htoprc parse failure *end = '\0'; - if (!DynamicMeter_search(this->pl, dynamic, ¶m)) + if (!DynamicMeter_search(this->pl->dynamicMeters, dynamic, ¶m)) return false; // indicates name lookup failure } } |