Actual source code: rpath.c
petsc-3.11.4 2019-09-28
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: Concepts: relative path
32: Concepts: path^relative
34: .seealso: PetscGetFullPath()
35: @*/
36: PetscErrorCode PetscGetRelativePath(const char fullpath[],char path[],size_t flen)
37: {
38: char *p;
42: /* Find string after last / or entire string if no / */
43: PetscStrrchr(fullpath,'/',&p);
44: PetscStrncpy(path,p,flen);
45: return(0);
46: }