@ -109,14 +109,14 @@ int dmu_install_SingOS(char* disk_name) {
int dmu_create_file_system ( char * disk_name ) {
uint64_t filesystem_size_in_MB = 0 ;
char hdd_or_partition [ 8 ] ; / / 1 : is harddisk , 2 : is partition
char hdd_or_partition ; / / 1 : is harddisk , 2 : is partition
char input_size_file_system [ 64 ] ; / / in MB
do {
printf ( " Create as 1: harddrive or 2: as a single partition (enter 1 or 2): \n " ) ;
scanf ( " %s " , hdd_or_partition ) ;
scanf ( " %c " , hdd_or_partition ) ;
} while ( ( hdd_or_partition [ 0 ] ! = ' 1 ' ) & & ( hdd_or_partition [ 0 ] ! = ' 2 ' ) ) ;
} while ( ( hdd_or_partition ! = ' 1 ' ) & & ( hdd_or_partition ! = ' 2 ' ) ) ;
printf ( " Enter size of file system in MB (as an integer number): \n " ) ;
scanf ( " %s " , input_size_file_system ) ;
@ -126,7 +126,7 @@ int dmu_create_file_system(char* disk_name) {
printf ( " Create new disk img \n " ) ;
create_file_system ( disk_name , hdd_or_partition , filesystem_size_in_MB ) ;
printf ( " Disk is created as: %s \n " , disk_name ) ;
fclose ( disk ) ;
/ / TODO : Do you want to install SingOS :
@ -135,14 +135,16 @@ int dmu_create_file_system(char* disk_name) {
return 1 ;
}
int dmu_load_file_system ( char * disk_name ) {
int dmu_load_file_system ( char * disk_name )
{
disk = fopen ( disk_name , " r+b " ) ;
lsfs_disk_load_disk ( ) ;
disk_is_loaded = 1 ;
return 1 ;
}
int dmu_install_bootloader ( char * disk_name ) {
int dmu_install_bootloader ( char * disk_name )
{
lsfs_disk_install_bootloader ( disk_name ) ;
return 1 ;
}
@ -169,12 +171,111 @@ int dmu_print_mtt(char *path) {
}
typedef struct Arguments_Settings
{
char * load_diskname ;
char * new_diskname ;
int new_disk_size_mb ;
char * install_vbr_path ;
char * install_bootloader_path ;
char * copy_new_kernel ;
} Arguments_Settings ;
int main ( int argc , char * argv [ ] )
{
if ( argc > 1 )
{
Arguments_Settings * settings = calloc ( 1 , sizeof ( Arguments_Settings ) ) ;
for ( int i = 1 ; i < argc ; i + + )
{
/ / Parse parameters for cmd usage
switch ( argv [ i ] [ 1 ] )
{
case ' n ' :
{
/ / Create new disk
i + + ; / / Go to next parameter which is the path / filename for the new disk
if ( i > argc )
{
/ / Go to loop condition to exit
continue ;
}
settings - > new_diskname = argv [ i ] ;
printf ( " Creating new disk: %s \n " , settings - > new_diskname ) ;
} break ;
case ' s ' :
{
/ / Specify size of new disk
i + + ; / / Go to next parameter which is the disk size
if ( i > argc )
{
/ / Go to loop condition to exit
continue ;
}
settings - > new_disk_size_mb = atoi ( argv [ i ] ) ;
} break ;
case ' v ' :
{
/ / Update Volume boot record
i + + ; / / Go to next parameter which is the path for the VBR
if ( i > argc )
{
/ / Go to loop condition to exit
continue ;
}
settings - > install_vbr_path = argv [ i ] ;
} break ;
case ' b ' :
{
/ / Update bootloader
i + + ; / / Go to next parameter which is the path for the VBR
if ( i > argc )
{
/ / Go to loop condition to exit
continue ;
}
settings - > install_bootloader_path = argv [ i ] ;
} break ;
}
}
/ / Now execute the commands .
/ / First check if we should create a new disk
if ( settings - > new_diskname ! = NULL )
{
/ / TODO ( only harddisk is supported yet )
char hdd_or_partition = ' 1 ' ; / / 1 is harddrive
if ( settings - > new_disk_size_mb < = 0 )
{
settings - > new_disk_size_mb = 20 ; / / 20 MB is default size
}
create_file_system ( settings - > new_diskname , hdd_or_partition , settings - > new_disk_size_mb ) ;
settings - > load_diskname = settings - > new_diskname ;
}
/ / Load the disk to complete the following instructions
if ( settings - > load_diskname ! = NULL )
{
dmu_load_file_system ( settings - > load_diskname ) ;
if ( settings - > install_bootloader_path ! = NULL )
{
lsfs_disk_install_bootloader ( settings - > install_bootloader_path ) ;
}
}
}
else