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 AVFORMAT_OS_SUPPORT_H 23#define AVFORMAT_OS_SUPPORT_H 24 25/** 26 * @file libavformat/os_support.h 27 * miscellaneous OS support macros and functions. 28 */ 29 30#include "config.h" 31 32#ifdef __MINGW32__ 33# include <fcntl.h> 34# define lseek(f,p,w) _lseeki64((f), (p), (w)) 35#endif 36 37static inline int is_dos_path(const char *path) 38{ 39#if HAVE_DOS_PATHS 40 if (path[0] && path[1] == ':') 41 return 1; 42#endif 43 return 0; 44} 45 46#ifdef __BEOS__ 47# include <sys/socket.h> 48# include <netinet/in.h> 49 /* not net_server ? */ 50# include <BeBuild.h> 51 /* R5 didn't have usleep, fake it. Haiku and Zeta has it now. */ 52# if B_BEOS_VERSION <= B_BEOS_VERSION_5 53# include <OS.h> 54 /* doesn't set errno but that's enough */ 55# define usleep(t) snooze((bigtime_t)(t)) 56# endif 57# ifndef SA_RESTART 58# warning SA_RESTART not implemented; ffserver might misbehave. 59# define SA_RESTART 0 60# endif 61#endif 62 63#if CONFIG_NETWORK 64#if !HAVE_SOCKLEN_T 65typedef int socklen_t; 66#endif 67 68/* most of the time closing a socket is just closing an fd */ 69#if !HAVE_CLOSESOCKET 70#define closesocket close 71#endif 72 73#if CONFIG_FFSERVER 74#if !HAVE_POLL_H 75typedef unsigned long nfds_t; 76 77struct pollfd { 78 int fd; 79 short events; /* events to look for */ 80 short revents; /* events that occurred */ 81}; 82 83/* events & revents */ 84#define POLLIN 0x0001 /* any readable data available */ 85#define POLLOUT 0x0002 /* file descriptor is writeable */ 86#define POLLRDNORM POLLIN 87#define POLLWRNORM POLLOUT 88#define POLLRDBAND 0x0008 /* priority readable data */ 89#define POLLWRBAND 0x0010 /* priority data can be written */ 90#define POLLPRI 0x0020 /* high priority readable data */ 91 92/* revents only */ 93#define POLLERR 0x0004 /* errors pending */ 94#define POLLHUP 0x0080 /* disconnected */ 95#define POLLNVAL 0x1000 /* invalid file descriptor */ 96 97 98int poll(struct pollfd *fds, nfds_t numfds, int timeout); 99#endif /* HAVE_POLL_H */ 100#endif /* CONFIG_FFSERVER */ 101#endif /* CONFIG_NETWORK */ 102 103#endif /* AVFORMAT_OS_SUPPORT_H */ 104