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; }
static int flag_wrap_str_zp(struct bu *bu, uint16_t flag, const char *field, const char *logfile) { int ret=-1; struct fzp *fzp=NULL; if(!flag_matches(bu, flag) || !logfile || strcmp(logfile, field)) return 0; if(!(fzp=open_backup_log(bu, logfile))) goto end; if(yajl_gen_str_w(field)) goto end; if(yajl_array_open_w()) goto end; if(fzp) { char *cp=NULL; char buf[1024]=""; while(fzp_gets(fzp, buf, sizeof(buf))) { if((cp=strrchr(buf, '\n'))) *cp='\0'; if(yajl_gen_str_w(buf)) goto end; } } if(yajl_array_close_w()) goto end; ret=0; end: fzp_close(&fzp); return ret; }
static char *get_ca_dir(struct conf **confs) { struct fzp *fzp=NULL; char buf[4096]=""; const char *ca_conf=get_string(confs[OPT_CA_CONF]); if(!(fzp=fzp_open(ca_conf, "r"))) goto end; while(fzp_gets(fzp, buf, sizeof(buf))) { char *field=NULL; char *value=NULL; if(conf_get_pair(buf, &field, &value) || !field || !value) continue; if(!strcasecmp(field, "CA_DIR")) { if(!(gca_dir=strdup_w(value, __func__))) goto end; break; } } end: fzp_close(&fzp); return gca_dir; }