free(reg);
}
}
- /* TODO truncar */
+ free(reg_ids); /* libero lista de ids */
+
+ /* truncamos el archivo si hay bloques libres al final */
+ {
+ EMUFS_FREE fs; /* espacio libre en el bloque */
+ /* busco si hay algún bloque completo libre */
+ EMUFS_BLOCK_ID block_id = emufs_fsc_buscar_lugar(efs, efs->tam_bloque
+ - sizeof(EMUFS_TIPO1_REG_HEADER), &fs);
+ /* si hay, el resto del archivo tiene que estar vacío */
+ if (block_id != EMUFS_NOT_FOUND) {
+ long size = emufs_tipo1_header_size() /* cabecera del archivo */
+ + block_id * efs->tam_bloque; /* mas los bloques compactos */
+ char filename[255];
+
+ /* trunca archivo de datos */
+ strcpy(filename, efs->nombre);
+ strcat(filename, ".dat");
+ truncate(filename, size);
+ /* trunca archivo de de espacio libre */
+ emufs_fsc_truncate(efs, block_id);
+ }
+ }
}
EMUFS_BLOCK_ID emufs_tipo1_grabar_bloque(EMUFS *efs, void *block,