Chromium Code Reviews| Index: remoting/host/username.cc |
| diff --git a/remoting/host/username.cc b/remoting/host/username.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..868624f6f7485c1de4351a9cc15bc379098c4039 |
| --- /dev/null |
| +++ b/remoting/host/username.cc |
| @@ -0,0 +1,39 @@ |
| +// Copyright 2013 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "remoting/host/username.h" |
| + |
| +#include <vector> |
| + |
| +#include "base/logging.h" |
| + |
| +#if defined(OS_POSIX) |
| +#include <pwd.h> |
| +#include <sys/types.h> |
| +#include <unistd.h> |
| +#endif // defined(OS_POSIX) |
| + |
| +namespace remoting { |
| + |
| +std::string GetUsername() { |
| +#if defined(OS_ANDROID) |
|
rmsousa
2013/12/11 02:20:07
Can we remove this #ifdef ANDROID section?
I susp
Sergey Ulanov
2013/12/11 02:22:50
Good point. Done
|
| + struct passwd* passwd = getpwuid(getuid()); |
| + return passwd ? passwd->pw_name : std::string(); |
| +#elif defined(OS_POSIX) |
| + long buf_size = sysconf(_SC_GETPW_R_SIZE_MAX); |
| + if (buf_size <= 0) |
| + return std::string(); |
| + |
| + std::vector<char> buf(buf_size); |
| + struct passwd passwd; |
| + struct passwd* passwd_result = NULL; |
| + getpwuid_r(getuid(), &passwd, &(buf[0]), buf_size, &passwd_result); |
| + return passwd_result ? passwd_result->pw_name : std::string(); |
| +#else // !defined(OS_POSIX) |
| + NOTIMPLEMENTED(); |
| + return std::string(); |
| +#endif // defined(OS_POSIX) |
| +} |
| + |
| +} // namespace remoting |