Estimados,
Tengo una duda sobre si como resolví este ejercicio está bien (ya que la solución propuesta es bastante distinta):
Function trunc8(c: array of char) : boolean;
Begin
int inodo;
if(!buscarInodo(c, inodo)){ // Función de la parte anterior
return false;
}
if(!IT[inodo].usado || IT[inodo].es_dir){
return false;
}
int cantBloques = IT[inodo].tamaño / 1024;
if (cantBloques <= 8){
return true;
}
else {
buff : array [0..1023] of byte;
if (IT.[inodo].indirecto_tope != 0){
bloquesIndirectos : array [0..511] of int;
if (!leer(D, IT.[inodo].indirecto, bloquesIndirectos)){
return false;
}
for (int bloqIndirecto = 0; bloqIndirecto <= IT.[inodo].indirecto_tope; bloqIndirecto++){
if (!leer(D, bloquesIndirectos[bloqIndirecto], buff)){
return false;
}
if(MB[buff] == false){
cantBloques--;
MB[buff] = true;
IT[inodo].indirecto_tope--;
if (cantBloques == 8){
return true;
}
}
}
}
}
IT[inodo].tamaño = 1024 * 8;
End