Generically reads an arbitrary file natively.
Saves a few layers of execution in comparison to using `run_command`
with an argument like `cat ./file`.
REQ = util
COM =\
components/battery\
+ components/cat\
components/cpu\
components/datetime\
components/disk\
Features
--------
- Battery percentage/state/time left
+- Cat (read file)
- CPU usage
- CPU frequency
- Custom shell commands
--- /dev/null
+/* 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;
+}
+
* 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)
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);