mirror of
https://github.com/aristocratos/btop.git
synced 2026-06-11 17:24:22 -04:00
Merge pull request #1029 from yarrick/cpu_name
This commit is contained in:
@@ -27,6 +27,45 @@ tab-size = 4
|
||||
namespace rng = std::ranges;
|
||||
using namespace Tools;
|
||||
|
||||
namespace Cpu {
|
||||
string trim_name(string name) {
|
||||
auto name_vec = ssplit(name);
|
||||
|
||||
if ((s_contains(name, "Xeon"s) or v_contains(name_vec, "Duo"s)) and v_contains(name_vec, "CPU"s)) {
|
||||
auto cpu_pos = v_index(name_vec, "CPU"s);
|
||||
if (cpu_pos < name_vec.size() - 1 and not name_vec.at(cpu_pos + 1).ends_with(')'))
|
||||
name = name_vec.at(cpu_pos + 1);
|
||||
else
|
||||
name.clear();
|
||||
} else if (v_contains(name_vec, "Ryzen"s)) {
|
||||
auto ryz_pos = v_index(name_vec, "Ryzen"s);
|
||||
name = "Ryzen" + (ryz_pos < name_vec.size() - 1 ? ' ' + name_vec.at(ryz_pos + 1) : "") + (ryz_pos < name_vec.size() - 2 ? ' ' + name_vec.at(ryz_pos + 2) : "");
|
||||
} else if (s_contains(name, "Intel"s) and v_contains(name_vec, "CPU"s)) {
|
||||
auto cpu_pos = v_index(name_vec, "CPU"s);
|
||||
if (cpu_pos < name_vec.size() - 1 and not name_vec.at(cpu_pos + 1).ends_with(')') and name_vec.at(cpu_pos + 1) != "@")
|
||||
name = name_vec.at(cpu_pos + 1);
|
||||
else
|
||||
name.clear();
|
||||
} else
|
||||
name.clear();
|
||||
|
||||
if (name.empty() and not name_vec.empty()) {
|
||||
for (const auto &n : name_vec) {
|
||||
if (n == "@") break;
|
||||
name += n + ' ';
|
||||
}
|
||||
name.pop_back();
|
||||
for (const auto& replace : {"Processor", "CPU", "(R)", "(TM)", "Intel", "AMD", "Apple", "Core"}) {
|
||||
name = s_replace(name, replace, "");
|
||||
name = s_replace(name, " ", " ");
|
||||
}
|
||||
name = trim(name);
|
||||
}
|
||||
|
||||
return name;
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef GPU_SUPPORT
|
||||
namespace Gpu {
|
||||
vector<string> gpu_names;
|
||||
|
||||
@@ -233,6 +233,8 @@ namespace Cpu {
|
||||
|
||||
//* Get battery info from /sys
|
||||
auto get_battery() -> tuple<int, float, long, string>;
|
||||
|
||||
string trim_name(string);
|
||||
}
|
||||
|
||||
namespace Mem {
|
||||
|
||||
@@ -216,42 +216,7 @@ namespace Cpu {
|
||||
Logger::error("Failed to get CPU name");
|
||||
return name;
|
||||
}
|
||||
name = string(buffer);
|
||||
|
||||
auto name_vec = ssplit(name);
|
||||
|
||||
if ((s_contains(name, "Xeon"s) or v_contains(name_vec, "Duo"s)) and v_contains(name_vec, "CPU"s)) {
|
||||
auto cpu_pos = v_index(name_vec, "CPU"s);
|
||||
if (cpu_pos < name_vec.size() - 1 and not name_vec.at(cpu_pos + 1).ends_with(')'))
|
||||
name = name_vec.at(cpu_pos + 1);
|
||||
else
|
||||
name.clear();
|
||||
} else if (v_contains(name_vec, "Ryzen"s)) {
|
||||
auto ryz_pos = v_index(name_vec, "Ryzen"s);
|
||||
name = "Ryzen" + (ryz_pos < name_vec.size() - 1 ? ' ' + name_vec.at(ryz_pos + 1) : "") + (ryz_pos < name_vec.size() - 2 ? ' ' + name_vec.at(ryz_pos + 2) : "");
|
||||
} else if (s_contains(name, "Intel"s) and v_contains(name_vec, "CPU"s)) {
|
||||
auto cpu_pos = v_index(name_vec, "CPU"s);
|
||||
if (cpu_pos < name_vec.size() - 1 and not name_vec.at(cpu_pos + 1).ends_with(')') and name_vec.at(cpu_pos + 1) != "@")
|
||||
name = name_vec.at(cpu_pos + 1);
|
||||
else
|
||||
name.clear();
|
||||
} else
|
||||
name.clear();
|
||||
|
||||
if (name.empty() and not name_vec.empty()) {
|
||||
for (const auto &n : name_vec) {
|
||||
if (n == "@") break;
|
||||
name += n + ' ';
|
||||
}
|
||||
name.pop_back();
|
||||
for (const auto& replace : {"Processor", "CPU", "(R)", "(TM)", "Intel", "AMD", "Core"}) {
|
||||
name = s_replace(name, replace, "");
|
||||
name = s_replace(name, " ", " ");
|
||||
}
|
||||
name = trim(name);
|
||||
}
|
||||
|
||||
return name;
|
||||
return trim_name(string(buffer));
|
||||
}
|
||||
|
||||
bool get_sensors() {
|
||||
|
||||
@@ -375,42 +375,7 @@ namespace Cpu {
|
||||
|
||||
}
|
||||
|
||||
auto name_vec = ssplit(name, ' ');
|
||||
|
||||
if ((s_contains(name, "Xeon"s) or v_contains(name_vec, "Duo"s)) and v_contains(name_vec, "CPU"s)) {
|
||||
auto cpu_pos = v_index(name_vec, "CPU"s);
|
||||
if (cpu_pos < name_vec.size() - 1 and not name_vec.at(cpu_pos + 1).ends_with(')'))
|
||||
name = name_vec.at(cpu_pos + 1);
|
||||
else
|
||||
name.clear();
|
||||
}
|
||||
else if (v_contains(name_vec, "Ryzen"s)) {
|
||||
auto ryz_pos = v_index(name_vec, "Ryzen"s);
|
||||
name = "Ryzen" + (ryz_pos < name_vec.size() - 1 ? ' ' + name_vec.at(ryz_pos + 1) : "")
|
||||
+ (ryz_pos < name_vec.size() - 2 ? ' ' + name_vec.at(ryz_pos + 2) : "");
|
||||
}
|
||||
else if (s_contains(name, "Intel"s) and v_contains(name_vec, "CPU"s)) {
|
||||
auto cpu_pos = v_index(name_vec, "CPU"s);
|
||||
if (cpu_pos < name_vec.size() - 1 and not name_vec.at(cpu_pos + 1).ends_with(')') and name_vec.at(cpu_pos + 1).size() != 1)
|
||||
name = name_vec.at(cpu_pos + 1);
|
||||
else
|
||||
name.clear();
|
||||
}
|
||||
else
|
||||
name.clear();
|
||||
|
||||
if (name.empty() and not name_vec.empty()) {
|
||||
for (const auto& n : name_vec) {
|
||||
if (n == "@") break;
|
||||
name += n + ' ';
|
||||
}
|
||||
name.pop_back();
|
||||
for (const auto& replace : {"Processor", "CPU", "(R)", "(TM)", "Intel", "AMD", "Core"}) {
|
||||
name = s_replace(name, replace, "");
|
||||
name = s_replace(name, " ", " ");
|
||||
}
|
||||
name = trim(name);
|
||||
}
|
||||
name = trim_name(name);
|
||||
}
|
||||
|
||||
return name;
|
||||
|
||||
@@ -211,42 +211,7 @@ namespace Cpu {
|
||||
Logger::error("Failed to get CPU name");
|
||||
return name;
|
||||
}
|
||||
name = string(buffer);
|
||||
|
||||
auto name_vec = ssplit(name);
|
||||
|
||||
if ((s_contains(name, "Xeon"s) or v_contains(name_vec, "Duo"s)) and v_contains(name_vec, "CPU"s)) {
|
||||
auto cpu_pos = v_index(name_vec, "CPU"s);
|
||||
if (cpu_pos < name_vec.size() - 1 and not name_vec.at(cpu_pos + 1).ends_with(')'))
|
||||
name = name_vec.at(cpu_pos + 1);
|
||||
else
|
||||
name.clear();
|
||||
} else if (v_contains(name_vec, "Ryzen"s)) {
|
||||
auto ryz_pos = v_index(name_vec, "Ryzen"s);
|
||||
name = "Ryzen" + (ryz_pos < name_vec.size() - 1 ? ' ' + name_vec.at(ryz_pos + 1) : "") + (ryz_pos < name_vec.size() - 2 ? ' ' + name_vec.at(ryz_pos + 2) : "");
|
||||
} else if (s_contains(name, "Intel"s) and v_contains(name_vec, "CPU"s)) {
|
||||
auto cpu_pos = v_index(name_vec, "CPU"s);
|
||||
if (cpu_pos < name_vec.size() - 1 and not name_vec.at(cpu_pos + 1).ends_with(')') and name_vec.at(cpu_pos + 1) != "@")
|
||||
name = name_vec.at(cpu_pos + 1);
|
||||
else
|
||||
name.clear();
|
||||
} else
|
||||
name.clear();
|
||||
|
||||
if (name.empty() and not name_vec.empty()) {
|
||||
for (const auto &n : name_vec) {
|
||||
if (n == "@") break;
|
||||
name += n + ' ';
|
||||
}
|
||||
name.pop_back();
|
||||
for (const auto& replace : {"Processor", "CPU", "(R)", "(TM)", "Intel", "AMD", "Core"}) {
|
||||
name = s_replace(name, replace, "");
|
||||
name = s_replace(name, " ", " ");
|
||||
}
|
||||
name = trim(name);
|
||||
}
|
||||
|
||||
return name;
|
||||
return trim_name(string(buffer));
|
||||
}
|
||||
|
||||
bool get_sensors() {
|
||||
|
||||
@@ -211,42 +211,7 @@ namespace Cpu {
|
||||
Logger::error("Failed to get CPU name");
|
||||
return name;
|
||||
}
|
||||
name = string(buffer);
|
||||
|
||||
auto name_vec = ssplit(name);
|
||||
|
||||
if ((s_contains(name, "Xeon"s) or v_contains(name_vec, "Duo"s)) and v_contains(name_vec, "CPU"s)) {
|
||||
auto cpu_pos = v_index(name_vec, "CPU"s);
|
||||
if (cpu_pos < name_vec.size() - 1 and not name_vec.at(cpu_pos + 1).ends_with(')'))
|
||||
name = name_vec.at(cpu_pos + 1);
|
||||
else
|
||||
name.clear();
|
||||
} else if (v_contains(name_vec, "Ryzen"s)) {
|
||||
auto ryz_pos = v_index(name_vec, "Ryzen"s);
|
||||
name = "Ryzen" + (ryz_pos < name_vec.size() - 1 ? ' ' + name_vec.at(ryz_pos + 1) : "") + (ryz_pos < name_vec.size() - 2 ? ' ' + name_vec.at(ryz_pos + 2) : "");
|
||||
} else if (s_contains(name, "Intel"s) and v_contains(name_vec, "CPU"s)) {
|
||||
auto cpu_pos = v_index(name_vec, "CPU"s);
|
||||
if (cpu_pos < name_vec.size() - 1 and not name_vec.at(cpu_pos + 1).ends_with(')') and name_vec.at(cpu_pos + 1) != "@")
|
||||
name = name_vec.at(cpu_pos + 1);
|
||||
else
|
||||
name.clear();
|
||||
} else
|
||||
name.clear();
|
||||
|
||||
if (name.empty() and not name_vec.empty()) {
|
||||
for (const auto &n : name_vec) {
|
||||
if (n == "@") break;
|
||||
name += n + ' ';
|
||||
}
|
||||
name.pop_back();
|
||||
for (const auto& replace : {"Processor", "CPU", "(R)", "(TM)", "Intel", "AMD", "Core"}) {
|
||||
name = s_replace(name, replace, "");
|
||||
name = s_replace(name, " ", " ");
|
||||
}
|
||||
name = trim(name);
|
||||
}
|
||||
|
||||
return name;
|
||||
return trim_name(string(buffer));
|
||||
}
|
||||
|
||||
int64_t get_sensor(string device, sensor_type type, int num) {
|
||||
|
||||
@@ -212,42 +212,7 @@ namespace Cpu {
|
||||
Logger::error("Failed to get CPU name");
|
||||
return name;
|
||||
}
|
||||
name = string(buffer);
|
||||
|
||||
auto name_vec = ssplit(name);
|
||||
|
||||
if ((s_contains(name, "Xeon"s) or v_contains(name_vec, "Duo"s)) and v_contains(name_vec, "CPU"s)) {
|
||||
auto cpu_pos = v_index(name_vec, "CPU"s);
|
||||
if (cpu_pos < name_vec.size() - 1 and not name_vec.at(cpu_pos + 1).ends_with(')'))
|
||||
name = name_vec.at(cpu_pos + 1);
|
||||
else
|
||||
name.clear();
|
||||
} else if (v_contains(name_vec, "Ryzen"s)) {
|
||||
auto ryz_pos = v_index(name_vec, "Ryzen"s);
|
||||
name = "Ryzen" + (ryz_pos < name_vec.size() - 1 ? ' ' + name_vec.at(ryz_pos + 1) : "") + (ryz_pos < name_vec.size() - 2 ? ' ' + name_vec.at(ryz_pos + 2) : "");
|
||||
} else if (s_contains(name, "Intel"s) and v_contains(name_vec, "CPU"s)) {
|
||||
auto cpu_pos = v_index(name_vec, "CPU"s);
|
||||
if (cpu_pos < name_vec.size() - 1 and not name_vec.at(cpu_pos + 1).ends_with(')') and name_vec.at(cpu_pos + 1) != "@")
|
||||
name = name_vec.at(cpu_pos + 1);
|
||||
else
|
||||
name.clear();
|
||||
} else
|
||||
name.clear();
|
||||
|
||||
if (name.empty() and not name_vec.empty()) {
|
||||
for (const auto &n : name_vec) {
|
||||
if (n == "@") break;
|
||||
name += n + ' ';
|
||||
}
|
||||
name.pop_back();
|
||||
for (const auto& replace : {"Processor", "CPU", "(R)", "(TM)", "Intel", "AMD", "Apple", "Core"}) {
|
||||
name = s_replace(name, replace, "");
|
||||
name = s_replace(name, " ", " ");
|
||||
}
|
||||
name = trim(name);
|
||||
}
|
||||
|
||||
return name;
|
||||
return trim_name(string(buffer));
|
||||
}
|
||||
|
||||
bool get_sensors() {
|
||||
|
||||
Reference in New Issue
Block a user