#include "strlcat.h"
#include "strlcpy.h"
-typedef char *(*op_fun) (const char *);
+typedef char *(*op_fun)();
struct arg {
op_fun func;
const char *format;
const char *args;
};
-void setstatus(const char *);
-char *smprintf(const char *, ...);
-char *battery_perc(const char *);
-char *cpu_perc(const char *);
-char *datetime(const char *);
-char *disk_free(const char *);
-char *disk_perc(const char *);
-char *disk_total(const char *);
-char *disk_used(const char *);
-char *entropy(const char *);
-char *gid(const char *);
-char *hostname(const char *);
-char *ip(const char *);
-char *load_avg(const char *);
-char *ram_free(const char *);
-char *ram_perc(const char *);
-char *ram_used(const char *);
-char *ram_total(const char *);
-char *run_command(const char *);
-char *temp(const char *);
-char *uid(const char *);
-char *uptime(const char *);
-char *username(const char *);
-char *vol_perc(const char *);
-char *wifi_perc(const char *);
-char *wifi_essid(const char *);
+static void setstatus(const char *);
+static char *smprintf(const char *, ...);
+static char *battery_perc(const char *);
+static char *cpu_perc(void);
+static char *datetime(const char *);
+static char *disk_free(const char *);
+static char *disk_perc(const char *);
+static char *disk_total(const char *);
+static char *disk_used(const char *);
+static char *entropy(void);
+static char *gid(void);
+static char *hostname(void);
+static char *ip(const char *);
+static char *load_avg(void);
+static char *ram_free(void);
+static char *ram_perc(void);
+static char *ram_used(void);
+static char *ram_total(void);
+static char *run_command(const char *);
+static char *temp(const char *);
+static char *uid(void);
+static char *uptime(void);
+static char *username(void);
+static char *vol_perc(const char *);
+static char *wifi_perc(const char *);
+static char *wifi_essid(const char *);
static Display *dpy;
#include "config.h"
-void
+static void
setstatus(const char *str)
{
/* set WM_NAME via X11 */
XSync(dpy, False);
}
-char *
+static char *
smprintf(const char *fmt, ...)
{
va_list fmtargs;
return ret;
}
-char *
+static char *
battery_perc(const char *battery)
{
int now, full, perc;
return smprintf("%d%%", perc);
}
-char *
-cpu_perc(const char *null)
+static char *
+cpu_perc(void)
{
int perc;
long double a[4], b[4];
return smprintf("%d%%", perc);
}
-char *
+static char *
datetime(const char *timeformat)
{
time_t tm;
return ret;
}
-char *
+static char *
disk_free(const char *mountpoint)
{
struct statvfs fs;
return smprintf("%f", (float)fs.f_bsize * (float)fs.f_bfree / 1024 / 1024 / 1024);
}
-char *
+static char *
disk_perc(const char *mountpoint)
{
int perc = 0;
return smprintf("%d%%", perc);
}
-char *
+static char *
disk_total(const char *mountpoint)
{
struct statvfs fs;
return smprintf("%f", (float)fs.f_bsize * (float)fs.f_blocks / 1024 / 1024 / 1024);
}
-char *
+static char *
disk_used(const char *mountpoint)
{
struct statvfs fs;
return smprintf("%f", (float)fs.f_bsize * ((float)fs.f_blocks - (float)fs.f_bfree) / 1024 / 1024 / 1024);
}
-char *
-entropy(const char *null)
+static char *
+entropy(void)
{
int entropy = 0;
FILE *fp;
return smprintf("%d", entropy);
}
-char *
-gid(const char *null)
+static char *
+gid(void)
{
- gid_t gid;
-
- if ((gid = getgid()) < 0) {
- fprintf(stderr, "Could no get gid.\n");
- return smprintf(unknowntext);
- } else
- return smprintf("%d", gid);
- return smprintf(unknowntext);
+ gid_t gid = getgid();
+ return smprintf("%d", gid);
}
-char *
-hostname(const char *null)
+static char *
+hostname(void)
{
char hostname[HOST_NAME_MAX];
FILE *fp;
return smprintf("%s", hostname);
}
-char *
+static char *
ip(const char *interface)
{
struct ifaddrs *ifaddr, *ifa;
return smprintf(unknowntext);
}
-char *
-load_avg(const char *null)
+static char *
+load_avg(void)
{
double avgs[3];
return smprintf("%.2f %.2f %.2f", avgs[0], avgs[1], avgs[2]);
}
-char *
-ram_free(const char *null)
+static char *
+ram_free(void)
{
long free;
FILE *fp;
return smprintf("%f", (float)free / 1024 / 1024);
}
-char *
-ram_perc(const char *null)
+static char *
+ram_perc(void)
{
int perc;
long total, free, buffers, cached;
return smprintf("%d%%", perc);
}
-char *
-ram_total(const char *null)
+static char *
+ram_total(void)
{
long total;
FILE *fp;
return smprintf("%f", (float)total / 1024 / 1024);
}
-char *
-ram_used(const char *null)
+static char *
+ram_used(void)
{
long free, total, buffers, cached, used;
FILE *fp;
return smprintf("%f", (float)used / 1024 / 1024);
}
-char *
+static char *
run_command(const char* command)
{
int good;
return smprintf("%s", buffer);
}
-char *
+static char *
temp(const char *file)
{
int temperature;
return smprintf("%d°C", temperature / 1000);
}
-char *
-uptime(const char *null)
+static char *
+uptime(void)
{
struct sysinfo info;
int hours = 0;
return smprintf("%dh %dm", hours, minutes);
}
-char *
-username(const char *null)
+static char *
+username(void)
{
register struct passwd *pw;
register uid_t uid;
return smprintf(unknowntext);
}
-char *
-uid(const char *null)
+static char *
+uid(void)
{
register uid_t uid;
}
-char *
+static char *
vol_perc(const char *soundcard)
{
int mute = 0;
pcm_mixer = snd_mixer_find_selem(handle, vol_info);
mas_mixer = snd_mixer_find_selem(handle, mute_info);
- snd_mixer_selem_get_playback_volume_range((snd_mixer_elem_t *)pcm_mixer, &min, &max);
- snd_mixer_selem_get_playback_volume((snd_mixer_elem_t *)pcm_mixer, SND_MIXER_SCHN_MONO, &vol);
+ snd_mixer_selem_get_playback_volume_range(pcm_mixer, &min, &max);
+ snd_mixer_selem_get_playback_volume(pcm_mixer, SND_MIXER_SCHN_MONO, &vol);
snd_mixer_selem_get_playback_switch(mas_mixer, SND_MIXER_SCHN_MONO, &mute);
if (vol_info)
return smprintf("%d%%", (vol * 100) / max);
}
-char *
+static char *
wifi_perc(const char *wificard)
{
int bufsize = 255;
return smprintf("%d%%", strength);
}
-char *
+static char *
wifi_essid(const char *wificard)
{
char id[IW_ESSID_MAX_SIZE+1];
int
main(void)
{
- char status_string[1024];
+ size_t i;
+ char status_string[4096];
+ char *res, *element;
struct arg argument;
if (!(dpy = XOpenDisplay(0x0))) {
for (;;) {
memset(status_string, 0, sizeof(status_string));
- for (size_t i = 0; i < sizeof(args) / sizeof(args[0]); ++i) {
+ for (i = 0; i < sizeof(args) / sizeof(args[0]); ++i) {
argument = args[i];
- char *res = argument.func(argument.args);
- char *element = smprintf(argument.format, res);
+ if (argument.args == NULL)
+ res = argument.func();
+ else
+ res = argument.func(argument.args);
+ element = smprintf(argument.format, res);
if (element == NULL) {
element = smprintf(unknowntext);
fprintf(stderr, "Failed to format output.\n");