Annotation of src/external/gpl3/binutils/dist/libiberty/gather-docs, Revision 1.1.1.1
1.1 skrll 1: #!/usr/bin/perl
2: # -*- perl -*-
3:
4: # Copyright (C) 2001
5: # Free Software Foundation
6: #
7: # This file is part of the libiberty library.
8: # Libiberty is free software; you can redistribute it and/or
9: # modify it under the terms of the GNU Library General Public
10: # License as published by the Free Software Foundation; either
11: # version 2 of the License, or (at your option) any later version.
12: #
13: # Libiberty is distributed in the hope that it will be useful,
14: # but WITHOUT ANY WARRANTY; without even the implied warranty of
15: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16: # Library General Public License for more details.
17: #
18: # You should have received a copy of the GNU Library General Public
19: # License along with libiberty; see the file COPYING.LIB. If not,
20: # write to the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
21: # Boston, MA 02110-1301, USA.
22: #
23: # Originally written by DJ Delorie <dj@redhat.com>
24:
25:
26:
27: # This program looks for texinfo snippets in source files and other
28: # files, and builds per-category files with entries sorted in
29: # alphabetical order.
30:
31: # The syntax it looks for is lines starting with '@def' in *.c and
32: # other files (see TEXIFILES in Makefile.in). Entries are terminated
33: # at the next @def* (which begins a new entry) or, for C files, a line
34: # that begins with '*/' without leading spaces (this assumes that the
35: # texinfo snippet is within a C-style /* */ comment).
36:
37: #
38:
39:
40:
41: if ($ARGV[0] eq "-v") {
42: $verbose = 1;
43: shift;
44: }
45:
46: $srcdir = shift;
47: $outfile = shift;
48:
49: if ($outfile !~ /\S/ || ! -f "$srcdir/Makefile.in" ) {
50: print STDERR "Usage: gather-docs [-v] srcdir outfile.txi [files with snippets in them ...]\n";
51: exit 1;
52: }
53:
54: $errors = 0;
55:
56: for $in (@ARGV) {
57:
58: if (!open(IN, "$srcdir/$in")) {
59: print STDERR "Cannot open $srcdir/$in for reading: $!\n";
60: $errors ++;
61:
62: } else {
63: $first = 1;
64: $pertinent = 0;
65: $man_mode = 0;
66: $line = 0;
67:
68: while (<IN>) {
69: $line ++;
70: $pertinent = 1 if /^\@def[a-z]*[a-wyz] /;
71: $pertinent = 0 if /^\*\//;
72: next unless $pertinent;
73:
74: if (/^\@def[a-z]*[a-wyz] /) {
75:
76: ($name) = m/[^\(]* ([^\( \t\r\n]+) *\(/;
77: $name =~ s/[ ]*$//;
78: $key = $name;
79: $key =~ tr/A-Z/a-z/;
80: $key =~ s/[^a-z0-9]+/ /g;
81: $name{$key} = $node;
82: $lines{$key} = '';
83: $src_file{$key} = $in;
84: $src_line{$key} = $line;
85: print "\nReading $in :" if $verbose && $first;
86: $first = 0;
87: print " $name" if $verbose;
88: $node_lines{$key} .= $_;
89:
90: } else {
91: $node_lines{$key} .= $_;
92: }
93:
94: $pertinent = 0 if /^\@end def/;
95: }
96: close (IN);
97: }
98: }
99:
100: print "\n" if $verbose;
101: exit $errors if $errors;
102:
103: if (!open (OUT, "> $outfile")) {
104: print STDERR "Cannot open $outfile for writing: $!\n";
105: $errors ++;
106: next;
107: }
108: print "Writing $outfile\n" if $verbose;
109:
110: print OUT "\@c Automatically generated from *.c and others (the comments before\n";
111: print OUT "\@c each entry tell you which file and where in that file). DO NOT EDIT!\n";
112: print OUT "\@c Edit the *.c files, configure with --enable-maintainer-mode,\n";
113: print OUT "\@c and let gather-docs build you a new copy.\n\n";
114:
115: for $key (sort keys %name) {
116: print OUT "\@c $src_file{$key}:$src_line{$key}\n";
117: print OUT $node_lines{$key};
118: print OUT "\n";
119: }
120:
121: if (! print OUT "\n") {
122: print STDERR "Disk full writing $srcdir/$cat.texi\n";
123: $errors ++;
124: }
125:
126: close (OUT);
127:
128: exit $errors;
CVSweb <webmaster@jp.NetBSD.org>