diff --git a/sys/kernel/vfs_calls.c b/sys/kernel/vfs_calls.c index 1ee2c6f..1082148 100644 --- a/sys/kernel/vfs_calls.c +++ b/sys/kernel/vfs_calls.c @@ -424,6 +424,8 @@ struct file *nfp = 0x0; char tmpPath[256]; + FL_DIR *_dir = 0x0; + /* * Only one of the O_EXEC, O_RDONLY, O_WRONLY and O_RDWR flags * may be specified. @@ -471,23 +473,45 @@ kprintf( "We have a directory!" ); - } + _dir = kmalloc( sizeof( FL_DIR ) ); + + bzero( _dir, sizeof( FL_DIR ) ); + + fl_opendir( path, _dir ); + + kprintf( "[%s:%i] o(%s)%i", __FILE__, __LINE__, path, fd ); + + nfp->fd = _dir; + + thr->td_retval[0] = fd; - nfp->fd = fopen(path, "rwb"); + } else { - kprintf("[%s:%i] o(%s)%i", __FILE__, __LINE__, path, fd); + nfp->fd = fopen( path, "rwb" ); - if (nfp->fd == 0x0) { - if (fdestroy(thr, nfp, fd) != 0x0) - kprintf("[%s:%i] fdestroy() failed.", __FILE__, __LINE__); + kprintf( "[%s:%i] o(%s)%i", __FILE__, __LINE__, path, fd ); - thr->td_retval[0] = -1; + if( nfp->fd == 0x0 ) { - error = -1; - } - else { - thr->td_retval[0] = fd; + if( fdestroy( thr, nfp, fd ) != 0x0 ) { + + kprintf( "[%s:%i] fdestroy() failed.", __FILE__, __LINE__ ); + + } + + thr->td_retval[0] = -1; + + + error = -1; + + } else { + + thr->td_retval[0] = fd; + + } + + } //kprintf( "error: %i, thr->td_retval[0]: %i\n", error, thr->td_retval[0] );