X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/blobdiff_plain/80364e9979d7f371e1aaee88bfd46dabd704d840..e47297a011fb5230c79464af7cd72e78b266fc48:/emufs_gui/articulos.c?ds=sidebyside diff --git a/emufs_gui/articulos.c b/emufs_gui/articulos.c index 2751be3..6226225 100644 --- a/emufs_gui/articulos.c +++ b/emufs_gui/articulos.c @@ -10,14 +10,10 @@ t_LstArticulos *art_cargar(const char *filename) xmlDocPtr document; xmlNode *node, *inicio; int cant; - t_Articulo art; - t_LstArticulos *tmp = (t_LstArticulos *)malloc(sizeof(t_LstArticulos)); - if (tmp == NULL) return NULL; document = xmlReadFile(filename, "ISO-8859-1",0); if (document == NULL) { - free(tmp); return NULL; } @@ -43,10 +39,13 @@ t_LstArticulos *art_cargar(const char *filename) } } } + t_LstArticulos *tmp = (t_LstArticulos *)malloc(sizeof(t_LstArticulos)); + if (tmp == NULL) return NULL; tmp->cant = cant; tmp->array = (t_Reg_Articulo *)malloc(sizeof(t_Reg_Articulo)*cant); if (tmp->array == NULL) { + printf("Fallo malloc\n"); xmlFreeDoc(document); xmlCleanupParser(); free(tmp); @@ -56,25 +55,27 @@ t_LstArticulos *art_cargar(const char *filename) /* leo los datos y los guardo en el archivo*/ cant = 0; /* FIXME : por ahora hago que entren 2 bloques y me sobre algo de espacio*/ - tmp->fp = emufs_crear("articulos", T3, sizeof(t_Articulo)*2+50, sizeof(t_Articulo)); + tmp->fp = emufs_crear("articulos", T3, sizeof(t_Articulo)*2, sizeof(t_Articulo)); for (node=inicio ; node ; node = node->next) { if (node->type == XML_ELEMENT_NODE) { if (strcmp(node->name, "ARTICULO") == 0) { - art.numero = atoi(xmlGetProp(node, "NroArtículo")); - strncpy(art.desc, xmlGetProp(node, "Descripción"), 50); + t_Articulo art; + /* art.numero = atoi(xmlGetProp(node, "NroArtículo"));*/ + /* strncpy(art.desc, xmlGetProp(node, "Descripción"), 50); strncpy(art.presentacion, xmlGetProp(node, "Presentación"), 30); - strncpy(art.existencia, xmlGetProp(node, "Existencia"), 8); -// / strncpy(tmp->array[cant].ubicacion, xmlGetProp(node, "Ubicacion"), 30); + strncpy(art.existencia, xmlGetProp(node, "Existencia"), 8);*/ + /* strncpy(tmp->array[cant].ubicacion, xmlGetProp(node, "Ubicacion"), 30);*/ strncpy(art.pvu, xmlGetProp(node, "PVU"), 8); - strncpy(art.emin, xmlGetProp(node, "Emín"), 8); + /* strncpy(art.emin, xmlGetProp(node, "Emín"), 8); */ /* Ya leido el articulo ahora paso a guardarlo en el archivo y agregarlo a la lista */ - tmp->array[cant].numero = art.numero; tmp->array[cant].num_reg = tmp->fp->grabar_registro(tmp->fp, &art, sizeof(t_Articulo)); /* REGISTRO CTE! */ + tmp->array[cant].numero = art.numero; ++cant; } } } + printf("1\n"); xmlFreeDoc(document); xmlCleanupParser(); @@ -99,7 +100,7 @@ int art_liberar(t_LstArticulos *l) t_Articulo *art_obtener(t_LstArticulos *lst, const char *numero) { /* FIXME : NO ME GUSTA :-/ */ - static t_Articulo art; + t_Articulo *art; int i; int n = atoi(numero); @@ -107,9 +108,10 @@ t_Articulo *art_obtener(t_LstArticulos *lst, const char *numero) for(i=0; icant; i++) { if (n == lst->array[i].numero) { + art = (t_Articulo *)malloc(sizeof(t_Articulo)); /* Ya se cual tengo que retornar. Ahora veo si lo cargo desde el archivo */ - lst->fp->leer_registro(lst->fp, lst->array[i].num_reg, &art, sizeof(t_Articulo)); - return &art; + lst->fp->leer_registro(lst->fp, lst->array[i].num_reg, art, sizeof(t_Articulo)); + return art; } } @@ -157,6 +159,7 @@ void art_modificar(char *s) /* TODO : Actualizar registro */ form_destruir(form); + free(articulo); } werase(win);