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`.
This commit is contained in:
drkhsh 2022-11-23 23:59:51 +01:00
parent 4bd78c94ba
commit 57c6e7340d
5 changed files with 38 additions and 0 deletions

View File

@ -7,6 +7,7 @@ include config.mk
REQ = util REQ = util
COM =\ COM =\
components/battery\ components/battery\
components/cat\
components/cpu\ components/cpu\
components/datetime\ components/datetime\
components/disk\ components/disk\

1
README
View File

@ -7,6 +7,7 @@ slstatus is a suckless status monitor for window managers that use WM_NAME
Features Features
-------- --------
- Battery percentage/state/time left - Battery percentage/state/time left
- Cat (read file)
- CPU usage - CPU usage
- CPU frequency - CPU frequency
- Custom shell commands - Custom shell commands

32
components/cat.c Normal file
View File

@ -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;
}

View File

@ -18,6 +18,7 @@ static const char unknown_str[] = "n/a";
* NULL on OpenBSD/FreeBSD * NULL on OpenBSD/FreeBSD
* battery_remaining battery remaining HH:MM battery name (BAT0) * battery_remaining battery remaining HH:MM battery name (BAT0)
* NULL on OpenBSD/FreeBSD * NULL on OpenBSD/FreeBSD
* cat read arbitrary file path
* cpu_perc cpu usage in percent NULL * cpu_perc cpu usage in percent NULL
* cpu_freq cpu frequency in MHz NULL * cpu_freq cpu frequency in MHz NULL
* datetime date and time format string (%F %T) * datetime date and time format string (%F %T)

View File

@ -5,6 +5,9 @@ const char *battery_perc(const char *);
const char *battery_state(const char *); const char *battery_state(const char *);
const char *battery_remaining(const char *); const char *battery_remaining(const char *);
/* cat */
const char *cat(const char *path);
/* cpu */ /* cpu */
const char *cpu_freq(const char *unused); const char *cpu_freq(const char *unused);
const char *cpu_perc(const char *unused); const char *cpu_perc(const char *unused);