aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--includes/computer.h3
-rw-r--r--modules/computer.c12
-rw-r--r--modules/computer/os.c13
3 files changed, 25 insertions, 3 deletions
diff --git a/includes/computer.h b/includes/computer.h
index 6b449b1a..ffdcb280 100644
--- a/includes/computer.h
+++ b/includes/computer.h
@@ -137,6 +137,8 @@ struct _OperatingSystem {
gchar *username;
gchar *boots;
+
+ gchar *entropy_avail;
};
struct _MemoryInfo {
@@ -173,6 +175,7 @@ extern gchar *module_list;
gchar *computer_get_formatted_loadavg();
gchar *computer_get_formatted_uptime();
gchar *computer_get_alsacards(Computer * computer);
+gchar *computer_get_entropy_avail();
OperatingSystem *computer_get_os(void);
AlsaInfo *computer_get_alsainfo(void);
diff --git a/modules/computer.c b/modules/computer.c
index 8fabdb07..970927fb 100644
--- a/modules/computer.c
+++ b/modules/computer.c
@@ -96,9 +96,10 @@ gchar *hi_more_info(gchar * entry)
gchar *hi_get_field(gchar * field)
{
- setlocale(LC_ALL, "C"); //Load Average is not updated if locale is not C, switch locale to C
gchar *tmp;
+ setlocale(LC_ALL, "C"); //Load Average is not updated if locale is not C, switch locale to C
+
if (g_str_equal(field, "Memory")) {
MemoryInfo *mi = computer_get_memory();
tmp = g_strdup_printf(_("%dMB (%dMB used)"), mi->total, mi->used);
@@ -112,6 +113,8 @@ gchar *hi_get_field(gchar * field)
strftime(tmp, 64, "%c", localtime(&t));
} else if (g_str_equal(field, "Load Average")) {
tmp = computer_get_formatted_loadavg();
+ } else if (g_str_equal(field, "Available entropy in /dev/random")) {
+ tmp = computer_get_entropy_avail();
} else {
tmp = g_strdup("");
}
@@ -417,6 +420,7 @@ gchar *callback_os()
return g_strdup_printf(_("[$ShellParam$]\n"
"UpdateInterval$Uptime=10000\n"
"UpdateInterval$Load Average=1000\n"
+ "UpdateInterval$Available entropy in /dev/random=1000\n"
"[Version]\n"
"Kernel=%s\n"
"Version=%s\n"
@@ -430,7 +434,8 @@ gchar *callback_os()
"Desktop Environment=%s\n"
"[Misc]\n"
"Uptime=...\n"
- "Load Average=..."),
+ "Load Average=...\n"
+ "Available entropy in /dev/random=..."),
computer->os->kernel,
computer->os->kernel_version,
computer->os->libc,
@@ -438,7 +443,8 @@ gchar *callback_os()
computer->os->hostname,
computer->os->username,
computer->os->language,
- computer->os->homedir, computer->os->desktop);
+ computer->os->homedir, computer->os->desktop,
+ computer->os->entropy_avail);
}
gchar *callback_modules()
diff --git a/modules/computer/os.c b/modules/computer/os.c
index 41f8cb3a..3caf6c26 100644
--- a/modules/computer/os.c
+++ b/modules/computer/os.c
@@ -141,6 +141,17 @@ detect_desktop_environment(OperatingSystem * os)
}
}
+gchar *
+computer_get_entropy_avail(void)
+{
+ gint bits = h_sysfs_read_int("/proc/sys/kernel/random", "entropy_avail");
+ if (bits < 200)
+ return g_strdup_printf("%d bits (low)", bits);
+ if (bits < 3000)
+ return g_strdup_printf("%d bits (medium)", bits);
+ return g_strdup_printf("%d bits (healthy)", bits);
+}
+
OperatingSystem *
computer_get_os(void)
{
@@ -241,5 +252,7 @@ computer_get_os(void)
scan_languages(os);
detect_desktop_environment(os);
+ os->entropy_avail = computer_get_entropy_avail();
+
return os;
}