105532289SSiva Chandra Reddy //===-- Linux implementation of fchmod ------------------------------------===// 205532289SSiva Chandra Reddy // 305532289SSiva Chandra Reddy // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 405532289SSiva Chandra Reddy // See https://llvm.org/LICENSE.txt for license information. 505532289SSiva Chandra Reddy // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 605532289SSiva Chandra Reddy // 705532289SSiva Chandra Reddy //===----------------------------------------------------------------------===// 805532289SSiva Chandra Reddy 905532289SSiva Chandra Reddy #include "src/sys/stat/fchmod.h" 1005532289SSiva Chandra Reddy 1105532289SSiva Chandra Reddy #include "src/__support/OSUtil/syscall.h" // For internal syscall function. 1205532289SSiva Chandra Reddy #include "src/__support/common.h" 1305532289SSiva Chandra Reddy 14*abc49cc1SJob Henandez Lara #include "hdr/types/mode_t.h" 155ff3ff33SPetr Hosek #include "src/__support/macros/config.h" 16204587a3SSiva Chandra Reddy #include "src/errno/libc_errno.h" 1705532289SSiva Chandra Reddy #include <sys/stat.h> 1805532289SSiva Chandra Reddy #include <sys/syscall.h> // For syscall numbers. 1905532289SSiva Chandra Reddy 205ff3ff33SPetr Hosek namespace LIBC_NAMESPACE_DECL { 2105532289SSiva Chandra Reddy 2205532289SSiva Chandra Reddy LLVM_LIBC_FUNCTION(int, fchmod, (int fd, mode_t mode)) { 23b6bc9d72SGuillaume Chatelet int ret = LIBC_NAMESPACE::syscall_impl<int>(SYS_fchmod, fd, mode); 2405532289SSiva Chandra Reddy if (ret < 0) { 25204587a3SSiva Chandra Reddy libc_errno = -ret; 2605532289SSiva Chandra Reddy return -1; 2705532289SSiva Chandra Reddy } 2805532289SSiva Chandra Reddy return 0; 2905532289SSiva Chandra Reddy } 3005532289SSiva Chandra Reddy 315ff3ff33SPetr Hosek } // namespace LIBC_NAMESPACE_DECL 32