13 #include "llvm/ADT/SmallString.h"
14 #include "llvm/ADT/Twine.h"
15 #include "llvm/Support/Path.h"
16 #include "llvm/Support/raw_ostream.h"
23 #include <sys/types.h>
24 #include <sys/utsname.h>
33 hostname[
sizeof(hostname) - 1] =
'\0';
34 if (::gethostname(hostname,
sizeof(hostname) - 1) == 0) {
50 #include <android/api-level.h>
52 #if defined(__ANDROID_API__) && __ANDROID_API__ < 21
59 llvm::Optional<std::string> DoGetUserName(id_t uid)
override;
60 llvm::Optional<std::string> DoGetGroupName(id_t gid)
override;
75 if (
auto *user_info_ptr = ::getpwuid(uid))
76 return PasswdEntry{user_info_ptr->pw_name, user_info_ptr->pw_shell};
78 struct passwd user_info;
79 struct passwd *user_info_ptr = &user_info;
81 size_t user_buffer_size =
sizeof(user_buffer);
82 if (::getpwuid_r(uid, &user_info, user_buffer, user_buffer_size,
83 &user_info_ptr) == 0 &&
85 return PasswdEntry{user_info_ptr->pw_name, user_info_ptr->pw_shell};
91 llvm::Optional<std::string> PosixUserIDResolver::DoGetUserName(id_t uid) {
92 if (llvm::Optional<PasswdEntry> password =
GetPassword(uid))
97 llvm::Optional<std::string> PosixUserIDResolver::DoGetGroupName(id_t gid) {
100 size_t group_buffer_size =
sizeof(group_buffer);
101 struct group group_info;
102 struct group *group_info_ptr = &group_info;
104 if (::getgrgid_r(gid, &group_info, group_buffer, group_buffer_size,
105 &group_info_ptr) == 0) {
111 group_info_ptr = ::getgrgid(gid);
134 if (
const char *v = ::getenv(
"SHELL"))
136 if (llvm::Optional<PasswdEntry> password =
GetPassword(::geteuid()))
146 FileSpec temp_file(
"/opt/local/include/lldb");
153 if (
const char *pvar = ::getenv(var_name.c_str())) {