From 27a4c952dbd58578a9c55fca54bc3ef6df319154 Mon Sep 17 00:00:00 2001 From: Ricardo Markiewicz Date: Sat, 17 Apr 2004 18:36:27 +0000 Subject: [PATCH] * Arreglo leer_raw de tipo 1 * Ajusto cosas. Luca, leer_registro de tipo1 anda mal cuando tengo mas de un bloque en un registro! Creo que te estas olvidando de saltar el header de los registros siguientes. --- emufs/tipo1.c | 8 +++++--- emufs_gui/articulos.c | 3 ++- emufs_gui/registros.c | 9 +++++++-- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/emufs/tipo1.c b/emufs/tipo1.c index 596f69a..76ded8b 100644 --- a/emufs/tipo1.c +++ b/emufs/tipo1.c @@ -226,7 +226,7 @@ void* emufs_tipo1_leer_registro_raw(EMUFS *efs, EMUFS_REG_ID id, EMUFS_REG_SIZE cant_bloques = curr_reg_header.size / block_space + 1; *size = cant_bloques*efs->tam_bloque; - registro = chunk_ptr = (char*) malloc(*size - (cant_bloques-1)*sizeof(EMUFS_TIPO1_REG_HEADER)); + registro = chunk_ptr = (char*) malloc(*size - (cant_bloques-1)*sizeof(EMUFS_TIPO1_REG_HEADER) + (cant_bloques-1)*2); if (registro == NULL) { /* TODO Manejo de errores */ free(block); @@ -243,8 +243,10 @@ void* emufs_tipo1_leer_registro_raw(EMUFS *efs, EMUFS_REG_ID id, EMUFS_REG_SIZE err = 0; block = (char*)emufs_tipo1_leer_bloque(efs, block_id+i, &err); /* Solo grabo el header del primer pedazo! */ - memcpy(registro, block+sizeof(EMUFS_TIPO1_REG_HEADER), efs->tam_bloque); - chunk_ptr += efs->tam_bloque; + memcpy(chunk_ptr, "<>", 2); + chunk_ptr += 2; + memcpy(chunk_ptr, block+sizeof(EMUFS_TIPO1_REG_HEADER), efs->tam_bloque-sizeof(EMUFS_TIPO1_REG_HEADER)); + chunk_ptr += efs->tam_bloque-sizeof(EMUFS_TIPO1_REG_HEADER); free(block); } /* Todo listo! */ diff --git a/emufs_gui/articulos.c b/emufs_gui/articulos.c index 593c81e..f3df42d 100644 --- a/emufs_gui/articulos.c +++ b/emufs_gui/articulos.c @@ -427,7 +427,7 @@ int procesar_leer_articulo(t_Articulo *dst, void *src, EMUFS_REG_SIZE size, t_Ls case T2: ini = (char *)src; /* Copio el primer campo, esto es facil :-) */ - memset(dst, '*', sizeof(t_Articulo)); + memset(dst, 0, sizeof(t_Articulo)); memcpy(&dst->numero, ini, sizeof(unsigned int)); ini+=sizeof(unsigned int); /* Ahora empieza el juego */ @@ -439,6 +439,7 @@ int procesar_leer_articulo(t_Articulo *dst, void *src, EMUFS_REG_SIZE size, t_Ls ini = fin+1; fin = ini; while (*fin!='\0') fin++; + fprintf(stderr, "INI=%s\n", ini); memcpy(dst->presentacion, ini, fin-ini+1); ini = fin+1; diff --git a/emufs_gui/registros.c b/emufs_gui/registros.c index 3199736..aa9c867 100644 --- a/emufs_gui/registros.c +++ b/emufs_gui/registros.c @@ -334,10 +334,12 @@ char *procesar_registro_articulo_tipo1(EMUFS *emu, char *ptr, EMUFS_REG_SIZE *si } else { cant_header++; offset += curr_size; + fprintf(stderr, "Sume %lu\n", curr_size); } - } while (offset < (*size)); + } while (offset+sizeof(EMUFS_REG_SIZE)+sizeof(EMUFS_REG_ID) < (*size)); /* Proceso */ + fprintf(stderr, "Cantidad de headers = %d\n", cant_header); salida = (char *)malloc((*size)-sizeof(unsigned int)*cant_header*3 + 3*cant_header*10+1); tmp = ptr; tmp1 = salida; @@ -367,7 +369,9 @@ char *procesar_registro_articulo_tipo1(EMUFS *emu, char *ptr, EMUFS_REG_SIZE *si sprintf(tmp1, "[%08d]", *((unsigned int *)tmp)); tmp1 += 10; tmp += sizeof(unsigned int); - j = sizeof(unsigned int);; + j = sizeof(unsigned int); + PERR("Voy aca"); + fprintf(stderr, "son %lu\n", curr_size); while (j < curr_size) { if (*tmp == '\0') { if (ant == (*tmp)) @@ -382,6 +386,7 @@ char *procesar_registro_articulo_tipo1(EMUFS *emu, char *ptr, EMUFS_REG_SIZE *si tmp1++; j++; } + PERR("Y hasta todo bien"); i++; } /* Tengo que trabajar sobre lo que me falte (seguro es espacio libre) */ -- 2.43.0