- /* Busco el gap que sucede a este */
- fseek(f_fsc,0,SEEK_SET);
- while (!feof(f_fsc)) {
- fread(&gap_aux,sizeof(EMUFS_FSC),1,f_fsc);
- if (gap_aux.marker > gap_new.marker) {
- found = 1;
- break;
- }
- }
- if (found == 1) {
- /* Movemos todos los gaps desde el sucesor hasta el final, una pos adelante */
- limit = ftell(f_fsc) - sizeof(EMUFS_FSC);
- fseek(f_fsc,0,SEEK_END);
- reg_count = (ftell(f_fsc) - limit) / sizeof(EMUFS_FSC);
- source = ftell(f_fsc) - sizeof(EMUFS_FSC);
-
- while (cant_moved < reg_count)
- {
- fseek(f_fsc,source,SEEK_SET);
- fread(&gap_aux,sizeof(EMUFS_FSC),1,f_fsc);
- fwrite(&gap_aux,sizeof(EMUFS_FSC),1,f_fsc);
- source -= sizeof(EMUFS_FSC);
- ++cant_moved;
- }
- /* Agrego el nuevo registro */
- fseek(f_fsc,limit,SEEK_SET);
- fwrite(&gap_new,sizeof(EMUFS_FSC),1,f_fsc);
- }
- else {
- fseek(f_fsc,0,SEEK_END);
- fwrite(&gap_new,sizeof(EMUFS_FSC),1,f_fsc);
- }
-