X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/blobdiff_plain/d0cf2ab456ea8847d1bc8c2bd0b2e1cfa0087c9e..e5f006cdf069c341253488880979653d7826af7f:/emufs/tipo1.c diff --git a/emufs/tipo1.c b/emufs/tipo1.c index 319b3e2..313cf5c 100644 --- a/emufs/tipo1.c +++ b/emufs/tipo1.c @@ -98,6 +98,7 @@ int emufs_tipo1_inicializar(EMUFS* efs) efs->leer_registro_raw = emufs_tipo1_leer_registro_raw; efs->leer_estadisticas = emufs_tipo1_leer_estadisticas; efs->compactar = emufs_tipo1_compactar; + efs->modificar_registro = emufs_tipo1_modificar_registro; efs->tam_reg = 0; return EMUFS_OK; } @@ -120,6 +121,8 @@ int emufs_tipo4_inicializar(EMUFS* efs) efs->leer_registro_raw = emufs_tipo1_leer_registro_raw; efs->leer_estadisticas = emufs_tipo1_leer_estadisticas; efs->compactar = emufs_tipo1_compactar; + efs->modificar_registro= emufs_tipo1_modificar_registro_plus; + efs->obtener_claver_raw= emufs_tipo1_obtener_claves_raw; efs->tam_reg = 0; return EMUFS_OK; } @@ -722,7 +725,9 @@ EMUFS_BLOCK_ID emufs_tipo1_grabar_bloque_fsc(EMUFS *efs, void *block, EMUFS_REG_ID emufs_tipo1_modificar_registro(EMUFS* efs, CLAVE k, void *data, EMUFS_REG_SIZE size, int* err, INDICE_DATO dato) { + PERR("Tipo1 Modificar Borrando"); emufs_tipo1_borrar_registro(efs, k, dato); + PERR("Tipo1 Modificar Agregando de nuevo"); return emufs_tipo1_grabar_registro(efs, data, size, err); } @@ -1129,7 +1134,7 @@ EMUFS_REG_ID emufs_tipo1_modificar_registro_plus(EMUFS *emu, CLAVE k, void *ptr B_PLUS_KEYBUCKET *emufs_tipo1_obtener_claves_raw(EMUFS *emu, int num_bloque) { B_PLUS_KEYBUCKET *keys; - char *bloque; + char *bloque, *aux;; int err = 0, cant_reg, i; EMUFS_REG_SIZE tam_reg; @@ -1144,12 +1149,14 @@ B_PLUS_KEYBUCKET *emufs_tipo1_obtener_claves_raw(EMUFS *emu, int num_bloque) PERR("NO SE PUDO LEER EL BLOQUE"); return NULL; } + aux = bloque; /*leo la cantidad de registros*/ memcpy(&cant_reg, bloque+emu->tam_bloque-sizeof(int), sizeof(int)); /*ya se cuanto guardarle al vector*/ keys->claves = (CLAVE*)malloc(cant_reg*sizeof(CLAVE)); if (keys->claves == NULL){ PERR("NO SE PUDO CREAR EL ARRAY DE CLAVES"); + free(bloque); free(keys); return NULL; } @@ -1160,6 +1167,6 @@ B_PLUS_KEYBUCKET *emufs_tipo1_obtener_claves_raw(EMUFS *emu, int num_bloque) keys->claves[i] = emufs_indice_generar_clave(emu->indices, bloque+sizeof(EMUFS_TIPO1_REG_HEADER)); bloque += tam_reg+sizeof(EMUFS_TIPO1_REG_HEADER); } - free(bloque); + free(aux); return keys; }