X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/blobdiff_plain/381a5f98d66c8a3847d9918077a351b4813558fd..19dd8c73f1c094909dfe57cb607cc39d13779bf2:/emufs/tipo1.c diff --git a/emufs/tipo1.c b/emufs/tipo1.c index f672c19..0e981af 100644 --- a/emufs/tipo1.c +++ b/emufs/tipo1.c @@ -477,7 +477,7 @@ int emufs_tipo1_borrar_registro(EMUFS* efs, EMUFS_REG_ID reg_id) EMUFS_Estadisticas emufs_tipo1_leer_estadisticas(EMUFS* efs) { - int err = 0; + int err = 0,err1 = 0, err2 = 0, err3 = 0; EMUFS_Estadisticas stats; memset(&stats, 0, sizeof(EMUFS_Estadisticas)); @@ -485,32 +485,40 @@ EMUFS_Estadisticas emufs_tipo1_leer_estadisticas(EMUFS* efs) char name_f[255]; strcpy(name_f, efs->nombre); strcat(name_f, ".dat"); - stats.tam_archivo_bytes = emufs_common_get_file_size(name_f, &err); + stats.tam_archivo = emufs_common_get_file_size(name_f, &err); if (err) { PERR("no se pudo obtener el tamaño del archivo"); return stats; } } - /* obtengo cantidad de bloques */ - stats.cant_bloques = (stats.tam_archivo_bytes - emufs_tipo1_header_size()) + /* obtengo cantidad de bloques en el archivo */ + stats.cant_bloques = (stats.tam_archivo - emufs_tipo1_header_size()) / efs->tam_bloque; /* obtengo la cantidad de registros en el archivo */ { - EMUFS_REG_ID *tmp = emufs_idx_get(efs, &stats.tam_archivo); + EMUFS_REG_ID *tmp = emufs_idx_get(efs, &stats.cant_registros); if (tmp) free(tmp); /* libera memoria innecesaria */ } - /* obtengo total de información de control que guarda el archivo */ - stats.info_control = emufs_tipo1_header_size() /* cabecera del archivo */ + /* obtengo información de control que guarda el archivo .dat */ + stats.tam_info_control_dat = emufs_tipo1_header_size() /* cabecera del archivo */ /* mas las cabeceras de todos los registros */ - + stats.tam_archivo * sizeof(EMUFS_TIPO1_REG_HEADER); + + stats.cant_registros * sizeof(EMUFS_TIPO1_REG_HEADER); /* obtengo las estadísticas del archivo de espacio libre por bloque */ stats.total_fs = emufs_fsc_get_total_fs(efs); stats.media_fs = emufs_fsc_get_media_fs(efs); emufs_fsc_get_max_min_fs(efs, &stats.min_fs, &stats.max_fs); + + /* obtengo informacion de control guardada por los archivos auxiliares */ + stats.tam_archivos_aux = emufs_idx_get_file_size(efs,&err1) + emufs_fsc_get_file_size(efs,&err2) + + emufs_did_get_file_size(efs,&err3); + if (err1 || err2 || err3) { + PERR("Hubo problemas en lectura de filesize archivos auxiliares"); + return stats; + } return stats; } @@ -715,4 +723,3 @@ void emufs_tipo1_leer_bloque_raw(EMUFS *efs, EMUFS_BLOCK_ID id, char **actual, c (*siguiente) = emufs_tipo1_leer_bloque(efs, id+1, &err); (*size1) = (*size2) = (*size3) = efs->tam_bloque; } -