diff --git a/main.c b/main.c index 6e353b9..f63897c 100644 --- a/main.c +++ b/main.c @@ -4,6 +4,21 @@ #include #include +void unpackpld(const char *buffer, struct PldHeader *pldh) { + unsigned int i = 0; + char *wbuffer = NULL; // write buffer that will change. + unsigned int wsize = 0; // size of wbuffer. + for (i; (i + 1) < (pldh -> numOffset); i++) { + printf("start: %x - end: %x\n", + pldh -> offsets[i], + pldh -> offsets[i + 1]); +/* wsize = offsets[i + 1] - offsets[i]; + wbuffer = (char*)malloc(sizeof(char) * wsize); + memcpy(wbuffer, buffer[offsets[i]], wsize); */ + } + free(wbuffer); +} + void disp_pldheader(struct PldHeader *x) { printf("number of offsets = %i\n", x -> numOffset); unsigned int i; @@ -14,8 +29,10 @@ void disp_pldheader(struct PldHeader *x) { bool read_pldheader(const char *buffer) { int32_t *n = (int32_t*)buffer; - struct PldHeader *ph = (struct PldHeader*)malloc(sizeof(struct PldHeader)); - unsigned int size_offsets = sizeof(uint32_t) * n[0]; + struct PldHeader *ph = (struct PldHeader*)malloc( + sizeof(struct PldHeader) + ); + uint32_t size_offsets = sizeof(uint32_t) * n[0]; ph -> offsets = (uint32_t*)malloc(size_offsets); if (ph -> offsets == NULL) { perror("Error 4: "); @@ -27,6 +44,7 @@ bool read_pldheader(const char *buffer) { ph -> numOffset = n[0]; memcpy(ph -> offsets, buffer + sizeof(int32_t), size_offsets); disp_pldheader(ph); + unpackpld(buffer, ph); free(ph -> offsets); free(ph); return true; @@ -65,11 +83,11 @@ bool readpld(const char *fname) { int main(int argc, char ** argv) { char *filename = argv[1]; - bool status = readpld(filename); + bool status = readpld(filename); if (status) { printf("Read OK"); } else { printf("Read not-OK"); } return 0; -} \ No newline at end of file +}