Andrew Schwartzmeyer
5ed81a0a41
Return char* for GetUserName
...
The UTF-8 char* is marshaled to a UTF-16 string automatically. It must
be allocated on the heap as the CLR will free the returned memory.
This removes entire classes of possible errors, greatly reducing the
code complexity and number of tests.
2015-10-24 22:17:44 -07:00
Andrew Schwartzmeyer
020a768c31
Use getpwuid(geteuid()) instead of getlogin()
...
This removes the dependency on a TTY and now does what is expected: gets
the (possibly impersonated) username of the current process/thread.
Implementation and tests updated, still uses reentrant versions where possible.
2015-09-23 15:57:23 -07:00
Andrew Schwartzmeyer
60a9a360a1
Use libicu properly for UTF-16 conversion
...
- No more messy calculations
- Only one include, not four
- No resizing
- No memcpy
- Faster because of fromUTF8()
2015-08-13 21:27:08 -07:00
Andrew Schwartzmeyer
70a163e061
Use known size instead of calculation
2015-08-13 20:32:30 -07:00
Andrew Schwartzmeyer
674ca43046
Use just LOGIN_NAME_MAX
...
The +1 is unnecessary since LOGIN_NAME_MAX includes null.
2015-08-13 20:32:30 -07:00
Andrew Schwartzmeyer
db7117bd47
Use length() instead of size()
...
To be consistent with everything else.
2015-08-13 20:32:30 -07:00
Andrew Schwartzmeyer
fc8f5d18c4
Use 0 instead of '\0'
...
To be consistent with tests
2015-08-13 20:32:30 -07:00
Andrew Schwartzmeyer
bb67bfaae7
Remove std::string utf8
...
Not used consistently. Use in-place for comparison.
2015-08-13 17:53:28 -07:00
Andrew Schwartzmeyer
46677d776b
Return FALSE instead of 0
2015-08-13 17:44:05 -07:00
Andrew Schwartzmeyer
9a42b894f2
Convert to Allman style with 4-space indentation
2015-08-07 18:43:58 -07:00
Andrew Schwartzmeyer
665f8f1e87
Map getlogin_r()'s ERANGE to ERROR_GEN_FAILURE
...
ERROR_INSUFFICIENT_BUFFER should never occur here and would be a
misleading error for the user.
2015-08-07 12:05:07 -07:00
Andrew Schwartzmeyer
f8e9dfde8c
Fix style issues
...
- Use Doxygen style comments (with better comments)
- Use `type* ident` instead of `type *ident`
- Start { on new lines
- Use TRUE/FALSE from PAL.H
2015-08-07 12:03:31 -07:00
Andrew Schwartzmeyer
b379fb4a6b
Rename to GetUserNameW since it is Unicode
2015-08-06 16:28:29 -07:00
Andrew Schwartzmeyer
447896aede
Use WCHAR sizes instead of CHAR sizes
...
Such that lpnSize is the length (number of UTF-16 characters, including
null) of the username. Must be multiplied by sizeof(char16_t) for bytes.
2015-08-04 18:31:54 -07:00
Andrew Schwartzmeyer
d60bfe0376
Use icu for Unicode conversion and fix lpnSize
...
A careful reading of the GetUserName documentation and Windows Data
Types says that lpnSize is "the number of TCHARs copied to the
buffer...including the terminating null character," and a TCHAR in this
environment is a CHAR because we assume UNICODE is always defined for
CoreCLR. A CHAR is a byte. So lpSize is number of bytes, not number of
UTF-16 characters as we previously believed.
2015-08-04 14:16:49 -07:00
Andrew Schwartzmeyer
b076850012
Refactor setting of lpnSize when buffer size is insufficient
2015-08-03 13:00:34 -07:00
Andrew Schwartzmeyer
2a2c1d9236
Remove unnecessary static qualifier from const string
2015-08-03 13:00:34 -07:00
Andrew Schwartzmeyer
0592a37395
Use std::string instead of C99 dynamic array
2015-08-03 13:00:34 -07:00
Andrew Schwartzmeyer
9426e9c455
Use LOGIN_NAME_MAX instead of L_cuserid
...
Since L_cuserid is only for cuserid, not getlogin_r
Unit test for L_cuserid removed because the macro may not be available
on all platforms.
2015-08-03 13:00:34 -07:00
Andrew Schwartzmeyer
4a2c1c5a95
Set lpnSize when insufficient
2015-08-03 13:00:34 -07:00
Andrew Schwartzmeyer
e8cb7e24fe
Use L_cuserid instead of 64 and given lpnSize
2015-08-03 13:00:34 -07:00
Andrew Schwartzmeyer
3ab3408378
Factor out using directives
2015-08-03 13:00:34 -07:00
Andrew Schwartzmeyer
6699091f7b
Change global to local static const
...
To avoid polluting the global namespace without using a namespace.
2015-08-03 13:00:34 -07:00
Andrew Schwartzmeyer
3ac74ab849
Convert get_login_r to UTF-16 and return
2015-08-03 13:00:34 -07:00
Andrew Schwartzmeyer
6481f0336d
Check for invalid parameters in GetUserName
2015-08-03 13:00:34 -07:00
Andrew Schwartzmeyer
b80da9ab4d
Use getlogin_r() in GetUserName and map errno
2015-08-03 12:53:39 -07:00
Andrew Schwartzmeyer
f676c77a8e
Check locale in GetUserName
2015-08-03 12:53:39 -07:00
Andrew Schwartzmeyer
4404e03613
Update GetUserName signature
2015-08-03 12:53:39 -07:00
Peter Honeder
1b02619b2d
added libps.so, added stub for GetUserName
2015-06-16 14:02:19 -07:00