EDITOR=vi
はもういやだ!!
ということで起動が軽いngにUTF-8パッチを当てたものを作ることにしました。
% curl http://tomato.sakura.ne.jp/~amura/archives/ng/ng-1.5beta1.tar.gz | tar xz
% cd ng-1.5beta1
% curl http://www002.upp.so-net.ne.jp/hidev/ng-1.5beta1-utf8.patch.gz|gzcat|patch
% ./configure && make
こんなかんじでmakeをすると、
tty.c:292:3: error: non-void function 'ttinsl' should return a value [-Wreturn-type,Semantic Issue]
とエラーを吐いてコンパイルが止まります (他に警告も大量に出ます)。こんな感じの関数がエラーになっています;
func() {
return;
}
型指定のない関数ですね。Cの規約によりこれはint
を返すと仮定されますが、returnは何も返していません。「この関数はvoidじゃねえよ!! なんか値返せよ!!」とコンパイラが怒っているわけです。エラーメッセージにもそのように出ていますね。古いソースだとこういった関数が結構ありますし、実際ngのソースにあってエラーになりました。
これを抑止するにはコンパイルオプションに -Wno-return-type
をつけてやればよいです。というかこのオプションを発見するのに手間取りました(なのでここにメモを)。
Makefileを開いて
CFLAGS = -O2 $(CDEFS)
の行を
CFLAGS = -O2 $(CDEFS) -w -Wno-return-type
に書き換えればよいです。ついでに警告全抑止オプションの-w
もつけときました。これでgit commit
のときにviが起動して脱力するのを避けられます。