/*
 * stdlib.h
 *	ansi draft sec 4.10
 */
#ifndef _STDLIB_H
#define _STDLIB_H

#ifndef _COMPILER_H
#include <compiler.h>
#endif

#ifndef _SIZE_T
#define _SIZE_T __SIZE_TYPEDEF__
typedef _SIZE_T size_t;
#endif

#ifndef _WCHAR_T
#define _WCHAR_T __WCHAR_TYPEDEF__
typedef _WCHAR_T wchar_t;
#endif

#ifdef __MSHORT__
#define	RAND_MAX	(0x7FFF)	/* maximum value from rand() */
#else
#define	RAND_MAX	(0x7FFFFFFFL)	/* maximum value from rand() */
#endif

#define MB_CUR_MAX	1		/* max. length of multibyte character
					   in current locale */

#ifndef EXIT_FAILURE
#define EXIT_FAILURE	(1)
#define EXIT_SUCCESS	(0)
#endif

typedef struct {
    int		quot;	/* quotient	*/
    int		rem;	/* remainder 	*/
} div_t;

typedef struct {
    long	quot;	/* quotient	*/
    long	rem;	/* remainder 	*/
} ldiv_t;


__EXTERN double		atof	__PROTO((const char *));
__EXTERN int		atoi	__PROTO((const char *));
__EXTERN long		atol	__PROTO((const char *));
__EXTERN long		strtol	__PROTO((const char *, char **, int));
__EXTERN unsigned long	strtoul	__PROTO((const char *, char **, int));
__EXTERN double		strtod	__PROTO((const char *, char **));

__EXTERN int		rand	__PROTO((void));
__EXTERN void		srand	__PROTO((unsigned int));

__EXTERN void *		calloc	__PROTO((size_t, size_t));
__EXTERN void		free	__PROTO((void *));
__EXTERN void *		malloc	__PROTO((size_t));
__EXTERN void *		realloc	__PROTO((void *, size_t));
#ifndef __STRICT_ANSI__
#ifndef alloca
__EXTERN void *		alloca	__PROTO((size_t));
#endif
__EXTERN void		_malloczero __PROTO((int));
__EXTERN void 		_mallocChunkSize __PROTO((size_t));
#endif

__EXTERN __EXITING	abort	__PROTO((void));
__EXTERN int		atexit	__PROTO((void (*func)(void)));
__EXTERN __EXITING	exit	__PROTO((int));
__EXTERN char *		getenv	__PROTO((const char *));
__EXTERN int		system	__PROTO((const char *));

__EXTERN void *		bsearch __PROTO((const void *, const void *, size_t,
				  size_t, int(*)(const void *, const void *))); 
__EXTERN void		qsort	__PROTO((void *, size_t, size_t,
				  int(*)(const void *, const void *))); 

__EXTERN int		abs	__PROTO((int));
__EXTERN long		labs	__PROTO((long));

__EXTERN div_t 		div	__PROTO((int  num, int  denom));
__EXTERN ldiv_t		ldiv	__PROTO((long num, long denom));

#endif /* _STDLIB_H */
