- while ( !feof(f_block_reg) ){
- cant = fread(&buffer,sizeof(BLOCK_REG_T),10,f_block_reg);
- fseek(f_block_reg, -cant*sizeof(BLOCK_REG_T)-1, SEEK_CUR);
- for (i=0; i<cant; i++){
- fwrite(&buffer[i],sizeof(BLOCK_REG_T),1,f_block_reg);
- if ( feof(f_block_reg) ) continue;
+
+ /* GAZER : aca hago una prueba */
+ {
+ long final, actual;
+ actual = ftell(f_block_reg); /* Guardo la posicion actual */
+ fseek(f_block_reg, 0, SEEK_END); /* me voy al final */
+ final = ftell(f_block_reg); /* veo cuando ocupa el archivo */
+ fseek(f_block_reg, actual, SEEK_SET); /* vuelvo al lugar desde donde quiero justificar */
+
+ cant = (final-actual)/sizeof(BLOCK_REG_T);
+ for(i=0; i<cant; i++) {
+ /* Calculo donde empieza el proximo elemento a mover */
+ final = actual+sizeof(BLOCK_REG_T);
+ /* Me paro en ese lugar */
+ fseek(f_block_reg, final, SEEK_SET);
+ /* y lo leo */
+ fread(buffer, sizeof(BLOCK_REG_T), 1, f_block_reg);
+
+ /* Ahora me paro en la nueva posicion de este item */
+ fseek(f_block_reg, actual, SEEK_SET);
+ /* y lo guardo */
+ fwrite(buffer, sizeof(BLOCK_REG_T), 1, f_block_reg);
+
+ /* Ahora el proximo item va en la posicion siguiente */
+ actual += sizeof(BLOCK_REG_T);