- unsigned char *pos;
- unsigned int length;
- unsigned char unknown[5];
- char *name;
-
- pos = fw + 0x28;
- printf("Start of filesystem: 0x%08x\n", *((unsigned int*)pos));
-
- pos = fw + *((unsigned int*)pos);
-
- while (pos < (fw + len)) {
- unknown[0] = *pos; pos++;
- unknown[1] = *pos; pos++;
- unknown[2] = *pos; pos++;
- unknown[3] = *pos; pos++;
- unknown[4] = *pos; pos++;
- length = *((unsigned int*)pos);
- pos += 4;
- name = (char*)pos;
- pos += strlen(name) + 1;
-
- if ((pos + length) > (fw + len)) {
- printf("EOF reached\n");
- break;
- }
- printf("%s: unknown: %02x %02x %02x %02x %02x, length: %d",
- name, unknown[0], unknown[1], unknown[2], unknown[3],
- unknown[4], length);
+ struct file_entry *fent;
+
+ fent = get_next_file(fw, len);
+
+ while (fent) {
+ printf("%s: unknown: 0x%02x, length: %d",
+ fent->name, fent->unknown, fent->length);