Commit Graph

77 Commits

Author SHA1 Message Date
Martin Storsjö 00b62968d0 os_support: Don't try to return the service name as a string in getnameinfo
Some systems may be lacking getservbyport; the previous ifdef wasn't
quite enough since it still assumed that struct servent was defined,
as pointed out by Clément Gregoire.

Simply remove the possibility to return non-numeric services in
getnameinfo; no caller of getnameinfo within libavformat
currently try to use getnameinfo for retrieving the port number without
NI_NUMERICSERV, and falling back on getservbyport may be non-threadsafe.

Signed-off-by: Martin Storsjö <martin@martin.st>
2015-10-30 10:03:58 +02:00
Diego Biurrun 5928b29f53 os_support: Add #endif comments for better readability 2013-11-02 13:57:03 +01:00
Martin Storsjö dfc6b5c814 file: Move win32 utf8->wchar open wrapper to libavutil
When libavformat was changed to use the new avpriv_open function
in 51eb213d00, this silently bypassed the existing wrapper for
win32. Move the win32 wrapper into libavutil/file.c to make sure
it gets called everywhere (not just in the libavformat case).

This makes sure that non-ascii file names gets opened properly
(where file names internally are stored as utf8, but they get
converted to wchar_t and opened with _wsopen).

Signed-off-by: Martin Storsjö <martin@martin.st>
2013-08-08 16:41:33 +03:00
Hendrik Leppkes 85a46ad685 win32: Use 64-bit fstat/lseek variants for MSVC as well
Signed-off-by: Martin Storsjö <martin@martin.st>
2013-03-27 19:05:58 +02:00
Reimar Döffinger ad04025987 win32: Make ff_win32_open more robust
- Make MultiByteToWideChar fail when it encounters invalid encoding.
  Without this, invalid characters might just be skipped
- When MultiByteToWideChar fails, assume the file name is in CP_ACP
  and open it via normal open function, even when the file will be
  written
- When malloc fails return error instead of crashing

Signed-off-by: Martin Storsjö <martin@martin.st>
2013-03-27 18:54:46 +02:00
Reimar Döffinger e9cc988395 win32: Allow other programs to open the same files
In order to match Linux behaviour better our Windows-specific
open() replacement should disable Windows default file locking.

Signed-off-by: Martin Storsjö <martin@martin.st>
2013-03-27 18:51:51 +02:00
Mans Rullgard c3e73100af network: use getservbyport() only if available
The absence of this function will only give a less informative
string back from our fallback implementation of getnameinfo().

Signed-off-by: Mans Rullgard <mans@mansr.com>
2012-10-23 12:00:21 +01:00
Diego Biurrun 7a249625fd os_support: K&R formatting cosmetics 2012-07-17 20:10:50 +02:00
Martin Storsjö 9e4b04f8b9 network: Always use our version of gai_strerror on windows
Even if linking directly to getaddrinfo, use our version of
gai_strerror instead of the system's version. Microsoft explicitly
documents that their version of gai_strerror is thread-unsafe.

Signed-off-by: Martin Storsjö <martin@martin.st>
2012-07-15 21:41:38 +03:00
Martin Storsjö 2ca6e9bb47 network: Extend the fallback gai_strerror implementation to handle more error codes
This is useful if a proper getaddrinfo is loaded dynamically on
windows, while using the fallback implementation of gai_strerror.

Signed-off-by: Martin Storsjö <martin@martin.st>
2012-07-15 21:21:59 +03:00
Martin Storsjö cab2eb87f9 os_support: Rename the poll fallback function to ff_poll
The fallback function is a non-static function, we shouldn't be
defining non-static functions outside of the proper ff/av prefix
namespaces.

This is especially important for a function like poll, which
other parties (other libraries, or executables linking these
libraries) also might provide similar but incompatible fallbacks for.

Signed-off-by: Martin Storsjö <martin@martin.st>
2012-06-30 15:18:17 +03:00
Martin Storsjö 71078ad333 os_support: Don't compare a negative number against socket descriptors
The fds are unsigned integers in the windows definition of struct
sockfds. Due to this, the comparison if (fds[i].fd > n) was always
false.

Signed-off-by: Martin Storsjö <martin@martin.st>
2012-06-30 15:17:52 +03:00
Ronald S. Bultje 5aff37d28d os_support: Include all the necessary headers for the win32 open function
io.h is required for open and _wopen, and fcntl.h is required for
the O_CREAT flag. On mingw, fcntl.h is included by os_support.h (and
the mingw fcntl.h includes io.h), but include it explicitly here
since this implementation requires it.

Also move the #undef open up. open must not be defined to ff_win32_open
while including the headers that declare the open function. On mingw,
this happened in os_support.h before open was redirected.

Signed-off-by: Martin Storsjö <martin@martin.st>
2012-06-30 15:16:43 +03:00
Ronald S. Bultje e64bceeac0 configure: Check for sys/time.h
Apparently this include is needed on some systems for building the
poll fallback (for the timeval struct for select?), but it isn't
available on all systems. Thus only include it if it exists.

Signed-off-by: Martin Storsjö <martin@martin.st>
2012-06-26 17:22:21 +03:00
Mans Rullgard 4e5a514813 lavf: remove unnecessary inclusions of unistd.h
These files do not use anything provided by unistd.h.

Signed-off-by: Mans Rullgard <mans@mansr.com>
2012-06-20 11:46:30 +01:00
Martin Storsjö 561687696f network: Pass pointers of the right type to get/setsockopt/ioctlsocket on windows
This avoids warnings.

Signed-off-by: Martin Storsjö <martin@martin.st>
2012-06-19 20:22:47 +03:00
Martin Storsjö 3607ed70d5 Remove leftover includes of strings.h
Signed-off-by: Martin Storsjö <martin@martin.st>
2011-11-06 11:53:05 +02:00
Diego Biurrun 124e28847b Remove some stray unnecessary ffmpeg references. 2011-11-02 10:42:54 +01:00
Diego Biurrun 046f081b46 configure: Do not unconditionally add -D_POSIX_C_SOURCE to CPPFLAGS.
Adding _POSIX_C_SOURCE to CPPFLAGS globally produces all sorts of problems
since it causes certain system functions to be hidden on some (BSD) systems.
The solution is to only add the flag on systems that really require it, i.e.
glibc-based ones.

This change makes BSD systems compile out-of-the-box without the need for
adding specific flags manually.  It also allows dropping a number of flags
set manually on a file-per-file basis, but were only present to work around
breakage introduced by the presence of _POSIX_C_SOURCE.

Also add _XOPEN_SOURCE to CPPFLAGS for glibc systems.  We use XSI extensions
in several places already, so it is preferable to define it globally instead
of littering source files with individual #defines only needed for glibc.
2011-05-12 11:41:59 +02:00
Kirill Gavrilov b1ac139d89 Handle unicode file names on windows
All file names should be in UTF-8 within libavformat.

This is handled by mapping the open() function to an internal one
in os_support.h for windows.

fopen() could be overridden in the same way, but if that would be
used from ffmpeg.c, it would add a dependency on an ff prefixed
internal lavf function.

Signed-off-by: Martin Storsjö <martin@martin.st>
2011-04-24 00:05:38 +03:00
Mans Rullgard 2912e87a6c Replace FFmpeg with Libav in licence headers
Signed-off-by: Mans Rullgard <mans@mansr.com>
2011-03-19 13:33:20 +00:00
Max Shakhmetov 9ac2085dbf os_support: fix poll() implementation
Our poll implementation does not iterate over the pollfd array properly
while setting the revents.

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2011-02-15 18:11:50 +01:00
Mans Rullgard 362d8f7d9e os_support: make poll() fallbacks conditional on CONFIG_NETWORK
poll() is only used by networking code, so the fallback should
only be built if networking is enabled.  Also remove CONFIG_FFSERVER
condition from the declarations.

This should fix building on systems without poll(), broken
by a8475bbdb6.

Signed-off-by: Mans Rullgard <mans@mansr.com>
2011-01-28 17:23:19 +00:00
Luca Barbato a8475bbdb6 os: replace select with poll
Select has limitations on the fd values it could accept and silently
breaks when it is reached.
2011-01-28 15:45:19 +01:00
Måns Rullgård 7fddac9320 os_support: include some headers only when needed
Originally committed as revision 24072 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-07-06 11:42:52 +00:00
Måns Rullgård 22f73dccad Move resolve_host() to ffserver.c
This deprecated function is only used by ffserver, yet does not have
a prototype visible there.

In the long term, ffserver should be made IPv6-aware.  In the meantime,
this change removes cruft from lavf and fixes some warnings in ffserver.

Originally committed as revision 22329 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-03-08 18:43:27 +00:00
David Conrad 38c3b6e73e inet_aton needs _DARWIN_C_SOURCE on OS X
Originally committed as revision 22285 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-03-07 19:49:02 +00:00
David Conrad ac11d562e5 Localize the #define _SVID_SOURCE needed for inet_aton() to os_support.c
Originally committed as revision 22284 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-03-07 19:48:59 +00:00
Reimar Döffinger a34fc5e23d Make our getaddrinfo implementation initialize "struct addrinfo" return
value to NULL on errors.

Originally committed as revision 22122 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-02-28 22:31:17 +00:00
Ronald S. Bultje 04a2b04b98 Implement gai_strerror() for systems lacking such functionality. Patch
by KO Myung-Hun <komh challion net>.

Originally committed as revision 21692 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-02-08 18:48:12 +00:00
Martin Storsjö 6023d84a2b Load the proper getaddrinfo functions from ws2_32.dll, if they're present.
Patch by Martin Storsjö <martin at martin dot st>.

Originally committed as revision 21443 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-01-25 01:28:01 +00:00
Martin Storsjö 5d629b72cb Provide a fallback for getnameinfo() also. Patch by Martin Storsjö
<$firstname()$firstname,st>.

Originally committed as revision 21150 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-01-11 17:45:17 +00:00
Martin Storsjö fa053ca725 Provide fallback implementations of getaddrinfo() and freeaddrinfo().
Patch by Martin Storsjö <$firstname()$firstname,st>.

Originally committed as revision 21145 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-01-11 17:27:07 +00:00
Ronald S. Bultje 7e43f74a37 Use getaddrinfo(), if available, in resolve_host(). Patch by Martin
Storsjö <$firstname()$firstname,st>.

Originally committed as revision 21143 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-01-11 17:14:16 +00:00
Martin Storsjö b827f4eb47 Currently, the replacement which is used if inet_aton isn't available,
only works correctly on little-endian. The attached patch makes it endian
independent.

Patch by Martin Storsjö <$firstname()$firstname,st>.

Originally committed as revision 21080 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-01-08 00:04:23 +00:00
Aurelien Jacobs b250f9c66d Change semantic of CONFIG_*, HAVE_* and ARCH_*.
They are now always defined to either 0 or 1.

Originally committed as revision 16590 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-01-13 23:44:16 +00:00
Dave Yeo e748e34dd6 struct timeval requires #include <sys/time.h>
patch by Dave Yeo  daveryeo _at_ telus _dot_ net

Originally committed as revision 14793 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-08-16 18:39:30 +00:00
Aurelien Jacobs a964e813a1 use h_addr_list[0] instead of h_addr as this is the posix hostent field name
Originally committed as revision 14768 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-08-14 22:36:05 +00:00
Aurelien Jacobs 7246177d80 ensure we get explicit definition of various _XOPEN_SOURCE functions we use
Originally committed as revision 14766 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-08-14 22:01:59 +00:00
Luca Abeni f8cda19ee6 Include poll.h instead of sys/poll.h
Originally committed as revision 11924 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-02-13 12:51:14 +00:00
Michael Kostylev 81644c2ee0 Check for the presence of sys/select.h and conditionally #include it.
patch by Michael Kostylev, mik niipt ru

Originally committed as revision 11324 to svn://svn.ffmpeg.org/ffmpeg/trunk
2007-12-27 01:38:50 +00:00
Tom Harper 72d6b1bf1b Fix compilation of os_support.c for MinGW with --disable-network
Patch by Tom Harper <d.thomas.harper <at> gmail.com>

Originally committed as revision 11200 to svn://svn.ffmpeg.org/ffmpeg/trunk
2007-12-09 14:39:01 +00:00
Luca Abeni 087b327287 Include os_support.h only when needed
Originally committed as revision 11073 to svn://svn.ffmpeg.org/ffmpeg/trunk
2007-11-21 16:33:06 +00:00
Ramiro Polla 6ff3f3e7ce Check for winsock2.h instead of __MINGW32__
Originally committed as revision 9988 to svn://svn.ffmpeg.org/ffmpeg/trunk
2007-08-08 19:18:10 +00:00
Benoit Fouet d72e7d0f24 use sscanf to parse address
Originally committed as revision 9756 to svn://svn.ffmpeg.org/ffmpeg/trunk
2007-07-19 10:48:50 +00:00
Benoit Fouet 109d30e9f1 remove useless check
Originally committed as revision 9733 to svn://svn.ffmpeg.org/ffmpeg/trunk
2007-07-18 11:56:36 +00:00
Joakim Plate 104d04182d fix emulated inet_aton so that it fails for invalid addresses
patch by elupus: \elupus ecce se/
original thread:
[FFmpeg-devel] [PATCH] emulated inet_aton doesn't fail for invalidaddresses
date: 07/15/2007 12:40 AM

Originally committed as revision 9731 to svn://svn.ffmpeg.org/ffmpeg/trunk
2007-07-18 07:57:26 +00:00
Ramiro Polla 1fc44ed69e MinGW has those include files.
Originally committed as revision 9707 to svn://svn.ffmpeg.org/ffmpeg/trunk
2007-07-16 20:30:28 +00:00
Ramiro Polla 82e4ac2c97 Move av_gettime() back to lavf/utils.c
Originally committed as revision 9706 to svn://svn.ffmpeg.org/ffmpeg/trunk
2007-07-16 20:28:43 +00:00
Ramiro Polla c993a83131 MinGW has gettimeofday() since mingw-runtime-3.10
Originally committed as revision 9705 to svn://svn.ffmpeg.org/ffmpeg/trunk
2007-07-16 20:27:16 +00:00