mirror of
https://github.com/pspdev/pspsdk.git
synced 2025-12-24 12:42:36 +00:00
133 lines
3.3 KiB
C
133 lines
3.3 KiB
C
/*
|
|
* PSP Software Development Kit - https://github.com/pspdev
|
|
* -----------------------------------------------------------------------
|
|
* Licensed under the BSD license, see LICENSE in PSPSDK root for details.
|
|
*
|
|
* stdlib.h
|
|
*
|
|
* Copyright (c) 2002-2004 PS2DEV
|
|
* Copyright (c) 2005 Marcus R. Brown <mrbrown@ocgnet.org>
|
|
* Copyright (c) 2005 James Forshaw <tyranid@gmail.com>
|
|
* Copyright (c) 2005 John Kelley <ps2dev@kelley.ca>
|
|
*
|
|
*/
|
|
|
|
#ifndef __STDLIB_H__
|
|
#define __STDLIB_H__
|
|
|
|
#include <pspkernel.h>
|
|
#include <stddef.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
|
|
/* ensure NULL is defined. */
|
|
#ifndef NULL
|
|
#define NULL (void *)0
|
|
#endif
|
|
|
|
|
|
/* exit status constants. */
|
|
#define EXIT_SUCCESS 0
|
|
#define EXIT_FAILURE 1
|
|
|
|
|
|
/* multibyte maximum character constant. */
|
|
#define MB_CUR_MAX 1
|
|
|
|
/* ensure div_t is defined. */
|
|
#ifndef __DIV_T_DEFINED
|
|
#define __DIV_T_DEFINED
|
|
typedef struct {
|
|
int quot;
|
|
int rem;
|
|
} div_t;
|
|
#endif // __DIV_T_DEFINED
|
|
|
|
|
|
/* ensure ldiv_t is defined. */
|
|
#ifndef __LDIV_T_DEFINED
|
|
#define __LDIV_T_DEFINED
|
|
typedef struct {
|
|
long quot;
|
|
long rem;
|
|
} ldiv_t;
|
|
#endif // __LDIV_T_DEFINED
|
|
|
|
|
|
#ifndef __STRICT_ANSI__
|
|
#ifndef __LLDIV_T_DEFINED
|
|
#define __LLDIV_T_DEFINED
|
|
typedef struct {
|
|
long long quot;
|
|
long long rem;
|
|
} lldiv_t;
|
|
#endif // __LLDIV_T_DEFINED
|
|
#endif // __STRICT_ANSI__
|
|
|
|
/* we don't check for any previously defined value. This HAS to be that. */
|
|
#define RAND_MAX 2147483647
|
|
|
|
|
|
/* function declarations. */
|
|
void abort(void) __attribute__ ((noreturn));
|
|
int abs(int);
|
|
int atexit(void (*)(void));
|
|
double atof(const char *);
|
|
void exit(int);
|
|
//int atoi(const char *);
|
|
//long atol(const char *);
|
|
//#define atoi(x) strtol(x, NULL, 10)
|
|
//#define atol atoi
|
|
void *bsearch(const void *, const void *, size_t, size_t, int (*)(const void *, const void *));
|
|
div_t div(int, int);
|
|
char *getenv(const char *);
|
|
long labs(long);
|
|
ldiv_t ldiv(long, long);
|
|
#ifndef __STRICT_ANSI__
|
|
long long llabs(long long);
|
|
lldiv_t lldiv(long long, long long);
|
|
#endif
|
|
int rand(void);
|
|
int setenv(const char *, const char *, int);
|
|
void srand(unsigned int);
|
|
double strtod(const char *, char **);
|
|
long strtol(const char *, char **, int);
|
|
unsigned long strtoul(const char *, char **, int);
|
|
static __inline__ int atoi(const char * x) { return strtol(x, NULL, 10); }
|
|
static __inline__ long atol(const char * x) { return strtol(x, NULL, 10); }
|
|
|
|
|
|
void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *));
|
|
|
|
|
|
/* Multibyte disabled, but prototyped for C++... */
|
|
int mblen(const char *, size_t);
|
|
size_t mbstowcs(wchar_t *, const char *, size_t);
|
|
int mbtowc(wchar_t *, const char *, size_t);
|
|
size_t wcstombs(char *, const wchar_t *, size_t);
|
|
int wctomb(char *, wchar_t);
|
|
|
|
//char *_gcvt(double, size_t, char *);
|
|
char *_itoa(int, char *, int);
|
|
char *_ltoa(long, char *, int);
|
|
#ifndef __STRICT_ANSI__
|
|
char *_lltoa(long long, char *, int);
|
|
#endif
|
|
|
|
// blah! C++ is evil.
|
|
int system (const char * string);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
|
|
/* C++ is evil, let's defeat it... */
|
|
#define _CPP_CSTDLIB 1
|
|
|
|
#endif
|
|
|
|
|
|
#endif // __STDLIB_H__
|