summaryrefslogtreecommitdiffstats
path: root/remoting/host/username.cc
diff options
context:
space:
mode:
authorsergeyu@chromium.org <sergeyu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-12-11 09:17:32 +0000
committersergeyu@chromium.org <sergeyu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-12-11 09:17:32 +0000
commit07b063c348bdc5627fff9f9bcf558ea2a2a80a03 (patch)
tree8bc1938fd4a60a9718810fb2f7717e1a8d2cf78e /remoting/host/username.cc
parent8ad04b82b3514a78b3f11d2bf06f8d984c609606 (diff)
downloadchromium_src-07b063c348bdc5627fff9f9bcf558ea2a2a80a03.zip
chromium_src-07b063c348bdc5627fff9f9bcf558ea2a2a80a03.tar.gz
chromium_src-07b063c348bdc5627fff9f9bcf558ea2a2a80a03.tar.bz2
Move remoting::GetUsername() from remoting/base to remoting/host
GetUsername() doesn't belong to remoting/base because it's not used by the client. BUG=276739 Review URL: https://codereview.chromium.org/112353002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@240064 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'remoting/host/username.cc')
-rw-r--r--remoting/host/username.cc36
1 files changed, 36 insertions, 0 deletions
diff --git a/remoting/host/username.cc b/remoting/host/username.cc
new file mode 100644
index 0000000..e737425
--- /dev/null
+++ b/remoting/host/username.cc
@@ -0,0 +1,36 @@
+// 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_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