131ca5a376ac6d04817a7caf4d8a6e8b5994289a8Chris Masone// Copyright 2015 The Chromium OS Authors. All rights reserved.
231ca5a376ac6d04817a7caf4d8a6e8b5994289a8Chris Masone// Use of this source code is governed by a BSD-style license that can be
331ca5a376ac6d04817a7caf4d8a6e8b5994289a8Chris Masone// found in the LICENSE file.
431ca5a376ac6d04817a7caf4d8a6e8b5994289a8Chris Masone
5fed60b0c640828b320f56293c8bebc43fd2b1da8Alex Vakulenko#ifndef LIBBRILLO_BRILLO_USERDB_UTILS_H_
6fed60b0c640828b320f56293c8bebc43fd2b1da8Alex Vakulenko#define LIBBRILLO_BRILLO_USERDB_UTILS_H_
731ca5a376ac6d04817a7caf4d8a6e8b5994289a8Chris Masone
831ca5a376ac6d04817a7caf4d8a6e8b5994289a8Chris Masone#include <sys/types.h>
931ca5a376ac6d04817a7caf4d8a6e8b5994289a8Chris Masone
1031ca5a376ac6d04817a7caf4d8a6e8b5994289a8Chris Masone#include <string>
1131ca5a376ac6d04817a7caf4d8a6e8b5994289a8Chris Masone
1231ca5a376ac6d04817a7caf4d8a6e8b5994289a8Chris Masone#include <base/compiler_specific.h>
1331ca5a376ac6d04817a7caf4d8a6e8b5994289a8Chris Masone#include <base/macros.h>
149ed0cab99f18acb3570a35e9408f24355f6b8324Alex Vakulenko#include <brillo/brillo_export.h>
1531ca5a376ac6d04817a7caf4d8a6e8b5994289a8Chris Masone
169ed0cab99f18acb3570a35e9408f24355f6b8324Alex Vakulenkonamespace brillo {
1731ca5a376ac6d04817a7caf4d8a6e8b5994289a8Chris Masonenamespace userdb {
1831ca5a376ac6d04817a7caf4d8a6e8b5994289a8Chris Masone
1931ca5a376ac6d04817a7caf4d8a6e8b5994289a8Chris Masone// Looks up the UID and GID corresponding to |user|. Returns true on success.
2031ca5a376ac6d04817a7caf4d8a6e8b5994289a8Chris Masone// Passing nullptr for |uid| or |gid| causes them to be ignored.
219ed0cab99f18acb3570a35e9408f24355f6b8324Alex VakulenkoBRILLO_EXPORT bool GetUserInfo(
2231ca5a376ac6d04817a7caf4d8a6e8b5994289a8Chris Masone    const std::string& user, uid_t* uid, gid_t* gid) WARN_UNUSED_RESULT;
2331ca5a376ac6d04817a7caf4d8a6e8b5994289a8Chris Masone
2431ca5a376ac6d04817a7caf4d8a6e8b5994289a8Chris Masone// Looks up the GID corresponding to |group|. Returns true on success.
2531ca5a376ac6d04817a7caf4d8a6e8b5994289a8Chris Masone// Passing nullptr for |gid| causes it to be ignored.
269ed0cab99f18acb3570a35e9408f24355f6b8324Alex VakulenkoBRILLO_EXPORT bool GetGroupInfo(
2731ca5a376ac6d04817a7caf4d8a6e8b5994289a8Chris Masone    const std::string& group, gid_t* gid) WARN_UNUSED_RESULT;
2831ca5a376ac6d04817a7caf4d8a6e8b5994289a8Chris Masone
2931ca5a376ac6d04817a7caf4d8a6e8b5994289a8Chris Masone}  // namespace userdb
309ed0cab99f18acb3570a35e9408f24355f6b8324Alex Vakulenko}  // namespace brillo
3131ca5a376ac6d04817a7caf4d8a6e8b5994289a8Chris Masone
32fed60b0c640828b320f56293c8bebc43fd2b1da8Alex Vakulenko#endif  // LIBBRILLO_BRILLO_USERDB_UTILS_H_
33