blob: 4d0a9b1cadeac2e6b34543548cf2426556a90c7d [file] [log] [blame]
#ifndef PORT_H
#define PORT_H
/*
* int32 should be defined as the most economical sized integer capable of
* holding a 32 bit quantity
* int16 should be similarly defined
*/
/* XXX hack */
#ifndef MACHDEP_INCLUDED
#define MACHDEP_INCLUDED
#ifdef vax
typedef int int32;
typedef short int16;
#else
/* Ansi-C promises that these definitions should always work */
typedef long int32;
typedef int int16;
#endif /* vax */
#endif /* MACHDEP_INCLUDED */
#ifndef __STDC__
#ifndef __DATE__
#ifdef CUR_DATE
#define __DATE__ CUR_DATE
#else
#define __DATE__ "unknown-date"
#endif /* CUR_DATE */
#endif /* __DATE__ */
#ifndef __TIME__
#ifdef CUR_TIME
#define __TIME__ CUR_TIME
#else
#define __TIME__ "unknown-time"
#endif /* CUR_TIME */
#endif /* __TIME__ */
#endif /* __STDC__ */
#ifdef sun386
#define PORTAR
#endif
#include <stdio.h>
#include <ctype.h>
#include <sys/types.h>
#undef HUGE
#include <math.h>
#include <signal.h>
#if defined(ultrix) && defined(SIGLOST)
#define ultrix3
#else
#define ultrix2
#endif
#if defined(ultrix3) && defined(mips)
extern double rint();
extern double trunc();
#endif
#if defined(sun) && defined(FD_SETSIZE)
#define sunos4
#else
#define sunos3
#endif
#if defined(sequent) || defined(news800)
#define LACK_SYS5
#endif
#if defined(ultrix3) || defined(sunos4)
#define SIGNAL_FN void
#else
/* sequent, ultrix2, 4.3BSD (vax, hp), sunos3 */
#define SIGNAL_FN int
#endif
/* Some systems have 'fixed' certain functions which used to be int */
#if defined(ultrix) || defined(SABER) || defined(hpux) || defined(aiws) || defined(apollo) || defined(__STDC__)
#define VOID_HACK void
#else
#define VOID_HACK int
#endif
#ifndef NULL
#define NULL 0
#endif /* NULL */
/*
* CHARBITS should be defined only if the compiler lacks "unsigned char".
* It should be a mask, e.g. 0377 for an 8-bit machine.
*/
#ifndef CHARBITS
# define UNSCHAR(c) ((unsigned char)(c))
#else
# define UNSCHAR(c) ((c)&CHARBITS)
#endif
#define SIZET int
#ifdef __STDC__
#define CONST const
#define VOIDSTAR void *
#else
#define CONST
#define VOIDSTAR char *
#endif /* __STDC__ */
/* Some machines fail to define some functions in stdio.h */
#ifndef __STDC__
extern FILE *popen(), *tmpfile();
extern int pclose();
#ifndef clearerr /* is a macro on many machines, but not all */
extern VOID_HACK clearerr();
#endif /* clearerr */
#ifndef rewind
extern VOID_HACK rewind();
#endif /* rewind */
#endif /* __STDC__ */
/* most machines don't give us a header file for these */
#ifdef __STDC__
#include <stdlib.h>
#else
#ifdef hpux
extern int abort();
extern void free(), exit(), perror();
#else
extern VOID_HACK abort(), free(), exit(), perror();
#endif /* hpux */
extern char *getenv(), *malloc(), *realloc(), *calloc();
#ifdef aiws
extern int sprintf();
#else
extern char *sprintf();
#endif
extern int system();
extern double atof();
extern long atol();
extern int sscanf();
#endif /* __STDC__ */
/* some call it strings.h, some call it string.h; others, also have memory.h */
#ifdef __STDC__
#include <string.h>
#else
/* ANSI C string.h -- 1/11/88 Draft Standard */
extern char *strcpy(), *strncpy(), *strcat(), *strncat(), *strerror();
extern char *strpbrk(), *strtok(), *strchr(), *strrchr(), *strstr();
extern int strcoll(), strxfrm(), strncmp(), strlen(), strspn(), strcspn();
extern char *memmove(), *memccpy(), *memchr(), *memcpy(), *memset();
extern int memcmp(), strcmp();
#endif /* __STDC__ */
#ifdef lint
#undef putc /* correct lint '_flsbuf' bug */
#endif /* lint */
/* a few extras */
extern VOID_HACK srandom();
extern long random();
#if defined(ultrix3)
extern unsigned sleep();
#else
extern VOID_HACK sleep();
#endif
/* assertion macro */
#ifndef assert
#ifdef __STDC__
#include <assert.h>
#else
#ifndef NDEBUG
#define assert(ex) {\
if (! (ex)) {\
(void) fprintf(stderr, "Assertion failed: file %s, line %d\n",\
__FILE__, __LINE__);\
(void) fflush(stdout);\
abort();\
}\
}
#else
#define assert(ex) {;}
#endif
#endif
#endif
/* handle the various limits */
#if defined(__STDC__) || defined(POSIX)
#include <limits.h>
#else
#define USHRT_MAX (~ (unsigned short int) 0)
#define UINT_MAX (~ (unsigned int) 0)
#define ULONG_MAX (~ (unsigned long int) 0)
#define SHRT_MAX ((short int) (USHRT_MAX >> 1))
#define INT_MAX ((int) (UINT_MAX >> 1))
#define LONG_MAX ((long int) (ULONG_MAX >> 1))
#endif
#endif /* PORT_H */