it* dwmstatus for OpenBSD Err codevoid.de 70 i Err codevoid.de 70 hgit clone git://git.codevoid.de/dwmstatus-sdk URL:git://git.codevoid.de/dwmstatus-sdk codevoid.de 70 1Log /git/dwmstatus-sdk/log.gph codevoid.de 70 1Files /git/dwmstatus-sdk/files.gph codevoid.de 70 1Refs /git/dwmstatus-sdk/refs.gph codevoid.de 70 1LICENSE /git/dwmstatus-sdk/file/LICENSE.gph codevoid.de 70 i--- Err codevoid.de 70 1commit e591bf9a6df8ae266b612bacec9e407fc9c4c1f7 /git/dwmstatus-sdk/commit/e591bf9a6df8ae266b612bacec9e407fc9c4c1f7.gph codevoid.de 70 1parent dd54568f6cfe3ee35e7b62546ee886ad49136083 /git/dwmstatus-sdk/commit/dd54568f6cfe3ee35e7b62546ee886ad49136083.gph codevoid.de 70 hAuthor: Stefan Hagen URL:mailto:sh+git[at]codevoid[dot]de codevoid.de 70 iDate: Fri, 23 Nov 2018 20:24:38 +0100 Err codevoid.de 70 i Err codevoid.de 70 iUpdate 2018-11-23 20:24 OpenBSD/amd64 Err codevoid.de 70 i Err codevoid.de 70 iDiffstat: Err codevoid.de 70 i M dwmstatus.c | 60 ++++++++++++++++++++++++++------ Err codevoid.de 70 i Err codevoid.de 70 i1 file changed, 50 insertions(+), 10 deletions(-) Err codevoid.de 70 i--- Err codevoid.de 70 1diff --git a/dwmstatus.c b/dwmstatus.c /git/dwmstatus-sdk/file/dwmstatus.c.gph codevoid.de 70 it@@ -12,6 +12,9 @@ Err codevoid.de 70 i #include Err codevoid.de 70 i #include Err codevoid.de 70 i #include Err codevoid.de 70 i+#include Err codevoid.de 70 i+#include Err codevoid.de 70 i+#include Err codevoid.de 70 i #include Err codevoid.de 70 i #include Err codevoid.de 70 i #include Err codevoid.de 70 it@@ -63,17 +66,54 @@ char * getfreespace(const char *path) { Err codevoid.de 70 i return smprintf("%ld", (vfs.f_bavail * vfs.f_bsize) / 1024 / 1024); Err codevoid.de 70 i } Err codevoid.de 70 i Err codevoid.de 70 i-char * getsysctl(char *input_str) { Err codevoid.de 70 i- char *ret_val; Err codevoid.de 70 i- size_t ret_size; Err codevoid.de 70 i- Err codevoid.de 70 i- return "not implemented"; Err codevoid.de 70 i+//char * getsysctl(char *input_str) { Err codevoid.de 70 i+// char *ret_val; Err codevoid.de 70 i+// size_t ret_size; Err codevoid.de 70 i+// Err codevoid.de 70 i+// return "not implemented"; Err codevoid.de 70 i+//} Err codevoid.de 70 i+ Err codevoid.de 70 i+char * getvolume() { Err codevoid.de 70 i+ Err codevoid.de 70 i+ static int cls = -1, fd, v; Err codevoid.de 70 i+ static struct mixer_devinfo mdi; Err codevoid.de 70 i+ static struct mixer_ctrl mc; Err codevoid.de 70 i+ Err codevoid.de 70 i+ if ((fd = open("/dev/mixer", O_RDONLY)) == -1) Err codevoid.de 70 i+ return smprintf("NOMIXER"); Err codevoid.de 70 i+ Err codevoid.de 70 i+ for (mdi.index = 0; cls == -1; ++mdi.index) { Err codevoid.de 70 i+ if (ioctl(fd, AUDIO_MIXER_DEVINFO, &mdi) == -1) Err codevoid.de 70 i+ goto fail; Err codevoid.de 70 i+ if (mdi.type == AUDIO_MIXER_CLASS && Err codevoid.de 70 i+ strcmp(mdi.label.name, AudioCoutputs) == 0) Err codevoid.de 70 i+ cls = mdi.index; Err codevoid.de 70 i+ } Err codevoid.de 70 i+ for (mdi.index = 0, v = -1; v == -1; ++mdi.index) { Err codevoid.de 70 i+ if (ioctl(fd, AUDIO_MIXER_DEVINFO, &mdi) == -1) Err codevoid.de 70 i+ goto fail; Err codevoid.de 70 i+ if (mdi.type == AUDIO_MIXER_VALUE && Err codevoid.de 70 i+ mdi.prev == AUDIO_MIXER_LAST && Err codevoid.de 70 i+ mdi.mixer_class == cls && Err codevoid.de 70 i+ strcmp(mdi.label.name, AudioNmaster) == 0) { Err codevoid.de 70 i+ mc.dev = mdi.index; Err codevoid.de 70 i+ if (ioctl(fd, AUDIO_MIXER_READ, &mc) == -1) Err codevoid.de 70 i+ goto fail; Err codevoid.de 70 i+ v = MAX(mc.un.value.level[AUDIO_MIXER_LEVEL_MONO], Err codevoid.de 70 i+ mc.un.value.level[AUDIO_MIXER_LEVEL_RIGHT]); Err codevoid.de 70 i+ } Err codevoid.de 70 i+ } Err codevoid.de 70 i+ Err codevoid.de 70 i+ if (v == -1 || close(fd) == -1) Err codevoid.de 70 i+ return smprintf("NOCHAN"); Err codevoid.de 70 i+ Err codevoid.de 70 i+ return smprintf("%i", v * 100 / 255); Err codevoid.de 70 i+ Err codevoid.de 70 i+fail: Err codevoid.de 70 i+ (void)close(fd); Err codevoid.de 70 i+ return smprintf("FAILED"); Err codevoid.de 70 i } Err codevoid.de 70 i Err codevoid.de 70 i-char * getvolume(char *mixerpath) { Err codevoid.de 70 i- return smprintf("N/A"); Err codevoid.de 70 i-} Err codevoid.de 70 i- Err codevoid.de 70 i void settz(char *tzname) { Err codevoid.de 70 i setenv("TZ", tzname, 1); Err codevoid.de 70 i } Err codevoid.de 70 it@@ -211,7 +251,7 @@ void update() { Err codevoid.de 70 i // battery = smprintf("%i", getsysctl("hw.acpi.battery.life")); Err codevoid.de 70 i Err codevoid.de 70 i // audio volume Err codevoid.de 70 i- char *volume = getvolume("/dev/mixer"); Err codevoid.de 70 i+ char *volume = getvolume(); Err codevoid.de 70 i Err codevoid.de 70 i // free disk space (root/home) Err codevoid.de 70 i char *freehomespace = getfreespace("/home"); Err codevoid.de 70 .