#ifndef _LIMITS_H
#define _LIMITS_H
/**
*
* The following symbols are specified in the ANSI C standard as limit
* values for various non-float characteristics.
*
* AMENDMENT HISTORY
* ~~~~~~~~~~~~~~~~~
*   31 Dec 93   DJW   - Make definition of CHAR_MIN and CHAR_MAX dependent
*                       on whether we have signed characters or not.  Default
*                       is still signed.
*
*   19 Nov 94   DJW   - Added a number of new POSIX mandated constants.
**/

#define CHAR_BIT    8           /* bits per char                    */
#define SCHAR_MAX   127         /* max value for signed char        */
#define SCHAR_MIN (-SCHAR_MAX-1)/* min value for signed char        */
#define UCHAR_MAX   255         /* max value for unsigned char      */
#ifdef __CHAR_UNSIGNED__
#define CHAR_MAX    UCHAR_MAX   /* max value for char               */
#define CHAR_MIN    0           /* min value for char               */
#else
#define CHAR_MAX    SCHAR_MAX   /* max value for char               */
#define CHAR_MIN    SCHAR_MIN   /* min value for char               */
#endif /* _UNSIGNED_CHAR */
#define MB_LEN_MAX  1           /* bytes in multi0-byte characters  */
#define SHRT_MAX    32767       /* max value for short int          */
#define SHRT_MIN  (-SHRT_MAX-1) /* min value for short int          */
#define USHRT_MAX   65535       /* max value for unsigned short int */
#define INT_MAX     2147483647  /* max value for int                */
#define INT_MIN   (-INT_MAX-1)  /* min value for int                */
#define UINT_MAX    4294967295  /* max value for unsigned int       */
#define LONG_MAX    2147483647  /* max value for long int           */
#define LONG_MIN  (-LONG_MAX-1) /* min value for long int           */
                                /*  NOTE that it is very important  */
                                /* that LONG_MIN is defined as above*/
                                /* and not as -2147483648 because   */
                                /* under ANSI the constant part is  */
                                /* evaluated before the minus is    */
                                /* applied.  A constant of this size*/
                                /* is unsigned which has all sorts  */
                                /* of unfortunate consequences. When*/
                                /* written as above it is instead a */
                                /* expression which gives the result*/
                                /* that would be expected.          */
#ifdef __STDC__
#define ULONG_MAX   4294967295UL /* max value for unsigned long int  */
#else
#define ULONG_MAX   4294967295  /* max value for unsigned long int  */
#endif

#define _POSIX_ARG_MAX      4096
#define _POSIX_CHILD_MAX    6
#define _POSIX_LINK_MAX     8
#define _POSIX_MAX_CANON    255
#define _POSIX_MAX_INPUT    255
#define _POSIX_NAME_MAX     14
#define _POSIX_NGROUPS_MAX  0
#define _POSIX_OPEN_MAX     16
#define _POSIX_PATH_MAX     255
#define _POSIXPIPE_BUF      512

#define ARG_MAX         _POSIX_ARG_MAX
#define CHILD_MAX       255
#define LINK_MAX        _POSIX_LINK_MAX
#define MAX_CANON       _POSIX_MAX_CANON
#define MAX_INPUT       _POSIX_MAX_INPUT
#define NAME_MAX        34
#define OPEN_MAX        254
#define PASS_MAX        8
#define PATH_MAX        34
#define PIPE_BUF        _POSIX_PIPE_BUF

#define NGROUPS_MAX     0

#define NL_ARGMAX       9
#define NL_LANGMAX      14
#define NL_MSGMAX       32767
#define NL_NMAX         32767
#define NL_SETMAX       255
#define NL_TEXTMAX      255
#define NZERO           32
#ifndef TMP_MAX
#define TMP_MAX         (0xffff)
#endif

/**
*
* The following symbols are specific to QDOS
*
**/
/*
 * Maximum length of QDOS file name
 */
#define MAXNAMELEN 50

#endif /* _LIMITS_H */

