- for (;;) {
- debug("openning \"%s\"\n", fifo_name);
- fd = open(fifo_name, O_WRONLY);
- if (fd < 0)
- fatal("Failed to open FIFO file: \"%s\". Error: %s\n",
- fifo_name,
- strerror(errno));
- debug("openned. fd: %d\n", fd);
- t = time(NULL);
- strftime(buf, MAX_LEN, opt_fmt, localtime(&t));
- r = strlen(buf);
- buf[r] = END_OF_MESSAGE;
- for (i = 0; (n = write(fd, buf + i++, 1)) && r; r--)
- ;
- if (n < 0)
- switch (errno) {
- case EPIPE:
- error("Broken pipe. Msg buf: %s\n", buf);
- break;
- default:
- fatal(
- "Failed to write to %s. "
- "Err num: %d, Err msg: %s\n",
- fifo_name,
- errno,
- strerror(errno));
- }
- if (close(fd) < 0)
- fatal("Failed to close %s. Err num: %d, Err msg: %s\n",
- fifo_name,
- errno,
- strerror(errno));
- fd = -1;
- debug("closed. fd: %d\n", fd);
- snooze(&ti);
- }
+ loop(&ti, fifo_name, buf, read_time);