xdeview

バイナリファイル用の高性能デコーダ

xdeview - バイナリファイル用の高性能デコーダ
xdeview [Xt options] [-- [-f] [-b] [-o] [-d] [-v] [-s] [-t]] [file(s) or directories]
xdeview は強力なエンコード/デコードエンジンへのグラフィカルインタフェースであ る。 このプログラムは電子メールや usenet 経由で受け取ったエンコードされた ファイルを処理するものだが、標準の uudecode (1) コマンドよりも高機能である。また、逆の動作を行うことも可能であり、ユー ザが持つバイナリファイルをエンコードして自動的にメールで送信することや ニュースへ投稿することができる。 xdeview がサポートしているデコード方法は uuencoding, xxencoding, Base64, BinHex であり、分割ファイルを処理することや複数ファイルを同時に処理することが できる。これにより、デコード作業が非常に簡単になる。ユーザは普通、デコー ドの準備をするためにファイルを手で編集する必要はない。 このような作業にはグラフィカルなフロントエンドを特に必要としないなら、 uudeview (1)uuenview (1) を参照すること。 このプログラムは起動されると、与えられた全てのファイルをスキャンしてエ ンコードされたデータを探す。与えたファイルのいずれかがディレクトリなら ば、再帰的なディレクトリ移動が行われる。 ファイルをコマンドラインで指定する必要はない。後でプログラム中でファイ ルを選択することもできる。最初のスキャンが終わった後、うまくデコードで きそうなファイルリストがユーザに示される。ユーザはこの一覧からデコード するファイルを個別に選ぶ。
オプションをコマンドラインで設定する必要は特にない。オプションはプログ ラム中でも設定できるからである。オプションの前には '--' を置かなければ ならず、そうでない場合には表示オプションと間違われるかもしれないので注 意すること。
-d
このプログラムを desperate モードにする。このモードでは、不完全なファ イルもデコードの候補となる。この機能が有効なのは 50 パートに分かれた投 稿の最後の部分が欠けているような場合であるが、無理にデコードしたファイ ルは大抵の場合は単に壊れていて利用できないだろう。不完全なファイルがど の程度使えるかはファイルの種類による。
-f
高速モードでファイルをスキャンする。 xdeview は各入力ファイルに多くとも 1 ファイルしか含まれていないものと想定する。 これは普通、ニューススプール内にあるファイルでは正しい。このオプション を指定すると、複数の記事に分けられた入力ファイルのデコードは 中断される 。また、一部の正当性チェックも無効になるので、誤りがあるファイルもおそ らくデコードの候補として示される。デコードの時にエラーメッセージを受け 取ることもあるし、単に不正なファイルが得られることもある。このような問 題に遭いたくないのならば、 -f オプションは使わないこと。
-o
デコード時に既存のファイルを上書きすることを許可する。デフォルトでは、 上書きするか、別の名前を付けるか、そのファイルを飛ばすかの問い合わせが ユーザに対して行われる。
-v
詳細表示を無効にする。通常、このプログラムは入力ファイルを読み込む際に 何らかのステータスメッセージを表示する。これは問題が起きたときには非常 に訳に立つ。このようなメッセージが鬱陶しい場合に使うこと。
-p パス
デコードしたファイルを書き込むディレクトリを設定する。これは有効なパス 名でなければならず、そうでない場合はファイルをデコードしようとした時に エラーとなる。デフォルト値はカレントの作業ディレクトリである。
-b1
このオプションは、サブジェクトからパート番号を取り出すという xdeview のポリシーを変更する。このオプションが必要となるのは稀であるが、 例えば複数に分割して投稿が行われた時のように、パート番号が 括弧 () や ブラケット [] 内に書かれている場合だけは必要となる。 デフォルトでは、 xdeview はまず 括弧 () 内にある数字を使う。しかし、この番号が全体のファイル数 を示しており、パート番号はブラケット [] に書かれている場合には、このパ ラメータを使って xdeview に他の数字を最初に読み込ませるようにすること。このオプションは、1 種類 の括弧しか含まないファイルや、どちらの種類の括弧も含まないファイルの展 開には影響を与えない。必要ならば、このオプションは -b[] のように使うこともできる。
-s
「賢さを取り除く(minus smartness)」と読むこと。このオプションは、サブ ジェクト行からのパート番号の自動検出を無効にする。 xdeview がサブジェクト行の正しい展開に失敗してパート番号の推定時にエラーを出力 し、パートの順番が狂う場合にはこのオプションを試すとよい。このオプショ ンを使うと、パートは必ず順番通りに繋げられる(したがって、入力ファイル ではパートを正しい順番に並べなければならない)。 注意: この場合でも、きちんとした MIME ファイルに含まれている正しいパート番号は評価される。
-t
プレーンテキストのメッセージを使う。通常、uudeview はデコードの際には エンコードされたデータだけを表示する。このオプションを設定すると、 MIME メッセージに入っているテキストパートやエンコードされていないデータもデ コード対象して示す。プレーンテキストのメッセージにはファイル名が付けら れていないことが多いので、これらには 4 桁の数字を順に使ったユニークな 名前が付けられる。
xdeview のメインウィンドウは 6 つの主な要素からなる。この一番上にあるのは メニューバー である。 真ん中にあるのは ファイルリスト である。これはエンコードされたデータ内で検出され、デコードしようとして いるファイル全てのリストである。ファイルリストの左にあるのが ステータスリスト である。これは各ファイルの状態を示す。このリストは普通、全てのファイル について OK となる。というのも、普通はエラーとなったファイルは表示さ れないからである。 右側にあるのは、良く使われる機能を呼び出すショートカットボタンを集めた ものである。ウィンドウの一番下にあるのは Save Path エントリのフィールドとステータスバーである。これらの要素については後で 個別に説明する。
File メニュー

Load ...
エンコードされたファイルをロードする。これらのファイルはスキャンされ、 エンコードされたデータとファイルが検索される。これらのファイルはファイ ルリストに追加される。ディレクトリを検索することもでき、この場合にはそ のディレクトリへの再帰的な移動が行われる。
Encode
ファイル(複数可)をエンコードする。エンコードしたファイルはディスクに格 納することや電子メールで送ること、ニュースグループに投稿することができ る。これらについては後述する。
Helpers
xdeview は、Execute ボタンが押されたときに適切なデフォルト動作を行う これらのファイルの位置を設定することができる。
Save Setup
ファイルに保存する。このファイルは起動時に自動的に読み込まれるので、保 存された設定は次回以降のセクションでデフォルトで設定される。このリソー スファイルは実際には Tcl のスクリプトであり、好きなエディタで編集する ことができる。
Quit
プログラムを終了する。
Options
プログラムの動作を変えるための各種オプションを設定する。ほとんどのオプ ションは設定後に読み込んだファイルにしか適用されない点に注意すること。
Fast Scanning
高速スキャンモードを設定する。このプログラムは、各入力ファイルに多くと も 1 ファイルしか含まれていないものと想定する(普通、ニューススプール内 にあるファイルでは正しい)。各ファイルについて内容を全部読む必要がない のでスキャニングエンジンの動作は高速になるが、エンコードされたデータが 見つかった後にはスキャンが終了する。 高速モードでは、デコーダは安全のためのオプションをいくつか無効にしなけ ればならない。したがって、ファイルに何らかの問題がある場合でも、これを 検出できるのは最終的にデコードを行う時だけとなる。
Automatic Overwrite
出力先ディレクトリに既に存在する名前のファイルをデコードするとき、ファ イルを上書きするかどうかユーザに問い合わせが行われる。このオプションを 有効にすると、出力ファイルは問い合わせなしで上書きされる。
Desperate Mode
ユーザに示されるファイルは通常、全てのパートを検出できたものだけである。 desparate モードを有効にすると、ユーザは他のファイルも見ることができる。 この際には問題点の適切な説明がステータスリストに表示される。desparate モードでは、デコーダは MIME メッセージ外部にある短い Base64 形式ファイ ルも検出しようとする。この機能は通常は無効である。というのも、無理に Base64 エンコーディングを見つけようとすると、エンコードされたデータを 誤って検出し、不正なファイルができてしまうかもしれないからである。
Verbose Mode
入力ファイルのスキャン時に追加メッセージが表示されるテキストボックスを 別ウィンドウで開く。このようなメッセージは、ファイルがうまくデコードで きない場合に問題点を見つける際に非常に役立つ。
Alternate Bracket Policy
デコーダがサブジェクト行からパート番号を取り出そうとする際に使うヒュー リスティクスを変える。このアルゴリズムでは通常、ブレース () 内の数字を ブラケット [] 内の数字より優先させる。両方の種類の括弧があり、衝突する ような使い方をされている場合(例えば、パート番号とシリーズ番号が両方と もある場合)には、括弧の使い方を明示的に決めなければならないかもしれな い。このオプションが false (デフォルト値)ならば「パート番号」はブレー ス () から取り出され、true ならばブラケット [] から取り出される。
Dumb Mode
サブジェクト行の展開によるパート番号の自動検出を無効にする。 xdeview が正しいパート番号の取得に失敗した場合に用いること。このオプションを設 定すると、パートを正しい順番で並べて入力ファイルにしなければならない。 また、この方法では欠けているパートは検出されない。
Handle Text Files
xdeview は通常、デコードの際にはエンコードされたデータだけを表示する。 このオプションを設定すると、 MIME メッセージに入っているテキストパートやエンコードされていないデータもデ コード対象して示される。プレーンテキストのメッセージにはファイル名が付 けられていないことが多いので、これらには 4 桁の数字を順に使ったユニー クな名前が付けられる。
Auto Info
ファイルリスト中のファイルをクリックすると情報ウィンドウを開くようにす る。
Actions

Decode
選択されたファイル(複数可)をデコードする。
Rename
選択されたファイル(複数可)の名前を変える。これは例えば、ファイル名が既 存のファイルと重なる場合や、名前がシステムの制限に合わない場合に使う。
Decode All
現在ファイルリストに表示されているファイルを全てデコードする。
Info
現在選択されているファイルの利用可能な情報を表示する(複数のファイルが 選択されている場合には、最初のファイルの情報だけが表示される)。表示さ れる情報は、ファイルの 0 番目のパート(利用可能ならば)またはエンコード されたデータの開始部分までにある最初のパートのヘッダである。
Execute
外部プログラムを実行nし、現在選択されているファイルを与える。外部プロ グラムは、まずメッセージの Content-Type を(可能ならば)参照し、次にファイルの拡張子をチェックして決める。ユーザの または ファイルから適切な情報が読み込まれる(ただし、.mailcap ファイル内の情報 の扱いは現在のところ不十分である)。マッチする MIME 型が見つからない場 合には、ユーザが任意のコマンドを入力できるダイアログボックスが表示され る。
List Text File
これは、テキストファイルがネット上をエンコードされた形で送られるという 滅多にない場合のためのものである。これを使うのは、ユーザが対象のファイ ルが確かにテキストファイルであることが分かっている場合だけである。それ 以外の場合には、画面上にゴミが読み込まれることになる。
Help

About
作者からの簡単なメッセージである。
License
xdeview を配布する際のライセンスである GPL を表示する。ちゃんと読まな いと、作者の弁護士を相手にすることになるだろう。
ファイルリストは、エンコードされたデータのスキャンの際に見つかったファ イルが全て表示されるリストボックスである。これらのファイルはいつでもデ コード、プレビュー等の好きな処理をすることができる。このリストはリスト の右のスクロールバーを使ってスクロールさせることができる。 ファイルを 1 つずつ選ぶなら単にクリックすればよい。複数のファイルを選 ぶには、 CTRL キーを押しながらファイルをクリックする。
ステータスリストは ファイルリスト 中の対応するファイルの状態を示す。通常はここには OK が表示される。そ れ以外の場合には、ファイルがうまくデコードできなかった理由を説明するエ ラーメッセージが表示される。状態としては以下のものがある:
OK
ファイル中の全てのパートが見つかり、簡単に調べた限りではエンコードされ たデータは正しいと思われる。ファイルのデコード時にだけ起こる何らかの問 題があるかもしれないが、普通は全く問題ない。
Incomplete
このファイルには欠けているパートが 1 つ以上ある。このファイルをデコー ドしても出力データは壊れており、普通は使用できない。
No Begin
ファイルの開始部分がない。デコードされたファイルはほぼ確実に壊れており、 利用できない。
No End
ファイルの終了部分が見つからない。これは普通、ファイルの末尾のパートが 欠けていることを示す。デコードされたファイルがどの程度使えるかは、ファ イルの種類による。
Error
以前にファイルをデコードしようとして失敗した。
ウィンドウの右側にあるボタンはメニュー要素へのショートカットである。内 容については、前述のメインメニューの要素の説明を読むこと。
これはデコードされたファイルが書き出されるパスである。
プログラムの現在の処理内容やユーザに求めている入力に関する簡単なメッセー ジ。
ファイルをエンコードする時(File メニューの Encode)には、大きなダイ アログボックスが開き、そのファイルに対してオプションを色々設定すること ができる。複数のファイルをエンコード対象として選んだ場合には、一番上の ステータス行に残りのファイル数が表示される。ダイアログそのものは全ての ファイルが処理されるまで消えない。
Filename
現在のエンコード対象ファイル。このフィールドを編集することはできない。
Send As
ファイルを送る時に使う名前。デフォルトではファイル名からディレクトリ情 報を全て取り除いたものになる。
Use Subject
メール送信やニュース投稿のとき、このテキストをサブジェクトとして使う。 ファイル名とパート番号は自動的に追加されるので、この行は空にしても良い。
Lines per File
エンコードしたデータのパートごとの行数を設定する。大きいファイルは自動 的に複数のパートに分割される。ニュースグループにファイルを投稿する場合 や、メール受信者のメーラが大きなファイルを処理できない場合に使用するこ と。分割のサイズとしては 1000 行が良いだろう。0 行はファイル分割を行 わないという指定である。
使用するエンコーディング方法を選択する。どれが最も良いか分からなければ、 筆者が書いた デコーディング入門(Introduction to Decoding) という記事 を見れば手がかりが得られるかもしれない。
File In (Path)
エンコードしたファイルを置く場所を設定する。エンコードしたものは元のファ Lines per File の設定から決まる必要なパート数によって決まる)。
Email To
コンマで区切った電子メールアドレスのリストを与える。お使いのシステムで 電子メール送信が許可されていない場合には、このオプションは無効になって いるかもしれない。
Post To
ファイルを投稿するニュースグループをコンマで区切ったリストを入力するこ とができる。お使いのシステムでニュース投稿がサポートされていない場合に は、このオプションは無効になっているかもしれない。
NNTP Server
このフィールドは一部のシステムでしか現われない。つまり、ニュースのホス トが必要であるが、コンパイル時に何も設定されていない場合である。この フィールドがある場合、ニュース投稿を行うためには正しいホスト名を入力し なければならない。ニュースを投稿するつもりが特になければ、この設定は気 にしなくてもよい。
OK
選択されたアクションをこのファイルに対して実行し、次のファイルに移動す る。
OK to All
対象となっているそれぞれのファイルに対して現在の設定を使用する(別のファ イルについての問い合わせを行わない)。したがって、全てのファイルが一度 に処理される。
Next
ファイルをエンコードせず、次のファイルに移動する(申し訳ないが、前に戻 るためのボタンはない)。
Cancel
エンコードをキャンセルし、メインメニューに戻る。
ホームディレクトリに ファイルがあれば、これはプログラムの初期化時に Tcl インタプリタに読み 込まれる。このファイルは正しい Tcl プログラムでなければならないが、こ れを使ってオプションをデフォルトで設定することができる。Tcl を知らない 人のために変数設定の文法を以下に示す: set 変数名 値 以下の変数(オプション)を設定することができる(オプションの動作について は、前の説明を参照すること):
OptionFast
1 を設定すると高速スキャンモードが使われる。
OptionBracket
1 を設定すると、ブラケットの処理方法が変わる。
OptionOverwrite
1 を設定すると、問い合わせなしでもファイルの上書きが許可されたことにな る。
OptionDesperate
1 を設定すると、desperate モードに切り替わる。
OptionVerbose
1 を設定すると、進行状況メッセージが出力される。
SaveFilePath
これはデフォルトの保存パス(ファイルがデコードさせる先)を示す文字列変数 である。
EncodeMaxLines
エンコードの際のファイルごとの最大の行数。0 を指定すると無制限になる。
EncodeEncoding
デフォルトで使うエンコード方法。0 が uuencode エンコーディング、1 が xxencode エンコーディング、2 が Base64 エンコーディングである。
NNTPServer
使用する NNTP サーバのアドレス(一部のシステムだけで必要)。環境変数 NNTPSERVER で設定することもできる(こちらの方が好ましい)。
詳細表示モードを有効にしてあれば、進行状況メッセージが Runtime Messages という名前の独立したウィンドウが現われる。スキャニングの段階で生成され たメッセージを理解できれば、これはプログラムの進行を追跡する時には非常 に役立つし、ファイルのデコードに失敗した理由を調べるために使うことがで きる。プログラムを動かすだけならこのセクションを理解する必要はない。 最初に「読み込み中」のメッセージが表示される。これは文字列 Loaded で 始まる。それぞれの行には次の要素が表すはずである:
入力ファイル
最初の要素は、パートの読み込みが行われる入力ファイルである。1 つのファ イル内でたくさんのパートが検出されることもある。
サブジェクト行
シングルクォートで括った形で、サブジェクト行が完全に複製される。
識別子
このプログラムは、スレッドのためのユニークな識別子をサブジェクト行から 決め、同じファイルに属すると思われる記事をまとめるために使う。このアル ゴリズムの結果は、括弧で括って表示される。
ファイル名
ファイル名がサブジェクト行やファイル内で見つかったかどうか(例えば、 begin 行や Content-Type 情報の一部として見つかることがある)。
パート番号
パート番号。これはサブジェクト行パート番号から求めるか、あるいは正しい MIME 形式のメッセージ場合には「パート」情報から求める。
Begin/End
begin トークンまたは end トークンが検出された場合、ここに表示され る。
エンコーディング型
このパート内でエンコードされたデータが検出された場合、UUdata, Base64, XXdata, Binhex のいずれかがここに表示される。 スキャンが終わった後にはこれ以外のメッセージが出力される。記事のグルー プそれぞれに対して 1 つの行が出力される。この行の内容は例で見る方が分 かりやすいだろう。以下に例を示す: Found 'mailfile.gz' State 16 UUData Parts begin 1 2 3 4 5 end 6 OK この行はファイル mailfile.gz が見つかったことを示す。ファイルは uuencode されており(UUData)、6 つ のパートからなる。また、begin トークンが最初のパートで見つかり、 end トークンが 6 番目のパートで見つかった。全て揃っているように見え るので、このファイルには OK のタグが付けられる。 State には以下に示す各種ビットが設定される。ビットの値は OR を取ることができ る。
1
欠けているパートがある
2
Begin が無い
4
End が無い
8
エンコードされているデータが見つからない
16
ファイルは問題なしと思われる
32
ファイルのデコード時にエラーが起きた
64
ファイルがうまくデコードできた
xdeview が実行できず command not found といった表示がされるが、ファイルその ものは確かにある場合には、 xdeview の最初の部分を見て、メインファイル uuwish への参照が正しいかどうかを確認すること。
uudeview (1), uuenview (1), uudecode (1), uuencode (1), ウェブ上にある uudeview のホームページ: http://www.uni-frankfurt.de/~fp/uudeview/
バグを見つけたと思ったら、入力ファイル(できれば単に入れるだけでなく、 元のファイルに圧縮とエンコードを施すこと)とプログラムのメッセージのリ スト(詳細表示モード)を fp@informatik.uni-frankfurt.de 宛に送ること。