[libc-commits] [libc] [libc][POSIX] implement fseeko, ftello (PR #86928)
Nick Desaulniers via libc-commits
libc-commits at lists.llvm.org
Thu Mar 28 15:50:09 PDT 2024
================
@@ -0,0 +1,26 @@
+//===-- Implementation of fseeko ------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "src/stdio/fseeko.h"
+#include "src/__support/File/file.h"
+
+#include "src/errno/libc_errno.h"
+
+namespace LIBC_NAMESPACE {
+
+LLVM_LIBC_FUNCTION(int, fseeko, (::FILE * stream, off_t offset, int whence)) {
+ auto result =
+ reinterpret_cast<LIBC_NAMESPACE::File *>(stream)->seek(offset, whence);
+ if (!result.has_value()) {
+ libc_errno = result.error();
+ return -1;
+ }
+ return 0;
----------------
nickdesaulniers wrote:
In that case, then we can rely on the implicit conversion to `bool` for `cpp::expected` to make this cleaner:
```suggestion
if (reinterpret_cast<LIBC_NAMESPACE::File *>(stream)->seek(offset, whence))
return 0;
libc_errno = result.error();
return -1;
```
https://github.com/llvm/llvm-project/pull/86928
More information about the libc-commits
mailing list