# # the help subsystem # # It is a very simple system in that you type in 'help ' and it # looks for a file called command.hlp in either the local_cmd directory # or the cmd directory (in that order). # # Copyright (c) 1998 - Dirk Koopman G1TLH # # $Id$ # my ($self, $line) = @_; my @out; # this is naff but it will work for now my $lang = $self->lang; $lang = 'en' if !$lang; # each help file contains lines that looks like:- # # === 0^EN^*^Description # text # text # # === 0^EN^help^Description # text # text # text # # The fields are:- privilege level, Language, full command name, short description # my $h = new IO::File; if (!open($h, "$main::localcmd/Commands_$lang.hlp")) { $lang = 'en'; if (!open($h, "$main::cmd/Commands_$lang.hlp")) { return (1, $self->msg('helpe1')); } } my $in; $line =~ s/[^\w\/]//g; $line =~ s/\//\.\*\//g; $line =~ s/^\s+//g; $line =~ s/\s+$//g; $line = "help" if $line =~ /^\s*$/; # sort out aliases my $alias = CmdAlias::get_hlp($line); $line = $alias if $alias; my $state = 0; foreach $in (<$h>) { next if $in =~ /^\#/; chomp $in; if ($in =~ /^===/) { last if $state == 2; # come out on next command $in =~ s/=== //; my ($priv, $cmd, $desc) = split /\^/, $in; next if $priv > $self->priv; # ignore subcommands that are of no concern next unless $cmd =~ /^$line/i; push @out, "$cmd $desc" unless $cmd =~ /-$/o; $state = 1; next; } if ($state > 0) { push @out, " $in"; $state = 2; } } close($h); push @out, $self->msg('helpe2', $line) if @out == 0; return (1, @out);