summaryrefslogtreecommitdiffstats
path: root/perl-install/modparm.pm
blob: 5432ea762d041cbdec3c0fb18cc8b1e0b2646533 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
package modparm; # $Id$

use diagnostics;
use strict;
use modules;

#-######################################################################################
#- misc imports
#-######################################################################################
use common;
use log;


sub get_options_result($@) {
    my ($module, @value) = @_;
    mapn {
	my ($a, $b) = @_;
	$b =~ s/^(\w+).*/$1/;
	$a ? "$b=$a" : ();
    } \@value, [get_options_name($module)];
}

sub get_options_name($) {
  my ($module) = @_;

  my @names;
  $modinfo = $::isStandalone ? '/sbin/modinfo' : '/usr/bin/modinfo';
  -e $modinfo or die _('modinfo is not available');
  my @line;
  if ($::isStandalone) {
      @line = `$modinfo -p $module`;
  } else {
      modules::extract_modules('/tmp', $module);
      @line = `$modinfo -p /tmp/$module.o`;
  }
  foreach (@line) {
      chomp;
      s/int/: (integer/;
      s/string/: (string/;
      my ($f, $g) = /array \(min = (\d+), max = (\d+)\)/;
      my $c;
      if ($f == 1 && $g == 1) {
	  $c = _('1 character)');
      } else {
	  $c = sprintf("$f-$g %s)", _('characters'));
      }
      s/array \(min = \d+, max = \d+\)/$c/;
      if (/parm:\s+(.+)/) {
	  local $_ = $1;
	  s/\s+/ /;
	  s/, description /TOOLTIP=>/;
	  push @names, $_;
      }
  }
  @names;
}

1;