- tmp->tipo = tipo;
- fread(&tmp->tam_bloque, sizeof(int), 1, fp);
- tmp->leer_bloque = emufs_tipo3_leer_bloque;
- tmp->leer_registro = emufs_tipo3_leer_registro;
- tmp->grabar_registro = emufs_tipo3_grabar_registro;
- tmp->borrar_registro = emufs_tipo3_borrar_registro;
- tmp->nombre = str_dup(filename);
+ if ((!fread(&(efs->tam_bloque), sizeof(EMUFS_BLOCK_SIZE), 1, fp)) ||
+ (!fread(&(efs->tam_reg), sizeof(EMUFS_REG_SIZE), 1, fp)))
+ {
+ free(efs->nombre);
+ free(efs);
+ fclose(fp);
+ return NULL;
+ }
+ /* Asigna punteros a funciones. */
+ efs->leer_bloque = emufs_tipo3_leer_bloque;
+ efs->leer_registro_raw = emufs_tipo3_leer_registro_raw;
+ efs->leer_registro = emufs_tipo3_leer_registro;
+ efs->grabar_registro = emufs_tipo3_grabar_registro;
+ efs->borrar_registro = emufs_tipo3_borrar_registro;
+ efs->leer_estadisticas = emufs_tipo3_leer_estadisticas;
+ efs->modificar_registro = emufs_tipo3_modificar_registro;
+ efs->compactar = emufs_tipo3_compactar;
+ efs->leer_bloque_raw = emufs_tipo3_leer_bloque_raw;
+ break;