From 03631b7f82cffb3173925a2d51940ca1dbd849ee Mon Sep 17 00:00:00 2001 From: =?utf8?q?Nicol=C3=A1s=20Dimov?= Date: Tue, 6 Apr 2004 21:58:27 +0000 Subject: [PATCH] BUGFIX: habia un error en el calculo del espacio libre, y en la forma que leia el archivo .fsc --- tipo3/main.c | 8 +++++--- tipo3/param_cte.c | 7 ++++--- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/tipo3/main.c b/tipo3/main.c index 0df4f32..e74634e 100644 --- a/tipo3/main.c +++ b/tipo3/main.c @@ -52,11 +52,13 @@ int main(int argc, char *argv[]) printf("ID5 = %d\n", n6); printf("ID6 = %d\n", n7); - fp->leer_registro(fp, n4, b, 100); - - printf("Recuperado : %s\n", b); + fp->borrar_registro(fp, n1, 100); + fp->borrar_registro(fp, n3, 100); fp->borrar_registro(fp, n4, 100); + fp->leer_registro(fp, n7, b, 100); + + printf("Recuperado : %s\n", b); ver_archivo_FS(fp); diff --git a/tipo3/param_cte.c b/tipo3/param_cte.c index 66be7e8..9ba368d 100644 --- a/tipo3/param_cte.c +++ b/tipo3/param_cte.c @@ -365,7 +365,7 @@ int borrar_registro(EMUFS *emu, int ID, int tam_reg) ptr_elim = ptr_mov; ptr_mov += sizeof(int) + tam_reg; } - + /*grabo el bloque en el archivo*/ if ( grabar_bloque(emu, bloque, num_bloque) == -1 ){ printf("No se pudo grabar el bloque\n"); @@ -374,13 +374,14 @@ int borrar_registro(EMUFS *emu, int ID, int tam_reg) /*actualizo archivo .fsc*/ if ( (f_block_free = fopen(name_f_block_free,"r+")) == NULL ) return -1; + fread(®_f,sizeof(BLOCK_FREE_T),1,f_block_free); while ( !feof(f_block_free) ){ - fread(®_f,sizeof(BLOCK_FREE_T),1,f_block_free); if ( reg_f.block == num_bloque ){ - reg_f.free_space += tam_reg - sizeof(int); + reg_f.free_space += tam_reg + sizeof(int); fseek(f_block_free,-sizeof(BLOCK_FREE_T),SEEK_CUR); fwrite(®_f,sizeof(BLOCK_FREE_T),1,f_block_free); } + fread(®_f,sizeof(BLOCK_FREE_T),1,f_block_free); } fclose(f_block_free); -- 2.43.0