Rank: Advanced Member
Groups: Registered
Joined: 8/23/2014(UTC) Posts: 144  Location: Northern Germany & Lincolnshire, U.K. Thanks: 2 times Was thanked: 10 time(s) in 10 post(s)
|
well, but that's the only valid approach, like so: Code: struct arbitrary_readf { unsigned char *buf ; unsigned char *cur ; SQInteger len ; };
SQInteger sqarbitrary_read(SQUserPointer fstr,SQUserPointer buf,SQInteger size) { arbitrary_readf *blk=(arbitrary_readf*)fstr ; if (blk->len < size) size= blk->len ; blk->len -= size ; memcpy(buf,blk->cur,size) ; blk->cur += size ; return size ; }
SQInteger readbuffer(HSQUIRRELVM v,void *ptr,SInteger size) { arbitrary_readf tmp; tmp.buf=tmp.cur=(unsigned char*)ptr ; tmp.len=size ; return SQ_SUCCEEDED(sq_readclosure(v,sqarbitrary_read,(SQUserPointer)&tmp))) }
|