waddstr(win, b);
}
-void mostrar_art(WINDOW *win, CLAVE k, char *s)
+void mostrar_art(WINDOW *win, CLAVE k, char *s, INDICE *idx)
{
t_Articulo *art;
EMUFS_REG_ID dummy;
wattroff(win, A_BOLD);
mvwaddstr(win, 19, 5, " L = Siguiente");
mvwaddstr(win, 20, 5, " K = Anterior");
- art = art_obtener(lst_articulos, k.i_clave, &dummy);
+
+ if (strcmp(s, "codigo") == 0) {
+ art = art_obtener(lst_articulos, k.i_clave, &dummy);
+ } else {
+ INDICE_DATO *datos;
+ EMUFS_REG_SIZE size;
+ int cant, error;
+ char *tmp;
+
+ art = (t_Articulo *)malloc(sizeof(t_Articulo));
+ /* Ya se cual tengo que retornar. Ahora veo si lo cargo desde el archivo */
+ PERR("Busco todos los datos que tengan esta clave");
+ datos = idx->buscar_entradas(idx, k, &cant);
+ if (datos == NULL) {
+ free(art);
+ art = NULL;
+ } else {
+ fprintf(stderr, "Tengo %d datos\n", cant);
+ error = 1;
+ k.i_clave = datos[0].id;
+ PERR("Leo el primer dato");
+ tmp = lst_articulos->fp->leer_registro(lst_articulos->fp, k, &size, &error);
+ if (tmp == NULL) {
+ free(art);
+ art = NULL;
+ } else {
+ if (procesar_leer_articulo(art, tmp, size, lst_articulos) != 1) {
+ free(art);
+ free(tmp);
+ art = NULL;
+ }
+ }
+ free(datos);
+ }
+ }
+
+
if (art != NULL) {
sprintf(numero, "%08d", art->numero);
PERR("Muestro el primer elemento");
- mostrar_art(win1, k, s);
+ mostrar_art(win1, k, s, idx);
wrefresh(win1);
PERR("Sigue el usuario");
curs_set(0);
+ stack[0] = k;
while ((c=wgetch(win)) != 13) {
switch (c) {
case 'L':
continue;
}
werase(win1);
- mostrar_art(win1, k, s);
+ mostrar_art(win1, k, s, idx);
wrefresh(win1);
}
curs_set(1);