diff --git a/sys/fs/vfs/file.c b/sys/fs/vfs/file.c index 73fc175..afc64bc 100644 --- a/sys/fs/vfs/file.c +++ b/sys/fs/vfs/file.c @@ -297,24 +297,36 @@ /* KERNEL */ -size_t fread(void *ptr, size_t size, size_t nmemb, fileDescriptor_t *fd) { - size_t i = 0x0; +size_t fread( void *ptr, size_t size, size_t nmemb, fileDescriptor_t *fd ) { - if (fd == 0x0) - return (0x0); + size_t i = 0x0; - if (nmemb == 0x0) - nmemb = 1; //Temp Fix + if (fd == 0x0) { - assert(fd); - assert(fd->mp); - assert(fd->mp->fs); + return (0x0); - i = fd->mp->fs->vfsRead(fd, ptr, fd->offset, size * nmemb); + } + + if (nmemb == 0x0) { + + nmemb = 1; //Temp Fix + + } + + if( fd->fd_type == 0x100 ) { + return(0x0); + } + + assert( fd ); + assert( fd->mp ); + assert( fd->mp->fs ); + + i = fd->mp->fs->vfsRead( fd, ptr, fd->offset, size * nmemb ); //fd->offset += size * nmemb; - return (i); + return( i ); + } size_t fwrite(void *ptr, int size, int nmemb, fileDescriptor_t *fd) { diff --git a/sys/kernel/vfs_calls.c b/sys/kernel/vfs_calls.c index 3b04a17..cb70f3c 100644 --- a/sys/kernel/vfs_calls.c +++ b/sys/kernel/vfs_calls.c @@ -481,7 +481,8 @@ kprintf( "[%s:%i] Path: (%s), FD: %i, error: %i", __FILE__, __LINE__, path, fd, error ); - nfp->fd = _dir; + nfp->fd = _dir; + nfp->fd_type = 0x100; thr->td_retval[0] = fd;