#include <stdio.h>
#include <string.h>
#include <assert.h>
+#include <fcntl.h>
+#include <unistd.h>
#include <sys/poll.h>
#include <sys/types.h>
#include <sys/time.h>
extern void *safe_malloc(size_t size, const char *message);
extern void *safe_malloc_ary(size_t size, size_t count, const char *message);
+void setcloexec(int fd); /* cannot fail */
+void pipe_cloexec(int fd[2]); /* pipe(), setcloexec() twice; cannot fail */
+
extern int sys_cmd(const char *file, const char *argc, ...);
extern uint64_t now_global;
comm_notify_fn *fn);
typedef bool_t comm_sendmsg_fn(void *commst, struct buffer_if *buf,
const struct comm_addr *dest);
+ /* Only returns false if (we know that) the local network
+ * environment is such that this address cannot work; transient
+ * or unknown/unexpected failures return true. */
typedef const char *comm_addr_to_string_fn(void *commst,
const struct comm_addr *ca);
/* Returned string is in a static buffer. */