Xinqi Bao's Git
1 /* See LICENSE file for copyright and license details. */
6 #if defined(__OpenBSD__)
9 #include <sys/soundcard.h>
11 #include <sys/ioctl.h>
17 vol_perc(const char *card
)
21 char *vnames
[] = SOUND_DEVICE_NAMES
;
23 if ((afd
= open(card
, O_RDONLY
| O_NONBLOCK
)) < 0) {
24 warn("open '%s':", card
);
28 if (ioctl(afd
, (int)SOUND_MIXER_READ_DEVMASK
, &devmask
) < 0) {
29 warn("ioctl 'SOUND_MIXER_READ_DEVMASK':");
33 for (i
= 0; i
< LEN(vnames
); i
++) {
34 if (devmask
& (1 << i
) && !strcmp("vol", vnames
[i
])) {
35 if (ioctl(afd
, MIXER_READ(i
), &v
) < 0) {
36 warn("ioctl 'MIXER_READ(%ld)':", i
);
45 return bprintf("%d%%", v
& 0xff);