#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)
{
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;
}
int n = atoi(numero);
if (lst == NULL) lst = lst_articulos;
+ if (lst == NULL) return NULL;
for(i=0; i<lst->cant; 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;
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 */
+}
+