comparison ffstools/tiffs-rd/basics.c @ 231:5ceacdbd4490

tiffs IVA: finds the root inode
author Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
date Sun, 26 Jan 2014 08:11:42 +0000
parents ffaa033e7643
children 73372cfdaf7f
comparison
equal deleted inserted replaced
230:ffaa033e7643 231:5ceacdbd4490
10 #include <stdlib.h> 10 #include <stdlib.h>
11 #include <unistd.h> 11 #include <unistd.h>
12 #include <string.h> 12 #include <string.h>
13 #include <strings.h> 13 #include <strings.h>
14 #include "types.h" 14 #include "types.h"
15 #include "globals.h"
15 16
16 u8 tiffs_header[6] = {'F', 'f', 's', '#', 0x10, 0x02}; 17 u8 tiffs_header[6] = {'F', 'f', 's', '#', 0x10, 0x02};
17 u8 blank_flash_line[16] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
18 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
19
20 extern char *imgfile;
21 extern u32 eraseblk_size;
22 extern int total_blocks;
23 extern u32 total_ffs_size;
24 extern int index_blk_num, root_node_no;
25 extern int verbose;
26
27 u8 *image, *inode_block;
28 18
29 read_ffs_image() 19 read_ffs_image()
30 { 20 {
31 int fd; 21 int fd;
32 struct stat st; 22 struct stat st;
107 continue; 97 continue;
108 } 98 }
109 switch (ptr[8]) { 99 switch (ptr[8]) {
110 case 0xAB: 100 case 0xAB:
111 if (verbose) 101 if (verbose)
112 printf( 102 fprintf(stderr,
113 "Found AB index in erase block #%d (offset %x)\n", 103 "Found AB index in erase block #%d (offset %x)\n",
114 i, ptr - image); 104 i, ptr - image);
115 index_blk_num = i; 105 index_blk_num = i;
116 inode_block = ptr; 106 inode_block = ptr;
117 abcnt++; 107 abcnt++;
141 cmd_fsinfo() 131 cmd_fsinfo()
142 { 132 {
143 read_ffs_image(); 133 read_ffs_image();
144 find_inode_block(); 134 find_inode_block();
145 printf("Active inode block (AB) is block #%d\n", index_blk_num); 135 printf("Active inode block (AB) is block #%d\n", index_blk_num);
136 alloc_inode_table();
137 find_root_inode();
138 printf("Root inode is #%x\n", root_inode);
146 exit(0); 139 exit(0);
147 } 140 }