text: #ifndef INCLUDED_FDLOG_H
  #define INCLUDED_FDLOG_H
  #include "first.h"
  
  #include "base_decls.h"
  #include "buffer.h"
  
  typedef struct fdlog_st {
      enum { FDLOG_FILE, FDLOG_FD, FDLOG_SYSLOG, FDLOG_PIPE } mode;
      int fd;
      buffer b;
      const char *fn;
  } fdlog_st;
  
  __attribute_cold__
  __attribute_returns_nonnull__
  fdlog_st * fdlog_init (const char *fn, int fd, int mode);
  
  __attribute_cold__
  void fdlog_free (fdlog_st *fdlog);
  
  /* fdlog_maint.c */
  
  __attribute_cold__
  fdlog_st * fdlog_open (const char *fn);
  
  __attribute_cold__
  void fdlog_closeall (fdlog_st *errh);
  
  __attribute_cold__
  void fdlog_flushall (fdlog_st *errh);
  
  __attribute_cold__
  void fdlog_files_flush (fdlog_st *errh, int memrel);
  
  __attribute_cold__
  void fdlog_files_cycle (fdlog_st *errh);
  
  __attribute_cold__
  int fdlog_pipes_waitpid_cb (pid_t pid);
  
  __attribute_cold__
  void fdlog_pipes_restart (unix_time64_t ts);
  
  __attribute_cold__
  void fdlog_pipes_abandon_pids (void);
  
  __attribute_cold__
  void fdlog_pipe_serrh (int fd);
  
  #endif
  