tests: build fix for OpenBSD.
[oweals/dinit.git] / src / tests / test-bpsys.cc
1 #include <vector>
2 #include <utility>
3 #include <algorithm>
4
5 #include <cstdlib>
6
7 #include "baseproc-sys.h"
8
9 static std::vector<bool> usedfds = {true, true, true};
10
11 // Allocate a file descriptor
12 static int allocfd()
13 {
14     auto f = std::find(usedfds.begin(), usedfds.end(), false);
15     if (f == usedfds.end()) {
16         int r = usedfds.size();
17         usedfds.push_back(true);
18         return r;
19     }
20
21     *f = true;
22     return f - usedfds.begin();
23 }
24
25 namespace bp_sys {
26
27 int last_sig_sent = -1; // last signal number sent, accessible for tests.
28 pid_t last_forked_pid = 1;  // last forked process id (incremented each 'fork')
29
30 int pipe2(int fds[2], int flags)
31 {
32     fds[0] = allocfd();
33     fds[1] = allocfd();
34     return 0;
35 }
36
37 int close(int fd)
38 {
39     if (size_t(fd) >= usedfds.size()) abort();
40
41     usedfds[fd] = false;
42     return 0;
43 }
44
45 int kill(pid_t pid, int sig)
46 {
47     last_sig_sent = sig;
48     return 0;
49 }
50
51 }