X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/blobdiff_plain/46681084b842380621fe70d8a34fffe8f1efb5f6..dab746f5bcfd9154d9a8656071d6a2436fd8a765:/emufs/idx.c?ds=inline diff --git a/emufs/idx.c b/emufs/idx.c index ce12761..5fcec35 100644 --- a/emufs/idx.c +++ b/emufs/idx.c @@ -160,10 +160,10 @@ int emufs_idx_agregar(EMUFS *emu, EMUFS_REG_ID n_idreg, EMUFS_BLOCK_ID n_locatio } /* Borra un registro del indice dada la eliminacion fisica de un reg */ -int emufs_idx_borrar(EMUFS *emu, EMUFS_REG_ID n_IdReg) +int emufs_idx_borrar(EMUFS *emu, EMUFS_REG_ID idreg) { FILE *f_idx; - EMUFS_IDX reg, *buffer; + EMUFS_IDX reg; char name_f_idx[255]; long actual, final, cant, i, tam, a; @@ -176,10 +176,10 @@ 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 == idreg ) break; } - + /* me paro en el que tengo que borrar */ fseek(f_idx, -sizeof(EMUFS_IDX), SEEK_CUR); actual = ftell(f_idx); /* Guardo la posicion actual */ @@ -189,30 +189,23 @@ int emufs_idx_borrar(EMUFS *emu, EMUFS_REG_ID n_IdReg) 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); - buffer = (EMUFS_IDX*)malloc((cant)*sizeof(EMUFS_IDX)); - printf("sizeof buffer = %ld\n",(cant-1)*sizeof(EMUFS_IDX)); /*apunto al siguiente del que quiero borrar*/ - final = actual + sizeof(EMUFS_IDX); /*leo todos los que quedan*/ - fseek(f_idx,final,SEEK_SET); - fread(buffer,sizeof(EMUFS_IDX),cant-1,f_idx) ; -/* for( i=0; i