#!/usr/bin/perl # # Script for searching man pages. The result is generated as HTML. # # This file is part of KHelpcenter. # # Copyright (C) 2002 SuSE Linux AG, Nuernberg # # Author: Cornelius Schumacher # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA use strict; use Getopt::Long; my ( $words, $maxcount, $lang, $help ); GetOptions ( 'maxcount=s' => \$maxcount, 'words=s' => \$words, 'lang=s' => \$lang, 'help' => \$help ); if ( $help ) { print STDERR "Usage: khc_mansearch.pl --maxcount=n --words= " . "--lang=\n"; exit 1; } if ( !$words ) { print STDERR "No search words given.\n"; exit; } # Perform search if ( !open( MAN, "-|", "apropos", $words ) ) { print "Can't open apropos.\n"; exit 1; } my @results; while( ) { # print "RAW:$_"; chop; /^([^\s]+)\s+\((.*)\)\s+-\s+(.*)$/; my $page = $1; my $section = $2; my $description = $3; if ( $page ) { push @results, [ $page, $section, $description ]; } } close MAN; my $nummatches = @results; if ( $nummatches > 0 ) { print "
    \n"; my $count = 0; for my $result ( @results ) { my ( $page, $section, $description ) = @$result; my $url = "man:" . $page; print "
  • "; print "$page - $description
  • \n"; if ( ++$count == $maxcount ) { last; } } print "
\n"; } 1;