int emufs_idx_crear(EMUFS *efs)
{
return emufs_crear_archivo_auxiliar(efs->nombre, EMUFS_IDX_EXT);
}
int emufs_idx_crear(EMUFS *efs)
{
return emufs_crear_archivo_auxiliar(efs->nombre, EMUFS_IDX_EXT);
}
strcpy(name_f_idx,emu->nombre);
strcat(name_f_idx, EMUFS_IDX_EXT);
if ( (f_idx = fopen(name_f_idx,"r")) == NULL) return -1; /*ERROR*/
strcpy(name_f_idx,emu->nombre);
strcat(name_f_idx, EMUFS_IDX_EXT);
if ( (f_idx = fopen(name_f_idx,"r")) == NULL) return -1; /*ERROR*/
while ( !feof(f_idx) ){
/* Me aseguro de leer la cantidad de bytes correcta */
if (fread(®,sizeof(EMUFS_IDX),1,f_idx) != 1) continue;
while ( !feof(f_idx) ){
/* Me aseguro de leer la cantidad de bytes correcta */
if (fread(®,sizeof(EMUFS_IDX),1,f_idx) != 1) continue;
-/*busca el registro ID en el archivo ".idx" y devuelve el nro de bloque en el que se encuentra*/
-int emufs_idx_buscar_registro(EMUFS *emu, int ID)
+/* busca el registro ID en el archivo ".idx" y devuelve el nro de bloque en el que se encuentra */
+EMUFS_BLOCK_ID emufs_idx_buscar_registro(EMUFS *emu, EMUFS_REG_ID n_IdReg)
strcpy(name_f_idx,emu->nombre);
strcat(name_f_idx, EMUFS_IDX_EXT);
if ( (f_idx = fopen(name_f_idx,"r")) == NULL) return -1; /*ERROR*/
strcpy(name_f_idx,emu->nombre);
strcat(name_f_idx, EMUFS_IDX_EXT);
if ( (f_idx = fopen(name_f_idx,"r")) == NULL) return -1; /*ERROR*/
if (fread(®,sizeof(EMUFS_IDX),1,f_idx) != 1) continue;
if (fread(®,sizeof(EMUFS_IDX),1,f_idx) != 1) continue;
fwrite(®,sizeof(EMUFS_IDX),1,f_idx);
fclose(f_idx);
return 0;
}
fwrite(®,sizeof(EMUFS_IDX),1,f_idx);
fclose(f_idx);
return 0;
}
while ( !feof(f_idx) ){
/*busco cual tengo que borrar*/
if ( fread(®, sizeof(EMUFS_IDX), 1, f_idx) != 1 ) continue;
while ( !feof(f_idx) ){
/*busco cual tengo que borrar*/
if ( fread(®, sizeof(EMUFS_IDX), 1, f_idx) != 1 ) continue;
break;
}
/* me paro en el que tengo que borrar */
actual = fseek(f_idx, -sizeof(EMUFS_IDX), SEEK_CUR);
break;
}
/* me paro en el que tengo que borrar */
actual = fseek(f_idx, -sizeof(EMUFS_IDX), SEEK_CUR);
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("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 */
fseek(f_idx, actual, SEEK_SET); /* vuelvo al lugar desde donde quiero justificar */
cant = (final-actual)/sizeof(EMUFS_IDX);
fseek(f_idx, actual, SEEK_SET); /* vuelvo al lugar desde donde quiero justificar */
cant = (final-actual)/sizeof(EMUFS_IDX);
for(i=0; i<cant-1; i++) {
/* Calculo donde empieza el proximo elemento a mover */
final = actual+sizeof(EMUFS_IDX); printf("final = %ld actual = %ld\n", final/sizeof(EMUFS_IDX), actual/sizeof(EMUFS_IDX));
for(i=0; i<cant-1; i++) {
/* Calculo donde empieza el proximo elemento a mover */
final = actual+sizeof(EMUFS_IDX); printf("final = %ld actual = %ld\n", final/sizeof(EMUFS_IDX), actual/sizeof(EMUFS_IDX));