Blob Blame History Raw
#include <string.h>
#include <errno.h>
#include <sys/resource.h>
#include "test.h"

int t_setrlim(int r, long lim)
{
	struct rlimit rl;

	if (getrlimit(r, &rl)) {
		t_error("getrlimit %d: %s\n", r, strerror(errno));
		return -1;
	}
	if (lim > rl.rlim_max)
		return -1;
	if (lim == rl.rlim_max && lim == rl.rlim_cur)
		return 0;
	rl.rlim_max = lim;
	rl.rlim_cur = lim;
	if (setrlimit(r, &rl)) {
		t_error("setrlimit(%d, %ld): %s\n", r, lim, strerror(errno));
		return -1;
	}
	return 0;
}