annotate main.cpp @ 0:bb144f2c5a3b

initial commit
author Yasuri <yasuri@charliesmp.net>
date Sun, 04 Oct 2026 13:36:00 -0500
parents
children 841975e638f2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
bb144f2c5a3b initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
1 #include <iostream>
bb144f2c5a3b initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
2 #include <fstream>
bb144f2c5a3b initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
3 #include <sstream>
bb144f2c5a3b initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
4 #include <iomanip>
bb144f2c5a3b initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
5 int main() {
bb144f2c5a3b initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
6 std::string myText;
bb144f2c5a3b initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
7 std::ifstream Meminfo("/proc/meminfo");
bb144f2c5a3b initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
8 std::string uptimeText;
bb144f2c5a3b initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
9 std::ifstream Uptime("/proc/uptime");
bb144f2c5a3b initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
10 std::string distro;
bb144f2c5a3b initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
11 std::ifstream OsRelease("/etc/os-release");
bb144f2c5a3b initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
12 long total = 0;
bb144f2c5a3b initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
13 long available = 0;
bb144f2c5a3b initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
14 while (std::getline (Meminfo, myText)) {
bb144f2c5a3b initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
15 std::istringstream ss(myText);
bb144f2c5a3b initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
16 std::string name;
bb144f2c5a3b initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
17 long value;
bb144f2c5a3b initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
18 ss >> name >> value;
bb144f2c5a3b initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
19 if (name == "MemTotal:") {
bb144f2c5a3b initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
20 total = value;
bb144f2c5a3b initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
21 }
bb144f2c5a3b initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
22 if (name == "MemAvailable:") {
bb144f2c5a3b initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
23 available = value;
bb144f2c5a3b initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
24 }
bb144f2c5a3b initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
25 }
bb144f2c5a3b initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
26 std::string osLine;
bb144f2c5a3b initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
27 while (std::getline(OsRelease, osLine)) {
bb144f2c5a3b initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
28 size_t pos = osLine.find('=');
bb144f2c5a3b initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
29 if (pos == std::string::npos) continue;
bb144f2c5a3b initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
30 std::string key = osLine.substr(0, pos);
bb144f2c5a3b initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
31 std::string val = osLine.substr(pos + 1);
bb144f2c5a3b initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
32 if (key == "PRETTY_NAME") {
bb144f2c5a3b initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
33 distro = val.substr(1, val.size() - 2);
bb144f2c5a3b initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
34 }
bb144f2c5a3b initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
35 }
bb144f2c5a3b initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
36 long timeup = 0;
bb144f2c5a3b initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
37 while (std::getline (Uptime, uptimeText)) {
bb144f2c5a3b initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
38 std::istringstream ss2(uptimeText);
bb144f2c5a3b initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
39 double uptime;
bb144f2c5a3b initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
40 ss2 >> uptime;
bb144f2c5a3b initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
41 timeup = uptime;
bb144f2c5a3b initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
42 }
bb144f2c5a3b initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
43 std::cout << std::fixed << std::setprecision(2);
bb144f2c5a3b initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
44 std::cout << "Used: " << (total - available) / (1024.0 * 1024.0) << " GB" << "/" << total / (1024.0 * 1024.0) << "GB" << std::endl;
bb144f2c5a3b initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
45 std::cout << "Uptime: " << "Hours: " << timeup / 3600 << " Minutes: " << (timeup % 3600) / 60 << std::endl;
bb144f2c5a3b initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
46 std::cout << "OS: " << distro << std::endl;
bb144f2c5a3b initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
47 Meminfo.close();
bb144f2c5a3b initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
48 }