memcpy(bloque, &header, sizeof(B_NodoHeader));
fwrite(bloque, idx->tam_bloque, 1, fp);
+ free(bloque);
fclose(fp);
}
PERR(idx->nombre);
return 0;
}
-
- b_insertar_dup_en_pos(idx, claves[i].dato, dato);
+
+ if ((idx->funcion == IND_SELECCION) && (!emufs_indice_es_clave_nula(idx, clave)))
+ b_insertar_dup_en_pos(idx, claves[i].dato, dato);
if (idx->tipo_dato == IDX_STRING) {
/* Tengo que sacar el texto repetido del archivo de textos */
/* Agrego el DATO real al archivo de claves repetiras
* y me guardo el ID para poner en el indice
*/
+ if ((idx->funcion == IND_SELECCION) && (emufs_indice_es_clave_nula(idx, clave)))
+ /* UPS!, la clave que se va a insertar por primera vez es nula
+ * y soy un indice selectivo!, no lo puedo permitir, ciao!!
+ */
+ return 1;
dummy.id = -1;
dato.id = b_insertar_dup_en_pos(idx, dummy, dato);
}
}
#include "indice_b_asc.c"
-