From 5c4b52c4bbdb37a593546d1ed6a6c8e95c74710e Mon Sep 17 00:00:00 2001 From: Christian Eltzschig Date: Wed, 26 Jan 2022 12:13:41 +0100 Subject: [PATCH] iox-#1036 Add C++17 filesystem perms feature Signed-off-by: Christian Eltzschig --- .../include/iceoryx_hoofs/cxx/filesystem.hpp | 74 +++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 iceoryx_hoofs/include/iceoryx_hoofs/cxx/filesystem.hpp diff --git a/iceoryx_hoofs/include/iceoryx_hoofs/cxx/filesystem.hpp b/iceoryx_hoofs/include/iceoryx_hoofs/cxx/filesystem.hpp new file mode 100644 index 00000000000..b7bbdcfcc79 --- /dev/null +++ b/iceoryx_hoofs/include/iceoryx_hoofs/cxx/filesystem.hpp @@ -0,0 +1,74 @@ +// Copyright (c) 2022 by Apex.AI Inc. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// SPDX-License-Identifier: Apache-2.0 +#ifndef IOX_HOOFS_CXX_FILESYSTEM_HPP +#define IOX_HOOFS_CXX_FILESYSTEM_HPP + +namespace iox +{ +namespace cxx +{ +/// @brief this enum class implements the filesystem perms feature of C++17. The +/// API is identical to the C++17 one so that the class can be removed +/// as soon as iceoryx switches to C++17. +enum class perms +{ + /// @brief Deny everything + none = 0, + + /// @brief owner has read permission + owner_read = 0400, + /// @brief owner has write permission + owner_write = 0200, + /// @brief owner has execution permission + owner_exec = 0100, + /// @brief owner has all permissions + owner_all = 0700, + + /// @brief group has read permission + group_read = 040, + /// @brief group has write permission + group_write = 020, + /// @brief group has execution permission + group_exec = 010, + /// @brief group has all permissions + group_all = 070, + + /// @brief others have read permission + others_read = 04, + /// @brief others have write permission + others_write = 02, + /// @brief others have execution permission + others_exec = 01, + /// @brief others have all permissions + others_all = 07, + + /// @brief all permissions for everyone + all = 0777, + + /// @brief set uid bit + set_uid = 04000, + /// @brief set gid bit + set_gid = 02000, + /// @brief set sticky bit + sticky_bit = 01000, + + /// @brief all permissions for everyone as well as uid, gid and sticky bit + mask = 07777 +}; +} // namespace cxx +} // namespace iox + +#endif