de ese registro :-) ... claro que no guarda nada, porque ahora recien voy a editar
los tipo1,2,3 para agregarle un modificar_registro que solo llama a borrar y luego
a agregar.
if (lst == NULL) lst = lst_articulos;
if (lst == NULL) return NULL;
if (lst == NULL) lst = lst_articulos;
if (lst == NULL) return NULL;
nodo = lst->primero;
while (nodo) {
if (n == nodo->numero) {
art = (t_Articulo *)malloc(sizeof(t_Articulo));
/* Ya se cual tengo que retornar. Ahora veo si lo cargo desde el archivo */
nodo = lst->primero;
while (nodo) {
if (n == nodo->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, nodo->num_reg, &size, &error);
if (error) {
tmp = lst->fp->leer_registro(lst->fp, nodo->num_reg, &size, &error);
if (error) {
t_Form *form;
t_Articulo *articulo;
char num[11];
t_Form *form;
t_Articulo *articulo;
char num[11];
+ void *tmp;
+ int error;
+ EMUFS_REG_SIZE size;
win = newwin(8, COLS-2, 13, 1);
box(win, 0, 0);
wrefresh(win);
win = newwin(8, COLS-2, 13, 1);
box(win, 0, 0);
wrefresh(win);
- articulo = art_form_buscar(win);
+ if (s == NULL) {
+ articulo = art_form_buscar(win);
+ } else {
+ /* Leo el registro directamente */
+ articulo = (t_Articulo *)malloc(sizeof(t_Articulo));
+ /* Ya se cual tengo que retornar. Ahora veo si lo cargo desde el archivo */
+ error = 0;
+ tmp = lst_articulos->fp->leer_registro(lst_articulos->fp, atoi(s), &size, &error);
+ if (error) {
+ free(articulo);
+ articulo = NULL;
+ } else {
+ if (procesar_leer_articulo(articulo, tmp, size, lst_articulos) != 1) {
+ free(articulo);
+ free(tmp);
+ articulo = NULL;
+ } else {
+ free(tmp);
+ }
+ }
+ }
if (articulo != NULL) {
form = form_crear(win);
if (articulo != NULL) {
form = form_crear(win);
p = item_userptr(cur);
unpost_menu(menu);
refresh();
p = item_userptr(cur);
unpost_menu(menu);
refresh();
- p((char *)item_name(cur));
+ p(NULL); /* Paso NULL para que ejecute la accion por defecto */
post_menu(menu);
box(menu_win,0,0);
mvwaddch(menu_win, 2, 0, ACS_LTEE);
post_menu(menu);
box(menu_win,0,0);
mvwaddch(menu_win, 2, 0, ACS_LTEE);
#include "registros.h"
#include "idx.h"
#include "registros.h"
#include "idx.h"
/* Se encarga de reemplazar los \0 un caracter visual, y segurar un \0 al final */
static char *procesar_registro_articulo(char *ptr, EMUFS_REG_SIZE *size);
/* Se encarga de reemplazar los \0 un caracter visual, y segurar un \0 al final */
static char *procesar_registro_articulo(char *ptr, EMUFS_REG_SIZE *size);
int scroll, actual_ancho;
int max_scroll, c;
EMUFS_REG_ID ant_indice, total_indice; /* Indice de registro que tengo en ANT */
int scroll, actual_ancho;
int max_scroll, c;
EMUFS_REG_ID ant_indice, total_indice; /* Indice de registro que tengo en ANT */
+ char *data[3]; /* Registros a mostrar en pantalla */
+ char codigo[50]; /* Variable para guardar el codigo actual para mandar a modificar */
EMUFS *fp;
int error;
fp = emufs_abrir("articulos");
EMUFS *fp;
int error;
fp = emufs_abrir("articulos");
scroll = 0;
while ((c=getch()) != 13) {
switch (c) {
scroll = 0;
while ((c=getch()) != 13) {
switch (c) {
+ case 'e': /* Quiero editar !!! */
+ sprintf(codigo, "%lu", ant_indice+1);
+ fprintf(stderr, "%s", codigo);
+ art_modificar(codigo);
+ /* Tengo que re-pintar algunas cosas */
+ box(actual[0], 0, 0);
+ box(sig[0], 0, 0);
+ box(ant[0], 0, 0);
+ mvwaddstr(actual[0], 0, w/6-3, "Actual");
+ mvwaddstr(ant[0], 0, w/6-4, "Anterior");
+ mvwaddstr(sig[0], 0, w/6-4, "Siguiente");
+ wrefresh(actual[0]);
+ wrefresh(sig[0]);
+ wrefresh(ant[0]);
+ break;
+ case 'a': /* Scroll */
scroll--;
if (scroll < 0) scroll = 0;
break;
scroll--;
if (scroll < 0) scroll = 0;
break;
scroll++;
if (scroll > max_scroll) scroll = max_scroll;
case 'k': /* Desplano los registros a derecha! */
scroll++;
if (scroll > max_scroll) scroll = max_scroll;
case 'k': /* Desplano los registros a derecha! */