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。うぬぬ。