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.
 
 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.
 
 
 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
 $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:
 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
     -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
     -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
     -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
 
 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" },
   { '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
 #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" },
 #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
 #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_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]))
   { -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
   *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;
   /* This is defined by running a program from the Makefile. */
   *valuep = (RLIMTYPE) PIPESIZE;
   return 0;
-#  else
+#    else
   errno = EINVAL;
   return -1;  
   errno = EINVAL;
   return -1;  
-#  endif /* PIPESIZE */
+#    endif /* PIPESIZE */
+#  endif /* _POSIX_PIPE_BUF */
 #endif /* PIPE_BUF */
 }
 
 #endif /* PIPE_BUF */
 }
 
@@ -647,11 +664,11 @@ print_all_limits (mode)
 
   for (i = 0; limits[i].option > 0; i++)
     {
 
   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));
        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);
 
       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");
     }
   if (curlim == RLIM_INFINITY)
     puts ("unlimited");