X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/blobdiff_plain/66243c7630bd677829a4263930f856fb70a0aa68..265adc57fde75ab2a4d45cc307074f562ac45179:/emufs_gui/articulos.c?ds=inline diff --git a/emufs_gui/articulos.c b/emufs_gui/articulos.c index ca39940..84ad341 100644 --- a/emufs_gui/articulos.c +++ b/emufs_gui/articulos.c @@ -60,7 +60,7 @@ 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, sizeof(t_Articulo)); + tmp->fp = emufs_crear("articulos", T1, 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) { @@ -101,7 +101,7 @@ int art_liberar(t_LstArticulos *l) ver_archivo_FS(l->fp); emufs_destruir(l->fp); - free(l->array); +/* free(l->array); */ free(l); lst_articulos = NULL; @@ -224,7 +224,8 @@ void art_agregar(char *s) WINDOW *win; t_Form *form; t_Articulo art; - int error; + void *save; + int error, size; win = newwin(8, COLS-2, 13, 1); box(win, 0, 0); @@ -248,9 +249,20 @@ void art_agregar(char *s) strcpy(art.emin, form_obtener_valor_char(form, "Stock Mínimo")); /* Ya leido el articulo ahora paso a guardarlo en el archivo y agregarlo a la lista */ - lst_articulos->array[lst_articulos->cant].num_reg = lst_articulos->fp->grabar_registro(lst_articulos->fp, &art, sizeof(t_Articulo), &error); - lst_articulos->array[lst_articulos->cant].numero = art.numero; - lst_articulos->cant++; + save = procesar_guardar_articulo(&art, &size, lst_articulos); + if (save != NULL) { + lst_articulos->array[lst_articulos->cant].num_reg = lst_articulos->fp->grabar_registro(lst_articulos->fp, save, size, &error); + if (error) { + wattron(win, COLOR_PAIR(COLOR_YELLOW)); + mvwaddstr(win, 6, 4, "Error al tratar de agregar el nuevo registro"); + wattroff(win, COLOR_PAIR(COLOR_YELLOW)); + wrefresh(win); + getch(); + } + lst_articulos->array[lst_articulos->cant].numero = art.numero; + lst_articulos->cant++; + free(save); + } form_destruir(form); @@ -273,27 +285,26 @@ int procesar_leer_articulo(t_Articulo *dst, void *src, int size, t_LstArticulos /* Los \0 son los delimitadores de campo! */ fin = ini; while (*fin!='\0') fin++; - memcpy(dst->desc, ini, fin-ini); + memcpy(dst->desc, ini, fin-ini+1); ini = fin+1; fin = ini; while (*fin!='\0') fin++; - memcpy(dst->presentacion, ini, fin-ini); + memcpy(dst->presentacion, ini, fin-ini+1); ini = fin+1; fin = ini; while (*fin!='\0') fin++; - memcpy(dst->existencia, ini, fin-ini); + memcpy(dst->existencia, ini, fin-ini+1); ini = fin+1; fin = ini; while (*fin!='\0') fin++; - memcpy(dst->pvu, ini, fin-ini); + memcpy(dst->pvu, ini, fin-ini+1); ini = fin+1; fin = (char *)src+size; - while (*fin!='\0') fin++; - memcpy(dst->pvu, ini, fin-ini); + memcpy(dst->emin, ini, fin-ini+1); break; case T3: