]> git.llucax.com Git - z.facultad/75.06/emufs.git/blobdiff - gui/articulos.c
hice un par de funciones, tendria que empezar a probarlo porque van empezar a saltar...
[z.facultad/75.06/emufs.git] / gui / articulos.c
index c9b42d857960d8f3e273302d24453dac6fecfd3f..af349ddfeb9a5827a819bad59d4c09ab3b95beff 100644 (file)
@@ -16,6 +16,15 @@ t_LstArticulos *art_cargar(const char *filename)
        }
 
        node = xmlDocGetRootElement(document);
+       while (node) {
+               if (node->type == XML_ELEMENT_NODE) {
+                       if (strcmp(node->name, "ARTICULOS") == 0) {
+                               node = node->children;
+                               break;
+                       }
+               }
+               node = node->next;
+       }
 
        /* Cuento la cantidad de articulos en el archivo */
        cant = 0;
@@ -29,20 +38,36 @@ t_LstArticulos *art_cargar(const char *filename)
        tmp->cant = cant;
        tmp->array = (t_Articulo *)malloc(sizeof(t_Articulo)*cant);
 
+       if (tmp->array == NULL) {
+               xmlFreeDoc(document);
+               xmlCleanupParser();
+               free(tmp);
+               return NULL;
+       }
+
        node = xmlDocGetRootElement(document);
+       while (node) {
+               if (node->type == XML_ELEMENT_NODE) {
+                       if (strcmp(node->name, "ARTICULOS") == 0) {
+                               node = node->children;
+                               break;
+                       }
+               }
+               node = node->next;
+       }
 
        /* leo los datos */
        cant = 0;
        for ( ; node ; node = node->next) {
                if (node->type == XML_ELEMENT_NODE) {
                        if (strcmp(node->name, "ARTICULO") == 0) {
-                               strncpy(tmp->array[cant].numero, xmlGetProp(node, "NroArtículo"), 8);
-                               strncpy(tmp->array[cant].desc, xmlGetProp(node, "Descripción"), 50);
-                               strncpy(tmp->array[cant].presentacion, xmlGetProp(node, "Presentación"), 30);
+                               strncpy(tmp->array[cant].numero, xmlGetProp(node, "NroArticulo"), 8);
+                               strncpy(tmp->array[cant].desc, xmlGetProp(node, "Descripcion"), 50);
+                               strncpy(tmp->array[cant].presentacion, xmlGetProp(node, "Presentacion"), 30);
                                strncpy(tmp->array[cant].existencia, xmlGetProp(node, "Existencia"), 8);
-                               strncpy(tmp->array[cant].ubicacion, xmlGetProp(node, "Ubicación"), 30);
+//                             strncpy(tmp->array[cant].ubicacion, xmlGetProp(node, "Ubicacion"), 30);
                                strncpy(tmp->array[cant].pvu, xmlGetProp(node, "PVU"), 8);
-                               strncpy(tmp->array[cant].emin, xmlGetProp(node, "Emín"), 8);
+                               strncpy(tmp->array[cant].emin, xmlGetProp(node, "Emin"), 8);
                                ++cant;
                        }
                }
@@ -65,6 +90,14 @@ int art_liberar(t_LstArticulos *l)
 
 t_Articulo *art_obtener(t_LstArticulos *lst, const char *numero)
 {
+       int i, j;
+       int n = atoi(numero);
+       for(i=0; i<lst->cant; i++) {
+               j = atoi(lst->array[i].numero);
+               if (n == j)
+                       return &lst->array[i];
+       }
+
        return NULL;
 }