会社の PC が Windows 7 に更新されて、BitLocker が導入された。XP の頃に使っていた暗号化ソフトは HDD のアクセス速度が 1/3 ぐらいに低下するひどいものだったが、BitLocker はほとんど速度が変わらないようだ。
Cygwin の hg に bash の補完が使えないのが以前から不満に思っていた。Mercurial のリポジトリには、bash 補完用のファイルがあるのでそれを持ってくることにした。
Mercurial (stable branch): 6e2ab601be3f contrib/bash_completion から raw を選択してファイルをダウンロードし、/etc/bash_completion.d/mercurial という名前を付けて保存。bash を再起動して hg の補完が使えるようになった。
Cygwin の stgit も bash の補完が使えないが、こちらも公式サイトからダウンロードしたパッケージに、補完用のファイルが含まれていた。stgit-completion.bash というファイル名だが、Ubuntu に合わせて stg というファイル名に変更して、/etc/bash_completion.d/ に入れておいた。
mp3infp が落ちるという報告があった。Win7 だと再現しなかったが、XP だと確かに落ちた。OS によって違うなんて面倒だ。
mp4v2 2.0.0 が出ていたことに気づいた。これに変更して現象が修正されればよいのだが、API が変更されてしまって簡単に差し替えができないので困っている。
Windows で Vim を多重起動しない方法を調べてみた。「singleton.vim 作った - 永遠に未完成」が参考になった。自分の使い方だと、$Vim/macros/editexisting.vim で十分そうである。
Cygwin の dlopen() は、"libhoge.so" というライブラリ名を指定すると、"cyghoge.dll" をロードしてくれるようだ。この動作はどこかに明記されているのだろうか。
Cygwin の w3m には、なぜかヘルプが表示されないという問題がある。ヘルプを表示するために H をタイプしても、"Can't load file:///$LIB/w3mhelp.cgi?version=w3m%2F0.5.2&lang=ja" とエラーが表示されるだけである。自分でビルドして原因を調べてみることにした。
Cygwin のインストーラで w3m-0.5.2-2 のソースをダウンロードし、以下のコマンドを実行した。(configure のオプションは、CYGWIN-PATCHES/w3m.README に記載の通り。)
$ cd /usr/src/w3m-0.5.2-2/ $ ./configure --prefix=/usr --libexecdir=/usr/lib --with-ssl --with-termlib=ncurses --enable-image=no $ make
すると、コンパイルエラーが発生してしまった。どうやら libgc の仕様が一部変わってしまったらしい。(今回使ったバージョンは libgc-devel-7.2d-1) 以下のパッチでコンパイルが通るようになった。
diff -ur w3m-0.5.2-2.org/main.c w3m-0.5.2-2/main.c --- w3m-0.5.2-2.org/main.c 2007-05-31 10:19:50.000000000 +0900 +++ w3m-0.5.2-2/main.c 2012-09-11 10:58:54.752964400 +0900 @@ -842,7 +842,8 @@ mySignal(SIGPIPE, SigPipe); #endif - orig_GC_warn_proc = GC_set_warn_proc(wrap_GC_warn_proc); + orig_GC_warn_proc = GC_get_warn_proc(); + GC_set_warn_proc(wrap_GC_warn_proc); err_msg = Strnew(); if (load_argc == 0) { /* no URL specified */
実行ファイルのサイズを見ると、Cygwin の公式バイナリに比べて 1MB ほど大きかった。libintl にスタティックリンクしているのが原因だった。ダイナミックリンクに変更する正しい方法が分からなかったので、Makefile を直接書き換えることにした。/usr/lib/libintl.a を /usr/lib/libintl.dll.a に変更したところ、公式バイナリとほぼ同じサイズのバイナリができあがった。
できたバイナリを実行したところ、何の問題もなくヘルプが表示された。公式バイナリで表示されない原因が分からず、ちょっと気持ち悪い。
そういえば、w3m は去年、数年ぶりに新バージョン (0.5.3) が出たのだった。コンパイルしたところ、GC_set_warn_proc() でエラーになるのは、0.5.2 と同じだった。上記のパッチを当ててから、以下のコマンドでビルドし直した。
$ ./configure --prefix=/usr/local --with-ssl --with-termlib=ncurses --enable-image=win $ make
libintl へはダイナミックリンクするようになっていた。w3mimgdisplay が Cygwin に対応したらしいのだが、残念ながら画像は表示されなかった。
4月に Wheel Redirector 1.7.4 が出ていたことに気づいた。1.7.3 以来 8年ぶりの新バージョンである。Google Chrome への対応だそうだ。履歴を見る限りでは、横スクロールへの対応はしていないようである。以前はソースコードが公開されていたが、今は公開されていないようである。
「Google Chrome 12 でホイールスクロールできなくなる不具合の解決方法 [ デジタルライフ部 ]」という情報を見つけた。ソースコードと見比べると、CWheelHook::GetWindowAt() の最後で return targetWindow としてたのを return parentWindow に変えたようである。