* dwmstatus for OpenBSD
       
   URI git clone git://git.codevoid.de/dwmstatus-sdk
   DIR Log
   DIR Files
   DIR Refs
   DIR LICENSE
       ---
   DIR commit abbd44de441b7dc0e666dae0c5f162f701d53480
   DIR parent 8d73323fbabab911e9fc12c40d6367c9e762d3a4
   URI Author: Stefan Hagen <sh+git[at]codevoid[dot]de>
       Date:   Sun,  3 Jun 2018 12:03:16 +0200
       
       remove unneeded files, add getfreespace()
       
       Diffstat:
         M config.mk                           |       4 ++--
         D dwmstatus-temperature.c             |      15 ---------------
         M dwmstatus.c                         |      29 +++++++++++++++++++++++++----
         D new-acpi-battery.c                  |      55 -------------------------------
       
       4 files changed, 27 insertions(+), 76 deletions(-)
       ---
   DIR diff --git a/config.mk b/config.mk
       @@ -20,9 +20,9 @@ LIBS = -L/usr/local/lib -lc -L${X11LIB} -lX11
        
        # flags
        CPPFLAGS = -DVERSION=\"${VERSION}\" -D_DEFAULT_SOURCE
       -CFLAGS = -g -std=c99 -pedantic -Wall -O0 ${INCS} ${CPPFLAGS}
       +CFLAGS = -std=c99 -pedantic -Wall -O0 ${INCS} ${CPPFLAGS}
        #CFLAGS = -std=c99 -pedantic -Wall -Os ${INCS} ${CPPFLAGS}
       -LDFLAGS = -g ${LIBS}
       +LDFLAGS = ${LIBS}
        #LDFLAGS = -s ${LIBS}
        
        # Solaris
   DIR diff --git a/dwmstatus-temperature.c b/dwmstatus-temperature.c
       @@ -1,15 +0,0 @@
       -/*
       - * gettemperature("/sys/class/hwmon/hwmon0/device", "temp1_input");
       - */
       -
       -char *
       -gettemperature(char *base, char *sensor)
       -{
       -        char *co;
       -
       -        co = readfile(base, sensor);
       -        if (co == NULL)
       -                return smprintf("");
       -        return smprintf("%02.0f°C", atof(co) / 1000);
       -}
       -
   DIR diff --git a/dwmstatus.c b/dwmstatus.c
       @@ -23,6 +23,15 @@
        
        #include <X11/Xlib.h>
        
       +// getfreespace
       +#include <sys/param.h>
       +#include <sys/mount.h>
       +
       +
       +
       +// configuration
       +#define UPDATE_INTERVAL 1
       +
        // conversation presets
        #define ZEROCTOC(x) ((x)-2731) / 10
        #define BTOMB(x) ((x)*1048576
       @@ -56,6 +65,14 @@ smprintf(char *fmt, ...)
            return ret;
        }
        
       +/* Free space by path */
       +char *
       +getfreespace(const char *path) {
       +    struct statfs vfs;
       +    statfs(path, &vfs);
       +    return smprintf("%ld", (vfs.f_bavail * vfs.f_bsize) / 1024 / 1024);
       +}
       +
        /* Use FreeBSDs sysctl to retrieve information
         * Sysctl may return different types, so you want
         * to call the appropriate smprintf() in main();
       @@ -244,9 +261,12 @@ void update() {
            char *cpufreq;
            char *battery;
            char *volume;
       +    char *freespace;
        
            // cpu temperature
            cputemp  = smprintf("%i", ZEROCTOC((int)getsysctl("hw.acpi.thermal.tz0.temperature")));
       +
       +    // cpu frequency
            cpufreq  = smprintf("%i", getsysctl("dev.cpu.0.freq"));
        
            // battery
       @@ -259,15 +279,16 @@ void update() {
            // TBD
        
            // free disk space (root/home)
       -    // TBD
       +    freespace = smprintf("%s", getfreespace("/"));
        
            // date and time
            datetime = mktimes("%d.%m.%Y %H:%M", tzberlin);
        
            // assemble and display
       -    status   = smprintf(" LOAD:%s TEMP:%s°C FREQ:%sMhz BAT:%s%% VOL:%s | %s ", loadavg(), cputemp, cpufreq, battery, volume, datetime);
       +    status   = smprintf("/:%sMB LOAD:%s TEMP:%s°C FREQ:%sMhz BAT:%s%% VOL:%s | %s ", freespace, loadavg(), cputemp, cpufreq, battery, volume, datetime);
            setstatus(status);
        
       +    free(freespace);
            free(volume);
            free(battery);
            free(cputemp);
       @@ -296,10 +317,10 @@ main(void)
        
            // register signal handler
            if (signal(SIGUSR1, sig_handler) == SIG_ERR)
       -        fprintf(stderr, "Err: can't register SIGUSR1\n");
       +        fprintf(stderr, "Err: can't register update signal (SIGUSR1)\n");
        
            // update status
       -    for (;;sleep(60)) {
       +    for (;;sleep(UPDATE_INTERVAL)) {
                update();
            }
        
   DIR diff --git a/new-acpi-battery.c b/new-acpi-battery.c
       @@ -1,55 +0,0 @@
       -char *
       -readfile(char *base, char *file)
       -{
       -        char *path, line[513];
       -        FILE *fd;
       -
       -        memset(line, 0, sizeof(line));
       -
       -        path = smprintf("%s/%s", base, file);
       -        fd = fopen(path, "r");
       -        if (fd == NULL) {
       -                perror("fopen");
       -                exit(1);
       -        }
       -        free(path);
       -
       -        if (fgets(line, sizeof(line)-1, fd) == NULL) {
       -                perror("fgets");
       -                exit(1);
       -        }
       -        fclose(fd);
       -
       -        return smprintf("%s", line);
       -}
       -
       -char *
       -getbattery(char *base)
       -{
       -        char *co;
       -        int descap, remcap;
       -
       -        descap = -1;
       -        remcap = -1;
       -
       -        co = readfile(base, "present");
       -        if (co[0] != '1') {
       -                free(co);
       -                return smprintf("not present");
       -        }
       -        free(co);
       -
       -        co = readfile(base, "charge_full_design");
       -        sscanf(co, "%d", &descap);
       -        free(co);
       -
       -        co = readfile(base, "charge_now");
       -        sscanf(co, "%d", &remcap);
       -        free(co);
       -
       -        if (remcap < 0 || descap < 0)
       -                return smprintf("invalid");
       -
       -        return smprintf("%.0f", ((float)remcap / (float)descap) * 100);
       -}
       -