#include #include #include #include #include #include #include "utils.h" #include "filter.h" #include "parse.h" void *filter(char number, uint8_t * src, uint32_t srclen, void *dest, unsigned long *destlen) { switch (number) { case FLATEDECODE: return flatedecode(dest, destlen, src, srclen); /*case DCTDECODE: return dctdecode(); */ case HEXDECODE: return asciihexdecode(dest, src, srclen); /*case DECODE85: return ascii85decode(); */ } return NULL; } void *asciihexdecode(void *dest, uint8_t * src, int srclen) { char *decode = (char *) xmalloc(srclen + 2); decode[0] = '<'; strncpy(decode + 1, (char *) src, srclen); decode[srclen + 1] = '>'; dest = (void *) hex(decode); return dest; } /* char *ascii85decode(char *encoded) { return; } */ void *flatedecode(Bytef * dest, uLong * destlen, Bytef * src, uLong srclen) { int i; i = uncompress(dest, destlen, src, srclen); switch (i) { case Z_OK: return dest; case Z_MEM_ERROR: fprintf(stderr, "Not enough memory!\n"); break; case Z_BUF_ERROR: fprintf(stderr, "Not enough room in output buffer!\n"); break; case Z_DATA_ERROR: fprintf(stderr, "Input buffer is corrupted!\n"); } abort(); } void *dctdecode(void) { return NULL; } /* char *lzwdecode(char *encoded) { return; }*/