/* Main header.
   Rick Smereka, Copyright (C) 1992-2002.

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 2 of the License, or
   (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, get a copy via the Internet at
   http://gnu.org/copyleft/gpl.html or write to the Free Software
   Foundation, Inc., 59 Temple Place, Suite 330, Boston,
   MA 02111-1307 USA

   You can contact the author via email at rsmereka@future-lab.com.

   Original DOS version Jan/92, Rick Smereka

   Ported to 32bit Windows under CodeWarrior V4.
   Dec/98, Rick Smereka

   Ported to HP-UX under GNU C 2.8.1.
   Jan/99, Rick Smereka

   Ported to Red Hat Linux 5.2, Jul/99, Rick Smereka

   Added include of 'bios.h' for DOS platform, Oct/99,
   Rick Smereka

   Added define 'HAS_STRICMP' to control definition and
   compilation of the functions 'stricmp' and 'strnicmp'
   Apr/2000, Rick Smereka

   Added include of 'string' in the case of a C++ compiler and
   changed include of 'iostream.h' to 'iostream'. Aug/2000,
   Rick Smereka

   Add include of 'dirent.h' for POSIX directory processing along
   with 'sys/stat.h' for the POSIX 'stat' function. Feb/2001,
   Rick Smereka

   Removed definitions of the QNX OS. If compiling for QNX,
   define 'OS_UNIX' along with an appropriate
   'SUB_PLATFORM_STRING'. The 'IPC_' defines now control
   compilation for sockets ('IPC_TCP') or QNX message
   passing ('IPC_QNX'). Sep/2001, Rick Smereka

   Ported to Debian Linux. Nov/2002, Rick Smereka */

#ifndef STDHEAD_HXX
#define STDHEAD_HXX
#include <stdio.h>     /* standard I/O */

#ifdef __cplusplus
#include <iostream>    /* C++ stream I/O */
#include <iomanip>     /* other C++ stream stuff */
#include <new>         /* C++ defs for 'new' and 'set_new_handler' */
#include <string>      /* C++ string class */
#endif

#include <stdlib.h>    /* miscellanous definitions */
#include <stdarg.h>    /* header for variable function arguments */
#include <string.h>    /* standard string manipulation */
#include <ctype.h>     /* stardard character identification */
#include <fcntl.h>     /* ditto */
#include <time.h>      /* time functions */
#include <limits.h>    /* datatype limits */
#include <errno.h>     /* 'errno' processing */
#include <dirent.h>    /* POSIX directory processing */
#include <sys/stat.h>  /* 'stat' function defines */

/* Various defines */

#define LNULL (0L)        /* long null constant */
/* #define EOF (-1) */    /* standard end of file */
#define TAB 9             /* tab character */
#define FA_NORMAL 0x00    /* normal file attribute */
#define EOLL 13           /* ASCII 'end of line' */
#define EOS '\0'          /* end of string marker */
#define EOL 10            /* end of line marker in batch file */
#define ALL "*.*"         /* directory global search */
#define TRUE 1            /* logic flags */
#define FALSE 0           /* ditto */
#define ESC 27            /* ASCII ESC */
#define BACKSP 8          /* ASCII backspace */

/* platform specific defines */

/* one line from the following group of
   supported OS's should be uncommented
   based on the OS that the program will
   run under */

#define OS_DOS 1
/* #define OS_WIN32 1 */
/* #define OS_UNIX 1 */
/* #define OS_MAC 1 */

/* path separator and switch
   character based on platform */

#ifdef OS_DOS
#define PATH_SEP '\\'
#define SWITCH_CHAR '/'
#define PLATFORM_STRING "DOS"
#endif

#ifdef OS_WIN32
#define PATH_SEP '\\'
#define SWITCH_CHAR '/'
#define PLATFORM_STRING "32bit Windows"
#endif

#ifdef OS_UNIX
#define PATH_SEP '/'
#define SWITCH_CHAR '-'
#define PLATFORM_STRING "Unix"

/* since there are many flavors of Unix,
   I have added a sub-platform string
   that can be quite specific, just uncomment
   one of the following or add your own
   once the port is solid */

/* #define SUB_PLATFORM_STRING "HP-UX" */
/* #define SUB_PLATFORM_STRING "AIX" */
/* #define SUB_PLATFORM_STRING "Solaris" */
/* #define SUB_PLATFORM_STRING "Linux" */
/* #define SUB_PLATFORM_STRING "QNX" */

/* Undefine one of Unix OS's below or create one.
   These are used for Unix OS specific code (which
   should not be very often) */

/* #define OS_UNIX_REDHAT_LINUX 1 */
/* #define OS_UNIX_HPUX 1 */
/* #define OS_UNIX_SOLARIS 1 */
/* #define OS_UNIX_AIX 1 */
/* #define OS_UNIX_IRIX */
#endif

#ifdef OS_MAC
#define PATH_SEP ':'
#define SWITCH_CHAR '-'
#define PLATFORM_STRING "Mac"
#endif

/* one line from the following group of
   supported interprocess communication
   methods (IPC) should be uncommented
   based on the IPC that the program will
   run under */

/* #define IPC_TCP 1 */
/* #define IPC_QNX 1 */

/* include files specific to non-Unix systems */

#ifndef OS_UNIX
#include <process.h>   /* child process control */
#include <conio.h>     /* console I/O */
#endif

/* include files specific to Unix systems */

#ifdef OS_UNIX
#include <unistd.h>

/* QNX message passing specific files */

#ifdef OS_QNX_4X
#include <sys/name.h>  /* process name server */
#include <sys/vc.h>    /* virtual circuits */
#include <sys/kernel.h> /* send/receive/reply */
#endif
#endif

/* include files specific to DOS */

#ifdef OS_DOS
#include <io.h>
#include <dos.h>
#include <dir.h>
#include <bios.h>
#endif

/* if your compiler has 'stricmp' and 'strnicmp'
   functions built into its library (these are
   not standard ANSI), activate the next define */

#define HAS_STRICMP 1

/* Custom enhanced library include files */

#include "enhlib.h"    /* enhanced library functions */

/* global multiuser switch used for any compiler
   that cannot be supplied with a compiler define
   directive like CodeWarrior */

/* #define MULTIUSER 1 */
#endif
