+ /*cuando salgo de aca deberia tener cargado en curnode el nodo hoja que busque*/
+ for (i=0; i<curnode->cant_claves-1; i++){
+ if ( query->clave.i_clave >= curnode->claves[i] ){
+ if ( curnode->cant_claves != i ) /* si no es la ultima clave */
+ continue;
+ else { /* si era la ultima */
+ /* cargo en query el numero del bloque donde deberia ir la nueva clave */
+ query->num_bloque = curnode->hijos[i];
+ free(curnode);
+ return 0;
+ }
+ } else { /* si no era mayor, era menor */
+ /* guardo el bloque anterior porque me pase.. */
+ if ( i == 0 ){
+ /*CREAR UN NODO NUEVO PARA METER UNA CLAVE MENOR A TODAS */
+ /* EL NUEVO NODO VA A SER UNA HOJA */
+ NODO_B_PLUS *new_nodo = b_plus_crearnodo(idx);
+ if (new_nodo == NULL){
+ PERR("NO SE PUDO CREAR EL NUEVO NODO");
+ return -1;
+ }
+ /* aumento la cantidad de claves */
+ new_nodo->cant_claves++;
+ /* inserto la clave en el nuevo nodo (es la primera)*/
+ new_nodo->claves[0] = query->clave.i_clave;
+ /* inserto la referencia al nuevo bloque, con un n */
+ new_nodo->hijos[0] = query->num_nuevo_bloque;
+ /* no le cambio el nivel porque es hoja ( por default == 0)*/
+ /* Aca viene la papota.. hay que hacer una funcion que meta un nodo
+ * en el arbol y lo reestructure correctamente.
+ * Ademas hay que grabar el registro en el .dat*/
+ b_plus_actualizar(curnode, new_nodo); /* le mando el padre.. seguro que lo voy a necesitar */
+ return 0;
+ } else {
+ query->num_bloque = curnode->hijos[i-1];
+ free(curnode);
+ return 0;
+ }
+ }
+ }
+
+ if (curnode) free(curnode);