unsigned long int freespace;
} EMUFS_FSC;
-int emufs_fsc_crear(EMUFS*);
-int emufs_fsc_agregar(EMUFS *, EMUFS_BLOCK_ID, EMUFS_FREE);
-int emufs_fsc_agregar_gap(EMUFS *, EMUFS_OFFSET, EMUFS_FREE);
-int emufs_fsc_remove_gap(EMUFS *emu, EMUFS_OFFSET);
-int emufs_fsc_actualizar_gap(EMUFS *, EMUFS_OFFSET, EMUFS_FREE);
-int emufs_fsc_actualizar(EMUFS *, EMUFS_BLOCK_ID, EMUFS_FREE);
-EMUFS_BLOCK_ID emufs_fsc_buscar_lugar(EMUFS *, EMUFS_FREE, EMUFS_FREE *);
-EMUFS_FREE emufs_fsc_get_fs(EMUFS *, EMUFS_BLOCK_ID);
-EMUFS_FREE emufs_fsc_get_total_fs(EMUFS *);
-EMUFS_FREE emufs_fsc_get_media_fs(EMUFS *);
-int emufs_fsc_get_max_min_fs(EMUFS *, EMUFS_FREE *, EMUFS_FREE *);
-int emufs_fsc_truncate(EMUFS*, EMUFS_BLOCK_ID);
+/** Crea un archivo de Gaps o Espacio Libre en Bloque */
+int emufs_fsc_crear(EMUFS *emu);
+
+/** Agrega un registro al archivo de espacio libre en bloque. */
+int emufs_fsc_agregar(EMUFS *emu, EMUFS_BLOCK_ID block, EMUFS_FREE fs);
+
+/** Agrega un GAP en el archivo de Gaps para Filetype 2 */
+int emufs_fsc_agregar_gap(EMUFS *emu, EMUFS_OFFSET off, EMUFS_FREE fs);
+
+/** Elimina un registro GAP del archivo de espacios libres (gaps) */
+int emufs_fsc_remove_gap(EMUFS *emu, EMUFS_OFFSET off);
+
+/** Actualiza un registro de gap, en el archivo de Gaps en Disco */
+int emufs_fsc_actualizar_gap(EMUFS *emu, EMUFS_OFFSET off, EMUFS_FREE fs);
+
+/** Actualiza un registro de espacio libre de acorde al FType */
+int emufs_fsc_actualizar(EMUFS *emu, EMUFS_BLOCK_ID block, EMUFS_FREE fs);
+
+/** Me devuelve el ID del bloque u Offset del Gap donde quepa un registro,
+ * y guarda en \param n_freespace el espacio libre actualizado
+ */
+EMUFS_BLOCK_ID emufs_fsc_buscar_lugar(EMUFS *emu, EMUFS_FREE reg_size, EMUFS_FREE *n_freespace);
+
+/** Devuelve el espacio libre de un Bloque o Gap dado */
+EMUFS_FREE emufs_fsc_get_fs(EMUFS *emu, EMUFS_BLOCK_ID block);
+
+/** Devuelve el espacio libre total en el archivo*/
+EMUFS_FREE emufs_fsc_get_total_fs(EMUFS *emu);
+
+/** Devuelve el promedio del espacio libre en el archivo */
+EMUFS_FREE emufs_fsc_get_media_fs(EMUFS *emu);
+
+/** Almacena en \param min el minimo espacio libre y en \param max el maximo espacio libre */
+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);
+
+/** Devuelve la cantidad de bloques vacios en el archivo*/
int emufs_fsc_get_cant_bloques_vacios(EMUFS *emu);
#endif /* _EMUFS_FSC_H */
/** Graba el bloque apuntado por \param ptr en el archivo */
int emufs_tipo3_grabar_bloque(EMUFS *emu, void *ptr, EMUFS_BLOCK_ID num_bloque);
+/** Borra el registro \param id_reg del archivo de datos */
int emufs_tipo3_borrar_registro(EMUFS *emu, EMUFS_REG_ID id_reg);
-int emufs_tipo3_buscar_registro(EMUFS *emu, EMUFS_REG_ID id_reg);
-
/** Método para modificar un registro */
EMUFS_REG_ID emufs_tipo3_modificar_registro(EMUFS *emu, EMUFS_REG_ID, void*, EMUFS_REG_SIZE, int*);
+/** Carga una estructura del tipo EMUFS_Estadisticas con las estadisticas del archivo */
EMUFS_Estadisticas emufs_tipo3_leer_estadisticas(EMUFS *);
+/** Lee un registro con su informacion de control */
void* emufs_tipo3_leer_registro_raw(struct _emu_fs_t*, EMUFS_REG_ID, EMUFS_REG_SIZE*, int *);
+/** Elimina los espacios libres que hay en el archivo */
void emufs_tipo3_compactar(EMUFS *emu);
#endif /* _EMUFS_TIPO3_H_ */
char* b_ptr;
int err = 0, max, min, j;
- EMUFS_Estadisticas s;
+ EMUFS_Estadisticas stats;
if (argc != 2) {
printf("Modo de uso : %s tam_bloque\n", argv[0]);
return 1;
v[5] = fp->grabar_registro(fp, g, 100, &err);
v[6] = fp->grabar_registro(fp, h, 100, &err);
v[7] = fp->grabar_registro(fp, i, 100, &err);
+
for (j=0; j<8; j++)
printf("Grabado : %d\n", v[j]);
printf("GRABANDO REGISTROS....\n");
v[0] = fp->grabar_registro(fp, a, 100, &err);
-/* v[1] = fp->grabar_registro(fp, c, 100, &err);
+ v[1] = fp->grabar_registro(fp, c, 100, &err);
v[2] = fp->grabar_registro(fp, d, 100, &err);
v[3] = fp->grabar_registro(fp, e, 100, &err);
v[4] = fp->grabar_registro(fp, f, 100, &err);
v[5] = fp->grabar_registro(fp, g, 100, &err);
v[6] = fp->grabar_registro(fp, h, 100, &err);
v[7] = fp->grabar_registro(fp, i, 100, &err);
-*/
-/*
+ v[4] = fp->grabar_registro(fp, f, 100, &err);
+ v[5] = fp->grabar_registro(fp, g, 100, &err);
+ v[6] = fp->grabar_registro(fp, h, 100, &err);
+ v[7] = fp->grabar_registro(fp, i, 100, &err);
+
+
+ printf("BORRANDO REGISTROS....\n");
+ for (j=0; j<16; j+=3){
+ fp->borrar_registro(fp, v[j]);
+ printf("borrado : %d\n", v[j]);
+ }
+
+
printf("COMPACTANDO........\n");
fp->compactar(fp);
-*/
- /*s=fp->leer_estadisticas(fp);
- printf("tam archivo: %d\ntam arch bytes: %d\ninfo control: %d\nmedia fs: %d\ntotal fs:%d\nmax fs: %d\nmin fs: %d\ncant bloques: %d\n",
- s.tam_archivo, s.tam_archivo_bytes, s.info_control, s.media_fs, s.total_fs, s.max_fs, s.min_fs, s.cant_bloques);
- free(b_ptr);*/
+
+
+ stats = fp->leer_estadisticas(fp);
+ printf("Size del Archivo de datos: %lu\n",stats.tam_archivo_bytes);
+ printf("Cantidad de Registros en el Archivo de datos: %lu\n",stats.tam_archivo);
+ printf("Total de espacio libre en el .dat: %lu\n",stats.total_fs);
+ printf("Minimo espacio libre en bloque o gap: %lu\n",stats.min_fs);
+ printf("Maximo espacio libre en bloque o gap: %lu\n",stats.max_fs);
+ printf("Media de espacio libre en bloque o gap: %lu\n",stats.media_fs);
+ printf("Cantidad en bytes de informacion de control: %lu\n",stats.info_control);
+
+ free(b_ptr);
ver_archivo_FS(fp);
emufs_destruir(fp);