-CFLAGS=-Wall -g -ansi -pedantic -DDEBUG
+CFLAGS=-Wall -g -ansi -pedantic -DDEBUG
LDFLAGS=
EMUFS_COMMON=emufs.o tipo1.o tipo2.o tipo3.o idx.o did.o fsc.o
efs->grabar_registro = emufs_tipo3_grabar_registro;
efs->borrar_registro = emufs_tipo3_borrar_registro;
efs->leer_estadisticas = emufs_tipo3_leer_estadisticas;
-
+ efs->modificar_registro = emufs_tipo3_modificar_registro;
+ fprintf(stderr, "Crear : %p\n", efs->modificar_registro);
/* Guarda cabeceras propias. */
fwrite(&tam_bloque, sizeof(EMUFS_BLOCK_SIZE), 1, fp);
fwrite(&tam_reg, sizeof(EMUFS_REG_SIZE), 1, fp);
return NULL;
}
/* Asigna punteros a funciones. */
- efs->leer_bloque = emufs_tipo3_leer_bloque;
- efs->leer_registro = emufs_tipo3_leer_registro;
+ efs->leer_bloque = emufs_tipo3_leer_bloque;
+ efs->leer_registro = emufs_tipo3_leer_registro;
efs->grabar_registro = emufs_tipo3_grabar_registro;
efs->borrar_registro = emufs_tipo3_borrar_registro;
+ efs->leer_estadisticas = emufs_tipo3_leer_estadisticas;
+ efs->modificar_registro = emufs_tipo3_modificar_registro;
break;
}
efs->leer_bloque = emufs_tipo1_leer_bloque;
efs->leer_registro = emufs_tipo1_leer_registro;
efs->grabar_registro = emufs_tipo1_grabar_registro;
- /*efs->borrar_registro = emufs_tipo1_borrar_registro;*/
+ efs->borrar_registro = emufs_tipo1_borrar_registro;
return 0;
}
return -1; /* FIXME Error */
}
-int emufs_tipo1_borrar_registro(EMUFS *emu, EMUFS_REG_ID id_reg,
- EMUFS_REG_SIZE tam_reg)
+int emufs_tipo1_borrar_registro(EMUFS *emu, EMUFS_REG_ID id_reg)
{
return -1; /* FIXME Error */
}
/* grabo el registro en el bloque */
memcpy(dst, reg, reg_size);
}
+
+EMUFS_REG_ID emufs_tipo1_modificar_registro(EMUFS *emu, EMUFS_REG_ID id, void *data, EMUFS_REG_SIZE size, int *error)
+{
+ emufs_tipo1_borrar_registro(emu, id);
+ return emufs_tipo1_grabar_registro(emu, data, size, error);
+}
int emufs_tipo1_buscar_registro(EMUFS*, EMUFS_REG_ID);
-int emufs_tipo1_borrar_registro(EMUFS*, EMUFS_REG_ID, EMUFS_REG_SIZE);
+int emufs_tipo1_borrar_registro(EMUFS*, EMUFS_REG_ID);
+
+/** Método para modificar un registro */
+EMUFS_REG_ID emufs_tipo1_modificar_registro(EMUFS *emu, EMUFS_REG_ID, void*, EMUFS_REG_SIZE, int*);
/*
int emufs_tipo1_buscar_lugar(EMUFS *emu, EMUFS_REG_SIZE tam_reg,
int emufs_tipo2_inicializar(EMUFS* efs)
{
efs->grabar_registro = emufs_tipo2_grabar_registro;
- efs->borrar_registro = emufs_tipo2_borrar_registro;
+ efs->borrar_registro = emufs_tipo2_borrar_registro;
efs->leer_registro = emufs_tipo2_leer_registro;
+ efs->modificar_registro = emufs_tipo2_modificar_registro;
return 0;
}
free(dummyfill);
return (0);
}
+
+EMUFS_REG_ID emufs_tipo2_modificar_registro(EMUFS *emu, EMUFS_REG_ID id, void *data, EMUFS_REG_SIZE size, int *error)
+{
+ emufs_tipo2_borrar_registro(emu, id);
+ return emufs_tipo2_grabar_registro(emu, data, size, error);
+}
*/
int emufs_tipo2_dummyfill(EMUFS *efs, EMUFS_OFFSET reg_pos, EMUFS_REG_SIZE amount);
+/** Método para modificar un registro */
+EMUFS_REG_ID emufs_tipo2_modificar_registro(EMUFS *emu, EMUFS_REG_ID id, void *data, EMUFS_REG_SIZE size, int *error);
+
#endif /* _EMUFS_TIPO2_H_ */
stats.info_control = stats.tam_archivo*sizeof(EMUFS_REG_ID) + sizeof(EMUFS_Tipo) + sizeof(EMUFS_BLOCK_SIZE) + sizeof(EMUFS_REG_SIZE);
stats.media_fs = stats.total_fs/stats.cant_bloques;
fclose(f);
- return stats;
-
+ return stats;
}
+
+EMUFS_REG_ID emufs_tipo3_modificar_registro(EMUFS *emu, EMUFS_REG_ID id, void *data, EMUFS_REG_SIZE size, int *error)
+{
+ emufs_tipo3_borrar_registro(emu, id);
+ return emufs_tipo3_grabar_registro(emu, data, size, error);
+}
+
int emufs_tipo3_borrar_registro(EMUFS *emu, EMUFS_REG_ID id_reg);
int emufs_tipo3_buscar_registro(EMUFS *emu, EMUFS_REG_ID id_reg);
+
+/** Método para modificar un registro */
+EMUFS_REG_ID emufs_tipo3_modificar_registro(EMUFS *emu, EMUFS_REG_ID, void*, EMUFS_REG_SIZE, int*);
EMUFS_Estadisticas emufs_tipo3_leer_estadisticas(EMUFS *);