ktrn3.7.1-3.5 -> ktrn3.7.8-3.6 への追加変更点 A.機能面 1.MIME encode された Subject: 及び From: 行への対応。 2.JIS X0201-1976 kana への対応。 3.MS 機種依存文字への対応。 4.漢字対応の debug。 5.trn 3.6 をベースに。 6.Linux 対応の debug。 7.MIME encode された本文への対応。 8.その他 debug。 B.ソース上の変更 1.mmdecode.[ch] の追加。(A-1 による) 2.識別子 MIMESUBJ, MIMEFROM による #ifdef に囲まれた部分の 追加。(A-1 による) Configure 時、Subject: 及び From: への MIME 対応の是 非を問うてくるので、それに回答すれば、それぞれ識別子 MIMESUBJ, MIMEFROM が定義される。 3.識別子 USEKANA による #ifdef に囲まれた部分の追加。(A-2 による) kanji_config.h 内にて USEKANA を定義。 ISO-2022-JP encode 上の仮名表記法については、kanji_ common.h 内の KANA_OUTPUT_G1 にて変更可能。default では SI/SO による G1 への仮名セット呼出し。 4.識別子 USEMSLOCAL による #ifdef に囲まれた部分の追加。 (A-3 による) kanji_config.h 内にて USEMSLOCAL を定義。 5.識別子 KANJIPATCH による #ifdef に囲まれた部分の追加。 (A-4 による) ・NNTP 利用の場合、ヘッダ長を内部バッファサイズで算 出しているが、内部バッファの文字コードは EUC、参照さ れる TMP file の文字コードは JIS なので、ヘッダに日 本語が含まれるとサイズに違いが生じる。 ・Subject: に日本語が含まれる場合、thread 選択画面の 長い subject を "..." で短くすると、漢字の 2 byte 目 で切ってしまうことがある。 ・Subject: に日本語が含まれる場合、pager 画面の長い subject を fold する際に漢字の 2 byte 目で切ってしま うことがある。 6.trn-3.6 の各種ソースファイルをマージ。 (A-5 による) 変更箇所が多過ぎるので、#if による条件コンパイルには していない。 7.識別子 MIMETEXT による #ifdef に囲まれた部分の追加。 (A-7 による) Configure 時、本文への MIME 対応の是非を問うてくるの で、それに回答すれば、識別子 MIMETEXT が定義される。 8.その他 error, warning への対処。(A-6,8 による) bug であることが明確なので、#if による条件コンパイル にはしていない。 C.コメント patch ファイルの変更点を見れば、上記の B-[1-5,7] の区別は つくと思います。B-6,8 以外の変更点は全て #if での条件コン パイルにしていますから。 MIME encoded header は、thread 選択画面と pager 画面での表 示の他、// (or ??) コマンドによるサーチにも対応しています。 これ以外では、ひょっとすると対応出来ていない箇所があるかも 知れません。 Subject については、threading 時に参照されることもあって、 内部的にも decode 状態で保存してありますが、From について は、表示以外では decode しないように留意しています。 なお、近くに XTHREAD 対応の NNTP サーバ環境がなかったため、 rt-mt.c には手を加えられず、rt-ov.c の変更による対応しか出 来ませんでした。悪しからず。 仮名対応、機種依存文字対応は、charsubst による選択で対応出 来る実装にしています。default では非対応ですが、ページャモ ードで _C を入力すると適宜それぞれの対応モードに移行します。 機種依存文字対応モードは半角仮名表示も対応しています。 ktrn-3.7.1-3.5 では charsubst の機能自体が無効になってしま っていましたが、original trn にあったラテン文字表示モード も機能するように戻してあります。 標準の plain text モードでは、半角仮名を 2byte 仮名に変換 し機種依存文字はゲタ(〓)に変換しますが、それぞれの対応モー ドではそのまま表示します。 -Q オプションで default のモードを変更出来ますが、この機能 自体は trn の本来の機能ですので、詳細は man page を参照し て下さい。 仮名を含んだり、ISO-2022-JP 以外で書いたりという RFC 違反 の記事は、主に PC user によるものが多いので、ShiftJIS の優 先度を高めてあります。 代わりに、charsubst 機能の中に EUC-JP を優先するモードを追 加してありますので、_C の入力により手動で切替えることによ り、EUC-JP で書かれた記事も読むことが出来ます。 KANJIPATCH のうち、NNTP 対応の部分については、どのタイミン グで正しいヘッダ長を取得するかに悩んだのですが、ソースを眺 めた限りでは TMP file 作成以降にしか参照されていない様子で したので、TMP file 作成時に取得し、それ以前は依然内部バッ ファサイズを採用してしまっています。 Linux 対応の変更個所は、各 source の bool 変数と Configure の 2 個所です。 bool 型の実体には char 型が使われていますが、これに int 値 の代入を行っているため char の範囲を越えてしまっている個所 がありました。全 source を見直し int 型と bool 型を厳密に 分離してあります。 後者は nm(1) が GNU binutils で GROUP() 記述された library を正しく扱えなかったため、shell script で GROUP() を展開す るようにしました。 どちらの対処も Linux 以外の環境でも特に支障ない改変になっ ていると思います。むしろ Linux 環境以外でも同じ原因で支障 が発生していたのではないでしょうか。 Content-Transfer-Encoding: 行に base64 や quoted-printable を指定してある記事に対応するために MIMETEXT 識別子を追加し ました。 外部の MIME 用コマンドを用いることなく、内部的に decode し て表示しますので、一般の記事と区別することなく閲覧出来ると 思います。 D.履歴 ktrn3.7.8: 2002/04/05 ISO-2022-JP-3 encoding の decode に対応。 本文の Quoted-Printable encoding の decode ミスを修正。 ktrn3.7.7: 2002/02/28 EUC-JP 優先モードの追加。 MIME encoded header の RFC 2231 対応。 プロンプト表示直前に文字化け解消用 sequence を出力。 ktrn3.7.6: 2000/10/13 本文の MIME encode 対応。 ktrn3.7.5: 2000/09/29 些細な bug fix。 (記事編集時 SIGINT を無視。文字化け NNTP 対応。) ktrn3.7.4: 2000/05/29 trn 3.6 をベースに。 ktrn3.7.3: 2000/03/13 MS 機種依存文字対応。Linux 対応。 ktrn3.7.2: 1999/03/26 MIME 対応。仮名対応。