Re: [LAD] [alsa-devel] announcing envy24control, mudita (*) edition.

From: Niels Mayer <nielsmayer@email-addr-hidden>
Date: Wed Aug 04 2010 - 08:55:14 EEST

On Tue, Aug 3, 2010 at 10:38 PM, Raymond Yau
<superquad.vortex2@gmail.com> wrote:
> 2010/8/4 Niels Mayer <nielsmayer@gmail.com>
>>   * fixed --card and --device to allow valid ALSA names and numbers
>>        ( https://bugzilla.redhat.com/show_bug.cgi?id=602900 ).
>
> ./envy24control -Ddefault
>
> card_number = atoi(strchr(name, ':') + sizeof(char));
>
> This bug seem still occur when name does not contain ":" since ctl device is
> "hw:n" where n is card number

I used similar code to what's in alsamixer to perform the same
functions as the old broken code. Now the code behaves as follows:

gnulem-238-~> envy24control -Dhw:default
envy24control: invalid ALSA audio device, invalid index or name for
card: hw:default
gnulem-239-~> envy24control -Dhw:M66
using --- input_channels: 4
         --- output_channels: 4
         --- pcm_output_channels: 8
         --- spdif in/out channels: 2
gnulem-240-~> envy24control -Dhw:M66.0
envy24control: invalid ALSA audio device, invalid index or name for
card: hw:M66.0
gnulem-241-~> envy24control -Dhw:M66,0
envy24control: invalid ALSA audio device, invalid index or name for
card: hw:M66,0
gnulem-242-~> envy24control -DM66
envy24control: ALSA audio device syntax expects ':' character: M66

Current code:

        while ((c = getopt_long(argc, argv, "D:c:f:i:m:Mo:p:s:w:vt:ng:",
long_options, NULL)) != -1) {
                switch (c) {
                case 'D':
                        name = optarg;
                        if (!index(name, ':')) {
                          fprintf(stderr, "envy24control: ALSA audio device syntax expects
':' character: %s\n", optarg);
                          exit(1);
                        }
                        card_number = snd_card_get_index(strchr(name, ':') + sizeof(char));
/* NPM: use correct ALSA-specific call to fix
https://bugzilla.redhat.com/show_bug.cgi?id=602900 */
                        if (card_number < 0) { /* NPM: code orig from alsa-utils/alsamixer/cli.c */
                          fprintf(stderr, "envy24control: invalid ALSA audio device,
invalid index or name for card: %s\n", optarg);
                          exit(1);
                        }
                        break;
                case 'c':
                        card_number = snd_card_get_index(optarg); /* NPM: use correct
ALSA-specific call to fix
https://bugzilla.redhat.com/show_bug.cgi?id=602900 */
                        if (card_number < 0) { /* NPM: code orig from alsa-utils/alsamixer/cli.c */
                                fprintf(stderr, "envy24control: invalid ALSA index or name for
audio card: %s\n", optarg);
                                exit(1);
                        }
                        sprintf(tmpname, "hw:%d", card_number);
                        name = tmpname;
                        break;

-- Niels
http://nielsmayer.com
_______________________________________________
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev
Received on Wed Aug 4 12:15:02 2010

This archive was generated by hypermail 2.1.8 : Wed Aug 04 2010 - 12:15:02 EEST