xref: /openbmc/bmcweb/include/ibm/utils.hpp (revision d78572018fc2022091ff8b8eb5a7fef2172ba3d6)
140e9b92eSEd Tanous // SPDX-License-Identifier: Apache-2.0
240e9b92eSEd Tanous // SPDX-FileCopyrightText: Copyright OpenBMC Authors
33e919b58SSunitha Harish #pragma once
43e919b58SSunitha Harish 
53ccb3adbSEd Tanous #include "logging.hpp"
63e919b58SSunitha Harish 
73e919b58SSunitha Harish #include <filesystem>
8*d7857201SEd Tanous #include <string_view>
9*d7857201SEd Tanous #include <system_error>
103e919b58SSunitha Harish 
113e919b58SSunitha Harish namespace crow
123e919b58SSunitha Harish {
133e919b58SSunitha Harish namespace ibm_utils
143e919b58SSunitha Harish {
153e919b58SSunitha Harish 
createDirectory(std::string_view path)1626ccae32SEd Tanous inline bool createDirectory(std::string_view path)
173e919b58SSunitha Harish {
183e919b58SSunitha Harish     // Create persistent directory
193e919b58SSunitha Harish     std::error_code ec;
203e919b58SSunitha Harish 
2162598e31SEd Tanous     BMCWEB_LOG_DEBUG("Creating persistent directory : {}", path);
223e919b58SSunitha Harish 
233e919b58SSunitha Harish     bool dirCreated = std::filesystem::create_directories(path, ec);
243e919b58SSunitha Harish 
253e919b58SSunitha Harish     if (ec)
263e919b58SSunitha Harish     {
2762598e31SEd Tanous         BMCWEB_LOG_ERROR("Failed to create persistent directory : {}", path);
283e919b58SSunitha Harish         return false;
293e919b58SSunitha Harish     }
303e919b58SSunitha Harish 
313e919b58SSunitha Harish     if (dirCreated)
323e919b58SSunitha Harish     {
333e919b58SSunitha Harish         // set the permission of the directory to 700
3462598e31SEd Tanous         BMCWEB_LOG_DEBUG("Setting the permission to 700");
353e919b58SSunitha Harish         std::filesystem::perms permission = std::filesystem::perms::owner_all;
363e919b58SSunitha Harish         std::filesystem::permissions(path, permission);
373e919b58SSunitha Harish     }
383e919b58SSunitha Harish     else
393e919b58SSunitha Harish     {
4062598e31SEd Tanous         BMCWEB_LOG_DEBUG("{} already exists", path);
413e919b58SSunitha Harish     }
423e919b58SSunitha Harish     return true;
433e919b58SSunitha Harish }
443e919b58SSunitha Harish 
453e919b58SSunitha Harish } // namespace ibm_utils
463e919b58SSunitha Harish } // namespace crow
47