home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / boot / i386 / root / usr / lib / YaST2 / servers_non_y2 / ag_modinfo < prev    next >
Text File  |  2006-11-29  |  2KB  |  108 lines

  1. #!/usr/bin/perl
  2. #
  3. # Author: Jan Holesovsky <kendy@suse.cz>, 2001
  4. #
  5. # Agent for reading modinfo of modules in the directory
  6. # /lib/modules/`uname -r`/
  7. #
  8. # $Id: ag_modinfo 29612 2006-04-03 12:22:26Z mvidner $
  9.  
  10. use lib "/usr/lib/YaST2/agents_non_y2";
  11. use ycp;
  12.  
  13. my $result;
  14.  
  15. my $modules_prefix = "/lib/modules/".qx(/bin/uname -r | /usr/bin/tr -d '\n');
  16.  
  17. while ( <STDIN> )
  18. {
  19.     # ycpDoVerboseLog();
  20.  
  21.     ycpInit( $_ );
  22.  
  23.     my $path = my $module_name = ycpGetPath;
  24.     $path =~ s/\./\//g;
  25.     $module_name =~ s/^.*\.//;
  26.  
  27.     $path = $modules_prefix.$path;
  28.     y2debug( "ag_modinfo. Using: ", $path );
  29.  
  30.     #----------------------------------------------------------
  31.     #  Check the Command
  32.     #----------------------------------------------------------
  33.  
  34.     if ( ycpCommandIsDir )
  35.     {
  36.     my @list        = ();
  37.     my $dirs        = qx(cd $path 2> /dev/null && find -type d 2> /dev/null);
  38.  
  39.     foreach my $dir (split ("\n", $dirs)) {
  40.         my $list_mod = qx(cd $path/$dir 2> /dev/null; ls *.ko 2> /dev/null);
  41.         $list_mod =~ s/\.ko//g;
  42.         foreach my $file (split("\n", $list_mod)) {
  43.         push @list, $file;
  44.         }
  45.     }
  46.     ycp::Return ( \@list );
  47.     }
  48.     elsif ( ycpCommandIsRead )
  49.     {
  50.     # full name of the module
  51.     my $modinfo = qx(/sbin/modinfo $module_name 2> /dev/null);
  52.  
  53.     my @list = split("\n", $modinfo);
  54.  
  55.     my %mod = ();
  56.     foreach $_ (@list)
  57.     {
  58.         my $desc = $_;
  59.         $desc =~ s/^[^:]*:\s*//;
  60.         $desc =~ s/^[^"]*"//;
  61.         $desc =~ s/".*$//;
  62.  
  63.         if (/^filename/)
  64.         {
  65.         $mod{"module_filename"} = $desc;
  66.         }
  67.         if (/^description/)
  68.         {
  69.         $mod{"module_description"} = $desc;
  70.         }
  71.         if (/^author/)
  72.         {
  73.         $mod{"module_author"} = $desc;
  74.         }
  75.         if (/^parm/)
  76.         {
  77.         # key is parameter name
  78.         my $key = $_;
  79.             $key =~ s/^[^:]*:\s*//;
  80.         $key =~ s/^([^ \t\n\r\f:]*).*:.*/$1/;
  81.         
  82.         # remove parameter name from the description
  83.             $desc =~ s/^[^:]*:\s*//;
  84.         $mod{$key} = $desc;
  85.         }
  86.     }
  87.  
  88.     ycp::Return ( \%mod, 1 );
  89.  
  90.     }
  91.  
  92.     # result: we must exit
  93.     elsif (ycpCommandIsResult)
  94.     {
  95.     y2debug ("got result -> say goodbye!");
  96.     exit;
  97.     }
  98.  
  99.     else
  100.     {
  101.     my $return_value = sprintf( "Unknown instruction %s or argument: %s", ycpGetCommand, ycpGetArgType);
  102.  
  103.     ycp::Return( $return_value );
  104.     }
  105. }
  106.  
  107. # end
  108.