source: trunk/essentials/sys-apps/texinfo/util/infosrch

Last change on this file was 2617, checked in by bird, 20 years ago

GNU Texinfo 4.8

File size: 2.4 KB
Line 
1#!/usr/local/bin/perl -w
2# $Id: infosrch,v 1.2 2004/04/11 17:56:47 karl Exp $
3# infosrch does a regex search on an info manual.
4# By Harry Putnam <reader@newsguy.com>.
5
6($myscript = $0) =~ s:^.*/::;
7$six = '';
8
9if($ARGV[0] eq "help"){
10 &usage;
11 exit;
12}
13if($ARGV[0] eq "-e"){
14 shift;
15 $six = "true";
16}
17if(!$ARGV[1]){
18 &usage;
19 exit;
20}
21
22$target = shift;
23$regex = shift;
24
25$shell_proc = "info --output - --subnodes 2>/dev/null $target";
26
27open(SHELL_PROC," $shell_proc|");
28while(<SHELL_PROC>){
29 chomp;
30 push @lines,$_;
31}
32close(SHELL_PROC);
33$cnt = 0;
34for(@lines){
35 if(/$regex/ && !$six){
36 print "$target\n $lines[($cnt-1)]\n<$cnt> $lines[$cnt]\n $lines[($cnt+1)]\n";
37 print "-- \n";
38 }elsif(/$regex/ && $six){
39 print "$target\n";
40 if($lines[($cnt-6)]){
41 print " $lines[($cnt-6)]\n";
42 }
43 if($lines[($cnt-5)]){
44 print " $lines[($cnt-5)]\n";
45 }
46 if($lines[($cnt-4)]){
47 print " $lines[($cnt-4)]\n";
48 }
49 if($lines[($cnt-3)]){
50 print " $lines[($cnt-3)]\n";
51 }
52 if($lines[($cnt-2)]){
53 print " $lines[($cnt-2)]\n";
54 }
55 if($lines[($cnt-1)]){
56 print " $lines[($cnt-1)]\n";
57 }
58 if($lines[$cnt]){
59 print "$cnt $lines[$cnt]\n";
60 }
61 if($lines[($cnt+1)]){
62 print " $lines[($cnt+1)]\n";
63 }
64 if($lines[($cnt+2)]){
65 print " $lines[($cnt+2)]\n";
66 }
67 if($lines[($cnt+3)]){
68 print " $lines[($cnt+3)]\n";
69 }
70 if($lines[($cnt+4)]){
71 print " $lines[($cnt+4)]\n";
72 }
73 if($lines[($cnt+5)]){
74 print " $lines[($cnt+5)]\n";
75 }
76 if($lines[($cnt+6)]){
77 print " $lines[($cnt+6)]\n";
78 }
79 print "-- \n";
80 }
81 $cnt++;
82}
83
84sub usage {
85 print <<EOM;
86
87Purpose: Extract full text from info node and search it by regex
88Usage: $myscript [-e] TARGET REGEX
89
90Where TARGET is an info node such as `emacs', `bash' etc, and
91REGEX is what you want to find in it.
92
93The -e flag is not required but if used then 6 lines preceding and six
94lines following any hits will be printed. The default (with no -e flag)
95is to print one line before and after.
96
97The output has the line number prepended to the line containing the
98actual regex.
99
100Info command used:
101 info --output - --subnodes 2>/dev/null TARGET
102
103EOM
104}
Note: See TracBrowser for help on using the repository browser.