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