diff options
author | solb@chromium.org <solb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-07-09 17:19:11 +0000 |
---|---|---|
committer | solb@chromium.org <solb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-07-09 17:19:11 +0000 |
commit | 53ca41dd279806557e269f9dc04eeaafd85ac35e (patch) | |
tree | 77704d85122d6aea11a1d9424da1cfe217c7067d /remoting | |
parent | 02c4ff842393637f504ef84723341c159463fe02 (diff) | |
download | chromium_src-53ca41dd279806557e269f9dc04eeaafd85ac35e.zip chromium_src-53ca41dd279806557e269f9dc04eeaafd85ac35e.tar.gz chromium_src-53ca41dd279806557e269f9dc04eeaafd85ac35e.tar.bz2 |
Don't use reentrant version of getpwuid on Android
The platform doesn't implement this POSIX function.
Review URL: https://chromiumcodereview.appspot.com/18532006
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@210589 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'remoting')
-rw-r--r-- | remoting/base/util.cc | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/remoting/base/util.cc b/remoting/base/util.cc index 0188197..0a0a529 100644 --- a/remoting/base/util.cc +++ b/remoting/base/util.cc @@ -310,17 +310,19 @@ bool StringIsUtf8(const char* data, size_t length) { } std::string GetUsername() { -#if defined(OS_POSIX) +#if defined(OS_ANDROID) + 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(); + scoped_ptr<char[]> buf(new char[buf_size]); struct passwd passwd; struct passwd* passwd_result = NULL; getpwuid_r(getuid(), &passwd, buf.get(), buf_size, &passwd_result); - if (!passwd_result) - return std::string(); - return std::string(passwd_result->pw_name); + return passwd_result ? passwd_result->pw_name : std::string(); #else // !defined(OS_POSIX) return std::string(); #endif // defined(OS_POSIX) |