================ @@ -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 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits