diff options
Diffstat (limited to 'builtins/ulimit.def')
-rw-r--r-- | builtins/ulimit.def | 37 |
1 files changed, 27 insertions, 10 deletions
diff --git a/builtins/ulimit.def b/builtins/ulimit.def index 932a6ea4..8cfcd4fd 100644 --- a/builtins/ulimit.def +++ b/builtins/ulimit.def @@ -1,7 +1,7 @@ This file is ulimit.def, from which is created ulimit.c. It implements the builtin "ulimit" in Bash. -Copyright (C) 1987-2003 Free Software Foundation, Inc. +Copyright (C) 1987-2005 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -24,7 +24,7 @@ $PRODUCES ulimit.c $BUILTIN ulimit $FUNCTION ulimit_builtin $DEPENDS_ON !_MINIX -$SHORT_DOC ulimit [-SHacdflmnpstuv] [limit] +$SHORT_DOC ulimit [-SHacdfilmnpqstuvx] [limit] Ulimit provides control over the resources available to processes started by the shell, on systems that allow such control. If an option is given, it is interpreted as follows: @@ -35,14 +35,17 @@ option is given, it is interpreted as follows: -c the maximum size of core files created -d the maximum size of a process's data segment -f the maximum size of files created by the shell + -i the maximum number of pending signals -l the maximum size a process may lock into memory -m the maximum resident set size -n the maximum number of open file descriptors -p the pipe buffer size + -q the maximum number of bytes in POSIX message queues -s the maximum stack size -t the maximum amount of cpu time in seconds -u the maximum number of user processes - -v the size of virtual memory + -v the size of virtual memory + -x the maximum number of file locks If LIMIT is given, it is the new value of the specified resource; the special LIMIT values `soft', `hard', and `unlimited' stand for @@ -200,6 +203,9 @@ static RESOURCE_LIMITS limits[] = { { 'd', RLIMIT_DATA, 1024, "data seg size", "kbytes" }, #endif { 'f', RLIMIT_FILESIZE, 1024, "file size", "blocks" }, +#ifdef RLIMIT_SIGPENDING + { 'i', RLIMIT_SIGPENDING, 1, "pending signals", (char *)NULL }, +#endif #ifdef RLIMIT_MEMLOCK { 'l', RLIMIT_MEMLOCK, 1024, "max locked memory", "kbytes" }, #endif @@ -208,6 +214,9 @@ static RESOURCE_LIMITS limits[] = { #endif /* RLIMIT_RSS */ { 'n', RLIMIT_OPENFILES, 1, "open files", (char *)NULL}, { 'p', RLIMIT_PIPESIZE, 512, "pipe size", "512 bytes" }, +#ifdef RLIMIT_MSGQUEUE + { 'q', RLIMIT_MSGQUEUE, 1, "POSIX message queues", "bytes" }, +#endif #ifdef RLIMIT_STACK { 's', RLIMIT_STACK, 1024, "stack size", "kbytes" }, #endif @@ -221,6 +230,9 @@ static RESOURCE_LIMITS limits[] = { #ifdef RLIMIT_SWAP { 'w', RLIMIT_SWAP, 1024, "swap size", "kbytes" }, #endif +#ifdef RLIMIT_LOCKS + { 'x', RLIMIT_LOCKS, 1, "file locks", (char *)NULL }, +#endif { -1, -1, -1, (char *)NULL, (char *)NULL } }; #define NCMDS (sizeof(limits) / sizeof(limits[0])) @@ -605,14 +617,19 @@ pipesize (valuep) *valuep = (RLIMTYPE) PIPE_BUF; return 0; #else -# if defined (PIPESIZE) +# if defined (_POSIX_PIPE_BUF) + *valuep = (RLIMTYPE) _POSIX_PIPE_BUF; + return 0; +# else +# if defined (PIPESIZE) /* This is defined by running a program from the Makefile. */ *valuep = (RLIMTYPE) PIPESIZE; return 0; -# else +# else errno = EINVAL; return -1; -# endif /* PIPESIZE */ +# endif /* PIPESIZE */ +# endif /* _POSIX_PIPE_BUF */ #endif /* PIPE_BUF */ } @@ -647,11 +664,11 @@ print_all_limits (mode) for (i = 0; limits[i].option > 0; i++) { - if (get_limit (i, &softlim, &hardlim) < 0) + if (get_limit (i, &softlim, &hardlim) == 0) + printone (i, (mode & LIMIT_SOFT) ? softlim : hardlim, 1); + else if (errno != EINVAL) builtin_error ("%s: cannot get limit: %s", limits[i].description, strerror (errno)); - else - printone (i, (mode & LIMIT_SOFT) ? softlim : hardlim, 1); } } @@ -670,7 +687,7 @@ printone (limind, curlim, pdesc) else sprintf (unitstr, "(-%c) ", limits[limind].option); - printf ("%-18s %16s", limits[limind].description, unitstr); + printf ("%-20s %16s", limits[limind].description, unitstr); } if (curlim == RLIM_INFINITY) puts ("unlimited"); |