more impl open file
This commit is contained in:
parent
2549103636
commit
61b3643945
@ -76,19 +76,14 @@ impl OpenFile {
|
||||
}
|
||||
|
||||
first_sector = div_round_down(position,disk::SECTOR_SIZE);
|
||||
last_sector = div_round_up(position + num_bytes - 1, disk::SECTOR_SIZE);
|
||||
last_sector = div_round_down(position + num_bytes - 1, disk::SECTOR_SIZE);
|
||||
num_sectors = last_sector - first_sector + 1;
|
||||
|
||||
let mut buffer = vec![0_u8; (num_sectors * disk::SECTOR_SIZE) as usize];
|
||||
let mut sector_buffer = vec![0_u8; disk::SECTOR_SIZE as usize];
|
||||
|
||||
for i in first_sector..(last_sector + 1){
|
||||
|
||||
DrvDisk::read_sector(driver_disk, i, &mut sector_buffer);
|
||||
|
||||
for j in 0..sector_buffer.len(){
|
||||
buffer.push(sector_buffer[j]);
|
||||
}
|
||||
DrvDisk::read_sector(driver_disk, i, &mut buffer);
|
||||
}
|
||||
|
||||
start = position%disk::SECTOR_SIZE;
|
||||
@ -133,7 +128,46 @@ impl OpenFile {
|
||||
else if position + num_bytes > file_length{
|
||||
file.hdr.change_file_length(position + num_bytes);
|
||||
}
|
||||
0
|
||||
|
||||
first_sector = div_round_down(position, disk::SECTOR_SIZE);
|
||||
last_sector = div_round_down(position + nbr_octet_ecrit - 1, disk::SECTOR_SIZE);
|
||||
nbr_sectors = last_sector + first_sector + 1;
|
||||
|
||||
let mut buffer = vec![0_u8; (nbr_sectors * disk::SECTOR_SIZE) as usize];
|
||||
let mut sector_buffer = vec![0_u8; disk::SECTOR_SIZE as usize];
|
||||
|
||||
first_aligned = position == first_sector*disk::SECTOR_SIZE;//to use
|
||||
last_aligned = position + nbr_octet_ecrit == (last_sector + 1)*disk::SECTOR_SIZE;//to use
|
||||
|
||||
/*
|
||||
A CHANGER
|
||||
les read & write de disk prenant en param des vec, on ne peut pour l'instant pas copier premier et dernier secteur si mauvais alignement
|
||||
par defaut, on reconpie tout les secteur du disk de premier a dernier dans buffer, puis on ecrase avec les données dans from
|
||||
*/
|
||||
|
||||
//on recopie tous les secteurs dans buffer
|
||||
for i in first_sector..(last_sector + 1){
|
||||
driver_disk.read_sector(i, &mut buffer)
|
||||
}
|
||||
|
||||
//on ecrase dans buffer avec les données de from
|
||||
let start = position%disk::SECTOR_SIZE;
|
||||
let end = start + nbr_octet_ecrit - 1;
|
||||
|
||||
for i in start..(end + 1){
|
||||
buffer[i as usize] = from[(i-start) as usize];
|
||||
}
|
||||
|
||||
//on ecrit, secteur par secteur, en segmentant buffer en secteurs
|
||||
for i in 0..(nbr_sectors + 1){
|
||||
|
||||
let j = i*disk::SECTOR_SIZE;
|
||||
let k = i + disk::SECTOR_SIZE - 1;
|
||||
//driver_disk.write_sector(i + first_sector, &buffer[i..=k]);
|
||||
//BESOIN DE CHANGER VEC U8 EN SLICE DANS les fonctions read & write de drv_disk & disk
|
||||
}
|
||||
|
||||
nbr_octet_ecrit
|
||||
}
|
||||
|
||||
pub fn read(driver_disk : &mut DrvDisk, file : &mut OpenFile, into : &mut Vec<u8>, num_bytes : i32) -> i32 {
|
||||
|
Loading…
x
Reference in New Issue
Block a user