#include <errno.h>
#include <sys/types.h>
#include <sys/wait.h>
+#include <sys/time.h>
+#include <sys/resource.h>
#include <unistd.h>
#include "test.h"
va_list ap;
if (failed == 0 && nfailed == 0)
- dprintf(1, "FAIL\n", n);
+ dprintf(1, "FAIL\n");
failed = 1;
dprintf(1, " ERROR %s %s:%d: ", name, n, l);
va_start(ap, s);
va_end(ap);
}
+static void setrl(int r, long lim) {
+ struct rlimit rl;
+
+ if (getrlimit(r, &rl))
+ error("getrlimit %d: %s\n", r, strerror(errno));
+ rl.rlim_cur = lim;
+ if (setrlimit(r, &rl))
+ error("setrlimit %d: %s\n", r, strerror(errno));
+}
+
static void run(const char *n, void (*f)()) {
pid_t pid;
int s;
pid = fork();
if (pid == 0) {
/* run test in a child process */
+ setrl(RLIMIT_STACK, 1<<16);
+ setrl(RLIMIT_CPU, 2);
f();
exit(failed);
}