- Use block for single statement ifs - Keep lines to reasonable length (current debate as to reasonable) - When functions return -1 for error test against 0 not -1 - Do not indent cases another level - Do not test against NULL and 0 explicitly - Use tabs for indentation, use spaces for alignment
		
			
				
	
	
		
			49 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/* See LICENSE file for copyright and license details. */
 | 
						|
#include <errno.h>
 | 
						|
#include <fcntl.h>
 | 
						|
#if defined(__OpenBSD__)
 | 
						|
# include <soundcard.h>
 | 
						|
#else
 | 
						|
# include <sys/soundcard.h>
 | 
						|
#endif
 | 
						|
#include <sys/ioctl.h>
 | 
						|
#include <stdio.h>
 | 
						|
#include <string.h>
 | 
						|
#include <unistd.h>
 | 
						|
 | 
						|
#include "../util.h"
 | 
						|
 | 
						|
const char *
 | 
						|
vol_perc(const char *card)
 | 
						|
{
 | 
						|
	unsigned int i;
 | 
						|
	int v, afd, devmask;
 | 
						|
	char *vnames[] = SOUND_DEVICE_NAMES;
 | 
						|
 | 
						|
	if ((afd = open(card, O_RDONLY | O_NONBLOCK)) < 0) {
 | 
						|
		fprintf(stderr, "open '%s': %s\n", card, strerror(errno));
 | 
						|
		return NULL;
 | 
						|
	}
 | 
						|
 | 
						|
	if (ioctl(afd, (int)SOUND_MIXER_READ_DEVMASK, &devmask) < 0) {
 | 
						|
		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) < 0) {
 | 
						|
				fprintf(stderr, "ioctl 'MIXER_READ(%d)': %s\n", i,
 | 
						|
				        strerror(errno));
 | 
						|
				close(afd);
 | 
						|
				return NULL;
 | 
						|
			}
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	close(afd);
 | 
						|
 | 
						|
	return bprintf("%d", v & 0xff);
 | 
						|
}
 |