Example #1
0
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;

}
Example #2
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);
}