cocot - COde COnverter on Tty

Last Updated: 2010-09-03

Repository: http://github.com/vmi/cocot
Binary (for Cygwin-1.7): cocot-20100903-bin.tar.bz2
Old Versions: cocot-20080315.tar.bz2, cocot-20041220.tar.bz2, cocot-20040229.tar.gz, cocot-20030603.tar.bz2, cocot-20021024.tar.bz2, cocot-20020825.tar.bz2


これは何か?

端末(tty)とプロセスの間に割り込んで、文字コード変換を行うツールです。 Cygwinを含むUNIX互換環境において、sshやtelnetなどとともに利用できます。 (Windowsに附属のtelnetでは使えません)

初期バージョンではCygwin環境限定でしたが、Kazuhiro NISHIYAMAさんの手により、autotools対応になりました。

なお、実装は 詳解UNIXプログラミング・新装版、及び FreeBSDのscript.cを参考にしました。


変更点

2010-09-03 by IWAMURO Motonori
2008-03-15 by IWAMURO Motonori
2004-12-20 by IWAMURO Motonori
2004-02-29 by Kazuhiro NISHIYAMA
2003-06-03 by IWAMURO Motonori
2002-10-24 by IWAMURO Motonori

インストール

Cygwinについてはアーカイブにバイナリが含まれています。展開したディレクトリ中で「./install-cygwin.sh」を実行すると/usr/local/binにインストールされます。

それ以外のOSの場合は、一般的な「./configure」「make」「make install」でインストールできます。


環境設定

コマンドプロンプトから利用する場合、リモート環境にcygwinのterminfo情報をインストールする必要があります。以下にその例を示します。なお、ここではsshが利用できることを前提としています。

  1. terminfo情報の取得
    Windows環境上で以下を実行します。
           $ infocmp cygwin > cygwin.terminfo
    
  2. terminfo情報の転送
           $ scp cygwin.terminfo [リモートホスト]:/tmp
    
  3. リモート環境にログイン
           $ ssh [リモートホスト]
    
  4. リモート環境の設定 (スーパーユーザ権限を得られない場合のみ)
    スーパーユーザ権限を得られない場合は事前設定が必要です。設定方法はお使いのリモート環境に依存すると思われますので、詳細はリモート環境のterminfoマニュアルページ等をご参照ください。以下ではLinux(ログインシェルはbash)を想定しています。
           $ cd
           $ mkdir .terminfo
           $ export TERMINFO=$HOME/.terminfo
    
    bashのスタートアップスクリプトにも環境変数TERMINFOの設定を記述しておきます。
  5. リモート環境にterminfo情報を登録
    ※スーパーユーザ権限を得ることができる方は、suもしくはsudoを用いて以下を実行してください。
           # tic /tmp/cygwin.terminfo
    

ビルド

Cygwinの場合、libiconv, libutil(inetutilsに含まれる)を使用しているため、事前にこれをインストールしておく必要があります。Cygwin SetupのSelect Package画面で、Category→Devel→libiconvおよびCategory→Net→inetutilsを選択してインストールしてください。

※Cygwinパッケージの問題で、libiconvに関する環境が壊れている場合があるようです。その場合はlibiconvを再インストールしてみてください。

それ以外のOSについては、適宜必要なパッケージをインストールしておいてください。(手抜き^^;)

あとは、一般的なソースパッケージと同じく、

./configure
make
make install

でビルドおよびインストールができます。

なお、TERM_CODEとPROC_CODEのデフォルトはconfigureの引数に指定可能です。

現在、以下の環境でビルドできることが確認されています。


どうやって使うのか?

コマンドプロンプトやrxvtを使っているときに、文字コードがEUC-JPであるホストにログインするときに使います。

iwa@ryprim /window                                           ←Windows上にいる
(528)> \ls --show-control-chars *.bmp                  ←文字コードはShift_JIS
winnt.bmp              サンタフェ.bmp    青いレース編み 16.bmp
winnt256.bmp           シャボン.bmp      大草原の風.bmp
しゃくなげ.bmp         フィッシング.bmp  珈琲カップ.bmp
グリーン ストーン.bmp  羽毛.bmp
サポテック織り.bmp     隅田川.bmp

iwa@ryprim /windows
(529)> cocot ssh lydia                                  ←Linuxにloginしてみた
Linux lydia 2.4.27-3-386 #1 Wed Dec 6 00:38:33 UTC 2006 i586
You have new mail.
Last login: Sat Apr  5 10:43:09 2008 from ryprim.vmi.jp
[iwa@lydia]~(1)$ echo $LANG                                       ←EUC-JP環境
ja_JP.eucJP
[iwa@lydia]~(2)$ date
2008年  4月  6日 日曜日 01:41:27 JST                      ←文字化けしてません

オプションは以下の通りです:

  -o LOGFILE    コード変換前のコマンドの出力を全てファイルに出力します。
  -a            -oオプション指定時に追記モードにします。
  -t TERM_CODE  ターミナルの文字コードを指定します。デフォルトはCP932。
  -p PROC_CODE  コマンドプロセスの文字コードを指定します。デフォルトはEUC-JP。
  -i            ISO-2022-JPのエスケープシーケンスを無視します。
  -n            コード変換を行いません。
                (-o と組み合わせて script(1) の代わりに使えます)
  -h            ヘルプメッセージを表示します。
  -v            バージョンを表示します。


ライセンス

修正BSDライセンスとします。(see. LICENSE.txt)


[BACK] | [TOP]