]> git.llucax.com Git - z.facultad/75.06/emufs.git/commitdiff
Todavia no anda del todo bien con la gui...
authorNicolás Dimov <ndimov@gmail.com>
Thu, 15 Apr 2004 16:33:29 +0000 (16:33 +0000)
committerNicolás Dimov <ndimov@gmail.com>
Thu, 15 Apr 2004 16:33:29 +0000 (16:33 +0000)
emufs/tipo3.c
emufs/tipo3_main.c

index fd59a683ae197ed1f5cf47885c135a7ed287f4c5..fe46251f21c04f4fabc32f37df5f509aa762281f 100644 (file)
@@ -158,7 +158,6 @@ EMUFS_REG_ID emufs_tipo3_grabar_registro(EMUFS *emu, void *ptr, EMUFS_REG_SIZE t
                if ( (file = fopen(name_f,"a+"))==NULL ) return -1; /*ERROR*/
                /*tengo que buscar un ID valido para el nuevo registro*/
                ID_aux = emufs_idx_get_new_id(emu, err);
-
                /* El free esta al final de la funcion! */
                bloque = (char*)malloc(emu->tam_bloque);
                for (i=0; i<cant_bloques; i++) {
@@ -194,6 +193,7 @@ EMUFS_REG_ID emufs_tipo3_grabar_registro(EMUFS *emu, void *ptr, EMUFS_REG_SIZE t
                                }
                        }
                        /* grabo el nuevo registro en el archivo de espacios libres */
+                       if ( emu->tam_bloque > emu->tam_reg ) resto = emu->tam_reg;
                        if ( emufs_fsc_agregar(emu, num_bloque, emu->tam_bloque - resto - sizeof(EMUFS_REG_ID)) != 0 ) {
                                fclose(file);
                                free(bloque);
@@ -294,6 +294,8 @@ int emufs_tipo3_borrar_registro(EMUFS *emu, EMUFS_REG_ID ID)
        }
 
        /*grabo el bloque en el archivo*/       
+       if ( emu->tam_bloque < emu->tam_reg ) 
+               memset(bloque, 0, emu->tam_bloque);
        if ( emufs_tipo3_grabar_bloque(emu, bloque, num_bloque) == -1 ){
                free(bloque);
                PERR("No se pudo grabar el bloque"); 
@@ -301,9 +303,12 @@ int emufs_tipo3_borrar_registro(EMUFS *emu, EMUFS_REG_ID ID)
        }
 
        /*actualizo archivo .fsc*/
-       fs = emufs_fsc_get_fs(emu, num_bloque);
-       if ( emufs_fsc_actualizar(emu, num_bloque, fs + emu->tam_reg + sizeof(EMUFS_REG_ID)) != 0 ) return -1;
-       
+       if ( emu->tam_bloque < emu->tam_reg ) {
+               if ( emufs_fsc_actualizar(emu, num_bloque, emu->tam_bloque) != 0 ) return -1;
+       } else { 
+               fs = emufs_fsc_get_fs(emu, num_bloque);
+               if ( emufs_fsc_actualizar(emu, num_bloque, fs + emu->tam_reg + sizeof(EMUFS_REG_ID)) != 0 ) return -1;
+       }
        /*actualizo archivo .did*/
        if ( emufs_did_agregar(emu, ID) != 0 ) return -1;
                
index 1e20faa754568c2ac71e1caf668fcfaecbff785a..f4fd20f655d13449f900e0f58a1270178a991422 100644 (file)
@@ -82,7 +82,7 @@ int main(int argc, char *argv[])
        n3 = fp->grabar_registro(fp, d, 100, &err);
        n4 = fp->grabar_registro(fp, e, 100, &err);
        n5 = fp->grabar_registro(fp, f, 100, &err);
-       n6 = fp->grabar_registro(fp, g, 100, &err);
+       /*n6 = fp->grabar_registro(fp, g, 100, &err);*/
        n7 = fp->grabar_registro(fp, h, 100, &err);
        n8 = fp->grabar_registro(fp, i, 100, &err);
 
@@ -96,11 +96,15 @@ int main(int argc, char *argv[])
        if ( fp->borrar_registro(fp, n7) == -1) printf("la cague %d\n",n7);
        if ( fp->borrar_registro(fp, n8) == -1) printf("la cague %d\n",n8);     
        */
-       
-       b_ptr = fp->leer_registro(fp, n4, &reg_size, &err);
+       ver_archivo_FS(fp);
+       fp->borrar_registro(fp, n3);
+       fp->borrar_registro(fp, n4);
+       printf("pase3\n");
+       /*n6 = fp->grabar_registro(fp, g, 100, &err);*/
+       printf("pase4\n");
+       b_ptr = fp->leer_registro(fp, n7, &reg_size, &err);
        
        printf("Recuperado : %s\n", b_ptr);
-
        free(b_ptr);
 
        ver_archivo_FS(fp);