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