X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fgldecoder.c;h=f61e327aa92a9217a589ebb8f7174680f8125a7c;hb=03c86c2f632b642aa94f721e326787e91aa69c25;hp=93a525876c64c4b033bb92cd6f770239fcbc2dd9;hpb=9d1825d591a7261b1cff620ba535d333352984bf;p=gldbg.git diff --git a/source/gldecoder.c b/source/gldecoder.c index 93a5258..f61e327 100644 --- a/source/gldecoder.c +++ b/source/gldecoder.c @@ -9,6 +9,12 @@ Distributed under the GPL #include #include "functions.h" #include "gldecoder.h" +#include "tmpalloc.h" + +static unsigned read_short(short *, const char *); +static unsigned read_int(int *, const char *); +static int decode_func(GlDecoder *, unsigned short, const char *); +static int decode_gldfunc(GlDecoder *, unsigned short, const char *); GlDecoder *gldecoder_new(void *user_data, void (*destroy)(void *)) { @@ -29,72 +35,129 @@ void gldecoder_delete(GlDecoder *dec) free(dec); } -unsigned read_char(char *v, const char *data, unsigned len) +int gldecoder_decode(GlDecoder *dec, const char *data, unsigned len) +{ + unsigned pos = 0; + unsigned pktlen; + unsigned short func; + int ret; + + if(lengldError) + dec->gldError(dec->user_data, code); + return pos; +} + +static int decode_gldfunc(GlDecoder *dec, unsigned short func, const char *data) +{ + switch(func) + { + case FUNC_GLDERROR: return decode_gldError(dec, data); + default: return -1; + } +}