vlc_fixups.h 5.09 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
#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

41 42
#if !defined(HAVE_GETENV) || \
    !defined(HAVE_USELOCALE)
Rafaël Carré's avatar
Rafaël Carré committed
43
# include <stddef.h> /* NULL */
44 45
#endif

Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
46 47 48 49 50 51
#ifndef HAVE_REWIND
# include <stdio.h> /* FILE */
#endif

#if !defined (HAVE_STRLCPY) || \
    !defined (HAVE_STRNDUP) || \
52 53
    !defined (HAVE_STRNLEN) || \
    !defined (HAVE_GETCWD)
Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
54 55 56 57 58 59 60
# include <stddef.h> /* size_t */
#endif

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

61 62 63 64
#ifndef HAVE_GETPID
# include <sys/types.h> /* pid_t */
#endif

Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
65 66 67 68
#ifdef __cplusplus
extern "C" {
#endif

Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
69
#ifndef HAVE_STRDUP
70
char *strdup (const char *);
71 72 73
#endif

#ifndef HAVE_VASPRINTF
74
int vasprintf (char **, const char *, va_list);
75 76 77
#endif

#ifndef HAVE_ASPRINTF
78
int asprintf (char **, const char *, ...);
79 80
#endif

81
#ifndef HAVE_STRNLEN
82
size_t strnlen (const char *, size_t);
83 84
#endif

85
#ifndef HAVE_STRNDUP
86
char *strndup (const char *, size_t);
87 88 89
#endif

#ifndef HAVE_STRLCPY
90
size_t strlcpy (char *, const char *, size_t);
91 92 93
#endif

#ifndef HAVE_STRTOF
94
float strtof (const char *, char **);
95 96
#endif

Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
97
#ifndef HAVE_ATOF
98
double atof (const char *);
99 100 101
#endif

#ifndef HAVE_STRTOLL
102
long long int strtoll (const char *, char **, int);
103 104
#endif

105
#ifndef HAVE_STRSEP
106
char *strsep (char **, const char *);
107 108
#endif

Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
109
#ifndef HAVE_ATOLL
110
long long atoll (const char *);
Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
111 112
#endif

113
#ifndef HAVE_LLDIV
114
lldiv_t lldiv (long long, long long);
115 116 117
#endif

#ifndef HAVE_STRCASECMP
118
int strcasecmp (const char *, const char *);
119 120 121
#endif

#ifndef HAVE_STRNCASECMP
122
int strncasecmp (const char *, const char *, size_t);
123 124 125
#endif

#ifndef HAVE_STRCASESTR
Rémi Denis-Courmont's avatar
typo  
Rémi Denis-Courmont committed
126
char *strcasestr (const char *, const char *);
127 128
#endif

129 130 131
#ifndef HAVE_GMTIME_R
struct tm *gmtime_r (const time_t *, struct tm *);
#endif
132

133 134 135
#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
136

137 138
#ifndef HAVE_REWIND
void rewind (FILE *);
139 140
#endif

141 142 143 144
#ifndef HAVE_GETCWD
char *getcwd (char *buf, size_t size);
#endif

145 146 147 148
#ifndef HAVE_GETPID
pid_t getpid (void);
#endif

Clement Chesnin's avatar
Clement Chesnin committed
149 150 151 152
#ifndef HAVE_STRTOK_R
char *strtok_r(char *, const char *, char **);
#endif

Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
153 154 155 156 157 158 159 160 161 162 163 164
#ifdef __cplusplus
} /* extern "C" */
#endif

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

165 166 167 168 169 170 171
/* 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

172
#ifndef HAVE_USELOCALE
173 174
#define LC_NUMERIC_MASK  0
#define LC_MESSAGES_MASK 0
175
typedef void *locale_t;
176 177
static inline locale_t uselocale(locale_t loc)
{
178
    (void)loc;
179 180 181 182
    return NULL;
}
static inline void freelocale(locale_t loc)
{
183
    (void)loc;
184
}
185
static inline locale_t newlocale(int mask, const char * locale, locale_t base)
186
{
187
    (void)mask; (void)locale; (void)base;
188 189
    return NULL;
}
190 191
#endif

192
#ifdef WIN32
Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
193
# include <dirent.h>
194 195
# define opendir Use_vlc_opendir_or_vlc_wopendir_instead!
# define readdir Use_vlc_readdir_or_vlc_wreaddir_instead!
196 197 198
# define closedir vlc_wclosedir
#endif

199
/* libintl support */
200 201
#define _(str)            vlc_gettext (str)
#define N_(str)           gettext_noop (str)
202 203
#define gettext_noop(str) (str)

204 205 206 207
#ifndef HAVE_SWAB
void swab (const void *, void *, ssize_t);
#endif

208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237
/* Socket stuff */
#ifndef HAVE_INET_PTON
# define inet_pton vlc_inet_pton
#endif

#ifndef HAVE_INET_NTOP
# define inet_ntop vlc_inet_ntop
#endif

#ifndef HAVE_POLL
enum
{
    POLLIN=1,
    POLLOUT=2,
    POLLPRI=4,
    POLLERR=8,  // unsupported stub
    POLLHUP=16, // unsupported stub
    POLLNVAL=32 // unsupported stub
};

struct pollfd
{
    int fd;
    unsigned events;
    unsigned revents;
};

# define poll(a, b, c) vlc_poll(a, b, c)
#endif

238 239 240 241
#ifndef HAVE_TDESTROY
# define tdestroy vlc_tdestroy
#endif

Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
242 243 244 245 246
/* Random numbers */
#ifndef HAVE_NRAND48
long nrand48 (unsigned short subi[3]);
#endif

247
#endif /* !LIBVLC_FIXUPS_H */