- tmp->tipo = T3;
- tmp->tam_bloque = tam_bloque;
- 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);
-
- strcpy(name, filename);
- strcat(name, ".dat");
- fp = fopen(name, "w");
- if (fp == NULL) {
- /* ERROR */
- free(tmp->nombre);
- free(tmp);
- return NULL;
- }
- /* Guardo el Header */
- fwrite(&tipo, sizeof(char), 1, fp);
- fwrite(&tam_bloque, sizeof(unsigned int), 1, fp);
- fwrite(&tam_reg, sizeof(unsigned int), 1, fp);
- fclose(fp);
-
- strcpy(name, filename);
- strcat(name, EMUFS_IDX_EXT);
- fp = fopen(name, "w");
- fclose(fp);
-
- strcpy(name, filename);
- strcat(name, EMUFS_FSC_EXT);
- fp = fopen(name, "w");
- fclose(fp);
-
- strcpy(name, filename);
- strcat(name, EMUFS_DID_EXT);
- fp = fopen(name, "w");
- fclose(fp);
-
- break;
- default:
- free(tmp);
- return NULL;
+ /* Asigna punteros a funciones. */
+ efs->leer_bloque = emufs_tipo3_leer_bloque;
+ efs->leer_registro = emufs_tipo3_leer_registro;
+ efs->leer_registro_raw = emufs_tipo3_leer_registro_raw;
+ 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;
+ /* Guarda cabeceras propias. */
+ fwrite(&tam_bloque, sizeof(EMUFS_BLOCK_SIZE), 1, fp);
+ fwrite(&tam_reg, sizeof(EMUFS_REG_SIZE), 1, fp);
+ break;
+