58 int fifo_trigger(
const char *service,
const char *buf, ssize_t len,
int timeout)
61 const char *myname =
"fifo_trigger";
77 if ((fp =
safe_open(service, O_WRONLY | O_NONBLOCK, 0,
78 (
struct stat *) 0, -1, -1, why)) == 0) {
91 msg_warn(
"%s: write %s: %m", myname, service);
98 msg_warn(
"%s: close %s: %m", myname, service);
114 #define TEST_FIFO "test-fifo"
119 static void cleanup(
void)
125 static void handler(
int sig)
127 msg_fatal(
"got signal %d after %d triggers %d wakeups",
128 sig, trig_count, wakeup_count);
131 static void read_event(
int unused_event,
char *context)
138 if (read(fd, &ch, 1) != 1)
142 int main(
int unused_argc,
char **unused_argv)
149 signal(SIGINT, handler);
150 signal(SIGALRM, handler);
void event_enable_read(int fd, EVENT_NOTIFY_RDWR_FN callback, void *context)
#define CAST_ANY_PTR_TO_INT(cptr)
int main(int argc, char **argv)
#define CAST_INT_TO_VOID_PTR(ival)
int vstream_fclose(VSTREAM *stream)
void event_loop(int delay)
void msg_warn(const char *fmt,...)
VSTRING * vstring_alloc(ssize_t len)
NORETURN msg_fatal(const char *fmt,...)
int fifo_listen(const char *path, int permissions, int block_mode)
int non_blocking(int, int)
VSTREAM * safe_open(const char *path, int flags, mode_t mode, struct stat *st, uid_t user, gid_t group, VSTRING *why)
int fifo_trigger(const char *service, const char *buf, ssize_t len, int timeout)
#define vstream_fileno(vp)
MSG_CLEANUP_FN msg_cleanup(MSG_CLEANUP_FN cleanup_fn)
ssize_t write_buf(int, const char *, ssize_t, int)
void msg_info(const char *fmt,...)