-#
# the help subsystem
#
# apropos - this does a grep on the command file and returns the commands
#
# Copyright (c) 1998 - Dirk Koopman G1TLH
#
-# $Id$
+#
#
my ($self, $line) = @_;
my $lang = $self->lang;
$lang = 'en' if !$lang;
+#print "$line\n";
my $in;
$line = 'help' unless $line;
+$line =~ s/\ball\b/.*/;
$line =~ s/\W//g; # remove dubious characters
+print "$line\n";
-my ($priv, $cmd, $desc);
+my ($priv, $cmd, $param, $desc);
my %cmd;
my $defh = new IO::File;
}
my $h;
-unless ($lang ne 'en') {
+if ($lang ne 'en') {
$h = new IO::File;
unless ($h->open("$main::localcmd/Commands_$lang.hlp")) {
unless($h->open("$main::cmd/Commands_$lang.hlp")) {
}
# do english help
-my $include;
foreach $in (<$defh>) {
next if $in =~ /^\#/;
chomp $in;
+ $in =~ s/\r$//;
if ($in =~ /^===/) {
- $cmd{$cmd} = "$cmd $desc" if $include;
- $include = 0;
- $in =~ s/=== //;
- ($priv, $cmd, $desc) = split /\^/, $in;
+# print "$in\n";
+ ($priv, $cmd, $param, $desc) = $in =~ m{^===\s+(\d)\^(\S+)(\s+[^\^]+)?\^(.*)};
+ $param ||= '';
+ $desc ||= '';
next if $priv > $self->priv; # ignore subcommands that are of no concern
- next unless $cmd =~ /$line/i || $desc =~ /$line/i;
+ next unless $in =~ /$line/i;
next if $cmd =~ /-$/o;
- $include = 1;
+ push @{$cmd{$cmd}->{en}}, "$cmd$param $desc";
next;
}
- $include =~ 1 if $cmd =~ /$line/i;
}
-$cmd{$cmd} = "$cmd $desc" if $include;
$defh->close;
# override with any not english help
foreach $in (<$h>) {
next if $in =~ /^\#/;
chomp $in;
+ $in =~ s/\r$//;
if ($in =~ /^===/) {
- $cmd{$cmd} = "$cmd $desc" if $include;
- $include = 0;
- $in =~ s/=== //;
- ($priv, $cmd, $desc) = split /\^/, $in;
+# print "$in\n";
+ ($priv, $cmd, $param, $desc) = $in =~ m{^===\s+(\d)\^(\S+)(\s+[^\^]+)?\^(.*)};
+ $param ||= '';
+ $desc ||= '';
next if $priv > $self->priv; # ignore subcommands that are of no concern
- next unless $cmd =~ /$line/i || $desc =~ /$line/i;
+ next unless $in =~ /$line/i;
next if $cmd =~ /-$/o;
- $include = 1;
+ push @{$cmd{$cmd}->{$lang}}, "$cmd$param $desc";
next;
}
- $include =~ 1 if $cmd =~ /$line/i;
}
- $cmd{$cmd} = "$cmd $desc" if $include;
$h->close;
}
-push @out, map {$cmd{$_}} sort keys %cmd;
+foreach my $k (sort keys %cmd) {
+ my $v;
+ if ($v = $cmd{$k}->{$lang}) {
+ push @out, @$v;
+ } elsif ($v = $cmd{$k}->{en}) {
+ push @out, @$v;
+ }
+}
push @out, $self->msg('helpe2', $line) if @out == 0;