#include <unistd.h>
#include <X11/Xlib.h>
-/* global variables */
-static Display *dpy;
-
-/* statusbar configuration type and struct */
-typedef char *(*op_fun) (const char *);
-struct arg {
- op_fun func;
- const char *format;
- const char *args;
-};
-
-/* functions */
-void setstatus(const char *);
-char *smprintf(const char *, ...);
-char *get_battery(const char *);
-char *get_cpu_temperature(const char *);
-char *get_cpu_usage(const char *);
-char *get_datetime(const char *);
-char *get_diskusage(const char *);
-char *get_ram_usage(const char *);
-char *get_volume(const char *);
-char *get_wifi_signal(const char *);
-
-/* include config header */
+/* local headers */
+#include "slstatus.h"
#include "config.h"
/* set statusbar */
setlocale(LC_TIME, "C");
/* return time */
- return smprintf("%s", buf);
+ char *ret = smprintf("%s", buf);
+ free(buf);
+ return ret;
}
/* disk usage percentage */
/* return status every interval */
for (;;) {
/* clear the string */
- strcpy(status_string, "");
+ memset(status_string, 0, sizeof(status_string));
/* generate status_string */
for (size_t i = 0; i < sizeof(args) / sizeof(args[0]); ++i) {
char *res = argument.func(argument.args);
char *element = smprintf(argument.format, res);
strcat(status_string, element);
+ free(res);
+ free(element);
}
/* return the statusbar */