Actual source code: fuser.c

      1: /*
      2:       Code for manipulating files.
      3: */
      4: #include <petscsys.h>
      5: #if defined(PETSC_HAVE_WINDOWS_H)
      6:   #include <windows.h>
      7: #endif

      9: /*@C
     10:   PetscGetUserName - Get the login name of the user running the program on the current MPI process

     12:   Not Collective

     14:   Input Parameter:
     15: . nlen - length of the `name` buffer

     17:   Output Parameter:
     18: . name - on output, holds the user name (null-terminated)

     20:   Level: developer

     22: .seealso: `PetscGetHostName()`, `PetscGetProgramName()`
     23: @*/
     24: #if defined(PETSC_HAVE_GET_USER_NAME)
     25: PetscErrorCode PetscGetUserName(char name[], size_t nlen)
     26: {
     27:   PetscFunctionBegin;
     28:   GetUserName((LPTSTR)name, (LPDWORD)(&nlen));
     29:   PetscFunctionReturn(PETSC_SUCCESS);
     30: }

     32: #else

     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