*/
size_t VT_Read(tVFS_Node *Node, off_t Offset, size_t Length, void *Buffer)
{
- int pos = 0;
- int avail;
+ int pos, avail;
tVTerm *term = &gVT_Terminals[ Node->Inode ];
Uint32 *codepoint_buf = Buffer;
Uint32 *codepoint_in;
avail = term->InputWrite - term->InputRead;
if(avail < 0)
avail += MAX_INPUT_CHARS8;
- if(avail > Length - pos)
- avail = Length - pos;
+ if(avail > Length)
+ avail = Length;
+ pos = 0;
while( avail -- )
{
((char*)Buffer)[pos] = term->InputBuffer[term->InputRead];
if(avail < 0)
avail += MAX_INPUT_CHARS32;
Length /= 4;
- if(avail > Length - pos)
- avail = Length - pos;
+ if(avail > Length)
+ avail = Length;
codepoint_in = (void*)term->InputBuffer;
codepoint_buf = Buffer;
+ pos = 0;
while( avail -- )
{
codepoint_buf[pos] = codepoint_in[term->InputRead];
ENTER("iFD XLength pBuffer", FD, Length, Buffer);
h = VFS_GetHandle(FD);
- if(!h) LEAVE_RET('i', -1);
+ if(!h) {
+ LOG("Bad Handle");
+ LEAVE_RET('i', -1);
+ }
- if( !(h->Mode & VFS_OPENFLAG_READ) || h->Node->Flags & VFS_FFLAG_DIRECTORY )
+ if( !(h->Mode & VFS_OPENFLAG_READ) ) {
+ LOG("Bad mode");
+ LEAVE_RET('i', -1);
+ }
+ if( (h->Node->Flags & VFS_FFLAG_DIRECTORY) ) {
+ LOG("Reading directory");
LEAVE_RET('i', -1);
+ }
- if(!h->Node->Type || !h->Node->Type->Read) LEAVE_RET('i', 0);
+ if(!h->Node->Type || !h->Node->Type->Read) {
+ LOG("No read method");
+ LEAVE_RET('i', -1);
+ }
ret = h->Node->Type->Read(h->Node, h->Position, Length, Buffer);
if(ret == -1) LEAVE_RET('i', -1);