New component: cat - slstatus - status monitor | |
git clone git://git.suckless.org/slstatus | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 57c6e7340d16b14d61f9e3361ca4940f53dfcafa | |
parent 4bd78c94ba90d67a268c092231b85037c94a339a | |
Author: drkhsh <[email protected]> | |
Date: Wed, 23 Nov 2022 23:59:51 +0100 | |
New component: cat | |
Generically reads an arbitrary file natively. | |
Saves a few layers of execution in comparison to using `run_command` | |
with an argument like `cat ./file`. | |
Diffstat: | |
M Makefile | 1 + | |
M README | 1 + | |
A components/cat.c | 32 +++++++++++++++++++++++++++++… | |
M config.def.h | 1 + | |
M slstatus.h | 3 +++ | |
5 files changed, 38 insertions(+), 0 deletions(-) | |
--- | |
diff --git a/Makefile b/Makefile | |
@@ -7,6 +7,7 @@ include config.mk | |
REQ = util | |
COM =\ | |
components/battery\ | |
+ components/cat\ | |
components/cpu\ | |
components/datetime\ | |
components/disk\ | |
diff --git a/README b/README | |
@@ -7,6 +7,7 @@ slstatus is a suckless status monitor for window managers that … | |
Features | |
-------- | |
- Battery percentage/state/time left | |
+- Cat (read file) | |
- CPU usage | |
- CPU frequency | |
- Custom shell commands | |
diff --git a/components/cat.c b/components/cat.c | |
@@ -0,0 +1,32 @@ | |
+/* See LICENSE file for copyright and license details. */ | |
+#include <stdio.h> | |
+#include <string.h> | |
+ | |
+#include "../slstatus.h" | |
+#include "../util.h" | |
+ | |
+const char * | |
+cat(const char *path) | |
+{ | |
+ char *f; | |
+ FILE *fp; | |
+ | |
+ if (!(fp = fopen(path, "r"))) { | |
+ warn("fopen '%s':", path); | |
+ return NULL; | |
+ } | |
+ | |
+ f = fgets(buf, sizeof(buf) - 1, fp); | |
+ if (fclose(fp) < 0) { | |
+ warn("fclose '%s':", path); | |
+ return NULL; | |
+ } | |
+ if (!f) | |
+ return NULL; | |
+ | |
+ if ((f = strrchr(buf, '\n'))) | |
+ f[0] = '\0'; | |
+ | |
+ return buf[0] ? buf : NULL; | |
+} | |
+ | |
diff --git a/config.def.h b/config.def.h | |
@@ -18,6 +18,7 @@ static const char unknown_str[] = "n/a"; | |
* NULL on OpenBSD/FreeBSD | |
* battery_remaining battery remaining HH:MM battery name (BAT0) | |
* NULL on OpenBSD/FreeBSD | |
+ * cat read arbitrary file path | |
* cpu_perc cpu usage in percent NULL | |
* cpu_freq cpu frequency in MHz NULL | |
* datetime date and time format string (%F %T) | |
diff --git a/slstatus.h b/slstatus.h | |
@@ -5,6 +5,9 @@ const char *battery_perc(const char *); | |
const char *battery_state(const char *); | |
const char *battery_remaining(const char *); | |
+/* cat */ | |
+const char *cat(const char *path); | |
+ | |
/* cpu */ | |
const char *cpu_freq(const char *unused); | |
const char *cpu_perc(const char *unused); |