diff options
author | Jonathan Fouquart <jfouquart@hotmail.fr> | 2023-08-25 09:37:49 +0200 |
---|---|---|
committer | Jonathan Fouquart <jfouquart@hotmail.fr> | 2023-08-25 09:37:49 +0200 |
commit | 22e64caaff3d5877b7a494980a8ee3f17ea8f824 (patch) | |
tree | 4a227aa4e087776da8cdabf3b722a0f639d26c4f | |
parent | 1b126f55e38de76a2cca796593ef1554828d61e6 (diff) |
Fix getting zfs pool name with '.' char in freebsd
-rw-r--r-- | src/freebsd/btop_collect.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/freebsd/btop_collect.cpp b/src/freebsd/btop_collect.cpp index d69eab9..47598f0 100644 --- a/src/freebsd/btop_collect.cpp +++ b/src/freebsd/btop_collect.cpp @@ -543,14 +543,16 @@ namespace Mem { // find all zpools in the system. Do this only at startup. void get_zpools() { + std::regex toReplace("\\."); PipeWrapper poolPipe = PipeWrapper("zpool list -H -o name", "r"); + while (not std::feof(poolPipe())) { char poolName[512]; size_t len = 512; if (fgets(poolName, len, poolPipe())) { poolName[strcspn(poolName, "\n")] = 0; Logger::debug("zpool found: " + string(poolName)); - Mem::zpools.push_back(poolName); + Mem::zpools.push_back(std::regex_replace(poolName, toReplace, "%25")); } } } @@ -583,7 +585,7 @@ namespace Mem { } // this code is for ZFS mounts - for (string poolName : Mem::zpools) { + for (const auto &poolName : Mem::zpools) { char sysCtl[1024]; snprintf(sysCtl, sizeof(sysCtl), "sysctl kstat.zfs.%s.dataset | egrep \'dataset_name|nread|nwritten\'", poolName.c_str()); PipeWrapper f = PipeWrapper(sysCtl, "r"); |