VLC
2.1.0-git
Main Page
Related Pages
Modules
Data Structures
Files
File List
Globals
All
Data Structures
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
include
vlc_fixups.h
Go to the documentation of this file.
1
/*****************************************************************************
2
* vlc_fixups.h: portability fixups included from config.h
3
*****************************************************************************
4
* Copyright © 1998-2008 the VideoLAN project
5
*
6
* This program is free software; you can redistribute it and/or modify it
7
* under the terms of the GNU Lesser General Public License as published by
8
* the Free Software Foundation; either version 2.1 of the License, or
9
* (at your option) any later version.
10
*
11
* This program is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
* GNU Lesser General Public License for more details.
15
*
16
* You should have received a copy of the GNU Lesser General Public License
17
* along with this program; if not, write to the Free Software Foundation,
18
* Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
19
*****************************************************************************/
20
21
/**
22
* \file
23
* This file is a collection of portability fixes
24
*/
25
26
#ifndef LIBVLC_FIXUPS_H
27
# define LIBVLC_FIXUPS_H 1
28
29
#if !defined (HAVE_GMTIME_R) || !defined (HAVE_LOCALTIME_R)
30
# include <time.h>
/* time_t */
31
#endif
32
33
#ifndef HAVE_LLDIV
34
typedef
struct
35
{
36
long
long
quot;
/* Quotient. */
37
long
long
rem;
/* Remainder. */
38
}
lldiv_t
;
39
#endif
40
41
#if !defined(HAVE_GETENV) || \
42
!defined(HAVE_USELOCALE)
43
# include <stddef.h>
/* NULL */
44
#endif
45
46
#if !defined (HAVE_REWIND) || \
47
!defined (HAVE_GETDELIM)
48
# include <stdio.h>
/* FILE */
49
#endif
50
51
#if !defined (HAVE_POSIX_MEMALIGN) || \
52
!defined (HAVE_STRLCPY) || \
53
!defined (HAVE_STRNDUP) || \
54
!defined (HAVE_STRNLEN)
55
# include <stddef.h>
/* size_t */
56
#endif
57
58
#ifndef HAVE_VASPRINTF
59
# include <stdarg.h>
/* va_list */
60
#endif
61
62
#if !defined (HAVE_GETDELIM) || \
63
!defined (HAVE_GETPID) || \
64
!defined (HAVE_SWAB)
65
# include <sys/types.h>
/* ssize_t, pid_t */
66
#endif
67
68
#if !defined (HAVE_DIRFD) || \
69
!defined (HAVE_FDOPENDIR)
70
# include <dirent.h>
71
#endif
72
73
#ifdef __cplusplus
74
# define VLC_NOTHROW throw ()
75
extern
"C"
{
76
#else
77
# define VLC_NOTHROW
78
#endif
79
80
/* stdio.h */
81
#ifndef HAVE_ASPRINTF
82
int
asprintf
(
char
**,
const
char
*, ...);
83
#endif
84
85
#ifndef HAVE_FLOCKFILE
86
void
flockfile
(FILE *);
87
int
ftrylockfile
(FILE *);
88
void
funlockfile
(FILE *);
89
int
getc_unlocked
(FILE *);
90
int
getchar_unlocked
(
void
);
91
int
putc_unlocked
(
int
, FILE *);
92
int
putchar_unlocked
(
int
);
93
#endif
94
95
#ifndef HAVE_GETDELIM
96
ssize_t
getdelim
(
char
**,
size_t
*,
int
, FILE *);
97
ssize_t
getline
(
char
**,
size_t
*, FILE *);
98
#endif
99
100
#ifndef HAVE_REWIND
101
void
rewind
(FILE *);
102
#endif
103
104
#ifndef HAVE_VASPRINTF
105
int
vasprintf
(
char
**,
const
char
*, va_list);
106
#endif
107
108
/* string.h */
109
#ifndef HAVE_STRCASECMP
110
int
strcasecmp
(
const
char
*,
const
char
*);
111
#endif
112
113
#ifndef HAVE_STRCASESTR
114
char
*
strcasestr
(
const
char
*,
const
char
*);
115
#endif
116
117
#ifndef HAVE_STRDUP
118
char
*
strdup
(
const
char
*);
119
#endif
120
121
#ifndef HAVE_STRVERSCMP
122
int
strverscmp
(
const
char
*,
const
char
*);
123
#endif
124
125
#ifndef HAVE_STRNLEN
126
size_t
strnlen
(
const
char
*,
size_t
);
127
#endif
128
129
#ifndef HAVE_STRNDUP
130
char
*
strndup
(
const
char
*,
size_t
);
131
#endif
132
133
#ifndef HAVE_STRLCPY
134
size_t
strlcpy
(
char
*,
const
char
*,
size_t
);
135
#endif
136
137
#ifndef HAVE_STRSEP
138
char
*
strsep
(
char
**,
const
char
*);
139
#endif
140
141
#ifndef HAVE_STRTOK_R
142
char
*
strtok_r
(
char
*,
const
char
*,
char
**);
143
#endif
144
145
/* stdlib.h */
146
#ifndef HAVE_ATOF
147
#ifndef __ANDROID__
148
double
atof
(
const
char
*);
149
#endif
150
#endif
151
152
#ifndef HAVE_ATOLL
153
long
long
atoll
(
const
char
*);
154
#endif
155
156
#ifndef HAVE_LLDIV
157
lldiv_t
lldiv
(
long
long
,
long
long
);
158
#endif
159
160
#ifndef HAVE_STRTOF
161
#ifndef __ANDROID__
162
float
strtof
(
const
char
*,
char
**);
163
#endif
164
#endif
165
166
#ifndef HAVE_STRTOLL
167
long
long
int
strtoll
(
const
char
*,
char
**,
int
);
168
#endif
169
170
/* time.h */
171
#ifndef HAVE_GMTIME_R
172
struct
tm *
gmtime_r
(
const
time_t *,
struct
tm *);
173
#endif
174
175
#ifndef HAVE_LOCALTIME_R
176
struct
tm *
localtime_r
(
const
time_t *,
struct
tm *);
177
#endif
178
179
/* unistd.h */
180
#ifndef HAVE_GETPID
181
pid_t
getpid
(
void
)
VLC_NOTHROW
;
182
#endif
183
184
#ifndef HAVE_FSYNC
185
int
fsync
(
int
fd);
186
#endif
187
188
/* dirent.h */
189
#ifndef HAVE_DIRFD
190
int (
dirfd
) (DIR *);
191
#endif
192
193
#ifndef HAVE_FDOPENDIR
194
DIR *
fdopendir
(
int
);
195
#endif
196
197
#ifdef __cplusplus
198
}
/* extern "C" */
199
#endif
200
201
/* stdlib.h */
202
#ifndef HAVE_GETENV
203
static
inline
char
*
getenv
(
const
char
*
name
)
204
{
205
(void)name;
206
return
NULL;
207
}
208
#endif
209
210
#ifndef HAVE_SETENV
211
int
setenv
(
const
char
*,
const
char
*,
int
);
212
int
unsetenv
(
const
char
*);
213
#endif
214
215
#ifndef HAVE_POSIX_MEMALIGN
216
int
posix_memalign
(
void
**,
size_t
,
size_t
);
217
#endif
218
219
/* locale.h */
220
#ifndef HAVE_USELOCALE
221
#define LC_NUMERIC_MASK 0
222
#define LC_MESSAGES_MASK 0
223
typedef
void
*
locale_t
;
224
static
inline
locale_t
uselocale
(locale_t loc)
225
{
226
(void)loc;
227
return
NULL;
228
}
229
static
inline
void
freelocale
(locale_t loc)
230
{
231
(void)loc;
232
}
233
static
inline
locale_t
newlocale
(
int
mask,
const
char
* locale, locale_t base)
234
{
235
(void)mask; (void)locale; (void)base;
236
return
NULL;
237
}
238
#endif
239
240
#if !defined (HAVE_STATIC_ASSERT)
241
# define _Static_assert(x, s) ((void) sizeof (struct { unsigned:-!(x); }))
242
# define static_assert _Static_assert
243
#endif
244
245
/* Alignment of critical static data structures */
246
#ifdef ATTRIBUTE_ALIGNED_MAX
247
# define ATTR_ALIGN(align) __attribute__ ((__aligned__ ((ATTRIBUTE_ALIGNED_MAX < align) ? ATTRIBUTE_ALIGNED_MAX : align)))
248
#else
249
# define ATTR_ALIGN(align)
250
#endif
251
252
/* libintl support */
253
#define _(str) vlc_gettext (str)
254
#define N_(str) gettext_noop (str)
255
#define gettext_noop(str) (str)
256
257
#ifndef HAVE_SWAB
258
void
swab
(
const
void
*,
void
*, ssize_t);
259
#endif
260
261
/* Socket stuff */
262
#ifndef HAVE_INET_PTON
263
int
inet_pton
(
int
,
const
char
*,
void
*);
264
const
char
*
inet_ntop
(
int
,
const
void
*,
char
*,
int
);
265
#endif
266
267
#ifndef HAVE_STRUCT_POLLFD
268
enum
269
{
270
POLLIN
=1,
271
POLLOUT
=2,
272
POLLPRI
=4,
273
POLLERR
=8,
// unsupported stub
274
POLLHUP
=16,
// unsupported stub
275
POLLNVAL
=32
// unsupported stub
276
};
277
278
struct
pollfd
279
{
280
int
fd
;
281
unsigned
events
;
282
unsigned
revents
;
283
};
284
#endif
285
#ifndef HAVE_POLL
286
struct
pollfd
;
287
int
poll
(
struct
pollfd
*,
unsigned
,
int
);
288
#endif
289
290
#ifndef HAVE_IF_NAMEINDEX
291
#include <errno.h>
292
struct
if_nameindex
293
{
294
unsigned
if_index
;
295
char
*
if_name
;
296
};
297
# ifndef HAVE_IF_NAMETOINDEX
298
# define if_nametoindex(name) atoi(name)
299
# endif
300
# define if_nameindex() (errno = ENOBUFS, NULL)
301
# define if_freenameindex(list) (void)0
302
#endif
303
304
/* search.h */
305
#ifndef HAVE_SEARCH_H
306
typedef
struct
entry
{
307
char
*
key
;
308
void
*
data
;
309
}
ENTRY
;
310
311
typedef
enum
{
312
FIND
,
ENTER
313
}
ACTION
;
314
315
typedef
enum
{
316
preorder
,
317
postorder
,
318
endorder
,
319
leaf
320
}
VISIT
;
321
322
void
*
tsearch
(
const
void
*key,
void
**rootp,
int
(*cmp)(
const
void
*,
const
void
*) );
323
void
*
tfind
(
const
void
*key,
const
void
**rootp,
int
(*cmp)(
const
void
*,
const
void
*) );
324
void
*
tdelete
(
const
void
*key,
void
**rootp,
int
(*cmp)(
const
void
*,
const
void
*) );
325
void
twalk
(
const
void
*root,
void
(*
action
)(
const
void
*nodep,
VISIT
which,
int
depth) );
326
void
tdestroy
(
void
*root,
void
(*free_node)(
void
*nodep) );
327
#else // HAVE_SEARCH_H
328
# ifndef HAVE_TDESTROY
329
# define tdestroy vlc_tdestroy
330
# endif
331
#endif
332
333
/* Random numbers */
334
#ifndef HAVE_NRAND48
335
double
erand48
(
unsigned
short
subi
[3]);
336
long
jrand48
(
unsigned
short
subi
[3]);
337
long
nrand48
(
unsigned
short
subi
[3]);
338
#endif
339
340
#ifdef __OS2__
341
# undef HAVE_FORK
/* Implementation of fork() is imperfect on OS/2 */
342
#endif
343
344
#endif
/* !LIBVLC_FIXUPS_H */
Generated by
1.8.1.2