summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--components/battery.c10
-rw-r--r--components/cpu.c4
-rw-r--r--components/datetime.c2
-rw-r--r--components/disk.c8
-rw-r--r--components/hostname.c2
-rw-r--r--components/ip.c8
-rw-r--r--components/kernel_release.c2
-rw-r--r--components/keyboard_indicators.c2
-rw-r--r--components/load_avg.c2
-rw-r--r--components/num_files.c2
-rw-r--r--components/run_command.c2
-rw-r--r--components/swap.c12
-rw-r--r--components/temperature.c3
-rw-r--r--components/uptime.c2
-rw-r--r--components/user.c2
-rw-r--r--components/volume.c8
-rw-r--r--components/wifi.c20
-rw-r--r--slstatus.c31
-rw-r--r--util.c48
-rw-r--r--util.h5
20 files changed, 99 insertions, 76 deletions
diff --git a/components/battery.c b/components/battery.c
index 49f43e6..807a7e6 100644
--- a/components/battery.c
+++ b/components/battery.c
@@ -59,13 +59,12 @@
fd = open("/dev/apm", O_RDONLY);
if (fd < 0) {
- fprintf(stderr, "open '/dev/apm': %s\n", strerror(errno));
+ warn("open '/dev/apm':");
return NULL;
}
if (ioctl(fd, APM_IOC_GETPOWER, &apm_info) < 0) {
- fprintf(stderr, "ioctl 'APM_IOC_GETPOWER': %s\n",
- strerror(errno));
+ warn("ioctl 'APM_IOC_GETPOWER':");
close(fd);
return NULL;
}
@@ -90,13 +89,12 @@
fd = open("/dev/apm", O_RDONLY);
if (fd < 0) {
- fprintf(stderr, "open '/dev/apm': %s\n", strerror(errno));
+ warn("open '/dev/apm':");
return NULL;
}
if (ioctl(fd, APM_IOC_GETPOWER, &apm_info) < 0) {
- fprintf(stderr, "ioctl 'APM_IOC_GETPOWER': %s\n",
- strerror(errno));
+ warn("ioctl 'APM_IOC_GETPOWER':");
close(fd);
return NULL;
}
diff --git a/components/cpu.c b/components/cpu.c
index 02e7671..b9b3924 100644
--- a/components/cpu.c
+++ b/components/cpu.c
@@ -57,7 +57,7 @@
size = sizeof(freq);
if (sysctl(mib, 2, &freq, &size, NULL, 0) < 0) {
- fprintf(stderr, "sysctl 'HW_CPUSPEED': %s\n", strerror(errno));
+ warn("sysctl 'HW_CPUSPEED':");
return NULL;
}
@@ -80,7 +80,7 @@
memcpy(b, a, sizeof(b));
if (sysctl(mib, 2, &a, &size, NULL, 0) < 0) {
- fprintf(stderr, "sysctl 'KERN_CPTIME': %s\n", strerror(errno));
+ warn("sysctl 'KERN_CPTIME':");
return NULL;
}
if (!valid) {
diff --git a/components/datetime.c b/components/datetime.c
index 12d7717..c3efae3 100644
--- a/components/datetime.c
+++ b/components/datetime.c
@@ -11,7 +11,7 @@ datetime(const char *fmt)
t = time(NULL);
if (!strftime(buf, sizeof(buf), fmt, localtime(&t))) {
- fprintf(stderr, "strftime: Result string exceeds buffer size\n");
+ warn("strftime: Result string exceeds buffer size");
return NULL;
}
diff --git a/components/disk.c b/components/disk.c
index bf69875..f4031ea 100644
--- a/components/disk.c
+++ b/components/disk.c
@@ -12,7 +12,7 @@ disk_free(const char *mnt)
struct statvfs fs;
if (statvfs(mnt, &fs) < 0) {
- fprintf(stderr, "statvfs '%s': %s\n", mnt, strerror(errno));
+ warn("statvfs '%s':", mnt);
return NULL;
}
@@ -26,7 +26,7 @@ disk_perc(const char *mnt)
struct statvfs fs;
if (statvfs(mnt, &fs) < 0) {
- fprintf(stderr, "statvfs '%s': %s\n", mnt, strerror(errno));
+ warn("statvfs '%s':", mnt);
return NULL;
}
@@ -40,7 +40,7 @@ disk_total(const char *mnt)
struct statvfs fs;
if (statvfs(mnt, &fs) < 0) {
- fprintf(stderr, "statvfs '%s': %s\n", mnt, strerror(errno));
+ warn("statvfs '%s':", mnt);
return NULL;
}
@@ -54,7 +54,7 @@ disk_used(const char *mnt)
struct statvfs fs;
if (statvfs(mnt, &fs) < 0) {
- fprintf(stderr, "statvfs '%s': %s\n", mnt, strerror(errno));
+ warn("statvfs '%s':", mnt);
return NULL;
}
diff --git a/components/hostname.c b/components/hostname.c
index d41465f..dc3bbf1 100644
--- a/components/hostname.c
+++ b/components/hostname.c
@@ -10,7 +10,7 @@ const char *
hostname(void)
{
if (gethostname(buf, sizeof(buf)) < 0) {
- fprintf(stderr, "gethostbyname: %s\n", strerror(errno));
+ warn("gethostbyname:");
return NULL;
}
diff --git a/components/ip.c b/components/ip.c
index 85ac15e..fce2b66 100644
--- a/components/ip.c
+++ b/components/ip.c
@@ -19,7 +19,7 @@ ipv4(const char *iface)
char host[NI_MAXHOST];
if (getifaddrs(&ifaddr) < 0) {
- fprintf(stderr, "getifaddrs: %s\n", strerror(errno));
+ warn("getifaddrs:");
return NULL;
}
@@ -32,7 +32,7 @@ ipv4(const char *iface)
if (!strcmp(ifa->ifa_name, iface) &&
(ifa->ifa_addr->sa_family == AF_INET)) {
if (s != 0) {
- fprintf(stderr, "getnameinfo: %s\n", gai_strerror(s));
+ warn("getnameinfo: %s", gai_strerror(s));
return NULL;
}
return bprintf("%s", host);
@@ -52,7 +52,7 @@ ipv6(const char *iface)
char host[NI_MAXHOST];
if (getifaddrs(&ifaddr) < 0) {
- fprintf(stderr, "getifaddrs: %s\n", strerror(errno));
+ warn("getifaddrs:");
return NULL;
}
@@ -65,7 +65,7 @@ ipv6(const char *iface)
if (!strcmp(ifa->ifa_name, iface) &&
(ifa->ifa_addr->sa_family == AF_INET6)) {
if (s != 0) {
- fprintf(stderr, "getnameinfo: %s\n", gai_strerror(s));
+ warn("getnameinfo: %s", gai_strerror(s));
return NULL;
}
return bprintf("%s", host);
diff --git a/components/kernel_release.c b/components/kernel_release.c
index 4e67a28..531014c 100644
--- a/components/kernel_release.c
+++ b/components/kernel_release.c
@@ -12,7 +12,7 @@ kernel_release(void)
struct utsname udata;
if (uname(&udata) < 0) {
- fprintf(stderr, "uname: %s\n", strerror(errno));
+ warn("uname:");
return NULL;
}
diff --git a/components/keyboard_indicators.c b/components/keyboard_indicators.c
index 2f831c8..73ba32e 100644
--- a/components/keyboard_indicators.c
+++ b/components/keyboard_indicators.c
@@ -11,7 +11,7 @@ keyboard_indicators(void)
XKeyboardState state;
if (!(dpy = XOpenDisplay(NULL))) {
- fprintf(stderr, "Cannot open display\n");
+ warn("XOpenDisplay: Failed to open display");
return NULL;
}
XGetKeyboardControl(dpy, &state);
diff --git a/components/load_avg.c b/components/load_avg.c
index 526dc71..ea7bc2c 100644
--- a/components/load_avg.c
+++ b/components/load_avg.c
@@ -10,7 +10,7 @@ load_avg(const char *fmt)
double avgs[3];
if (getloadavg(avgs, 3) < 0) {
- fprintf(stderr, "getloadavg: Could not obtain load average.\n");
+ warn("getloadavg: Failed to obtain load average");
return NULL;
}
diff --git a/components/num_files.c b/components/num_files.c
index 327a64d..9179037 100644
--- a/components/num_files.c
+++ b/components/num_files.c
@@ -14,7 +14,7 @@ num_files(const char *dir)
int num;
if (!(fd = opendir(dir))) {
- fprintf(stderr, "opendir '%s': %s\n", dir, strerror(errno));
+ warn("opendir '%s':", dir);
return NULL;
}
diff --git a/components/run_command.c b/components/run_command.c
index 1aaae20..b5eeff0 100644
--- a/components/run_command.c
+++ b/components/run_command.c
@@ -12,7 +12,7 @@ run_command(const char *cmd)
FILE *fp;
if (!(fp = popen(cmd, "r"))) {
- fprintf(stderr, "popen '%s': %s\n", cmd, strerror(errno));
+ warn("popen '%s':", cmd);
return NULL;
}
p = fgets(buf, sizeof(buf) - 1, fp);
diff --git a/components/swap.c b/components/swap.c
index caa4788..234e7d1 100644
--- a/components/swap.c
+++ b/components/swap.c
@@ -13,11 +13,11 @@
size_t bytes_read;
if (!(fp = fopen(path, "r"))) {
- fprintf(stderr, "fopen '%s': %s\n", path, strerror(errno));
+ warn("fopen '%s':", path);
return 0;
}
if (!(bytes_read = fread(buf, sizeof(char), bufsiz, fp))) {
- fprintf(stderr, "fread '%s': %s\n", path, strerror(errno));
+ warn("fread '%s':", path);
fclose(fp);
return 0;
}
@@ -139,21 +139,21 @@
nswap = swapctl(SWAP_NSWAP, 0, 0);
if (nswap < 1) {
- fprintf(stderr, "swaptctl 'SWAP_NSWAP': %s\n", strerror(errno));
+ warn("swaptctl 'SWAP_NSWAP':");
}
fsep = sep = calloc(nswap, sizeof(*sep));
if (!sep) {
- fprintf(stderr, "calloc 'nswap': %s\n", strerror(errno));
+ warn("calloc 'nswap':");
}
rnswap = swapctl(SWAP_STATS, (void *)sep, nswap);
if (rnswap < 0) {
- fprintf(stderr, "swapctl 'SWAP_STATA': %s\n", strerror(errno));
+ warn("swapctl 'SWAP_STATA':");
}
if (nswap != rnswap) {
- fprintf(stderr, "SWAP_STATS != SWAP_NSWAP\n");
+ warn("getstats: SWAP_STATS != SWAP_NSWAP");
}
*total = 0;
diff --git a/components/temperature.c b/components/temperature.c
index 812ae77..64199f5 100644
--- a/components/temperature.c
+++ b/components/temperature.c
@@ -36,8 +36,7 @@
size = sizeof(temp);
if (sysctl(mib, 5, &temp, &size, NULL, 0) < 0) {
- fprintf(stderr, "sysctl 'SENSOR_TEMP': %s\n",
- strerror(errno));
+ warn("sysctl 'SENSOR_TEMP':");
return NULL;
}
diff --git a/components/uptime.c b/components/uptime.c
index 981f3cd..45e12db 100644
--- a/components/uptime.c
+++ b/components/uptime.c
@@ -50,7 +50,7 @@ format(int uptime)
size = sizeof(boottime);
if (sysctl(mib, 2, &boottime, &size, NULL, 0) < 0) {
- fprintf(stderr, "sysctl 'KERN_BOOTTIME': %s\n", strerror(errno));
+ warn("sysctl 'KERN_BOOTTIME':");
return NULL;
}
diff --git a/components/user.c b/components/user.c
index 8ab6db9..cd503f6 100644
--- a/components/user.c
+++ b/components/user.c
@@ -20,7 +20,7 @@ username(void)
struct passwd *pw;
if (!(pw = getpwuid(geteuid()))) {
- fprintf(stderr, "getpwuid '%d': %s\n", geteuid(), strerror(errno));
+ warn("getpwuid '%d':", geteuid());
return NULL;
}
diff --git a/components/volume.c b/components/volume.c
index aa46446..8674211 100644
--- a/components/volume.c
+++ b/components/volume.c
@@ -21,21 +21,19 @@ vol_perc(const char *card)
char *vnames[] = SOUND_DEVICE_NAMES;
if ((afd = open(card, O_RDONLY | O_NONBLOCK)) < 0) {
- fprintf(stderr, "open '%s': %s\n", card, strerror(errno));
+ warn("open '%s':", card);
return NULL;
}
if (ioctl(afd, (int)SOUND_MIXER_READ_DEVMASK, &devmask) < 0) {
- fprintf(stderr, "ioctl 'SOUND_MIXER_READ_DEVMASK': %s\n",
- strerror(errno));
+ warn("ioctl 'SOUND_MIXER_READ_DEVMASK':");
close(afd);
return NULL;
}
for (i = 0; i < LEN(vnames); i++) {
if (devmask & (1 << i) && !strcmp("vol", vnames[i])) {
if (ioctl(afd, MIXER_READ(i), &v) < 0) {
- fprintf(stderr, "ioctl 'MIXER_READ(%ld)': %s\n", i,
- strerror(errno));
+ warn("ioctl 'MIXER_READ(%ld)':", i);
close(afd);
return NULL;
}
diff --git a/components/wifi.c b/components/wifi.c
index 414d533..591f6ad 100644
--- a/components/wifi.c
+++ b/components/wifi.c
@@ -26,8 +26,7 @@
snprintf(path, sizeof(path), "%s%s%s", "/sys/class/net/", iface,
"/operstate");
if (!(fp = fopen(path, "r"))) {
- fprintf(stderr, "fopen '%s': %s\n", path,
- strerror(errno));
+ warn("fopen '%s':", path);
return NULL;
}
p = fgets(status, 5, fp);
@@ -37,8 +36,7 @@
}
if (!(fp = fopen("/proc/net/wireless", "r"))) {
- fprintf(stderr, "fopen '/proc/net/wireless': %s\n",
- strerror(errno));
+ warn("fopen '/proc/net/wireless':");
return NULL;
}
@@ -74,13 +72,12 @@
snprintf(wreq.ifr_name, sizeof(wreq.ifr_name), "%s", iface);
if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
- fprintf(stderr, "socket 'AF_INET': %s\n",
- strerror(errno));
+ warn("socket 'AF_INET':");
return NULL;
}
wreq.u.essid.pointer = id;
if (ioctl(sockfd,SIOCGIWESSID, &wreq) < 0) {
- fprintf(stderr, "ioctl 'SIOCGIWESSID': %s\n", strerror(errno));
+ warn("ioctl 'SIOCGIWESSID':");
close(sockfd);
return NULL;
}
@@ -111,22 +108,19 @@
memset(&bssid, 0, sizeof(bssid));
memset(nr, 0, sizeof(struct ieee80211_nodereq));
if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
- fprintf(stderr, "socket 'AF_INET': %s\n",
- strerror(errno));
+ warn("socket 'AF_INET':");
return 0;
}
strlcpy(bssid.i_name, iface, sizeof(bssid.i_name));
if ((ioctl(sockfd, SIOCG80211BSSID, &bssid)) < 0) {
- fprintf(stderr, "ioctl 'SIOCG80211BSSID': %s\n",
- strerror(errno));
+ warn("ioctl 'SIOCG80211BSSID':");
close(sockfd);
return 0;
}
strlcpy(nr->nr_ifname, iface, sizeof(nr->nr_ifname));
memcpy(&nr->nr_macaddr, bssid.i_bssid, sizeof(nr->nr_macaddr));
if ((ioctl(sockfd, SIOCG80211NODE, nr)) < 0 && nr->nr_rssi) {
- fprintf(stderr, "ioctl 'SIOCG80211NODE': %s\n",
- strerror(errno));
+ warn("ioctl 'SIOCG80211NODE':");
close(sockfd);
return 0;
}
diff --git a/slstatus.c b/slstatus.c
index 7ff323f..0c4605f 100644
--- a/slstatus.c
+++ b/slstatus.c
@@ -17,7 +17,6 @@ struct arg {
const char *args;
};
-char *argv0;
char buf[1024];
static int done;
static Display *dpy;
@@ -43,8 +42,7 @@ difftimespec(struct timespec *res, struct timespec *a, struct timespec *b)
static void
usage(void)
{
- fprintf(stderr, "usage: %s [-s]\n", argv0);
- exit(1);
+ die("usage: %s [-s]", argv0);
}
int
@@ -80,14 +78,12 @@ main(int argc, char *argv[])
}
if (!sflag && !(dpy = XOpenDisplay(NULL))) {
- fprintf(stderr, "XOpenDisplay: Failed to open display\n");
- return 1;
+ die("XOpenDisplay: Failed to open display");
}
while (!done) {
if (clock_gettime(CLOCK_MONOTONIC, &start) < 0) {
- fprintf(stderr, "clock_gettime: %s\n", strerror(errno));
- return 1;
+ die("clock_gettime:");
}
status[0] = '\0';
@@ -97,11 +93,10 @@ main(int argc, char *argv[])
}
if ((ret = snprintf(status + len, sizeof(status) - len,
args[i].fmt, res)) < 0) {
- fprintf(stderr, "snprintf: %s\n",
- strerror(errno));
+ warn("snprintf:");
break;
} else if ((size_t)ret >= sizeof(status) - len) {
- fprintf(stderr, "snprintf: Output truncated\n");
+ warn("snprintf: Output truncated");
break;
}
len += ret;
@@ -111,18 +106,14 @@ main(int argc, char *argv[])
printf("%s\n", status);
} else {
if (XStoreName(dpy, DefaultRootWindow(dpy), status) < 0) {
- fprintf(stderr,
- "XStoreName: Allocation failed\n");
- return 1;
+ die("XStoreName: Allocation failed");
}
XFlush(dpy);
}
if (!done) {
if (clock_gettime(CLOCK_MONOTONIC, &current) < 0) {
- fprintf(stderr, "clock_gettime: %s\n",
- strerror(errno));
- return 1;
+ die("clock_gettime:");
}
difftimespec(&diff, &current, &start);
@@ -133,9 +124,7 @@ main(int argc, char *argv[])
if (wait.tv_sec >= 0) {
if (nanosleep(&wait, NULL) < 0 &&
errno != EINTR) {
- fprintf(stderr, "nanosleep: %s\n",
- strerror(errno));
- return 1;
+ die("nanosleep:");
}
}
}
@@ -144,9 +133,7 @@ main(int argc, char *argv[])
if (!sflag) {
XStoreName(dpy, DefaultRootWindow(dpy), NULL);
if (XCloseDisplay(dpy) < 0) {
- fprintf(stderr,
- "XCloseDisplay: Failed to close display\n");
- return 1;
+ die("XCloseDisplay: Failed to close display");
}
}
diff --git a/util.c b/util.c
index 6113049..08f14ff 100644
--- a/util.c
+++ b/util.c
@@ -2,10 +2,52 @@
#include <errno.h>
#include <stdarg.h>
#include <stdio.h>
+#include <stdlib.h>
#include <string.h>
#include "util.h"
+char *argv0;
+
+static void
+verr(const char *fmt, va_list ap)
+{
+ if (argv0 && strncmp(fmt, "usage", sizeof("usage") - 1)) {
+ fprintf(stderr, "%s: ", argv0);
+ }
+
+ vfprintf(stderr, fmt, ap);
+
+ if (fmt[0] && fmt[strlen(fmt) - 1] == ':') {
+ fputc(' ', stderr);
+ perror(NULL);
+ } else {
+ fputc('\n', stderr);
+ }
+}
+
+void
+warn(const char *fmt, ...)
+{
+ va_list ap;
+
+ va_start(ap, fmt);
+ verr(fmt, ap);
+ va_end(ap);
+}
+
+void
+die(const char *fmt, ...)
+{
+ va_list ap;
+
+ va_start(ap, fmt);
+ verr(fmt, ap);
+ va_end(ap);
+
+ exit(1);
+}
+
const char *
bprintf(const char *fmt, ...)
{
@@ -14,9 +56,9 @@ bprintf(const char *fmt, ...)
va_start(ap, fmt);
if ((ret = vsnprintf(buf, sizeof(buf), fmt, ap)) < 0) {
- fprintf(stderr, "vsnprintf: %s\n", strerror(errno));
+ warn("vsnprintf:");
} else if ((size_t)ret >= sizeof(buf)) {
- fprintf(stderr, "vsnprintf: Output truncated\n");
+ warn("vsnprintf: Output truncated");
}
va_end(ap);
@@ -31,7 +73,7 @@ pscanf(const char *path, const char *fmt, ...)
int n;
if (!(fp = fopen(path, "r"))) {
- fprintf(stderr, "fopen '%s': %s\n", path, strerror(errno));
+ warn("fopen '%s':", path);
return -1;
}
va_start(ap, fmt);
diff --git a/util.h b/util.h
index e90c29d..a73b103 100644
--- a/util.h
+++ b/util.h
@@ -3,5 +3,10 @@ extern char buf[1024];
#define LEN(x) (sizeof (x) / sizeof *(x))
+extern char *argv0;
+
+void warn(const char *, ...);
+void die(const char *, ...);
+
const char *bprintf(const char *fmt, ...);
int pscanf(const char *path, const char *fmt, ...);