Mercurial > libavformat.hg
annotate network.h @ 3754:8d267b43eaba libavformat
Move malloc() down until after all initializations, so that the resource is
only allocated if initialization worked. This means that on failure, we
don't have to deallocate it.
author | rbultje |
---|---|
date | Sat, 23 Aug 2008 18:46:30 +0000 |
parents | 792383dd085e |
children | 1b6245500d8c |
rev | line source |
---|---|
1754 | 1 /* |
2 * Copyright (c) 2007 The FFmpeg Project. | |
3 * | |
4 * This file is part of FFmpeg. | |
5 * | |
6 * FFmpeg is free software; you can redistribute it and/or | |
7 * modify it under the terms of the GNU Lesser General Public | |
8 * License as published by the Free Software Foundation; either | |
9 * version 2.1 of the License, or (at your option) any later version. | |
10 * | |
11 * FFmpeg is distributed in the hope that it will be useful, | |
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
14 * Lesser General Public License for more details. | |
15 * | |
16 * You should have received a copy of the GNU Lesser General Public | |
17 * License along with FFmpeg; if not, write to the Free Software | |
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |
19 */ | |
20 | |
2620
792383dd085e
Add FFMPEG_ prefix to all multiple inclusion guards.
diego
parents:
2351
diff
changeset
|
21 #ifndef FFMPEG_NETWORK_H |
792383dd085e
Add FFMPEG_ prefix to all multiple inclusion guards.
diego
parents:
2351
diff
changeset
|
22 #define FFMPEG_NETWORK_H |
1754 | 23 |
2322 | 24 #ifdef HAVE_WINSOCK2_H |
2085 | 25 #include <winsock2.h> |
26 #include <ws2tcpip.h> | |
27 | |
28 #define ff_neterrno() WSAGetLastError() | |
29 #define FF_NETERROR(err) WSA##err | |
30 #define WSAEAGAIN WSAEWOULDBLOCK | |
31 #else | |
1754 | 32 #include <sys/types.h> |
33 #include <sys/socket.h> | |
34 #include <netinet/in.h> | |
35 #include <netdb.h> | |
36 | |
2056
eeea52739ff3
use ff_neterrno() and FF_NETERROR() for networking error handling
alex
parents:
1943
diff
changeset
|
37 #define ff_neterrno() errno |
eeea52739ff3
use ff_neterrno() and FF_NETERROR() for networking error handling
alex
parents:
1943
diff
changeset
|
38 #define FF_NETERROR(err) err |
2085 | 39 #endif |
40 | |
41 #ifdef HAVE_ARPA_INET_H | |
42 #include <arpa/inet.h> | |
43 #endif | |
2056
eeea52739ff3
use ff_neterrno() and FF_NETERROR() for networking error handling
alex
parents:
1943
diff
changeset
|
44 |
2057
857fbfeb2fa0
implement ff_socket_nonblock and use it in networking code
alex
parents:
2056
diff
changeset
|
45 int ff_socket_nonblock(int socket, int enable); |
857fbfeb2fa0
implement ff_socket_nonblock and use it in networking code
alex
parents:
2056
diff
changeset
|
46 |
2351
b9a881c0967e
Add initialization and cleanup functions for Winsock
ramiro
parents:
2322
diff
changeset
|
47 static inline int ff_network_init(void) |
b9a881c0967e
Add initialization and cleanup functions for Winsock
ramiro
parents:
2322
diff
changeset
|
48 { |
b9a881c0967e
Add initialization and cleanup functions for Winsock
ramiro
parents:
2322
diff
changeset
|
49 #ifdef HAVE_WINSOCK2_H |
b9a881c0967e
Add initialization and cleanup functions for Winsock
ramiro
parents:
2322
diff
changeset
|
50 WSADATA wsaData; |
b9a881c0967e
Add initialization and cleanup functions for Winsock
ramiro
parents:
2322
diff
changeset
|
51 if (WSAStartup(MAKEWORD(1,1), &wsaData)) |
b9a881c0967e
Add initialization and cleanup functions for Winsock
ramiro
parents:
2322
diff
changeset
|
52 return 0; |
b9a881c0967e
Add initialization and cleanup functions for Winsock
ramiro
parents:
2322
diff
changeset
|
53 #endif |
b9a881c0967e
Add initialization and cleanup functions for Winsock
ramiro
parents:
2322
diff
changeset
|
54 return 1; |
b9a881c0967e
Add initialization and cleanup functions for Winsock
ramiro
parents:
2322
diff
changeset
|
55 } |
b9a881c0967e
Add initialization and cleanup functions for Winsock
ramiro
parents:
2322
diff
changeset
|
56 |
b9a881c0967e
Add initialization and cleanup functions for Winsock
ramiro
parents:
2322
diff
changeset
|
57 static inline void ff_network_close(void) |
b9a881c0967e
Add initialization and cleanup functions for Winsock
ramiro
parents:
2322
diff
changeset
|
58 { |
b9a881c0967e
Add initialization and cleanup functions for Winsock
ramiro
parents:
2322
diff
changeset
|
59 #ifdef HAVE_WINSOCK2_H |
b9a881c0967e
Add initialization and cleanup functions for Winsock
ramiro
parents:
2322
diff
changeset
|
60 WSACleanup(); |
b9a881c0967e
Add initialization and cleanup functions for Winsock
ramiro
parents:
2322
diff
changeset
|
61 #endif |
b9a881c0967e
Add initialization and cleanup functions for Winsock
ramiro
parents:
2322
diff
changeset
|
62 } |
b9a881c0967e
Add initialization and cleanup functions for Winsock
ramiro
parents:
2322
diff
changeset
|
63 |
1943
c0c0f19f0db6
Some more BeOS cleanup: check for arpa/inet.h; declare the prototype for inet_aton if not found; remove barpainet.h as it's not longer needed.
mmu_man
parents:
1754
diff
changeset
|
64 #if !defined(HAVE_INET_ATON) |
c0c0f19f0db6
Some more BeOS cleanup: check for arpa/inet.h; declare the prototype for inet_aton if not found; remove barpainet.h as it's not longer needed.
mmu_man
parents:
1754
diff
changeset
|
65 /* in os_support.c */ |
c0c0f19f0db6
Some more BeOS cleanup: check for arpa/inet.h; declare the prototype for inet_aton if not found; remove barpainet.h as it's not longer needed.
mmu_man
parents:
1754
diff
changeset
|
66 int inet_aton (const char * str, struct in_addr * add); |
1754 | 67 #endif |
1943
c0c0f19f0db6
Some more BeOS cleanup: check for arpa/inet.h; declare the prototype for inet_aton if not found; remove barpainet.h as it's not longer needed.
mmu_man
parents:
1754
diff
changeset
|
68 |
2620
792383dd085e
Add FFMPEG_ prefix to all multiple inclusion guards.
diego
parents:
2351
diff
changeset
|
69 #endif /* FFMPEG_NETWORK_H */ |