summaryrefslogblamecommitdiffstats
path: root/innbbsd/clibrary.h
blob: 92ec82e018e6f7ea82db772d007b00aed50a97b1 (plain) (tree)


































































































































                                                                               
/*  $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

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();