vlc_fixups.h 5.41 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)
43
# include <stddef.h> /* NULL */
44 45
#endif

46 47
#if !defined (HAVE_REWIND) || \
    !defined (HAVE_GETDELIM)
Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
48 49 50 51 52
# include <stdio.h> /* FILE */
#endif

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

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

62 63 64 65
#if !defined (HAVE_GETDELIM) || \
    !defined (HAVE_GETPID)   || \
    !defined (HAVE_SWAB)
# include <sys/types.h> /* ssize_t, pid_t */
66 67
#endif

Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
68 69 70 71
#ifdef __cplusplus
extern "C" {
#endif

Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
72
#ifndef HAVE_STRDUP
73
char *strdup (const char *);
74 75 76
#endif

#ifndef HAVE_VASPRINTF
77
int vasprintf (char **, const char *, va_list);
78 79 80
#endif

#ifndef HAVE_ASPRINTF
81
int asprintf (char **, const char *, ...);
82 83
#endif

84
#ifndef HAVE_STRNLEN
85
size_t strnlen (const char *, size_t);
86 87
#endif

88
#ifndef HAVE_STRNDUP
89
char *strndup (const char *, size_t);
90 91 92
#endif

#ifndef HAVE_STRLCPY
93
size_t strlcpy (char *, const char *, size_t);
94 95 96
#endif

#ifndef HAVE_STRTOF
97
float strtof (const char *, char **);
98 99
#endif

100
#ifndef HAVE_ATOF
101
double atof (const char *);
102 103 104
#endif

#ifndef HAVE_STRTOLL
105
long long int strtoll (const char *, char **, int);
106 107
#endif

108
#ifndef HAVE_STRSEP
109
char *strsep (char **, const char *);
110 111
#endif

112
#ifndef HAVE_ATOLL
113
long long atoll (const char *);
114 115
#endif

116
#ifndef HAVE_LLDIV
117
lldiv_t lldiv (long long, long long);
118 119 120
#endif

#ifndef HAVE_STRCASECMP
121
int strcasecmp (const char *, const char *);
122 123 124
#endif

#ifndef HAVE_STRNCASECMP
125
int strncasecmp (const char *, const char *, size_t);
126 127 128
#endif

#ifndef HAVE_STRCASESTR
Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
129
char *strcasestr (const char *, const char *);
130 131
#endif

132 133 134
#ifndef HAVE_GMTIME_R
struct tm *gmtime_r (const time_t *, struct tm *);
#endif
135

136 137 138
#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
139

140 141
#ifndef HAVE_REWIND
void rewind (FILE *);
142 143
#endif

144 145 146
#ifndef HAVE_GETCWD
char *getcwd (char *buf, size_t size);
#endif
147 148 149 150 151

#ifndef HAVE_GETDELIM
ssize_t getdelim (char **, size_t *, int, FILE *);
ssize_t getline (char **, size_t *, FILE *);
#endif
152

153 154 155 156
#ifndef HAVE_GETPID
pid_t getpid (void);
#endif

157 158 159 160
#ifndef HAVE_STRTOK_R
char *strtok_r(char *, const char *, char **);
#endif

Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
161 162 163 164 165 166 167 168 169 170 171 172
#ifdef __cplusplus
} /* extern "C" */
#endif

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

173 174 175 176 177 178 179
/* 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

180
#ifndef HAVE_USELOCALE
181 182
#define LC_NUMERIC_MASK  0
#define LC_MESSAGES_MASK 0
183
typedef void *locale_t;
184 185
static inline locale_t uselocale(locale_t loc)
{
186
    (void)loc;
187 188 189 190
    return NULL;
}
static inline void freelocale(locale_t loc)
{
191
    (void)loc;
192
}
193
static inline locale_t newlocale(int mask, const char * locale, locale_t base)
194
{
195
    (void)mask; (void)locale; (void)base;
196 197
    return NULL;
}
198 199
#endif

200
#ifdef WIN32
201
# include <dirent.h>
202 203
# define opendir Use_vlc_opendir_or_vlc_wopendir_instead!
# define readdir Use_vlc_readdir_or_vlc_wreaddir_instead!
204 205 206
# define closedir vlc_wclosedir
#endif

207
/* libintl support */
208 209
#define _(str)            vlc_gettext (str)
#define N_(str)           gettext_noop (str)
210 211
#define gettext_noop(str) (str)

212 213 214 215
#ifndef HAVE_SWAB
void swab (const void *, void *, ssize_t);
#endif

216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245
/* 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

246 247 248 249
#ifndef HAVE_TDESTROY
# define tdestroy vlc_tdestroy
#endif

250 251
/* Random numbers */
#ifndef HAVE_NRAND48
252 253
double erand48 (unsigned short subi[3]);
long jrand48 (unsigned short subi[3]);
254 255 256
long nrand48 (unsigned short subi[3]);
#endif

257
#endif /* !LIBVLC_FIXUPS_H */