2: #include <petscsys.h>
3: #if defined(PETSC_HAVE_PWD_H)
4: #include <pwd.h>
5: #endif
6: #include <ctype.h>
7: #include <sys/stat.h>
8: #if defined(PETSC_HAVE_UNISTD_H)
9: #include <unistd.h>
10: #endif
11: #if defined(PETSC_HAVE_SYS_UTSNAME_H)
12: #include <sys/utsname.h>
13: #endif
14: #if defined(PETSC_HAVE_SYS_SYSTEMINFO_H)
15: #include <sys/systeminfo.h>
16: #endif
18: /*@C
19: PetscGetRelativePath - Given a filename, returns the relative path (removes
20: all directory specifiers).
22: Not Collective
24: Input parameters:
25: + fullpath - full pathname
26: . path - pointer to buffer to hold relative pathname
27: - flen - size of path
29: Level: developer
31: .seealso: `PetscGetFullPath()`
32: @*/
33: PetscErrorCode PetscGetRelativePath(const char fullpath[], char path[], size_t flen)
34: {
35: char *p;
37: /* Find string after last / or entire string if no / */
38: PetscStrrchr(fullpath, '/', &p);
39: PetscStrncpy(path, p, flen);
40: return 0;
41: }