| Index: patched-ffmpeg-mt/libavformat/os_support.c
|
| ===================================================================
|
| --- patched-ffmpeg-mt/libavformat/os_support.c (revision 41250)
|
| +++ patched-ffmpeg-mt/libavformat/os_support.c (working copy)
|
| @@ -22,6 +22,7 @@
|
|
|
| /* needed by inet_aton() */
|
| #define _SVID_SOURCE
|
| +#define _DARWIN_C_SOURCE
|
|
|
| #include "config.h"
|
| #include "avformat.h"
|
| @@ -45,7 +46,7 @@
|
| #include <stdlib.h>
|
| #include <strings.h>
|
|
|
| -int inet_aton (const char * str, struct in_addr * add)
|
| +int ff_inet_aton (const char * str, struct in_addr * add)
|
| {
|
| unsigned int add1 = 0, add2 = 0, add3 = 0, add4 = 0;
|
|
|
| @@ -58,6 +59,11 @@
|
|
|
| return 1;
|
| }
|
| +#else
|
| +int ff_inet_aton (const char * str, struct in_addr * add)
|
| +{
|
| + return inet_aton(str, add);
|
| +}
|
| #endif /* !HAVE_INET_ATON */
|
|
|
| #if !HAVE_GETADDRINFO
|
| @@ -78,13 +84,14 @@
|
| return win_getaddrinfo(node, service, hints, res);
|
| #endif
|
|
|
| + *res = NULL;
|
| sin = av_mallocz(sizeof(struct sockaddr_in));
|
| if (!sin)
|
| return EAI_FAIL;
|
| sin->sin_family = AF_INET;
|
|
|
| if (node) {
|
| - if (!inet_aton(node, &sin->sin_addr)) {
|
| + if (!ff_inet_aton(node, &sin->sin_addr)) {
|
| if (hints && (hints->ai_flags & AI_NUMERICHOST)) {
|
| av_free(sin);
|
| return EAI_FAIL;
|
| @@ -203,42 +210,18 @@
|
|
|
| return 0;
|
| }
|
| -#endif
|
|
|
| -/* resolve host with also IP address parsing */
|
| -int resolve_host(struct in_addr *sin_addr, const char *hostname)
|
| +const char *ff_gai_strerror(int ecode)
|
| {
|
| -
|
| - if (!inet_aton(hostname, sin_addr)) {
|
| -#if HAVE_GETADDRINFO
|
| - struct addrinfo *ai, *cur;
|
| - struct addrinfo hints;
|
| - memset(&hints, 0, sizeof(hints));
|
| - hints.ai_family = AF_INET;
|
| - if (getaddrinfo(hostname, NULL, &hints, &ai))
|
| - return -1;
|
| - /* getaddrinfo returns a linked list of addrinfo structs.
|
| - * Even if we set ai_family = AF_INET above, make sure
|
| - * that the returned one actually is of the correct type. */
|
| - for (cur = ai; cur; cur = cur->ai_next) {
|
| - if (cur->ai_family == AF_INET) {
|
| - *sin_addr = ((struct sockaddr_in *)cur->ai_addr)->sin_addr;
|
| - freeaddrinfo(ai);
|
| - return 0;
|
| - }
|
| - }
|
| - freeaddrinfo(ai);
|
| - return -1;
|
| -#else
|
| - struct hostent *hp;
|
| - hp = gethostbyname(hostname);
|
| - if (!hp)
|
| - return -1;
|
| - memcpy(sin_addr, hp->h_addr_list[0], sizeof(struct in_addr));
|
| -#endif
|
| + switch(ecode) {
|
| + case EAI_FAIL : return "A non-recoverable error occurred";
|
| + case EAI_FAMILY : return "The address family was not recognized or the address length was invalid for the specified family";
|
| + case EAI_NONAME : return "The name does not resolve for the supplied parameters";
|
| }
|
| - return 0;
|
| +
|
| + return "Unknown error";
|
| }
|
| +#endif
|
|
|
| int ff_socket_nonblock(int socket, int enable)
|
| {
|
|
|