3 * COPYRIGHT: See COPYING in the top level directory
4 * PROJECT: ReactOS system libraries
5 * FILE: lib/msvcrt/io/read.c
6 * PURPOSE: Reads a file
7 * PROGRAMER: Boudewijn Dekker
10 * 03/05/2002: made _read() non-greedy - it now returns as soon as
11 * any amount of data has been read. It's the expected
12 * behavior for line-buffered streams (KJK::Hyperion)
15 #include <msvcrt/io.h>
16 #include <msvcrt/internal/file.h>
19 #include <msvcrt/msvcrtdbg.h>
24 size_t _read(int _fd, void *_buf, size_t _nbyte)
26 DWORD _rbyte = 0, nbyte = _nbyte;
27 char *bufp = (char*)_buf;
31 DPRINT("_read(fd %d, buf %x, nbyte %d)\n", _fd, _buf, _nbyte);
37 hfile = _get_osfhandle(_fd);
38 istext = __fileno_getmode(_fd) & O_TEXT;
41 if (!ReadFile(hfile, bufp, nbyte, &_rbyte, NULL))
44 error = GetLastError();
45 if (error == ERROR_BROKEN_PIPE)
59 /* repeat for all bytes in the buffer */
60 for(; count; bufp++, count--)
86 /* shift characters back, to ignore carriage returns */
95 /* ignore the carriage returns */
98 DPRINT("%d\n", _rbyte);