Date: Sun, 8 Mar 1998 03:20:13 -0300 (EST) From: Joao Carlos Mendes Luis <jonny@coppe.ufrj.br> To: FreeBSD-gnats-submit@FreeBSD.ORG Subject: bin/5943: multi-device suport to mixer(8) Message-ID: <199803080620.DAA21620@gaia.coppe.ufrj.br>
next in thread | raw e-mail | index | archive | help
>Number: 5943
>Category: bin
>Synopsis: multi-device suport to mixer(8)
>Confidential: no
>Severity: non-critical
>Priority: medium
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Sat Mar 7 22:30:02 PST 1998
>Last-Modified:
>Originator: Joao Carlos Mendes Luis
>Organization:
COPPE/UFRJ
>Release: FreeBSD 2.2.5-STABLE i386
>Environment:
Any FreeSD with more than one soundcard installed.
>Description:
The current -stable /usr/sbin/mixer does not have a
way to specify multiple devices. Also, there's a
small misinterpretation on the man page.
>How-To-Repeat:
Try to change the mixer configuration of /dev/mixer1. :)
>Fix:
Here are some patches, with the following characteristics:
1) Support for mixer device specification, with -d flag
2) Cite the new sintax in the manual. There was a misinterpretation
on this subject previously. In the command "mixer +rec dev", dev
is a recording source and not a device. Change names to avoid
confusion.
3) -Wall clean
4) getopt clean
--- mixer.8.old Sun Mar 8 02:57:01 1998
+++ mixer.8 Sun Mar 8 03:09:55 1998
@@ -34,11 +34,13 @@
.Sh SYNOPSIS
.Nm
.Nm mixer
+.Op Fl d Ar dev
.Ar setting
.Op Ar lvalue:rvalue
.Nm mixer
+.Op Fl d Ar dev
.Ar +rec | -rec
-.Op Ar device
+.Op Ar source
.Sh DESCRIPTION
The
.Nm
@@ -78,10 +80,12 @@
argument. To stop recording, use the
.Ar -rec
argument. The optional argument
-.Ar device
-may be specified to use a different
-mixer device. The default device is
-.Pa /dev/mixer .
+.Ar source
+may be specified to select where to record from.
+.Pp
+The optional flag
+.Fl d
+may be specified to use a different mixer device.
.Sh FILES
.Bl -tag -width /dev/mixer -compact
.It Pa /dev/mixer
--- mixer.c.old Sun Mar 8 02:56:49 1998
+++ mixer.c Sun Mar 8 03:09:45 1998
@@ -18,12 +18,16 @@
#include <fcntl.h>
#include <stdio.h>
#include <string.h>
+#include <unistd.h>
+#include <stdlib.h>
#ifdef __FreeBSD__
#include <machine/soundcard.h>
#else
#include <sys/soundcard.h>
#endif
+#define DEFAULT_DEV "/dev/mixer"
+
char *names[SOUND_MIXER_NRDEVICES] = SOUND_DEVICE_NAMES;
int devmask = 0, recmask = 0, recsrc = 0;
@@ -31,7 +35,7 @@
void usage(void)
{
int i, n = 0;
- printf("usage: mixer { ");
+ printf("usage: mixer [-d dev] { ");
for (i = 0; i < SOUND_MIXER_NRDEVICES; i++)
if ((1 << i) & devmask) {
@@ -40,7 +44,7 @@
printf(names[i]);
n = 1;
}
- printf(" } <value>\n or mixer { +rec|-rec } <devicename>\n");
+ printf(" } <value>\n or mixer [-d dev] { +rec|-rec } <source>\n");
exit(1);
}
@@ -63,14 +67,26 @@
main(int argc, char *argv[])
{
int foo, bar, baz, dev;
-
- char name[30] = "/dev/mixer";
-
- if (!strcmp(argv[0], "mixer2"))
- strcpy(name, "/dev/mixer1");
- else
- if (!strcmp(argv[0], "mixer3"))
- strcpy(name, "/dev/mixer2");
+ char *name = DEFAULT_DEV;
+ int ch;
+ extern char *optarg;
+ extern int optind;
+
+ while ( ( ch = getopt( argc, argv, "hd:" ) ) != -1 ) {
+ switch ( ch ) {
+ case 'h':
+ usage();
+ /* NOTREACHED */
+ case 'd':
+ name = optarg;
+ break;
+ case '?':
+ default:
+ usage();
+ }
+ }
+ argc -= optind - 1;
+ argv += optind - 1;
if ((baz = open(name, O_RDWR)) < 0)
err(1, "%s", name);
@@ -166,4 +182,5 @@
}
close(baz);
+ return (0);
}
>Audit-Trail:
>Unformatted:
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199803080620.DAA21620>
