Only special-case absolute DOS paths on systems that support them.
[libav.git] / libavformat / os_support.h
CommitLineData
04d7f601
DB
1/*
2 * various utilities for ffmpeg system
3 * copyright (c) 2000, 2001, 2002 Fabrice Bellard
4 *
b78e7197
DB
5 * This file is part of FFmpeg.
6 *
7 * FFmpeg is free software; you can redistribute it and/or
04d7f601
DB
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
b78e7197 10 * version 2.1 of the License, or (at your option) any later version.
04d7f601 11 *
b78e7197 12 * FFmpeg is distributed in the hope that it will be useful,
04d7f601
DB
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
b78e7197 18 * License along with FFmpeg; if not, write to the Free Software
04d7f601
DB
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 */
21
98790382
SS
22#ifndef AVFORMAT_OS_SUPPORT_H
23#define AVFORMAT_OS_SUPPORT_H
f71869a4
FB
24
25/**
26 * @file os_support.h
27 * miscellaneous OS support macros and functions.
f71869a4
FB
28 */
29
30#ifdef __MINGW32__
acb3b537
RP
31# include <fcntl.h>
32# define lseek(f,p,w) _lseeki64((f), (p), (w))
6ff3f3e7
RP
33#endif
34
bc574408
RP
35static inline int is_dos_path(const char *path)
36{
37#ifdef HAVE_DOS_PATHS
38 if (path[0] && path[1] == ':')
39 return 1;
40#endif
41 return 0;
42}
43
f71869a4 44#ifdef __BEOS__
e9d511dc
FR
45# include <sys/socket.h>
46# include <netinet/in.h>
47 /* not net_server ? */
e9d511dc
FR
48# include <BeBuild.h>
49 /* R5 didn't have usleep, fake it. Haiku and Zeta has it now. */
50# if B_BEOS_VERSION <= B_BEOS_VERSION_5
f71869a4 51# include <OS.h>
e9d511dc 52 /* doesn't set errno but that's enough */
f71869a4
FB
53# define usleep(t) snooze((bigtime_t)(t))
54# endif
13e4dba6
FR
55# ifndef SA_RESTART
56# warning SA_RESTART not implemented; ffserver might misbehave.
57# define SA_RESTART 0
58# endif
f71869a4 59#endif
591cf117 60
409e1d71 61#ifdef CONFIG_NETWORK
591cf117
RP
62#ifndef HAVE_SOCKLEN_T
63typedef int socklen_t;
64#endif
f71869a4 65
e9d511dc 66/* most of the time closing a socket is just closing an fd */
3cf9ea7f 67#ifndef HAVE_CLOSESOCKET
e9d511dc
FR
68#define closesocket close
69#endif
70
457b101e 71#ifdef CONFIG_FFSERVER
f8cda19e 72#ifndef HAVE_POLL_H
b0c858d8
FR
73typedef unsigned long nfds_t;
74
75struct pollfd {
76 int fd;
77 short events; /* events to look for */
d9526386 78 short revents; /* events that occurred */
b0c858d8
FR
79};
80
81/* events & revents */
82#define POLLIN 0x0001 /* any readable data available */
83#define POLLOUT 0x0002 /* file descriptor is writeable */
84#define POLLRDNORM POLLIN
85#define POLLWRNORM POLLOUT
86#define POLLRDBAND 0x0008 /* priority readable data */
87#define POLLWRBAND 0x0010 /* priority data can be written */
88#define POLLPRI 0x0020 /* high priority readable data */
89
90/* revents only */
91#define POLLERR 0x0004 /* errors pending */
92#define POLLHUP 0x0080 /* disconnected */
93#define POLLNVAL 0x1000 /* invalid file descriptor */
94
95
96extern int poll(struct pollfd *fds, nfds_t numfds, int timeout);
f8cda19e 97#endif /* HAVE_POLL_H */
457b101e 98#endif /* CONFIG_FFSERVER */
409e1d71 99#endif /* CONFIG_NETWORK */
b0c858d8 100
98790382 101#endif /* AVFORMAT_OS_SUPPORT_H */