#!/usr/local/bin/perl # view_man.cgi # Display a single manual page require './man-lib.pl'; &ReadParse(); &ui_print_header(undef, $text{'man_title'}, ""); if (&has_command($config{'man2html_path'})) { $ocmd = $in{'sec'} ? $config{'list_cmd_sect'} : $config{'list_cmd'}; } else { $ocmd = $in{'sec'} ? $config{'man_cmd_sect'} : $config{'man_cmd'}; } if ($config{'strip_letters'}) { $in{'sec'} =~ s/^(\d+).*$/$1/; } &set_manpath($in{'opts'}); foreach $page ($in{'page'}, lc($in{'page'})) { $qpage = quotemeta($page); $qsec = quotemeta($in{'sec'}); $cmd = $ocmd; $cmd =~ s/PAGE/$qpage/; $cmd =~ s/SECTION/$qsec/; $out = &backquote_command("$cmd 2>&1", 1); if ($out !~ /^.*no manual entry/i && $out !~ /^.*no entry/i && $out !~ /^.*nothing appropriate/i) { # Found it $found++; last; } } if (!$found) { print "

",&text('man_noentry', "$in{'page'}"), "

\n"; } else { if (&has_command($config{'man2html_path'})) { $out =~ s/ .*//; $out =~ s/\n//; if( $out =~ /^.*\.gz/i ) { $cmd = "gunzip -c"; } elsif ($out =~ /^.*\.(bz2|bz)/i) { $cmd = "bunzip2 -c"; } else { $cmd = "cat"; } $qout = quotemeta($out); $manout = &backquote_command("$config{'man2html_path'} -v 2>&1", 1); if ($manout =~ /Version:\s+([0-9\.]+)/i && $1 >= 3) { # New version uses a different syntax! $cmd .= " $qout | nroff -mman | $config{'man2html_path'} --cgiurl \"view_man.cgi?page=\\\${title}&sec=\\\${section}&opts=$in{'opts'}\" --bare"; $out = &backquote_command("$cmd 2>&1", 1); } else { # Old version of man2html $cmd .= " $qout | $config{'man2html_path'} -H \"\" -M \"view_man.cgi\""; $out = &backquote_command("$cmd 2>&1", 1); $out =~ s/^.*Content-type:.*\n//i; $out =~ s/http:\/\///ig; $out =~ s/\?/\?sec=/ig; $out =~ s/\+/&opts=$in{'opts'}&page=/ig; $out =~ s/.*//isg; $out =~ s/<\/HTML>//ig; $out =~ s/<\/BODY>//ig; $out =~ s/([^<]+)<\/a>/$1/ig; $out =~ s///i; } print "\n"; print "\n"; print "\n"; print "
",&text('man_header', $in{'page'}, $in{'sec'}),"
",$out,"
\n"; } else { $out =~ s/.\010//g; $out =~ s/^(man:\s*)?(re)?formatting.*//i; $out =~ s/&/&/g; $out =~ s//>/g; print "\n"; print "\n"; print "\n"; print "
",&text('man_header', $in{'page'}, $in{'sec'}),"
",$out,"

\n"; } } &ui_print_footer("", $text{'index_return'});