#ifndef _CH_LIMIS_H_
#define _CH_LIMIS_H_

#define MB_LEN_MAX         6       /* 31-bit UTF-8 */

#define ARG_MAX                 65536   /* max bytes for an exec function */
#ifndef CHILD_MAX
#define CHILD_MAX                  40   /* max simultaneous processes */   
#endif
#define LINK_MAX                32767   /* max file link count */
#define LOGIN_NAME_MAX     17   /* max login name length (incl. NUL) */   
#define MAX_CANON                 255   /* max bytes in term canon input line */
#define MAX_INPUT                 255   /* max bytes in terminal input */
#define NAME_MAX                  255   /* max bytes in a file name */
#define NGROUPS_MAX                16   /* max supplemental group id's */
#ifndef OPEN_MAX
#define OPEN_MAX                   64   /* max open files per process */
#endif
#define PATH_MAX                 1024   /* max bytes in pathname */
#define PIPE_BUF                  512   /* max bytes for atomic pipe writes */
#define IOV_MAX                  1024   /* max elements in i/o vector */
 
/*
 * All POSIX systems must support the following values
 * A system may support less restrictive values
 */

#define _POSIX_ARG_MAX          4096
#define _POSIX_CHILD_MAX        25
#define _POSIX_LINK_MAX         8 
#define _POSIX_MAX_CANON        255  
#define _POSIX_MAX_INPUT        255 
#define _POSIX_NAME_MAX         14
#define _POSIX_NGROUPS_MAX      8  
#define _POSIX_OPEN_MAX         20   
#define _POSIX_PATH_MAX         256
#define _POSIX_PIPE_BUF         512  
#define _POSIX_SSIZE_MAX        32767
#define _POSIX_STREAM_MAX       8
#define _POSIX_TZNAME_MAX       6

#define BC_BASE_MAX                99   /* max ibase/obase values in bc(1) */
#define BC_DIM_MAX               2048   /* max array elements in bc(1) */
#define BC_SCALE_MAX               99   /* max scale value in bc(1) */
#define BC_STRING_MAX            1000   /* max const string length in bc(1) */
#define COLL_WEIGHTS_MAX            0   /* max weights for order keyword */
#define EXPR_NEST_MAX              32   /* max expressions nested in expr(1) */
#define LINE_MAX                 2048   /* max bytes in an input line */
#define RE_DUP_MAX                255   /* max RE's in interval notation */

#define _POSIX2_BC_BASE_MAX     99
#define _POSIX2_BC_DIM_MAX      2048
#define _POSIX2_BC_SCALE_MAX    99
#define _POSIX2_BC_STRING_MAX   1000
#define _POSIX2_EQUIV_CLASS_MAX 2
#define _POSIX2_EXPR_NEST_MAX   32
#define _POSIX2_LINE_MAX        2048
#define _POSIX2_RE_DUP_MAX      255

#define _POSIX_AIO_LISTIO_MAX   16
#define _POSIX_AIO_MAX          1
#define _POSIX_DELAYTIMER_MAX   32
#define _POSIX_MQ_OPEN_MAX      8
#define _POSIX_MQ_PRIO_MAX      32
#define _POSIX_RTSIG_MAX        8
#define _POSIX_SEM_NSEMS_MAX    256
#define _POSIX_SEM_VALUE_MAX    32767
#define _POSIX_SIGQUEUE_MAX     32
#define _POSIX_TIMER_MAX        32

#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4
#define _POSIX_THREAD_KEYS_MAX  128
#define _POSIX_THREAD_THREADS_MAX 64

#define _POSIX_HOST_NAME_MAX    255
#define _POSIX_LOGIN_NAME_MAX   9
#define _POSIX_SS_REPL_MAX      4
#define _POSIX_SYMLINK_MAX      255
#define _POSIX_SYMLOOP_MAX      8 
#define _POSIX_TRACE_EVENT_NAME_MAX 30
#define _POSIX_TRACE_NAME_MAX   8 
#define _POSIX_TRACE_SYS_MAX    8   
#define _POSIX_TRACE_USER_EVENT_MAX 32
#define _POSIX_TTY_NAME_MAX     9 
#define _POSIX2_CHARCLASS_NAME_MAX 14
#define _POSIX2_COLL_WEIGHTS_MAX 2 

#define _POSIX_RE_DUP_MAX       _POSIX2_RE_DUP_MAX

#define _XOPEN_IOV_MAX          16
#define _XOPEN_NAME_MAX         255
#define _XOPEN_PATH_MAX         1024
#define PASS_MAX                128     /* _PASSWORD_LEN from <pwd.h> */

#define NL_ARGMAX               99      /* max # of position args for printf */
#define NL_LANGMAX              31      /* max LANG name length */
#define NL_MSGMAX               32767
#define NL_NMAX                 1
#define NL_SETMAX               255
#define NL_TEXTMAX              2048

#endif
