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
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)
18 #include <internal/debug.h>
23 int _read(int _fd
, void *_buf
, unsigned int _nbyte
)
25 DWORD _rbyte
= 0, nbyte
= _nbyte
;
26 char *bufp
= (char*)_buf
;
30 DPRINT("_read(fd %d, buf %x, nbyte %d)\n", _fd
, _buf
, _nbyte
);
36 hfile
= (HANDLE
)_get_osfhandle(_fd
);
37 istext
= __fileno_getmode(_fd
) & O_TEXT
;
40 if (!ReadFile(hfile
, bufp
, nbyte
, &_rbyte
, NULL
))
43 error
= GetLastError();
44 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
);