Move non-template functions to timeout.cpp file
[platform/core/test/security-tests.git] / src / common / passwd_access.cpp
1 /*
2  * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
3  *
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
7  *
8  *        http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  */
16 /**
17  * @file        passwd_access.cpp
18  * @author      Aleksander Zdyb <a.zdyb@samsung.com>
19  * @version     1.0
20  * @brief       Provides access to UID and GID
21  */
22
23 #include <cerrno>
24 #include <grp.h>
25 #include <pwd.h>
26
27 #include <dpl/test/test_runner.h>
28
29 #include "passwd_access.h"
30
31 namespace PasswdAccess {
32     uid_t uid(const std::string &username) {
33         struct passwd *passwd = nullptr;
34         do {
35             errno = 0;
36             passwd = getpwnam(username.c_str());
37         } while (passwd == nullptr && errno == EINTR);
38         RUNNER_ASSERT_ERRNO_MSG(passwd != nullptr, "Error in getpwnam(). Username: " << username);
39         return passwd->pw_uid;
40     }
41
42     gid_t gid(const std::string &groupname) {
43         struct group *group = nullptr;
44         do {
45             errno = 0;
46             group = getgrnam(groupname.c_str());
47         } while (group == nullptr && errno == EINTR);
48         RUNNER_ASSERT_ERRNO_MSG(group != nullptr, "Error in getgrnam(). Groupname: " << groupname);
49         return group->gr_gid;
50     }
51 } // namespace PasswdAccess