Made stdlib.h almost compatible to BeOS.
Removed deprecated strtoq() functions (they are not even part of BeOS, so why should we include this cruft?). Added prototypes for llabs(), and lldiv() - added lldiv_t to div_t.h. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1661 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -1,5 +1,8 @@
|
||||
#ifndef _DIV_T_H_
|
||||
#define _DIV_T_H_
|
||||
/*
|
||||
** Distributed under the terms of the OpenBeOS License.
|
||||
*/
|
||||
|
||||
typedef struct {
|
||||
int quot;
|
||||
@@ -11,4 +14,9 @@ typedef struct {
|
||||
long rem;
|
||||
} ldiv_t;
|
||||
|
||||
typedef struct {
|
||||
long long quot;
|
||||
long long rem;
|
||||
} lldiv_t;
|
||||
|
||||
#endif /* _DIV_T_H_ */
|
||||
|
||||
+117
-55
@@ -1,14 +1,14 @@
|
||||
#ifndef _STDLIB_H_
|
||||
#define _STDLIB_H_
|
||||
/*
|
||||
** Distributed under the terms of the OpenBeOS License.
|
||||
*/
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <div_t.h>
|
||||
#include <size_t.h>
|
||||
#include <null.h>
|
||||
#include <wchar_t.h>
|
||||
#include <stddef.h>
|
||||
#include <limits.h>
|
||||
#include <sys/types.h>
|
||||
#include <SupportDefs.h>
|
||||
|
||||
|
||||
#define RAND_MAX 0x7fffffff
|
||||
@@ -17,81 +17,143 @@
|
||||
#define EXIT_SUCCESS 0
|
||||
#define EXIT_FAILURE 1
|
||||
|
||||
/* random data structures (for thread-safe random numbers) */
|
||||
struct random_data {
|
||||
int *fptr;
|
||||
int *rptr;
|
||||
int *state;
|
||||
int rand_type;
|
||||
int rand_deg;
|
||||
int rand_sep;
|
||||
int *end_ptr;
|
||||
};
|
||||
|
||||
struct drand48_data {
|
||||
unsigned short int x[3];
|
||||
unsigned short int a[3];
|
||||
unsigned short int c;
|
||||
unsigned short int old_x[3];
|
||||
int init;
|
||||
};
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
double atof(const char *str);
|
||||
int atoi(const char *str);
|
||||
long atol(const char *str);
|
||||
/* memory allocation (see malloc.h for additional defines & prototypes) */
|
||||
extern void *calloc(size_t nmemb, size_t size);
|
||||
extern void free(void *pointer);
|
||||
extern void *malloc(size_t size);
|
||||
extern void *realloc(void * ptr, size_t size);
|
||||
|
||||
unsigned int atoui(const char *num);
|
||||
unsigned long atoul(const char *num);
|
||||
/* process termination */
|
||||
extern void abort(void);
|
||||
extern int atexit(void (*func)(void));
|
||||
extern int atfork(void (*func)(void));
|
||||
extern void exit(int);
|
||||
|
||||
double strtod (const char *str, char **end);
|
||||
long strtol (const char *str, char **end, int base);
|
||||
unsigned long strtoul (const char *str, char **end, int base);
|
||||
long long strtoll (const char *str, char **end, int base);
|
||||
unsigned long long strtoull(const char *str, char **end, int base);
|
||||
/* misc functions */
|
||||
extern char *realpath(const char *path, char *resolved);
|
||||
|
||||
void srand(unsigned int seed);
|
||||
int rand(void);
|
||||
int rand_r(unsigned int *seed);
|
||||
void srandom(unsigned int seed);
|
||||
int random(void);
|
||||
char *initstate(unsigned int seed, char *state, int n);
|
||||
char *setstate(char *state);
|
||||
extern int daemon(int nochdir, int noclose);
|
||||
extern int system(const char *command);
|
||||
|
||||
void *calloc(size_t nmemb, size_t size);
|
||||
void free(void *ptr);
|
||||
void *malloc(size_t size);
|
||||
void *realloc(void * ptr, size_t size);
|
||||
extern char *mktemp(char *name);
|
||||
extern int mkstemp(char *template);
|
||||
|
||||
void abort(void);
|
||||
int atexit(void (*func)(void));
|
||||
int atfork(void (*func)(void));
|
||||
void exit(int);
|
||||
/* environment variables */
|
||||
extern char **environ;
|
||||
extern char *getenv(const char *name);
|
||||
extern int putenv(const char *string);
|
||||
extern int setenv(char const *name, char const *value, int rewrite);
|
||||
extern void unsetenv(const char *name);
|
||||
|
||||
extern char **environ;
|
||||
char *getenv(const char *name);
|
||||
int putenv(const char *string);
|
||||
int setenv(char const *, char const *, int);
|
||||
/* ASCII string to number conversion */
|
||||
extern double atof(const char *string);
|
||||
extern int atoi(const char *string);
|
||||
extern long atol(const char *string);
|
||||
extern long long int atoll(const char *string);
|
||||
extern unsigned int atoui(const char *string);
|
||||
extern unsigned long atoul(const char *string);
|
||||
|
||||
char *realpath(const char *path, char *resolved);
|
||||
extern double strtod(const char *string, char **end);
|
||||
extern long strtol(const char *string, char **end, int base);
|
||||
extern unsigned long strtoul(const char *string, char **end, int base);
|
||||
extern long long strtoll(const char *string, char **end, int base);
|
||||
extern unsigned long long strtoull(const char *string, char **end, int base);
|
||||
|
||||
int system(const char *command);
|
||||
// ToDo: we will eventually need this
|
||||
//extern int __ctype_get_mb_cur_max(void);
|
||||
|
||||
char *mktemp(char *name);
|
||||
/* random number generation */
|
||||
extern void srand(unsigned int seed);
|
||||
extern int rand(void);
|
||||
extern int random(void);
|
||||
extern void srandom(unsigned int seed);
|
||||
extern int rand_r(unsigned int *seed);
|
||||
extern int random_r(struct random_data *data, int *result);
|
||||
extern int srandom_r(unsigned int seed, struct random_data *data);
|
||||
extern char *initstate(unsigned int seed, char *state, size_t size);
|
||||
extern char *setstate(char *state);
|
||||
extern int initstate_r(unsigned int seed, void *stateBuffer,
|
||||
size_t stateLength, struct random_data *data);
|
||||
extern int setstate_r(void *stateBuffer, struct random_data *data);
|
||||
|
||||
extern double drand48(void);
|
||||
extern double erand48(unsigned short int xsubi[3]);
|
||||
extern long lrand48(void);
|
||||
extern long nrand48(unsigned short int xsubi[3]);
|
||||
extern long mrand48(void);
|
||||
extern long jrand48(unsigned short int xsubi[3]);
|
||||
extern void srand48(long int seed);
|
||||
extern unsigned short *seed48(unsigned short int seed16v[3]);
|
||||
extern void lcong48(unsigned short int param[7]);
|
||||
|
||||
typedef int (*_compare_function)(const void*, const void*);
|
||||
extern int drand48_r(struct drand48_data *data, double *result);
|
||||
extern int erand48_r(unsigned short int xsubi[3],
|
||||
struct drand48_data *data, double *result);
|
||||
extern int lrand48_r(struct drand48_data *data, long int *result);
|
||||
extern int nrand48_r(unsigned short int xsubi[3],
|
||||
struct drand48_data *data, long int *result);
|
||||
extern int mrand48_r(struct drand48_data *data, long int *result);
|
||||
extern int jrand48_r(unsigned short int xsubi[3],
|
||||
struct drand48_data *data, long int *result);
|
||||
extern int srand48_r(long int seed, struct drand48_data *data);
|
||||
extern int seed48_r(unsigned short int seed16v[3],
|
||||
struct drand48_data *data);
|
||||
extern int lcong48_r(unsigned short int param[7],
|
||||
struct drand48_data *data);
|
||||
|
||||
void *bsearch(const void*, const void*, size_t, size_t, _compare_function);
|
||||
int heapsort(void *, size_t , size_t , _compare_function);
|
||||
int mergesort(void *, size_t, size_t, _compare_function);
|
||||
void qsort(void *, size_t, size_t, _compare_function);
|
||||
int radixsort(u_char const **, int, u_char const *, u_int);
|
||||
int sradixsort(u_char const **, int, u_char const *, u_int);
|
||||
/* search and sort functions */
|
||||
typedef int (*_compare_function)(const void *, const void *);
|
||||
|
||||
int abs(int n);
|
||||
long labs(long n);
|
||||
extern void *bsearch(const void *key, const void *base, size_t numElements,
|
||||
size_t sizeOfElement, _compare_function);
|
||||
extern int heapsort(void *base, size_t numElements, size_t sizeOfElement, _compare_function);
|
||||
extern int mergesort(void *base, size_t numElements, size_t sizeOfElement, _compare_function);
|
||||
extern void qsort(void *base, size_t numElements, size_t sizeOfElement, _compare_function);
|
||||
extern int radixsort(u_char const **base, int numElements, u_char const *table, u_int endByte);
|
||||
extern int sradixsort(u_char const **base, int numElements, u_char const *table, u_int endByte);
|
||||
|
||||
div_t div(int numerator, int denominator);
|
||||
ldiv_t ldiv(long numerator, long denominator);
|
||||
/* misc math functions */
|
||||
extern int abs(int number);
|
||||
extern long labs(long number);
|
||||
extern long long llabs(long long number);
|
||||
|
||||
int mblen(const char *s, size_t n);
|
||||
int mbtowc(wchar_t *pwc, const char *s, size_t n);
|
||||
int wctomb(char *s, wchar_t wchar);
|
||||
size_t mbstowcs(wchar_t *pwcs, const char *s, size_t n);
|
||||
size_t wcstombs(char *s, const wchar_t *pwcs, size_t n);
|
||||
extern div_t div(int numerator, int denominator);
|
||||
extern ldiv_t ldiv(long numerator, long denominator);
|
||||
extern lldiv_t lldiv(long long numerator, long long denominator);
|
||||
|
||||
int64 strtoq(const char *, char **, int);
|
||||
uint64 strtouq(const char *, char **, int);
|
||||
/* wide & multibyte string functions */
|
||||
extern int mblen(const char *string, size_t maxSize);
|
||||
extern int mbtowc(wchar_t *pwc, const char *string, size_t maxSize);
|
||||
extern int wctomb(char *string, wchar_t wchar);
|
||||
extern size_t mbstowcs(wchar_t *pwcs, const char *string, size_t maxSize);
|
||||
extern size_t wcstombs(char *string, const wchar_t *pwcs, size_t maxSize);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* _STDLIB_H_ */
|
||||
|
||||
Reference in New Issue
Block a user