Can now choose the mixer device from the command line

This commit is contained in:
Pierre Pronchery 2009-12-13 17:32:02 +00:00
parent f87127e638
commit 4736107bd4
3 changed files with 16 additions and 6 deletions

View File

@ -26,7 +26,8 @@
/* usage */ /* usage */
static int _usage(void) static int _usage(void)
{ {
fputs("Usage: " PACKAGE "\n", stderr); fputs("Usage: " PACKAGE " [-d device]\n"
" -d The mixer device to use\n", stderr);
return 1; return 1;
} }
@ -35,18 +36,23 @@ static int _usage(void)
int main(int argc, char * argv[]) int main(int argc, char * argv[])
{ {
int o; int o;
char const * device = NULL;
Mixer * mixer; Mixer * mixer;
while((o = getopt(argc, argv, "")) != -1) while((o = getopt(argc, argv, "d:")) != -1)
switch(o) switch(o)
{ {
case 'd':
device = optarg;
break;
default: default:
return _usage(); return _usage();
} }
if(optind != argc) if(optind != argc)
return _usage(); return _usage();
gtk_init(&argc, &argv); gtk_init(&argc, &argv);
mixer = mixer_new(); if((mixer = mixer_new(device)) == NULL)
return 2;
gtk_main(); gtk_main();
mixer_delete(mixer); mixer_delete(mixer);
return 0; return 0;

View File

@ -111,7 +111,7 @@ static GtkWidget * _new_set(Mixer * mixer, int dev, struct audio_mixer_set * s);
static GtkWidget * _new_value(Mixer * mixer, int dev, static GtkWidget * _new_value(Mixer * mixer, int dev,
struct audio_mixer_value * v); struct audio_mixer_value * v);
Mixer * mixer_new(void) Mixer * mixer_new(char const * device)
{ {
Mixer * mixer; Mixer * mixer;
GtkAccelGroup * group; GtkAccelGroup * group;
@ -127,7 +127,9 @@ Mixer * mixer_new(void)
if((mixer = malloc(sizeof(*mixer))) == NULL) if((mixer = malloc(sizeof(*mixer))) == NULL)
return NULL; return NULL;
mixer->fd = open("/dev/mixer", O_RDWR); if(device == NULL)
device = "/dev/mixer";
mixer->fd = open(device, O_RDWR);
mixer->window = NULL; mixer->window = NULL;
mixer->properties = NULL; mixer->properties = NULL;
mixer->about = NULL; mixer->about = NULL;
@ -135,6 +137,8 @@ Mixer * mixer_new(void)
mixer->mc_cnt = 0; mixer->mc_cnt = 0;
if(mixer->fd < 0) if(mixer->fd < 0)
{ {
fprintf(stderr, "%s: %s: %s\n", PACKAGE, device,
strerror(errno));
mixer_delete(mixer); mixer_delete(mixer);
return NULL; return NULL;
} }

View File

@ -27,7 +27,7 @@ typedef struct _Mixer Mixer;
/* functions */ /* functions */
Mixer * mixer_new(void); Mixer * mixer_new(char const * device);
void mixer_delete(Mixer * mixer); void mixer_delete(Mixer * mixer);
/* accessors */ /* accessors */