/
driver3.2@242/autoconf/
driver3.2@242/doc/LPC/
driver3.2@242/hosts/
driver3.2@242/hosts/amiga/NetIncl/
driver3.2@242/hosts/amiga/NetIncl/netinet/
driver3.2@242/hosts/amiga/NetIncl/sys/
driver3.2@242/hosts/atari/
driver3.2@242/hosts/fcrypt/
driver3.2@242/mudlib/
driver3.2@242/mudlib/sys/
driver3.2@242/util/
driver3.2@242/util/indent/hosts/next/
driver3.2@242/util/make_docs/
#ifndef MACHINE_H
#define MACHINE_H

/*
 * How to extract an unsigned char from a char *.
 * If your compiler has the type 'unsigned char', then the cast-version
 * is best. If you do not know, use the simple version, and the game will
 * immediately terminate with a message if bad.
#define EXTRACT_UCHAR(p) (*(p) < 0 ? *(p) + 0x100 : *(p))
 */
#define EXTRACT_UCHAR(p) (*(unsigned char *)(p))

/* An integer that has the same size as a pointer */
typedef long           p_int;
typedef unsigned long  p_uint;
#define SIZEOF_P_INT (4) /* must be evaluable by the preprocessor */

/* An integer that has half the size of a pointer */
typedef short          ph_int;
typedef unsigned short ph_uint;

/* An integer that has at least the size of a pointer */
typedef long           mp_int;
typedef unsigned long  mp_uint;

/* An integer with 32 bits */
typedef long           int32;
typedef unsigned long  uint32;

/*
 * Does the system have a getrusage call?
 * On solaris, don't define this unless you link with bsd libraries.
 */
#define RUSAGE
/* If so, is it restricted to user and system time? */
#undef RUSAGE_RESTRICTED

/*
 * Undef this if your system doesn't support Berkley type symlinks.
 */
#undef SYMLINKS

/*
 * Define what ioctl to use against tty's.
 */

#if 0
#define USE_TIOCGETP            /* BSD */
#else
#define USE_TCGETA              /* SYSV */
#endif

/*
 * Some LPmuds on sun4 and sparcstations have had problems with the
 * call of inet_ntoa() in comm1.c.
 * If the game crash in query_ip_number() when using inet_ntoa(),
 * then undefine the following symbol.
 * The query_ip_number() is called when doing the 'people' command
 * for example.
 */
#define INET_NTOA_OK

/*
 * Define SYSV if you are running system V with a lower release level than
 * Sys V.4. Unless it's defined in your stdio.h.
 */

#undef SYSV

/*
 * Define FCHMOD_MISSING only if your system doesn't have fchmod().
 */

#define FCHMOD_MISSING

/*
 * USE_FCNTL_FNDELAY
 *
 * Probably due to a gcc-bug the socket_ioctl doesn't work correctly if
 * the driver is compiled using gcc-2.3.2, at least on Sparcstations.
 * #define this if your GD crashes immediatly after the
 * Setting up ipc.-message with an operation-not-allowed-on-socket-error
 */
#undef USE_FCNTL_FNDELAY

/************************************************************************/
/*      END OF CONFIG -- DO NOT ALTER ANYTHING BELOW THIS LINE          */
/************************************************************************/

#if defined(sparc)
#define MALLOC_ALIGN 8
#define MALLOC_ALIGN_8
#endif
#ifndef MALLOC_ALIGN
#define MALLOC_ALIGN 4
#endif

/* The following is needed for smalloc without SBRK_OK to use memory
 * efficiently. smalloc will malloc blocks that are a large power of
 * two, minus EXTERN_MALLOC_OVERHEAD. If you have no idea what number to
 * choose, compile & run util/overhead.c
 */
#define EXTERN_MALLOC_OVERHEAD 8

#if defined(atarist)
#ifndef NO_IP_DEMON
#define NO_IP_DEMON
#endif
#endif

#if defined(AMIGA)
#  define NO_IP_DEMON
#  ifndef AMIGA_TCP
#    undef CATCH_UDP_PORT
#    undef UDP_SEND
#  endif
#endif

#if defined(M_UNIX) || defined(linux)
#ifndef POSIX
#define POSIX
#endif
#endif

#if defined( NeXT ) || ( defined(sun) && defined(__svr4__) )
#ifndef INET_NTOA_OK
#define INET_NTOA_OK
#endif
#endif

#ifdef RUSAGE
#if !defined(solaris)
#define RUSAGE_TIME(t) ( (t).tv_sec * 1000 + (t).tv_usec / 1000 )
#else 
#define RUSAGE_TIME(t) ( (t).tv_sec * 1000 + (t).tv_nsec / 1000000 )
#endif
#else /* !RUSAGE */
#undef RUSAGE_RESTRICTED
#define RUSAGE_RESTRICTED
#ifdef POSIX

#define RUSAGE_SELF     0
struct rusage {
    long ru_utime, ru_stime;
};
#define RUSAGE_TIME(t) ( (t) * 1000 / sysconf(_SC_CLK_TCK) )

#endif /* POSIX */
#endif /* RUSAGE */

#endif /* MACHINE_H */