2: /*
3: Code for manipulating files.
4: */
5: #include <petscsys.h>
6: #if defined(PETSC_HAVE_WINDOWS_H)
7: #include <windows.h>
8: #endif
10: #if defined(PETSC_HAVE_GET_USER_NAME)
11: PetscErrorCode PetscGetUserName(char name[], size_t nlen)
12: {
13: PetscFunctionBegin;
14: GetUserName((LPTSTR)name, (LPDWORD)(&nlen));
15: PetscFunctionReturn(PETSC_SUCCESS);
16: }
18: #else
19: /*@C
20: PetscGetUserName - Returns the name of the user.
22: Not Collective
24: Input Parameter:
25: nlen - length of name
27: Output Parameter:
28: . name - contains user name. Must be long enough to hold the name
30: Level: developer
32: .seealso: `PetscGetHostName()`
33: @*/
34: PetscErrorCode PetscGetUserName(char name[], size_t nlen)
35: {
36: const char *user;
38: PetscFunctionBegin;
39: user = getenv("USER");
40: if (!user) user = "Unknown";
41: PetscCall(PetscStrncpy(name, user, nlen));
42: PetscFunctionReturn(PETSC_SUCCESS);
43: }
44: #endif