135ea84adSSiva Chandra Reddy //===-- Implementation of closedir ----------------------------------------===// 235ea84adSSiva Chandra Reddy // 335ea84adSSiva Chandra Reddy // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 435ea84adSSiva Chandra Reddy // See https://llvm.org/LICENSE.txt for license information. 535ea84adSSiva Chandra Reddy // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 635ea84adSSiva Chandra Reddy // 735ea84adSSiva Chandra Reddy //===----------------------------------------------------------------------===// 835ea84adSSiva Chandra Reddy 935ea84adSSiva Chandra Reddy #include "closedir.h" 1035ea84adSSiva Chandra Reddy 1135ea84adSSiva Chandra Reddy #include "src/__support/File/dir.h" 1235ea84adSSiva Chandra Reddy #include "src/__support/common.h" 13*5ff3ff33SPetr Hosek #include "src/__support/macros/config.h" 14d49b993fSSiva Chandra Reddy #include "src/errno/libc_errno.h" 1535ea84adSSiva Chandra Reddy 1635ea84adSSiva Chandra Reddy #include <dirent.h> 1735ea84adSSiva Chandra Reddy 18*5ff3ff33SPetr Hosek namespace LIBC_NAMESPACE_DECL { 1935ea84adSSiva Chandra Reddy 2035ea84adSSiva Chandra Reddy LLVM_LIBC_FUNCTION(int, closedir, (::DIR * dir)) { 21b6bc9d72SGuillaume Chatelet auto *d = reinterpret_cast<LIBC_NAMESPACE::Dir *>(dir); 229b29436aSSiva Chandra Reddy int retval = d->close(); 239b29436aSSiva Chandra Reddy if (retval != 0) { 24d49b993fSSiva Chandra Reddy libc_errno = retval; 259b29436aSSiva Chandra Reddy return -1; 269b29436aSSiva Chandra Reddy } 279b29436aSSiva Chandra Reddy return 0; 2835ea84adSSiva Chandra Reddy } 2935ea84adSSiva Chandra Reddy 30*5ff3ff33SPetr Hosek } // namespace LIBC_NAMESPACE_DECL 31