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);
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");
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;
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);
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);