]> git.llucax.com Git - z.facultad/75.06/emufs.git/blobdiff - emufs/tipo1.c
Detalles de la lista.
[z.facultad/75.06/emufs.git] / emufs / tipo1.c
index b7ea6e570d4cf25683f4ed4d4de77d9ab805cb6f..e82e1b4dc957cc34cdf9500321b88d73131cbcdc 100644 (file)
@@ -75,9 +75,8 @@ static void* emufs_tipo1_leer_bloque(EMUFS*, EMUFS_BLOCK_ID, int*);
 static EMUFS_BLOCK_ID emufs_tipo1_grabar_bloque_fsc(EMUFS*, void*,
                EMUFS_BLOCK_ID, EMUFS_FREE, int*);
 
 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, 
 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 ----------------------*/
 
 
 /*------------------ Funciones públicas ----------------------*/
 
@@ -804,7 +803,7 @@ int emufs_tipo1_insertar_ordenado(EMUFS *emu, void *ptr, EMUFS_REG_SIZE size, in
        INDEX_DAT query;
        EMUFS_FREE fs;
        char *bloque, *aux, *new_bloque;
        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;  
        
        /*le asigno un posible numero de bloque para el caso en que no encuentre donde meterlo*/
        query.num_bloque = num_bloque;  
@@ -820,7 +819,7 @@ int emufs_tipo1_insertar_ordenado(EMUFS *emu, void *ptr, EMUFS_REG_SIZE size, in
        0 = Sin problemas, retorno bloque donde insertar
        1 = Error de lectura en algun nodo, abortar operacion en funcion invocante.
        */
        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;
        if (result == 1){
                PERR("SE PRODUJO UN ERROR EN EL ARBOL.. ABORTANDO");
                return -1;
@@ -888,11 +887,12 @@ int emufs_tipo1_insertar_ordenado(EMUFS *emu, void *ptr, EMUFS_REG_SIZE size, in
                        /*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)*/
                        /*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*/
                        /*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);
                        /*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);