初雪

雪が降った。
信州飯島でみた雪を思い出して、なんだかうれしかった。
人生いろいろありすぎ。でも、頑張ろう。
昔、写真展のパンフレットに書いたことだけど、
僕を支えてくれるあの街は、心の中にあるだけじゃなくて、
今日も、岡谷から1時間半のところに、確かに存在していて、
そこにもきっと、ここと同じ雪が降っている。

GTK runtime for Windows

GTK の Windows 用のライブラリ一式を、以前は GladeWin32 project から取ってきて使っていたのだが、これはもうメンテナンスされていないらしい。特に、古いバージョンの cairo は僕にとって致命的だということがわかったので、アップデートする方法を模索中。
ヘッダファイルを含まないライブラリ一式のインストーラは、Alexander Shaduri さんの GTK+ for Windows Runtime にあるものが使えそう。いままで僕の使っていたヘッダファイルや何かでコンパイルしたものもちゃんと動いた。
しかし、このままじゃコンパイルできないのだ。というわけで、gimp.org の Tor Lillqvist さんのところからダウンロードして環境を構築。コンパイル時になくてもよいライブラリ (tiff や jpeg など) は、とりあえず入れない。runtime のほうに先に path を通しておけば、実行時にはそっちのライブラリ一式が使われるという寸法だ。
– atk-dev-1.20.0.zip
– cairo-dev-1.4.10.zip
– libiconv-1.9.1.bin.woe32.zip
– freetype-dev-2.3.4.zip
– libpng-1.2.8-bin.zip
– gettext-runtime-dev-0.17.zip
– libpng-1.2.8-lib.zip
– glib-dev-2.14.4.zip
– pango-dev-1.18.3.zip
– gtk+-dev-2.12.3.zip
libgw32c は GNU Win32 Projectから直接手に入れる。
– libgw32c-0.4-lib.zip
zlib は、zlib.net で配っているものだとなんだかうまくいかなかったので、何時間も悪戦苦闘したあげく、結局 gladewin32 の配布に入っていたものをとってくる。
– include/zlib.h
– include/zconf.h
– GTK/bin/zlib1.dll
– GTK/lib/z.lib
– GTK/lib/libz.dll.a
lib/pkgconfig/*.pc の prefix は環境にあわせて修正。それから、libpng.pc と libpng13.pc には -lpng12 と書かれているのだが、libpng13.dll しかないので、libpng.pc と libpng13.pc は書き直した。

NTEmacs

NTEmacs いれた。
Cygwin の /usr/local/emacs 以下に展開したのだが、Wanderlust とかを入れるときに Lisp の load path まわりではまったのでメモしておく。
$ make install EMACS=/usr/local/emacs/22.1/bin/emacs LISPDIR=c:/cygwin/usr/local/emacs/22.1/site-lisp/
とかすればいいのだが、LISPDIR で指定するのは cygwin 的な path ではなくて、Windows 的な path でなければならないところがポイント。間違えると、c:\usr\local とかできて、ちっとも読み込まれない…
しかし、ふつうの Emacs が動くようになったので、俄然 Windows も使いやすくなりました。なんといっても、いつもの環境でメールが読めるところがすごい。

Firemacs

Windows では Firefox を使うわけだが、Safari と違ってキーバインドが Emacs じゃないので、blog のエントリを書くときなんかにいちいち腹が立つわけです。
というわけで、Firemacs 入れた。
幸せ。
… あ、Safari 入れればいいの?

libz & libbz2 on MinGW

ファイルタイプを識別するために一度 open() してちょっと読んだものを lseek() で頭に戻して、gzdopen() とか BZ2_bzdopen() とかしていたのだけど、Windows ではなんだかうまく動かなくて、gzread() とかするといきなり EOF になる。なんてこった! gzopen() とか BZ2_bzopen() は問題なく動く。
せっかく open() したファイルハンドルを捨てるのはもったいない、というエコロジー精神は、Windows の世界では通用しないらしいです。しょぼーん、と思ってたら、gzdopen() は open() するときに O_BINARY を足してやればいいみたい。でも、BZ2_bzdopen() は、一度 read() して lseek() したらうまくいかなかった…
さて、プログラム直しますか。