[JM:00460] Re: SIGNAL(7)の内容に関しまして

Zurück zum Archiv-Index

R4000 2.2 tati****@kc5*****
2011年 10月 20日 (木) 12:09:37 JST


こんにちは、立花@鎌ヶ谷市です。

In <m2obxc8u2i.wl%amoto****@gmail*****>,
 at Date: Thu, 20 Oct 2011 08:01:25 +0900,
  on Subject: [JM:00459] Re: SIGNAL(7)の内容に関しまして ,
   Akihiro MOTOKI <amoto****@gmail*****> writes:

| > > と、SIGHUP の行の前に空行を入れると表示されました。
| > > signal.7 には他にも .TS の部分がありますが、よく見ると
| > > SIGBUS や SIGIOT の部分も消えてました。
| > > SIGHUP と同様に前に空行を入れると表示されるようになります。
| > > 
| > > 標題部分(l c c l)と各項目(lB c c l.) の間に区切り(____)があるような
| > > .TS がうまく man2html は処理できないようです。
| > 
| > 確かに、先頭行が全部消えてしまっていますね。
| > man2html/man2html.c の scan_table() が該当部分なのですが、
| > 結構長いので、落ち着いてみたいと思います。
| > 修正するのは難しくなさそうですが、tbl の機能に追従するのは大変ですね。
| 
| man2html.c を修正して、先頭行の内容も表示されるようになりました。
| http://linuxjm.sourceforge.jp/html/LDP_man-pages/man7/signal.7.html
| http://linuxjm.sourceforge.jp/html/LDP_man-pages/man7/suffixes.7.html

おぉ、直ってますね。素晴らしい。

| 原因ですが、scan_table() では、書式を最初にスキャンしてから、
| テーブルの各行を読み込んでいくのですが、区切り (____) に対応する場所
| についても、テーブルの行を対応づけてしまっていました。
| 出力時には区切り文字が出力されるので、ちょうど区切りに合致した行が
| 失われる結果になっていました。
| 空行を入れると表示されるようになるという現象も説明がつきます。

あのメールを出す前に手元でごにょごにょ試してみて挫折してたのでした。

さて、他に確認してみると grolbp.1 の

〜
.TS
tab(|) allbox center;
c c c c c
ab c c c c
.
書体 | Regular | Bold | Italic | Bold-Italic
Dutch | TR | TB | TI | TBI
Swiss | HR | HB | HI | HBI
Swiss Narrow | HNR | HNB | HNI | HNBI
Courier | CR | CB | CI |
Elite | ER | EB | EI |
.TE
〜

がうまく HTML に変換されてませんでした。
テーブル定義の最後の '.' が孤立しているのに対処できないようです。
場あたりな修正ですが、以下の diff を当てるととりあえず直りました。
#まだありそうな予感、、、

〜
--- man2html.c.orig	2011-10-20 11:56:44.000000000 +0900
+++ man2html.c	2011-10-20 11:59:18.000000000 +0900
@@ -789,7 +789,7 @@
 	    while (isdigit(*c)) i=i*10+(*c++)-'0';
 	    curfield->space=i;
 	    break;
-	case ',': case '\n':
+	case ',':
 	    currow->next=(TABLEROW*)xmalloc(sizeof(TABLEROW));
 	    currow->next->prev=currow;
 	    currow=currow->next;
@@ -798,6 +798,17 @@
 	    *curfield=emptyfield;
 	    c++;
 	    break;
+	case '\n':
+	    if ( *(c+1) != '.' ) {
+		currow->next=(TABLEROW*)xmalloc(sizeof(TABLEROW));
+		currow->next->prev=currow;
+		currow=currow->next;
+		currow->next=NULL;
+		curfield=currow->first=(TABLEITEM*)xmalloc(sizeof(TABLEITEM));
+		*curfield=emptyfield;
+	    }
+	    c++;
+	    break;
 	default:
 	    c++;
 	    break;
〜

--
tati****@kc5*****				立花 晃@鎌ヶ谷市
 




linuxjm-discuss メーリングリストの案内
Zurück zum Archiv-Index