net-misc/dhcpcd
FreeBSD-8.0 からは "void closefrom(int)" が定義されているが、これが dhcpcd のものと conflict して emerge できていない。
とりあえず、こんな感じで configure のテストを変えてあげるとうまくコンパイルできるようになった。
diff --git a/configure b/configure index 3c226af..f2fac83 100755 --- a/configure +++ b/configure @@ -255,8 +255,15 @@ if [ -z "$CLOSEFROM" ]; then printf "Testing for closefrom ... " cat <<EOF >_closefrom.c #include <unistd.h> +#ifdef __FreeBSD__ +#include <osreldate.h> +#endif int main(void) { +#if defined(__FreeBSD_version) && __FreeBSD_version >= 800000 + closefrom(3); +#else int r = closefrom(3); +#endif return 0; }
"closefrom(int lowfd)" はそもそも何をするかというと、 lowfd 以上のファイルデスクリプタを全て閉じるようだ。エラー処理が実装によって違うようで
- FreeBSD-8.0 はエラーを全て無視。なので、返り値は void
- NetBSD では close の時のエラーは無視。 lowfd の誤りだけ確認。(多分) (http://twitter.com/_taca_/status/11826912275 , http://twitter.com/_taca_/status/11827082245)
- dhcpcd の独自実装だと close の返り値の合計が返ってくる。 (<- でも使ってない…。)
今のところ dhcpcd が closefrom の返り値を使ってないから、上記の patch でなんとかなりはしてる、といったところ。