1c6db04a5SJed Brown #include <petscsys.h> 2e5c89e4eSSatish Balay #if defined(PETSC_HAVE_PWD_H) 3e5c89e4eSSatish Balay #include <pwd.h> 4e5c89e4eSSatish Balay #endif 5e5c89e4eSSatish Balay #include <ctype.h> 6e5c89e4eSSatish Balay #include <sys/stat.h> 7e5c89e4eSSatish Balay #if defined(PETSC_HAVE_UNISTD_H) 8e5c89e4eSSatish Balay #include <unistd.h> 9e5c89e4eSSatish Balay #endif 10e5c89e4eSSatish Balay #if defined(PETSC_HAVE_SYS_UTSNAME_H) 11e5c89e4eSSatish Balay #include <sys/utsname.h> 12e5c89e4eSSatish Balay #endif 13e5c89e4eSSatish Balay #if defined(PETSC_HAVE_SYS_SYSTEMINFO_H) 14e5c89e4eSSatish Balay #include <sys/systeminfo.h> 15e5c89e4eSSatish Balay #endif 16e5c89e4eSSatish Balay 17e5c89e4eSSatish Balay /*@C 18e5c89e4eSSatish Balay PetscGetRelativePath - Given a filename, returns the relative path (removes 19e5c89e4eSSatish Balay all directory specifiers). 20e5c89e4eSSatish Balay 21bfbbc7b7SBarry Smith Not Collective; No Fortran Support 22e5c89e4eSSatish Balay 23*21532e8aSBarry Smith Input Parameters: 24e5c89e4eSSatish Balay + fullpath - full pathname 25*21532e8aSBarry Smith - flen - size of `path` 26*21532e8aSBarry Smith 27*21532e8aSBarry Smith Output Parameter: 28*21532e8aSBarry Smith . path - buffer that holds relative pathname 29e5c89e4eSSatish Balay 30e5c89e4eSSatish Balay Level: developer 31e5c89e4eSSatish Balay 32db781477SPatrick Sanan .seealso: `PetscGetFullPath()` 33e5c89e4eSSatish Balay @*/ PetscGetRelativePath(const char fullpath[],char path[],size_t flen)34d71ae5a4SJacob FaibussowitschPetscErrorCode PetscGetRelativePath(const char fullpath[], char path[], size_t flen) 35d71ae5a4SJacob Faibussowitsch { 367864358aSSatish Balay char *p = NULL; 37e5c89e4eSSatish Balay 38e5c89e4eSSatish Balay PetscFunctionBegin; 39e5c89e4eSSatish Balay /* Find string after last / or entire string if no / */ 409566063dSJacob Faibussowitsch PetscCall(PetscStrrchr(fullpath, '/', &p)); 419566063dSJacob Faibussowitsch PetscCall(PetscStrncpy(path, p, flen)); 423ba16761SJacob Faibussowitsch PetscFunctionReturn(PETSC_SUCCESS); 43e5c89e4eSSatish Balay } 44