X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/blobdiff_plain/2fc4ee372f0fa46b11c7aeedfdae9e8fc113edbf..5c4392761a0f05f3d2dec5cae73e22a68dee0c44:/emufs/fsc.c diff --git a/emufs/fsc.c b/emufs/fsc.c index 05e29a8..344adb6 100644 --- a/emufs/fsc.c +++ b/emufs/fsc.c @@ -58,6 +58,7 @@ int emufs_fsc_agregar(EMUFS *emu, EMUFS_BLOCK_ID marker, EMUFS_FREE freespace) strcat(name_f_fsc, EMUFS_FSC_EXT); /* Lo guardo en el archivo al final "a+"*/ + PERR(name_f_fsc); if ( (f_fsc = fopen(name_f_fsc,"r+"))==NULL ) return -1; /* lo busco.. si esta lo modifico y si no lo agrego */ fseek(f_fsc,0,SEEK_SET); @@ -387,6 +388,7 @@ EMUFS_BLOCK_ID emufs_fsc_buscar_n_lugares(EMUFS* efs, size_t n, if (feof(f_fsc)) break; PERR("No se puede leer el archivo"); *err = EMUFS_ERROR_FILE_READ; + fclose(f_fsc); return EMUFS_NOT_FOUND; } if (reg.freespace >= size) { @@ -398,6 +400,7 @@ EMUFS_BLOCK_ID emufs_fsc_buscar_n_lugares(EMUFS* efs, size_t n, if (feof(f_fsc)) break; PERR("No se puede leer el archivo"); *err = EMUFS_ERROR_FILE_READ; + fclose(f_fsc); return EMUFS_NOT_FOUND; } /* no hay otro lugar consecutivo */ @@ -453,7 +456,8 @@ EMUFS_FREE emufs_fsc_get_total_fs(EMUFS *emu) total = 0; while ( !feof(f_fsc) ){ if ( fread(®, sizeof(EMUFS_FSC), 1, f_fsc) != 1) continue; - total += reg.freespace; + if ( reg.freespace > 0 ) + total += reg.freespace; } fclose(f_fsc); return total; @@ -575,4 +579,3 @@ long emufs_fsc_get_file_size(EMUFS* efs, int* err) strcat(name, EMUFS_FSC_EXT); return emufs_common_get_file_size(name, err); } -