From: Nicolás Dimov Date: Fri, 16 Apr 2004 18:22:59 +0000 (+0000) Subject: Hay algo en leer que falla y ademas hay un if ( cant_bloques == 0 ) que no me gusta... X-Git-Tag: svn_import_r684~449 X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/commitdiff_plain/6726e0114193106e50efc3576109f03a65817f41?ds=sidebyside Hay algo en leer que falla y ademas hay un if ( cant_bloques == 0 ) que no me gusta, porque tendria que ser 1, pero con cero anda mejor ... ademas con bloques de 54 para abajo se cuelga, ni idea por que.. busco.. --- diff --git a/emufs/tipo3.c b/emufs/tipo3.c index 30f63f4..8f56f84 100644 --- a/emufs/tipo3.c +++ b/emufs/tipo3.c @@ -80,7 +80,7 @@ void* emufs_tipo3_leer_registro(EMUFS *emu, EMUFS_REG_ID ID, memcpy(&ID_aux, bloque+iterador, sizeof(EMUFS_REG_ID)); iterador += sizeof(EMUFS_REG_ID); if ( ID_aux == ID ){ - if ( cant_bloques == 1 ) + if ( cant_bloques == 0 ) memcpy(registro,bloque+iterador,emu->tam_reg); else { if ( cant_bloques-1 == i ) @@ -357,6 +357,7 @@ EMUFS_Estadisticas emufs_tipo3_leer_estadisticas(EMUFS *emu) EMUFS_REG_ID *tmp; char name_f[255]; + memset(&stats,0,sizeof(EMUFS_Estadisticas)); strcpy(name_f,emu->nombre); strcat(name_f,".dat"); if ( (f = fopen(name_f,"r")) == NULL){ @@ -364,16 +365,19 @@ EMUFS_Estadisticas emufs_tipo3_leer_estadisticas(EMUFS *emu) return stats; } - /* No hace falta el fseek ¿? */ fseek(f,0,SEEK_END); stats.tam_archivo_bytes = ftell(f); - stats.cant_bloques = ( ftell(f) - sizeof(EMUFS_Tipo) - sizeof(EMUFS_BLOCK_SIZE) - sizeof(EMUFS_REG_SIZE) )/ emu->tam_bloque; + stats.cant_bloques =(stats.tam_archivo_bytes-sizeof(EMUFS_Tipo)-sizeof(EMUFS_BLOCK_SIZE)-sizeof(EMUFS_REG_SIZE))/ + emu->tam_bloque; tmp = emufs_idx_get(emu, &stats.tam_archivo); if (tmp) free(tmp); + stats.info_control=stats.tam_archivo*sizeof(EMUFS_REG_ID)+sizeof(EMUFS_Tipo)+ + sizeof(EMUFS_BLOCK_SIZE)+sizeof(EMUFS_REG_SIZE); + /* Obtengo las stats de FSC */ stats.total_fs = emufs_fsc_get_total_fs(emu); - /*verificar el segentado*/ - stats.info_control = stats.tam_archivo*sizeof(EMUFS_REG_ID) + sizeof(EMUFS_Tipo) + sizeof(EMUFS_BLOCK_SIZE) + sizeof(EMUFS_REG_SIZE); - stats.media_fs = stats.total_fs/stats.cant_bloques; + stats.media_fs = emufs_fsc_get_media_fs(emu); + emufs_fsc_get_max_min_fs(emu,&stats.min_fs,&stats.max_fs); + fclose(f); return stats; }