.\" Copyright (c) 2017 Apple Computer, Inc. All rights reserved. .\" .\" The contents of this file constitute Original Code as defined in and .\" are subject to the Apple Public Source License Version 1.1 (the .\" "License"). You may not use this file except in compliance with the .\" License. Please obtain a copy of the License at .\" http://www.apple.com/publicsource and read it before using this file. .\" .\" This Original Code and all software distributed under the License are .\" distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER .\" EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, .\" INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, .\" FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the .\" License for the specific language governing rights and limitations .\" under the License. .\" .\" @(#)fsgetpath.2 . .Dd July 27, 2017 .Dt FSGETPATH 2 .Os Darwin .Sh NAME .Nm fsgetpath .Nd get the path associated with filesystem node identifier (inode number/link id/object id) .Sh SYNOPSIS .Fd #include .Fd #include .Pp .Ft ssize_t .Fn fsgetpath "char * restrict_buf" "size_t buflen" "fsid_t * fsid" "uint64_t obj_id" . .Sh DESCRIPTION The .Fn fsgetpath function returns the path in a caller provided buffer .Fa restrict_buf of length indicated by .Fa buflen associated with a filesystem object identified by .Fa fsid and .Fa obj_id. .Fa 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 .Xr getattrlist 2 or the .Fa f_fsid field of the .Vt statfs structure returned by .Xr statfs 2 . .Fa obj_id can be any one of of a object identifier i.e. ATTR_CMN_FILEID returned by .Xr getattrlist 2 or .Fa st_ino field of the .Vt stat structure returned by .Xr stat 2 or a link id returned in ATTR_CMNEXT_LINKID by a previous call to .Xr 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. .Sh RETURN VALUES Upon successful completion, .Fn 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. .Pp .Sh COMPATIBILITY Not all volumes support .Fn fsgetpath . A volume can be tested for .Fn fsgetpath support by using .Xr getattrlist 2 to get the volume capabilities attribute ATTR_VOL_CAPABILITIES, and then testing the VOL_CAP_FMT_PATH_FROM_ID flag. .Pp .Sh ERRORS The .Fn fsgetpath function will fail if: .Bl -tag -width Er . .It Bq Er EACCES Read permissions are denied on any component of the pathname. . .It Bq Er ENOTSUP The underlying filesystem does not support this call. . .It Bq Er EINVAL .Fa buflen is larger than PAGE_SIZE . .It Bq Er EIO An I/O error occurred while reading from the file system. . .It Bq Er EPERM The calling process does not have appropriate privileges. . .It Bq Er ENOENT The Filesystem object does not exist. . .It Bq Er EFAULT restrict_buf points to memory not valid in the callers address space. . .It Bq Er ENOSPC restrict_buf is not large enough to hold the path. . .El . .Pp . .Sh SEE ALSO . .Xr getattrlist 2 .Xr statfs 2 .Xr stat 2 . .Sh HISTORY The .Fn fsgetpath function call appeared in macOS version 10.13 .