statシステムコールのハマリ

ファイルがディレクトリか否かを確認するために、statを使う。

正しい方法:S_ISDIRを使う
S_ISDIR(buf.st_mode)

間違った方法:S_IFDIRを使う
buf.st_mode & S_IFDIR
とすると、デバイスもマッチしちゃう。
S_IFDIRを使うなら
((buf.st_mode) & S_IFMT) == S_IFDIR
のようにチェックする必要。