yading@11
|
1 /*
|
yading@11
|
2 * various OS-feature replacement utilities
|
yading@11
|
3 * copyright (c) 2000, 2001, 2002 Fabrice Bellard
|
yading@11
|
4 *
|
yading@11
|
5 * This file is part of FFmpeg.
|
yading@11
|
6 *
|
yading@11
|
7 * FFmpeg is free software; you can redistribute it and/or
|
yading@11
|
8 * modify it under the terms of the GNU Lesser General Public
|
yading@11
|
9 * License as published by the Free Software Foundation; either
|
yading@11
|
10 * version 2.1 of the License, or (at your option) any later version.
|
yading@11
|
11 *
|
yading@11
|
12 * FFmpeg is distributed in the hope that it will be useful,
|
yading@11
|
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
yading@11
|
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
yading@11
|
15 * Lesser General Public License for more details.
|
yading@11
|
16 *
|
yading@11
|
17 * You should have received a copy of the GNU Lesser General Public
|
yading@11
|
18 * License along with FFmpeg; if not, write to the Free Software
|
yading@11
|
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
yading@11
|
20 */
|
yading@11
|
21
|
yading@11
|
22 #ifndef AVFORMAT_OS_SUPPORT_H
|
yading@11
|
23 #define AVFORMAT_OS_SUPPORT_H
|
yading@11
|
24
|
yading@11
|
25 /**
|
yading@11
|
26 * @file
|
yading@11
|
27 * miscellaneous OS support macros and functions.
|
yading@11
|
28 */
|
yading@11
|
29
|
yading@11
|
30 #include "config.h"
|
yading@11
|
31
|
yading@11
|
32 #include <sys/stat.h>
|
yading@11
|
33
|
yading@11
|
34 #if defined(_WIN32) && !defined(__MINGW32CE__)
|
yading@11
|
35 # include <fcntl.h>
|
yading@11
|
36 # ifdef lseek
|
yading@11
|
37 # undef lseek
|
yading@11
|
38 # endif
|
yading@11
|
39 # define lseek(f,p,w) _lseeki64((f), (p), (w))
|
yading@11
|
40 # ifdef stat
|
yading@11
|
41 # undef stat
|
yading@11
|
42 # endif
|
yading@11
|
43 # define stat _stati64
|
yading@11
|
44 # ifdef fstat
|
yading@11
|
45 # undef fstat
|
yading@11
|
46 # endif
|
yading@11
|
47 # define fstat(f,s) _fstati64((f), (s))
|
yading@11
|
48 #endif /* defined(__MINGW32__) && !defined(__MINGW32CE__) */
|
yading@11
|
49
|
yading@11
|
50 #ifdef _WIN32
|
yading@11
|
51 #if HAVE_DIRECT_H
|
yading@11
|
52 #include <direct.h>
|
yading@11
|
53 #elif HAVE_IO_H
|
yading@11
|
54 #include <io.h>
|
yading@11
|
55 #endif
|
yading@11
|
56 #define mkdir(a, b) _mkdir(a)
|
yading@11
|
57 #else
|
yading@11
|
58 #include <sys/stat.h>
|
yading@11
|
59 #endif
|
yading@11
|
60
|
yading@11
|
61 static inline int is_dos_path(const char *path)
|
yading@11
|
62 {
|
yading@11
|
63 #if HAVE_DOS_PATHS
|
yading@11
|
64 if (path[0] && path[1] == ':')
|
yading@11
|
65 return 1;
|
yading@11
|
66 #endif
|
yading@11
|
67 return 0;
|
yading@11
|
68 }
|
yading@11
|
69
|
yading@11
|
70 #if defined(__OS2__) || defined(__Plan9__)
|
yading@11
|
71 #define SHUT_RD 0
|
yading@11
|
72 #define SHUT_WR 1
|
yading@11
|
73 #define SHUT_RDWR 2
|
yading@11
|
74 #endif
|
yading@11
|
75
|
yading@11
|
76 #if defined(_WIN32)
|
yading@11
|
77 #define SHUT_RD SD_RECEIVE
|
yading@11
|
78 #define SHUT_WR SD_SEND
|
yading@11
|
79 #define SHUT_RDWR SD_BOTH
|
yading@11
|
80
|
yading@11
|
81 #ifndef S_IRUSR
|
yading@11
|
82 #define S_IRUSR S_IREAD
|
yading@11
|
83 #endif
|
yading@11
|
84 #ifndef S_IWUSR
|
yading@11
|
85 #define S_IWUSR S_IWRITE
|
yading@11
|
86 #endif
|
yading@11
|
87 #endif
|
yading@11
|
88
|
yading@11
|
89 #if defined(_WIN32) && !defined(__MINGW32CE__)
|
yading@11
|
90 int ff_win32_open(const char *filename, int oflag, int pmode);
|
yading@11
|
91 #define open ff_win32_open
|
yading@11
|
92 #endif
|
yading@11
|
93
|
yading@11
|
94 #if CONFIG_NETWORK
|
yading@11
|
95 #if !HAVE_SOCKLEN_T
|
yading@11
|
96 typedef int socklen_t;
|
yading@11
|
97 #endif
|
yading@11
|
98
|
yading@11
|
99 /* most of the time closing a socket is just closing an fd */
|
yading@11
|
100 #if !HAVE_CLOSESOCKET
|
yading@11
|
101 #define closesocket close
|
yading@11
|
102 #endif
|
yading@11
|
103
|
yading@11
|
104 #if !HAVE_POLL_H
|
yading@11
|
105 typedef unsigned long nfds_t;
|
yading@11
|
106
|
yading@11
|
107 #if HAVE_WINSOCK2_H
|
yading@11
|
108 #include <winsock2.h>
|
yading@11
|
109 #endif
|
yading@11
|
110 #if !HAVE_STRUCT_POLLFD
|
yading@11
|
111 struct pollfd {
|
yading@11
|
112 int fd;
|
yading@11
|
113 short events; /* events to look for */
|
yading@11
|
114 short revents; /* events that occurred */
|
yading@11
|
115 };
|
yading@11
|
116
|
yading@11
|
117 /* events & revents */
|
yading@11
|
118 #define POLLIN 0x0001 /* any readable data available */
|
yading@11
|
119 #define POLLOUT 0x0002 /* file descriptor is writeable */
|
yading@11
|
120 #define POLLRDNORM POLLIN
|
yading@11
|
121 #define POLLWRNORM POLLOUT
|
yading@11
|
122 #define POLLRDBAND 0x0008 /* priority readable data */
|
yading@11
|
123 #define POLLWRBAND 0x0010 /* priority data can be written */
|
yading@11
|
124 #define POLLPRI 0x0020 /* high priority readable data */
|
yading@11
|
125
|
yading@11
|
126 /* revents only */
|
yading@11
|
127 #define POLLERR 0x0004 /* errors pending */
|
yading@11
|
128 #define POLLHUP 0x0080 /* disconnected */
|
yading@11
|
129 #define POLLNVAL 0x1000 /* invalid file descriptor */
|
yading@11
|
130 #endif
|
yading@11
|
131
|
yading@11
|
132
|
yading@11
|
133 int ff_poll(struct pollfd *fds, nfds_t numfds, int timeout);
|
yading@11
|
134 #define poll ff_poll
|
yading@11
|
135 #endif /* HAVE_POLL_H */
|
yading@11
|
136 #endif /* CONFIG_NETWORK */
|
yading@11
|
137
|
yading@11
|
138 #endif /* AVFORMAT_OS_SUPPORT_H */
|