Xinqi Bao's Git

Change to fmt_human in netspeeds on OpenBSD
[slstatus.git] / components / volume.c
index f5aa18d..8674211 100644 (file)
@@ -1,10 +1,14 @@
 /* See LICENSE file for copyright and license details. */
-#include <err.h>
+#include <errno.h>
 #include <fcntl.h>
-#include <sys/soundcard.h>
-#include <sys/ioctl.h>
 #include <stdio.h>
 #include <string.h>
+#if defined(__OpenBSD__)
+       #include <soundcard.h>
+#else
+       #include <sys/soundcard.h>
+#endif
+#include <sys/ioctl.h>
 #include <unistd.h>
 
 #include "../util.h"
 const char *
 vol_perc(const char *card)
 {
-       unsigned int i;
+       size_t i;
        int v, afd, devmask;
        char *vnames[] = SOUND_DEVICE_NAMES;
 
-       afd = open(card, O_RDONLY | O_NONBLOCK);
-       if (afd == -1) {
-               warn("Cannot open %s", card);
+       if ((afd = open(card, O_RDONLY | O_NONBLOCK)) < 0) {
+               warn("open '%s':", card);
                return NULL;
        }
 
-       if (ioctl(afd, SOUND_MIXER_READ_DEVMASK, &devmask) == -1) {
-               warn("Cannot get volume for %s", card);
+       if (ioctl(afd, (int)SOUND_MIXER_READ_DEVMASK, &devmask) < 0) {
+               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) == -1) {
-                               warn("vol_perc: ioctl");
+                       if (ioctl(afd, MIXER_READ(i), &v) < 0) {
+                               warn("ioctl 'MIXER_READ(%ld)':", i);
                                close(afd);
                                return NULL;
                        }