X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/blobdiff_plain/35c84de4b6d96cf3505ad2c075ff3998be04441b..3ff4788e11c87e1e6c9f43fef629f6079415f548:/emufs/indice_b.c diff --git a/emufs/indice_b.c b/emufs/indice_b.c index 2e0ff5d..5097992 100644 --- a/emufs/indice_b.c +++ b/emufs/indice_b.c @@ -71,21 +71,11 @@ int emufs_indice_b_insertar(INDICE *idx, CLAVE clave, INDICE_DATO dato) return 0; } else { if (i == 0) { - if (header.nivel != 0) { - nodo = b_leer_nodo(idx, header.hijo_izquierdo); - nodo_id = header.hijo_izquierdo; - } else { - nodo = NULL; - nodo_id = -1; - } + nodo = b_leer_nodo(idx, header.hijo_izquierdo); + nodo_id = header.hijo_izquierdo; } else { - if (header.nivel != 0) { - nodo = b_leer_nodo(idx, claves[i-1].dato.bloque); - nodo_id = claves[i-1].dato.bloque; - } else { - nodo = NULL; - nodo_id = -1; - } + nodo = b_leer_nodo(idx, claves[i-1].hijo_derecho); + nodo_id = claves[i-1].hijo_derecho; } } } @@ -121,7 +111,7 @@ INDICE_DATO emufs_indice_b_buscar(INDICE *idx, CLAVE clave) if (i == 0) { nodo = b_leer_nodo(idx, header.hijo_izquierdo); } else { - nodo = b_leer_nodo(idx, claves[i-1].dato.bloque); + nodo = b_leer_nodo(idx, claves[i-1].hijo_derecho); } free(tmp); } @@ -272,6 +262,8 @@ static void b_insertar_en_nodo(INDICE *idx, CLAVE clave, INDICE_DATO dato, int n } tmp_claves[i].clave = clave; tmp_claves[i].dato = dato; + tmp_claves[i].hijo_derecho = hijo1; + tmp_claves[i+1].hijo_derecho = hijo2; while (i < nodo_header.cant) { tmp_claves[i+1] = claves[i]; i++; @@ -298,7 +290,7 @@ static void b_insertar_en_nodo(INDICE *idx, CLAVE clave, INDICE_DATO dato, int n if (nodo_id != 0) { clave = tmp_claves[total/2].clave; - dato.bloque = nuevo_id; + /* XXX dato.bloque = nuevo_id; */ b_grabar_nodo(idx, nodo_id, nodo); b_grabar_nodo(idx, nuevo_id, nuevo); @@ -321,7 +313,7 @@ static void b_insertar_en_nodo(INDICE *idx, CLAVE clave, INDICE_DATO dato, int n nodo = tmp_nuevo; clave = tmp_claves[total/2].clave; - dato.bloque = nuevo_id; + /* XXX dato.bloque = nuevo_id; */ b_grabar_nodo(idx, nuevo_id+1, nodo); b_grabar_nodo(idx, nuevo_id, nuevo); @@ -359,6 +351,7 @@ static void b_insertar_en_nodo(INDICE *idx, CLAVE clave, INDICE_DATO dato, int n nodo_header.cant++; claves[i].clave = clave; claves[i].dato = dato; + claves[i].hijo_derecho = hijo2; nodo_header.hijo_izquierdo = b_elegir_izquierdo(idx, nodo_header.hijo_izquierdo, hijo1); b_actualizar_header(nodo, &nodo_header);