diff --git a/src/fileutils.cpp b/src/fileutils.cpp index 7b4f7d985b156cb6d8e877e5cdcf38f445f6df20..6d6f21209a7653c097cfbc9b35b96acf0d579209 100644 --- a/src/fileutils.cpp +++ b/src/fileutils.cpp @@ -234,7 +234,7 @@ loadFile(const std::string& path) } void -saveFile(const std::string& path, const std::vector<uint8_t>& data) +saveFile(const std::string& path, const std::vector<uint8_t>& data, mode_t mode) { std::ofstream file(path, std::ios::trunc | std::ios::binary); if (!file.is_open()) { @@ -242,6 +242,9 @@ saveFile(const std::string& path, const std::vector<uint8_t>& data) return; } file.write((char*)data.data(), data.size()); +#ifndef _WIN32 + chmod(path.c_str(), mode); +#endif } static size_t diff --git a/src/fileutils.h b/src/fileutils.h index bd8fc64f0e2aa4ce5e7730e12717f5b2099bc474..df16ff56bc0de50097f976ebce95772fdc414809 100644 --- a/src/fileutils.h +++ b/src/fileutils.h @@ -45,10 +45,12 @@ #ifndef _WIN32 +#include <sys/stat.h> // mode_t #define DIR_SEPARATOR_STR "/" // Directory separator char -#define DIR_SEPARATOR_CH '/' // Directory separator string +#define DIR_SEPARATOR_CH '/' // Directory separator string #else -#define DIR_SEPARATOR_STR "\\" // Directory separator char +#define mode_t unsigned +#define DIR_SEPARATOR_STR "\\" // Directory separator char #define DIR_SEPARATOR_CH '\\' // Directory separator string #endif @@ -77,7 +79,7 @@ namespace ring { namespace fileutils { std::vector<std::string> readDirectory(const std::string &dir); std::vector<uint8_t> loadFile(const std::string& path); - void saveFile(const std::string& path, const std::vector<uint8_t>& data); + void saveFile(const std::string& path, const std::vector<uint8_t>& data, mode_t mode=755); struct FileHandle { int fd;