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 20: /*@C 21: PetscGetRelativePath - Given a filename, returns the relative path (removes 22: all directory specifiers). 24: Not Collective 26: Input parameters: 27: + fullpath - full pathname 28: . path - pointer to buffer to hold relative pathname 29: - flen - size of path 31: Level: developer 33: Concepts: relative path 34: Concepts: path^relative 36: .seealso: PetscGetFullPath() 37: @*/ 38: PetscErrorCode PetscGetRelativePath(const char fullpath[],char path[],size_t flen) 39: { 40: char *p; 44: /* Find string after last / or entire string if no / */ 45: PetscStrrchr(fullpath,'/',&p); 46: PetscStrncpy(path,p,flen); 47: return(0); 48: }