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

Rafaël Carré rafael.carre at gmail.com
Wed Jan 4 22:43:19 CET 2012


Le 2012-01-04 16:33, Rémi Denis-Courmont a écrit :
> Le mercredi 4 janvier 2012 23:18:57 Rafaël Carré, vous avez écrit :
>>> I stole the code from (your?) posix/filesystem.c
>>
>> So this is Linux/glibc only
> 
> That is not true:
> http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/fcntl.h.html

OK I only have the previous edition on disk

> Besides, where something originates from is irrelevant. uselocale() is a 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.

>> (Drepper's invention)
> 
> Possibly so. The guy does have some clue about POSIX.
> 
>> Perhaps it could go in vlc_fs.h as
>> #ifndef O_CLOEXEC
>> # define O_CLOEXEC 0
>> #endif
>>
>>>> Besides, O_CLOEXEC is older than Linux DVBv5 which the plugin requires,
>>>> so it seems rather pointless.
>>
>> Do we require "a certain version of glibc which has O_CLOEXEC" ?
> 
> 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.

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



More information about the vlc-devel mailing list