From fe2c3a78b62878034eac49333016b18bb68b648d Mon Sep 17 00:00:00 2001 From: Ricardo Markiewicz Date: Sun, 30 May 2004 23:52:38 +0000 Subject: [PATCH] Agrego T4 y T5 a la GUI en varios lados. La carga inicial se hace sin problemas, palma en obtener_sig_clave porque no esta contemplado usar la otra funcion obtener_sig_clave_isam --- emufs/indices.c | 2 +- emufs_gui/articulos.c | 12 ++++++++++-- emufs_gui/emufs.dtd | 4 ++-- emufs_gui/emufs.xml | 2 +- emufs_gui/emufs_view.c | 18 ++++++++++++++++-- 5 files changed, 30 insertions(+), 8 deletions(-) diff --git a/emufs/indices.c b/emufs/indices.c index ccb782a..12fe409 100644 --- a/emufs/indices.c +++ b/emufs/indices.c @@ -90,7 +90,7 @@ INDICE *emufs_indice_crear(EMUFS *emu, char *nombre, INDICE_FUNCION funcion, IND emufs_b_plus_crear(tmp); tmp->obtener_menor_clave = emufs_b_plus_obtener_menor_clave; tmp->obtener_mayor_clave = emufs_b_plus_obtener_mayor_clave; - tmp->obtener_sig_clave_isam = emufs_b_plus_obtener_sig_clave; + tmp->obtener_sig_clave_isam = emufs_b_plus_obtener_sig_clave; break; } diff --git a/emufs_gui/articulos.c b/emufs_gui/articulos.c index 37288f4..5efb324 100644 --- a/emufs_gui/articulos.c +++ b/emufs_gui/articulos.c @@ -117,7 +117,12 @@ t_LstArticulos *art_cargar(t_Parametros *param) PERR("Voy a agregar un indice"); emufs_agregar_indice(tmp->fp, "presentacion", IND_EXAHUSTIVO, param->ind_art[2].tipo_arbol, IDX_STRING, STRUCT_OFFSET(un_articulo, desc), param->ind_art[2].tam_bloque, 1); emufs_agregar_indice(tmp->fp, "desc", IND_EXAHUSTIVO, param->ind_art[1].tipo_arbol, IDX_STRING, STRUCT_OFFSET(un_articulo, desc), param->ind_art[1].tam_bloque, 0); - emufs_agregar_indice(tmp->fp, "codigo", IND_PRIMARIO, param->ind_art[0].tipo_arbol, IDX_INT, 0, param->ind_art[0].tam_bloque, 0); + + /* Para secuencial indexado el indice primario siempre es el B+ */ + if ((param->tipo_arch_art != T4) && (param->tipo_arch_art != T5)) + emufs_agregar_indice(tmp->fp, "codigo", IND_PRIMARIO, param->ind_art[0].tipo_arbol, IDX_INT, 0, param->ind_art[0].tam_bloque, 0); + else + emufs_agregar_indice(tmp->fp, "codigo", IND_PRIMARIO, IND_B_PLUS, IDX_INT, 0, param->ind_art[0].tam_bloque, 0); if (!tmp->fp) { PERR("NO SE PUDO CREAR ARCHIVO ARTICULOS"); free(tmp); @@ -559,7 +564,10 @@ void art_reformatear(t_Parametros *param) fprintf(stderr, "NUEVO %s con tipo %d\n", emu->nombre, param->tipo_arch_art); emufs_agregar_indice(emu, "presentacion", IND_EXAHUSTIVO, param->ind_art[2].tipo_arbol, IDX_STRING, STRUCT_OFFSET(un_articulo, desc), param->ind_art[2].tam_bloque, 1); emufs_agregar_indice(emu, "desc", IND_EXAHUSTIVO, param->ind_art[1].tipo_arbol, IDX_STRING, STRUCT_OFFSET(un_articulo, desc), param->ind_art[1].tam_bloque, 0); - emufs_agregar_indice(emu, "codigo", IND_PRIMARIO, param->ind_art[0].tipo_arbol, IDX_INT, 0, param->ind_art[0].tam_bloque, 0); + if ((param->tipo_arch_art != T4) && (param->tipo_arch_art != T5)) + emufs_agregar_indice(emu, "codigo", IND_PRIMARIO, param->ind_art[0].tipo_arbol, IDX_INT, 0, param->ind_art[0].tam_bloque, 0); + else + emufs_agregar_indice(emu, "codigo", IND_PRIMARIO, IND_B_PLUS, IDX_INT, 0, param->ind_art[0].tam_bloque, 0); PERR("Listo"); /* Ahora solo resta volver a meter todos los datos en el archivo */ fp = fopen(tmpfile, "rb"); diff --git a/emufs_gui/emufs.dtd b/emufs_gui/emufs.dtd index a28fd4e..6226f2e 100644 --- a/emufs_gui/emufs.dtd +++ b/emufs_gui/emufs.dtd @@ -11,7 +11,7 @@ @@ -23,7 +23,7 @@ diff --git a/emufs_gui/emufs.xml b/emufs_gui/emufs.xml index 560aeb4..946a50d 100644 --- a/emufs_gui/emufs.xml +++ b/emufs_gui/emufs.xml @@ -4,7 +4,7 @@ articulos.xml - + diff --git a/emufs_gui/emufs_view.c b/emufs_gui/emufs_view.c index 0062719..8a0a1d6 100644 --- a/emufs_gui/emufs_view.c +++ b/emufs_gui/emufs_view.c @@ -61,7 +61,6 @@ void print_help(char *s) int leer_tipo_arbol(char *s) { if (strcmp(s, "B") == 0) return 0; if (strcmp(s, "BA") == 0) return 1; - if (strcmp(s, "BP") == 0) return 2; /* Por defecto es un B */ return 0; @@ -723,13 +722,15 @@ void preguntar_nuevo_tipo(const char *title, int *tipo, int *tam_bloque, int *ta mvwaddstr(win, 0, 1, title); form = form_crear(win); - form_agregar_widget(form, RADIO, "Tipo de archivo", 3, "T1,T2,T3"); + form_agregar_widget(form, RADIO, "Tipo de archivo", 3, "T1,T2,T3,T4,T5"); form_ejecutar(form, 1,1); s = form_obtener_valor_char(form, "Tipo de archivo"); if (strcmp(s, "T1") == 0) n = T1; if (strcmp(s, "T2") == 0) n = T2; if (strcmp(s, "T3") == 0) n = T3; + if (strcmp(s, "T4") == 0) n = T4; + if (strcmp(s, "T5") == 0) n = T5; form_destruir(form); @@ -777,6 +778,19 @@ void preguntar_nuevo_tipo(const char *title, int *tipo, int *tam_bloque, int *ta if ((*tam_reg) != -1) (*tam_reg) = form_obtener_valor_int(form, "Tamaño de registro"); form_destruir(form); + break; + case T4: + case T5: + form = form_crear(win); + form_agregar_widget(form, INPUT, "Tamaño de bloque", 8, ""); + is_ok = 0; + do { + form_set_valor(form, "Tamaño de bloque", ""); + form_ejecutar(form, 1,1); + if (form_obtener_valor_int(form, "Tamaño de bloque") > 0) is_ok = 1; + } while (!is_ok); + (*tam_bloque) = form_obtener_valor_int(form, "Tamaño de bloque"); + form_destruir(form); } werase(win); wrefresh(win); -- 2.43.0