NetNewsをNIFTY-Serve風にする。inter1.sed, inter2.sed ver.2.29 --- ○名称 inter1.sed, inter2.sed, mesid.sed, i2n.bat ○作者名・ID Seiji Fujita (http://userweb.alles.or.jp/sfujita/) 注)PEOPLEのID (01389202@people.or.jp) は1998年5月末に廃止済み ○動作環境 OS: MS-DOS2.1以上(3.1以上が望ましい) SW: LOGOS 版 sed(拡張機能利用のため) NIFP.EXE (DOS版/WIN版)または SHOWPC ○ライセンス フリー ○説明 =============================================================================== 【はじめに】 これはNetNews のヘッダを NIFTY-Serve のフォーラムのヘッダに似せる sedスクリプトです。NIFP.EXE で閲覧するためのプリプロセッサとして使用します。 E-mail[*1]も同様に変換できます。 [*1] internet経由でPEOPLE, NIFTY等へ届いたメールではありませんので御注意下さい internet経由で internet形式のまま受け取ったメールのことです。 NetNews の閲覧には不要と思われるヘッダ(Message-ID:, References:, From:, Subject:, Date:, Newsgroups: To: 以外)を削除します。 上記ヘッダも NIFTY-Serve風フォーマットで完全に表示できれば不要ですが、 無理なので残す仕様にしました。 【生成されるログのフォーマット】 変換元ファイルでの発言行番号 | 発言の月日を表示 | | idの@の前部分(8文字より長いなら前8文字、未満なら後ろに"_"を挿入) | | | idの@の前部分16byte分を表示 | | | | タイトルが78桁を越えていた ↓ ↓ ↓ ↓ 場合、削除したことを■で示す↓ NNNNN/99999 iiiiiiii IIIIIIII タイトル                   ■ ( 1) YY/MM/DD HH:MM NNNNNへのコメント --- ↑――年月日は数字変換。時間のGMT(UTC),JST etc補正はしない :Message-ID: ↓ :References: ↓ :From: IIIIIIII@foo.bar ↓正しい時間は :Newsgroups: aaa.bbb.ccc ↓ :To: aaa.bbb ←発言に含まれている場合のみ(メール)表示 ↓こちらを :Subject: タイトル ↓参照のこと :Date: DD MMM YY HH:MM:SS JST (←例) ←――――――+ 〜(本文)〜 【使用方法】 1. コメントツリー表示不要の場合 sed -f inter1.sed 変換元ファイル > 変換先ファイル 2. コメントツリー表示が必要な場合 sed -f inter2.sed 変換元ファイル > 中間ファイル sed -f mesid.sed 中間ファイル > i2n_tp.sed (←中間生成スクリプト) sed -f i2n_tp.sed 中間ファイル > 変換先ファイル ※変換作業や変換先ファイルを nifp.exe に読み込ませることなどを バッチファイル化すれば便利だと思います。実施例を i2n.bat として 添付します。 【注意事項】 ・このスクリプトは、行頭 0 カラムから大文字のアルファベットで始まり、 ": " が現れるまで空白以外の文字列が続く行をヘッダとみなします。 ・ヘッダのうち Message-ID:, References:, From:, Subject:, Date:, Newsgroups:, To: だけを保存/加工して出力します。それらヘッダが 元の記事でどのような順序で並んでいても構いません。 ・NIFP (DOS/WIN), SHOWPCで閲覧できることを前提としてあります。 その他のNIFTY-Serve用ブラウザで NIFTY-Serve のログとみなされるか否か は保証しません。 ・発言行数が 300 行を越えた場合、NIFP の1発言最大行数を越えますが、 特に対応していません。 LHAで圧縮してあります。 =============================================================================== 【i2n.bat, inter1.sed, inter2.sed, mesid.sed の 簡易説明書】 ・inter1.sed NetNewsのログをNIFTY-Serveのフォーラムの会議室風に変換します。 変換されたログは NIFP (DOS/WIN) および SHOWPCでNIFTY-Serveのログとして 閲覧できるようになります。但し、コメントツリー表示にはなりません 変換には Logos版 SEDが必要です(拡張命令を使用しているため) ・inter2.sed, mesid.sed NetNewsのログを NIFTY-Serveのフォーラムの会議室風に変換します。 変換されたログは NIFP (DOS/WIN) および SHOWPCでNIFTY-Serveのログとして 閲覧できるようになります。コメントツリー表示ができます。 変換には Logos版 SEDが必要です(拡張命令を使用しているため) ・i2n.bat 上記 inter1.sed, inter2.sedをパラメータにより使い分けて、NIFPを自動起動 したり、変換結果だけを出力したりするためのバッチ。(自動化のサンプル) バッチでは使用される環境がWin95以降かそれ以前かを区別するために、環境 変数 dosver を利用していますので、autoexec.batなどで事前に set dosver=WIN95または set dosver=PREVDOS と設定して下さい。 Logos版 sedと GNU版 sed (ASCII TOOLS版 sedも可能) および、テキストを 分割するユーティリティである split.exe 、入力の選択をするツール batkey.comが必要です。split.exe は同様の機能を持つツールで置き換え可能 です。batkeyも、choise.com (Win95に同梱)などで置き換え可能です。 また、事前に文字化けを検出するツール mojibake.exeを利用していますが、 このチェックが不要であるなら、ルーチンを外してしまっても構いません。 現状のi2n.batは変換効率を考えて、inter1.sed, inter2.sed, mesid.sedを Logos版 sedで、それ以降の mesid.sedによって生成された スクリプトを ASCII版 sedで実行しています。けれど、全てを Logos版 sed で実行すること もできます。その場合は、 splitする行数を現状の 150行から 80行程度に 変更する必要があります(オーバーフローするため)。 i2n.batを用いず、単独で inter1.sedを利用する場合や、i2n.batで -n オプション を使う場合(コメントツリー表示無し)には、Logos版sedだけで構いません。 ※なお inter1.sed, inter2.sed では Message-ID中のスラッシュ"/"を縦棒"|" に置き換えます。 これはsedでの変換時に sedコマンドと混同しないようにするための処置です。 =============================================================================== 【履歴】 ver.1.1〜1.5 商用BBS PEOPLE MPC.CC/LIBにて公開 ver.1.6〜2.0a〜2.0p 非公開 ver.2.0q/2.0r Web公開版 ver.2.0s/2.0t Message-Id中の一部文字の置き換えを廃止。 ver.2.0u/2.0v 2行以上に折り返されたヘッダ処理ルーチンの簡略化。 ver.2.0u/2.0v-2 サンプルバッチの一部改善版(Win95/従来DOSの区別の違いだけ) ver.2.10 正規表現のc+をsed標準の cc*に置き換えた。 ver.2.11 メールを加工した際に、To:フィールドを残し忘れていたのを修正した。 ver.2.12 ヘッダの":" 以降に多量の空白が入っている場合の変換に失敗する のを修正した。 ver.2.13 漢字(2バイト文字)の範囲を[ -龠]から[ -熙]へ変更。 ver.2.14 引用されたヘッダや、ヘッダに似た文字列が消失する現象を改善した。 ver.2.15 Date:フィールドの時刻がゼロサプレスされた記事の処理に失敗していた 点を修正した。 ver.2.16 News記事のReply-To:が誤ってTo:として表示されていた点を修正した。 (ver.2.14でのエンバグ修正) ver.2.17 記事の切り分けに失敗していた点を修正した(ヘッダと見なす条件の追加) ver.2.18 記事の切り分けに失敗していた点を更に修正した。 (ヘッダと見なす条件の追加) ver.2.19 記事の切り分けに失敗していた点を更に修正した。 (ヘッダと見なす条件の追加) ver.2.20 ヘッダの折り返し対応処理によって、ヘッダに類似した文字列まで 連結されてしまう現象を改善した。 ver.2.21 ver.2.20の改善処理が不適切で、Subjectなどの末尾が失われてしまう バグを加えてしまったので、それを修正した。 ver.2.22 折り返されたヘッダの次行がタブや空白だけの場合に記事の切り分けに 失敗していた点を修正した。 それとは別の理由による記事の切り分け失敗を、ヘッダと見なす条件の 追加により改善。 ver.2.23 メールの加工で、Message-IDに関する処理の修正 (1) 変換後に残すMessage-IDのコロン(:)が付加されない点の修正 結果的にコメントツリー生成も失敗していたが、修正された。 (2) Message-ID: のID部がIdである場合に、コメントツリー生成に失敗 していた点の修正。 ver.2.24 ヘッダ(およびヘッダ類似行)の処理中に入力ファイルの最終行に 達した場合に、処理中の行が正常に出力されなかった不具合を修正 ver.2.25 Message-ID: のID部がidである場合に、記事の切り分けに失敗していた 点の修正。 ver.2.26 メール(メーリングリスト)によっては、切り分けに失敗する点の修正。 ver.2.27 一部の処理系によってReferences:欄に無用にメッセージIDを連ねられた メッセージを処理する際に、論理的な1行が長すぎてsedの処理バッファが あふれてしまう問題を改善。 (References:欄に連ねられたメッセージIDの内、末尾のID以外は無意味 であるため除去する仕様とした。本文中に残される:References:行も、 末尾の参照IDだけとなる) ver.2.28 コメントツリーの作成をReferences:で行なっていたのを、In-Reply-To: も参照するように変更した。 これはメーラによって、References:だけ、In-Reply-To:だけ、あるいは 両方を付加するものが存在し、In-Reply-To:だけが付加されている場合 に、正しくコメントツリーが作成できなかったことを改善するため。 ver.2.28a Message-Id:に"["を含んだメッセージへコメントが正しくコメントとして 扱われないのを修正した(Message-Id:に"["が含まれることが正しくない 事だとは思うが、Message-Id: abcdefghijklmn@[192.168.0.0] のような Message-Id:をもつメッセージを見つけたため)。 コメントツリーを作成する途中の処理で"["という文字がそのままだと sedでは特殊な意味を持つために上手くいかなくなる。 従ってエスケープする処理を追加して回避した。 修正したのはmesid.sedであり、inter1.sed, inter2.sedは変更無し。 ver.2.29 Date: 欄の曜日表示(Mon, Satなど)がフルスペルで(Monday, Saturday) の様に記述されている場合に、切り分けができない点を修正した。