Actual source code: fwd.c
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 Parameter:
30: . len - maximum length of `path`
32: Output Parameter:
33: . path - holds the result value. The string should be long enough to hold the path, for example, `PETSC_MAX_PATH_LEN`
35: Level: developer
37: .seealso: `PetscGetTmp()`, `PetscSharedTmp()`, `PetscSharedWorkingDirectory()`, `PetscGetHomeDirectory()`
38: @*/
39: PetscErrorCode PetscGetWorkingDirectory(char path[], size_t len)
40: {
41: PetscFunctionBegin;
42: #if defined(PETSC_HAVE_GETCWD)
43: PetscCheck(getcwd(path, len), 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: PetscFunctionReturn(PETSC_SUCCESS);
52: }