/* ---------------------------------------------------------------------- */
/*                   Copyright (C) 1991 by NatЃrlich!                  */
/*                      This file is copyrighted!                         */
/*                Refer to the documentation for details.                 */
/* ---------------------------------------------------------------------- */
#ifndef _XOSBIND_
# define _XOSBIND_

/* might be wrong this stuff */
# if OS == UNIX
#  ifdef SUN
#   undef NMALLOC_H
#   define NMALLOC_H "nmalloc.sun"
#   define CLK_TCK   16667
#   include <string.h>
#  endif
#  include <sys/types.h>
#  include <unistd.h>                 /* only needed for crlf155 */
#  include <sys/stat.h>
#  include <fcntl.h>

#  define OPEN_W                      1
#  define OPEN_R                      0
#  define OPEN_RW                     2            /* this is a guess */
#  define CREAT_RW                    0664         /* is that rite ? */

#  define DIRSLASH                    '/'
#  define Xtolower( x)                x
#  define LOWERFILE                   0
#  define Cconws( a)                  fputs( a, stdout)
#  define Fread( fd, len, buf)        read( fd, (void *) (buf), len)
#  define Fwrite( fd, len, buf)       write( fd, (void *) (buf), len)
#  define Fopen( pathname, mode)      open( pathname, mode)
#  define Fkreate( pathname, mode)    creat( pathname, 0664)
#  define Fseek( offset, fd, mode)    lseek( fd, (off_t) offset, mode)
#  define Fclose( fd)                 close( fd)
#  define Fdelete( file)              unlink( file)
#  define Bconout( dev, what)       { putchar( (char) (what));fflush( stdout); }
#  define Random()                    (rand() & 0xFF)
#  define Malloc( size)               malloc( size)
#  define Mfree( p)                   free( p)
# endif


# if OS == MSDOS
#  include <sys\types.h>
#  include <sys\stat.h>
#  include <fcntl.h>
#  include <io.h>
#  include <alloc.h>
#  include <dos.h>
#  include <dir.h>

#  define OPEN_W                      O_WRONLY
#  define OPEN_R                      O_RDONLY
#  define OPEN_RW                     O_RDWR
#  define CREAT_RW                    0

#  define DIRSLASH                    '\\'
#  define Xtolower( x)                x
#  define LOWERFILE                   1
#  define Cconws( a)                  fputs( a, stdout)
#  define Fread( fd, len, buf)        x_read( fd, (void huge *) (buf), (lword) (len))
#  define Fwrite( fd, len, buf)       x_write( fd, (void huge *) (buf), (lword) (len))
#  define Fopen( pathname, mode)      _open( pathname, mode)
#  define Fkreate( pathname, mode)    _creat( pathname, 0) /* ?? */
#  define Fseek( offset, fd, mode)    lseek( fd, (long) (offset), mode)
#  define Fclose( fd)                 _close( fd)
#  define Fdelete( file)              unlink( file)
#  define Bconout( dev, what)       { putchar( (char) (what));fflush( stdout); }
#  define Malloc( size)               malloc( size)
#  define Mfree( p)                   free( p)
#  define malloc( bytes)              farmalloc( (unsigned long) (bytes))
#  define memset( p, val, size)       x_memset( (char huge *) (p), val, size)
#  define memcpy( p, q, i)     x_memcpy( (char huge *) (p), (char huge *) (q), i)
#  if __TCPLUSPLUS__
#   define Random()                   (rand() & 0xFF)
#   define off_t                      slword
#  else
#   define Random()                   random( 0x100)
#  endif
# endif

# if OS == AMIGA   /* just guessing here of course */
#  define OPEN_W                      1
#  define OPEN_R                      0
#  define OPEN_RW                     2
#  define CREAT_RW                    'unknown'

#  define DIRSLASH                    '/'
#  define Xtolower( x)                x
#  define LOWERFILE                   0

#  define Cconws( a)                  fputs( a, stdout)
#  define Fread( fd, len, buf)        read( fd, (char *) (buf), len)
#  define Fwrite( fd, len, buf)       write( fd, (char *) (buf), len)
#  define Fopen( pathname, mode)      open( pathname, mode)
#  define Fkreate( pathname, mode)    creat( pathname, mode)
#  define Fseek( offset, fd, mode)    lseek( fd, (off_t) (offset), mode)
#  define Fclose( fd)                 close( fd)
#  define Fdelete( file)              unlink( file)
#  define Bconout( dev, what)         putchar( (char) (what))
#  define Random()                    (rand() & 0xFF)
#  define Malloc( size)               malloc( size)
#  define Mfree( p)                   free( p)
#  define sleep( x)                   Delay( (x) * 50)
# endif


# if OS == UNKNOWN  /* just guessing here of course */

#  define OPEN_W                      1
#  define OPEN_R                      0
#  define OPEN_RW                     2
#  define CREAT_RW                    'unknown'
#  define DIRSLASH                    '/'
#  define Xtolower( x)                x
#  define LOWERFILE                   0

#  define Cconws( a)                  fputs( a, stdout)
#  define Fread( fd, len, buf)        read( fd, (char *) (buf), len)
#  define Fwrite( fd, len, buf)       write( fd, (char *) (buf), len)
#  define Fopen( pathname, mode)      open( pathname, mode)
#  define Fkreate( pathname, mode)    creat( pathname, mode)
#  define Fseek( offset, fd, mode)    lseek( fd, (off_t) (offset), mode)
#  define Fclose( fd)                 close( fd)
#  define Fdelete( file)              unlink( file)
#  define Bconout( dev, what)         putchar( (char) (what))
#  define Random()                    (rand() & 0xFF)
#  define Malloc( size)               malloc( size)
#  define Mfree( p)                   free( p)
# endif

#endif