vlc_fixups.h 4.44 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

29 30 31 32 33 34 35 36 37 38 39 40 41
#ifdef __MINGW32_VERSION
# if __MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION < 14
#  error This mingw-runtime is too old, it has a broken vsnprintf
# endif
/* mingw-runtime provides the whole printf family in a c99 compliant way. */
/* the way to enable this is to define __USE_MINGW_ANSI_STDIO, or something
 * such as _ISOC99_SOURCE; the former is done by configure.ac */
/* This isn't done here, since some modules don't include config.h and
 * therefore this as the first include file */
#elif defined UNDER_CE
# error Window CE support for *printf needs fixing.
#endif

Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
#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
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

Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
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

Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
112
#ifndef HAVE_ATOLL
113
long long atoll (const char *);
Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
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
typo  
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

Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
144 145 146 147 148 149 150 151 152 153 154 155
#ifdef __cplusplus
} /* extern "C" */
#endif

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

156 157 158 159 160 161 162
/* 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

163 164 165 166 167 168 169
#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

170
#ifdef WIN32
Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
171
# include <dirent.h>
172 173 174 175 176
# define opendir Use_utf8_opendir_or_vlc_wopendir_instead!
# define readdir Use_utf8_readdir_or_vlc_wreaddir_instead!
# define closedir vlc_wclosedir
#endif

177
/* libintl support */
178
#define _(str) vlc_gettext (str)
179 180 181 182 183 184 185 186

#if defined (ENABLE_NLS)
# include <libintl.h>
#endif

#define N_(str) gettext_noop (str)
#define gettext_noop(str) (str)

187
#endif /* !LIBVLC_FIXUPS_H */