X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/blobdiff_plain/41c98250247b3e463ab8b4f44ba75aa7f4890eaf..087bc4de9c787d31ba4711af77af8620c4eae004:/emufs_gui/articulos.c diff --git a/emufs_gui/articulos.c b/emufs_gui/articulos.c index 5662bc7..51f2b1b 100644 --- a/emufs_gui/articulos.c +++ b/emufs_gui/articulos.c @@ -12,6 +12,26 @@ static int procesar_leer_articulo(t_Articulo *dst, void *src, EMUFS_REG_SIZE siz /* Manejo de la lista doble */ static t_Reg_Articulo *crear_nodo_articulo(EMUFS_REG_ID reg, unsigned int num); static int agregar_nodo_articulo(t_LstArticulos *lst, t_Reg_Articulo *nodo); +static int eliminar_nodo_articulo(t_LstArticulos *lst, t_Reg_Articulo *nodo); + +int eliminar_nodo_articulo(t_LstArticulos *lst, t_Reg_Articulo *nodo) +{ + if (nodo == NULL) return 0; + if (nodo->ant == NULL) { + /* Me piden borrar el primer nodo */ + if (nodo->sig) { + nodo->sig->ant = NULL; + } + lst->primero = nodo->sig; + } else { + if (nodo->sig) { + nodo->sig->ant = nodo->ant; + } + nodo->ant->sig = nodo->sig; + } + free(nodo); + return 1; +} t_Reg_Articulo *crear_nodo_articulo(EMUFS_REG_ID reg, unsigned int num) { @@ -241,7 +261,7 @@ void art_eliminar(char *s) { WINDOW *win; t_Articulo *articulo; - t_Reg_Articulo *nodo, *del; + t_Reg_Articulo *nodo; win = newwin(8, COLS-2, 13, 1); box(win, 0, 0); wrefresh(win); @@ -259,19 +279,7 @@ void art_eliminar(char *s) while (nodo) { if (nodo->numero == articulo->numero) { lst_articulos->fp->borrar_registro(lst_articulos->fp, nodo->num_reg); - del = nodo; - if (nodo->ant) { - nodo->ant->sig = nodo->sig; - if (nodo->sig) { - nodo->sig->ant = nodo->ant; - } - } else { - if (nodo->sig) { - nodo->sig->ant = NULL; - } - lst_articulos->primero = nodo->sig; - } - free(del); + eliminar_nodo_articulo(lst_articulos, nodo); break; } nodo = nodo->sig;