static EMUFS_BLOCK_ID emufs_tipo1_grabar_bloque_fsc(EMUFS*, void*,
EMUFS_BLOCK_ID, EMUFS_FREE, int*);
-
CLAVE grabar_ordenado_en_bloque(EMUFS *emu, void *ptr, EMUFS_REG_SIZE size,
- EMUFS_FREE fs, void *bloque, int num_bloque, int *err);
+ void *bloque, int num_bloque, EMUFS_FREE fs, int *err);
/*------------------ Funciones públicas ----------------------*/
INDEX_DAT query;
EMUFS_FREE fs;
char *bloque, *aux, *new_bloque;
- int cant_reg, i, result;
+ int cant_reg, i, result, dif;
/*le asigno un posible numero de bloque para el caso en que no encuentre donde meterlo*/
query.num_bloque = num_bloque;
0 = Sin problemas, retorno bloque donde insertar
1 = Error de lectura en algun nodo, abortar operacion en funcion invocante.
*/
- result = emufs_b_plus_get_bloque(emu->indices, &query);
+ result = emufs_b_plus_get_bloque(emu->indices, &query, 0);
if (result == 1){
PERR("SE PRODUJO UN ERROR EN EL ARBOL.. ABORTANDO");
return -1;
/*borro lo que sobra en el bloque original, guardando el footer*/
memset(aux, 0, emu->tam_bloque - move_size - sizeof(int));
/*actualizo la cant de registros (footer)*/
- memcpy(bloque+emu->tam_bloque-sizeof(int), i, sizeof(int));
+ memcpy(bloque+emu->tam_bloque-sizeof(int), &i, sizeof(int));
/*grabo el bloque original*/
emufs_tipo1_grabar_bloque_fsc(emu, bloque, num_bloque, EMUFS_NOT_FOUND, err);
/*actualizo el footer del nuevo bloque*/
- memcpy(new_bloque+emu->tam_bloque, cant_reg-i, sizeof(int));
+ dif = cant_reg - i; /*por las dudas*/
+ memcpy(new_bloque+emu->tam_bloque, &dif, sizeof(int));
/*genero un nuevo espacio para un bloque en el archivo y lo cargo en query
la clave ya estaba en query desde antes*/
query.num_bloque = create_new_block(emu);