xref: /llvm-project/libc/src/sys/stat/linux/stat.cpp (revision abc49cc19463970d5523d7d3332e4c1f83bc2ef7)
1e310f8bdSSiva Chandra Reddy //===-- Linux implementation of stat --------------------------------------===//
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/stat.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, stat,
22e310f8bdSSiva Chandra Reddy                    (const char *__restrict path,
23e310f8bdSSiva Chandra Reddy                     struct stat *__restrict statbuf)) {
2455612b8eSSiva Chandra Reddy   int err = statx(AT_FDCWD, path, 0, statbuf);
2555612b8eSSiva Chandra Reddy   if (err != 0) {
2655612b8eSSiva Chandra Reddy     libc_errno = err;
2755612b8eSSiva Chandra Reddy     return -1;
2855612b8eSSiva Chandra Reddy   }
2955612b8eSSiva Chandra Reddy   return 0;
30e310f8bdSSiva Chandra Reddy }
31e310f8bdSSiva Chandra Reddy 
325ff3ff33SPetr Hosek } // namespace LIBC_NAMESPACE_DECL
33