/*
 * $Revision: 1.1 $ *
 * 
 *  Here be declarations of routines and variables in the C library. *  You
 * must #include <sys/types.h> and <stdio.h> before this file.
 */

#if	defined(DO_HAVE_UNISTD)
#include <unistd.h>
#endif				/* defined(DO_HAVE_UNISTD) */

#if	defined(DO_HAVE_VFORK)
#include <vfork.h>
#endif				/* defined(DO_HAVE_VFORK) */

/* Generic pointer, used by memcpy, malloc, etc. */
/* =()<typedef @<POINTER>@ *POINTER;>()= */
typedef char   *POINTER;
/* What is a file offset?  Will not work unless long! */
/* =()<typedef @<OFFSET_T>@ OFFSET_T;>()= */
typedef long    OFFSET_T;
/* What is the type of an object size? */
/* =()<typedef @<SIZE_T>@ SIZE_T;>()= */
typedef int     SIZE_T;
/* What is the type of a passwd uid and gid, for use in chown(2)? */
/* =()<typedef @<UID_T>@ UID_T;>()= */
typedef int     UID_T;
/* =()<typedef @<GID_T>@ GID_T;>()= */
typedef int     GID_T;
/* =()<typedef @<PID_T>@ PID_T;>()= */
typedef int     PID_T;
/* What should a signal handler return? */
/* =()<#define SIGHANDLER	@<SIGHANDLER>@>()= */
#define SIGHANDLER	void

#if	defined(SIG_DFL)
/* What types of variables can be modified in a signal handler? */
/* =()<typedef @<SIGVAR>@ SIGVAR;>()= */
typedef int     SIGVAR;
#endif				/* defined(SIG_DFL) */

/* =()<#include @<STR_HEADER>@>()= */
#include <string.h>
/* =()<#include @<MEM_HEADER>@>()= */
#include <memory.h>


/*
 * *  It's a pity we have to go through these contortions, for broken *
 * systems that have fd_set but not the FD_SET.
 */
#if	defined(FD_SETSIZE)
#define FDSET		fd_set
#else
#include <sys/param.h>
#if	!defined(NOFILE)
error--
#define NOFILE to the number of files allowed on your machine!
#endif				/* !defined(NOFILE) */
#if	!defined(howmany)
#define howmany(x, y)	(((x) + ((y) - 1)) / (y))
#endif				/* !defined(howmany) */
#define FD_SETSIZE	NOFILE
#define NFDBITS		(sizeof (long) * 8)
typedef struct _FDSET {
    long            fds_bits[howmany(FD_SETSIZE, NFDBITS)];
}               FDSET;
#define FD_SET(n, p)	(p)->fds_bits[(n) / NFDBITS] |= (1 << ((n) % NFDBITS))
#define FD_CLR(n, p)	(p)->fds_bits[(n) / NFDBITS] &= ~(1 << ((n) % NFDBITS))
#define FD_ISSET(n, p)	((p)->fds_bits[(n) / NFDBITS] & (1 << ((n) % NFDBITS)))
#define FD_ZERO(p)	(void)memset((POINTER)(p), 0, sizeof *(p))
#endif				/* defined(FD_SETSIZE) */


#if	!defined(SEEK_SET)
#define SEEK_SET	0
#endif				/* !defined(SEEK_SET) */
#if	!defined(SEEK_END)
#define SEEK_END	2
#endif				/* !defined(SEEK_END) */

/*
 * *  We must use #define to set FREEVAL, since "typedef void FREEVAL;"
 * doesn't *  work on some broken compilers, sigh.
 */
/* =()<#define FREEVAL @<FREEVAL>@>()= */
#define FREEVAL int

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#if 0				/* old style, use stdio, stdlib, unistd,
				 * string now */
extern int      optind;
extern char    *optarg;
#if	!defined(__STDC__)
extern int      errno;
#endif				/* !defined(__STDC__) */

extern char    *getenv();
extern char    *inet_ntoa();
extern char    *mktemp();
#if	!defined(strerror)
extern char    *strerror();
#endif				/* !defined(strerror) */
extern long     atol();
extern time_t   time();
extern unsigned long inet_addr();
extern FREEVAL  free();
extern POINTER  malloc();
extern POINTER  realloc();
#if	defined(ACT_MMAP)
extern char    *mmap();
#endif				/* defined(ACT_MMAP) */

/* Some backward systems need this. */
extern FILE    *popen();

/*
 * This is in <mystring.h>, but not in some system string headers, so we put
 * it here just in case.
 */
extern int      strncasecmp();

/* =()<extern @<ABORTVAL>@	abort();>()= */
extern int      abort();
/* =()<extern @<ALARMVAL>@	alarm();>()= */
extern int      alarm();
/* =()<extern @<EXITVAL>@	exit();>()= */
extern void     exit();
/* =()<extern @<GETPIDVAL>@	getpid();>()= */
extern int      getpid();
/* =()<extern @<LSEEKVAL>@	lseek();>()= */
extern off_t    lseek();
/* =()<extern @<QSORTVAL>@	qsort();>()= */
extern int      qsort();
/* =()<extern @<SLEEPVAL>@	sleep();>()= */
extern int      sleep();
/* =()<extern @<_EXITVAL>@	_exit();>()= */
extern int      _exit();
#endif
