FSGETPATH(2) | System Calls Manual | FSGETPATH(2) |
fsgetpath
— get
the path associated with filesystem node identifier (inode number/link
id/object id)
#include
<sys/attr.h>
#include <sys/fsgetpath.h>
ssize_t
fsgetpath
(char
* restrict_buf, size_t
buflen, fsid_t *
fsid, uint64_t
obj_id);
The
fsgetpath
()
function returns the path in a caller provided buffer
restrict_buf of length indicated by
buflen associated with a filesystem object identified
by fsid and obj_id.
fsid is a pointer to a structure which identifies a
filesystem to which the object belongs. It is obtained by the value returned
for ATTR_CMN_FSID in a previous call to getattrlist(2) or
the f_fsid field of the statfs
structure returned by statfs(2).
obj_id can be any one of of a object identifier i.e.
ATTR_CMN_FILEID returned by getattrlist(2) or
st_ino field of the stat
structure returned by stat(2) or a link id returned in
ATTR_CMNEXT_LINKID by a previous call to getattrlist(2).
Using a linkid will result in a more accurate path in case the filesystem
object is a hard link. If a inode number is passed and the object is a hard
link, any one of the multiple paths to that filesystem object may be
returned.
Upon successful completion, fsgetpath
()
returns the length of the path including the null terminator. Otherwise, a
value of -1 is returned and errno is set to indicate the error.
Not all volumes support fsgetpath
(). A
volume can be tested for fsgetpath
() support by
using getattrlist(2) to get the volume capabilities
attribute ATTR_VOL_CAPABILITIES, and then testing the
VOL_CAP_FMT_PATH_FROM_ID flag.
The fsgetpath
() function will fail if:
EACCES
]ENOTSUP
]EINVAL
]EIO
]EPERM
]ENOENT
]EFAULT
]ENOSPC
]The fsgetpath
() function call appeared in
macOS version 10.13
July 27, 2017 | Darwin |