R4000 2.2
tati****@kc5*****
2011年 5月 17日 (火) 00:11:18 JST
こんばんは、立花@鎌ヶ谷市です。 In <m2k4dqc1qq.wl%motok****@da*****>, at Date: Mon, 16 May 2011 20:40:29 +0900, on Subject: [JM:00276] Re: チケット #24860 , Akihiro MOTOKI <motok****@da*****> writes: | 当面の対処として、HTML の man ページを変換するスクリプトを修正して | 従来通りに、各 man ページにジャンプができるように復旧しました。 確認しました。 | > これ、単純に localhost を linuxjm.sourceforge.jp に書き換えても | > man2html という cgiスクリプトはないですよね。 | > man-1.6g を探してみると | > man2html/scripts/cgi-bin/man/man2html | > というシェルスクリプトがみつかりましたが、これを使うのもうまくない | > ように思います。 | > ふと、man on WWW で使ってる cgiスクリプトに似た動きができればいいんじゃ | > ないかな、と man.cgi をとってきて、少し書き直したのを manlink.cgi として | > cgi-bin に放りこみました。 | > HTMLファイルを作成する時に | > | > % man2html -H linuxjm.sourceforge.jp -M /cgi-bin/manlink.cgi manファイル名 | > | > とすれば良い気がします。 | | bin/mkmanweb.perl で無理矢理変換しているのですが、 | man2html のオプションを使いこなす方がきれいなので、 | man2html のオプションを確認して bin/mkmanweb.perl を修正したいと思います。 元木さんの対処の結果と、man2html のオプションで手元で試した結果を 比べると、元木さんの対処の結果の方が優れていると思うので、あえて 修正されなくてもよろしいかと。 優れていると思った理由は以下のとおりです。 a) "Return to Main Contents" のリンクが、"JM Home Page","roff page" のふたつの リンクになっていてわかりやすい b) 「関連項目」で参照ページが存在しない場合はリンクにならない c) 「関連項目」で参照ページが複数存在する場合に該当パッケージのページへの リンクになっている | コードをちゃんと確認せずにお聞きしまいますが、 | manlink.cgi と man.cgi の違いは何でしょうか。 参考までに、diff を添付します。 | man.cgi の場合は、こんな URL が送られて、ページが一意に決まる場合は、 | そのページに Redirect されるようになっています。 | | http://linuxjm.sourceforge.jp/cgi-bin/man.cgi?Pagename=connect&submit=Search%21&Sec1=on&Sec2=on&Sec3=on&Sec4=on&Sec5=on&Sec6=on&Sec7=on&Sec8=on shellサーバにログインして cgi-bin/manlink.cgi を見ていただければ コメントに書いてありますが、man2html は以下のような URL を生成します。 http://localhost/cgi-bin/man/man2html?1+apropos | > ちょこっとデバッグしてみただけなので不十分かもしれませんが、よろしければ | > 使ってみてください。 | > #perl初体験でした | | Perl の CGI は読みにくいですよね (^^;; | JM のサイトのものは modern な framework は使わず、べた書きが多いですし。 framework バリバリだと、辿るので挫折してた気もします(^^; -- tati****@kc5***** 立花 晃@鎌ヶ谷市 -------------- next part -------------- --- man.cgi 2011-04-24 23:52:16.000000000 +0900 +++ manlink.cgi 2011-04-27 00:23:23.000000000 +0900 @@ -1,15 +1,22 @@ #!/usr/bin/perl # -# man.cgi +# manlink.cgi +# Based on man.cgi # # first version Sat Aug 21 22:22:30 JST 1999 # by Tenkou N. Hattori <tnh****@auror*****> # +# Modified Tue Apr 26 23:49:52 JST 2011 +# by TACHIBANA Akira <tati****@kc5*****> +# # Makefile の install ルールで %..% 文字列を置き換えているので, # このままでは使えないことに注意. # # manhtmldb は、admin/tools/mkhtmldb.perl で作成する. # +## man2html は以下のような URI を生成する +## http://localhost/cgi-bin/man/man2html?1+apropos +## use GDBM_File; use Fcntl; @@ -19,6 +26,7 @@ $DBFILE='manhtmldb'; $NOSUCHPAGE="$pri/nosuchpage.html"; $MANERROR="$pri/manerror.html"; +$MANTOP=$pri; # # get referer site @@ -32,16 +40,21 @@ $site = $pri } +## <A HREF="http://localhost/cgi-bin/man/man2html">Return to Main Contents</A><HR> +## の時 +if ($#ARGV == -1) { + $MANTOP =~ s/$pri/$site/; + print "Location: ",$MANTOP,"\n\n"; + exit(0); +} + $buff=$ENV{'QUERY_STRING'}; - @ pairs=split(/&/,$buff); + @ pairs=split(/\?/,$buff); foreach $pair(@pairs){ - ($name,$value)=split(/=/,$pair); - $name=~tr/+/ /; - $name=~s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; - $value=~tr/+/ /; - $value=~s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; - $FORM{$name}=$value; + ($secnum,$value)=split(/\+/,$pair); } +$FORM{Pagename}=$value; +$FORM{"Sec$secnum"} = 'on'; unless (tie(%urlhash, 'GDBM_File', $DBFILE, O_READ, undef) ){ $MANERROR =~ s/$pri/$site/;