|
|
1.1 ! root 1: /* vlimit.c 4.2 83/06/20 */ ! 2: ! 3: /* ! 4: * (Almost) backwards compatible vlimit. ! 5: */ ! 6: #include <sys/time.h> ! 7: #include <sys/resource.h> ! 8: #include <errno.h> ! 9: ! 10: /* LIM_NORAISE is not emulated */ ! 11: #define LIM_NORAISE 0 /* if <> 0, can't raise limits */ ! 12: #define LIM_CPU 1 /* max secs cpu time */ ! 13: #define LIM_FSIZE 2 /* max size of file created */ ! 14: #define LIM_DATA 3 /* max growth of data space */ ! 15: #define LIM_STACK 4 /* max growth of stack */ ! 16: #define LIM_CORE 5 /* max size of ``core'' file */ ! 17: #define LIM_MAXRSS 6 /* max desired data+stack core usage */ ! 18: ! 19: #define NLIMITS 6 ! 20: ! 21: vlimit(limit, value) ! 22: int limit, value; ! 23: { ! 24: struct rlimit rlim; ! 25: ! 26: if (limit <= 0 || limit > NLIMITS) ! 27: return (EINVAL); ! 28: if (value == -1) { ! 29: if (getrlimit(limit - 1, &rlim) < 0) ! 30: return (-1); ! 31: return (rlim.rlim_cur); ! 32: } ! 33: rlim.rlim_cur = value; ! 34: rlim.rlim_max = RLIM_INFINITY; ! 35: return (setrlimit(limit - 1, &rlim)); ! 36: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.