#!/usr/local/bin/perl # view_doc.cgi # View some package doc file require './man-lib.pl'; &ReadParse(); $in{'file'} !~ /\.\./ || &error($text{'doc_epath'}); $in{'file'} !~ /[\\\&\;\`\'\"\|\*\?\~\<\>\^\(\)\[\]\{\}\$\n\r]/ || &error($text{'doc_epath'}); foreach $d (split(/\s+/, $config{'doc_dir'})) { $ok++ if (substr($in{'file'}, 0, length($d)) eq $d); } $ok++ if ($config{'custom_dir'} && substr($in{'file'}, 0, length($config{'custom_dir'})) eq $config{'custom_dir'}); $ok || &error($text{'doc_epath'}); if (!-r $in{'file'}) { if (-r "$in{'file'}.gz") { $in{'file'} = "$in{'file'}.gz"; } else { &error($text{'doc_epath'}); } } &ui_print_header(undef, $text{'doc_title'}, ""); print "
",&text('doc_header', $in{'file'})," |
";
open(FILE, $in{'file'});
read(FILE, $two, 2);
$qm = quotemeta($in{'file'});
if ($two eq "\037\213") {
close(FILE);
&open_execute_command(FILE, "gunzip -c $qm", 1, 1);
}
elsif ($two eq "BZ") {
close(FILE);
&open_execute_command(FILE, "bunzip2 -c $qm", 1, 1);
}
seek(FILE, 0, 0);
if ($in{'file'} =~ /\.htm/i) {
# Display HTML documentation
($dir = $in{'file'}) =~ s/\/[^\/]+$//;
while($line = "; @for = split(/\s+/, $in{'for'}); while($line ="; } close(FILE); print " |
\n"; &ui_print_footer("", $text{'index_return'});