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: }