X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/blobdiff_plain/35c84de4b6d96cf3505ad2c075ff3998be04441b..51ed490d1caf11b5645abef4dd473e5a5b520856:/emufs/tipo1.c diff --git a/emufs/tipo1.c b/emufs/tipo1.c index 55c9841..76b1e9b 100644 --- a/emufs/tipo1.c +++ b/emufs/tipo1.c @@ -108,8 +108,17 @@ void* emufs_tipo1_leer_registro(EMUFS* efs, CLAVE clave, EMUFS_BLOCK_SIZE offset; /* offset del bloque leído */ EMUFS_REG_ID reg_id; EMUFS_TIPO1_REG_HEADER curr_reg_header; /* cabecera del registro a leer */ - - block_id = emufs_idx_buscar_registro(efs, reg_id); + INDICE_DATO dato; + + if (efs->indices != NULL) { + /* TODO : Verificar donde esta el indice primario */ + dato = efs->indices->existe_entrada(efs->indices, clave); + block_id = dato.bloque; + reg_id = dato.id; + } else { + /* TODO ID de donde lo puedo sacar :-) , lo cargo en CLAVE ? */ + block_id = emufs_idx_buscar_registro(efs, reg_id); + } if (block_id == EMUFS_NOT_FOUND) { PERR("Registro no encontrado"); *err = EMUFS_NOT_FOUND; @@ -269,6 +278,7 @@ EMUFS_REG_ID emufs_tipo1_grabar_registro(EMUFS* efs, void* reg, EMUFS_BLOCK_ID curr_block_id; /* tamaño de la porción de registro que se guarda */ EMUFS_REG_SIZE chunk_size = 0; + INDICE_DATO idx_data; /* obtengo identificador que corresponderá al registro */ header.id = emufs_idx_get_new_id(efs, err); @@ -349,6 +359,9 @@ EMUFS_REG_ID emufs_tipo1_grabar_registro(EMUFS* efs, void* reg, PERR("No se pudo agregar idx"); return EMUFS_NOT_FOUND; } + idx_data.id = header.id; + idx_data.bloque = block_id; + emufs_indice_agregar(efs->indices, reg, idx_data); return header.id; }