vlc_fixups.h 3.9 KB
Newer Older
1
2
3
/*****************************************************************************
 * fixups.h: portability fixups included from config.h
 *****************************************************************************
4
 * Copyright © 1998-2008 the VideoLAN project
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
 *****************************************************************************/

/**
 * \file
 * This file is a collection of portability fixes
 */

26
27
28
#ifndef LIBVLC_FIXUPS_H
# define LIBVLC_FIXUPS_H 1

Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#if !defined (HAVE_GMTIME_R) || !defined (HAVE_LOCALTIME_R)
# include <time.h> /* time_t */
#endif

#ifndef HAVE_LLDIV
typedef struct
{
    long long quot; /* Quotient. */
    long long rem;  /* Remainder. */
} lldiv_t;
#endif

#ifndef HAVE_REWIND
# include <stdio.h> /* FILE */
#endif

#if !defined (HAVE_STRLCPY) || \
    !defined (HAVE_STRNDUP) || \
    !defined (HAVE_STRNLEN)
# include <stddef.h> /* size_t */
#endif

#ifndef HAVE_VASPRINTF
# include <stdarg.h> /* va_list */
#endif

#ifdef __cplusplus
extern "C" {
#endif

Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
59
#ifndef HAVE_STRDUP
60
char *strdup (const char *);
61
62
63
#endif

#ifndef HAVE_VASPRINTF
64
int vasprintf (char **, const char *, va_list);
65
66
67
#endif

#ifndef HAVE_ASPRINTF
68
int asprintf (char **, const char *, ...);
69
70
#endif

71
#ifndef HAVE_STRNLEN
72
size_t strnlen (const char *, size_t);
73
74
#endif

75
#ifndef HAVE_STRNDUP
76
char *strndup (const char *, size_t);
77
78
79
#endif

#ifndef HAVE_STRLCPY
80
size_t strlcpy (char *, const char *, size_t);
81
82
83
#endif

#ifndef HAVE_STRTOF
84
float strtof (const char *, char **);
85
86
#endif

Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
87
#ifndef HAVE_ATOF
88
double atof (const char *);
89
90
91
#endif

#ifndef HAVE_STRTOLL
92
long long int strtoll (const char *, char **, int);
93
94
#endif

95
#ifndef HAVE_STRSEP
96
char *strsep (char **, const char *);
97
98
#endif

Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
99
#ifndef HAVE_ATOLL
100
long long atoll (const char *);
Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
101
102
#endif

103
#ifndef HAVE_LLDIV
104
lldiv_t lldiv (long long, long long);
105
106
107
#endif

#ifndef HAVE_STRCASECMP
108
int strcasecmp (const char *, const char *);
109
110
111
#endif

#ifndef HAVE_STRNCASECMP
112
int strncasecmp (const char *, const char *, size_t);
113
114
115
#endif

#ifndef HAVE_STRCASESTR
Rémi Denis-Courmont's avatar
typo    
Rémi Denis-Courmont committed
116
char *strcasestr (const char *, const char *);
117
118
#endif

119
120
121
#ifndef HAVE_GMTIME_R
struct tm *gmtime_r (const time_t *, struct tm *);
#endif
122

123
124
125
#ifndef HAVE_LOCALTIME_R
struct tm *localtime_r (const time_t *, struct tm *);
#endif
Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
126

127
128
#ifndef HAVE_REWIND
void rewind (FILE *);
129
130
#endif

Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
131
132
133
134
135
136
137
138
139
140
141
142
#ifdef __cplusplus
} /* extern "C" */
#endif

#ifndef HAVE_GETENV
static inline char *getenv (const char *name)
{
    (void)name;
    return NULL;
}
#endif

143
144
145
146
147
148
149
/* Alignment of critical static data structures */
#ifdef ATTRIBUTE_ALIGNED_MAX
#   define ATTR_ALIGN(align) __attribute__ ((__aligned__ ((ATTRIBUTE_ALIGNED_MAX < align) ? ATTRIBUTE_ALIGNED_MAX : align)))
#else
#   define ATTR_ALIGN(align)
#endif

150
151
152
153
154
155
156
#ifndef HAVE_USELOCALE
typedef void *locale_t;
# define newlocale( a, b, c ) ((locale_t)0)
# define uselocale( a ) ((locale_t)0)
# define freelocale( a ) (void)0
#endif

157
#ifdef WIN32
Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
158
# include <dirent.h>
159
160
161
162
163
# define opendir Use_utf8_opendir_or_vlc_wopendir_instead!
# define readdir Use_utf8_readdir_or_vlc_wreaddir_instead!
# define closedir vlc_wclosedir
#endif

164
/* libintl support */
165
166
#define _(str)            vlc_gettext (str)
#define N_(str)           gettext_noop (str)
167
168
#define gettext_noop(str) (str)

169
170
171
172
#ifndef HAVE_SWAB
void swab (const void *, void *, ssize_t);
#endif

173
#endif /* !LIBVLC_FIXUPS_H */