]> git.llucax.com Git - z.facultad/75.06/emufs.git/blobdiff - emufs_gui/articulos.c
* Se agregan 2 nuevas funciones y un nuevo tipo de dato (a completar)
[z.facultad/75.06/emufs.git] / emufs_gui / articulos.c
index 4899ab309165dd607401c8ec3ed3248b86a4b05c..5e65a170d0e8dc5d6d78f11a8c450cbce1e5c40a 100644 (file)
@@ -6,14 +6,15 @@ static t_LstArticulos *lst_articulos;
 
 static t_Articulo *art_form_buscar(WINDOW *win);
 
-static void *procesar_guardar_articulo(t_Articulo *src, int *size, t_LstArticulos *lst);
-static int procesar_leer_articulo(t_Articulo *dst, void *src, int size, t_LstArticulos *lst);
+static void *procesar_guardar_articulo(t_Articulo *src, EMUFS_REG_SIZE *size, t_LstArticulos *lst);
+static int procesar_leer_articulo(t_Articulo *dst, void *src, EMUFS_REG_SIZE size, t_LstArticulos *lst);
 
 t_LstArticulos *art_cargar(const char *filename)
 {
        xmlDocPtr document;
        xmlNode *node, *inicio;
-       int cant, size, error, i, id;
+       int cant, error = 0, i, id;
+       EMUFS_REG_SIZE size;
        void *save;
        t_LstArticulos *tmp;
        lst_articulos = NULL;
@@ -61,7 +62,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", T1, sizeof(t_Articulo)*2, sizeof(t_Articulo)); 
+               tmp->fp = emufs_crear("articulos", T2, 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) {
@@ -126,7 +127,7 @@ t_Articulo *art_obtener(t_LstArticulos *lst, const char *numero)
        /* FIXME : NO ME GUSTA :-/ */
        t_Articulo *art;
        void *tmp;
-       int i,error;
+       int i, error = 0;
        EMUFS_REG_SIZE size;
        int n = atoi(numero);
 
@@ -215,7 +216,7 @@ void art_eliminar(char *s)
 {
        WINDOW *win;
        t_Articulo *articulo;
-
+       int i;
        win = newwin(8, COLS-2, 13, 1);
        box(win, 0, 0);
        wrefresh(win);
@@ -229,7 +230,14 @@ void art_eliminar(char *s)
                wrefresh(win);
                getch();
        } else {
-               /* TODO : Eliminar un registro */
+               for(i=0; i<lst_articulos->cant; i++) {
+                       if (lst_articulos->array[i].numero == articulo->numero) {
+                               lst_articulos->array[i].numero = -1;
+                               lst_articulos->fp->borrar_registro(lst_articulos->fp, lst_articulos->array[i].num_reg);
+                               break;
+                       }
+               }
+               free(articulo);
        }
 
        werase(win);
@@ -243,7 +251,8 @@ void art_agregar(char *s)
        t_Form *form;
        t_Articulo art;
        void *save;
-       int error, size, existe, i;
+       int error = 0, existe, i;
+       EMUFS_REG_SIZE size;
 
        win = newwin(8, COLS-2, 13, 1);
        box(win, 0, 0);
@@ -304,7 +313,7 @@ void art_agregar(char *s)
        delwin(win);
 }
 
-int procesar_leer_articulo(t_Articulo *dst, void *src, int size, t_LstArticulos *lst)
+int procesar_leer_articulo(t_Articulo *dst, void *src, EMUFS_REG_SIZE size, t_LstArticulos *lst)
 {
        char *fin, *ini;
        switch (lst->fp->tipo) {
@@ -350,7 +359,7 @@ int procesar_leer_articulo(t_Articulo *dst, void *src, int size, t_LstArticulos
        return 1; /* Todo ok */
 }
 
-void *procesar_guardar_articulo(t_Articulo *src, int *size, t_LstArticulos *lst)
+void *procesar_guardar_articulo(t_Articulo *src, EMUFS_REG_SIZE *size, t_LstArticulos *lst)
 {
        char *tmp=NULL;
        int i[6];