int rblk_retrieve_data(const char *datpath, struct blk *blk) { static char fulldatpath[256]=""; uint16_t datno; struct rblk *rblk; snprintf(fulldatpath, sizeof(fulldatpath), "%s/%s", datpath, uint64_to_savepathstr_with_sig_uint(blk->savepath, &datno)); if(!(rblk=get_rblk(rblks, fulldatpath))) { return -1; } // printf("lookup: %s (%s)\n", fulldatpath, cp); if(datno>rblk->readbuflen) { logp("dat index %d is greater than readbuflen: %d\n", datno, rblk->readbuflen); return -1; } blk->data=rblk->readbuf[datno].buf; blk->length=rblk->readbuf[datno].len; // printf("length: %d\n", blk->length); return 0; }
int rblk_retrieve_data(const char *datpath, struct blk *blk) { static char fulldatpath[256]=""; static struct rblk *rblks=NULL; char *cp; unsigned int datno; struct rblk *rblk; snprintf(fulldatpath, sizeof(fulldatpath), "%s/%s", datpath, bytes_to_savepathstr_with_sig(blk->savepath)); //printf("x: %s\n", fulldatpath); if(!(cp=strrchr(fulldatpath, '/'))) { logp("Could not parse data path: %s\n", fulldatpath); return -1; } *cp=0; cp++; datno=strtoul(cp, NULL, 16); //printf("y: %s\n", fulldatpath); if(!rblks && !(rblks=(struct rblk *) calloc_w(RBLK_MAX, sizeof(struct rblk), __func__))) return -1; if(!(rblk=get_rblk(rblks, fulldatpath))) { return -1; } // printf("lookup: %s (%s)\n", fulldatpath, cp); if(datno>rblk->readbuflen) { logp("dat index %d is greater than readbuflen: %d\n", datno, rblk->readbuflen); return -1; } blk->data=rblk->readbuf[datno].buf; blk->length=rblk->readbuf[datno].len; // printf("length: %d\n", blk->length); return 0; }