#include <stdio.h>
#include <string.h>
+#include <math.h>
#include "emufs.h"
+#include "fsc.h"
+#include "tipo2.h"
int main(int argc, char *argv[])
{
- EMUFS *fp;
- EMUFS_REG_ID n0, n1, n2, n3, n4, n5, n6, n7, n8;
+ EMUFS *efs;
+ EMUFS_REG_ID n0, n1, n2, n3, n4, n5, n6, n7, n8, n9;
+ EMUFS_REG_SIZE reg_size;
+ char *registro;
char a[11];
char b[63];
char c[13];
char h[63];
char i[43];
int err = 0;
+ EMUFS_Estadisticas stats;
strcpy(a, "1234567890");
strcpy(b, "REGISTRO NUMERO 2. ESTE REGISTRO ES MUCHO MAS LARGO QUE EL UNO");
/* Creamos el archivo Tipo 2. Pasamos blocksize = 0 y Regsize = 0 pues estar */
/* variable. */
- fp = emufs_crear("articulos", T2, 0, 0);
+ efs = emufs_crear("articulos", T2, 0, 0);
/* Grabamos un par de registros */
- n0 = fp->grabar_registro(fp, a, 11, &err);
- n1 = fp->grabar_registro(fp, b, 63, &err);
- n2 = fp->grabar_registro(fp, c, 13, &err);
- n3 = fp->grabar_registro(fp, d, 8, &err);
- n4 = fp->grabar_registro(fp, e, 39, &err);
- n5 = fp->grabar_registro(fp, f, 9, &err);
- n6 = fp->grabar_registro(fp, g, 41, &err);
- n7 = fp->grabar_registro(fp, h, 63, &err);
+ n0 = efs->grabar_registro(efs, a, 11, &err);
+ n1 = efs->grabar_registro(efs, b, 63, &err);
+ n2 = efs->grabar_registro(efs, c, 13, &err);
+ n3 = efs->grabar_registro(efs, d, 8, &err);
+ n4 = efs->grabar_registro(efs, e, 39, &err);
+ n5 = efs->grabar_registro(efs, f, 9, &err);
+ n6 = efs->grabar_registro(efs, g, 41, &err);
+ n7 = efs->grabar_registro(efs, h, 63, &err);
+ n8 = efs->grabar_registro(efs, d, 8, &err);
/* Borramos un registro del medio */
- printf("tipo2_main.c >> Borrando registro: %lu\n",n5);
- fp->borrar_registro(fp, n5);
+ /*printf("tipo2_main.c >> Borrando registro: %lu\n",n5);
+ efs->borrar_registro(efs, n5);
printf("tipo2_main.c >> Borrando registro: %lu\n",n1);
- fp->borrar_registro(fp, n1);
+ efs->borrar_registro(efs, n1);
printf("tipo2_main.c >> Borrando registro: %lu\n",n0);
- fp->borrar_registro(fp, n0);
+ efs->borrar_registro(efs, n0);
printf("tipo2_main.c >> Borrando registro: %lu\n",n3);
- fp->borrar_registro(fp, n3);
+ efs->borrar_registro(efs, n3);
printf("tipo2_main.c >> Borrando registro: %lu\n",n7);
- fp->borrar_registro(fp, n7);
+ efs->borrar_registro(efs, n7);
printf("tipo2_main.c >> Borrando registro: %lu\n",n4);
- fp->borrar_registro(fp, n4);
-
- n8 = fp->grabar_registro(fp, d, 8, &err);
- printf("tipo2_main.c >> Id recuperado: %lu\n",n8);
+ efs->borrar_registro(efs, n4);*/
- emufs_destruir(fp);
+ /* Prueba de recompactacion */
+ efs->borrar_registro(efs, n7);
+ efs->borrar_registro(efs, n4);
+ efs->borrar_registro(efs, n2);
+
+ n9 = efs->grabar_registro(efs, d, 8, &err);
+
+ /* Levanto un registro */
+ registro = efs->leer_registro(efs,n1,®_size,&err);
+ if (err == 0) {
+ printf("tipo2_main.c >>Registro: %lu Size: %lu Content: %s\n\n",n2,reg_size,registro);
+ }
+ if (registro) free(registro);
+
+ /* Obtengo stats */
+ stats = efs->leer_estadisticas(efs);
+ printf("Size del Archivo de datos: %lu\n",stats.tam_archivo);
+ printf("Cantidad de Registros en el Archivo de datos: %lu\n",stats.cant_registros);
+ 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.tam_info_control_dat+stats.tam_archivos_aux);
+ printf("Cantidad de bytes en datos: %lu\n",stats.tam_archivo-stats.tam_info_control_dat);
+
+ /* Recompacto */
+ printf("Recompactando...\n");
+ efs->compactar(efs);
+
+ /* Obtengo stats nevas */
+ stats = efs->leer_estadisticas(efs);
+ printf("Size del Archivo de datos: %lu\n",stats.tam_archivo);
+ printf("Cantidad de Registros en el Archivo de datos: %lu\n",stats.cant_registros);
+ 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.tam_info_control_dat+stats.tam_archivos_aux);
+ printf("Cantidad de bytes en datos: %lu\n",stats.tam_archivo-stats.tam_info_control_dat-stats.total_fs);
+
+ emufs_destruir(efs);
return 0;
}