xref: /petsc/src/sys/utils/fuser.c (revision 6dd63270497ad23dcf16ae500a87ff2b2a0b7474)
1 /*
2       Code for manipulating files.
3 */
4 #include <petscsys.h>
5 #if defined(PETSC_HAVE_WINDOWS_H)
6   #include <windows.h>
7 #endif
8 
9 #if defined(PETSC_HAVE_GET_USER_NAME)
10 PetscErrorCode PetscGetUserName(char name[], size_t nlen)
11 {
12   PetscFunctionBegin;
13   GetUserName((LPTSTR)name, (LPDWORD)(&nlen));
14   PetscFunctionReturn(PETSC_SUCCESS);
15 }
16 
17 #else
18 /*@C
19   PetscGetUserName - Returns the name of the user.
20 
21   Not Collective
22 
23   Input Parameter:
24 . nlen - length of name
25 
26   Output Parameter:
27 . name - contains user name. Must be long enough to hold the name
28 
29   Level: developer
30 
31   Fortran Note:
32 .vb
33   character*(32) str
34   call PetscGetUserName(str,ierr)
35 .ve
36 
37 .seealso: `PetscGetHostName()`
38 @*/
39 PetscErrorCode PetscGetUserName(char name[], size_t nlen)
40 {
41   const char *user;
42 
43   PetscFunctionBegin;
44   user = getenv("USER");
45   if (!user) user = "Unknown";
46   PetscCall(PetscStrncpy(name, user, nlen));
47   PetscFunctionReturn(PETSC_SUCCESS);
48 }
49 #endif
50