diff options
Diffstat (limited to 'libc/include/bits/fortify/fcntl.h')
-rw-r--r-- | libc/include/bits/fortify/fcntl.h | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/libc/include/bits/fortify/fcntl.h b/libc/include/bits/fortify/fcntl.h index e7f2c8263..4bb441eee 100644 --- a/libc/include/bits/fortify/fcntl.h +++ b/libc/include/bits/fortify/fcntl.h @@ -92,6 +92,52 @@ int openat(int dirfd, const char* const __pass_object_size pathname, int flags, } #endif /* __ANDROID_API__ >= __ANDROID_API_J_MR1__ */ +#if __ANDROID_API__ >= __ANDROID_API_R__ +int __open64_2(const char*, int) __INTRODUCED_IN(30); +int __openat64_2(int, const char*, int) __INTRODUCED_IN(30); +int __open64_real(const char* __path, int __flags, ...) __RENAME(open64); +int __openat64_real(int, const char*, int, ...) __RENAME(openat64); + +__BIONIC_ERROR_FUNCTION_VISIBILITY +int open64(const char* pathname, int flags, mode_t modes, ...) __overloadable + __errorattr(__open_too_many_args_error); + +__BIONIC_FORTIFY_INLINE +int open64(const char* const __pass_object_size pathname, int flags) + __overloadable + __clang_error_if(__open_modes_useful(flags), "'open64' " __open_too_few_args_error) { + return __open64_2(pathname, flags); +} + +__BIONIC_FORTIFY_INLINE +int open64(const char* const __pass_object_size pathname, int flags, mode_t modes) + __overloadable + __clang_warning_if(!__open_modes_useful(flags) && modes, + "'open64' " __open_useless_modes_warning) { + return __open64_real(pathname, flags, modes); +} + +__BIONIC_ERROR_FUNCTION_VISIBILITY +int openat64(int dirfd, const char* pathname, int flags, mode_t modes, ...) + __overloadable + __errorattr(__open_too_many_args_error); + +__BIONIC_FORTIFY_INLINE +int openat64(int dirfd, const char* const __pass_object_size pathname, int flags) + __overloadable + __clang_error_if(__open_modes_useful(flags), "'openat64' " __open_too_few_args_error) { + return __openat64_2(dirfd, pathname, flags); +} + +__BIONIC_FORTIFY_INLINE +int openat64(int dirfd, const char* const __pass_object_size pathname, int flags, mode_t modes) + __overloadable + __clang_warning_if(!__open_modes_useful(flags) && modes, + "'openat64' " __open_useless_modes_warning) { + return __openat64_real(dirfd, pathname, flags, modes); +} +#endif /* __ANDROID_API__ >= __ANDROID_API_R__ */ + #undef __open_too_many_args_error #undef __open_too_few_args_error #undef __open_useless_modes_warning |