/* The header defines certain common macros, types, and functions.*/ #ifndef _STDLIB_H #define _STDLIB_H #ifndef _ANSI_H #include #endif /* The macros are NULL, EXIT_FAILURE, EXIT_SUCCESS, RAND_MAX, and MB_CUR_MAX.*/ #define NULL ((void *)0) #define EXIT_FAILURE 1 /* standard error return using exit() */ #define EXIT_SUCCESS 0 /* successful return using exit() */ #define RAND_MAX 32767 /* largest value generated by rand() */ #define MB_CUR_MAX 1 /* max value of multibyte character in MINIX */ typedef struct { int quot, rem; } div_t; typedef struct { long quot, rem; } ldiv_t; /* The types are size_t, wchar_t, div_t, and ldiv_t. */ #ifndef _SIZE_T #define _SIZE_T typedef unsigned int size_t; /* type returned by sizeof */ #endif #ifndef _WCHAR_T #define _WCHAR_T typedef char wchar_t; /* type expanded character set */ #endif /* Function Prototypes. */ _PROTOTYPE( void abort, (void) ); _PROTOTYPE( int abs, (int _j) ); _PROTOTYPE( int atexit, (void (*_func)(void)) ); _PROTOTYPE( double atof, (const char *_nptr) ); _PROTOTYPE( int atoi, (const char *_nptr) ); _PROTOTYPE( long atol, (const char *_nptr) ); _PROTOTYPE( void *calloc, (size_t _nmemb, size_t _size) ); _PROTOTYPE( div_t div, (int _numer, int _denom) ); _PROTOTYPE( void exit, (int _status) ); _PROTOTYPE( void free, (void *_ptr) ); _PROTOTYPE( char *getenv, (const char *_name) ); _PROTOTYPE( long labs, (long _j) ); _PROTOTYPE( ldiv_t ldiv, (long _numer, long _denom) ); _PROTOTYPE( void *malloc, (size_t _size) ); _PROTOTYPE( int mblen, (const char *_s, size_t _n) ); _PROTOTYPE( size_t mbstowcs, (wchar_t *_pwcs, const char *_s, size_t _n)); _PROTOTYPE( int mbtowc, (wchar_t *_pwc, const char *_s, size_t _n) ); _PROTOTYPE( int rand, (void) ); _PROTOTYPE( void *realloc, (void *_ptr, size_t _size) ); _PROTOTYPE( void srand, (unsigned int _seed) ); _PROTOTYPE( double strtod, (const char *_nptr, char **_endptr) ); _PROTOTYPE( long strtol, (const char *_nptr, char **_endptr, int _base) ); _PROTOTYPE( int system, (const char *_string) ); _PROTOTYPE( size_t wcstombs, (char *_s, const wchar_t *_pwcs, size_t _n)); _PROTOTYPE( int wctomb, (char *_s, wchar_t _wchar) ); _PROTOTYPE( void *bsearch, (const void *_key, const void *_base, size_t _nmemb, size_t _size, int (*compar) (const void *, const void *)) ); _PROTOTYPE( void qsort, (void *_base, size_t _nmemb, size_t _size, int (*compar) (const void *, const void *)) ); _PROTOTYPE( unsigned long int strtoul, (const char *_nptr, char **_endptr, int _base) ); #ifdef _POSIX_SOURCE /* Open Group Base Specifications Issue 6 */ _PROTOTYPE( int mkstemp, (char *_fmt) ); _PROTOTYPE( char *initstate, (unsigned _seed, char *_state, size_t _size) ); _PROTOTYPE( long random, (void) ); _PROTOTYPE( char *setstate, (const char *state) ); _PROTOTYPE( void srandom, (unsigned seed) ); _PROTOTYPE( int getloadavg, (double *, int) ); #endif #ifdef _MINIX _PROTOTYPE( int putenv, (char *_name) ); _PROTOTYPE( int setenv, (const char *name, const char *val, const int f)); /* According to POSIX, getopt should be in unistd.h. What do we do with * this? */ _PROTOTYPE(int getopt, (int _argc, char * const _argv[], const char *_opts)); extern char *optarg; extern int optind, opterr, optopt; #endif /* _MINIX */ #endif /* STDLIB_H */