]> git.llucax.com Git - z.facultad/75.06/emufs.git/commitdiff
* Arreglo leer_raw de tipo 1
authorRicardo Markiewicz <gazer.arg@gmail.com>
Sat, 17 Apr 2004 18:36:27 +0000 (18:36 +0000)
committerRicardo Markiewicz <gazer.arg@gmail.com>
Sat, 17 Apr 2004 18:36:27 +0000 (18:36 +0000)
 * 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
emufs_gui/articulos.c
emufs_gui/registros.c

index 596f69abb375babcebb2214fdc75feeef79bb364..76ded8bccd94a61b68df89b035a8e53565c8a505 100644 (file)
@@ -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! */
index 593c81e3ca7b3f5b512409f788961569f136d056..f3df42d8f4909b53754af7469f964643528c64e5 100644 (file)
@@ -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;
index 319973649b70c63954b54d8e33a80b4d3a3ef6a7..aa9c86758779785bdd2a4fbcdc742a9ff4e8ca95 100644 (file)
@@ -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) */