Imported from ../bash-3.1.tar.gz.
[platform/upstream/bash.git] / builtins / ulimit.def
index 932a6ea..8cfcd4f 100644 (file)
@@ -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");