From: Leandro Lucarella Date: Sun, 11 Apr 2004 02:59:05 +0000 (+0000) Subject: Se cambia el prototipo de leer_registro() para poder devolver el tamaño del X-Git-Tag: svn_import_r684~562 X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/commitdiff_plain/cfcbab8ec369453b7809f2d2954b15d1bb5fcfdd?ds=inline Se cambia el prototipo de leer_registro() para poder devolver el tamaño del registro leido. --- diff --git a/emufs/emufs.h b/emufs/emufs.h index 6e3fb83..efcc2ad 100644 --- a/emufs/emufs.h +++ b/emufs/emufs.h @@ -97,7 +97,7 @@ typedef struct _emu_fs_t { EMUFS_BLOCK_SIZE tam_bloque; /**< Tamaño de bloque. 0 Si no tiene bloques */ EMUFS_REG_SIZE tam_reg; /**< Tamaño de registro. 0 Si son registros variables */ void* (*leer_bloque)(struct _emu_fs_t*, EMUFS_BLOCK_ID, int*); /**< Método para leer un bloque */ - void* (*leer_registro)(struct _emu_fs_t*, EMUFS_REG_ID, int*); /**< Método para leer un registro */ + void* (*leer_registro)(struct _emu_fs_t*, EMUFS_REG_ID, EMUFS_REG_SIZE*, int*); /**< Método para leer un registro */ EMUFS_REG_ID (*grabar_registro)(struct _emu_fs_t*, void*, EMUFS_REG_SIZE, int*); /**< Método para grabar un registro */ int (*borrar_registro)(struct _emu_fs_t*, EMUFS_REG_ID); /**< Método para borrar un registro */ char *nombre; /**< Nombre del archivo */ diff --git a/emufs/tipo1.c b/emufs/tipo1.c index db0ccf4..a75967e 100644 --- a/emufs/tipo1.c +++ b/emufs/tipo1.c @@ -69,7 +69,8 @@ int emufs_tipo1_inicializar(EMUFS* efs) return 0; } -void* emufs_tipo1_leer_registro(EMUFS* efs, EMUFS_REG_ID reg_id, int *err) +void* emufs_tipo1_leer_registro(EMUFS* efs, EMUFS_REG_ID reg_id, + EMUFS_REG_SIZE* reg_size, int *err) { char* block; /* bloque leido (en donde está el registro a leer) */ char* registro; /* registro a leer */ @@ -111,6 +112,7 @@ void* emufs_tipo1_leer_registro(EMUFS* efs, EMUFS_REG_ID reg_id, int *err) return NULL; } memcpy(registro, block + offset, curr_reg_size); + *reg_size = curr_reg_size; break; } /* Desplazo el offset */ @@ -162,7 +164,6 @@ EMUFS_REG_ID emufs_tipo1_grabar_registro(EMUFS* efs, void* reg, EMUFS_REG_ID reg_id; EMUFS_FREE fs; EMUFS_BLOCK_ID block_id; - FILE* file; char name_f[255]; char* block; diff --git a/emufs/tipo1.h b/emufs/tipo1.h index c89daf6..cc540a8 100644 --- a/emufs/tipo1.h +++ b/emufs/tipo1.h @@ -43,7 +43,7 @@ int emufs_tipo1_inicializar(EMUFS*); /** Lee el registro \param id_reg y lo almacena en \param ptr */ -void* emufs_tipo1_leer_registro(EMUFS*, EMUFS_REG_ID, int*); +void* emufs_tipo1_leer_registro(EMUFS*, EMUFS_REG_ID, EMUFS_REG_SIZE*, int*); /** Lee el bloque \param num_bloque y lo almacena en \param ptr */ void* emufs_tipo1_leer_bloque(EMUFS*, EMUFS_BLOCK_ID, int*); diff --git a/emufs/tipo2.h b/emufs/tipo2.h index c408541..4f95840 100644 --- a/emufs/tipo2.h +++ b/emufs/tipo2.h @@ -43,7 +43,8 @@ EMUFS_REG_ID emufs_tipo2_get_id(EMUFS *); int emufs_tipo2_get_regsize(EMUFS *efs, EMUFS_OFFSET n_RegPos,EMUFS_REG_SIZE *n_RegSize); int emufs_tipo2_dummyfill(EMUFS *efs, EMUFS_OFFSET n_RegPos,EMUFS_REG_SIZE n_Amount); -/* int emufs_tipo2_leer_registro(EMUFS *, EMUFS_REG_ID , void *, EMUFS_REG_SIZE); +/* OJO!! Fijate que cambio el prototipo: + int emufs_tipo2_leer_registro(EMUFS *, EMUFS_REG_ID , void *, EMUFS_REG_SIZE); int emufs_tipo2_buscar_registro(EMUFS *, int); */ #endif /* _EMUFS_TIPO2_H_ */ diff --git a/emufs/tipo3.c b/emufs/tipo3.c index 6e1822e..721d9ef 100644 --- a/emufs/tipo3.c +++ b/emufs/tipo3.c @@ -38,7 +38,8 @@ #include "tipo3.h" /** Leo un registro del archivo, devuelve cero si no lo encuentra.**/ -void* emufs_tipo3_leer_registro(EMUFS *emu, EMUFS_REG_ID ID, int* err) +void* emufs_tipo3_leer_registro(EMUFS *emu, EMUFS_REG_ID ID, + EMUFS_REG_SIZE* reg_size, int* err) { char* bloque; char* registro; /* registro a leer */ @@ -70,13 +71,13 @@ void* emufs_tipo3_leer_registro(EMUFS *emu, EMUFS_REG_ID ID, int* err) return NULL; } memcpy(registro,bloque+iterador,emu->tam_reg); + *reg_size = emu->tam_reg; break; } iterador += emu->tam_reg; } free(bloque); - (*err) = emu->tam_reg; return registro; } diff --git a/emufs/tipo3.h b/emufs/tipo3.h index f17081f..71bcb68 100644 --- a/emufs/tipo3.h +++ b/emufs/tipo3.h @@ -48,7 +48,7 @@ #include "fsc.h" /** Lee el registro \param id_reg y lo almacena en \param ptr */ -void* emufs_tipo3_leer_registro(EMUFS*, EMUFS_REG_ID, int*); +void* emufs_tipo3_leer_registro(EMUFS*, EMUFS_REG_ID, EMUFS_REG_SIZE*, int*); /** Lee el bloque \param num_bloque y lo almacena en \param ptr */ void* emufs_tipo3_leer_bloque(EMUFS*, EMUFS_BLOCK_ID, int*);