X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/blobdiff_plain/e8fa2ccccf10bdfcff1aedbaf919f3bc823f1ecf..40435bfb0df998d2d97ec9010535ca9a6cdffcd3:/emufs/indice_b.c diff --git a/emufs/indice_b.c b/emufs/indice_b.c index 9a9e9fe..96ada55 100644 --- a/emufs/indice_b.c +++ b/emufs/indice_b.c @@ -16,7 +16,8 @@ static void b_leer_header(char *src, B_NodoHeader *header); static void b_actualizar_header(char *src, B_NodoHeader *header); static B_NodoEntry *b_leer_claves(char *src, B_NodoHeader *header); static void b_insertar_en_nodo(INDICE *idx, CLAVE clave, INDICE_DATO dato, int nodo_id, char *nodo, int hijo1, int hijo2); -const int b_elegir_izquierdo(INDICE *idx, int a, int b); +static int b_elegir_izquierdo(INDICE *idx, int a, int b); +static void b_borrar_clave(INDICE *idx, char *nodo, int nodo_id, CLAVE k); void emufs_indice_b_crear(INDICE *idx) { @@ -122,6 +123,50 @@ INDICE_DATO emufs_indice_b_buscar(INDICE *idx, CLAVE clave) return ret; } +int emufs_indice_b_borrar(INDICE *idx, CLAVE k) +{ + /* Busco el nodo que contiene la clave,si es que esta existe */ + char *nodo; + int nodo_id, i; + char encontrado=0; + B_NodoHeader header; + B_NodoEntry *claves; + + nodo_id = 0; /* Tomo la raiz */ + nodo = b_leer_nodo(idx, nodo_id); + PERR("Buscando clave a borrar"); + while (nodo && !encontrado) { + /* Obtengo los datos del nodo */ + b_leer_header(nodo, &header); + claves = b_leer_claves(nodo, &header); + + i=0; + while ((i= MIN_HIJOS(idx)) { + PERR("Borrar completo sin fundir"); + return; + } + + /* Tengo que pasar datos o fundir nodos :-( */ + PERR("TODO : FUNDIR NODOS!!!!\n"); +} +