From 2112695675116462a84e74e6b4ee25b78852956a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Nicol=C3=A1s=20Dimov?= Date: Sat, 29 May 2004 06:06:19 +0000 Subject: [PATCH] al parecer el tipo3 tambien anda... ahora falta debug de eliminacion e implemetar funciones de busqueda --- emufs/Makefile | 4 +- emufs/tipo1.c | 1 - emufs/tipo3.c | 2 - emufs/tipo3_bplus_main.c | 125 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 128 insertions(+), 4 deletions(-) create mode 100644 emufs/tipo3_bplus_main.c diff --git a/emufs/Makefile b/emufs/Makefile index 134226f..e1c92c9 100644 --- a/emufs/Makefile +++ b/emufs/Makefile @@ -5,7 +5,7 @@ LDFLAGS= -lm -lmenu -lncurses -lxml2 EMUFS_COMMON=emufs.o tipo1.o tipo2.o tipo3.o idx.o did.o fsc.o common.o indices.o indice_b.o indice_bplus.o -TARGETS=libemufs.a tipo1_main tipo2_main tipo3_main b_plus_test tipo1_bplus_main +TARGETS=libemufs.a tipo1_main tipo2_main tipo3_main b_plus_test tipo1_bplus_main tipo3_bplus_main all: $(TARGETS) @@ -19,6 +19,8 @@ b_plus_test: b_plus_test.o $(EMUFS_COMMON) tipo1_bplus_main: tipo1_bplus_main.o $(EMUFS_COMMON) +tipo3_bplus_main: tipo3_bplus_main.o $(EMUFS_COMMON) + #b_plus_test: b_plus_test.o b_plus.o indices.o emufs.o #b_test: b_test.o indice_b.o diff --git a/emufs/tipo1.c b/emufs/tipo1.c index 1af58b4..d93efd4 100644 --- a/emufs/tipo1.c +++ b/emufs/tipo1.c @@ -864,7 +864,6 @@ int emufs_tipo1_insertar_ordenado(EMUFS *emu, void *ptr, EMUFS_REG_SIZE size, in clave = grabar_ordenado_en_bloque(emu,ptr,size,new_bloque,query.num_bloque, emu->tam_bloque-move_size,err); /*actualizo el arbol con la nueva clave*/ query.clave = clave; - printf("clave enviada = %d\n", clave); emufs_b_plus_insertar(emu->indices, &query); /*grabo el bloque original*/ emufs_tipo1_grabar_bloque_fsc(emu, bloque, num_bloque, EMUFS_NOT_FOUND, err); diff --git a/emufs/tipo3.c b/emufs/tipo3.c index 744f5fe..f9905ec 100644 --- a/emufs/tipo3.c +++ b/emufs/tipo3.c @@ -287,10 +287,8 @@ EMUFS_REG_ID emufs_tipo3_grabar_registro(EMUFS *emu, void *ptr, EMUFS_REG_SIZE t if ( emu->tam_bloque-sizeof(EMUFS_REG_ID) < emu->tam_reg ){ /*Si el registro ocupa mas de un bloque (original) resto = emu->tam_bloque-sizeof(EMUFS_REG_ID)*/ resto += sizeof(EMUFS_REG_ID); - /*resto = emu->tam_reg - i*(emu->tam_bloque - sizeof(EMUFS_REG_ID)) + sizeof(EMUFS_REG_ID);*/ if ( cant_bloques-1 == i ) resto = emu->tam_reg - i*(emu->tam_bloque - sizeof(EMUFS_REG_ID))+sizeof(EMUFS_REG_ID); - /*printf("fs-resto = %d\n", fs-resto);*/ if ( emufs_fsc_agregar(emu, num_bloque+i, fs-resto) !=0 ){ fclose(file); if (bloque) free(bloque); diff --git a/emufs/tipo3_bplus_main.c b/emufs/tipo3_bplus_main.c new file mode 100644 index 0000000..fb2f0c2 --- /dev/null +++ b/emufs/tipo3_bplus_main.c @@ -0,0 +1,125 @@ +#include +#include +#include "emufs.h" +#include "tipo3.h" +#include "indices.h" +#include "indice_bplus.h" + + +char* cargar_registro(char* texto_ini,int len_ini, CLAVE clave, char *texto_fin, int len_fin) +{ + char *reg; + reg = (char*)malloc(len_ini+sizeof(CLAVE)+len_fin+1); /* +1 para el \0 */ + memcpy(reg, texto_ini, len_ini); + memcpy(reg+len_ini, &clave, sizeof(CLAVE)); + strcpy(reg+len_ini+sizeof(CLAVE), texto_fin); + return reg; +} + + +void imprimir_reg(char* reg, int off, int len) +{ + CLAVE clave; + int i; + memcpy(&clave, reg+off, sizeof(CLAVE)); + printf("CLAVE = %d\n", clave); + printf("REGISTRO ="); + for(i=0; i