Xorgとかwchar_t
ねむいなぁ。
Xをフックするスクリプトを書いた。そうしたらXが起動しない。
#!/bin/sh
logfile=/tmp/Xcrashhook.log
date +%s > $logfile
/usr/bin/Xorg_orig "$@"
if [ -f "$logfile" ];then
start=`cat $logfile`
end=`date +%s`
keep=`expr $end - $start`
if [ "$keep" -lt 60 ];then
cp -f /etc/X11/xorg.conf.orig /etc/X11/xorg.conf
fi
fi
というもの。Xが60秒以内に終了したら、設定ファイルを書き戻す。
まったくもってうまくできていると思うのだけど、うんともすんともXが起動しない。
スクリプトを手で実行すればXは起動する。でも/etc/init.d/dm経由では起動してくれない。何故?
それから、wchar_tは非常に不可思議。
とりあえず、-fshort-wcharオプションを付けてコンパイルすると、wchar_tは16bitになる。
で、 L"/" はwcslenに言わせると16文字だったりする。 L"/\0\0" にすると1文字と言ってくれる。
一方で、wcslen(L"Hello World!\0\0") == 7であったりする。ちなみにwcslen(L"aHello World!\0\0")も7。うぬぬ。