●●●●● GNU sed version 1.18 + multi-byte extension 1.03 ●●●●●
●●●●●                              Jun. 2, 1994 by t^2 ●●●●●

    sed-1.18+mb1.03 -- マルチバイト文字対応版 GNU sed

●概要

    GNU プロジェクトによる sed をマルチバイト文字対応化したものです.

●使用法

    GNU sed からの拡張部分だけを説明します.

    増えたオプションは以下の通りです.

        -Wctype=ASCII または --ctype=ASCII
            マルチバイト文字を考慮しません.  このオプションを使用した場
            合, GNU sed のオリジナルと同じ動作になるはずです.

        -Wctype=EUC または --ctype=EUC
            マルチバイト文字として EUC を認識します.

        -Wctype=SJIS または --ctype=SJIS
            マルチバイト文字として Shift-JIS を認識します.

        MS-DOS 以外のシステムで, Makefile(.in)? を書き換えずにインストー
        ルした場合, デフォルトでは EUC を認識します.  MS-DOS ではデフォ
        ルトで Shift-JIS を認識します.

    以下, コマンドなどの変更点です.

        y コマンド      バイト毎ではなく文字毎に変換します.

        l コマンド      マルチバイト文字を考慮した出力を行います.  特に,
                        EUC の半角カナの文字幅を考慮しています.

        その他          ラベルにマルチバイト文字が使用できます.

● SEDM103.LZH (MS-DOS 版実行形式を含むアーカイブ) について (それ以外の
   形態で入手された方は無視してください)

    1. アーカイブに含まれているファイル

       オリジナルから全く手を加えていないファイル

           CHANGELO     オリジナルのソースに含まれている ChangeLog
           COPYING      オリジナルのソースに含まれている COPYING
           COPYING.LIB  オリジナルのソースに含まれている COPYING.LIB
           README       オリジナルのソースに含まれている README

       sed+mb 用のファイル

           CHANGELO.MB  sed+mb の変更履歴
           README.MB    このファイル

       MS-DOS 版 sed+mb 用のファイル

           SED.EXE      MS-DOS 版 sed-1.18+mb1.03 の実行形式

    2. SED.EXE について

        sed-1.18+mb1.03 を MS-C 6.00A でコンパイルしたものです.

        デフォルトでは Shift-JIS 漢字コードを含むプログラムやファイルを
        処理できます.

        setargv.obj を組み込んでありますので, MS-DOS でポピュラーなタイ
        プのワイルドカードが使用できます.

    3. コマンドライン引数について

        前述したとおり MS-C の setargv.obj をリンクしていますので, その
        仕様に従わなければなりません.

        １つ１つの引数は空白で区切ります.  引数に空白, ", \, <, >, | を
        含むときはクォーティングが必要です.  その方法は COMMAND.COM のバ
        グ臭い仕様と, さらに setargv.obj にも問題があり, かなり難しいの
        でここでは説明を省きます.  各自研究してください.  一番簡単なのは,
        sed のプログラムをファイルにして

            sed -f ファイル名

        とすることです.

●インストール (MS-DOS 以外)

    デフォルトのマルチバイト文字の設定は, Makefile.in の中で指定します. 
    デフォルトを Shift-JIS とする場合と, デフォルトでマルチバイト文字を
    使用しない場合は Makefile.in の MBCTYPE_DEF マクロの定義をそれぞれ以
    下のように変えてください.

        MBCTYPE_DEF = -DSJIS            (デフォルトで Shift-JIS の場合)
        MBCTYPE_DEF =                   (デフォルトで使用しない場合)

    いずれの場合でも起動時のオプションによりマルチバイト文字コードの選択
    が可能です.

    その他の作業は, オリジナルの sed と同様ですので INSTALL をお読みくだ
    さい.

●インストール (MS-DOS 版)

    MS-C 6.00A を使用して, デフォルトで Shift-JIS を認識する sed を作成
    する場合は, README.MSC に目を通して, 必要ならライブラリにパッチを当
    てた後,

        A>nmake -f Makefile.msc

    だけでＯＫです.  その他の処理系を使用する場合や, デフォルトを 
    Shift-JIS 以外にしたい場合は Makefile.msc を参考に Makefile を書いて
    ください.

●バグ

    1. いわゆる JIS には対応していません.  将来対応する予定もありません.

    2. マルチバイト文字コードはあまり厳格には考えていません.

        EUC       １バイト目 ... 0x80 - 0xff
        EUC       ２バイト目 ... 0x01 - 0xff (0x0a を除く)

        Shift-JIS １バイト目 ... 0x80 - 0x9f, 0xe0 - 0xff
        Shift-JIS ２バイト目 ... 0x01 - 0xff (0x0a を除く)

       として処理しています.  半角カナも使えます.  EUC の SS3 (0x8f) に
       始まる３バイトコードは使えません.  (私はこれをサポートしているシ
       ステムを見たことがない...)

● regex.[ch] の拡張仕様

    regex.[ch] モジュールは mbc.[ch] モジュールに依存していますので, 使
    用する場合には, mbc.[ch] モジュールを同時に使用する必要があります.

    マルチバイト文字のタイプは, mbc.[ch] の mbcinit() で設定します.
    mbc.h に定義されているマクロ MBCTYPE_ASCII, MBCTYPE_EUC,
    MBCTYPE_SJIS のいずれかを mbcinit() に渡してください.

    regex.[ch] は, パターンコンパイル時, マッチング時の両方で mbc.[ch] 
    の設定を参照します.  が, この両者で mbc.[ch] の設定を変更することは
    できません.  つまり, Shift-JIS で記述されたパターンを, EUC テキスト
    から検索するといった動作はできません.  注意してください.

    マルチバイト文字対応に伴って注意すべき正規表現を以下に記します.

        .       任意の１バイト文字, 正当なマルチバイト文字にマッチします. 
                「正当なマルチバイト文字」とは, マルチバイト文字の１文字
                目に, '\0' または '\n' 以外が続く文字のことです.

        [x-y]   文字コード (内部表現) が x から y の範囲にある任意の１文
                字にマッチします.  これも . と同じく, 正当でない文字には
                マッチしません.

        [^x-y]  文字コード (内部表現) が x から y の範囲にない任意の１文
                字にマッチします.  正当でない文字にもマッチします.

    マルチバイト文字の内部表現は単に１バイト目を上位バイト, ２バイト目を
    下位バイトとした１６ビット符号なし整数です.  Shift-JIS でも EUC でも

        １バイト ASCII 文字 < 半角カナ文字 < 全角文字

    という大小関係が成り立っています.

●条件など

    1. オリジナルの GNU sed の著作権は Free Software Foundation, Inc. が
       有しています. パッチ部分 (sed-mb.diff) の著作権は私 (t^2) が有し
       ています.

    2. GNU sed のソースコードは各所の ftp サイト, もしくは Nifty-serve 
       の FUNIX のデータライブラリから入手可能です. GNU sed から sed+mb 
       への差分 sed-mb.diff は私が Nifty-serve の FUNIX へ登録し, 堂園和
       郎氏 (dohzono@sdsft.kme.mei.co.jp) が fj.sources へポストしてくだ
       さっています.

    3. 差分 sed-mb.diff の再配布は自由です. これに関しては FSF の規定に
       従う必要もありません. しかし差分を適用した結果のソースコード, お
       よび実行形式での再配布の際は GNU GENERAL PUBLIC LICENSE (COPYING 
       参照) に従ってください.

       sed+mb に何らかの改変を加えたものを再配布する際も, GNU GENERAL
       PUBLIC LICENSE に従うように注意してください. また sed+mb に含まれ
       るコード (regex.[ch] など) を利用したプログラムを配布する際も GNU
       GENERAL PUBLIC LICENSE または GNU LIBRARY GENERAL PUBLIC LICENSE
       (COPYING.LIB 参照) の該当部分に従ってください.

       また義務ではありませんが再配布される方は事後にでも連絡をください. 
       そして可能な限り, 新しいバージョンへのアップデートに努め, 利用者
       からの連絡が私に届くように配慮してください.

    4. このプログラムは無保証です.

    5. sed+mb に何らかの不具合が発生した場合, (FSF や, オリジナルの作者
       ではなく) 私に連絡してください. 配布した人が希望している場合は, 
       その人に連絡してください.

    6. ご質問/ご要望/お叱り, その他も大歓迎です. できるかぎりサポートし
       ます.

●謝辞

    原作者および FSF に感謝します.

    ドキュメント作成に関して助言をくださった堂園和郎氏
    (dohzono@sdsft.kme.mei.co.jp) に感謝します.

    これまで転載/バグ報告をくださった方々に感謝します. 実名を挙げさせて
    頂きたかったのですがハードディスクのトラブルでほとんどのメールを消失
    させてしまいました.

    最後に, 貴重なディスクスペースを sed+mb のために割いてご使用頂いてい
    るすべての利用者の方々に感謝いたします.

●「私」の連絡先

    〒810  福岡市中央区梅光園団地 7-207               (注: 転居しました)
    TEL/FAX: 092-731-4025 (TEL/FAX 自動切替え)
             092-724-6342 (TEL のみ)
    E-mail: NBC02362@niftyserve.or.jp                           谷本孝浩

# Local variables:
# mode: indented-text
# indent-tabs-mode: nil
# tab-stop-list: (4 8 16 24 32 40 48 56 64 72 80)
# left-margin: 4
# fill-column: 72
# fill-prefix: "    "
# version-control: never
# End:
