R4000 2.2
tati****@kc5*****
2011年 10月 20日 (木) 18:53:01 JST
こんばんは、立花@鎌ヶ谷市です。 In <m262jkkue0.wl%motok****@da*****>, at Date: Thu, 20 Oct 2011 16:13:43 +0900, on Subject: [JM:00461] Re: SIGNAL(7) の内容に関しまして , Akihiro MOTOKI <motok****@da*****> writes: | > がうまく 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 が発生しないようにするのが正しい方向だと思います。 先に送ったメールの修正内容も、場当たりですがそのつもりでした。 ふと考えて試してみると、'.' が孤立するパターンによってまだうまくいかない 場合がありましたので、参考までに末尾に diff を記述しておきます。 | また、私の修正のため、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 手元は % gcc -v /usr/lib/gcc/i586-pc-linux/3.4.6/specs から spec を読み込み中 コンフィグオプション: ../gcc-3.4.6/configure --prefix=/usr --infodir=/share/info --mandir=/share/man --build=i586-pc-linux --host=i586-pc-linux --enable-shared --enable-threads=posix --with-system-zlib --enable-__cxa_atexit --enable-libgcj-multifile --enable-languages=c,c++,java,f77,objc スレッドモデル: posix gcc バージョン 3.4.6 % ですが、このコンパイル環境だと元木さんの修正だけで make しても、 Segmentation Fault にならずに変換はできました。 が、、、 groff.7 roff.7 groff_tmap.5 はマニュアルページ中でマクロ定義しているようで、定義したマクロを 使った部分がうまく HTML に変換できていませんでした。 やっかいですね。 | > 〜 | > .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 | > 〜 こんな風にテーブル定義の最後の '.' が孤立しているものは、 man-pages-ja-20110415.tar.gz で確認したところ、他にはありませんでした。 〜 --- man2html.c.orig 2011-10-20 11:56:44.000000000 +0900 +++ man2html.c 2011-10-20 17:57:34.000000000 +0900 @@ -717,6 +717,7 @@ } char *scan_expression(char *c, int *result); +char itemsep='\t'; static char *scan_format(char *c, TABLEROW **result, int *maxcol) { @@ -790,13 +791,18 @@ curfield->space=i; break; case ',': case '\n': - 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++; + while (*c==',' || *c=='\n' || *c=='\t' || *c==itemsep) { + c++; + } + if ( *c != '.' ) { + 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; + } break; default: c++; @@ -872,7 +878,6 @@ int center=0, expand=0, box=0, border=0, linesize=1; int i,j,maxcol=0, finished=0; int oldfont, oldsize,oldfillout; - char itemsep='\t'; TABLEROW *layout=NULL, *currow; TABLEITEM *curfield; while (*c++!='\n'); /* skip TS */ 〜 -- tati****@kc5***** 立花 晃@鎌ヶ谷市