From 63e53c1e6828be882dfad154b2a0ba38acb7a2a5 Mon Sep 17 00:00:00 2001 From: Raimon Zamora Date: Mon, 10 Jun 2024 21:43:54 +0200 Subject: [PATCH] =?UTF-8?q?-=20[NEW]=20Funci=C3=B3=20per=20a=20comprobar?= =?UTF-8?q?=20si=20un=20arxiu=20existeix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/jfile.cpp | 34 ++++++++++++++++++++++++++++++++++ source/jfile.h | 4 ++++ 2 files changed, 38 insertions(+) diff --git a/source/jfile.cpp b/source/jfile.cpp index 171829a..3279476 100644 --- a/source/jfile.cpp +++ b/source/jfile.cpp @@ -192,6 +192,40 @@ namespace file } } + bool fileExists(const std::string resourcename) + { + // Si tenim configurat agafar els recursos de arxiu, pero encara no tenim la taula de continguts carregada... + if (file_source == SOURCE_FILE and toc.size() == 0) + { + // Si fallem al intentar carregar la taula de continguts de l'arxiu de recursos, canviem a pillar els recursos de carpeta + if (not getTableOfContents()) + { + setSource(SOURCE_FOLDER); + } + } + + // Si estem pillant els recursos de un arxiu de recursos... + if (file_source == SOURCE_FILE) + { + // Busquem el recurs en la taula de continguts usant la ruta + bool found = false; + uint32_t count = 0; + while (!found && count < toc.size()) + { + found = (resourcename == toc[count].path); + if (!found) + { + count++; + } + } + return found; + } + else + { + return access((resource_folder + resourcename).c_str(), F_OK) == 0; + } + } + // Obté un "FILE*" al arxiu que se li demana, independentment de la font (arxius individual en carpeta, o arxiu de recursos) FILE *getFilePointer(const std::string resourcename, int &filesize, const bool binary) { diff --git a/source/jfile.h b/source/jfile.h index c5b790b..6848881 100644 --- a/source/jfile.h +++ b/source/jfile.h @@ -23,6 +23,10 @@ namespace file /// @param src SOURCE_FILE o SOURCE_FOLDER, si es vol que se pillen recursos de arxiu o de carpeta void setSource(const int src); + /// @brief Comproba si un arxiu existeix. + /// @param resourcename el nom de l'arxiu que volem comprobar + bool fileExists(const std::string resourcename); + /// @brief Obté un "FILE*" al arxiu que se li demana, independentment de la font (arxius individual en carpeta, o arxiu de recursos). Recordar tancar-lo al acabar amb ell. /// @param resourcename el nom de l'arxiu que volem obrir /// @param filesize paràmetre de retorn. Ací es torna el tamany de l'arxiu