Xinqi Bao's Git

Simplify format specifiers for uintmax_t
[slstatus.git] / components / volume.c
index ec653a2..8a70b20 100644 (file)
@@ -1,10 +1,13 @@
 /* See LICENSE file for copyright and license details. */
-#if defined(__linux__)
 #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) {
-               fprintf(stderr, "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) {
-               fprintf(stderr, "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) {
-                               fprintf(stderr, "vol_perc: ioctl");
+                       if (ioctl(afd, MIXER_READ(i), &v) < 0) {
+                               warn("ioctl 'MIXER_READ(%ld)':", i);
                                close(afd);
                                return NULL;
                        }
@@ -41,4 +43,3 @@ vol_perc(const char *card)
 
        return bprintf("%d", v & 0xff);
 }
-#endif