annotate cvs-tree @ 0:6b33357c7561 octave-forge

Initial revision
author pkienzle
date Wed, 10 Oct 2001 19:54:49 +0000
parents
children 9f3dfbc2d0a3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
1 #!/usr/local/bin/perl
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
2
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
3 use strict;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
4
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
5 # Set environment variables so I can update the cvs tree
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
6 $ENV{CVS_RSH} = 'ssh';
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
7
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
8 # If you're not cgijobs, you need to change the next line
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
9 $ENV{CVSROOT} = 'cgijobs@cvs.octave.sourceforge.net:/cvsroot/octave';
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
10
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
11 # variables used in this file
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
12 my (
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
13 $basedir,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
14 $maxiter,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
15 $extensions,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
16 $DMZ,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
17 @directories,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
18 $maxvar,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
19 $temp, # all-purpose temporary variable
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
20 $directory,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
21 @entries,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
22 $entry,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
23 $full,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
24 $file,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
25 %files
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
26 );
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
27
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
28 print STDERR "Don't forget to do a cvs update before executing this...\n\n";
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
29
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
30 # ------------------------------------------------------------------
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
31 # Walk the octave directories to find all .m files
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
32 # Parts of this code inspired from the
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
33 # Xavatoria Indexed Search, Index Building Module
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
34 # http://www.xav.com/scripts/xavatoria/
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
35 # ------------------------------------------------------------------
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
36
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
37
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
38 # where to start the search
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
39 $basedir = './';
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
40
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
41 # maximum number of iterations to avoid runaway process
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
42 $maxiter = 10000;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
43
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
44 #$extensions = "\.html\.htm\.shtml\.stm\.ztml\.shtml\.";
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
45 $extensions = '.m.';
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
46
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
47 # Below are the files or directories that you do NOT want to be
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
48 # searched. Note that they all have one blank space after the
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
49 # file or directory, and that directories do not include trailing
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
50 # slashes. Also note that we use the ".=" instead of the "=".
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
51
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
52 $DMZ = './dld ';
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
53 #$DMZ .= "/usr/www/users/ifunds/cgi-bin ";
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
54
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
55 unless (-e $basedir) {
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
56 print STDERR "Fatal Error!\n";
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
57 print STDERR "Searched for a directory at specified location:\n";
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
58 print STDERR " $basedir\n";
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
59 print STDERR "No directory found. Check settings.\n";
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
60 exit;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
61 }
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
62
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
63 @directories = ($basedir);
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
64 $maxvar = 1;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
65 for ($temp=0;$temp<$maxiter;$temp++) {
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
66 $directory = @directories[$temp];
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
67 last unless $directory =~ /[\w\.]/; # exit when we run out...
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
68 next if ($DMZ =~ /$directory /i);
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
69 next if $directory =~ /CVS\s*$/; # ignore CVS directories
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
70 opendir(DIR,$directory);
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
71 @entries = readdir(DIR);
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
72 closedir(DIR);
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
73 foreach $entry (@entries) {
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
74 next if (($entry eq ".") || ($entry eq ".."));
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
75 $full = "$directory/$entry";
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
76 next if ($DMZ =~ /$full /i);
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
77 if (-d $full) {
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
78 push(@directories,$full);
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
79 $maxvar++;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
80 }
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
81 elsif ((-T "$directory/$entry") && ($entry =~ /(.*)\.(.*)/)) {
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
82 if ($extensions =~ /\.$2\./) { # we found an .m file
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
83 # store filenames in a hash with the filename as the key
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
84 # and the directory (comma separated if more than one unique)
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
85 # as the value
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
86 if( $files{$entry}) {
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
87 $files{$entry} .= ",$directory";
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
88 }
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
89 else {
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
90 $files{$entry} = $directory;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
91 }
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
92 }
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
93 }
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
94 }
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
95 }
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
96
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
97 # Output the page:
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
98 # FIXME: Does not handle multiple unique names (in separate directories)...
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
99
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
100 print '<html><head><title>Octave Repository Function List</title></head>';
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
101 print "\n<body>\n", titlebar(), hline(), '<p>';
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
102
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
103 print 'Unique file names: ', scalar keys %files, "\n<p>\n";
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
104
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
105 # first, print the summary
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
106 foreach $file (sort keys %files) {
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
107 $temp = func_name( $files{$file}, $file);
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
108 print qq[<a href="#$temp">$temp</a> - ];
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
109 }
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
110
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
111 # now, print each entry
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
112 print hline();
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
113 foreach $file (sort keys %files) {
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
114
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
115 $temp = func_name( $files{$file}, $file);
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
116 print qq[<p><a name="$temp">$temp</a>];
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
117
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
118 $temp = cvs_download_link( $files{$file}, $file);
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
119 print qq+ [<a href="$temp">Download</a>]+;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
120
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
121 print '<br><pre>' . func_descript( $files{$file}, $file) . "</pre>\n";
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
122 }
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
123
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
124 print "\n</body></html>\n";
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
125
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
126 exit; # all done
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
127
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
128
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
129 ################################################################################
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
130 #
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
131 # SUBROUTINES
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
132 #
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
133 ################################################################################
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
134
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
135 # given the directory and file name, returns the name of the function defined
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
136 # by that file
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
137 sub func_name {
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
138 my ($_dir, $_file) = @_;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
139
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
140 $_file =~ /([^.]*)/;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
141 return $1;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
142 }
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
143
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
144 sub hline {
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
145 return "\n<hr size=1 noshade>\n";
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
146 }
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
147
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
148 sub titlebar {
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
149 return qq~
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
150 <A href="http://octave.sourceforge.net">Home</A>&nbsp;|&nbsp;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
151 <A href="http://sourceforge.net/projects/octave/">Summary</A>&nbsp;|&nbsp;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
152 <A href="http://sourceforge.net/forum/?group_id=2888">Forums</A>&nbsp;|&nbsp;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
153 <A href="http://sourceforge.net/bugs/?group_id=2888">Bugs</A>&nbsp;|&nbsp;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
154 <A href="http://sourceforge.net/support/?group_id=2888">Support</A>&nbsp;|&nbsp;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
155 <A href="http://sourceforge.net/patch/?group_id=2888">Patches</A>&nbsp;|&nbsp;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
156 <A href="http://sourceforge.net/mail/?group_id=2888">Lists</A>&nbsp;|&nbsp;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
157 <A href="http://sourceforge.net/pm/?group_id=2888">Tasks</A>&nbsp;|&nbsp;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
158 <A href="http://sourceforge.net/docman/?group_id=2888">Docs</A>&nbsp;|&nbsp;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
159 <A href="http://sourceforge.net/survey/?group_id=2888">Surveys</A>&nbsp;|&nbsp;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
160 <A href="http://sourceforge.net/news/?group_id=2888">News</A>&nbsp;|&nbsp;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
161 <A href="http://sourceforge.net/cvs/?group_id=2888">CVS</A>&nbsp;|&nbsp;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
162 <A href="http://sourceforge.net/project/filelist.php?group_id=2888">Files</A>
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
163 ~;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
164 }
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
165
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
166 # returns the URL to download a file
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
167 sub cvs_download_link {
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
168 my ($_dir, $_file) = @_;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
169
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
170 $_dir =~ s/^[.\/]*//; # get rid of the leading garbage
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
171
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
172 return 'http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/~checkout~/octave/octave/' .
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
173 $_dir . '/' . $_file . '?rev=HEAD&content-type=text/plain';
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
174 }
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
175
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
176 sub func_descript {
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
177 my ($_dir, $_file) = @_;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
178 my $retval = '';
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
179
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
180 if( open( IN, "$_dir/$_file")) {
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
181 # skip leading blank lines
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
182 while (<IN>) {
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
183 last if /\S/;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
184 }
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
185 if( m/\s*#[\s#]* Copyright/) {
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
186 # next block is copyright statement, skip it
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
187 while (<IN>) {
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
188 last unless /^\s*#/;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
189 }
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
190 }
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
191 # Skip any blank lines here
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
192 while ( /^\s*$/) {
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
193 $_ = <IN>;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
194 last if not defined $_;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
195 }
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
196 # At this point we should either have a function statement or
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
197 # the start of the description
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
198 if( m/^\s*#/) {
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
199 # Comment is starting, grab the first line unless its the texinfo thing
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
200 s/^[\s#]*//;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
201 $retval .= $_ unless m/\-\*\-\s*texinfo\s*\-\*\-/;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
202 }
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
203 else {
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
204 return unless m/function/i;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
205 }
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
206 # Print out the rest of the documentation block
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
207 while (<IN>) {
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
208 last unless /^\s*#/;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
209 s/^[\s#]*//;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
210 # make texinfo substitutions
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
211 next if m/\-\*\-\s*texinfo\s*\-\*\-/;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
212 s/\@var{([^}]*)}/<i>\1<\/i>/g; # This must go before deftypefnx substitution
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
213 s/\@deftypefnx*\s*{[^}]*}\s*{([^}]*)}\s*/\1/g;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
214 s/\@end\s*deftypefn//g;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
215 $retval .= $_;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
216 }
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
217 return $retval;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
218 }
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
219 else {
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
220 print STDERR "Could not open file ($_dir/$_file): $!\n";
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
221 }
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
222 }