
	       SMBCHARTOOL -- ファイル名文字コード変換ツール
   	       ---------------------------------------------
   		              Version 3.0


							 2000年8月21日
							修正: 10月25日
			      				      三浦広志
						     miura@samba.gr.jp

							 2002年11月7日
                                                              佐藤文優
						 	2003年12月22日
                                                              森山将之


   SMBCHARTOOLは、Sambaのコンパニオンツールで、Sambaサーバを運用する管
   理者を支援するツールです。

   このツールは、Sambaサーバを日本語の環境で運用している場合に有効です。
   日本語の環境を使用する際には、管理者は複数の文字コードやコード表現方
   法から選ぶ必要があります。この文字コードは、バージョンや環境により、
   最適なものが違うため、環境やバージョン、運用方法の変化により、変更
   を必要とされる場合があります。

   その一方、本格的に運用されてきたサーバの場合、すでに多数のファイル/
   ディレクトリが存在し、容易に環境を変更できるものではありません。

   そこで、すでにあるファイル資産を容易にあたらしい文字コードに変更で
   きるよう、このツールが整備されました。

   さらに、Samba 2.0.7 日本語版において、機種依存文字が正式サポートされ
   たのを受けて、過去の正しくない文字コードのファイル名を修正可能になって
   います。

   SMBCHARTOOL Version 3.0 では、Samba 3.0.0 で文字コードの取り扱いが
   変更なったのを受けて、Samba 2 日本語版から Samba 3 への移行の際に必
   要となるファイル名の文字コード変換および重複符号化されている文字の
   コードポイントの置換機能が追加されました。

   また、移行時以外にも、本ツールは工夫により、有効に利用できます。た
   とえば、ディスク容量をとらないファイルの短期バックアップや、webによ
   るファイル検索システムへの応用などです。

   このツールは、GNU General Public Licence のバージョン2ないしはそれ
   以降のライセンスにより提供されます。ライセンスは、同梱のCOPYING.txt
   ファイルを参照してください。


   その他の同梱ファイル
   -------------------

   本ツールには、ほかにsambaおよび本ツールの動作確認用のファイル生成コ
   マンドと、外字およびIBM拡張漢字からなるファイルが同梱されています。
   また、CapおよびHexのときのcdなどの代用とするためのツールも同梱されて
   います。

   gengaiji.pl .....カレントディレクトリに外字からなるファイル名の
                    ファイルをHEXコードで生成します。
   genibmkanji.pl ..カレントディレクトリにIBM拡張漢字からなるファイル名
                    のファイルをHEXコードで生成します。
   gendir.pl   .....カレントディレクトリにHEXコードで0xe140から0xeaa2の
                    名称のディレクトリを作成します。
   hextestkanji.tar.gz ..展開すると、上記コマンドで生成したHEXのファイルが
                    できます。
   capecho     .....引数の文字列をcap形式にして表示します。
   hexecho     .....引数の文字列をhex形式にして表示します。
   dot.bashrc.example.. 上記のcapecho, hexechoの利用するための設定例です。

   インストール
   ------------

   本ツールは、Perlバージョン5以降の機能を使用して作成されています。し
   たがって、ユーザは、Perlのバージョン5をインストールしなければなりま
   せん。ここでは、Perlのインストールについては扱いません。

   なお、本ツールはJPerl(日本語化されたPerl)では動作を保証いたしません。

   また、日本語の処理のために、jcode.plとText::Iconvモジュールという
   Perl のライブラリを使用しています。各自の環境にjcode.pl (2.13 以降)
   とText::Iconv モジュールが必要です。本パッケージに同梱されておりませ
   んので、別途入手してインストールしてください。

    jcode.pl公式ページ: http://srekcah.org/jcode/
    Text::Iconv: http://search.cpan.org/search?query=Text%3A%3AIconv

   Text::Iconv モジュールでは C 言語用の iconv() 関数により文字コード
   変換を行うため、libiconv や glibc などが必要です。その際、正しい
   cp932 の変換と eucJP-ms の変換をサポートしている必要があります。

   libiconv および glibc 用の cp932/eucJP-ms パッチは次の場所から
   入手可能です。iconv コマンドの -l オプションを指定して実行した時に
   EUCJP-MS が一覧に入っていない場合は、libiconv もしくは glibc に
   パッチを適用してインストールしてください。

    libiconv 用パッチ
      http://www2d.biglobe.ne.jp/~msyk/software/libiconv-patch.html
    glibc 用パッチ
      http://www2d.biglobe.ne.jp/~msyk/software/glibc/

    1) 本ツールのパッケージを入手します。おそらくあなたは、この文書を
       読んでいますから、すでに入手されているのでしょう。

    2)	TARアーカイブを展開します。もしGNU tarを使っているのであれば、
	"tar xzvf smbchartool-x.y.tar.gz"
        のようにすれば、展開できます。

    3) cd smbchartool-x.y として、展開されたディレクトリへ移動してくだ
       さい。

    4) INSTALL.shファイルを編集し、インストール先のディレクトリを希望
       するパスのとおった場所へ変更します。

    5) スーパユーザ権限になり、INSTALL.shを実行します。

    6) 以上でインストールは完了です。


    WARRANTY 注意
    --------------

    本ツールは、的確に作動するよう細心の注意をもって作成されていますが、
    完全性を保証するものではありません。また、いかなる利用についても、
    その適合性を保証するものではありません。すべて利用者の責任のもと使
    用してください。また、宇宙工学、医療など人命に関わるようなシステム
    への使用はできるだけ避けてください。

    本ツールを使用する際は、システムおよびデータのバックアップを必ずとっ
    てから実行してください。


    制限事項
    -------------

    sjistoeuc の使用において、ファイル名にユーザー定義外字領域の文字
    (95区〜114区)が含まれている場合、変換後のファイル名の該当部分は
    ゲタ「〓」に置き換えられます。


    使用方法
    -------------
    
    本ツールは、標準入力に変換の対象となるファイル名、ディレクトリ名を
    受取ります。標準出力には、なにも出力しません。異常があった場合には、
    標準エラー出力へメッセージを出力します。特定のオプションを与えるこ
    とにより、実際に処理を行わずに、動作を確認することができます。

    [ Samba 2 日本語版で使用する場合 ]

    変換できる文字コードは5種類です。これらを相互に変換できます。どれ
    からどれへ変換するかは、コマンド名により決定されます。

    文字コード:  euc, jis, sjis, cap, hex

    コマンド名の命名規則:   <元文字コード>"to"<新文字コード>
       例)  euctohex

    また、Samba日本語版での過去のバージョンからの文字コードの非互換性に
    対してサポートするため、sjistosjis, hextohex, captocap, euctoeuc, jistojis
    の5つのコマンドがサポートされます。これらのコマンドは、元のコードから
    いったん、SJISへ変換し、SJIS正規化をおこないまた、元のコードへと変換
    します。
    したがって、25通りのコマンド名をとることになります。本ツールは呼び
    出されたコマンド名で動作を変えるようつくられております。

    このツールは、以下のようにして使用します。

    # euctohex /home/samba/share/ 

    この例では、/home/samba/share配下のファイルすべてについて、eucの文
    字コードからhexへと変換されます。

    もし、変換前のファイルを残したい場合は、

    # euctohex -l /home/samba/share/ 
    
    のように、-lオプション  (linkの意味です)をつけると、元のファイルを
    ハードリンクとして残します。

    # euctohex -l -p /where/to/link /home/samba/share/ 

    のように、さらに -p オプションを付加することに同じディレクトリでは
    なく、同じファイルシステム内の別のディレクトリへハードリンクを作成
    することができます。これは、ファイルのバックアップ用途や、namazuを
    利用したweb検索システムの構築に有効でしょう。
 
    # euctohex -d /home/samba/share/ 

    のように、-d オプションをつけますと、実際のファイル操作を行わずに、
    動作の様子(リンクをはるとか、ファイルを消すとか)を標準エラー出力へ
    と出力します。

    また、このような利用方法を好まない管理者のために、別の文法も用意され
    ています。コマンド名に関わらず、-a オプションの指定により動作を変更
    できます。その場合、本コマンドは smbfnconv の名前で参照できて、

    # smbfnconv -a euctohex /where/want/to/conv

    のようにして用います。コマンド名より常に -a オプションが優先するため、
    
    # euctohex -a captojis /where/to/conv

    のように利用可能ですが、混乱するため推奨しません。

    SMBCHARTOOL Version 3.0 からは、次のような形式で EUC3, UTF-8 との相互
    変換が可能となっております。指定可能な文字コードは、[ Samba 3 で使用
    する場合 ] をご覧ください。

    # smbfnconv -f sjis -t utf-8 /where/want/to/conv

    -f, -t オプションを使って、Samba 2 日本語版で使用する cap, hex 形式に
    変換する場合は、次のように -2 オプションを付けます。

    # smbfnconv -2 -f sjis -t cap /where/want/to/conv

    [ Samba 3 で使用する場合 ]

    変換できる文字コードは以下の通りです。これらを相互に変換できます。
    どれからどれへ変換するかは、-f、-t オプションで指定します。

    文字コード: Samba 2: euc, euc3, sjis, utf8, cap, hex
                Samba 3: eucjp-ms, cp932, utf-8, cap, (hex)

    Samba 2 日本語版で作成されたファイル名をSamba 3 用に変換するには、
    -f オプションで Samba 2 用の codeset を指定し、-t で Samba 3 用の
    codeset を指定します。

    # smbfnconv -f euc -t eucjp-ms /where/want/to/conv

    -t に cap, hex を指定した場合は、デフォルトでは Samba 3 用の cap 
    を指定した事になります。

    ただし、Samba 3.0.0 では、hex はサポートされていない為、hex 形式
    に変換しても使用できませんのでご注意ください。

    [ Samba 2 日本語版で作成したファイルを Samba 3 で利用する場合 ]

    Samba 3 では一部の機種依存文字に関して Samba 2 日本語版とは異なる
    コードポイントを使用するため、それらの文字を含むファイル名は、事前
    に、Samba 3 用に変換しておく必要があります。

    sjis, euc3, cap のファイル名を Samba 3 に移行させるには次のようにし
    ます。

    sjis→cp932:    # smbfnconv -f sjis -t cp932 /where/want/to/conv
    euc3→eucJP-ms: # smbfnconv -f euc3 -t eucjp-ms /where/want/to/conv
    cap→cap(cp932) # smbfnconv -f cap -t cap /where/want/to/conv

    また、Samba 3 では、Samba 2 日本語版での euc および hex はサポート
    されていませんので、他の文字コードへの変換が必要です。

    euc→eucJP-ms:  # smbfnconv -f euc -t eucjp-ms /where/want/to/conv
    hex→cap(cp932) # smbfnconv -f hex -t cap /where/want/to/conv

    Samba 2 日本語版での UTF-8 に関しては、移行のための変換は必要あり
    ません。


    ドキュメント
    -------------

    本ツールのドキュメントは現状整備されていません。本ファイルに記述さ
    れていないことは、ソースを確認するほかに、確認する手段はありません。


    MLなど
    ------

    本ツールには、サポートはありませんが、作者や利用者が多くあつまるメー
    リングリストにて機能改善や議論を受け付けます。本ツールはSambaとと
    もに使われることを想定しているため、samba-jpメーリングリストにて議
    論するものとします。MLの加入方法については、
    
     http://www.samba.gr.jp/
     
    で確認してください。

    変更履歴
    ---------
    * Dec. 22, 2003 Ver.3.0 MORIYAMA Masayuki
      - added options for Samba 3.0
      - remove smbutfconv

    * Nov. 7, 2002 Ver.2.3a SATOH Fumiyasu
      - Fix typo in usage message
      - remove jcode.pl

    * Nov. 6, 2002 Ver.2.3 SATOH Fumiyasu
      - s/break/last/
      - s/checkk/check/

    * Oct.25, 2000 Ver.2.2 Hiroshi MIURA
      - fix CAP encoding bug with the code 0x80 and 0x2f(/)
             This is reported by  HIROSE, Masaaki.

    * Sep.15, 2000 smbutfconv Ver.1.0 Hiroshi MIURA
      - Add euc<->utf8 tool.

    * Aug.22, 2000 Ver.2.1a Hiroshi MIURA
      - remove 'use Errno' because don't need no more 

    * Aug.21, 2000 Ver.2.1 Hiroshi MIURA
      - rewrite directory parse functionality.

    * Aug.20, 2000 Ver.2.0 Hiroshi MIURA
      - Change algorism on handling directory
      - based on Ver.1.8

    * Aug.21, 2000 Ver.1.9 Hiroshi MIURA
      - fix keeping uid and gid when mkdir
      - up scalablity: rmdir when dirlists is over the MAXDIRLISTS.

    * Aug.20, 2000 Ver.1.8 Hiroshi MIURA
      - fix mkdir permission mask bug and add umask check
      - keep atime and mtime when mkdir
 
    * Aug. 7, 2000 Ver.1.7 Hiroshi MIURA
      - change command file name 'hextoeuc' to 'smbfnconv'
        to figure out its functionality.
      - added script to install

    * Jul. 31, 2000 Ver.1.6 Hiroshi MIURA
      - add -a option
      - tuning find oparation.
 
    * Jul. 31, 2000 Ver.1.5 Hiroshi MIURA
      - fix overflow problem in rmdir.

    * Jul. 30, 2000 Ver.1.4 Hiroshi MIURA
      - change command line not to using find piping.
        thats more smart to use.
      - convert to GETA if invalid charcode exists.

    * Jul. 30, 2000 Ver.1.3 Hiroshi MIURA
      - add capability of the hextohex, sjistosjis,
        captocap, jistojis, euctoeuc.
        These are to fix the samba compativility problem.

    * Jul. 23, 2000 Ver.1.2 Hiroshi MIURA
      - stop rmdir action when -d option is added. 

    * Jul. 21, 2000 Ver.1.1, Hiroshi MIURA
      - add about directory handling
      - be usable the -p option.

    * Jul. 20, 2000 Ver 1.0, Hiroshi MIURA
      - Add logic about SJIS regularion and the other 
        Charset handling
      - select function using which command name is used.
      - regulation logic is implied by binary search method.

    * Jun. ??, 2000 Ver 0.9, Hiroshi MIURA
      - test release
      - only convert HEX to EUC.
        primitive implimentation 

