From: Ricardo Markiewicz Date: Wed, 14 Apr 2004 07:05:14 +0000 (+0000) Subject: * Se agregan a tipo123 los metodos emufs_tipoX_modificar_registro X-Git-Tag: svn_import_r684~495 X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/commitdiff_plain/15bf403f66891d89987a3a429b83a632fca74c5b?ds=sidebyside * Se agregan a tipo123 los metodos emufs_tipoX_modificar_registro * Se ajustan punteros dentro de EMUFS en los inicializar * TODO : Tipo1 modificar no anda por faltante de tipo1_borrar!! (lo pongo para que no esten como yo 1 hora sin saber por que se cuelga :-D) --- diff --git a/emufs/Makefile b/emufs/Makefile index 83cf49d..787a555 100644 --- a/emufs/Makefile +++ b/emufs/Makefile @@ -1,4 +1,4 @@ -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 diff --git a/emufs/emufs.c b/emufs/emufs.c index 23cc027..a511e50 100644 --- a/emufs/emufs.c +++ b/emufs/emufs.c @@ -162,7 +162,8 @@ EMUFS *emufs_crear(const char *filename, EMUFS_Tipo tipo, EMUFS_BLOCK_SIZE tam_b 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); @@ -230,10 +231,12 @@ EMUFS *emufs_abrir(const char *filename) 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; } diff --git a/emufs/tipo1.c b/emufs/tipo1.c index 042fdb4..024839b 100644 --- a/emufs/tipo1.c +++ b/emufs/tipo1.c @@ -63,7 +63,7 @@ int emufs_tipo1_inicializar(EMUFS* efs) 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; } @@ -303,8 +303,7 @@ int emufs_tipo1_buscar_registro(EMUFS *emu, EMUFS_REG_ID id_reg) 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 */ } @@ -346,3 +345,9 @@ void emufs_tipo1_escribir_reg_en_memoria(char* dst, EMUFS_REG_ID reg_id, /* 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); +} diff --git a/emufs/tipo1.h b/emufs/tipo1.h index 00e63d5..d61bcf2 100644 --- a/emufs/tipo1.h +++ b/emufs/tipo1.h @@ -56,7 +56,10 @@ EMUFS_BLOCK_ID emufs_tipo1_grabar_bloque(EMUFS*, void*, EMUFS_BLOCK_ID, int*); 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, diff --git a/emufs/tipo2.c b/emufs/tipo2.c index 2380249..7047e45 100644 --- a/emufs/tipo2.c +++ b/emufs/tipo2.c @@ -46,8 +46,9 @@ 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; } @@ -228,3 +229,9 @@ int emufs_tipo2_dummyfill(EMUFS *efs, EMUFS_OFFSET reg_pos, EMUFS_REG_SIZE amoun 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); +} diff --git a/emufs/tipo2.h b/emufs/tipo2.h index e663b7d..f8885ec 100644 --- a/emufs/tipo2.h +++ b/emufs/tipo2.h @@ -116,4 +116,7 @@ int emufs_tipo2_get_regsize(EMUFS *efs, EMUFS_OFFSET reg_pos, EMUFS_REG_SIZE *re */ 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_ */ diff --git a/emufs/tipo3.c b/emufs/tipo3.c index 0a457f9..24153cb 100644 --- a/emufs/tipo3.c +++ b/emufs/tipo3.c @@ -299,6 +299,12 @@ EMUFS_Estadisticas emufs_tipo3_leer_estadisticas(EMUFS *emu) 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); +} + diff --git a/emufs/tipo3.h b/emufs/tipo3.h index f99a658..5e9b547 100644 --- a/emufs/tipo3.h +++ b/emufs/tipo3.h @@ -62,6 +62,9 @@ int emufs_tipo3_grabar_bloque(EMUFS *emu, void *ptr, EMUFS_BLOCK_ID num_bloque); 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 *);