/* * $Revision: 1.1 $ * * * Here be declarations of routines and variables in the C library. * You * must #include and before this file. */ #if defined(DO_HAVE_UNISTD) #include #endif /* defined(DO_HAVE_UNISTD) */ #if defined(DO_HAVE_VFORK) #include #endif /* defined(DO_HAVE_VFORK) */ /* Generic pointer, used by memcpy, malloc, etc. */ /* =()@ *POINTER;>()= */ typedef char *POINTER; /* What is a file offset? Will not work unless long! */ /* =()@ OFFSET_T;>()= */ typedef long OFFSET_T; /* What is the type of an object size? */ /* =()@ SIZE_T;>()= */ typedef int SIZE_T; /* What is the type of a passwd uid and gid, for use in chown(2)? */ /* =()@ UID_T;>()= */ typedef int UID_T; /* =()@ GID_T;>()= */ typedef int GID_T; /* =()@ PID_T;>()= */ typedef int PID_T; /* What should a signal handler return? */ /* =()<#define SIGHANDLER @@>()= */ #define SIGHANDLER void #if defined(SIG_DFL) /* What types of variables can be modified in a signal handler? */ /* =()@ SIGVAR;>()= */ typedef int SIGVAR; #endif /* defined(SIG_DFL) */ /* =()<#include @@>()= */ #include /* =()<#include @@>()= */ #include /* * * 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 #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 @@>()= */ #define FREEVAL int #include #include #include #include #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 , but not in some system string headers, so we put * it here just in case. */ extern int strncasecmp(); /* =()@ abort();>()= */ extern int abort(); /* =()@ alarm();>()= */ extern int alarm(); /* =()@ exit();>()= */ extern void exit(); /* =()@ getpid();>()= */ extern int getpid(); /* =()@ lseek();>()= */ extern off_t lseek(); /* =()@ qsort();>()= */ extern int qsort(); /* =()@ sleep();>()= */ extern int sleep(); /* =()@ _exit();>()= */ extern int _exit(); #endif