2 * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License
17 * @file smack-access.cpp
18 * @author Bartlomiej Grzelewski (b.grzelewski@samsung.com)
19 * @author Krzysztof Jackiewicz (k.jackiewicz@samsung.com)
25 #include <smack-access.h>
27 #include <sys/smack.h>
29 SmackAccess::SmackAccess() : m_handle(nullptr)
31 if(0 != smack_accesses_new(&m_handle))
32 throw std::runtime_error("smack_accesses_new failed");
35 void SmackAccess::add(
36 const std::string &subject,
37 const std::string &object,
38 const std::string &rights)
40 if(0 != smack_accesses_add(m_handle, subject.c_str(), object.c_str(), rights.c_str()))
41 throw std::runtime_error("smack_accesses_add failed");
44 void SmackAccess::apply() {
45 if(0 != smack_accesses_apply(m_handle))
46 throw std::runtime_error("smack_accesses_apply failed");
49 SmackAccess::~SmackAccess() {
51 smack_accesses_free(m_handle);