+
+int emufs_tipo3_inicializar(EMUFS* efs)
+{
+ /* como mínimo el tamaño de bloque debe ser 2 veces el tamaño de la cabecera
+ * (una relación 1/2 entre datos e info de control ya es lo suficientemente
+ * mala */
+ if (efs->tam_bloque < (sizeof(EMUFS_REG_ID) * 2)) {
+ PERR("bloque demasiado chico");
+ return EMUFS_ERROR_BLOCK_TOO_SMALL;
+ }
+ /* Asigna punteros a funciones. */
+ efs->leer_bloque = emufs_tipo3_leer_bloque;
+ efs->leer_bloque_raw = emufs_tipo3_leer_bloque_raw;
+ efs->grabar_registro = emufs_tipo3_grabar_registro;
+ efs->borrar_registro = emufs_tipo3_borrar_registro;
+ efs->leer_registro = emufs_tipo3_leer_registro;
+ efs->leer_registro_raw = emufs_tipo3_leer_registro_raw;
+ efs->leer_estadisticas = emufs_tipo3_leer_estadisticas;
+ efs->compactar = emufs_tipo3_compactar;
+ efs->tam_reg = 0;
+ return EMUFS_OK;
+}
+
+int emufs_tipo5_inicializar(EMUFS* efs)
+{
+ /* como mínimo el tamaño de bloque debe ser 2 veces el tamaño de la cabecera
+ * (una relación 1/2 entre datos e info de control ya es lo suficientemente
+ * mala */
+ if (efs->tam_bloque < (sizeof(EMUFS_REG_ID) * 2)) {
+ PERR("bloque demasiado chico");
+ return EMUFS_ERROR_BLOCK_TOO_SMALL;
+ }
+ /* Asigna punteros a funciones. */
+ efs->leer_bloque = emufs_tipo3_leer_bloque;
+ efs->leer_bloque_raw = emufs_tipo3_leer_bloque_raw;
+ efs->grabar_registro = emufs_tipo3_insertar_ordenado;
+ efs->borrar_registro = emufs_tipo3_eliminar_ordenado;
+ efs->leer_registro = emufs_tipo3_leer_registro_plus;
+ efs->leer_registro_raw = emufs_tipo3_leer_registro_raw;
+ efs->leer_estadisticas = emufs_tipo3_leer_estadisticas;
+ efs->compactar = emufs_tipo3_compactar;
+ efs->tam_reg = 0;
+ return EMUFS_OK;
+}
+