summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xautogen.sh1
-rw-r--r--configure.in71
-rw-r--r--include/Makefile.am4
-rw-r--r--include/SDL_config.h77
-rw-r--r--include/SDL_config.h.in289
-rw-r--r--include/SDL_config.h.minimal30
-rw-r--r--include/SDL_stdlib.h12
-rw-r--r--include/SDL_string.h24
-rw-r--r--src/audio/SDL_audio.c6
-rw-r--r--src/audio/amigaos/SDL_ahiaudio.c2
-rw-r--r--src/audio/disk/SDL_diskaudio.c3
-rw-r--r--src/audio/dma/SDL_dmaaudio.c1
-rw-r--r--src/audio/dsp/SDL_dspaudio.c3
-rw-r--r--src/audio/mme/SDL_mmeaudio.h2
-rw-r--r--src/cdrom/linux/SDL_syscdrom.c5
-rw-r--r--src/stdlib/SDL_getenv.c36
-rw-r--r--src/stdlib/SDL_string.c29
-rw-r--r--src/video/SDL_video.c2
-rw-r--r--src/video/SDL_yuv.c3
-rw-r--r--src/video/fbcon/SDL_fbelo.c10
-rw-r--r--src/video/fbcon/SDL_fbevents.c2
-rw-r--r--src/video/fbcon/SDL_fbvideo.c2
-rw-r--r--src/video/nanox/SDL_nxvideo.c14
-rw-r--r--src/video/wincommon/SDL_sysevents.c2
24 files changed, 513 insertions, 117 deletions
diff --git a/autogen.sh b/autogen.sh
index 706c568ec..c139a3b90 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -6,6 +6,7 @@ echo "This may take a while ..."
# Touch the timestamps on all the files since CVS messes them up
directory=`dirname $0`
touch $directory/configure.in
+touch $directory/include/SDL_config.h.in
# Regenerate configuration files
aclocal || exit 1
diff --git a/configure.in b/configure.in
index 5d2ba26a8..5c51ec7eb 100644
--- a/configure.in
+++ b/configure.in
@@ -1,5 +1,42 @@
dnl Process this file with autoconf to produce a configure script.
AC_INIT(README)
+AH_TOP([/*
+ SDL - Simple DirectMedia Layer
+ Copyright (C) 1997-2006 Sam Lantinga
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+ Sam Lantinga
+ slouken@libsdl.org
+*/
+
+#ifndef _SDL_config_h
+#define _SDL_config_h
+
+/* This is a set of defines to configure the SDL features */
+
+/* Comment this if you want to build without any libc requirements */
+#undef HAVE_LIBC
+#ifdef HAVE_LIBC
+])
+AC_CONFIG_HEADER(include/SDL_config.h)
+AH_BOTTOM([
+#endif /* HAVE_LIBC */
+
+#endif /* _SDL_config_h */
+])
dnl Set various version strings - taken gratefully from the GTk sources
#
@@ -113,6 +150,40 @@ if test x$ac_cv_prog_gcc = xyes; then
fi
fi
+dnl See whether we are allowed to use the system C library
+AC_ARG_ENABLE(libc,
+[ --enable-libc Use the system C library [default=yes]],
+ , AC_DEFINE(HAVE_LIBC))
+
+dnl Checks for header files.
+AC_CHECK_HEADERS(alloca.h stdint.h stdlib.h stdarg.h malloc.h)
+AC_CHECK_HEADERS(ctype.h)
+AC_CHECK_HEADERS(string.h)
+AC_CHECK_HEADERS(stdio.h)
+AC_CHECK_HEADERS(signal.h)
+
+dnl Checks for typedefs, structures, and compiler characteristics.
+AC_C_CONST
+AC_C_INLINE
+AC_TYPE_SIZE_T
+AC_CHECK_SIZEOF(char, 1)
+AC_CHECK_SIZEOF(short, 2)
+AC_CHECK_SIZEOF(int, 4)
+AC_CHECK_SIZEOF(long, 4)
+AC_CHECK_SIZEOF(long long, 8)
+
+dnl Checks for library functions.
+AC_FUNC_ALLOCA
+AC_CHECK_FUNCS(malloc calloc realloc free)
+AC_CHECK_FUNCS(getenv putenv qsort abs)
+AC_CHECK_FUNCS(memset memcpy memmove memcmp)
+AC_CHECK_FUNCS(strlen strcpy strncpy strcat strncat strdup)
+AC_CHECK_FUNCS(_strrev _strupr _strlwr)
+AC_CHECK_FUNCS(strchr strrchr strstr)
+AC_CHECK_FUNCS(itoa _ltoa _uitoa _ultoa strtol _i64toa _ui64toa strtoll atoi atof)
+AC_CHECK_FUNCS(strcmp strncmp stricmp strcasecmp)
+AC_CHECK_FUNCS(sscanf snprintf vsnprintf)
+
dnl Initialize the compiler and linker flags for SDL applications
SDL_CFLAGS=""
diff --git a/include/Makefile.am b/include/Makefile.am
index 3b7d39115..6cefd4c30 100644
--- a/include/Makefile.am
+++ b/include/Makefile.am
@@ -41,3 +41,7 @@ libSDLinclude_HEADERS = \
SDL_windows.h \
begin_code.h \
close_code.h
+
+EXTRA_DIST = \
+ SDL_config.h.in \
+ SDL_config.h.minimal
diff --git a/include/SDL_config.h b/include/SDL_config.h
index 21f602ae8..d49081fb5 100644
--- a/include/SDL_config.h
+++ b/include/SDL_config.h
@@ -23,81 +23,8 @@
#ifndef _SDL_config_h
#define _SDL_config_h
-/* This is a set of defines to configure the SDL features */
+/* This is the minimal configuration that can be used to build SDL */
-#define HAVE_STDARG_H
-
-/* Comment this if you want to build without any libc requirements */
-#define HAVE_LIBC
-#ifdef HAVE_LIBC
-
-/* Various C library headers */
-#ifndef HAVE_CTYPE_H
-#define HAVE_CTYPE_H
-#endif
-#ifndef HAVE_STDIO_H
-#define HAVE_STDIO_H
-#endif
-#ifndef HAVE_STDLIB_H
-#define HAVE_STDLIB_H
-#endif
-#ifndef HAVE_MALLOC_H
-#define HAVE_MALLOC_H
-#endif
-#ifndef HAVE_STRING_H
-#define HAVE_STRING_H
-#endif
-#if !defined(_WIN32_WCE)
-#ifndef HAVE_SIGNAL_H
-#define HAVE_SIGNAL_H
-#endif
-#endif /* !_WIN32_WCE */
-
-/* Features provided by SDL_stdlib.h */
-#define HAVE_MALLOC
-#define HAVE_REALLOC
-#define HAVE_FREE
-#ifndef HAVE_ALLOCA
-#define HAVE_ALLOCA
-#endif
-#if !defined(_WIN32) /* Don't use C runtime versions of these on Windows */
-#define HAVE_GETENV
-#define HAVE_PUTENV
-#endif
-/*#define HAVE_QSORT*/
-
-/* Features provided by SDL_string.h */
-#define HAVE_MEMSET
-#define HAVE_MEMCPY
-#define HAVE_MEMMOVE
-#define HAVE_MEMCMP
-#define HAVE_STRLEN
-#define HAVE_STRCPY
-#define HAVE_STRNCPY
-#define HAVE_STRCAT
-#define HAVE_STRNCAT
-/*#define HAVE__STRREV*/
-/*#define HAVE__STRUPR*/
-/*#define HAVE__STRLWR*/
-#define HAVE_STRCHR
-#define HAVE_STRRCHR
-#define HAVE_STRSTR
-/*#define HAVE_ITOA*/
-/*#define HAVE__LTOA*/
-/*#define HAVE__UITOA*/
-/*#define HAVE__ULTOA*/
-/*#define HAVE_STRTOL*/
-/*#define HAVE__I64TOA*/
-/*#define HAVE__UI64TOA*/
-/*#define HAVE_STRTOLL*/
-#define HAVE_STRCMP
-#define HAVE_STRNCMP
-/*#define HAVE_STRICMP*/
-/*#define HAVE_STRCASECMP*/
-#define HAVE_SSCANF
-/*#define HAVE_SNPRINTF*/
-/*#define HAVE_VSNPRINTF*/
-
-#endif /* HAVE_LIBC */
+#define HAVE_STDARG_H 1
#endif /* _SDL_config_h */
diff --git a/include/SDL_config.h.in b/include/SDL_config.h.in
new file mode 100644
index 000000000..00892df78
--- /dev/null
+++ b/include/SDL_config.h.in
@@ -0,0 +1,289 @@
+/* include/SDL_config.h.in. Generated from configure.in by autoheader. */
+
+/*
+ SDL - Simple DirectMedia Layer
+ Copyright (C) 1997-2006 Sam Lantinga
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+ Sam Lantinga
+ slouken@libsdl.org
+*/
+
+#ifndef _SDL_config_h
+#define _SDL_config_h
+
+/* This is a set of defines to configure the SDL features */
+
+/* Comment this if you want to build without any libc requirements */
+#undef HAVE_LIBC
+#ifdef HAVE_LIBC
+
+
+
+/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
+ systems. This function is required for `alloca.c' support on those systems.
+ */
+#undef CRAY_STACKSEG_END
+
+/* Define to 1 if using `alloca.c'. */
+#undef C_ALLOCA
+
+/* Define to 1 if you have the `abs' function. */
+#undef HAVE_ABS
+
+/* Define to 1 if you have `alloca', as a function or macro. */
+#undef HAVE_ALLOCA
+
+/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
+ */
+#undef HAVE_ALLOCA_H
+
+/* Define to 1 if you have the `atof' function. */
+#undef HAVE_ATOF
+
+/* Define to 1 if you have the `atoi' function. */
+#undef HAVE_ATOI
+
+/* Define to 1 if you have the `calloc' function. */
+#undef HAVE_CALLOC
+
+/* Define to 1 if you have the <ctype.h> header file. */
+#undef HAVE_CTYPE_H
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
+
+/* Define to 1 if you have the `free' function. */
+#undef HAVE_FREE
+
+/* Define to 1 if you have the `getenv' function. */
+#undef HAVE_GETENV
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if you have the `itoa' function. */
+#undef HAVE_ITOA
+
+/* Define to 1 if you have the `asound' library (-lasound). */
+#undef HAVE_LIBASOUND
+
+/* Define to 1 if you have the `malloc' function. */
+#undef HAVE_MALLOC
+
+/* Define to 1 if you have the <malloc.h> header file. */
+#undef HAVE_MALLOC_H
+
+/* Define to 1 if you have the `memcmp' function. */
+#undef HAVE_MEMCMP
+
+/* Define to 1 if you have the `memcpy' function. */
+#undef HAVE_MEMCPY
+
+/* Define to 1 if you have the `memmove' function. */
+#undef HAVE_MEMMOVE
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the `memset' function. */
+#undef HAVE_MEMSET
+
+/* Define to 1 if you have the `putenv' function. */
+#undef HAVE_PUTENV
+
+/* Define to 1 if you have the `qsort' function. */
+#undef HAVE_QSORT
+
+/* Define to 1 if you have the `realloc' function. */
+#undef HAVE_REALLOC
+
+/* Define to 1 if you have the <signal.h> header file. */
+#undef HAVE_SIGNAL_H
+
+/* Define to 1 if you have the `snprintf' function. */
+#undef HAVE_SNPRINTF
+
+/* Define to 1 if you have the `sscanf' function. */
+#undef HAVE_SSCANF
+
+/* Define to 1 if you have the <stdarg.h> header file. */
+#undef HAVE_STDARG_H
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdio.h> header file. */
+#undef HAVE_STDIO_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the `strcasecmp' function. */
+#undef HAVE_STRCASECMP
+
+/* Define to 1 if you have the `strcat' function. */
+#undef HAVE_STRCAT
+
+/* Define to 1 if you have the `strchr' function. */
+#undef HAVE_STRCHR
+
+/* Define to 1 if you have the `strcmp' function. */
+#undef HAVE_STRCMP
+
+/* Define to 1 if you have the `strcpy' function. */
+#undef HAVE_STRCPY
+
+/* Define to 1 if you have the `strdup' function. */
+#undef HAVE_STRDUP
+
+/* Define to 1 if you have the `stricmp' function. */
+#undef HAVE_STRICMP
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the `strlen' function. */
+#undef HAVE_STRLEN
+
+/* Define to 1 if you have the `strncat' function. */
+#undef HAVE_STRNCAT
+
+/* Define to 1 if you have the `strncmp' function. */
+#undef HAVE_STRNCMP
+
+/* Define to 1 if you have the `strncpy' function. */
+#undef HAVE_STRNCPY
+
+/* Define to 1 if you have the `strrchr' function. */
+#undef HAVE_STRRCHR
+
+/* Define to 1 if you have the `strstr' function. */
+#undef HAVE_STRSTR
+
+/* Define to 1 if you have the `strtol' function. */
+#undef HAVE_STRTOL
+
+/* Define to 1 if you have the `strtoll' function. */
+#undef HAVE_STRTOLL
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Define to 1 if you have the `vsnprintf' function. */
+#undef HAVE_VSNPRINTF
+
+/* Define to 1 if you have the `_i64toa' function. */
+#undef HAVE__I64TOA
+
+/* Define to 1 if you have the `_ltoa' function. */
+#undef HAVE__LTOA
+
+/* Define to 1 if you have the `_strlwr' function. */
+#undef HAVE__STRLWR
+
+/* Define to 1 if you have the `_strrev' function. */
+#undef HAVE__STRREV
+
+/* Define to 1 if you have the `_strupr' function. */
+#undef HAVE__STRUPR
+
+/* Define to 1 if you have the `_ui64toa' function. */
+#undef HAVE__UI64TOA
+
+/* Define to 1 if you have the `_uitoa' function. */
+#undef HAVE__UITOA
+
+/* Define to 1 if you have the `_ultoa' function. */
+#undef HAVE__ULTOA
+
+/* Name of package */
+#undef PACKAGE
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* The size of a `char', as computed by sizeof. */
+#undef SIZEOF_CHAR
+
+/* The size of a `int', as computed by sizeof. */
+#undef SIZEOF_INT
+
+/* The size of a `long', as computed by sizeof. */
+#undef SIZEOF_LONG
+
+/* The size of a `long long', as computed by sizeof. */
+#undef SIZEOF_LONG_LONG
+
+/* The size of a `short', as computed by sizeof. */
+#undef SIZEOF_SHORT
+
+/* If using the C implementation of alloca, define if you know the
+ direction of stack growth for your system; otherwise it will be
+ automatically deduced at run-time.
+ STACK_DIRECTION > 0 => grows toward higher addresses
+ STACK_DIRECTION < 0 => grows toward lower addresses
+ STACK_DIRECTION = 0 => direction of growth unknown */
+#undef STACK_DIRECTION
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Version number of package */
+#undef VERSION
+
+/* Define to 1 if the X Window System is missing or not being used. */
+#undef X_DISPLAY_MISSING
+
+/* Define to empty if `const' does not conform to ANSI C. */
+#undef const
+
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+ calls it, or to nothing if 'inline' is not supported under any name. */
+#ifndef __cplusplus
+#undef inline
+#endif
+
+/* Define to `unsigned' if <sys/types.h> does not define. */
+#undef size_t
+
+
+
+#endif /* HAVE_LIBC */
+
+#endif /* _SDL_config_h */
+
diff --git a/include/SDL_config.h.minimal b/include/SDL_config.h.minimal
new file mode 100644
index 000000000..d49081fb5
--- /dev/null
+++ b/include/SDL_config.h.minimal
@@ -0,0 +1,30 @@
+/*
+ SDL - Simple DirectMedia Layer
+ Copyright (C) 1997-2006 Sam Lantinga
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+ Sam Lantinga
+ slouken@libsdl.org
+*/
+
+#ifndef _SDL_config_h
+#define _SDL_config_h
+
+/* This is the minimal configuration that can be used to build SDL */
+
+#define HAVE_STDARG_H 1
+
+#endif /* _SDL_config_h */
diff --git a/include/SDL_stdlib.h b/include/SDL_stdlib.h
index ce01a7dcc..41f4c8a47 100644
--- a/include/SDL_stdlib.h
+++ b/include/SDL_stdlib.h
@@ -62,6 +62,12 @@ extern "C" {
extern DECLSPEC void * SDLCALL SDL_malloc(size_t size);
#endif
+#ifdef HAVE_CALLOC
+#define SDL_calloc calloc
+#else
+extern DECLSPEC void * SDLCALL SDL_calloc(size_t nmemb, size_t size);
+#endif
+
#ifdef HAVE_REALLOC
#define SDL_realloc realloc
#else
@@ -101,6 +107,12 @@ extern DECLSPEC void SDLCALL SDL_qsort(void *base, size_t nmemb, size_t size,
int (*compare)(const void *, const void *));
#endif
+#ifdef HAVE_ABS
+#define SDL_abs abs
+#else
+#define SDL_abs(X) ((X) < 0 ? -(X) : (X))
+#endif
+
/* Ends C function definitions when using C++ */
#ifdef __cplusplus
}
diff --git a/include/SDL_string.h b/include/SDL_string.h
index b235f5a51..e2dcc1e5b 100644
--- a/include/SDL_string.h
+++ b/include/SDL_string.h
@@ -201,6 +201,12 @@ extern DECLSPEC char * SDLCALL SDL_strncpy(char *dst, const char *src, size_t ma
#define SDL_strncat(dst, src, n) (SDL_strncpy(dst+SDL_strlen(dst), src, n), dst)
#endif
+#ifdef HAVE_STRDUP
+#define SDL_strdup strdup
+#else
+extern DECLSPEC char * SDLCALL SDL_strdup(const char *string);
+#endif
+
#ifdef HAVE__STRREV
#define SDL_strrev _strrev
#else
@@ -289,6 +295,24 @@ extern DECLSPEC Sint64 SDLCALL SDL_strtoll(const char *string, char **endp, int
#endif /* SDL_HAS_64BIT_TYPE */
+#ifdef HAVE_STRTOD
+#define SDL_strtod strtod
+#else
+extern DECLSPEC double SDLCALL SDL_strtod(const char *string, char **endp);
+#endif
+
+#ifdef HAVE_ATOI
+#define SDL_atoi atoi
+#else
+#define SDL_atoi(X) SDL_strtol(X, NULL, 0)
+#endif
+
+#ifdef HAVE_ATOF
+#define SDL_atof atof
+#else
+#define SDL_atof(X) SDL_strtod(X, NULL)
+#endif
+
#ifdef HAVE_STRCMP
#define SDL_strcmp strcmp
#else
diff --git a/src/audio/SDL_audio.c b/src/audio/SDL_audio.c
index 6f505eafe..911ab9578 100644
--- a/src/audio/SDL_audio.c
+++ b/src/audio/SDL_audio.c
@@ -306,18 +306,20 @@ int SDL_AudioInit(const char *driver_name)
*/
for ( i=0; bootstrap[i]; ++i ) {
if ( SDL_strcmp(bootstrap[i]->name, "esd") == 0 ) {
+#ifdef HAVE_PUTENV
const char *esd_no_spawn;
/* Don't start ESD if it's not running */
- esd_no_spawn = SDL_getenv("ESD_NO_SPAWN");
+ esd_no_spawn = getenv("ESD_NO_SPAWN");
if ( esd_no_spawn == NULL ) {
putenv("ESD_NO_SPAWN=1");
}
+#endif
if ( bootstrap[i]->available() ) {
audio = bootstrap[i]->create(0);
break;
}
-#ifdef linux /* No unsetenv() on most platforms */
+#ifdef HAVE_UNSETENV
if ( esd_no_spawn == NULL ) {
unsetenv("ESD_NO_SPAWN");
}
diff --git a/src/audio/amigaos/SDL_ahiaudio.c b/src/audio/amigaos/SDL_ahiaudio.c
index 9ec263021..3b7d61013 100644
--- a/src/audio/amigaos/SDL_ahiaudio.c
+++ b/src/audio/amigaos/SDL_ahiaudio.c
@@ -22,6 +22,8 @@
/* Allow access to a raw mixing buffer (for AmigaOS) */
+#include "SDL_stdlib.h"
+#include "SDL_string.h"
#include "SDL_endian.h"
#include "SDL_audio.h"
#include "SDL_audiomem.h"
diff --git a/src/audio/disk/SDL_diskaudio.c b/src/audio/disk/SDL_diskaudio.c
index 878271ae1..504e6b342 100644
--- a/src/audio/disk/SDL_diskaudio.c
+++ b/src/audio/disk/SDL_diskaudio.c
@@ -26,6 +26,7 @@
/* Output raw audio data to a file. */
#include <stdio.h>
+#include <string.h> /* For strerror() */
#include <errno.h>
#include <unistd.h>
#include <sys/stat.h>
@@ -130,7 +131,7 @@ static SDL_AudioDevice *DISKAUD_CreateDevice(int devindex)
SDL_memset(this->hidden, 0, (sizeof *this->hidden));
envr = SDL_getenv(DISKENVR_WRITEDELAY);
- this->hidden->write_delay = (envr) ? atoi(envr) : DISKDEFAULT_WRITEDELAY;
+ this->hidden->write_delay = (envr) ? SDL_atoi(envr) : DISKDEFAULT_WRITEDELAY;
/* Set the function pointers */
this->OpenAudio = DISKAUD_OpenAudio;
diff --git a/src/audio/dma/SDL_dmaaudio.c b/src/audio/dma/SDL_dmaaudio.c
index 3bf9f179f..1c8aaf084 100644
--- a/src/audio/dma/SDL_dmaaudio.c
+++ b/src/audio/dma/SDL_dmaaudio.c
@@ -23,6 +23,7 @@
/* Allow access to a raw mixing buffer */
#include <stdio.h>
+#include <string.h> /* For strerror() */
#include <errno.h>
#include <unistd.h>
#include <fcntl.h>
diff --git a/src/audio/dsp/SDL_dspaudio.c b/src/audio/dsp/SDL_dspaudio.c
index d1ff4cb5b..d2e9a2a0f 100644
--- a/src/audio/dsp/SDL_dspaudio.c
+++ b/src/audio/dsp/SDL_dspaudio.c
@@ -25,7 +25,8 @@
/* Allow access to a raw mixing buffer */
-#include <stdio.h> /* For perror() ... should we really do this? */
+#include <stdio.h> /* For perror() */
+#include <string.h> /* For strerror() */
#include <errno.h>
#include <unistd.h>
#include <fcntl.h>
diff --git a/src/audio/mme/SDL_mmeaudio.h b/src/audio/mme/SDL_mmeaudio.h
index 404c21903..7ba5818b5 100644
--- a/src/audio/mme/SDL_mmeaudio.h
+++ b/src/audio/mme/SDL_mmeaudio.h
@@ -24,6 +24,8 @@
#include <mme_api.h>
+#include "SDL_stdlib.h"
+#include "SDL_string.h"
#include "SDL_audio.h"
#include "SDL_mutex.h"
#include "SDL_timer.h"
diff --git a/src/cdrom/linux/SDL_syscdrom.c b/src/cdrom/linux/SDL_syscdrom.c
index 325368105..2ec7f7e76 100644
--- a/src/cdrom/linux/SDL_syscdrom.c
+++ b/src/cdrom/linux/SDL_syscdrom.c
@@ -22,6 +22,7 @@
/* Functions for system-level CD-ROM audio control */
+#include <string.h> /* For strerror() */
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
@@ -215,7 +216,7 @@ static void CheckMounts(const char *mtab)
tmp = SDL_strstr(mntent->mnt_opts, "fs=");
if ( tmp ) {
SDL_free(mnt_type);
- mnt_type = strdup(tmp + SDL_strlen("fs="));
+ mnt_type = SDL_strdup(tmp + SDL_strlen("fs="));
if ( mnt_type ) {
tmp = SDL_strchr(mnt_type, ',');
if ( tmp ) {
@@ -226,7 +227,7 @@ static void CheckMounts(const char *mtab)
tmp = SDL_strstr(mntent->mnt_opts, "dev=");
if ( tmp ) {
SDL_free(mnt_dev);
- mnt_dev = strdup(tmp + SDL_strlen("dev="));
+ mnt_dev = SDL_strdup(tmp + SDL_strlen("dev="));
if ( mnt_dev ) {
tmp = SDL_strchr(mnt_dev, ',');
if ( tmp ) {
diff --git a/src/stdlib/SDL_getenv.c b/src/stdlib/SDL_getenv.c
index 78f31a857..9da9427b4 100644
--- a/src/stdlib/SDL_getenv.c
+++ b/src/stdlib/SDL_getenv.c
@@ -113,11 +113,11 @@ int SDL_putenv(const char *variable)
}
/* Allocate memory for the variable */
- new_variable = (char *)malloc(strlen(variable)+1);
+ new_variable = (char *)SDL_malloc(SDL_strlen(variable)+1);
if ( ! new_variable ) {
return(-1);
}
- strcpy(new_variable, variable);
+ SDL_strcpy(new_variable, variable);
/* Actually put it into the environment */
added = 0;
@@ -126,13 +126,13 @@ int SDL_putenv(const char *variable)
/* Check to see if it's already there... */
len = (value - name);
for ( ; SDL_env[i]; ++i ) {
- if ( strncmp(SDL_env[i], name, len) == 0 ) {
+ if ( SDL_strncmp(SDL_env[i], name, len) == 0 ) {
break;
}
}
/* If we found it, just replace the entry */
if ( SDL_env[i] ) {
- free(SDL_env[i]);
+ SDL_free(SDL_env[i]);
SDL_env[i] = new_variable;
added = 1;
}
@@ -147,7 +147,7 @@ int SDL_putenv(const char *variable)
SDL_env[i++] = (char *)0;
added = 1;
} else {
- free(new_variable);
+ SDL_free(new_variable);
}
}
return (added ? 0 : -1);
@@ -161,9 +161,9 @@ char *SDL_getenv(const char *name)
value = (char *)0;
if ( SDL_env ) {
- len = strlen(name);
+ len = SDL_strlen(name);
for ( i=0; SDL_env[i] && !value; ++i ) {
- if ( (strncmp(SDL_env[i], name, len) == 0) &&
+ if ( (SDL_strncmp(SDL_env[i], name, len) == 0) &&
(SDL_env[i][len] == '=') ) {
value = &SDL_env[i][len+1];
}
@@ -185,59 +185,59 @@ int main(int argc, char *argv[])
printf("Checking for non-existent variable... ");
fflush(stdout);
- if ( ! getenv("EXISTS") ) {
+ if ( ! SDL_getenv("EXISTS") ) {
printf("okay\n");
} else {
printf("failed\n");
}
printf("Setting FIRST=VALUE1 in the environment... ");
fflush(stdout);
- if ( putenv("FIRST=VALUE1") == 0 ) {
+ if ( SDL_putenv("FIRST=VALUE1") == 0 ) {
printf("okay\n");
} else {
printf("failed\n");
}
printf("Getting FIRST from the environment... ");
fflush(stdout);
- value = getenv("FIRST");
- if ( value && (strcmp(value, "VALUE1") == 0) ) {
+ value = SDL_getenv("FIRST");
+ if ( value && (SDL_strcmp(value, "VALUE1") == 0) ) {
printf("okay\n");
} else {
printf("failed\n");
}
printf("Setting SECOND=VALUE2 in the environment... ");
fflush(stdout);
- if ( putenv("SECOND=VALUE2") == 0 ) {
+ if ( SDL_putenv("SECOND=VALUE2") == 0 ) {
printf("okay\n");
} else {
printf("failed\n");
}
printf("Getting SECOND from the environment... ");
fflush(stdout);
- value = getenv("SECOND");
- if ( value && (strcmp(value, "VALUE2") == 0) ) {
+ value = SDL_getenv("SECOND");
+ if ( value && (SDL_strcmp(value, "VALUE2") == 0) ) {
printf("okay\n");
} else {
printf("failed\n");
}
printf("Setting FIRST=NOVALUE in the environment... ");
fflush(stdout);
- if ( putenv("FIRST=NOVALUE") == 0 ) {
+ if ( SDL_putenv("FIRST=NOVALUE") == 0 ) {
printf("okay\n");
} else {
printf("failed\n");
}
printf("Getting FIRST from the environment... ");
fflush(stdout);
- value = getenv("FIRST");
- if ( value && (strcmp(value, "NOVALUE") == 0) ) {
+ value = SDL_getenv("FIRST");
+ if ( value && (SDL_strcmp(value, "NOVALUE") == 0) ) {
printf("okay\n");
} else {
printf("failed\n");
}
printf("Checking for non-existent variable... ");
fflush(stdout);
- if ( ! getenv("EXISTS") ) {
+ if ( ! SDL_getenv("EXISTS") ) {
printf("okay\n");
} else {
printf("failed\n");
diff --git a/src/stdlib/SDL_string.c b/src/stdlib/SDL_string.c
index 7f2b29c69..0eb40331a 100644
--- a/src/stdlib/SDL_string.c
+++ b/src/stdlib/SDL_string.c
@@ -25,6 +25,7 @@
#include "SDL_types.h"
#include "SDL_ctype.h"
+#include "SDL_stdlib.h"
#include "SDL_string.h"
@@ -175,7 +176,7 @@ static size_t SDL_ScanUnsignedLongLong(const char *text, int radix, Uint64 *valu
#endif
#endif /* SDL_HAS_64BIT_TYPE */
-#ifndef HAVE_SSCANF
+#if !defined(HAVE_SSCANF) || !defined(HAVE_STRTOD)
static size_t SDL_ScanFloat(const char *text, double *valuep)
{
const char *textstart = text;
@@ -322,6 +323,18 @@ char *SDL_strncpy(char *dst, const char *src, size_t maxlen)
}
#endif
+#ifndef HAVE_STRDUP
+char *SDL_strdup(const char *string)
+{
+ size_t len = SDL_strlen(string);
+ char *newstr = SDL_malloc(len+1);
+ if ( newstr ) {
+ SDL_strcpy(newstr, string);
+ }
+ return newstr;
+}
+#endif
+
#ifndef HAVE__STRREV
char *SDL_strrev(char *string)
{
@@ -549,6 +562,20 @@ Sint64 SDL_strtoll(const char *string, char **endp, int base)
#endif /* SDL_HAS_64BIT_TYPE */
+#ifndef HAVE_STRTOD
+double SDL_strtod(const char *string, char **endp)
+{
+ size_t len;
+ double value;
+
+ len = SDL_ScanFloat(string, &value);
+ if ( endp ) {
+ *endp = (char *)string + len;
+ }
+ return value;
+}
+#endif
+
#ifndef HAVE_STRCMP
int SDL_strcmp(const char *str1, const char *str2)
{
diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c
index 9a46e7ba0..bdf3e7fc9 100644
--- a/src/video/SDL_video.c
+++ b/src/video/SDL_video.c
@@ -798,7 +798,7 @@ SDL_Surface * SDL_SetVideoMode (int width, int height, int bpp, Uint32 flags)
*/
if ( (bpp == 16) &&
(SDL_strstr((const char *)video->glGetString(GL_EXTENSIONS), "GL_EXT_packed_pixels") ||
- (atof((const char *)video->glGetString(GL_VERSION)) >= 1.2f))
+ (SDL_atof((const char *)video->glGetString(GL_VERSION)) >= 1.2f))
) {
video->is_32bit = 0;
SDL_VideoSurface = SDL_CreateRGBSurface(
diff --git a/src/video/SDL_yuv.c b/src/video/SDL_yuv.c
index 777e7ec67..39582d3a1 100644
--- a/src/video/SDL_yuv.c
+++ b/src/video/SDL_yuv.c
@@ -23,6 +23,7 @@
/* This is the implementation of the YUV video surface support */
#include "SDL_stdlib.h"
+#include "SDL_string.h"
#include "SDL_video.h"
#include "SDL_error.h"
#include "SDL_sysvideo.h"
@@ -54,7 +55,7 @@ SDL_Overlay *SDL_CreateYUVOverlay(int w, int h, Uint32 format,
overlay = NULL;
yuv_hwaccel = SDL_getenv("SDL_VIDEO_YUV_HWACCEL");
if ( ((display == SDL_VideoSurface) && video->CreateYUVOverlay) &&
- (!yuv_hwaccel || (*yuv_hwaccel != '0')) ) {
+ (!yuv_hwaccel || (SDL_atoi(yuv_hwaccel) > 0)) ) {
overlay = video->CreateYUVOverlay(this, w, h, format, display);
}
/* If hardware YUV overlay failed ... */
diff --git a/src/video/fbcon/SDL_fbelo.c b/src/video/fbcon/SDL_fbelo.c
index 30bb01492..a7cdd1072 100644
--- a/src/video/fbcon/SDL_fbelo.c
+++ b/src/video/fbcon/SDL_fbelo.c
@@ -92,7 +92,7 @@ int eloParsePacket(unsigned char* mousebuf, int* dx, int* dy, int* button_state)
x = ((mousebuf[4] << 8) | mousebuf[3]);
y = ((mousebuf[6] << 8) | mousebuf[5]);
- if((abs(x - last_x) > ELO_SNAP_SIZE) || (abs(y - last_y) > ELO_SNAP_SIZE)) {
+ if((SDL_abs(x - last_x) > ELO_SNAP_SIZE) || (SDL_abs(y - last_y) > ELO_SNAP_SIZE)) {
*dx = ((mousebuf[4] << 8) | mousebuf[3]);
*dy = ((mousebuf[6] << 8) | mousebuf[5]);
}
@@ -335,19 +335,19 @@ int eloInitController(int fd) {
/* try to read the calibration values */
buffer = SDL_getenv("SDL_ELO_MIN_X");
if(buffer) {
- ELO_MIN_X = atoi(buffer);
+ ELO_MIN_X = SDL_atoi(buffer);
}
buffer = SDL_getenv("SDL_ELO_MAX_X");
if(buffer) {
- ELO_MAX_X = atoi(buffer);
+ ELO_MAX_X = SDL_atoi(buffer);
}
buffer = SDL_getenv("SDL_ELO_MIN_Y");
if(buffer) {
- ELO_MIN_Y = atoi(buffer);
+ ELO_MIN_Y = SDL_atoi(buffer);
}
buffer = SDL_getenv("SDL_ELO_MAX_Y");
if(buffer) {
- ELO_MAX_Y = atoi(buffer);
+ ELO_MAX_Y = SDL_atoi(buffer);
}
#ifdef DEBUG_MOUSE
diff --git a/src/video/fbcon/SDL_fbevents.c b/src/video/fbcon/SDL_fbevents.c
index d31daf3bb..64aed7cd6 100644
--- a/src/video/fbcon/SDL_fbevents.c
+++ b/src/video/fbcon/SDL_fbevents.c
@@ -351,7 +351,7 @@ static int find_pid(DIR *proc, const char *wanted_name)
name[0] = '\0';
fscanf(status, "Name: %s", name);
if ( SDL_strcmp(name, wanted_name) == 0 ) {
- pid = atoi(entry->d_name);
+ pid = SDL_atoi(entry->d_name);
}
fclose(status);
}
diff --git a/src/video/fbcon/SDL_fbvideo.c b/src/video/fbcon/SDL_fbvideo.c
index 528e97ab9..0a7369548 100644
--- a/src/video/fbcon/SDL_fbvideo.c
+++ b/src/video/fbcon/SDL_fbvideo.c
@@ -523,7 +523,7 @@ static int FB_VideoInit(_THIS, SDL_PixelFormat *vformat)
{ const char *fb_accel;
fb_accel = SDL_getenv("SDL_FBACCEL");
if ( fb_accel ) {
- finfo.accel = atoi(fb_accel);
+ finfo.accel = SDL_atoi(fb_accel);
}
}
diff --git a/src/video/nanox/SDL_nxvideo.c b/src/video/nanox/SDL_nxvideo.c
index da08f5231..190e9914f 100644
--- a/src/video/nanox/SDL_nxvideo.c
+++ b/src/video/nanox/SDL_nxvideo.c
@@ -68,9 +68,9 @@ static void NX_DeleteDevice (SDL_VideoDevice * device)
Dprintf ("enter NX_DeleteDevice\n") ;
if (device) {
- if (device -> hidden) free (device -> hidden) ;
- if (device -> gl_data) free (device -> gl_data) ;
- free (device) ;
+ if (device -> hidden) SDL_free (device -> hidden) ;
+ if (device -> gl_data) SDL_free (device -> gl_data) ;
+ SDL_free (device) ;
}
Dprintf ("leave NX_DeleteDevice\n") ;
@@ -256,9 +256,9 @@ void NX_VideoQuit (_THIS)
GrDestroyWindow (FSwindow) ;
}
NX_FreeVideoModes (this) ;
- free (GammaRamp_R) ;
- free (GammaRamp_G) ;
- free (GammaRamp_B) ;
+ SDL_free (GammaRamp_R) ;
+ SDL_free (GammaRamp_G) ;
+ SDL_free (GammaRamp_B) ;
#ifdef ENABLE_NANOX_DIRECT_FB
if (Clientfb)
@@ -306,7 +306,7 @@ static int NX_CreateWindow (_THIS, SDL_Surface * screen,
// See if we have been given a window id
if (SDL_windowid) {
- SDL_Window = strtol (SDL_windowid, NULL, 0) ;
+ SDL_Window = SDL_strtol (SDL_windowid, NULL, 0) ;
} else {
SDL_Window = 0 ;
}
diff --git a/src/video/wincommon/SDL_sysevents.c b/src/video/wincommon/SDL_sysevents.c
index 8c20d3908..7c0a9a832 100644
--- a/src/video/wincommon/SDL_sysevents.c
+++ b/src/video/wincommon/SDL_sysevents.c
@@ -798,7 +798,7 @@ static int GetCodePage()
int cp = GetACP();
if (GetLocaleInfo(lcid, LOCALE_IDEFAULTANSICODEPAGE, buff, sizeof(buff))) {
- cp = SDL_strtol(buff, NULL, 0);
+ cp = SDL_atoi(buff);
}
return cp;
}