X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/blobdiff_plain/8567a7085f7e311712244a69a1d1a45737a9ae32..f416a6eaa67f78040bfcf9454e0535fe67354424:/emufs/tipo3.c diff --git a/emufs/tipo3.c b/emufs/tipo3.c index 10d6f33..a28b635 100644 --- a/emufs/tipo3.c +++ b/emufs/tipo3.c @@ -59,13 +59,18 @@ void* emufs_tipo3_leer_registro(EMUFS *emu, CLAVE clave, cant_bloques = 1; /*si existe, lo busco en el archivo de bloques*/ - if (emu->indices != NULL) { + if ((emu->indices != NULL) && (*err != 1)) { /* TODO : Verificar donde esta el indice primario */ dato = emu->indices->existe_entrada(emu->indices, clave); block = dato.bloque; ID = dato.id; + PERR("Use indice"); } else { - /* TODO ID de donde lo puedo sacar :-) , lo cargo en CLAVE ? */ + /* Si no tengo claves, uso el campo entero para pasar un ID + * directamente. + */ + PERR("Use directo"); + ID = clave.i_clave; block = emufs_idx_buscar_registro(emu,ID); /*me devuelve el nro de bloque al que pertenece el registro*/ } if ( block == EMUFS_NOT_FOUND ){ @@ -575,35 +580,7 @@ void emufs_tipo3_leer_bloque_raw(EMUFS *efs, EMUFS_BLOCK_ID id, char **actual, c (*size1) = (*size2) = (*size3) = efs->tam_bloque; } -CLAVE obtener_clave(void *ptr, INDICE indice) -{ - CLAVE clave; - - switch ( indice->tipo_dato ){ - case IDX_FLOAT: - memcpy(&clave, ptr+indice->offset, sizeof(float)); - break; - case IDX_INT: - memcpy(&clave, ptr+indice->offset, sizeof(int)); - } - return clave; -} - int emufs_tipo3_insertar_ordenado(EMUFS *emu, void *ptr, CLAVE clave, int offset, EMUFS_BLOCK_ID num_bloque, int *err) { - /*FILE *f; - char f_name[255];*/ - char *bloque; - CLAVE clave_ant; - - - bloque = emufs_tipo3_leer_bloque(emu, num_bloque, err); - if (err){ - PERR("NO SE PUDO LEER EL BLQUE"); - return -1; - } - - - return 0; }