Fix building under Solaris.
[asterisk/asterisk.git] / res / res_limit.c
index 4db463d..d8fe851 100644 (file)
  *
  */
 
+/*! \file
+ *
+ * \brief Resource limits
+ *
+ * \author Tilghman Lesher <res_limit_200607@the-tilghman.com>
+ */
+
+
 #include "asterisk.h"
 
 #include <stdio.h>
 #include "asterisk/module.h"
 #include "asterisk/cli.h"
 
+/* Find proper rlimit for virtual memory */
+#ifdef RLIMIT_AS
+#define VMEM_DEF RLIMIT_AS
+#else
+#ifdef RLIMIT_VMEM
+#define VMEM_DEF RLIMIT_VMEM
+#endif
+#endif
+
 static struct limits {
        int resource;
        char limit[3];
@@ -37,14 +54,15 @@ static struct limits {
        { RLIMIT_CORE, "-c", "core file size" },
 #ifdef RLIMIT_RSS
        { RLIMIT_RSS, "-m", "resident memory" },
-       { RLIMIT_NPROC, "-u", "number of processes" },
        { RLIMIT_MEMLOCK, "-l", "amount of memory locked into RAM" },
 #endif
+#ifdef RLIMIT_NPROC
+       { RLIMIT_NPROC, "-u", "number of processes" },
+#endif
        { RLIMIT_NOFILE, "-n", "number of file descriptors" },
-#ifndef RLIMIT_AS      /* *BSD use RLIMIT_VMEM */
-#define        RLIMIT_AS       RLIMIT_VMEM
+#ifdef VMEM_DEF
+       { VMEM_DEF, "-v", "virtual memory" },
 #endif
-       { RLIMIT_AS, "-v", "virtual memory" },
 };
 
 static int str2limit(const char *string)
@@ -91,7 +109,11 @@ static int my_ulimit(int fd, int argc, char **argv)
 
                if (argc == 3) {
                        int x;
+#ifdef RLIMIT_NPROC
                        if (resource != RLIMIT_NOFILE && resource != RLIMIT_CORE && resource != RLIMIT_NPROC && resource != RLIMIT_FSIZE) {
+#else
+                         if (resource != RLIMIT_NOFILE && resource != RLIMIT_CORE && resource != RLIMIT_FSIZE) {
+#endif
                                ast_cli(fd, "Resource not permitted to be set\n");
                                return RESULT_FAILURE;
                        }
@@ -143,7 +165,9 @@ static const char ulimit_usage[] =
 "         -s  Process stack size [readonly]\n"
 "         -t  CPU usage [readonly]\n"
 "         -u  Child processes\n"
+#ifdef VMEM_DEF
 "         -v  Process virtual memory [readonly]\n"
+#endif
 "         -c  Core dump file size\n"
 "         -n  Number of file descriptors\n";