[clang-tools-extra] [libc] Refactor scanf reader to match printf (PR #66023)
Siva Chandra via cfe-commits
cfe-commits at lists.llvm.org
Fri Sep 22 11:23:32 PDT 2023
================
@@ -9,15 +9,57 @@
#ifndef LLVM_LIBC_SRC_STDIO_SCANF_CORE_VFSCANF_INTERNAL_H
#define LLVM_LIBC_SRC_STDIO_SCANF_CORE_VFSCANF_INTERNAL_H
+#include "src/__support/File/file.h"
#include "src/__support/arg_list.h"
+#include "src/stdio/scanf_core/reader.h"
+#include "src/stdio/scanf_core/scanf_main.h"
#include <stdio.h>
namespace __llvm_libc {
+
+namespace internal {
+#ifndef LIBC_COPT_SCANF_USE_SYSTEM_FILE
+LIBC_INLINE int getc(void *f) {
+ unsigned char c;
+ auto result = reinterpret_cast<__llvm_libc::File *>(f)->read_unlocked(&c, 1);
+ size_t r = result.value;
+ if (result.has_error() || r != 1) {
+ return '\0';
+ }
+ return c;
+}
+
+LIBC_INLINE void ungetc(int c, void *f) {
+ reinterpret_cast<__llvm_libc::File *>(f)->ungetc(c);
+}
+
+LIBC_INLINE int ferror_unlocked(FILE *f) {
+ return reinterpret_cast<__llvm_libc::File *>(f)->error_unlocked();
+}
+#else // defined(LIBC_COPT_PRINTF_USE_SYSTEM_FILE)
----------------
sivachandra wrote:
Same.
https://github.com/llvm/llvm-project/pull/66023
More information about the cfe-commits
mailing list