Actual source code: fwd.c
petsc-3.13.6 2020-09-29
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: }