From d101c74c73c56c192e5650936ebcd73607974a95 Mon Sep 17 00:00:00 2001 From: Ricardo Markiewicz Date: Sun, 18 Apr 2004 22:52:19 +0000 Subject: [PATCH 1/1] * Ver Registros/bloques de Facturas y Articulos con tipo1 actualizada. --- emufs_gui/viewer.c | 82 +++++++--------------------------------------- 1 file changed, 11 insertions(+), 71 deletions(-) diff --git a/emufs_gui/viewer.c b/emufs_gui/viewer.c index 26cd091..41f0df8 100644 --- a/emufs_gui/viewer.c +++ b/emufs_gui/viewer.c @@ -636,7 +636,6 @@ int preguntar_id(WINDOW *win, EMUFS *fp) char *procesar_registro_factura_tipo3(EMUFS *emu, char *ptr, EMUFS_REG_SIZE *size, int *pos_actual, int *ancho) { char *tmp, *salida, *tmp1, pos_actualizada, ant; - char flotante[10]; int cant_header, i=0, j, tam_data; if (ptr == NULL) return NULL; @@ -707,8 +706,7 @@ char *procesar_registro_factura_tipo1(EMUFS *emu, char *ptr, EMUFS_REG_SIZE *siz { char *tmp, *salida, *tmp1, pos_actualizada, ant; EMUFS_REG_SIZE offset, curr_size; - char flotante[10]; - int cant_header, i=0, j, tam_data, k; + int cant_header, i=0, j, tam_data; int cant_items; if (ptr == NULL) return NULL; @@ -723,6 +721,9 @@ char *procesar_registro_factura_tipo1(EMUFS *emu, char *ptr, EMUFS_REG_SIZE *siz offset += sizeof(EMUFS_REG_SIZE); /* Desplazo el offset */ +#ifdef DEBUG + fprintf(stderr, "Tam = %d\n", curr_size); +#endif if (curr_size == 0) { /* Si el tamaño de registro es 0, quiere decir que llegue a la * parte que esta vacia */ @@ -736,11 +737,13 @@ char *procesar_registro_factura_tipo1(EMUFS *emu, char *ptr, EMUFS_REG_SIZE *siz /* El tamaño del nuevo array lo calculo asi : * */ - tmp1 = salida = (char *)malloc(1000000); /*(*size)-(sizeof(char *)+sizeof(t_Item *)+sizeof(EMUFS_REG_ID)+sizeof(int)*3+sizeof(float)+sizeof(EMUFS_BLOCK_ID))*cant_header + 5*cant_header*10+1);*/ + (*size) = (*size) - sizeof(EMUFS_REG_ID)*cant_header - sizeof(EMUFS_REG_SIZE)*cant_header + cant_header*20+1; + tmp1 = salida = (char *)malloc(*size); if (salida == NULL) { PERR("Error de malloc en salida"); return NULL; } + memset(salida, '.', *size); tmp = ptr; pos_actualizada = 0; (*ancho) = 0; @@ -759,38 +762,16 @@ char *procesar_registro_factura_tipo1(EMUFS *emu, char *ptr, EMUFS_REG_SIZE *siz tmp += sizeof(EMUFS_REG_ID); /* Cantidad de espacio que ocupa la data */ sprintf(tmp1, "{%08lu}", *((EMUFS_REG_SIZE *)tmp)); - tam_data = *((EMUFS_REG_SIZE *)tmp) - sizeof(int)*3 - sizeof(float) - sizeof(EMUFS_BLOCK_ID); + tam_data = *((EMUFS_REG_SIZE *)tmp); tmp1 += 10; tmp += sizeof(EMUFS_REG_SIZE); - /* Pongo el campo numero */ - sprintf(tmp1, "[%08d]", *((int *)tmp)); - tmp1 += 10; - tmp += sizeof(int); - /* Pongo campo procdoi */ - sprintf(flotante, "[%5.2f]", *((float *)tmp)); - memcpy(tmp1, flotante, strlen(flotante)); - tmp1 += strlen(flotante); - tmp += sizeof(float); - /* Pongo campo numero_remito */ - sprintf(tmp1, "[%08d]", *((int *)tmp)); - tmp1 += 10; - tmp += sizeof(int); - /* Pongo numero de items */ - sprintf(tmp1, "[%08d]", *((int *)tmp)); - cant_items = *((int *)tmp); - tmp1 += 10; - tmp += sizeof(int); - /* Pongo reg_nota */ - sprintf(tmp1, "(%08lu)", *((EMUFS_BLOCK_ID*)tmp)); - tmp1 += 10; - tmp += sizeof(EMUFS_BLOCK_ID); if (pos_actualizada == 1) { - (*ancho) = 60+strlen(flotante); + (*ancho) = 20; } j = 0; PERR("Voy por la data"); - while (j < (tam_data-cant_items*sizeof(t_Item))) { + while (j < tam_data) { if (*tmp == '\0') { if (ant == (*tmp)){ (*tmp1) = '.'; @@ -798,7 +779,7 @@ char *procesar_registro_factura_tipo1(EMUFS *emu, char *ptr, EMUFS_REG_SIZE *siz (*tmp1) = '|'; } } else { - (*tmp1) = (*tmp); + copy_char(tmp1, tmp); } ant = (*tmp); tmp++; @@ -807,54 +788,13 @@ char *procesar_registro_factura_tipo1(EMUFS *emu, char *ptr, EMUFS_REG_SIZE *siz (*ancho)++; j++; } - /* Ahora proceso los items */ - k = 0; - while (k < cant_items) { - sprintf(tmp1, "[%08d]", *((int *)tmp)); - tmp1 += 10; - tmp += sizeof(int); - if (pos_actualizada == 1) - (*ancho)+=10; - j = 0; - while (j < (sizeof(t_Item)-sizeof(int))) { - if (*tmp == '\0') { - if (ant == (*tmp)){ - (*tmp1) = '.'; - } else { - (*tmp1) = '|'; - } - } else { - (*tmp1) = (*tmp); - } - ant = (*tmp); - tmp++; - tmp1++; - if (pos_actualizada == 1) - (*ancho)++; - j++; - } - k++; - } if (pos_actualizada == 1) pos_actualizada = 2; - PERR(salida); i++; } - /* llego no . hasta el final */ - while (tmp < (ptr+(*size))) { - (*tmp1) = '.'; - tmp1++; - tmp++; - } free(ptr); PERR("Termine"); - if (emu->tam_bloque > emu->tam_reg) { - (*size) = tmp1-salida; - } else { - (*size) = tmp1-salida; - (*ancho) = tmp1-salida; - } salida[*size-1] = '\0'; return salida; -- 2.43.0