void fifolog_write_close(struct fifolog_writer *f) { time_t now; CHECK_OBJ_NOTNULL(f, FIFOLOG_WRITER_MAGIC); fifolog_write_assert(f); f->cleanup = 1; time(&now); fifolog_write_gzip(f, now); fifolog_write_assert(f); fifolog_int_close(&f->ff); free(f->ff); }
const char * fifolog_int_open(struct fifolog_file **ff, const char *fname, int mode) { struct fifolog_file fs, *f; const char *retval; int e; f = &fs; memset(f, 0, sizeof *f); f->fd = -1; retval = fifolog_int_open_i(f, fname, mode); e = errno; if (retval == NULL) { *ff = malloc(sizeof *f); if (*ff != NULL) { memcpy(*ff, f, sizeof *f); (*ff)->magic = FIFOLOG_FILE_MAGIC; return (retval); } } fifolog_int_close(&f); errno = e; return (retval); }