1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
|
#include <config.h>
#include <spawn.h>
#include "signature.h"
SIGNATURE_CHECK (posix_spawn_file_actions_addopen, int,
(posix_spawn_file_actions_t *, int,
const char *, int, mode_t));
#include <errno.h>
#include <fcntl.h>
#include <limits.h>
#include <unistd.h>
#include "macros.h"
static int
big_fd (void)
{
int fd = getdtablesize ();
#ifdef OPEN_MAX
if (fd < OPEN_MAX)
fd = OPEN_MAX;
#endif
return fd;
}
int
main (void)
{
posix_spawn_file_actions_t actions;
ASSERT (posix_spawn_file_actions_init (&actions) == 0);
{
errno = 0;
ASSERT (posix_spawn_file_actions_addopen (&actions, -1,
"foo", 0, O_RDONLY)
== EBADF);
}
{
int bad_fd = big_fd ();
errno = 0;
ASSERT (posix_spawn_file_actions_addopen (&actions, bad_fd,
"foo", 0, O_RDONLY)
== EBADF);
}
return 0;
}
|