Disk manager updated
This commit is contained in:
1 parent
2e68d085e9
commit
ea451cd47e
6 files changed
+63
-37
No files matched your search
BIN
Binary file not shown.
+48
-37
@@ -1,42 +1,35 @@
|
|||||||
#include "lsfs_disk_controller.h"
|
#include <sys/stat.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include "lsfs_disk_controller.h"
|
||||||
|
|
||||||
|
|
||||||
static int disk_is_loaded = 0;
|
static int disk_is_loaded = 0;
|
||||||
static char loaded_disk_name[256];
|
static char loaded_disk_name[256];
|
||||||
static char input_buffer[256];
|
static char input_buffer[256];
|
||||||
|
|
||||||
#if 0
|
int dmu_print_file(char *path) {
|
||||||
typedef struct sector_data
|
|
||||||
{
|
|
||||||
char data[SECTOR_SIZE];
|
|
||||||
} sector_data;
|
|
||||||
|
|
||||||
int dmu_print_file(lsfs_file_id fileID) {
|
|
||||||
printf("\n|-----------------Meta Information For File-----------------|\n");
|
printf("\n|-----------------Meta Information For File-----------------|\n");
|
||||||
mif* mif_data = calloc(1, SECTOR_SIZE);
|
|
||||||
read_data_from_disk(fileID, mif_data);
|
lsfs_file *file = calloc(1, sizeof(lsfs_file));
|
||||||
printf("File ID: %lu\n", fileID);
|
lsfs_disk_getattr(file, path);
|
||||||
printf("Filename: %s\n", mif_data->filename);
|
|
||||||
printf("Owner id: %d\n", mif_data->owner_id);
|
|
||||||
printf("Tags (id):");
|
|
||||||
for (int i = 0; i < MAX_TAGS_IN_TAG_TABLE; ++i)
|
|
||||||
{
|
|
||||||
if(mif_data->tags[i] == 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
printf("%lu\n", mif_data->tags[i]);
|
|
||||||
|
|
||||||
}
|
|
||||||
printf("Control_bits: %d\n", mif_data->control_bits);
|
printf("File ID: %lu\n", file->file_id);
|
||||||
printf("Creation date: %lu\n", mif_data->creation_date);
|
printf("Filename: %s\n", file->filename);
|
||||||
printf("Last modified: %lu\n", mif_data->last_modification_data);
|
printf("File size: %s\n", file->size);
|
||||||
printf("Last accessed: %lu\n", mif_data->last_access_date);
|
printf("Entry kind: %d", file->entry_kind);
|
||||||
|
printf("Index in directory table: %d", file->table_entry_pointer);
|
||||||
|
printf("Sector index on disk: %lu\n", file->table_entry_sector_index);
|
||||||
printf("\nData pointers:\n");
|
printf("\nData pointers:\n");
|
||||||
printf("%lu\n", mif_data->one_level_pointer_data[0]);
|
for (int i = 0; i < NUM_DATA_POINTERS; ++i)
|
||||||
printf("%lu\n", mif_data->one_level_pointer_data[1]);
|
{
|
||||||
printf("%lu\n", mif_data->one_level_pointer_data[2]);
|
printf("%lu\n", file->data_pointer[i]);
|
||||||
|
}
|
||||||
|
/*
|
||||||
printf("\n|-------------------------File Data-------------------------|\n");
|
printf("\n|-------------------------File Data-------------------------|\n");
|
||||||
char* file_data = calloc(MAX_NUM_ONE_LEVEL_DATA, SECTOR_SIZE);
|
char* file_data = calloc(MAX_NUM_ONE_LEVEL_DATA, SECTOR_SIZE);
|
||||||
int size_of_data = 0;
|
int size_of_data = 0;
|
||||||
@@ -55,9 +48,17 @@ int dmu_print_file(lsfs_file_id fileID) {
|
|||||||
size_of_data -= SECTOR_SIZE;
|
size_of_data -= SECTOR_SIZE;
|
||||||
}
|
}
|
||||||
printf("\n|---------------------End File Data-------------------------|\n");
|
printf("\n|---------------------End File Data-------------------------|\n");
|
||||||
|
*/
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
typedef struct sector_data
|
||||||
|
{
|
||||||
|
char data[SECTOR_SIZE];
|
||||||
|
} sector_data;
|
||||||
|
|
||||||
|
|
||||||
int dmu_install_SingOS(char* disk_name) {
|
int dmu_install_SingOS(char* disk_name) {
|
||||||
disk = fopen ( disk_name , "r+b" );
|
disk = fopen ( disk_name , "r+b" );
|
||||||
p_control.fsci = malloc(sizeof(FSCI));
|
p_control.fsci = malloc(sizeof(FSCI));
|
||||||
@@ -145,6 +146,11 @@ int dmu_install_bootloader(char* disk_name) {
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int dmu_install_vbr(char* disk_name) {
|
||||||
|
lsfs_disk_install_vbr(disk_name);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
int dmu_print_mtt(char *path) {
|
int dmu_print_mtt(char *path) {
|
||||||
Directory_Table *directory_table;
|
Directory_Table *directory_table;
|
||||||
if (strcmp(path, "/") != 0)
|
if (strcmp(path, "/") != 0)
|
||||||
@@ -217,16 +223,28 @@ int main (int argc, char *argv[])
|
|||||||
dmu_load_file_system(loaded_disk_name);
|
dmu_load_file_system(loaded_disk_name);
|
||||||
}
|
}
|
||||||
else if(strcmp(chose, "i") == 0) {
|
else if(strcmp(chose, "i") == 0) {
|
||||||
printf("\nLoad disk\nEnter filename:\n");
|
printf("\nInstall Bootloader\nEnter filename:\n");
|
||||||
scanf("%s", input_buffer);
|
scanf("%s", input_buffer);
|
||||||
dmu_install_bootloader(input_buffer);
|
dmu_install_bootloader(input_buffer);
|
||||||
}
|
}
|
||||||
|
else if(strcmp(chose, "v") == 0) {
|
||||||
|
printf("\nInstall VBR\nEnter filename:\n");
|
||||||
|
scanf("%s", input_buffer);
|
||||||
|
dmu_install_vbr(input_buffer);
|
||||||
|
}
|
||||||
else if(strcmp(chose, "1") == 0) {
|
else if(strcmp(chose, "1") == 0) {
|
||||||
// Print Directory:
|
// Print Directory:
|
||||||
printf("Enter Directory:\n");
|
printf("Enter Directory:\n");
|
||||||
scanf("%s", input_buffer);
|
scanf("%s", input_buffer);
|
||||||
dmu_print_mtt(input_buffer);
|
dmu_print_mtt(input_buffer);
|
||||||
}
|
}
|
||||||
|
else if(strcmp(chose, "3") == 0) {
|
||||||
|
// Print File
|
||||||
|
printf("Enter path:\n");
|
||||||
|
scanf("%s", input_buffer);
|
||||||
|
|
||||||
|
dmu_print_file( input_buffer );
|
||||||
|
}
|
||||||
else if(strcmp(chose, "5") == 0) {
|
else if(strcmp(chose, "5") == 0) {
|
||||||
printf("Enter Directory:\n");
|
printf("Enter Directory:\n");
|
||||||
scanf("%s", input_buffer);
|
scanf("%s", input_buffer);
|
||||||
@@ -244,13 +262,6 @@ int main (int argc, char *argv[])
|
|||||||
|
|
||||||
dmu_print_tag_table( (lsfs_tag_id) atoi(input_buffer) );
|
dmu_print_tag_table( (lsfs_tag_id) atoi(input_buffer) );
|
||||||
}
|
}
|
||||||
else if(strcmp(chose, "3") == 0) {
|
|
||||||
// Print Master Tag Table
|
|
||||||
printf("File ID:\n");
|
|
||||||
scanf("%s", input_buffer);
|
|
||||||
|
|
||||||
dmu_print_file( (lsfs_file_id) atoi(input_buffer) );
|
|
||||||
}
|
|
||||||
else if(strcmp(chose, "4") == 0) {
|
else if(strcmp(chose, "4") == 0) {
|
||||||
// Print Master Tag Table
|
// Print Master Tag Table
|
||||||
printf("Enter Tag name:\n");
|
printf("Enter Tag name:\n");
|
||||||
|
|||||||
@@ -609,6 +609,21 @@ int lsfs_disk_install_bootloader(char *bootloader_name)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int lsfs_disk_install_vbr(char *vbr_path)
|
||||||
|
{
|
||||||
|
struct stat st;
|
||||||
|
stat(vbr_path, &st);
|
||||||
|
FILE *vbr = fopen ( vbr_path , "r+b" );
|
||||||
|
void *vbr_buffer = calloc(1, (SPACE_VBR_RECORD * SECTOR_SIZE));
|
||||||
|
|
||||||
|
|
||||||
|
fseek(vbr, 0, SEEK_SET);
|
||||||
|
fread(vbr_buffer, 1, st.st_size, vbr);
|
||||||
|
|
||||||
|
write_data_to_disk((p_control.fsci.this_partition_offset_on_disk - SPACE_VBR_RECORD), SPACE_VBR_RECORD, vbr); // Write this to the first sector of the disk.
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int lsfs_disk_load_disk() {
|
int lsfs_disk_load_disk() {
|
||||||
// Find the partition talbe:
|
// Find the partition talbe:
|
||||||
|
|||||||
BIN
Binary file not shown.
Reference in new issue
Block a user