else return 0;
}
-int emufs_fsc_get_cant_bloques_vacios(EMUFS *emu)
+EMUFS_BLOCK_ID emufs_fsc_get_cant_bloques_vacios(EMUFS *emu)
{
FILE *f_fsc;
EMUFS_FSC reg;
char name_f_fsc[255];
- int cant=0;
+ EMUFS_BLOCK_ID cant=0;
strcpy(name_f_fsc,emu->nombre);
strcat(name_f_fsc, EMUFS_FSC_EXT);
strcat(name_f_fsc, EMUFS_FSC_EXT);
return truncate(name_f_fsc, blocks * sizeof(EMUFS_FSC));
}
+
+EMUFS_BLOCK_ID emufs_fsc_get_num_blocks(EMUFS* efs)
+{
+ FILE *f_fsc;
+ char name_f_fsc[255];
+ EMUFS_BLOCK_ID cant = 0;
+
+ strcpy(name_f_fsc,emu->nombre);
+ strcat(name_f_fsc, EMUFS_FSC_EXT);
+
+ if (!(f_fsc = fopen(name_f_fsc, "ab"))) {
+ PERR("error al abrir archivo .fsc");
+ return EMUFS_NOT_FOUND;
+ }
+ cant = ftell(f_fsc) / sizeof(EMUFS_FSC);
+ fclose(f_fsc);
+ return cant;
+}
+
int emufs_fsc_get_max_min_fs(EMUFS *emu, EMUFS_FREE *min, EMUFS_FREE *max);
/** Trunca el archivo hasta el bloque \param block*/
-int emufs_fsc_truncate(EMUFS *emu, EMUFS_BLOCK_ID block);
+int emufs_fsc_truncate(EMUFS*, EMUFS_BLOCK_ID);
/** Devuelve la cantidad de bloques vacios en el archivo*/
-int emufs_fsc_get_cant_bloques_vacios(EMUFS *emu);
+EMUFS_BLOCK_ID emufs_fsc_get_cant_bloques_vacios(EMUFS*);
+
+/** Devuelve la cantidad de bloques (o gaps) que tiene un archivo. */
+EMUFS_BLOCK_ID emufs_fsc_get_num_blocks(EMUFS*);
#endif /* _EMUFS_FSC_H */