X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/fe8ab488e9161c46dd9885d58fc52996dc0249ff..4ba76501152d51ccb5647018f3192c6096367d48:/bsd/sys/fsgetpath.h diff --git a/bsd/sys/fsgetpath.h b/bsd/sys/fsgetpath.h index 941f31c02..75a96e3f4 100644 --- a/bsd/sys/fsgetpath.h +++ b/bsd/sys/fsgetpath.h @@ -1,8 +1,8 @@ /* - * Copyright (c) 2008 Apple Inc. All rights reserved. + * Copyright (c) 2008-2017 Apple Inc. All rights reserved. * * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ - * + * * This file contains Original Code and/or Modifications of Original Code * as defined in and that are subject to the Apple Public Source License * Version 2.0 (the 'License'). You may not use this file except in @@ -11,10 +11,10 @@ * unlawful or unlicensed copies of an Apple operating system, or to * circumvent, violate, or enable the circumvention or violation of, any * terms of an Apple operating system software license agreement. - * + * * Please obtain a copy of the License at * http://www.opensource.apple.com/apsl/ and read it before using this file. - * + * * The 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, @@ -22,55 +22,85 @@ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. * Please see the License for the specific language governing rights and * limitations under the License. - * + * * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ */ -#ifndef _FSGETPATH_H_ +#ifndef _FSGETPATH_H_ #define _FSGETPATH_H_ +#ifndef KERNEL + +#include +#include +#include +#include +#include <_types/_uint64_t.h> +#include + +#ifdef PRIVATE +/* + * These are only included for compatibility with previous header + */ #include #include - #ifdef __APPLE_API_PRIVATE - -#ifndef KERNEL -__BEGIN_DECLS - +#include #include #include +#endif /* __APPLE_API_PRIVATE */ +#endif /* PRIVATE */ + +__BEGIN_DECLS /* * Obtain the full pathname of a file system object by id. - * - * This is a private SPI used by the File Manager. - * - * ssize_t fsgetpath_np(char *restrict buf, size_t bufsize, fsid_t fsid, uint64_t objid); */ -#define fsgetpath(buf, bufsize, fsid, objid) \ - (ssize_t)syscall(SYS_fsgetpath, buf, (size_t)bufsize, fsid, (uint64_t)objid) +ssize_t fsgetpath(char *, size_t, fsid_t *, uint64_t) __OSX_AVAILABLE(10.13) __IOS_AVAILABLE(11.0) __TVOS_AVAILABLE(11.0) __WATCHOS_AVAILABLE(4.0); + +#ifdef PRIVATE +#include + +#ifndef FSOPT_NOFIRMLINKPATH /* also in attr.h */ +#define FSOPT_NOFIRMLINKPATH 0x00000080 +#endif + +#ifndef FSOPT_ISREALFSID /* also in attr.h */ +#ifdef FSOPT_RETURN_REALDEV +#define FSOPT_ISREALFSID FSOPT_RETURN_REALDEV +#else +#define FSOPT_ISREALFSID 0x00000200 +#endif +#endif /* FSOPT_ISREALFSID */ + +#ifdef __APPLE_API_PRIVATE + /* - * openbyid_np: open a file given a file system id and a file system object id - * + * openbyid_np: open a file given a file system id and a file system object id + * * fsid : value corresponding to getattlist ATTR_CMN_FSID attribute, or - * value of stat's st.st_dev ; set fsid = {st.st_dev, 0} + * value of stat's st.st_dev ; set fsid = {st.st_dev, 0} * - * objid: value (link id/node id) corresponding to getattlist ATTR_CMN_OBJID + * objid: value (link id/node id) corresponding to getattlist ATTR_CMN_OBJID * attribute , or * value of stat's st.st_ino (node id); set objid = st.st_ino * * For hfs the value of getattlist ATTR_CMN_FSID is a link id which uniquely identifies a * parent in the case of hard linked files; this allows unique path access validation. * Not all file systems support getattrlist ATTR_CMN_OBJID (link id). - * A node id does not uniquely identify a parent in the case of hard linked files and may + * A node id does not uniquely identify a parent in the case of hard linked files and may * resolve to a path for which access validation can fail. */ int openbyid_np(fsid_t* fsid, fsobj_id_t* objid, int flags); -__END_DECLS -#endif /* KERNEL */ +ssize_t fsgetpath_ext(char *, size_t, fsid_t *, uint64_t, uint32_t) __OSX_AVAILABLE(10.15) __IOS_AVAILABLE(13.0) __TVOS_AVAILABLE(13.0) __WATCHOS_AVAILABLE(6.0); #endif /* __APPLE_API_PRIVATE */ +#endif /* PRIVATE */ + +__END_DECLS + +#endif /* KERNEL */ #endif /* !_FSGETPATH_H_ */