char name[255];
FILE *fp;
EMUFS *efs;
+ int err = 0;
/* Si no es un tipo conocido, sale. */
if ((tipo != T1) && (tipo != T2) && (tipo != T3)) {
case T1:
/* Asigna punteros a funciones. */
- /* TODO verificar que el tamaño de bloque sea como mínimo del
- * tamaño de la cabecera de un registro + N */
- emufs_tipo1_inicializar(efs);
+ if ((err = emufs_tipo1_inicializar(efs))) {
+ /* TODO ERROR */
+ PERR("No se pudo inicializar el EMUFS de tipo1");
+ free(efs->nombre);
+ free(efs);
+ return NULL;
+ }
/* Guarda cabeceras propias. */
fwrite(&tam_bloque, sizeof(EMUFS_BLOCK_SIZE), 1, fp);
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;
/* Guarda cabeceras propias. */
fwrite(&tam_bloque, sizeof(EMUFS_BLOCK_SIZE), 1, fp);
fwrite(&tam_reg, sizeof(EMUFS_REG_SIZE), 1, fp);
char name[255];
char tipo;
FILE *fp;
+ int err = 0;
strcpy(name, filename);
strcat(name, ".dat");
}
efs->tipo = tipo;
efs->nombre = str_dup(filename);
-
+
switch (tipo) {
case T1:
- /* Asigna punteros a funciones. */
- emufs_tipo1_inicializar(efs);
/* Lee cabeceras propias. */
if (!fread(&(efs->tam_bloque), sizeof(EMUFS_BLOCK_SIZE), 1, fp)) {
free(efs->nombre);
fclose(fp);
return NULL;
}
+ /* Asigna punteros a funciones. */
+ if ((err = emufs_tipo1_inicializar(efs))) {
+ PERR("No se pudo inicializar el EMUFS de tipo1");
+ fclose(fp);
+ return NULL;
+ }
break;
case T2:
/* Asigna punteros a funciones. */
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;
}