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

アーカイブの一覧に戻る

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




linuxjm-discuss メーリングリストの案内
アーカイブの一覧に戻る