xref: /petsc/src/sys/fileio/rpath.c (revision 9566063d113dddea24716c546802770db7481bc0)
1e5c89e4eSSatish Balay 
2c6db04a5SJed Brown #include <petscsys.h>
3e5c89e4eSSatish Balay #if defined(PETSC_HAVE_PWD_H)
4e5c89e4eSSatish Balay #include <pwd.h>
5e5c89e4eSSatish Balay #endif
6e5c89e4eSSatish Balay #include <ctype.h>
7e5c89e4eSSatish Balay #include <sys/stat.h>
8e5c89e4eSSatish Balay #if defined(PETSC_HAVE_UNISTD_H)
9e5c89e4eSSatish Balay #include <unistd.h>
10e5c89e4eSSatish Balay #endif
11e5c89e4eSSatish Balay #if defined(PETSC_HAVE_SYS_UTSNAME_H)
12e5c89e4eSSatish Balay #include <sys/utsname.h>
13e5c89e4eSSatish Balay #endif
14e5c89e4eSSatish Balay #if defined(PETSC_HAVE_SYS_SYSTEMINFO_H)
15e5c89e4eSSatish Balay #include <sys/systeminfo.h>
16e5c89e4eSSatish Balay #endif
17e5c89e4eSSatish Balay 
18e5c89e4eSSatish Balay /*@C
19e5c89e4eSSatish Balay    PetscGetRelativePath - Given a filename, returns the relative path (removes
20e5c89e4eSSatish Balay    all directory specifiers).
21e5c89e4eSSatish Balay 
22e5c89e4eSSatish Balay    Not Collective
23e5c89e4eSSatish Balay 
24e5c89e4eSSatish Balay    Input parameters:
25e5c89e4eSSatish Balay +  fullpath  - full pathname
26e5c89e4eSSatish Balay .  path      - pointer to buffer to hold relative pathname
27e5c89e4eSSatish Balay -  flen     - size of path
28e5c89e4eSSatish Balay 
29e5c89e4eSSatish Balay    Level: developer
30e5c89e4eSSatish Balay 
31e5c89e4eSSatish Balay .seealso: PetscGetFullPath()
32e5c89e4eSSatish Balay @*/
337087cfbeSBarry Smith PetscErrorCode  PetscGetRelativePath(const char fullpath[],char path[],size_t flen)
34e5c89e4eSSatish Balay {
35e5c89e4eSSatish Balay   char           *p;
36e5c89e4eSSatish Balay 
37e5c89e4eSSatish Balay   PetscFunctionBegin;
38e5c89e4eSSatish Balay   /* Find string after last / or entire string if no / */
39*9566063dSJacob Faibussowitsch   PetscCall(PetscStrrchr(fullpath,'/',&p));
40*9566063dSJacob Faibussowitsch   PetscCall(PetscStrncpy(path,p,flen));
41e5c89e4eSSatish Balay   PetscFunctionReturn(0);
42e5c89e4eSSatish Balay }
43