X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/blobdiff_plain/32feb1e82b00d6c1ad3f5aa6884d003a665ea975..0213eecd485623b3f5def829c4b16acaf4baad2e:/emufs/did.c?ds=sidebyside diff --git a/emufs/did.c b/emufs/did.c index 0c7c10a..6e13fd5 100644 --- a/emufs/did.c +++ b/emufs/did.c @@ -37,8 +37,10 @@ */ #include "did.h" -#include +#include "error.h" +#include "common.h" #include +#include int emufs_did_crear(EMUFS* efs) { @@ -58,13 +60,13 @@ EMUFS_REG_ID emufs_did_get_last(EMUFS *efs, int* err) if ((f_did = fopen(name_f_did, "rb")) == NULL) { PERR("No se puede abrir archivo"); - *err = 4; /* EMUFS_ERROR_CANT_OPEN_FILE */ + *err = EMUFS_ERROR_CANT_OPEN_FILE; return EMUFS_NOT_FOUND; } if (fseek(f_did, 0l, SEEK_END)) { PERR("No se pudo hacer fseek()"); fclose(f_did); - *err = 8; /* EMUFS_ERROR_SEEK_FILE */ + *err = EMUFS_ERROR_SEEK_FILE; return EMUFS_NOT_FOUND; } @@ -73,35 +75,35 @@ EMUFS_REG_ID emufs_did_get_last(EMUFS *efs, int* err) if (fseek(f_did, -sizeof(EMUFS_REG_ID), SEEK_END)) { PERR("No se pudo hacer fseek()"); fclose(f_did); - *err = 8; /* EMUFS_ERROR_SEEK_FILE */ + *err = EMUFS_ERROR_SEEK_FILE; return EMUFS_NOT_FOUND; } /* leo el ultimo numero */ if (fread(&n_regid, sizeof(EMUFS_REG_ID), 1, f_did) != 1) { fclose(f_did); PERR("Error al leer did"); - *err = 3; /* EMUFS_ERROR_FILE_READ */ - return NULL; + *err = EMUFS_ERROR_FILE_READ; + return EMUFS_NOT_FOUND; } /* voy al final */ if (fseek(f_did, 0l, SEEK_END)) { PERR("No se pudo hacer fseek()"); fclose(f_did); - *err = 8; /* EMUFS_ERROR_SEEK_FILE */ + *err = EMUFS_ERROR_SEEK_FILE; return EMUFS_NOT_FOUND; } /* mido el tamaƱo del archivo */ if ((n_offset = ftell(f_did)) == -1) { PERR("No se pudo hacer ftell()"); fclose(f_did); - *err = 9; /* EMUFS_ERROR_TELL_FILE */ + *err = EMUFS_ERROR_TELL_FILE; return EMUFS_NOT_FOUND; } fclose(f_did); /* lo trunco */ if (truncate(name_f_did, n_offset - sizeof(EMUFS_REG_ID))) { PERR("No se pudo truncar el archivo did"); - *err = 10; /* EMUFS_ERROR_TRUNCATE_FILE */ + *err = EMUFS_ERROR_TRUNCATE_FILE; return EMUFS_NOT_FOUND; } } else if (!pos) { @@ -111,7 +113,7 @@ EMUFS_REG_ID emufs_did_get_last(EMUFS *efs, int* err) } else { PERR("No se pudo hacer ftell()"); fclose(f_did); - *err = 9; /* EMUFS_ERROR_TELL_FILE */ + *err = EMUFS_ERROR_TELL_FILE; return EMUFS_NOT_FOUND; } return n_regid; @@ -123,7 +125,7 @@ int emufs_did_agregar(EMUFS *efs, EMUFS_REG_ID n_regid) char name_f_did[255]; strcpy(name_f_did, efs->nombre); - strcat(name_f_did, EMUFS_DID_EXT); + strcat(name_f_did, EMUFS_DID_EXT); if ( (f_did = fopen(name_f_did,"a+")) == NULL) return -1; fwrite(&n_regid, sizeof(EMUFS_REG_ID), 1, f_did); @@ -132,3 +134,11 @@ int emufs_did_agregar(EMUFS *efs, EMUFS_REG_ID n_regid) return 0; } +long emufs_did_get_file_size(EMUFS* efs, int* err) +{ + char name[255]; + strcpy(name, efs->nombre); + strcat(name, EMUFS_DID_EXT); + return emufs_common_get_file_size(name, err); +} +