]> git.llucax.com Git - z.facultad/75.06/emufs.git/blobdiff - emufs/tipo1.c
* BUGFIX : En ver bloques la funcion que juntaba memoria estaba para el orto.
[z.facultad/75.06/emufs.git] / emufs / tipo1.c
index f672c1961c0dacc10dd675e5d9c99e35553a0275..9d1cd048728cc79fb079ee5da213b79dadafd26c 100644 (file)
@@ -475,6 +475,9 @@ int emufs_tipo1_borrar_registro(EMUFS* efs, EMUFS_REG_ID reg_id)
        return EMUFS_OK;
 }
 
        return EMUFS_OK;
 }
 
+/* \bug Si hay registros multibloque, no se calcula bien el
+ *         stats.tam_info_control_dat.
+ */
 EMUFS_Estadisticas emufs_tipo1_leer_estadisticas(EMUFS* efs)
 {
        int err = 0;
 EMUFS_Estadisticas emufs_tipo1_leer_estadisticas(EMUFS* efs)
 {
        int err = 0;
@@ -485,32 +488,41 @@ EMUFS_Estadisticas emufs_tipo1_leer_estadisticas(EMUFS* efs)
                char name_f[255];
                strcpy(name_f, efs->nombre);
                strcat(name_f, ".dat");
                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;
                }
        }
 
                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 */
        {
                        / 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 */
        }
 
                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 */
                        /* 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 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, &err)
+               + emufs_fsc_get_file_size(efs, &err)
+               + emufs_did_get_file_size(efs, &err);
+       if (err) {
+               PERR("error al obtener tamaño de alguno de los archivos auxiliares");
+               return stats;
+       }       
 
        return stats;   
 }
 
        return stats;   
 }
@@ -715,4 +727,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;
 }
        (*siguiente) = emufs_tipo1_leer_bloque(efs, id+1, &err);
        (*size1) = (*size2) = (*size3) = efs->tam_bloque;
 }
-