xref: /llvm-project/libc/src/sys/stat/linux/fstat.cpp (revision abc49cc19463970d5523d7d3332e4c1f83bc2ef7)
1e310f8bdSSiva Chandra Reddy //===-- Linux implementation of fstat -------------------------------------===//
2e310f8bdSSiva Chandra Reddy //
3e310f8bdSSiva Chandra Reddy // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4e310f8bdSSiva Chandra Reddy // See https://llvm.org/LICENSE.txt for license information.
5e310f8bdSSiva Chandra Reddy // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6e310f8bdSSiva Chandra Reddy //
7e310f8bdSSiva Chandra Reddy //===----------------------------------------------------------------------===//
8e310f8bdSSiva Chandra Reddy 
9e310f8bdSSiva Chandra Reddy #include "src/sys/stat/fstat.h"
10e310f8bdSSiva Chandra Reddy #include "kernel_statx.h"
115ff3ff33SPetr Hosek #include "src/__support/macros/config.h"
1255612b8eSSiva Chandra Reddy #include "src/errno/libc_errno.h"
13e310f8bdSSiva Chandra Reddy 
14e310f8bdSSiva Chandra Reddy #include "src/__support/common.h"
15e310f8bdSSiva Chandra Reddy 
16*abc49cc1SJob Henandez Lara #include "hdr/fcntl_macros.h"
17e310f8bdSSiva Chandra Reddy #include <sys/stat.h>
18e310f8bdSSiva Chandra Reddy 
195ff3ff33SPetr Hosek namespace LIBC_NAMESPACE_DECL {
20e310f8bdSSiva Chandra Reddy 
21e310f8bdSSiva Chandra Reddy LLVM_LIBC_FUNCTION(int, fstat, (int fd, struct stat *statbuf)) {
2255612b8eSSiva Chandra Reddy   int err = statx(fd, "", AT_EMPTY_PATH, statbuf);
2355612b8eSSiva Chandra Reddy   if (err != 0) {
2455612b8eSSiva Chandra Reddy     libc_errno = err;
2555612b8eSSiva Chandra Reddy     return -1;
2655612b8eSSiva Chandra Reddy   }
2755612b8eSSiva Chandra Reddy   return 0;
28e310f8bdSSiva Chandra Reddy }
29e310f8bdSSiva Chandra Reddy 
305ff3ff33SPetr Hosek } // namespace LIBC_NAMESPACE_DECL
31