Actual source code: rpath.c

petsc-3.7.3 2016-08-01
Report Typos and Errors
  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: }