Subject: istrings ver.0.2
Date: Sun, 17 Jul 2005 01:41:00 +0900
From: はせがわようすけ 
Content-Type: text/plain; charset=Shift_JIS
Content-Transfer-Encoding: 8bit

istrings
--------

istrings は、様々な文字コードに対応した strings コマンドであり、ファイ
ルに含まれる表示可能な文字列を検出し、画面に表示するツールです。
ANSI対応のCコンパイラがあれば、UNIX や Windows などの上でコンパイル可
能なはずです。
ただし、Makefile ファイルは VC++ 6.0 向けになっていますので、書き換え
る必要があります。また、compati.h および compati.h のみ環境依存ですの
で、必要に応じて編集してください。

配布や改変はGPLに従う限り自由です。GPL以外のライセンスによる提供が必要
な場合ははせがわまでご連絡ください。

付属の istrings.exe はC:\Program Files\istrings-0.2 以下に置かれること
を想定して、VC++ 6.0 でコンパイルしたものです。

今後の予定としては

- ISO-2022系のエンコーディングに対応(EUC-JP,ISO-2022-xx)
- Unicode における BMP 外の文字への対応
- ソースの整理

などを考えています。

変更履歴
--------
2005/07/17 ver.0.2
- UTF-16において正しく文字列を検出できていないバグを修正
- Linux / gcc でコンパイルできるように修正(wakatonoさん、umqさんによる)
- ソースの一部整理
- Shift_JIS用のマッピングファイルを追加

2005/07/09 Ver.0.1
- 新規に作成
[ ダウンロード ]


名前
        istrings - ファイルに含まれる文字列を検出する。

書式
        istrings [オプション] [ファイル名]

説明
        istrings は指定されたファイル中に含まれる表示可能な文字列を表
        示する。文字列と認識できる文字コードは、オプションにより指摘で
        きる。また文字として認識するバイト値は外部マッピングファイルに
        より設定可能であるため、様々な文字コードに対応することが可能で
        ある。
        デフォルトでは4文字以上の長さのものを表示可能な文字列とするが、
        オプションにより変更することができる。

        ファイル名が指定されないときは標準入力を対象とする。

オプション

        -i 文字コード
            ファイルに含まれるであろう文字列の文字コード(符号化方式)を
            指定する。現在指定可能な文字コードは設定ファイルの内容によ
            り決定される。

        -e 設定ファイル
            設定ファイルのファイル名を指定する。

        -n 文字数
        -文字数
            指定された文字数以上の長さの文字列を表示する。指定は文字数
            単位であるためASCII文字に限らず漢字なども1文字と数えられる。
            デフォルトは4。

        -f
            それぞれの文字列の前にファイル名を表示する。

        -p
            それぞれの文字列の前に文字列が見つかったファイル内での先頭
            からの位置を表示する。

        -c
            それぞれの文字列の前にその文字列のコード名を表示する。

        -t
            (可能であれば)標準出力をテキストモードで使用する。デフォル
            トはバイナリモードである。

設定ファイル
        istrings は、指定された文字コードに対応するマッピングファイル
        の情報を取得するため、起動時に設定ファイルを読み込む。設定ファ
        イルは、(1) -e オプションにより指定されたファイル、(2) 環境変
        数 ISTRINGS_INI により指定されたファイル、(3) コンパイル時に決
        定されコマンドに埋め込まれたファイル名 の順に検索される。

        設定ファイルは、エンコーディングごとに以下のようなセクションを
        構成している。
        ----
        [ASCII]
        alias=US-ASCII
        system=DBCS
        mapfile0=ascii.map
        mapfile1=ascii2.map
         :
        ----
        [ ] で囲まれたエンコーディング名は、コマンドラインの -i オプシ
        ョンで指定される名称である。
        alias には、そのエンコーディングの別名が指定できる。上の例では
        US-ASCII を ASCII の alias として定義しているので、istrings の
        -i オプションとして "ASCII" でも "US-ASCII" でも指定可能となる。

        system パラメータには、以下の値のいずれかを指定する。
          DBCS / UTF-8 / UTF-16LE / UTF-16BE

        DBCS は、ASCII や Shift_JIS のような一般的なエンコーディングの
        場合に指定し、マッピングファイル内での有効な文字として定義され
        ている数値は、エンコーディング上のバイト列の値そのものとなる。

        UTF-8 / UTF-16LE / UTF-16BE のそれぞれを指定した場合、マッピン
        グファイル内での有効な文字として定義されている数値は、Unicode
        でのコードポイントを表す。

        mapfile? パラメータには、マッピングファイルのファイル名を指定
        する。マッピングファイルは、指定されたエンコーディングにおいて
        有効な文字の範囲を定義したファイルである。
        ファイル名を相対パスで記述した場合、動作時のカレントディレクト
        リからの相対的な位置となるので注意。

マッピングファイル
        マッピングファイルは、指定されたエンコーディングにおいて有効な
        文字の範囲を定義したファイルである。
        このファイルは、以下のような形式となっている。
        ----
        bytecount=1
        09
        20-7e
        ----
        最初の行には bytecount パラメータにより、マッピングファイルで
        示される範囲が1バイト文字であることを定義している。
        2行目以降には、有効な文字の範囲を16進数で記述する。
        1つの行には単一の16進数または、有効な範囲を2つの16進数をハイフ
        ンで区切って記述する。
        定義ファイル内の system パラメータ が DBCS に対するマッピング
        ファイルでは、ここでの16進の値はエンコーディング上の文字のコー
        ド値そのものであり、例えば、Shift_JIS での「あ」の文字であれば、
        値は 0x82A0 であるため、"82A0" を直接記述する。
        system パラメータが UTF-8 / UTF-16LE / UTF-16BE に対するマッピ
        ングファイルでは、ここでの16進の値はUnicodeのコードポイントと
        なり、例えば、「あ」の文字は U+3042 であるため、3042 を記述する。
   
バグ
        充分にテストされていないのでバグは多々あると思われる。

        ファイル内に含まれる文字列の長さが65535バイトを超えるときには
        うまく表示できない。これは、vstr.c 内の MAX_BUF_SIZE 定数によ
        り制限されている。

        -f オプションでファイル名を表示させた場合、ファイル名に含まれ
        るASCII以外の文字は、<xx> のような16進数で表示される。これは、
        出力される文字列とファイル名とで文字コードが違う可能性があるか
        らである。

        UTF-8 や UTF-16 において、BMP外の文字には対応できていない。

        将来的には、定義ファイルの system パラメータとして ISO-2022 を
        サポートする予定である。これにより、ISO-2022-JP や EUC-JP の
        サポートも可能となる。

バージョン
        このマニュアルは、istrings 0.2 用のものである。

著者
        はせがわ ようすけ <hasegawa -at- openmya.hacker.jp>