home *** CD-ROM | disk | FTP | other *** search
- /*
- * stdlib.h -- ANSI
- *
- * Functions, types, and macros that are of general utility.
- *
- * Copyright (c) 1990, MetaWare Incorporated
- */
-
- #ifndef _STDLIB_H
- #define _STDLIB_H
- #pragma push_align_members(64);
-
- #ifdef __CPLUSPLUS__
- extern "C" {
- #endif
-
- #ifndef _SIZET_H
- #include <sizet.h>
- #endif
-
- #ifndef _WCHAR_T_DEFINED
- #define _WCHAR_T_DEFINED
- typedef _wchar_t wchar_t;
- #endif
-
- #ifndef _DIV_T_DEFINED
- #define _DIV_T_DEFINED
- typedef struct { int quot; int rem; } div_t;
- typedef struct { long quot; long rem; } ldiv_t;
- #endif
-
- #ifndef NULL
- #define NULL ((void *)0)
- #endif
-
- #define EXIT_FAILURE 1
- #define EXIT_SUCCESS 0
-
- #if _MSNT
- extern int _syserrno;
- #endif
-
- #if _MSDOS || _MSNT
- extern char ** _environ;
- #if __HIGHC__
- extern int errno;
- extern char ** environ;
- #pragma alias(environ,"_environ");
- #endif /* __HIGHC__ */
- #endif
-
- #if _MSDOS
- extern int _doserrno;
- extern int _fmode;
- extern unsigned char _osmajor;
- extern unsigned char _osminor;
- extern unsigned char _osmode;
- extern unsigned int _psp;
- extern char * _sys_errlist[];
- extern int _sys_nerr;
-
- #define _MAX_PATH 144
- #define _MAX_DRIVE 3
- #define _MAX_DIR 130
- #define _MAX_FNAME 9
- #define _MAX_EXT 5
-
- #if __HIGHC__
-
- #define DOS_MODE 0
- #define OS2_MODE 1
-
- #endif /* __HIGHC__ */
- #endif /* _MSDOS */
-
-
- /* string conversion functions */
- extern double atof(const char *__nptr);
- #if __HIGHC__
- extern long double _atold(const char *__nptr);
- #endif
- extern int atoi(const char *__nptr);
- extern long atol(const char *__nptr);
- extern double strtod(const char *__nptr, char **__endptr);
- extern long strtol(const char *__nptr, char **__endptr, int __base);
- extern unsigned long strtoul(const char *__nptr, char **__endptr, int __base);
-
- extern void _swab(char *__from_ptr,char *__to_ptr,int __kount);
- #if __HIGHC__
- extern void swab(char *__from_ptr,char *__to_ptr,int __kount);
- #endif
-
- #if _MSDOS && __HIGHC__
-
- #ifndef tolower
- extern int tolower(int __c);
- #endif
-
- #ifndef toupper
- extern int toupper(int __c);
- #endif
- #endif /* _MSDOS && __HIGHC__ */
-
-
- /* pseudo-random number generator */
- #if _IBMESA || (_I860 && _ATT4)
- #define RAND_MAX 32767 /* Match vendor's limited range. */
- #else
- #define RAND_MAX (sizeof(int) == 2 ? 32767 : 2147483647)
- #endif
- #define MB_CUR_MAX 1
-
- extern int rand(void);
- extern void srand(unsigned int __seed);
-
- /* memory management functions */
- extern void * calloc(size_t __nelem, size_t __size);
- extern void free(void *__ptr);
- extern void * malloc(size_t __size);
- extern void * realloc(void *__ptr, size_t __size);
-
- /* shared memory functions (not currently implemented by MetaWare) */
- extern void * _smalloc(size_t __size);
- extern void _sfree(void *__ptr);
-
- /* communication with the environment */
- extern void abort(void);
- extern int atexit(void (*func)(void));
- extern void exit(int __status);
- extern char * getenv(const char *__name);
- extern int system(const char *__string);
-
- /* number-to-string conversion routines */
- extern char * _itoa(int, char *, int);
- extern char * _ltoa(long ,char *, int);
- extern char * _ultoa(unsigned long, char *, int);
- extern char * _utoa(unsigned int, char *, int);
- extern char * _ecvt(double, int, int *, int *);
- extern char * _fcvt(double, int, int *, int *);
- extern char * _gcvt(double, int, char *);
- #if __HIGHC__
- extern char * itoa(int, char *, int);
- extern char * ltoa(long ,char *, int);
- extern char * ultoa(unsigned long, char *, int);
- extern char * utoa(unsigned int, char *, int);
- extern char * ecvt(double, int, int *, int *);
- extern char * fcvt(double, int, int *, int *);
- extern char * gcvt(double, int, char *);
- #endif
-
- extern unsigned int _rotl(unsigned int ,int );
- extern unsigned int _rotr(unsigned int ,int );
-
- #if _MSDOS || _MSNT
- extern void _exit(int __status);
- extern int _putenv(char *);
- #if __HIGHC__
- extern int putenv(char *);
- #endif
- #endif
-
- #if _MSDOS
- extern void _searchenv(char *,char *,char *);
- extern void _splitpath(char *,char *,char *,char *,char *);
- extern void _makepath(char *,char *,char *,char *,char *);
- extern unsigned long _lrotl(unsigned long ,int );
- extern unsigned long _lrotr(unsigned long ,int );
- extern unsigned short _srotl(unsigned short ,int );
- extern unsigned short _srotr(unsigned short ,int );
- extern unsigned char _crotl(unsigned char ,int );
- extern unsigned char _crotr(unsigned char ,int );
- #if __HIGHC__
- extern void perror(const char *);
- #endif
- #endif
-
-
- /* searching and sorting utilities */
- extern void * bsearch(const void *__key, const void *__base,
- size_t __nmemb, size_t __size,
- int (*__compar)(const void *, const void *));
- extern void qsort(void *__base, size_t __nmemb, size_t __size,
- int (*__compar)(const void *, const void *));
-
- /* integer arithmetic functions */
- #undef abs
- #undef labs
- extern int abs(int __j);
- extern long labs(long int __j);
-
- #if 0 /*__HIGHC__*/
- /* No longer required or desired. It causes a bogus declaration of
- * "_abs" if user subsequently declares abs or labs
- */
- #define abs(__x) _abs(__x)
- #define labs(__x) _abs(__x)
- #endif
-
- extern div_t div(int __numer, int __denom);
- extern ldiv_t ldiv(long int __numer, long int __denom);
-
- /* Multibyte character functions */
- extern int mblen(const char *__s, size_t __n);
- #define mblen( s, n ) mbtowc((wchar_t *)0, s, n)
- extern int mbtowc(wchar_t *__pwc, const char *__s, size_t __n);
- extern int wctomb(char *__s, wchar_t __wchar);
-
- /* Multibyte string functions */
- extern size_t mbstowcs(wchar_t *__pwcs, const char *__s, size_t __n);
- extern size_t wcstombs(char *__s, const wchar_t *__pwcs, size_t __n);
-
- #ifdef __CPLUSPLUS__
- }
- #endif
- #pragma pop_align_members();
- #endif /*STDLIB_H*/
-