From 5a943fa59cab43f4a2cf6c133c4ef5676d6358b1 Mon Sep 17 00:00:00 2001
From: Aaron Marcher <info@nulltime.net>
Date: Fri, 3 Jun 2016 13:04:15 +0200
Subject: [PATCH] added entropy

---
 config.def.h |  2 ++
 slstatus.c   | 23 +++++++++++++++++++++++
 slstatus.h   |  1 +
 3 files changed, 26 insertions(+)

diff --git a/config.def.h b/config.def.h
index 38af2b9..813bded 100644
--- a/config.def.h
+++ b/config.def.h
@@ -16,6 +16,7 @@ static unsigned int update_interval = 1;
 - cpu_perc (cpu usage in percent) [argument: NULL]
 - datetime (date and time) [argument: format]
 - disk_perc (disk usage in percent) [argument: mountpoint]
+- entropy (available entropy) [argument: NULL]
 - ram_perc (ram usage in percent) [argument: NULL]
 - temp (temperature in degrees) [argument: temperature file]
 - vol_perc (alsa volume and mute status in percent) [argument: soundcard]
@@ -29,5 +30,6 @@ static const struct arg args[] = {
     { ram_perc,     "ram %3s | ",   NULL },
     { vol_perc,     "vol %4s | ",   "default" },
     { disk_perc,    "ssd %3s | ",   "/" },
+    { entropy,      "crypt %s | ",  NULL },
     { datetime,     "%s",           "%y-%m-%d %H:%M:%S" },
 };
diff --git a/slstatus.c b/slstatus.c
index ee6b160..3574468 100644
--- a/slstatus.c
+++ b/slstatus.c
@@ -181,6 +181,29 @@ disk_perc(const char *mountpoint)
     return smprintf("%d%%", perc);
 }
 
+/* entropy available */
+char *
+entropy(const char *null)
+{
+    int entropy = 0;
+    FILE *fp;
+
+    /* open entropy file */
+    if (!(fp = fopen("/proc/sys/kernel/random/entropy_avail", "r"))) {
+        fprintf(stderr, "Could not open entropy file.\n");
+        return smprintf("n/a");
+    }
+
+    /* extract entropy */
+    fscanf(fp, "%d", &entropy);
+
+    /* close entropy file */
+    fclose(fp);
+
+    /* return entropy */
+    return smprintf("%d", entropy);
+}
+
 /* ram percentage */
 char *
 ram_perc(const char *null)
diff --git a/slstatus.h b/slstatus.h
index fb358dc..12c03c7 100644
--- a/slstatus.h
+++ b/slstatus.h
@@ -18,6 +18,7 @@ char *battery_perc(const char *);
 char *cpu_perc(const char *);
 char *datetime(const char *);
 char *disk_perc(const char *);
+char *entropy(const char*);
 char *ram_perc(const char *);
 char *temp(const char *);
 char *vol_perc(const char *);