[hackers] [slstatus] New component: cat || drkhsh

From: <git_AT_suckless.org>
Date: Thu, 24 Nov 2022 00:04:23 +0100 (CET)

commit 57c6e7340d16b14d61f9e3361ca4940f53dfcafa
Author: drkhsh <me_AT_drkhsh.at>
AuthorDate: Wed Nov 23 23:59:51 2022 +0100
Commit: drkhsh <me_AT_drkhsh.at>
CommitDate: Thu Nov 24 00:01:52 2022 +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`.

diff --git a/Makefile b/Makefile
index 3be46cc..7834257 100644
--- a/Makefile
+++ b/Makefile
_AT_@ -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
index 4da0756..b3fa7ae 100644
--- a/README
+++ b/README
_AT_@ -7,6 +7,7 @@ slstatus is a suckless status monitor for window managers that use WM_NAME
 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
new file mode 100644
index 0000000..07944cc
--- /dev/null
+++ b/components/cat.c
_AT_@ -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
index 5f6c114..90b57a1 100644
--- a/config.def.h
+++ b/config.def.h
_AT_@ -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
index f3b4979..f062e73 100644
--- a/slstatus.h
+++ b/slstatus.h
_AT_@ -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);
Received on Thu Nov 24 2022 - 00:04:23 CET

This archive was generated by hypermail 2.3.0 : Thu Nov 24 2022 - 00:12:30 CET