cygwin で w3m を使う
                                                     (2003/02/17) 渡邉勝之
						        knabe@sannet.ne.jp

Windows で w3m を動かすためには，Windows 上の UNIX互換環境である Cygwin が
必要です．
Cygwin に関する情報は http://cygwin.com/ を参照してください．


* ビルド

w3m-0.2 以降から cygwin 向けの修正パッチが取り込まれたため，cygwin-1.1.4
以降の環境であれば特に問題なくビルドできます．Net Release 前の B18, B19, 
B20あたりでもビルドできるはずですが，確認はされていません．

なお，termcap ないし ncurses パッケージは最新のものを使ってください．特
に termcap を使う場合，古いパッケージは /etc/termcap の cygwin のエント
リにバグがあり，表示がおかしくなります．この問題は termcap-20001020-1 で
修正されているため，これ以降のバージョンを使用してください．

ビルドする際には， 必ず ./configure してから make してください．以下で説
明するマクロが定義されなくなるため，正常に動作しなくなります．また，正常
にビルドできない，正常に動作しない場合には，バグ報告をする前に以下の点を
チェックしてください．

  o make veryclean してから再度 ./configure && make してみる．
  o gcc, binutils が正常にインストールされているかを確認する．
      cygwin の setup.exe に問題があり，パッケージファイルのダウンロード
      に失敗しても，エラーの報告をしないで正常終了してしまうことがあるよ
      うです．その場合には再度 setup をやりなおしてください．

また Win95/98/ME では，環境変数 CYGWIN に 'ntsec' もしくは 'ntea' が含ま
れていると，シェルスクリプトに実行属性がつかなくなるため，configure に失
敗するようです．w3m に限らず，他にも問題が発生するという報告があるため，
Win95/98/ME で Cygwin を使用する場合には，最初に cygwin1.dll をロードす
る際の環境変数 CYGWIN から ntsec, ntea の記述を取り除いてください．


* マクロ

config.h には，Cygwin 環境向けに以下のマクロを定義してあります．

o USE_BINMODE_STREAM
  -dump, -dump_{head,source,both,extra} 時の stdout への出力をバイナリ
  モードで行います．cygwin-1.3.11 以降では不要になっているはずですが，
  安全側に振っておくために残しています．
  Cygwin, EMX 環境で共通です．

o SUPPORT_DOS_DRIVE_PREFIX
  'C:', 'C:/', 'file://C:/', 'file://C|/' などのドライブレターを含むパ
  スを認識し，ファイル名として扱う機能を有効にします．
  Cygwin, EMX 環境で共通です．

o SUPPORT_NETBIOS_SHARE
  '//NETBIOSHOST/SHARE/PATH', 'file://NETBIOSHOST/SHARE/PATH' 形式の
  NETBIOS 共有資源へのアクセスを ftp: スキーマではなく file: スキーマ
  として扱う機能を有効にします．
  Cygwin 環境に特有です．

o SUPPORT_WIN9X_CONSOLE_MBCS
  Win9X 系の DOS プロンプトで，検索およびフォームへの一行エディタ入力
  時に日本語 IME 経由の入力をサポートします．
  ただし，Win9X 系の DOS プロンプトの実装および Cygwin の tty レイヤー
  の問題により，ローカルコンソールで TERM=cygwin かつ環境変数 CYGWIN
  に 'tty' が含まれない場合のみ IME からの入力を許可しています．
  なお，NT 系ではこのマクロを無効にしても動作は変更されず，ローカルコ
  ンソールであれば IME による日本語入力が可能です．
  LANG=JA 指定時の Cygwin 環境に特有です．


* Native Application との連携

Cygwin 環境でビルドした w3m から Win32 Native アプリケーションを起動する
場合，パスの記述形式の違いによって，ファイルが見つからないなどのエラーが
発生します．

o ローカルCGI

Cygwin 環境でビルドすると，$LIB (通常は /usr/local/lib/w3m/cgi-bin) 以下
にインストールされるローカル CGI は cygwin の /usr/bin/perl を使うように
設定されます．これに対し，Native アプリケーションの ActivePerl などを使
用する場合，以下のようなラッパースクリプトを用意し，$LIB 以下の各スクリ
プトを修正してください．

------ /usr/local/bin/winperl ------
#!/bin/sh
# wrapper script for Win32 Native Perl
PERL=/cygdrive/c/Perl/bin/perl.exe
case $1 in
  -*)
    ;;
  *)
    SCRIPT=`cygpath -w $1`
    shift
    ;;
esac
exec "$PERL" "$SCRIPT" $@
------------------------------------
※PERL= には Cygwin 環境の内部から見た Native Perl のパスを記述してくだ
  さい．cygpath ユーティリティは cygwin パッケージに入っています．

なお，ディレクトリリストだけであれば，オプション設定で「ディレクトリリス
トに外部コマンドを使う」を NO にすれば，ローカル CGI を使わずにディレク
トリのブラウズを行います．

o エディタ

w3m はテキストエリアの内容編集などに外部エディタを使用しますが，外部エデ
ィタに Win32 Native アプリケーションを使う場合，以下のスクリプトを外部エ
ディタに指定してください．

------ /usr/local/lib/w3m/winedit ------
#!/bin/sh
EDITOR='/cygdrive/c/Program Files/sakura/sakura.exe'
FILE=`cygpath -a -w $1`
exec "$EDITOR" "$FILE"
----------------------------------------
※EDITOR= には Cygwin 環境の内側から見た Native アプリケーションのパスを
  記述してください．

なお，NT 系で inetd をサービスとして動かしていて，localhost に telnet で
接続している場合には，「デスクトップとの対話をサービスに許可」を ON にし
ておかなければ window が表示されません．


* 既知のバグ

以下は，Cygwin 環境で w3m を動かした場合の問題点です．

o -dump, -dump-source 時に LF -> CR+LF の変換が行われることがある．

  コンパイル時にマクロ USE_BINMODE_STREAM が define されていない可能性が
  あります．
  きちんと configure したうえでコンパイルしなおすか，環境変数 CYGWIN に 
  binmode を設定してください．

o Win9X 系の DOS プロンプトで IME 経由の入力ができない．

  環境変数 CYGWIN に 'tty' が含まれているときには，Cygwin の tty レイヤ
  の問題を回避するために IME 経由の入力を禁止しています．環境変数 CYGWIN
  から 'tty' を削除してください．

o Win9X 系の DOS プロンプトで IME が ON になっているとカーソルが効かない．

  Win9X の DOS プロンプトと Cygwin の tty レイヤーの実装の問題です．
  代わりに C-f, C-b, C-p, C-n を使ってください．

o NT 系のコマンドプロンプトで画面制御がおかしくなる．

  「レイアウト」タブで画面バッファのサイズとウィンドウのサイズを違う値に
  してバックスクロールができるように設定していると，画面制御がおかしくな
  ることがあるようです．

o DOS プロンプト，コマンドプロンプトでマウスが使えない．

  DOS プロンプト「編集オプション」/コマンドプロンプトの「オプション」で
  「簡易編集モード」が ON になっていると，マウスイベントが w3m に渡され
  ません．OFF に設定してください．

o DOS プロンプト，コマンドプロンプトでマウスボタンに対する反応がおかしい．

  cygwin-1.3.15 までの環境では，マウスの右と中央ボタンのエスケープシー
  ケンスが入れ替わっていました．これは cygwin-1.3.16-1 で修正されていま
  すが，w3m 側のバージョン判定が完全ではないため，使用する環境でビルド
  するようにしてください．


* その他

Cygwin 環境では，DOS プロンプト/コマンドプロンプトを使うよりも，inetd を
あげて，ローカルに TeraTerm, PuTTY などの telnet クライアント経由でログ
インする，ないしは rxvt, cygterm を使用するほうが快適です．

o rxvt:
    rxvt on Cygwin
      http://hp.vector.co.jp/authors/VA021953/rxvt/
    compiled package
      http://matsu-www.is.titech.ac.jp/~sohda/cygwin/dist/
o cygterm:
    CygTerm - Yet another Cygwin console
      http://www.dd.iij4u.or.jp/~nsym/cygwin/cygterm/

