Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int read_packet(void *opaque, uint8_t *buf, int buf_size) {
- BufferContext *pBufferCtx = (BufferContext*) opaque;
- void* inputBufferAddress = pBufferCtx->pBufferAddress;
- int inputBufferSize = pBufferCtx->iBufferSize;
- int inputBytesRead = pBufferCtx->iBytesRead; //bytes already read
- int outputBytesRead = 0; //bytes read this f'n call
- //bufferPointer pBufferCtx = (bufferPointer)h->priv_data; //pretending priv_data is a buffer
- REFERENCE_VAR(buf); //what does this do? Left over from original read_buffer f'n
- //the rest of this is a mess. Sorry :(
- if (buf_size >= inputBufferSize) {
- if (inputBytesRead > 0) {
- memcpy(buf, inputBufferAddress + inputBytesRead,inputBufferSize - inputBytesRead);
- outputBytesRead = inputBufferSize - inputBytesRead;
- } else { // inputBytesRead == 0
- memcpy(buf, inputBufferAddress, inputBufferSize);
- outputBytesRead = inputBufferSize;
- }
- } else { // buf_min_size < inputBufferSize
- if (inputBytesRead > 0) {
- if (buf_size >= inputBufferSize - inputBytesRead) {
- memcpy(buf, inputBufferAddress + inputBytesRead, inputBufferSize - inputBytesRead);
- outputBytesRead = inputBufferSize - inputBytesRead;//
- }
- else { // buf_min_size < inputBufferSize - inputBytesRead
- memcpy(buf, inputBufferAddress + inputBytesRead, buf_size );
- outputBytesRead = buf_size;
- }
- } else {
- memcpy(buf, inputBufferAddress, inputBufferSize);
- outputBytesRead = buf_size;
- }
- }
- pBufferCtx->iBytesRead += outputBytesRead;
- if(pBufferCtx->iBytesRead > pBufferCtx->iBufferSize)
- exit(-1);
- return outputBytesRead;
- }
Add Comment
Please, Sign In to add comment