registro leido.
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 */
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 */
return NULL;
}
memcpy(registro, block + offset, curr_reg_size);
+ *reg_size = curr_reg_size;
break;
}
/* Desplazo el offset */
EMUFS_REG_ID reg_id;
EMUFS_FREE fs;
EMUFS_BLOCK_ID block_id;
- FILE* file;
char name_f[255];
char* block;
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*);
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_ */
#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 */
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;
}
#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*);