Expose the user's login name.

This was SVN commit r7648.
This commit is contained in:
Ykkrosh
2010-06-30 21:18:29 +00:00
parent 103b60daa9
commit 545979040b
3 changed files with 31 additions and 0 deletions
+16
View File
@@ -188,3 +188,19 @@ size_t sys_max_sector_size()
cached_sector_size = sysconf(_SC_PAGE_SIZE);
return cached_sector_size;
}
std::wstring sys_get_user_name()
{
// Prefer LOGNAME, fall back on getlogin
const char* logname = getenv("LOGNAME");
if (logname && strcmp(logname, "") != 0)
return std::wstring(logname, logname + strlen(logname));
// TODO: maybe we should do locale conversion?
char buf[256];
if (getlogin_r(buf, ARRAY_SIZE(buf)) == 0)
return std::wstring(buf, buf + strlen(buf));
return L"";
}
+8
View File
@@ -349,6 +349,14 @@ LibError sys_get_executable_name(fs::wpath& pathname)
return INFO::OK;
}
std::wstring sys_get_user_name()
{
wchar_t usernameBuf[256];
DWORD size = ARRAY_SIZE(usernameBuf);
if(!GetUserNameW(usernameBuf, &size))
return L"";
return usernameBuf;
}
// callback for shell directory picker: used to set starting directory
// (for user convenience).
+7
View File
@@ -106,6 +106,13 @@ LibError sys_get_module_filename(void* addr, fs::wpath& pathname);
**/
LIB_API LibError sys_get_executable_name(fs::wpath& pathname);
/**
* get the current user's login name.
*
* @return login name, or empty string on error
*/
extern std::wstring sys_get_user_name();
/**
* have the user choose a directory via OS dialog.
*