- cant = (final-actual)/sizeof(EMUFS_IDX);
- printf("cant = %ld\n", cant);
- 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));
- /* Me paro en ese lugar */
- fseek(f_idx, final, SEEK_SET);
- /* y lo leo */
- fread(&buffer, sizeof(EMUFS_IDX), 1, f_idx);
- /* Ahora me paro en la nueva posicion de este item */
- fseek(f_idx, actual, SEEK_SET);
- /* y lo guardo */
- fwrite(&buffer, sizeof(EMUFS_IDX), 1, f_idx);
- /* Ahora el proximo item va en la posicion siguiente */
- actual += sizeof(EMUFS_IDX);printf("actual = %ld\n", actual/sizeof(EMUFS_IDX));
+ strcpy(name_f_idx,emu->nombre);
+ strcat(name_f_idx, EMUFS_IDX_EXT);
+
+ if ( (f_idx = fopen(name_f_idx, "rb")) == NULL){
+ PERR("No se pudo abrir el archivo");
+ return -1;
+ }
+
+ if (fseek(f_idx, sizeof(EMUFS_IDX)*ID, SEEK_SET) == 0) {
+ fread(®, sizeof(EMUFS_IDX), 1, f_idx);
+ if (reg.location != EMUFS_NOT_FOUND) {
+ fclose(f_idx);
+ return 0;
+ }
+ }
+ fclose(f_idx);
+ return -1;/*no existe el id*/
+}
+
+int emufs_idx_actualizar(EMUFS *emu, int ID, EMUFS_BLOCK_ID bloque)
+{
+ FILE *f_idx;
+ char name_f_idx[255];
+ EMUFS_IDX reg;
+
+ strcpy(name_f_idx,emu->nombre);
+ strcat(name_f_idx, EMUFS_IDX_EXT);
+
+ if ( (f_idx = fopen(name_f_idx, "r+")) == NULL){
+ PERR("No se pudo abrir el archivo");
+ return -1;