yading@11: /* yading@11: * various OS-feature replacement utilities yading@11: * copyright (c) 2000, 2001, 2002 Fabrice Bellard yading@11: * yading@11: * This file is part of FFmpeg. yading@11: * yading@11: * FFmpeg is free software; you can redistribute it and/or yading@11: * modify it under the terms of the GNU Lesser General Public yading@11: * License as published by the Free Software Foundation; either yading@11: * version 2.1 of the License, or (at your option) any later version. yading@11: * yading@11: * FFmpeg is distributed in the hope that it will be useful, yading@11: * but WITHOUT ANY WARRANTY; without even the implied warranty of yading@11: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU yading@11: * Lesser General Public License for more details. yading@11: * yading@11: * You should have received a copy of the GNU Lesser General Public yading@11: * License along with FFmpeg; if not, write to the Free Software yading@11: * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA yading@11: */ yading@11: yading@11: #ifndef AVFORMAT_OS_SUPPORT_H yading@11: #define AVFORMAT_OS_SUPPORT_H yading@11: yading@11: /** yading@11: * @file yading@11: * miscellaneous OS support macros and functions. yading@11: */ yading@11: yading@11: #include "config.h" yading@11: yading@11: #include yading@11: yading@11: #if defined(_WIN32) && !defined(__MINGW32CE__) yading@11: # include yading@11: # ifdef lseek yading@11: # undef lseek yading@11: # endif yading@11: # define lseek(f,p,w) _lseeki64((f), (p), (w)) yading@11: # ifdef stat yading@11: # undef stat yading@11: # endif yading@11: # define stat _stati64 yading@11: # ifdef fstat yading@11: # undef fstat yading@11: # endif yading@11: # define fstat(f,s) _fstati64((f), (s)) yading@11: #endif /* defined(__MINGW32__) && !defined(__MINGW32CE__) */ yading@11: yading@11: #ifdef _WIN32 yading@11: #if HAVE_DIRECT_H yading@11: #include yading@11: #elif HAVE_IO_H yading@11: #include yading@11: #endif yading@11: #define mkdir(a, b) _mkdir(a) yading@11: #else yading@11: #include yading@11: #endif yading@11: yading@11: static inline int is_dos_path(const char *path) yading@11: { yading@11: #if HAVE_DOS_PATHS yading@11: if (path[0] && path[1] == ':') yading@11: return 1; yading@11: #endif yading@11: return 0; yading@11: } yading@11: yading@11: #if defined(__OS2__) || defined(__Plan9__) yading@11: #define SHUT_RD 0 yading@11: #define SHUT_WR 1 yading@11: #define SHUT_RDWR 2 yading@11: #endif yading@11: yading@11: #if defined(_WIN32) yading@11: #define SHUT_RD SD_RECEIVE yading@11: #define SHUT_WR SD_SEND yading@11: #define SHUT_RDWR SD_BOTH yading@11: yading@11: #ifndef S_IRUSR yading@11: #define S_IRUSR S_IREAD yading@11: #endif yading@11: #ifndef S_IWUSR yading@11: #define S_IWUSR S_IWRITE yading@11: #endif yading@11: #endif yading@11: yading@11: #if defined(_WIN32) && !defined(__MINGW32CE__) yading@11: int ff_win32_open(const char *filename, int oflag, int pmode); yading@11: #define open ff_win32_open yading@11: #endif yading@11: yading@11: #if CONFIG_NETWORK yading@11: #if !HAVE_SOCKLEN_T yading@11: typedef int socklen_t; yading@11: #endif yading@11: yading@11: /* most of the time closing a socket is just closing an fd */ yading@11: #if !HAVE_CLOSESOCKET yading@11: #define closesocket close yading@11: #endif yading@11: yading@11: #if !HAVE_POLL_H yading@11: typedef unsigned long nfds_t; yading@11: yading@11: #if HAVE_WINSOCK2_H yading@11: #include yading@11: #endif yading@11: #if !HAVE_STRUCT_POLLFD yading@11: struct pollfd { yading@11: int fd; yading@11: short events; /* events to look for */ yading@11: short revents; /* events that occurred */ yading@11: }; yading@11: yading@11: /* events & revents */ yading@11: #define POLLIN 0x0001 /* any readable data available */ yading@11: #define POLLOUT 0x0002 /* file descriptor is writeable */ yading@11: #define POLLRDNORM POLLIN yading@11: #define POLLWRNORM POLLOUT yading@11: #define POLLRDBAND 0x0008 /* priority readable data */ yading@11: #define POLLWRBAND 0x0010 /* priority data can be written */ yading@11: #define POLLPRI 0x0020 /* high priority readable data */ yading@11: yading@11: /* revents only */ yading@11: #define POLLERR 0x0004 /* errors pending */ yading@11: #define POLLHUP 0x0080 /* disconnected */ yading@11: #define POLLNVAL 0x1000 /* invalid file descriptor */ yading@11: #endif yading@11: yading@11: yading@11: int ff_poll(struct pollfd *fds, nfds_t numfds, int timeout); yading@11: #define poll ff_poll yading@11: #endif /* HAVE_POLL_H */ yading@11: #endif /* CONFIG_NETWORK */ yading@11: yading@11: #endif /* AVFORMAT_OS_SUPPORT_H */