From 8d8da12accc8a5bf9837f41cd8802d9a91dbf5c7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com>
Date: Tue, 14 Jan 2020 15:38:13 -0500
Subject: [PATCH] fileutils: add way to save file from any raw data

Change-Id: I6b778ec237ab4f517a710f1a827d55a264341e07
---
 src/fileutils.cpp | 4 ++--
 src/fileutils.h   | 5 ++++-
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/fileutils.cpp b/src/fileutils.cpp
index 2ae1eee521..53a13ea4d1 100644
--- a/src/fileutils.cpp
+++ b/src/fileutils.cpp
@@ -378,7 +378,7 @@ loadFile(const std::string& path, const std::string& default_dir)
 
 void
 saveFile(const std::string& path,
-        const std::vector<uint8_t>& data,
+        const uint8_t* data, size_t data_size,
         mode_t UNUSED mode)
 {
     std::ofstream file = fileutils::ofstream(path, std::ios::trunc | std::ios::binary);
@@ -386,7 +386,7 @@ saveFile(const std::string& path,
         JAMI_ERR("Could not write data to %s", path.c_str());
         return;
     }
-    file.write((char*)data.data(), data.size());
+    file.write((char*)data, data_size);
 #ifndef _WIN32
     if (chmod(path.c_str(), mode) < 0)
         JAMI_WARN("fileutils::saveFile(): chmod() failed on '%s', %s", path.c_str(), strerror(errno));
diff --git a/src/fileutils.h b/src/fileutils.h
index 9fe5e82666..9468b9f507 100644
--- a/src/fileutils.h
+++ b/src/fileutils.h
@@ -108,7 +108,10 @@ namespace jami { namespace fileutils {
      * If path is relative, it is appended to default_dir.
      */
     std::vector<uint8_t> loadFile(const std::string& path, const std::string& default_dir = {});
-    void saveFile(const std::string& path, const std::vector<uint8_t>& data, mode_t mode=0644);
+    void saveFile(const std::string& path, const uint8_t* data, size_t data_size, mode_t mode=0644);
+    inline void saveFile(const std::string& path, const std::vector<uint8_t>& data, mode_t mode=0644) {
+        saveFile(path, data.data(), data.size(), mode);
+    }
 
     std::vector<uint8_t> readArchive(const std::string& path, const std::string& password = {});
     void writeArchive(const std::string& data, const std::string& path, const std::string& password = {});
-- 
GitLab