int manio_read_fcount(struct manio *manio) { int ret=-1; size_t s; struct fzp *fzp=NULL; char *path=NULL; char buf[16]=""; if(!(path=get_fcount_path(manio)) || !(fzp=fzp_open(path, "rb"))) goto end; if(!fzp_gets(fzp, buf, sizeof(buf))) { logp("fzp_gets on %s failed\n", path); goto end; } s=strlen(buf); if(s!=9) { logp("data in %s is not the right length (%s!=9)\n", s); goto end; } manio->offset->fcount=strtoul(buf, NULL, 16); ret=0; end: fzp_close(&fzp); free_w(&path); return ret; }
int manio_read_fcount(struct manio *manio) { int ret=-1; size_t s; FILE *fp=NULL; char *path=NULL; char buf[16]=""; if(!(path=get_fcount_path(manio)) || !(fp=open_file(path, "rb"))) goto end; if(!fgets(buf, sizeof(buf), fp)) { logp("fgets on %s failed\n", path); goto end; } s=strlen(buf); if(s!=9) { logp("data in %s is not the right length (%s!=9)\n", s); goto end; } manio->offset.fcount=strtoul(buf, NULL, 16); ret=0; end: close_fp(&fp); free_w(&path); return ret; }
// Backup phase4 needs to know the fcount, so leave a file behind that // contains it (otherwise phase4 will have to read and sort the directory // contents). static int manio_write_fcount(struct manio *manio) { int ret=-1; struct fzp *fzp=NULL; char *path=NULL; if(!(path=get_fcount_path(manio)) || !(fzp=fzp_open(path, "wb"))) goto end; if(fzp_printf(fzp, "%08"PRIX64"\n", manio->offset->fcount)!=9) { logp("Short write when writing to %s\n", path); goto end; } ret=0; end: if(fzp_close(&fzp)) { logp("Could not close file pointer to %s\n", path); ret=-1; } free_w(&path); return ret; }
// Backup phase4 needs to know the fcount, so leave a file behind that // contains it (otherwise phase4 will have to read and sort the directory // contents). static int manio_write_fcount(struct manio *manio) { int ret=-1; FILE *fp=NULL; char *path=NULL; if(!(path=get_fcount_path(manio)) || !(fp=open_file(path, "wb"))) goto end; if(fprintf(fp, "%08"PRIX64"\n", manio->offset.fcount)!=9) { logp("Short write when writing to %s\n", path); goto end; } ret=0; end: if(close_fp(&fp)) { logp("Could not close file pointer to %s\n", path); ret=-1; } free_w(&path); return ret; }