17d0a6c19SBarry Smith 2e5c89e4eSSatish Balay /* 3e5c89e4eSSatish Balay Code for manipulating files. 4e5c89e4eSSatish Balay */ 5c6db04a5SJed Brown #include <petscsys.h> 6e5c89e4eSSatish Balay #if defined(PETSC_HAVE_WINDOWS_H) 7e5c89e4eSSatish Balay #include <windows.h> 8e5c89e4eSSatish Balay #endif 9e5c89e4eSSatish Balay 10e5c89e4eSSatish Balay #if defined(PETSC_HAVE_GET_USER_NAME) 11d71ae5a4SJacob Faibussowitsch PetscErrorCode PetscGetUserName(char name[], size_t nlen) 12d71ae5a4SJacob Faibussowitsch { 13e5c89e4eSSatish Balay PetscFunctionBegin; 14e5c89e4eSSatish Balay GetUserName((LPTSTR)name, (LPDWORD)(&nlen)); 153ba16761SJacob Faibussowitsch PetscFunctionReturn(PETSC_SUCCESS); 16e5c89e4eSSatish Balay } 17e5c89e4eSSatish Balay 1845082d64SJed Brown #else 19e5c89e4eSSatish Balay /*@C 20e5c89e4eSSatish Balay PetscGetUserName - Returns the name of the user. 21e5c89e4eSSatish Balay 22e5c89e4eSSatish Balay Not Collective 23e5c89e4eSSatish Balay 24e5c89e4eSSatish Balay Input Parameter: 25*10450e9eSJacob Faibussowitsch . nlen - length of name 26e5c89e4eSSatish Balay 27e5c89e4eSSatish Balay Output Parameter: 28e5c89e4eSSatish Balay . name - contains user name. Must be long enough to hold the name 29e5c89e4eSSatish Balay 30e5c89e4eSSatish Balay Level: developer 31e5c89e4eSSatish Balay 32db781477SPatrick Sanan .seealso: `PetscGetHostName()` 33e5c89e4eSSatish Balay @*/ 34d71ae5a4SJacob Faibussowitsch PetscErrorCode PetscGetUserName(char name[], size_t nlen) 35d71ae5a4SJacob Faibussowitsch { 3645082d64SJed Brown const char *user; 37e5c89e4eSSatish Balay 38e5c89e4eSSatish Balay PetscFunctionBegin; 3945082d64SJed Brown user = getenv("USER"); 4045082d64SJed Brown if (!user) user = "Unknown"; 419566063dSJacob Faibussowitsch PetscCall(PetscStrncpy(name, user, nlen)); 423ba16761SJacob Faibussowitsch PetscFunctionReturn(PETSC_SUCCESS); 4345082d64SJed Brown } 44ed74d47aSSatish Balay #endif 45