X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/blobdiff_plain/bbec3e19d5390cf5ca1c0140e724fda136c37ad8..d1aba415c74a504ffcd56a77878d24661db1f98c:/emufs_gui/articulos.c diff --git a/emufs_gui/articulos.c b/emufs_gui/articulos.c index ca82c02..f816fc5 100644 --- a/emufs_gui/articulos.c +++ b/emufs_gui/articulos.c @@ -1,9 +1,11 @@ #include "articulos.h" -t_LstArticulos *lst_articulos; +static t_LstArticulos *lst_articulos; -t_Articulo *art_form_buscar(WINDOW *win); +static t_Articulo *art_form_buscar(WINDOW *win); + +static int procesar_articulo(t_Articulo *dst, void *src, int size, t_LstArticulos *lst); t_LstArticulos *art_cargar(const char *filename) { @@ -17,10 +19,8 @@ t_LstArticulos *art_cargar(const char *filename) if (tmp == NULL) return NULL; tmp->cant = 0; /* tmp->array = (t_Reg_Articulo *)malloc(sizeof(t_Reg_Articulo)*tmp->cant);*/ - printf("%p\n", tmp->array); if (tmp->array == NULL) { - printf("Fallo malloc\n"); free(tmp); return NULL; } @@ -111,20 +111,18 @@ t_Articulo *art_obtener(t_LstArticulos *lst, const char *numero) int n = atoi(numero); if (lst == NULL) lst = lst_articulos; + if (lst == NULL) return NULL; 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 */ tmp = lst->fp->leer_registro(lst->fp, lst->array[i].num_reg, &size); - if (tmp == NULL) { - return NULL; - } - if (size == sizeof(t_Articulo)) { - memcpy(art, tmp, sizeof(t_Articulo)); - } else { + + if (procesar_articulo(art, tmp, size, lst_articulos) != 1) { free(art); - art = NULL; + free(tmp); + return NULL; } free(tmp); return art; @@ -253,3 +251,20 @@ void art_agregar(char *s) delwin(win); } +int procesar_articulo(t_Articulo *dst, void *src, int size, t_LstArticulos *lst) +{ + switch (lst->fp->tipo) { + case T1: + case T2: + /* TODO : Leer campos variales */ + break; + case T3: + if (size != sizeof(t_Articulo)) { + return 0; /* El tamaƱo no encaja!! */ + } + memcpy(dst, src, size); + } + + return 1; /* Todo ok */ +} +