X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/blobdiff_plain/558540cc250c19c9617a3f3f12a0f5da38c9c84a..c4b24cdb8c9c9c83ad2b4cad26560b3487d15bd7:/emufs/idx.c?ds=inline diff --git a/emufs/idx.c b/emufs/idx.c index a46c46b..7e48545 100644 --- a/emufs/idx.c +++ b/emufs/idx.c @@ -233,8 +233,10 @@ EMUFS_REG_ID emufs_idx_get_count(EMUFS *emu) strcpy(name_f_idx,emu->nombre); strcat(name_f_idx, EMUFS_IDX_EXT); - fp = fopen(name_f_idx, "rb"); - if (fp == NULL) return 0; + if ( (fp = fopen(name_f_idx, "rb"))==NULL){ + PERR("No se pudo abrir el archvo"); + return -1; + } fseek(fp, 0l, SEEK_END); tam = ftell(fp); @@ -252,8 +254,10 @@ EMUFS_REG_ID emufs_idx_get_id_at(EMUFS *emu, long pos) strcpy(name_f_idx,emu->nombre); strcat(name_f_idx, EMUFS_IDX_EXT); - fp = fopen(name_f_idx, "rb"); - if (fp == NULL) return EMUFS_NOT_FOUND; + if ( (fp = fopen(name_f_idx, "rb")) == NULL){ + PERR("No se pudo abrir el archivo"); + return -1; + } fseek(fp, pos*sizeof(EMUFS_IDX), SEEK_SET); fread(&id, sizeof(EMUFS_IDX), 1, fp); @@ -262,17 +266,27 @@ EMUFS_REG_ID emufs_idx_get_id_at(EMUFS *emu, long pos) return id.id_reg; } -int emufs_idx_get_cant_reg(EMUFS* emu) +int emufs_idx_existe_id(EMUFS *emu, int ID) { FILE *fp; char name_f_idx[255]; - long cant; + EMUFS_IDX id; + strcpy(name_f_idx,emu->nombre); strcat(name_f_idx, EMUFS_IDX_EXT); - if ( (fp = fopen(name_f_idx, "r")) == NULL ) return -1;/*EMUFS_NOT_FOUND*/; - fseek(fp, 0, SEEK_END); - cant = ftell(fp)/sizeof(EMUFS_IDX); + if ( (fp = fopen(name_f_idx, "rb")) == NULL){ + PERR("No se pudo abrir el archivo"); + return -1; + } + + while ( !feof(fp) ){ + fread(&id, sizeof(EMUFS_IDX), 1, fp); + if ( id.id_reg == ID ){ + fclose(fp); + return 0; + } + } fclose(fp); - return cant; + return -1; }