Commit | Line | Data |
---|---|---|
611c3c29 SL |
1 | /* vlimit.c 4.1 83/06/20 */ |
2 | ||
3 | /* | |
4 | * (Almost) backwards compatible vlimit. | |
5 | */ | |
6 | #include <sys/resource.h> | |
7 | ||
8 | /* LIM_NORAISE is not emulated */ | |
9 | #define LIM_NORAISE 0 /* if <> 0, can't raise limits */ | |
10 | #define LIM_CPU 1 /* max secs cpu time */ | |
11 | #define LIM_FSIZE 2 /* max size of file created */ | |
12 | #define LIM_DATA 3 /* max growth of data space */ | |
13 | #define LIM_STACK 4 /* max growth of stack */ | |
14 | #define LIM_CORE 5 /* max size of ``core'' file */ | |
15 | #define LIM_MAXRSS 6 /* max desired data+stack core usage */ | |
16 | ||
17 | #define NLIMITS 6 | |
18 | ||
19 | vlimit(limit, value) | |
20 | int limit, value; | |
21 | { | |
22 | struct rlimit rlim; | |
23 | ||
24 | if (limit <= 0 || limit > NLIMITS) | |
25 | return (EINVAL); | |
26 | if (value == -1) { | |
27 | if (getrlimit(limit - 1, &rlim) < 0) | |
28 | return (-1); | |
29 | return (rlim.rlim_cur); | |
30 | } | |
31 | rlim.rlim_cur = value; | |
32 | rlim.rlim_max = RLIM_INFINITY; | |
33 | return (setrlimit(limit - 1, &rlim)); | |
34 | } |