17ac8e26fSJoseph Huber //===-- Implementation of fseek -------------------------------------------===// 27ac8e26fSJoseph Huber // 37ac8e26fSJoseph Huber // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 47ac8e26fSJoseph Huber // See https://llvm.org/LICENSE.txt for license information. 57ac8e26fSJoseph Huber // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 67ac8e26fSJoseph Huber // 77ac8e26fSJoseph Huber //===----------------------------------------------------------------------===// 87ac8e26fSJoseph Huber 97ac8e26fSJoseph Huber #include "src/stdio/fseek.h" 107ac8e26fSJoseph Huber #include "src/__support/File/file.h" 117ac8e26fSJoseph Huber 12*5ff3ff33SPetr Hosek #include "src/__support/macros/config.h" 137ac8e26fSJoseph Huber #include "src/errno/libc_errno.h" 147ac8e26fSJoseph Huber 15*5ff3ff33SPetr Hosek namespace LIBC_NAMESPACE_DECL { 167ac8e26fSJoseph Huber 177ac8e26fSJoseph Huber LLVM_LIBC_FUNCTION(int, fseek, (::FILE * stream, long offset, int whence)) { 187ac8e26fSJoseph Huber auto result = 197ac8e26fSJoseph Huber reinterpret_cast<LIBC_NAMESPACE::File *>(stream)->seek(offset, whence); 207ac8e26fSJoseph Huber if (!result.has_value()) { 217ac8e26fSJoseph Huber libc_errno = result.error(); 227ac8e26fSJoseph Huber return -1; 237ac8e26fSJoseph Huber } 247ac8e26fSJoseph Huber return 0; 257ac8e26fSJoseph Huber } 267ac8e26fSJoseph Huber 27*5ff3ff33SPetr Hosek } // namespace LIBC_NAMESPACE_DECL 28