X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/blobdiff_plain/6cccba0f7cfbdef2ca2af0bba1252e6ddde17dde..2c6bdf99d8de44452bdca921bf12bd1cc9350757:/emufs/tipo1.c diff --git a/emufs/tipo1.c b/emufs/tipo1.c index 78a3806..76ded8b 100644 --- a/emufs/tipo1.c +++ b/emufs/tipo1.c @@ -184,9 +184,7 @@ void* emufs_tipo1_leer_registro(EMUFS* efs, EMUFS_REG_ID reg_id, return registro; } -/* @todo TODO hacer que soporte registros de más de un bloque */ -void* emufs_tipo1_leer_registro_raw(EMUFS *efs, EMUFS_REG_ID id, - EMUFS_REG_SIZE *size, int *pos) +void* emufs_tipo1_leer_registro_raw(EMUFS *efs, EMUFS_REG_ID id, EMUFS_REG_SIZE *size, int *pos) { char *chunk_ptr; char* block; /* bloque leido (en donde está el registro a leer) */ @@ -228,7 +226,7 @@ void* emufs_tipo1_leer_registro_raw(EMUFS *efs, EMUFS_REG_ID id, 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); @@ -245,8 +243,10 @@ void* emufs_tipo1_leer_registro_raw(EMUFS *efs, EMUFS_REG_ID id, 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! */