I have a small perl script which I am working on. The idea is to autodetect
a card/s and create a modules.conf based on that either at configure or as
a seperate process.

Can anyone who is more fluent in perl give me a hint as to how I can 
compare the output of list_pci to list_modules and return the correct 
card name and module?

The script has two subs. They just parse the /proc/pci and the INSTALL 
file to get the current output. It has to be run from the alsa-driver dir.


-- 
Patrick Shirkey - Boost Hardware Ltd.
For the discerning hardware connoisseur
Http://www.boosthardware.com
Http://www.boosthardware.com/LAU/guide/
========================================


sub list_pci {

        open (FILE, "/proc/pci") 
        or die "Cannot open /proc/pci. \n Do you have permission to access this file?";
   
    for $linepci (<FILE>) {
        
        if ($linepci =~ /Multimedia audio controller/g) {
        print $linepci;
        }
    }

#    close FILE;

}

sub list_modules {

        open (FILE, "INSTALL") 
        or die "Cannot open INSTALL. \n Do you have permission to access this file?";
   
        for $linemodule (<FILE>) {

        if ($linemodule =~ /\.o$/) {
#               print  $linemodule;
                        while (<>) {
                                foreach $word ( split ) { 
                                        # do something with $word here
                                        print "$linemodule\n" ;
                                        } 
                                }  
#               print  $linemodule;

                }
        }

#    close FILE;
}


# Output to shell

list_modules();

print "\n The modules for the following card/s can be found in the above.\n If your 
card is not listed below it means it is a PNP (very old)\n or USB card and this script 
cannot find it.\n\n The modules for ALSA USB support are: \n\n \tsnd-usb-audio\n 
\tsnd-usb-midi\n\n";

print " These are the cards found on your system:\n\n";
list_pci();
print "\n";

Reply via email to