xref: /csrg-svn/lib/libcompat/4.1/vlimit.c (revision 13218)
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 }
35