- strftime(buf, sizeof(buf), opt_fmt, localtime(&t));
- puts(buf);
- fflush(stdout);
+ 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);