X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/blobdiff_plain/8665a7da4441e79f72cb35246be42f094c54bdc6..08c5b98cd8a74821b3ef0a72c6385eb6b267fff3:/emufs/tipo2_main.c diff --git a/emufs/tipo2_main.c b/emufs/tipo2_main.c index c564106..42dffce 100644 --- a/emufs/tipo2_main.c +++ b/emufs/tipo2_main.c @@ -30,12 +30,17 @@ #include #include +#include #include "emufs.h" +#include "fsc.h" +#include "tipo2.h" int main(int argc, char *argv[]) { - EMUFS *fp; - EMUFS_REG_ID n1, n2, n3, n4, n5, n6, n7, n8; + EMUFS *efs; + EMUFS_REG_ID n0, n1, n2, n3, n4, n5, n6, n7, n8; + EMUFS_REG_SIZE reg_size; + char *registro; char a[11]; char b[63]; char c[13]; @@ -45,6 +50,8 @@ int main(int argc, char *argv[]) char g[41]; 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"); @@ -58,31 +65,69 @@ int main(int argc, char *argv[]) /* 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 */ - n1 = fp->grabar_registro(fp, a, 11); - n2 = fp->grabar_registro(fp, b, 63); - n3 = fp->grabar_registro(fp, c, 13); - n4 = fp->grabar_registro(fp, d, 8); - n5 = fp->grabar_registro(fp, e, 39); - n6 = fp->grabar_registro(fp, f, 9); - n7 = fp->grabar_registro(fp, g, 41); - n8 = fp->grabar_registro(fp, h, 63); + 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); + efs->borrar_registro(efs, n5); + printf("tipo2_main.c >> Borrando registro: %lu\n",n1); + efs->borrar_registro(efs, n1); + printf("tipo2_main.c >> Borrando registro: %lu\n",n0); + efs->borrar_registro(efs, n0); + printf("tipo2_main.c >> Borrando registro: %lu\n",n3); + efs->borrar_registro(efs, n3); + printf("tipo2_main.c >> Borrando registro: %lu\n",n7); + efs->borrar_registro(efs, n7); printf("tipo2_main.c >> Borrando registro: %lu\n",n4); - if (fp->borrar_registro(fp, n4) == -1) - printf("tipo2_main.c >> Error al Borrar Registro Nro: %lu",n4); + efs->borrar_registro(efs, n4);*/ - /*n8 = fp->grabar_registro(fp, i, 100); - fp->leer_registro(fp, n8, b, 100); - - printf("Recuperado : %s\n", b); - - ver_archivo_FS(fp);*/ + /* Prueba de recompactacion */ + efs->borrar_registro(efs, n2); + efs->borrar_registro(efs, n7); + efs->borrar_registro(efs, n4); + + /* 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); + } + + /* Obtengo stats */ + stats = efs->leer_estadisticas(efs); + 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); + + /* Recompacto */ + printf("Recompactando...\n"); + emufs_tipo2_compactar(efs); + + /* Obtengo stats nevas */ + stats = efs->leer_estadisticas(efs); + 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); - emufs_destruir(fp); + emufs_destruir(efs); return 0; }