diff options
-rw-r--r-- | includes/computer.h | 3 | ||||
-rw-r--r-- | modules/computer.c | 12 | ||||
-rw-r--r-- | modules/computer/os.c | 13 |
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; } |