]> git.llucax.com Git - z.facultad/75.06/emufs.git/commitdiff
BUGFIX: habia un error en el calculo del espacio libre, y en la forma que leia el...
authorNicolás Dimov <ndimov@gmail.com>
Tue, 6 Apr 2004 21:58:27 +0000 (21:58 +0000)
committerNicolás Dimov <ndimov@gmail.com>
Tue, 6 Apr 2004 21:58:27 +0000 (21:58 +0000)
tipo3/main.c
tipo3/param_cte.c

index 0df4f32e753b833cbaf7d4805aeb14c9a5c4cea8..e74634eae6490b8b0ad198b60f8e386b8d702c5b 100644 (file)
@@ -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);
        
index 66be7e8a40727f74789ce058c30d197492940410..9ba368d13b32e321f271c11669cea14d39e7df62 100644 (file)
@@ -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(&reg_f,sizeof(BLOCK_FREE_T),1,f_block_free);
        while ( !feof(f_block_free) ){
-               fread(&reg_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(&reg_f,sizeof(BLOCK_FREE_T),1,f_block_free);
                }
+               fread(&reg_f,sizeof(BLOCK_FREE_T),1,f_block_free);
        }
        fclose(f_block_free);