2 Copyright © 1995-2008, The AROS Development Team. All rights reserved.
5 Desc: Read a couple of bytes from a file.
9 #include <aros/debug.h>
10 #include <proto/exec.h>
11 #include <dos/dosextens.h>
12 #include "dos_intern.h"
14 /*****************************************************************************
17 #include <proto/dos.h>
22 AROS_LHA(BPTR
, file
, D1
),
23 AROS_LHA(APTR
, buffer
, D2
),
24 AROS_LHA(LONG
, length
, D3
),
27 struct DosLibrary
*, DOSBase
, 7, Dos
)
30 Read some data from a given file. The request is directly
31 given to the filesystem - no buffering is involved. For
32 small amounts of data it's probably better to use the
33 buffered I/O routines.
37 buffer - pointer to buffer for the data
38 length - number of bytes to read. The filesystem is
39 advised to try to fulfill the request as well
43 The number of bytes actually read, 0 if the end of the
44 file was reached, -1 if an error happened. IoErr() will
45 give additional information in that case.
57 *****************************************************************************/
61 /* Get pointer to filehandle */
62 struct FileHandle
*fh
= BADDR(file
);
66 ASSERT_VALID_PTR(buffer
);
68 D(bug("[Read] %x %x %d\n", fh
, buffer
, length
));
70 SetIoErr(ERROR_INVALID_LOCK
);
71 else if (fh
->fh_Type
== BNULL
)
74 ret
= dopacket3(DOSBase
, NULL
, fh
->fh_Type
, ACTION_READ
, fh
->fh_Arg1
, (SIPTR
)buffer
, length
);
75 D(bug("[Read]=%d\n", ret
));