diff options
author | midipix <writeonce@midipix.org> | 2021-04-17 20:55:27 +0000 |
---|---|---|
committer | midipix <writeonce@midipix.org> | 2021-04-17 20:55:27 +0000 |
commit | fbce8b1e4ea6390be0e46a503c5c22b4c4ca4b01 (patch) | |
tree | 73f6f21953ab677912d9e1010dce26064c1cc1d4 | |
parent | e8bfe52070bfaa7934a02b78312b1689ac7b3805 (diff) | |
download | slibtool-fbce8b1e4ea6390be0e46a503c5c22b4c4ca4b01.tar.bz2 slibtool-fbce8b1e4ea6390be0e46a503c5c22b4c4ca4b01.tar.xz |
slbt_realpath(): added code path for systems with a realpathat syscall.
-rw-r--r-- | src/helper/slbt_realpath.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/helper/slbt_realpath.c b/src/helper/slbt_realpath.c index bae41ec..6b48831 100644 --- a/src/helper/slbt_realpath.c +++ b/src/helper/slbt_realpath.c @@ -15,6 +15,10 @@ #include "slibtool_driver_impl.h" #include "slibtool_readlink_impl.h" +#ifdef __unix__ +#include <sys/syscall.h> +#endif + #ifdef _MIDIPIX_ABI #include <sys/fs.h> #endif @@ -23,6 +27,10 @@ #define ENOTSUP EOPNOTSUPP #endif +#ifdef SYS___realpathat +extern long syscall(int, ...); +#endif + int slbt_realpath( int fdat, const char * path, @@ -48,6 +56,10 @@ int slbt_realpath( return __fs_rpath(fdat,path,options,buf,buflen); #endif +#ifdef SYS___realpathat + return syscall(SYS___realpathat,fdat,path,buf,buflen,0); +#endif + /* buflen */ if (buflen < PATH_MAX) { errno = ENOBUFS; |