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: Concepts: working directory 40: @*/ 41: PetscErrorCode PetscGetWorkingDirectory(char path[],size_t len) 42: { 44: #if defined(PETSC_HAVE_GETCWD) 45: if (!getcwd(path,len)) SETERRQ(PETSC_COMM_SELF,PETSC_ERR_LIB,"getcwd()"); 46: #elif defined(PETSC_HAVE__GETCWD) 47: _getcwd(path,len); 48: #elif defined(PETSC_HAVE_GETWD) 49: getwd(path); 50: #else 51: SETERRQ(PETSC_COMM_SELF,PETSC_ERR_SUP_SYS, "Could not find getcwd() or getwd()"); 52: #endif 53: return(0); 54: }