X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/blobdiff_plain/02e27a9ec780fe569744b52463eabdd83c8cf68f..165cd5e4fd5d2440d04531adf8c30378b0f8fef4:/gui/articulos.c diff --git a/gui/articulos.c b/gui/articulos.c index c9b42d8..af349dd 100644 --- a/gui/articulos.c +++ b/gui/articulos.c @@ -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; icant; i++) { + j = atoi(lst->array[i].numero); + if (n == j) + return &lst->array[i]; + } + return NULL; }