[FFmpeg-devel] setmode(fd, flag)
Måns Rullgård
mans
Thu Dec 18 23:17:38 CET 2008
"Ramiro Polla" <ramiro.polla at gmail.com> writes:
> On Tue, Dec 16, 2008 at 3:48 PM, M?ns Rullg?rd <mans at mansr.com> wrote:
>> Fran?ois Revol wrote:
>>>> Yes. But it is defined in BeOS (IIRC) and setmode does something
>>>> completely different. So the code, as is, is not good.
>>>
>>> BSD has its own setmode(), see
>>> http://www.manpagez.com/man/3/setmode/
>>>
>>> It's been discussed already several times here.
>>>
>>>> It seems (from msdn [0]) that _setmode is preferred.
>>>
>>> Then check for it in configure...
>>> but make sure it doesn't colide with a weak symbol fallback
>>> elsewhere...
>>
>> Since a variety of setmode() functions seem to exist on different
>> systems, I suggest manually enabling its use in the OS-specific part
>> of configure on the relevant systems.
>
> Like $attached?
>
> Index: configure
> ===================================================================
> --- configure (revision 16223)
> +++ configure (working copy)
> @@ -824,6 +824,7 @@
> $THREADS_LIST
> altivec_h
> arpa_inet_h
> + binary_files
> bswap
> closesocket
> cmov
> @@ -1462,6 +1463,7 @@
> SHFLAGS='-shared -Wl,--output-def,$$(@:$(SLIBSUF)=.def) -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-auto-image-base'
> objformat="win32"
> enable dos_paths
> + enable binary_files
> check_cpp_condition _mingw.h "(__MINGW32_MAJOR_VERSION > 3) || (__MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION >= 15)" ||
> die "ERROR: MinGW runtime version must be >= 3.15."
> enabled_any avisynth vfwcap_demuxer &&
> @@ -1485,6 +1487,7 @@
> SHFLAGS='-shared -Wl,--enable-auto-image-base'
> objformat="win32"
> enable dos_paths
> + enable binary_files
> ;;
> *-dos|freedos|opendos)
> disable ffplay ffserver vhook
> @@ -1493,6 +1496,7 @@
> EXESUF=".exe"
> objformat="win32"
> enable dos_paths
> + enable binary_files
> ;;
> linux)
> enable dv1394
> @@ -1525,6 +1529,7 @@
> SLIB_UNINSTALL_EXTRA_CMD='rm -f "$(LIBDIR)"/$(LIBPREF)$(NAME)_dll.a "$(LIBDIR)"/$(LIBPREF)$(NAME)_dll.lib'
> disable vhook
> enable dos_paths
> + enable binary_files
> ;;
> interix)
> disable vhook
I has something like HAVE_MS_SETMODE in mind. A system could well
distinguish binary files from some other kind, yet lack this
particular setmode() function.
> Index: libavformat/file.c
> ===================================================================
> --- libavformat/file.c (revision 16223)
> +++ libavformat/file.c (working copy)
> @@ -44,7 +44,7 @@
> } else {
> access = O_RDONLY;
> }
> -#ifdef O_BINARY
> +#ifdef HAVE_BINARY_FILES
> access |= O_BINARY;
> #endif
> fd = open(filename, access, 0666);
This can stay. If someone ever finds a system where O_BINARY exists
but does something else, we'll deal with it then.
> @@ -104,7 +104,7 @@
> fd = 0;
> }
> }
> -#ifdef O_BINARY
> +#ifdef HAVE_BINARY_FILES
> setmode(fd, O_BINARY);
> #endif
> h->priv_data = (void *)(size_t)fd;
See above.
--
M?ns Rullg?rd
mans at mansr.com
More information about the ffmpeg-devel
mailing list