cooperの日記: scandir()
日記 by
cooper
のソート関数仕様は cygwin と NetBSD で違うのか、と思って調べてみたら、cygwin は Linux の実装と同じになっているらしい。
マニュアルを見ると、(Net|Free)BSD は qsort と同じインタフェースで、const void* が引数。cygwin と Linux は const struct dirent** を引数に取る。ちなみに、Solaris の BSD 互換ライブラリでは struct direct** という感じ。
cygwin と Linux の実装ではファイル名以外の情報でもソートすることができるので、便利といえば便利かもしれない。でも、今必要なのは、ファイル名による単純な降順ソートだけなので、あんまり意味がなかったりするんだけど。
#ifdef で切り替えるのも面倒くさいなぁ。
帰宅後の追記:
ソート関数は吊しの alphasort で、lhs と rhs を交換するだけの wrapper を指定することにした。当然といえば当然だけど、Mac OS X も NetBSD と同じ仕様で思わずニンマリ。
さらに翌日の追記:
*BSD なソート用比較関数も、引数には (struct dirent**) が渡されることが判明。激しく勘違いしていた。トホホ
scandir() More ログイン