[JM:00277] Re: チケット #24860

Back to archive index

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/;



linuxjm-discuss メーリングリストの案内
Back to archive index