From: Nicolás Dimov Date: Sat, 10 Apr 2004 22:32:17 +0000 (+0000) Subject: cambios en los sizeof X-Git-Tag: svn_import_r684~571 X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/commitdiff_plain/0197ffb819756560ce134f0d8303ce8054b39d37?ds=inline cambios en los sizeof --- diff --git a/emufs/emufs.c b/emufs/emufs.c index 5ea76a1..de97f21 100644 --- a/emufs/emufs.c +++ b/emufs/emufs.c @@ -166,7 +166,7 @@ EMUFS *emufs_crear(const char *filename, EMUFS_TYPE tipo, efs->leer_bloque = emufs_tipo3_leer_bloque; efs->leer_registro = emufs_tipo3_leer_registro; efs->grabar_registro = emufs_tipo3_grabar_registro; - /*efs->borrar_registro = emufs_tipo3_borrar_registro;*/ + efs->borrar_registro = emufs_tipo3_borrar_registro; /* Guarda cabeceras propias. */ fwrite(&tam_bloque, sizeof(EMUFS_BLOCK_SIZE), 1, fp); diff --git a/emufs/idx.c b/emufs/idx.c index 6ee1b87..fcfc5ba 100644 --- a/emufs/idx.c +++ b/emufs/idx.c @@ -146,7 +146,7 @@ int emufs_idx_agregar(EMUFS *emu, EMUFS_REG_ID n_idreg, EMUFS_BLOCK_ID n_locatio int emufs_idx_borrar(EMUFS *emu, EMUFS_REG_ID n_IdReg) { FILE *f_idx; - EMUFS_IDX reg, buffer; + EMUFS_IDX reg, *buffer; char name_f_idx[255]; long actual, final, cant, i, tam; @@ -158,39 +158,39 @@ int emufs_idx_borrar(EMUFS *emu, EMUFS_REG_ID n_IdReg) while ( !feof(f_idx) ){ /*busco cual tengo que borrar*/ if ( fread(®, sizeof(EMUFS_IDX), 1, f_idx) != 1 ) continue; - if ( reg.n_idreg == n_IdReg ) + if ( reg.n_idreg == n_IdReg ){ + printf("el registro que se quiere borrar es : %ld num_reg = %d\n", ftell(f_idx)/sizeof(EMUFS_IDX)-1, n_IdReg ); break; + } } /* me paro en el que tengo que borrar */ actual = fseek(f_idx, -sizeof(EMUFS_IDX), SEEK_CUR); /*actual = ftell(f_idx);*/ /* Guardo la posicion actual */ - printf("ACTUAL = %ld\n", actual/sizeof(EMUFS_IDX)); fseek(f_idx, 0, SEEK_END); /* me voy al final */ final = ftell(f_idx); /* veo cuando ocupa el archivo */ - printf("tamanio del archivo de bloques y registros = %ld\n", final/sizeof(EMUFS_IDX)); fseek(f_idx, actual, SEEK_SET); /* vuelvo al lugar desde donde quiero justificar */ - + /*calculo cuantos registros tengo que mover */ cant = (final-actual)/sizeof(EMUFS_IDX); - printf("cant = %ld\n", cant); - for(i=0; itam_reg + sizeof(EMUFS_REG_ID); } - +printf("pase %d\n",__LINE__); /*apunto al registro que voy a mover*/ ptr_mov = ptr_elim + emu->tam_reg + sizeof(EMUFS_REG_ID); @@ -260,14 +260,14 @@ int emufs_tipo3_borrar_registro(EMUFS *emu, EMUFS_REG_ID ID) ptr_elim = ptr_mov; ptr_mov += sizeof(EMUFS_REG_ID) + emu->tam_reg; } - +printf("pase %d\n",__LINE__); /*grabo el bloque en el archivo*/ if ( emufs_tipo3_grabar_bloque(emu, bloque, num_bloque) == -1 ){ free(bloque); printf("No se pudo grabar el bloque\n"); return -1; } - +printf("pase %d\n",__LINE__); /*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; @@ -277,7 +277,7 @@ int emufs_tipo3_borrar_registro(EMUFS *emu, EMUFS_REG_ID ID) /*actualizo archivo .idx*/ if ( emufs_idx_borrar(emu, ID) != 0 ) return -1; - +printf("pase %d\n",__LINE__); free(bloque); return 0; } diff --git a/emufs/tipo3_main.c b/emufs/tipo3_main.c index e475097..90a1dc1 100644 --- a/emufs/tipo3_main.c +++ b/emufs/tipo3_main.c @@ -73,37 +73,26 @@ int main(int argc, char *argv[]) strcpy(i, "me argrego despues de borrar a un registro"); fp = emufs_crear("articulos", T3, atoi(argv[1]), 100); -printf("pase0\n"); + n1 = fp->grabar_registro(fp, a, 100); -printf("pase1\n"); + n2 = fp->grabar_registro(fp, c, 100); -printf("pase2\n"); - /*n3 = fp->grabar_registro(fp, d, 100); + + n3 = fp->grabar_registro(fp, d, 100); n4 = fp->grabar_registro(fp, e, 100); n5 = fp->grabar_registro(fp, f, 100); n6 = fp->grabar_registro(fp, g, 100); n7 = fp->grabar_registro(fp, h, 100); - n8 = fp->grabar_registro(fp, i, 100);*/ - printf("ID0 = %lu\n", n1); - printf("ID1 = %lu\n", n2); - printf("ID2 = %lu\n", n3); - printf("ID3 = %lu\n", n4); - printf("ID4 = %lu\n", n5); - printf("ID5 = %lu\n", n6); - printf("ID6 = %lu\n", n7); + n8 = fp->grabar_registro(fp, i, 100); ver_archivo_FS(fp); - /*fp->borrar_registro(fp, n4, 100); - fp->borrar_registro(fp, n2, 100); - fp->borrar_registro(fp, n6, 100);*/ - printf("pase00\n"); - - fp->borrar_registro(fp, n1); - printf("borre el registro de id = %lu\n",n1); + + fp->borrar_registro(fp, n5); + printf("borre el registro de id = %lu\n",n5); b_ptr = fp->leer_registro(fp, n2, &err); printf("Recuperado : %s\n", b_ptr); -printf("pase5\n"); + free(b_ptr); ver_archivo_FS(fp);