X-Git-Url: https://git.xinqibao.xyz/slstatus.git/blobdiff_plain/faa52bdcc0221de2d8fae950e409a8ac5e05bfcd..96ddf4e1dee808d6ae8162fc1a13126a3d4c77dc:/components/volume.c?ds=sidebyside

diff --git a/components/volume.c b/components/volume.c
index 4c9a6ac..8a70b20 100644
--- a/components/volume.c
+++ b/components/volume.c
@@ -1,11 +1,13 @@
 /* See LICENSE file for copyright and license details. */
-#if defined(__linux__)
-#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"
@@ -13,25 +15,24 @@
 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, "open '%s': %s\n", card, strerror(errno));
+	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, "ioctl 'SOUND_MIXER_READ_DEVMASK': %s\n", strerror(errno));
+	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, "ioctl 'MIXER_READ(%d)': %s\n", i, strerror(errno));
+			if (ioctl(afd, MIXER_READ(i), &v) < 0) {
+				warn("ioctl 'MIXER_READ(%ld)':", i);
 				close(afd);
 				return NULL;
 			}
@@ -42,4 +43,3 @@ vol_perc(const char *card)
 
 	return bprintf("%d", v & 0xff);
 }
-#endif