int main(int argc, char* argv[]) { char fileName[] = "dir/test"; char** tokens; printf("fileName=[%s]\n\n", fileName); tokens = str_split(fileName, '/'); if (tokens) { int i; for (i = 0; *(tokens + i); i++) { printf("fileName=[%s]\n", *(tokens + i)); free(*(tokens + i)); } printf("\n"); free(tokens); } int i = 0; //int j = 0; int fd = readFile("example.img"); if (fd < 0) { printf("ERROR: SRG YOU ARE IN TROUBLE!"); return -1; } checkpoint* sb = readCheckPoint(fd); if (sb == NULL) { printf("ERROR: SRG YOU ARE IN TROUBLE!"); return -1; } //printCheckPoint(sb); int firstIMapAddress = sb->iMapPtr[0]; inodeMap* first_iMap = readFirstIMap(fd, firstIMapAddress); if (first_iMap == NULL) { printf("ERROR: SRG YOU ARE IN TROUBLE!"); return -1; } printInodeMap(first_iMap); // 0th inode is root! inode* rootInode = getRootInode(fd, first_iMap->inodePtr[0]); printf("\n ****** SRG: ROOT INODE\n\n"); printInode(rootInode); for (i = 0; i < 14; i++) { /*if (rootInode->ptr[i] == -1) { continue; }*/ dirEnt* oneDirEnt; oneDirEnt = (dirEnt*) (malloc(sizeof(dirEnt))); if (lseek(fd, rootInode->ptr[i], SEEK_SET) < 0) { //printf("ERROR: lseek failed\n"); } if (read(fd, oneDirEnt, sizeof(dirEnt)) < 0) { printf("\tERROR: dirEnt cast failed\n"); } if (oneDirEnt->inum == -1) { break; } printf("\n\t\t [inum = %d] %s", oneDirEnt->inum, oneDirEnt->name); } printf("\n"); return 0; }
void printDisk(){ int i, test; diskFD = open(file,O_RDONLY); //if(diskFD<0) MFS_Ckpt ckptregion; MFS_Imap_Piece imapP1; MFS_Inode root_inode; MFS_DirEnt_t rootParentDir, rootDir; MFS_Dir_Block rootDirBlock; test = read(diskFD,&ckptregion, sizeof(ckptregion)); test += read(diskFD,&imapP1, sizeof(imapP1)); test += read(diskFD,&root_inode, sizeof(root_inode)); printf("test is |%d|\n", test); test += read(diskFD,&rootDirBlock, sizeof(rootDirBlock)); // MFS_Dir_Block DirBlock; //memLoad(); //lseek(diskFD, inodeMap.inodes[1],0); //read(diskFD, &DirBlock, sizeof(DirBlock)); printf(" sizeof(rootDirBlock): |%d|\n", (int)sizeof(rootDirBlock) ); rootParentDir = rootDirBlock.dirEntries[0]; rootDir = rootDirBlock.dirEntries[1]; printf("num Bytes read: |%d|\n", test); printf("endlog: |%d|\n", ckptregion.endLog); printf("\nBegin ckpt print Imap"); for(i = 0; i < 10; i++ ){ printf("ckptregion.imapPiecePtrs[%d]: %d\n",i, ckptregion.imapPiecePtrs[i]); } printf("\nEnd ckpt print Imap"); printf("\nBegin print ImapP1"); for(i = 0; i < 16; i++ ){ printf("imapP1.imapPtrs[%d]: %d\n",i, imapP1.imapPtrs[i]); } printf("\nEnd ckpt print ImapP1"); printf("\nBegin print root inode"); printf("\nroot inode type:|%d|" , root_inode.stats.type); printf("\nroot inode size:|%d|" , root_inode.stats.size); for(i = 0; i < 14; i++ ){ printf("root_inode.blockPtrs[%d]: %d\n",i, root_inode.blockPtrs[i]); } printf("\nEnd print root inode"); printf("\nBegin print rootDirBlock\n"); for(i = 0; i < 128; i++ ){ printf(" rootDirBlock.dirEntries[%d].name: %s\n",i, rootDirBlock.dirEntries[i].name); printf(" rootDirBlock.dirEntries[%d].inum: %d\n",i, rootDirBlock.dirEntries[i].inum); } printf("\nEnd print rootDirBlock"); printInodeMap(15); /* MFS_Inode newInode; printf("\ninodeMap.inodes[1]: %d",inodeMap.inodes[1] ); lseek(diskFD, inodeMap.inodes[1],0); read(diskFD, &newInode, sizeof(newInode)); printInode(&newInode); MFS_Dir_Block dirBlock; // printf("\n[1]: %d",inodeMap.inodes[1] ); lseek(diskFD,newInode.blockPtrs[0],0); read(diskFD, &dirBlock, sizeof(dirBlock)); printDirBlock(&dirBlock); */ //printDirBlock(&DirBlock); close(diskFD); }