Re: 2ページにまたがる文字のカラー出力

名前: nide
日時: 2003-01-14 14:16:17
IPアドレス: 160.11.72.*

>>15079 > UNIX では、特にパス名の長さの制限はないのでしょうか? UNIXの場合(POSIXの場合?)、#include <limits.h> すれば パス名最大長は PATH_MAX で得られます。なので、固定した 長さを書かずにこれを使うのがよいと思います。具体的な 値は、手元のlinux 2.4.18だと4096。0x200程度では全然 足りません。ちなみに、ディレクトリ一段階あたりの最大長は NAME_MAXで、こちらは手元の同マシンでは255。 まあ、このへんは考え方次第なのですが、ことこのプログラムの 場合は長さの最大長を仮定せずにmallocでも十分簡潔に 書けるわけですし、私ならmallocの方をとります。パス名が 長過ぎる場合のエラー検出は、fopen()の側でやってくれる のですし。それに、現在のプログラムでは、infileが "….dvi"で、かつMAX_PATHの長さぎりぎりの場合、ファイル名 としては許されるのに、MAX_PATH-5より長いためはねられるという ことがありますが(気を付けて書けば防げはしますが)、mallocなら そのへんに悩まずにすみます。 (tmp_buf[COMMON_SIZE]もパス名を入れるのに使われて いるので、長さがPATH_MAX+1以上なければならないことに ご注意下さい。また、".bak"をstrcatする時の長さ溢れにも 注意が必要です。もっとも、tmp_bufのように、同一のバッファを 異なる用途に併用するのは避けた方がいいと思いますが。 デバッグがしにくくなりますから。できるだけ、ブロック ローカルに取る方がいいと思います。) ところでちょっと思いついたのですが、 今回のようなプログラムを作るための別法として、 dviを何らかのテキスト表現に変換するプログラムとその逆を 用意しておき(逆アセンブラとアセンブラのようなもの)、 テキスト表現の上で何らかの操作(color命令をページ単位にする など)を行う中間フィルタと併用する手もありそうです。 これなら、中間のフィルタを取り替えればいろいろなものに 応用できそうだし、中間フィルタの作成は awkなどのテキスト処理言語で作れるし、 中間フィルタのデバッグや機能拡張も容易に なるのではないかと思っています。 時間が空いたら作ってみようかと思っている のですが、それにはまず日本語TeXの技術資料(dviファイルの 構造)を探さないと…

この書き込みへの返事:

お名前
題名 
メッセージ(タグは <a href="...">...</a> だけ使えます)