]> git.llucax.com Git - z.facultad/75.06/emufs.git/blobdiff - emufs/fsc.c
Small change al fix de Luca en emufs_fsc_agregar_gap. No need to break the while...
[z.facultad/75.06/emufs.git] / emufs / fsc.c
index 7e556bd0eedeb298b1061106fcba0fcb9c71c2a4..75202826c0a11debd6a27a30063750bd3bd8724b 100644 (file)
@@ -36,6 +36,7 @@
  */
 
 #include "fsc.h"
  */
 
 #include "fsc.h"
+#include "error.h"
 #include <unistd.h>
 #include <sys/types.h>
 #include <string.h>
 #include <unistd.h>
 #include <sys/types.h>
 #include <string.h>
@@ -124,7 +125,7 @@ int emufs_fsc_agregar_gap(EMUFS *emu, EMUFS_OFFSET marker, EMUFS_FREE freespace)
                /* Busco el gap que sucede a este */
                fseek(f_fsc,0,SEEK_SET);
                while (!feof(f_fsc)) {
                /* Busco el gap que sucede a este */
                fseek(f_fsc,0,SEEK_SET);
                while (!feof(f_fsc)) {
-                       fread(&gap_aux,sizeof(EMUFS_FSC),1,f_fsc);
+                       if (fread(&gap_aux,sizeof(EMUFS_FSC),1,f_fsc) != 1) continue;
                        if (gap_aux.marker > gap_new.marker) {
                                found = 1;
                                break;
                        if (gap_aux.marker > gap_new.marker) {
                                found = 1;
                                break;
@@ -367,7 +368,7 @@ EMUFS_BLOCK_ID emufs_fsc_buscar_n_lugares(EMUFS* efs, size_t n,
        /* chequeo que al menos se busque un lugar */
        if (!n) {
                PERR("Se debe buscar al menos un lugar");
        /* chequeo que al menos se busque un lugar */
        if (!n) {
                PERR("Se debe buscar al menos un lugar");
-               *err = 13; /* EMUFS_ERROR_WRONG_ARGUMENT */
+               *err = EMUFS_ERROR_WRONG_ARGUMENT;
                return EMUFS_NOT_FOUND;
        }
 
                return EMUFS_NOT_FOUND;
        }
 
@@ -376,7 +377,7 @@ EMUFS_BLOCK_ID emufs_fsc_buscar_n_lugares(EMUFS* efs, size_t n,
        strcat(name_f_fsc, EMUFS_FSC_EXT);
        if (!(f_fsc = fopen(name_f_fsc, "rb"))) {
                PERR("No se puede abrir archivo");
        strcat(name_f_fsc, EMUFS_FSC_EXT);
        if (!(f_fsc = fopen(name_f_fsc, "rb"))) {
                PERR("No se puede abrir archivo");
-               *err = 4; /* EMUFS_ERROR_CANT_OPEN_FILE */
+               *err = EMUFS_ERROR_CANT_OPEN_FILE;
                return EMUFS_NOT_FOUND;
        }
 
                return EMUFS_NOT_FOUND;
        }
 
@@ -385,7 +386,7 @@ EMUFS_BLOCK_ID emufs_fsc_buscar_n_lugares(EMUFS* efs, size_t n,
                if ((fread(&reg, sizeof(EMUFS_FSC), 1, f_fsc) != 1)) {
                        if (feof(f_fsc)) break;
                        PERR("No se puede leer el archivo");
                if ((fread(&reg, sizeof(EMUFS_FSC), 1, f_fsc) != 1)) {
                        if (feof(f_fsc)) break;
                        PERR("No se puede leer el archivo");
-                       *err = 3; /* EMUFS_ERROR_FILE_READ */
+                       *err = EMUFS_ERROR_FILE_READ;
                        return EMUFS_NOT_FOUND;
                }
                if (reg.freespace >= reg_size) {
                        return EMUFS_NOT_FOUND;
                }
                if (reg.freespace >= reg_size) {
@@ -396,7 +397,7 @@ EMUFS_BLOCK_ID emufs_fsc_buscar_n_lugares(EMUFS* efs, size_t n,
                                if (fread(&reg, sizeof(EMUFS_FSC), 1, f_fsc) != 1) {
                                        if (feof(f_fsc)) break;
                                        PERR("No se puede leer el archivo");
                                if (fread(&reg, sizeof(EMUFS_FSC), 1, f_fsc) != 1) {
                                        if (feof(f_fsc)) break;
                                        PERR("No se puede leer el archivo");
-                                       *err = 3; /* EMUFS_ERROR_FILE_READ */
+                                       *err = EMUFS_ERROR_FILE_READ;
                                        return EMUFS_NOT_FOUND;
                                }
                                /* no hay otro lugar consecutivo */
                                        return EMUFS_NOT_FOUND;
                                }
                                /* no hay otro lugar consecutivo */
@@ -566,4 +567,3 @@ EMUFS_BLOCK_ID emufs_fsc_get_num_blocks(EMUFS* efs)
        fclose(f_fsc);
        return cant;
 }
        fclose(f_fsc);
        return cant;
 }
-