2: /* 3: Code for manipulating files. 4: */ 5: #include <petscsys.h> 6: #if defined(PETSC_HAVE_PWD_H) 7: #include <pwd.h> 8: #endif 9: #include <ctype.h> 10: #include <sys/stat.h> 11: #if defined(PETSC_HAVE_UNISTD_H) 12: #include <unistd.h> 13: #endif 14: #if defined(PETSC_HAVE_SYS_UTSNAME_H) 15: #include <sys/utsname.h> 16: #endif 17: #if defined(PETSC_HAVE_DIRECT_H) 18: #include <direct.h> 19: #endif 20: #if defined(PETSC_HAVE_SYS_SYSTEMINFO_H) 21: #include <sys/systeminfo.h> 22: #endif 24: /*@C 25: PetscGetWorkingDirectory - Gets the current working directory. 27: Not Collective 29: Input Parameters: 30: . len - maximum length of path 32: Output Parameter: 33: . path - use to hold the result value. The string should be long enough 34: to hold the path. 36: Level: developer 38: @*/ 39: PetscErrorCode PetscGetWorkingDirectory(char path[],size_t len) 40: { 42: #if defined(PETSC_HAVE_GETCWD) 43: if (!getcwd(path,len)) SETERRQ(PETSC_COMM_SELF,PETSC_ERR_LIB,"getcwd()"); 44: #elif defined(PETSC_HAVE__GETCWD) 45: _getcwd(path,len); 46: #elif defined(PETSC_HAVE_GETWD) 47: getwd(path); 48: #else 49: SETERRQ(PETSC_COMM_SELF,PETSC_ERR_SUP_SYS, "Could not find getcwd() or getwd()"); 50: #endif 51: return(0); 52: }