]> git.llucax.com Git - z.facultad/75.06/emufs.git/blobdiff - emufs_gui/articulos.c
* Arreglo un bug que hacia que se cuelgue la GUI.
[z.facultad/75.06/emufs.git] / emufs_gui / articulos.c
index 83b5fb82ead05c318de94b84d733dd80eb823c91..241547f1aa14320d620b0c19410d06adc6b3018e 100644 (file)
@@ -60,15 +60,15 @@ int agregar_nodo_articulo(t_LstArticulos *lst, t_Reg_Articulo *nodo)
        return 1;
 }
 
-t_LstArticulos *art_cargar(const char *filename, int tipo)
+t_LstArticulos *art_cargar(const char *filename, int tipo, int tam_bloque)
 {
        xmlDocPtr document;
        xmlNode *node, *inicio;
-       int cant, error = 0, i;
+       int error = 0, i;
        EMUFS_REG_SIZE size;
        t_LstArticulos *tmp;
        lst_articulos = NULL;
-       EMUFS_REG_ID id;
+       EMUFS_REG_ID id, *indices, indices_cant;
 
        tmp = (t_LstArticulos *)malloc(sizeof(t_LstArticulos));
        if (tmp == NULL) return NULL;
@@ -94,12 +94,14 @@ t_LstArticulos *art_cargar(const char *filename, int tipo)
                        node = node->next;
                }
 
-               tmp->fp = emufs_crear("articulos", tipo-1, sizeof(t_Articulo)*40+128, sizeof(t_Articulo));
+               fprintf(stderr, "bloque = %d\n", tam_bloque);
+               tmp->fp = emufs_crear("articulos", tipo-1, tam_bloque, sizeof(t_Articulo));
                for (node=inicio ; node ; node = node->next) {
                        if (node->type == XML_ELEMENT_NODE) {
                                if (strcmp(node->name, "ARTICULO") == 0) {
                                        t_Articulo art;
                                        void *save;
+                                       memset(&art, 0, sizeof(t_Articulo));
                                        art.numero = atoi(xmlGetProp(node, "NroArtículo"));
                                        strncpy(art.desc, xmlGetProp(node, "Descripción"), 50);
                                        strncpy(art.presentacion, xmlGetProp(node, "Presentación"), 30);
@@ -122,18 +124,18 @@ t_LstArticulos *art_cargar(const char *filename, int tipo)
        } else {
                tmp->fp = emufs_abrir("articulos");
                /* Ahora trato de recuperar la info */
-               cant = emufs_idx_get_count(tmp->fp);
-               for(i=0; i<cant; i++) {
+               indices = emufs_idx_get(tmp->fp, &indices_cant);
+               for(i=0; i<indices_cant; i++) {
                        t_Articulo art;
                        void *save;
-                       id = emufs_idx_get_id_at(tmp->fp, i);
                        /* Leo el registro */
-                       save = tmp->fp->leer_registro(tmp->fp, id, &size, &error);
+                       save = tmp->fp->leer_registro(tmp->fp, indices[i], &size, &error);
                        if (procesar_leer_articulo(&art, save, size, tmp) == 1) {
-                               agregar_nodo_articulo(tmp, crear_nodo_articulo(id, art.numero));
+                               agregar_nodo_articulo(tmp, crear_nodo_articulo(indices[i], art.numero));
                                free(save);
                        }
                }
+               free(indices);
        }
 
        return tmp;