#include "idx.h"
#include "fsc.h"
#include "did.h"
+#include <unistd.h>
+#include <sys/types.h>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>
-#include <unistd.h>
#ifndef MIN
# define MIN(x, y) (((x) > (y)) ? (y) : (x))
static int emufs_tipo1_block_jump(EMUFS*, FILE*, EMUFS_BLOCK_ID);
-static void emufs_tipo1_escribir_reg_en_memoria(char*, EMUFS_TIPO1_REG_HEADER,
- char*);
-
static void emufs_tipo1_escribir_reg_chunk_en_memoria(char* dst,
EMUFS_TIPO1_REG_HEADER header, char* reg, EMUFS_REG_SIZE reg_size);
}
/* Asigna punteros a funciones. */
efs->leer_bloque = emufs_tipo1_leer_bloque;
+ efs->leer_bloque_raw = emufs_tipo1_leer_bloque_raw;
efs->grabar_registro = emufs_tipo1_grabar_registro;
efs->borrar_registro = emufs_tipo1_borrar_registro;
efs->leer_registro = emufs_tipo1_leer_registro;
}
/* si me lo solicitan, actualizo el .fsc */
if (fs != EMUFS_NOT_FOUND) {
- if ((err = emufs_fsc_actualizar(efs, block_id, fs))) {
+ if ((*err = emufs_fsc_actualizar(efs, block_id, fs))) {
/* TODO Manejo de errores */
PERR("no se pudo actualizar .fsc");
fclose(file);
return 0; /* EMUFS_OK */
}
-void emufs_tipo1_escribir_reg_en_memoria(char* dst, EMUFS_TIPO1_REG_HEADER header,
- char* reg)
-{
- emufs_tipo1_escribir_reg_chunk_en_memoria(dst, header, reg, header.size);
-}
-
void emufs_tipo1_escribir_reg_chunk_en_memoria(char* dst,
EMUFS_TIPO1_REG_HEADER header, char* reg, EMUFS_REG_SIZE reg_size)
{
return file_size;
}
+void emufs_tipo1_leer_bloque_raw(EMUFS *efs, EMUFS_BLOCK_ID id, char **actual, char **anterior, char **siguiente, EMUFS_BLOCK_SIZE *size1, EMUFS_BLOCK_SIZE *size2, EMUFS_BLOCK_SIZE *size3)
+{
+ int err;
+ (*actual) = emufs_tipo1_leer_bloque(efs, id, &err);
+ (*anterior) = emufs_tipo1_leer_bloque(efs, id-1, &err);
+ (*siguiente) = emufs_tipo1_leer_bloque(efs, id+1, &err);
+ (*size1) = (*size2) = (*size3) = efs->tam_bloque;
+}
+