Akihiro MOTOKI
motok****@da*****
2011年 10月 20日 (木) 16:13:43 JST
元木です。こんにちは。 確認ありがとうございます。 > がうまく HTML に変換されてませんでした。 > テーブル定義の最後の '.' が孤立しているのに対処できないようです。 > 場あたりな修正ですが、以下の diff を当てるととりあえず直りました。 > #まだありそうな予感、、、 groff 1.21 の gtbl(7) によると、 You may run format specifications for multiple lines together on the same line by separating them with commas. となっており、',' と'\n' は同じ意味です。 したがって、',' と'\n' を分離する対処は正しくないように思います。 問題の原因は、おそらく内容が空の TABLEROW が作成されてしまい、 空の TABLEROW は TABLEITEM を一つしか含まないため、 3行目以降が先頭の要素しか出力されていないのだと思います。 空の TABLEROW が発生しないようにするのが正しい方向だと思います。 while ループの中の switch(*c) の処理では TABLEROW と TABLEITEM が 準備された状態であることを前提に処理がかかれているので、 どうやって TABLEROW が空であることを判断するかは ちょっと考える必要がありそうです。 単純に emptyfield と比較するのが一番楽そうですが。 また、私の修正のため、groff 関係のページの HTML が生成されていないことに 気付きました。個別に実行してみると Segmentation Fault で止まっていました。 今晩にでも原因を調査してみます。 # 一筋縄ではいかないなぁ.... amotoki @ sf-usr-shell:/home/groups/l/li/linuxjm$ find htdocs/html -size 0 htdocs/html/GNU_groff/man7/groff.7.html htdocs/html/GNU_groff/man7/roff.7.html htdocs/html/GNU_groff/man5/groff_tmac.5.html 以上です。 >>>>> Date: Thu, 20 Oct 2011 12:09:37 +0900 (JST) >>>>> From: "R4000 2.2" <tati****@kc5*****> >>>>> Subject: [JM:00460] Re:SIGNAL(7)の内容に関しまして > > さて、他に確認してみると 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***** 立花 晃@鎌ヶ谷市 -- Akihiro MOTOKI