[libc-commits] [libc] [libc] Support _IONBF buffering for read_unlocked (PR #120677)

Nick Desaulniers via libc-commits libc-commits at lists.llvm.org
Tue Jan 7 10:40:48 PST 2025


================
@@ -245,6 +266,26 @@ FileIOResult File::read_unlocked(void *data, size_t len) {
   return {transfer_size + available_data, result.error};
 }
 
+FileIOResult File::read_unlocked_nbf(uint8_t *data, size_t len) {
+  // Check whether there is a character in the ungetc buffer.
+  size_t available_data = copy_data_from_buf(data, len);
+  if (available_data == len)
+    return available_data;
+
+  // Directly copy the data into |data|.
+  cpp::span<uint8_t> dataref(static_cast<uint8_t *>(data) + available_data,
+                             len - available_data);
+  auto result = platform_read(this, dataref.data(), dataref.size());
----------------
nickdesaulniers wrote:

I know the existing code already uses `auto`, but can we just use `FileIOResult`?

https://github.com/llvm/llvm-project/pull/120677


More information about the libc-commits mailing list