パスワードを忘れた? アカウント作成
396297 journal

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**) が渡されることが判明。激しく勘違いしていた。トホホ

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

長期的な見通しやビジョンはあえて持たないようにしてる -- Linus Torvalds

読み込み中...