Exemplo n.º 1
0
Arquivo: rblk.c Projeto: EmisFR/burp
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;
}
Exemplo n.º 2
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;
}