EMUFS_REG_SIZE* reg_size, int *err)
{
char* block; /* bloque leido (en donde está el registro a leer) */
char* registro; /* registro a leer */
EMUFS_BLOCK_ID block_id; /* id del bloque en donde esta el registro a leer */
EMUFS_BLOCK_SIZE offset; /* offset del bloque leído */
EMUFS_REG_SIZE* reg_size, int *err)
{
char* block; /* bloque leido (en donde está el registro a leer) */
char* registro; /* registro a leer */
EMUFS_BLOCK_ID block_id; /* id del bloque en donde esta el registro a leer */
EMUFS_BLOCK_SIZE offset; /* offset del bloque leído */
EMUFS_TIPO1_REG_HEADER curr_reg_header; /* cabecera del registro a leer */
block_id = emufs_idx_buscar_registro(efs, reg_id);
EMUFS_TIPO1_REG_HEADER curr_reg_header; /* cabecera del registro a leer */
block_id = emufs_idx_buscar_registro(efs, reg_id);
return NULL;
}
if (fread(block, efs->tam_bloque, 1, file) != 1) {
free(block);
return NULL;
}
if (fread(block, efs->tam_bloque, 1, file) != 1) {
free(block);
/* tamaño máximo ultilizable para datos en un bloque */
EMUFS_BLOCK_SIZE block_space
= efs->tam_bloque - sizeof(EMUFS_TIPO1_REG_HEADER);
/* tamaño máximo ultilizable para datos en un bloque */
EMUFS_BLOCK_SIZE block_space
= efs->tam_bloque - sizeof(EMUFS_TIPO1_REG_HEADER);
- fs = emufs_fsc_get_fs(efs, curr_block_id)
- + MIN(curr_reg_header.size, block_space)
+ fs = orig_fs + MIN(curr_reg_header.size, block_space)
+ sizeof(EMUFS_TIPO1_REG_HEADER);
if ((err = emufs_fsc_actualizar(efs, curr_block_id, fs))) {
PERR("no se pudo actualizar .fsc");
+ sizeof(EMUFS_TIPO1_REG_HEADER);
if ((err = emufs_fsc_actualizar(efs, curr_block_id, fs))) {
PERR("no se pudo actualizar .fsc");
/* si es necesario desplazar */
if (offset < offset_reg_end) {
/* muevo la porción de bloque a izquierda */
/* si es necesario desplazar */
if (offset < offset_reg_end) {
/* muevo la porción de bloque a izquierda */
memcpy(block + offset, block + offset_reg_end,
efs->tam_bloque - offset_reg_end);
/* rellena el espacio libre con ceros para la GUI */
memcpy(block + offset, block + offset_reg_end,
efs->tam_bloque - offset_reg_end);
/* rellena el espacio libre con ceros para la GUI */
- /* FIXME memset(block + offset_reg_end, 0,
- efs->tam_bloque - offset_reg_end);*/
+ memset(block + efs->tam_bloque - offset_reg_end - orig_fs + offset,
+ 0, offset_reg_end + orig_fs - offset);
EMUFS_BLOCK_SIZE block_space /* tamaño para datos de un bloque */
= efs->tam_bloque - sizeof(EMUFS_TIPO1_REG_HEADER);
EMUFS_REG_ID total_ids; /* cantidad total de registros en el array */
EMUFS_BLOCK_SIZE block_space /* tamaño para datos de un bloque */
= efs->tam_bloque - sizeof(EMUFS_TIPO1_REG_HEADER);
EMUFS_REG_ID total_ids; /* cantidad total de registros en el array */