185dff764SSiva Chandra Reddy //===-- Linux implementation of fchmodat ----------------------------------===// 285dff764SSiva Chandra Reddy // 385dff764SSiva Chandra Reddy // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 485dff764SSiva Chandra Reddy // See https://llvm.org/LICENSE.txt for license information. 585dff764SSiva Chandra Reddy // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 685dff764SSiva Chandra Reddy // 785dff764SSiva Chandra Reddy //===----------------------------------------------------------------------===// 885dff764SSiva Chandra Reddy 985dff764SSiva Chandra Reddy #include "src/sys/stat/fchmodat.h" 1085dff764SSiva Chandra Reddy 1185dff764SSiva Chandra Reddy #include "src/__support/OSUtil/syscall.h" // For internal syscall function. 1285dff764SSiva Chandra Reddy #include "src/__support/common.h" 1385dff764SSiva Chandra Reddy 14*5ff3ff33SPetr Hosek #include "src/__support/macros/config.h" 15204587a3SSiva Chandra Reddy #include "src/errno/libc_errno.h" 1685dff764SSiva Chandra Reddy #include <sys/stat.h> 1785dff764SSiva Chandra Reddy #include <sys/syscall.h> // For syscall numbers. 1885dff764SSiva Chandra Reddy 19*5ff3ff33SPetr Hosek namespace LIBC_NAMESPACE_DECL { 2085dff764SSiva Chandra Reddy 2185dff764SSiva Chandra Reddy LLVM_LIBC_FUNCTION(int, fchmodat, 2285dff764SSiva Chandra Reddy (int dirfd, const char *path, mode_t mode, int flags)) { 23f0a3954eSMichael Jones int ret = 24b6bc9d72SGuillaume Chatelet LIBC_NAMESPACE::syscall_impl<int>(SYS_fchmodat, dirfd, path, mode, flags); 2585dff764SSiva Chandra Reddy if (ret < 0) { 26204587a3SSiva Chandra Reddy libc_errno = -ret; 2785dff764SSiva Chandra Reddy return -1; 2885dff764SSiva Chandra Reddy } 2985dff764SSiva Chandra Reddy return 0; 3085dff764SSiva Chandra Reddy } 3185dff764SSiva Chandra Reddy 32*5ff3ff33SPetr Hosek } // namespace LIBC_NAMESPACE_DECL 33