Subversion Repositories Kolibri OS

Compare Revisions

No changes between revisions

Regard whitespace Rev 8208 → Rev 8209

/contrib/sdk/sources/SDL-1.2.2_newlib/src/Makefile
0,0 → 1,66
# SDL build makefile_test
# writed by maxcodehack
 
 
CC = kos32-gcc
AR = kos32-ar
LD = kos32-ld
SDK_DIR:= $(abspath ../../..)
endian_OBJS = endian/SDL_endian.o
file_OBJS = file/SDL_rwops.o
 
hermes_OBJS = hermes/mmxp2_32.o hermes/mmx_main.o hermes/x86p_16.o \
hermes/x86p_32.o hermes/x86_main.o
 
thread_OBJS = thread/SDL_syscond.o thread/SDL_sysmutex.o thread/SDL_syssem.o \
thread/SDL_systhread.o thread/SDL_thread.o
timer_OBJS = timer/SDL_timer.o timer/dummy/SDL_systimer.o
event_OBJS = events/SDL_active.o events/SDL_events.o events/SDL_expose.o \
events/SDL_keyboard.o events/SDL_mouse.o events/SDL_quit.o \
events/SDL_resize.o
video_OBJS = video/SDL_blit_0.o video/SDL_blit_1.o video/SDL_blit_A.o \
video/SDL_blit.o video/SDL_blit_N.o video/SDL_bmp.o \
video/SDL_cursor.o video/SDL_gamma.o video/SDL_pixels.o \
video/SDL_RLEaccel.o video/SDL_stretch.o video/SDL_surface.o \
video/SDL_video.o video/SDL_yuv.o video/SDL_yuv_mmx.o \
video/SDL_yuv_sw.o video/menuetos/SDL_menuetevents.o \
video/menuetos/SDL_menuetvideo.o
audio_OBJS = audio/SDL_kolibri_audio.o
 
curr_OBJS = SDL.o SDL_error.o SDL_fatal.o SDL_getenv.o
OBJS = $(endian_OBJS) $(file_OBJS) $(hermes_OBJS) $(thread_OBJS) \
$(timer_OBJS) $(event_OBJS) $(video_OBJS) $(curr_OBJS) $(audio_OBJS)
CFLAGS = -c -O2 -D_REENTRANT -I../include -I SYSCALL/include -I. -DPACKAGE=\"SDL\" -DVERSION=\"1.2.2\" \
-fexpensive-optimizations -Wall -DENABLE_AUDIO -UDISABLE_AUDIO -DDISABLE_JOYSTICK \
-DDISABLE_CDROM -DDISABLE_THREADS -DENABLE_TIMERS \
-DUSE_ASMBLIT -Ihermes -Iaudio -Ivideo -Ievents \
-Ijoystick -Icdrom -Ithread -Itimer -Iendian -Ifile -DENABLE_MENUETOS \
-DNO_SIGNAL_H -DDISABLE_STDIO -DNEED_SDL_GETENV -DENABLE_FILE -UDISABLE_FILE \
-D__MENUETOS__ -DDEBUG_VIDEO -UWIN32 -U_Win32 -U_WIN32 -U__MINGW32__ \
-I../../newlib/libc/include/
LDFLAGS = -shared -s -T../../newlib/libc/app.lds -nostdlib --image-base 0 -L /home/autobuild/tools/win32/mingw32/lib -lgcc -lz -ldll -lc.dll
ARFLAGS = crs
 
all: libSDL.a
install: libSDL.a
mv -f libSDL.a $(SDK_DIR)/lib
libSDL.a: $(OBJS)
$(AR) $(ARFLAGS) libSDL.a $(OBJS) SYSCALL/src/*.o
%.o : %.asm Makefile
nasm -f coff $< $
%.o : %.c Makefile
$(CC) $(CFLAGS) -o $@ $<
clean:
rm -f */*.o \ rm *.o \ rm */*/*.o
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/contrib/sdk/sources/SDL-1.2.2_newlib/src/SDL.c
0,0 → 1,232
/*
SDL - Simple DirectMedia Layer
Copyright (C) 1997, 1998, 1999, 2000, 2001 Sam Lantinga
 
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 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
Library General Public License for more details.
 
You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 
Sam Lantinga
slouken@devolution.com
*/
 
#ifdef SAVE_RCSID
static char rcsid =
"@(#) $Id: SDL.c,v 1.3 2001/05/23 23:35:09 hercules Exp $";
#endif
 
/* Initialization code for SDL */
 
#include <stdlib.h> /* For getenv() */
 
#include "SDL.h"
#include "SDL_endian.h"
#include "SDL_fatal.h"
#ifndef DISABLE_VIDEO
#include "SDL_leaks.h"
#endif
 
/* Initialization/Cleanup routines */
#ifndef DISABLE_JOYSTICK
extern int SDL_JoystickInit(void);
extern void SDL_JoystickQuit(void);
#endif
#ifndef DISABLE_CDROM
extern int SDL_CDROMInit(void);
extern void SDL_CDROMQuit(void);
#endif
#ifndef DISABLE_TIMERS
extern void SDL_StartTicks(void);
extern int SDL_TimerInit(void);
extern void SDL_TimerQuit(void);
#endif
 
/* The current SDL version */
static SDL_version version =
{ SDL_MAJOR_VERSION, SDL_MINOR_VERSION, SDL_PATCHLEVEL };
 
/* The initialized subsystems */
static Uint32 SDL_initialized = 0;
static Uint32 ticks_started = 0;
 
#ifdef CHECK_LEAKS
int surfaces_allocated = 0;
#endif
 
int SDL_InitSubSystem(Uint32 flags)
{
#ifndef DISABLE_VIDEO
/* Initialize the video/event subsystem */
if ( (flags & SDL_INIT_VIDEO) && !(SDL_initialized & SDL_INIT_VIDEO) ) {
if ( SDL_VideoInit(getenv("SDL_VIDEODRIVER"),
(flags&SDL_INIT_EVENTTHREAD)) < 0 ) {
return(-1);
}
SDL_initialized |= SDL_INIT_VIDEO;
}
#else
if ( flags & SDL_INIT_VIDEO ) {
SDL_SetError("SDL not built with video support");
return(-1);
}
#endif
 
#ifndef DISABLE_AUDIO
/* Initialize the audio subsystem */
if ( (flags & SDL_INIT_AUDIO) && !(SDL_initialized & SDL_INIT_AUDIO) ) {
if ( SDL_AudioInit(getenv("SDL_AUDIODRIVER")) < 0 ) {
return(-1);
}
SDL_initialized |= SDL_INIT_AUDIO;
}
#else
if ( flags & SDL_INIT_AUDIO ) {
SDL_SetError("SDL not built with audio support");
return(-1);
}
#endif
 
#ifndef DISABLE_TIMERS
/* Initialize the timer subsystem */
if ( ! ticks_started ) {
SDL_StartTicks();
ticks_started = 1;
}
if ( (flags & SDL_INIT_TIMER) && !(SDL_initialized & SDL_INIT_TIMER) ) {
if ( SDL_TimerInit() < 0 ) {
return(-1);
}
SDL_initialized |= SDL_INIT_TIMER;
}
#else
if ( flags & SDL_INIT_TIMER ) {
SDL_SetError("SDL not built with timer support");
return(-1);
}
#endif
 
#ifndef DISABLE_JOYSTICK
/* Initialize the joystick subsystem */
if ( (flags & SDL_INIT_JOYSTICK) &&
!(SDL_initialized & SDL_INIT_JOYSTICK) ) {
if ( SDL_JoystickInit() < 0 ) {
return(-1);
}
SDL_initialized |= SDL_INIT_JOYSTICK;
}
#else
if ( flags & SDL_INIT_JOYSTICK ) {
SDL_SetError("SDL not built with joystick support");
return(-1);
}
#endif
 
#ifndef DISABLE_CDROM
/* Initialize the CD-ROM subsystem */
if ( (flags & SDL_INIT_CDROM) && !(SDL_initialized & SDL_INIT_CDROM) ) {
if ( SDL_CDROMInit() < 0 ) {
return(-1);
}
SDL_initialized |= SDL_INIT_CDROM;
}
#else
if ( flags & SDL_INIT_CDROM ) {
SDL_SetError("SDL not built with cdrom support");
return(-1);
}
#endif
return(0);
}
 
int SDL_Init(Uint32 flags)
{
/* Clear the error message */
SDL_ClearError();
 
/* Initialize the desired subsystems */
if ( SDL_InitSubSystem(flags) < 0 ) {
return(-1);
}
 
/* Everything is initialized */
if ( !(flags & SDL_INIT_NOPARACHUTE) ) {
SDL_InstallParachute();
}
return(0);
}
 
void SDL_QuitSubSystem(Uint32 flags)
{
/* Shut down requested initialized subsystems */
#ifndef DISABLE_CDROM
if ( (flags & SDL_initialized & SDL_INIT_CDROM) ) {
SDL_CDROMQuit();
SDL_initialized &= ~SDL_INIT_CDROM;
}
#endif
#ifndef DISABLE_JOYSTICK
if ( (flags & SDL_initialized & SDL_INIT_JOYSTICK) ) {
SDL_JoystickQuit();
SDL_initialized &= ~SDL_INIT_JOYSTICK;
}
#endif
#ifndef DISABLE_TIMERS
if ( (flags & SDL_initialized & SDL_INIT_TIMER) ) {
SDL_TimerQuit();
SDL_initialized &= ~SDL_INIT_TIMER;
}
#endif
#ifndef DISABLE_AUDIO
if ( (flags & SDL_initialized & SDL_INIT_AUDIO) ) {
SDL_AudioQuit();
SDL_initialized &= ~SDL_INIT_AUDIO;
}
#endif
#ifndef DISABLE_VIDEO
if ( (flags & SDL_initialized & SDL_INIT_VIDEO) ) {
SDL_VideoQuit();
SDL_initialized &= ~SDL_INIT_VIDEO;
}
#endif
}
 
Uint32 SDL_WasInit(Uint32 flags)
{
if ( ! flags ) {
flags = SDL_INIT_EVERYTHING;
}
return (SDL_initialized&flags);
}
 
void SDL_Quit(void)
{
/* Quit all subsystems */
SDL_QuitSubSystem(SDL_INIT_EVERYTHING);
 
#ifdef CHECK_LEAKS
/* Print the number of surfaces not freed */
if ( surfaces_allocated != 0 ) {
SDL_printf("SDL Warning: %d SDL surfaces extant\n",
surfaces_allocated);
}
#endif
 
/* Uninstall any parachute signal handlers */
SDL_UninstallParachute();
}
 
/* Return the library version number */
const SDL_version * SDL_Linked_Version(void)
{
return(&version);
}
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/contrib/sdk/sources/SDL-1.2.2_newlib/src/SDL_error.c
0,0 → 1,352
/*
SDL - Simple DirectMedia Layer
Copyright (C) 1997, 1998, 1999, 2000, 2001 Sam Lantinga
 
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 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
Library General Public License for more details.
 
You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 
Sam Lantinga
slouken@devolution.com
*/
 
#ifdef SAVE_RCSID
static char rcsid =
"@(#) $Id: SDL_error.c,v 1.2 2001/04/26 16:50:17 hercules Exp $";
#endif
 
/* Simple error handling in SDL */
 
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <string.h>
 
#include "SDL_types.h"
#include "SDL_getenv.h"
#include "SDL_error.h"
#include "SDL_error_c.h"
#ifndef DISABLE_THREADS
#include "SDL_thread_c.h"
#endif
 
#ifdef DISABLE_THREADS
/* The default (non-thread-safe) global error variable */
static SDL_error SDL_global_error;
 
#define SDL_GetErrBuf() (&SDL_global_error)
#endif /* DISABLE_THREADS */
 
#ifdef __CYGWIN__
#define DISABLE_STDIO
#endif
 
#define SDL_ERRBUFIZE 1024
 
/* Private functions */
 
static int vdprintf_help(unsigned c)
{
int d0;
if(c=='\n')
{
c='\r';
__asm__ __volatile__("int $0x40":"=&a"(d0):"0"(63),"b"(1),"c"(c));
c='\n';
__asm__ __volatile__("int $0x40":"=&a"(d0):"0"(63),"b"(1),"c"(c));
return 0;
}
__asm__ __volatile__("int $0x40":"=&a"(d0):"0"(63),"b"(1),"c"(c));
return 0 ;
}
 
static void xputs(char * p)
{
for(;*p;p++) vdprintf_help((*p)&0xff);
}
 
static char dbg_buf[1024];
 
void SDL_printf(const char * fmt,...)
{
va_list ap;
va_start(ap,fmt);
vsprintf(dbg_buf,fmt,ap);
va_end(ap);
xputs(dbg_buf);
}
 
static void SDL_LookupString(const Uint8 *key, Uint16 *buf, int buflen)
{
/* FIXME: Add code to lookup key in language string hash-table */
 
/* Key not found in language string hash-table */
while ( *key && (--buflen > 0) ) {
*buf++ = *key++;
}
*buf = 0; /* NULL terminate string */
}
 
/* Public functions */
 
void SDL_SetError (const char *fmt, ...)
{
va_list ap;
SDL_error *error;
 
/* Copy in the key, mark error as valid */
error = SDL_GetErrBuf();
error->error = 1;
strncpy((char *)error->key, fmt, sizeof(error->key));
error->key[sizeof(error->key)-1] = '\0';
 
va_start(ap, fmt);
error->argc = 0;
while ( *fmt ) {
if ( *fmt++ == '%' ) {
switch (*fmt++) {
case 0: /* Malformed format string.. */
--fmt;
break;
#if 0 /* What is a character anyway? (UNICODE issues) */
case 'c':
error->args[error->argc++].value_c =
va_arg(ap, unsigned char);
break;
#endif
case 'd':
error->args[error->argc++].value_i =
va_arg(ap, int);
break;
case 'f':
error->args[error->argc++].value_f =
va_arg(ap, double);
break;
case 'p':
error->args[error->argc++].value_ptr =
va_arg(ap, void *);
break;
case 's':
{
int index = error->argc;
strncpy((char *)error->args[index].buf,
va_arg(ap, char *), ERR_MAX_STRLEN);
error->args[index].buf[ERR_MAX_STRLEN-1] = 0;
error->argc++;
}
break;
default:
break;
}
if ( error->argc >= ERR_MAX_ARGS ) {
break;
}
}
}
va_end(ap);
 
SDL_printf("SDL_SetError: %s\n", SDL_GetError());
}
 
/* Print out an integer value to a UNICODE buffer */
static int PrintInt(Uint16 *str, unsigned int maxlen, int value)
{
char tmp[128];
int len, i;
 
sprintf(tmp, "%d", value);
len = 0;
if ( strlen(tmp) < maxlen ) {
for ( i=0; tmp[i]; ++i ) {
*str++ = tmp[i];
++len;
}
}
return(len);
}
/* Print out a double value to a UNICODE buffer */
static int PrintDouble(Uint16 *str, unsigned int maxlen, double value)
{
char tmp[128];
int len, i;
 
sprintf(tmp, "%f", value);
len = 0;
if ( strlen(tmp) < maxlen ) {
for ( i=0; tmp[i]; ++i ) {
*str++ = tmp[i];
++len;
}
}
return(len);
}
/* Print out a pointer value to a UNICODE buffer */
static int PrintPointer(Uint16 *str, unsigned int maxlen, void *value)
{
char tmp[128];
int len, i;
 
sprintf(tmp, "%p", value);
len = 0;
if ( strlen(tmp) < maxlen ) {
for ( i=0; tmp[i]; ++i ) {
*str++ = tmp[i];
++len;
}
}
return(len);
}
 
/* This function has a bit more overhead than most error functions
so that it supports internationalization and thread-safe errors.
*/
Uint16 *SDL_GetErrorMsgUNICODE(Uint16 *errstr, unsigned int maxlen)
{
SDL_error *error;
 
/* Clear the error string */
*errstr = 0; --maxlen;
 
/* Get the thread-safe error, and print it out */
error = SDL_GetErrBuf();
if ( error->error ) {
Uint16 translated[ERR_MAX_STRLEN], *fmt, *msg;
int len;
int argi;
 
/* Print out the UNICODE error message */
SDL_LookupString(error->key, translated, sizeof(translated));
msg = errstr;
argi = 0;
for ( fmt=translated; *fmt && (maxlen > 0); ) {
if ( *fmt == '%' ) {
switch (fmt[1]) {
case 'S': /* Special SKIP operand */
argi += (fmt[2] - '0');
++fmt;
break;
case '%':
*msg++ = '%';
maxlen -= 1;
break;
#if 0 /* What is a character anyway? (UNICODE issues) */
case 'c':
*msg++ = (unsigned char)
error->args[argi++].value_c;
maxlen -= 1;
break;
#endif
case 'd':
len = PrintInt(msg, maxlen,
error->args[argi++].value_i);
msg += len;
maxlen -= len;
break;
case 'f':
len = PrintDouble(msg, maxlen,
error->args[argi++].value_f);
msg += len;
maxlen -= len;
break;
case 'p':
len = PrintPointer(msg, maxlen,
error->args[argi++].value_ptr);
msg += len;
maxlen -= len;
break;
case 's': /* UNICODE string */
{ Uint16 buf[ERR_MAX_STRLEN], *str;
SDL_LookupString(error->args[argi++].buf, buf, sizeof(buf));
str = buf;
while ( *str && (maxlen > 0) ) {
*msg++ = *str++;
maxlen -= 1;
}
}
break;
}
fmt += 2;
} else {
*msg++ = *fmt++;
maxlen -= 1;
}
}
*msg = 0; /* NULL terminate the string */
}
return(errstr);
}
 
Uint8 *SDL_GetErrorMsg(Uint8 *errstr, unsigned int maxlen)
{
Uint16 *errstr16;
unsigned int i;
 
/* Allocate the UNICODE buffer */
errstr16 = (Uint16 *)malloc(maxlen * (sizeof *errstr16));
if ( ! errstr16 ) {
strncpy((char *)errstr, "Out of memory", maxlen);
errstr[maxlen-1] = '\0';
return(errstr);
}
 
/* Get the error message */
SDL_GetErrorMsgUNICODE(errstr16, maxlen);
 
/* Convert from UNICODE to Latin1 encoding */
for ( i=0; i<maxlen; ++i ) {
errstr[i] = (Uint8)errstr16[i];
}
 
/* Free UNICODE buffer (if necessary) */
free(errstr16);
 
return(errstr);
}
 
/* Available for backwards compatibility */
char *SDL_GetError (void)
{
static char errmsg[SDL_ERRBUFIZE];
 
return((char *)SDL_GetErrorMsg((unsigned char *)errmsg, SDL_ERRBUFIZE));
}
 
void SDL_ClearError(void)
{
SDL_error *error;
 
error = SDL_GetErrBuf();
error->error = 0;
}
 
/* Very common errors go here */
void SDL_Error(SDL_errorcode code)
{
switch (code) {
case SDL_ENOMEM:
SDL_SetError("Out of memory");
break;
case SDL_EFREAD:
SDL_SetError("Error reading from datastream");
break;
case SDL_EFWRITE:
SDL_SetError("Error writing to datastream");
break;
case SDL_EFSEEK:
SDL_SetError("Error seeking in datastream");
break;
default:
SDL_SetError("Unknown SDL error");
break;
}
}
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/contrib/sdk/sources/SDL-1.2.2_newlib/src/SDL_error_c.h
0,0 → 1,62
/*
SDL - Simple DirectMedia Layer
Copyright (C) 1997, 1998, 1999, 2000, 2001 Sam Lantinga
 
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 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
Library General Public License for more details.
 
You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 
Sam Lantinga
slouken@devolution.com
*/
 
#ifdef SAVE_RCSID
static char rcsid =
"@(#) $Id: SDL_error_c.h,v 1.2 2001/04/26 16:50:17 hercules Exp $";
#endif
 
/* This file defines a structure that carries language-independent
error messages
*/
 
#ifndef _SDL_error_c_h
#define _SDL_error_c_h
 
#define ERR_MAX_STRLEN 128
#define ERR_MAX_ARGS 5
 
typedef struct {
/* This is a numeric value corresponding to the current error */
int error;
 
/* This is a key used to index into a language hashtable containing
internationalized versions of the SDL error messages. If the key
is not in the hashtable, or no hashtable is available, the key is
used directly as an error message format string.
*/
unsigned char key[ERR_MAX_STRLEN];
 
/* These are the arguments for the error functions */
int argc;
union {
void *value_ptr;
#if 0 /* What is a character anyway? (UNICODE issues) */
unsigned char value_c;
#endif
int value_i;
double value_f;
unsigned char buf[ERR_MAX_STRLEN];
} args[ERR_MAX_ARGS];
} SDL_error;
 
#endif /* _SDL_error_c_h */
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/contrib/sdk/sources/SDL-1.2.2_newlib/src/SDL_fatal.c
0,0 → 1,46
/*
SDL - Simple DirectMedia Layer
Copyright (C) 1997, 1998, 1999, 2000, 2001 Sam Lantinga
 
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 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
Library General Public License for more details.
 
You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 
Sam Lantinga
slouken@devolution.com
*/
#include <stdlib.h>
#include <stdio.h>
#include <signal.h>
#include <string.h>
#include <stdarg.h>
 
void SDL_printf_error(const char * fmt,...)
{
int pid;
va_list args;
va_start(args,fmt);
vprintf(fmt,args);
exit(-1);
}
 
 
void SDL_InstallParachute(void)
{
return;
}
 
void SDL_UninstallParachute(void)
{
return;
}
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/contrib/sdk/sources/SDL-1.2.2_newlib/src/SDL_fatal.h
0,0 → 1,32
/*
SDL - Simple DirectMedia Layer
Copyright (C) 1997, 1998, 1999, 2000, 2001 Sam Lantinga
 
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 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
Library General Public License for more details.
 
You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 
Sam Lantinga
slouken@devolution.com
*/
 
#ifdef SAVE_RCSID
static char rcsid =
"@(#) $Id: SDL_fatal.h,v 1.2 2001/04/26 16:50:17 hercules Exp $";
#endif
 
/* General fatal signal handling code for SDL */
 
extern void SDL_InstallParachute(void);
extern void SDL_UninstallParachute(void);
 
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/contrib/sdk/sources/SDL-1.2.2_newlib/src/SDL_getenv.c
0,0 → 1,171
 
/* Not all environments have a working getenv()/putenv() */
 
#ifdef TEST_MAIN
#define NEED_SDL_GETENV
#endif
 
#include "SDL_getenv.h"
 
#ifdef NEED_SDL_GETENV
 
#include <stdlib.h>
#include <string.h>
 
static char **SDL_env = (char **)0;
 
/* Put a variable of the form "name=value" into the environment */
int SDL_putenv(const char *variable)
{
const char *name, *value;
int added;
int len, i;
char **new_env;
char *new_variable;
 
/* A little error checking */
if ( ! variable ) {
return(-1);
}
name = variable;
for ( value=variable; *value && (*value != '='); ++value ) {
/* Keep looking for '=' */ ;
}
if ( *value ) {
++value;
} else {
return(-1);
}
 
/* Allocate memory for the variable */
new_variable = (char *)malloc(strlen(variable)+1);
if ( ! new_variable ) {
return(-1);
}
strcpy(new_variable, variable);
 
/* Actually put it into the environment */
added = 0;
i = 0;
if ( SDL_env ) {
/* Check to see if it's already there... */
len = (value - name);
for ( ; SDL_env[i]; ++i ) {
if ( 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_env[i] = new_variable;
added = 1;
}
}
 
/* Didn't find it in the environment, expand and add */
if ( ! added ) {
new_env = realloc(SDL_env, (i+2)*sizeof(char *));
if ( new_env ) {
SDL_env = new_env;
SDL_env[i++] = new_variable;
SDL_env[i++] = (char *)0;
added = 1;
} else {
free(new_variable);
}
}
return (added ? 0 : -1);
}
 
/* Retrieve a variable named "name" from the environment */
char *SDL_getenv(const char *name)
{
int len, i;
char *value;
 
value = (char *)0;
if ( SDL_env ) {
len = strlen(name);
for ( i=0; SDL_env[i] && !value; ++i ) {
if ( (strncmp(SDL_env[i], name, len) == 0) &&
(SDL_env[i][len] == '=') ) {
value = &SDL_env[i][len+1];
}
}
}
return value;
}
 
#endif /* NEED_GETENV */
 
#ifdef TEST_MAIN
#include <stdio.h>
 
int main(int argc, char *argv[])
{
char *value;
 
printf("Checking for non-existent variable... ");
fflush(stdout);
if ( ! getenv("EXISTS") ) {
printf("okay\n");
} else {
printf("failed\n");
}
printf("Setting FIRST=VALUE1 in the environment... ");
fflush(stdout);
if ( 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) ) {
printf("okay\n");
} else {
printf("failed\n");
}
printf("Setting SECOND=VALUE2 in the environment... ");
fflush(stdout);
if ( 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) ) {
printf("okay\n");
} else {
printf("failed\n");
}
printf("Setting FIRST=NOVALUE in the environment... ");
fflush(stdout);
if ( 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) ) {
printf("okay\n");
} else {
printf("failed\n");
}
printf("Checking for non-existent variable... ");
fflush(stdout);
if ( ! getenv("EXISTS") ) {
printf("okay\n");
} else {
printf("failed\n");
}
return(0);
}
#endif /* TEST_MAIN */
 
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/contrib/sdk/sources/SDL-1.2.2_newlib/src/compile.sh
0,0 → 1,5
cd SYSCALL/src
make
cd ../..
make install
make clean
Property changes:
Added: svn:executable
+*
\ No newline at end of property