X-Git-Url: https://git.xinqibao.xyz/slstatus.git/blobdiff_plain/7246dc4381c6c95454672a5c1aff65a02d6d3747..2b82bf02488147a3e69a715267934f015fe29a43:/components/volume.c

diff --git a/components/volume.c b/components/volume.c
index f5aa18d..41a112d 100644
--- a/components/volume.c
+++ b/components/volume.c
@@ -1,7 +1,11 @@
 /* See LICENSE file for copyright and license details. */
-#include <err.h>
+#include <errno.h>
 #include <fcntl.h>
-#include <sys/soundcard.h>
+#if defined(__OpenBSD__)
+# include <soundcard.h>
+#else
+# include <sys/soundcard.h>
+#endif
 #include <sys/ioctl.h>
 #include <stdio.h>
 #include <string.h>
@@ -18,19 +22,19 @@ vol_perc(const char *card)
 
 	afd = open(card, O_RDONLY | O_NONBLOCK);
 	if (afd == -1) {
-		warn("Cannot open %s", card);
+		fprintf(stderr, "open '%s': %s\n", card, strerror(errno));
 		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) == -1) {
+		fprintf(stderr, "ioctl 'SOUND_MIXER_READ_DEVMASK': %s\n", strerror(errno));
 		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");
+				fprintf(stderr, "ioctl 'MIXER_READ(%d)': %s\n", i, strerror(errno));
 				close(afd);
 				return NULL;
 			}