summaryrefslogtreecommitdiffstats
path: root/remoting
diff options
context:
space:
mode:
authorsolb@chromium.org <solb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-07-09 17:19:11 +0000
committersolb@chromium.org <solb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-07-09 17:19:11 +0000
commit53ca41dd279806557e269f9dc04eeaafd85ac35e (patch)
tree77704d85122d6aea11a1d9424da1cfe217c7067d /remoting
parent02c4ff842393637f504ef84723341c159463fe02 (diff)
downloadchromium_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.cc10
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)