67d586ab65c14a4a5bed604cc8aa48b7044e4d95
[libav.git] / libavformat / os_support.h
1 /*
2 * various utilities for ffmpeg system
3 * copyright (c) 2000, 2001, 2002 Fabrice Bellard
4 *
5 * This file is part of FFmpeg.
6 *
7 * FFmpeg is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
11 *
12 * FFmpeg is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with FFmpeg; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 */
21
22 #ifndef FFMPEG_OS_SUPPORT_H
23 #define FFMPEG_OS_SUPPORT_H
24
25 /**
26 * @file os_support.h
27 * miscellaneous OS support macros and functions.
28 */
29
30 #ifndef HAVE_SOCKLEN_T
31 typedef int socklen_t;
32 #endif
33
34 #ifdef __MINGW32__
35 __declspec(dllimport) void __stdcall Sleep(unsigned long dwMilliseconds);
36 // # include <windows.h>
37 # define usleep(t) Sleep((t) / 1000)
38 # include <fcntl.h>
39 # define lseek(f,p,w) _lseeki64((f), (p), (w))
40 #endif
41
42 #ifdef __BEOS__
43 # include <sys/socket.h>
44 # include <netinet/in.h>
45 /* not net_server ? */
46 # include <BeBuild.h>
47 /* R5 didn't have usleep, fake it. Haiku and Zeta has it now. */
48 # if B_BEOS_VERSION <= B_BEOS_VERSION_5
49 # include <OS.h>
50 /* doesn't set errno but that's enough */
51 # define usleep(t) snooze((bigtime_t)(t))
52 # endif
53 # ifndef SA_RESTART
54 # warning SA_RESTART not implemented; ffserver might misbehave.
55 # define SA_RESTART 0
56 # endif
57 #endif
58
59 /* most of the time closing a socket is just closing an fd */
60 #ifndef HAVE_CLOSESOCKET
61 #define closesocket close
62 #endif
63
64 #ifdef CONFIG_FFSERVER
65 #ifndef HAVE_POLL_H
66 typedef unsigned long nfds_t;
67
68 struct pollfd {
69 int fd;
70 short events; /* events to look for */
71 short revents; /* events that occured */
72 };
73
74 /* events & revents */
75 #define POLLIN 0x0001 /* any readable data available */
76 #define POLLOUT 0x0002 /* file descriptor is writeable */
77 #define POLLRDNORM POLLIN
78 #define POLLWRNORM POLLOUT
79 #define POLLRDBAND 0x0008 /* priority readable data */
80 #define POLLWRBAND 0x0010 /* priority data can be written */
81 #define POLLPRI 0x0020 /* high priority readable data */
82
83 /* revents only */
84 #define POLLERR 0x0004 /* errors pending */
85 #define POLLHUP 0x0080 /* disconnected */
86 #define POLLNVAL 0x1000 /* invalid file descriptor */
87
88
89 extern int poll(struct pollfd *fds, nfds_t numfds, int timeout);
90 #endif /* HAVE_POLL_H */
91 #endif /* CONFIG_FFSERVER */
92
93 #endif /* FFMPEG_OS_SUPPORT_H */