Changeset 2366419 in thomson
- Timestamp:
- Mar 20, 2016, 10:03:34 PM (8 years ago)
- Branches:
- main
- Children:
- 15d3e8a
- Parents:
- f7d1bc3
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
tools/binxploder.cpp
rf7d1bc3 r2366419 13 13 int main(int argc, char* argv[]) 14 14 { 15 if (argc < 2) 15 bool listOnly = false; 16 17 if (argc < 2 || strcmp(argv[1], "--help") == 0) 16 18 { 17 fprintf(stderr, "%s file.bin\n", argv[0]); 19 fprintf(stderr, 20 "%s file.bin [-l]\n(-l: list only, don't write sections)\n", 21 argv[0]); 18 22 return 1; 19 23 } 24 25 if (argc > 2) 26 listOnly = true; // FIXME use getopt or something 20 27 21 28 FILE* f1, * f2; 22 29 uint8_t i = 0; 23 30 DECB_Chunk h; 31 char* buf = NULL; 24 32 25 33 f1 = fopen(argv[1], "rb"); 26 char* buf = (char*)malloc(strlen(argv[1] + 3)); 34 35 if (f1 < 0) 36 { 37 perror("Could not open input file"); 38 exit(-1); 39 } 40 41 if (!listOnly) 42 buf = (char*)malloc(strlen(argv[1] + 3)); 27 43 28 44 while(DECB_ReadChunk(f1, h)) 29 45 { 30 printf("Type: %02x - Size: %04x - Load: %04x\n", h.type, h.length, h.addr); 46 printf("Type: %02x - Size: %04x - %s: %04x\n", h.type, h.length, 47 h.type == 0xFF ? "Exec" : "Load", h.addr); 31 48 32 sprintf(buf, "%s.%02x", argv[1], i++); 33 f2 = fopen(buf, "wb"); 49 if (!listOnly) 50 { 51 sprintf(buf, "%s.%02x", argv[1], i++); 52 f2 = fopen(buf, "wb"); 34 53 35 fwrite(&h.data[0], h.length, 1, f2);54 fwrite(&h.data[0], h.length, 1, f2); 36 55 37 fclose(f2); 56 fclose(f2); 57 } 38 58 } 39 59 40 60 free(buf); 41 42 61 fclose(f1); 43 44 62 return 0; 45 63 }
Note:
See TracChangeset
for help on using the changeset viewer.