rendered paste bodyparseaux.h
==========
#ifndef PARSEAUX_H_INCLUDED
#define PARSEAUX_H_INCLUDED
char *read_string(char **pptr);
unsigned short read_ushort(char **ptr);
unsigned char read_uchar(char **ptr);
int read_uchar(char **ptr);
#endif
parseaux.c
==========
#include <stdlib.h>
#include <string.h>
#include "parseaux.h"
char *read_string(char **pptr)
{
char *ptr = *pptr;
unsigned char slen = 0;
// Read string length
slen = *((unsigned char *) ptr);
ptr += sizeof(unsigned char);
// Read string data
char *str = (char *) malloc(slen + 1);
memcpy(str, ptr, slen);
str[slen] = '\0';
// Move pointer ahead
*pptr = ptr;
}
unsigned short read_ushort(char **ptr)
{
unsigned short dummy = *((unsigned short *) (*ptr));
(*ptr) += sizeof(unsigned short);
return dummy;
}
unsigned char read_uchar(char **ptr)
{
unsigned char dummy = *((unsigned char *) (*ptr));
(*ptr) += sizeof(unsigned char);
return dummy;
}
int read_uchar(char **ptr)
{
int dummy = *((int *) (*ptr));
(*ptr) += sizeof(int);
return dummy;
}