/* Main */ void main(){ /* Init Disco Virtual */ vDisk = (virtualDisk*)malloc(sizeof(virtualDisk)); vDisk->disk = (void *)malloc(DISK_SIZE); /* Init Global Variables */ masterBootRecord * mbr = (masterBootRecord *)malloc(512); superblock = (masterBlock*)malloc(512); bitmap = (BM*)calloc(BITMAP_SIZE,1); inodemap = (IM*)calloc(INODEMAP_SIZE,1); /* Create & Init File System */ mbr = (masterBootRecord *)read_disk(vDisk->disk,0,mbr,BLOCK_SIZE,0); if ( mbr->existFS == 0 ){ init_filesystem("Chinux", mbr); }else{ load_filesystem(); } printf("mbr:%d\n",mbr->existFS); superblock = read_disk(vDisk->disk,1,superblock,BLOCK_SIZE,0); printf("name:%s\nblock:%d\nfreeBlocks:%d\nusedBlocks:%d\n",superblock->name, superblock->blockSize, superblock->freeBlocks, superblock->usedBlocks); printf("InodeSize:%d\n",sizeof(iNode)); printf("Directory:%d\n",sizeof(directoryEntry));//16 Directorios o archivos en bloques directos.. iNode * nodo = fs_creat_inode(DIRECTORY,777,512,superblock->root); fs_insert_inode(nodo); iNode * nodo3 = fs_creat_inode(DIRECTORY,737,512,superblock->root); fs_insert_inode(nodo3); //nodo->iNode_number = 20; printf("\n\nTABLA DATOS\n"); printf("inode-number:%d\n",nodo->iNode_number); printf("mode:%d\n",nodo->mode); printf("size:%d\n",nodo->size); printf("iden:%d\n",nodo->identifier); iNode * nodo2 = fs_get_inode(nodo->iNode_number); printf("inode-number:%d\n",nodo->iNode_number); printf("mode:%d\n",nodo2->mode); printf("size:%d\n",nodo2->size); printf("iden:%d\n",nodo2->identifier); insert_directory("Hola",superblock->root); //ls("asd"); makeDir("comostas"); print_directories(superblock->root); makeDir("Hola/Comocomo"); cd("Hola"); print_directories(current); }
//DONE! void ls(char * path){ int i; iNode * posible_inode = current; posible_inode = parser_path(path, posible_inode); if ( posible_inode == NULL ) { printf("Wrong name or path\n"); } else { print_directories(posible_inode); } return; }
int main(int argc, char *argv[]) { PE_FILE pe; FILE *fp = NULL; if (argc < 2) { usage(); exit(1); } parse_options(argc, argv); // opcoes if ((fp = fopen(argv[argc-1], "rb")) == NULL) EXIT_ERROR("file not found or unreadable"); pe_init(&pe, fp); // inicializa o struct pe if (!is_pe(&pe)) EXIT_ERROR("not a valid PE file"); // dos header if (config.dos || config.all_headers || config.all) { IMAGE_DOS_HEADER dos; if (pe_get_dos(&pe, &dos)) print_dos_header(&dos); else { EXIT_ERROR("unable to read DOS header"); } } // coff/file header if (config.coff || config.all_headers || config.all) { IMAGE_COFF_HEADER coff; if (pe_get_coff(&pe, &coff)) print_coff_header(&coff); else { EXIT_ERROR("unable to read COFF file header"); } } // optional header if (config.opt || config.all_headers || config.all) { if (pe_get_optional(&pe)) print_optional_header(&pe); else { EXIT_ERROR("unable to read Optional (Image) file header"); } } // directories if (config.dirs || config.all) { if (pe_get_directories(&pe)) print_directories(&pe); else { EXIT_ERROR("unable to read the Directories entry from Optional header"); } } // imports if (config.imports || config.all) { if (pe_get_directories(&pe)) print_imports(&pe); else { EXIT_ERROR("unable to read the Directories entry from Optional header"); } } // exports if (config.exports || config.all) { if (pe_get_directories(&pe)) print_exports(&pe); else { EXIT_ERROR("unable to read directories from optional header"); } } // sections if (config.all_sections || config.all) { if (pe_get_sections(&pe)) print_sections(&pe); else { EXIT_ERROR("unable to read sections"); } } // free pe_deinit(&pe); return 0; }
void ls_in_kernel(char * path) { printf("\n"); print_directories(current); }