2 * Copyright (c) 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 passwd_access.cpp
18 * @author Aleksander Zdyb <a.zdyb@samsung.com>
20 * @brief Provides access to UID and GID
27 #include <dpl/test/test_runner.h>
29 #include "passwd_access.h"
32 struct passwd *getPasswd(const std::string &username) {
33 struct passwd *info = nullptr;
36 info = getpwnam(username.c_str());
37 } while (info == nullptr && errno == EINTR);
38 RUNNER_ASSERT_ERRNO_MSG(info != nullptr, "Error in getpwnam(). Username: " << username);
43 namespace PasswdAccess {
44 uid_t uid(const std::string &username) {
45 return getPasswd(username)->pw_uid;
48 void allUser(const std::string &username, uid_t &uid, gid_t &gid) {
49 auto info = getPasswd(username);
54 gid_t gid(const std::string &groupname) {
55 struct group *group = nullptr;
58 group = getgrnam(groupname.c_str());
59 } while (group == nullptr && errno == EINTR);
60 RUNNER_ASSERT_ERRNO_MSG(group != nullptr, "Error in getgrnam(). Groupname: " << groupname);
63 } // namespace PasswdAccess