int manio_close(struct manio **manio) { int ret=0; // int fd; if(!manio || !*manio) return ret; if(sort_and_write_hooks_and_dindex(*manio)) ret=-1; /* There is no gzfileno() if((fd=fzp_fileno((*manio)->fzp))<0) { logp("Could not get fileno in %s for %s: %s\n", __func__, (*manio)->manifest, strerror(errno)); ret=-1; } if(fsync(fd)) { logp("Error in fsync in %s for %s: %s\n", __func__, (*manio)->manifest, strerror(errno)); ret=-1; } */ if(fzp_close(&((*manio)->fzp))) ret=-1; sync(); manio_free_content(*manio); free_v((void **)manio); return ret; }
int manio_free(struct manio **manio) { int ret=0; if(!manio || !*manio) return ret; if(manio_free_content(*manio)) ret=-1; free_v((void **)manio); return ret; }
static int manio_init(struct manio *manio, const char *directory, const char *mode) { if(manio_free_content(manio)) return -1; if(!(manio->directory=strdup_w(directory, __func__))) return -1; if(manio_set_mode(manio, mode)) return -1; manio_set_protocol(manio, PROTO_2); return 0; }