2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS system libraries
4 * FILE: lib/msvcrt/io/read.c
5 * PURPOSE: Reads a file
6 * PROGRAMER: Boudewijn Dekker
9 * 03/05/2002: made _read() non-greedy - it now returns as soon as
10 * any amount of data has been read. It's the expected
11 * behavior for line-buffered streams (KJK::Hyperion)
14 #include <msvcrt/io.h>
15 #include <msvcrt/internal/file.h>
18 #include <msvcrt/msvcrtdbg.h>
20 size_t _read(int _fd
, void *_buf
, size_t _nbyte
)
22 DWORD _rbyte
= 0, nbyte
= _nbyte
;
23 char *bufp
= (char*)_buf
;
27 DPRINT("_read(fd %d, buf %x, nbyte %d)\n", _fd
, _buf
, _nbyte
);
33 hfile
= _get_osfhandle(_fd
);
34 istext
= __fileno_getmode(_fd
) & O_TEXT
;
37 if (!ReadFile(hfile
, bufp
, nbyte
, &_rbyte
, NULL
))
49 /* repeat for all bytes in the buffer */
50 for(; count
; bufp
++, count
--)
55 /* shift characters back, to ignore carriage returns */
61 /* ignore the carriage returns */
65 DPRINT("%d\n", _rbyte
);