]> git.llucax.com Git - z.facultad/75.06/emufs.git/blobdiff - emufs/fsc.c
* agrego mas fclose faltantes
[z.facultad/75.06/emufs.git] / emufs / fsc.c
index 05e29a843758dd9e5e4fb8e77dbb162203f88439..344adb645c36eab8fd6d91f5e59d51c2ee206152 100644 (file)
@@ -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(&reg, 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);
 }
-