[vlc-devel] [PATCH] Don't assume O_CLOEXEC is defined

Rémi Denis-Courmont remi at remlab.net
Thu Jan 5 08:35:46 CET 2012

On Wed, 04 Jan 2012 16:43:19 -0500, Rafaël Carré <rafael.carre at gmail.com>
>> That is not true:
>> http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/fcntl.h.html
> OK I only have the previous edition on disk

Google "site:opengroup.org 2008 $keyword" is your friend.

>> Besides, where something originates from is irrelevant. uselocale() is
>> MacOS
>> invention and openat() comes from Solaris. We still use them because
>> they are
>> useful.
> Speaking of which, dirfd() is a BSD function.
> We don't use it on BSD because (some of?) those systems declare it as a
> macro and AC_REPLACE_FUNCS doesn't catch it.

POSIX requires that dirfd() is a function, not (only) a macro. This is
precisely to avoid that kind of problems.

Regardless our dirfd() function replacement should call the dirfd() macro
on systems that have one, so this should be a non-issue.

>> Linux support for close-on-exec is in the kernel, not libc. And that is

>> irrelevant. What is relevant is your patch brings back a well-known
>> annoying
>> old bug, leaking of device nodes through child processes.
> The flag is actually used where possible .. so it's not "bringing back"
> a bug, but let VLC build (and leak device nodes through child processes)
> on systems without O_CLOEXEC.

It actually does bring the bug back as compared to earlier VLC versions.

> Also you must have understood by now that this is for FreeBSD..

If FreeBSD provides Linux-specific header files, it is reasonable to
expect it to provide Linux APIs. So that counts as a FreeBSD bug to me.

Rémi Denis-Courmont

More information about the vlc-devel mailing list