diff --git a/sys/kernel/kern_pipe.c b/sys/kernel/kern_pipe.c index 4aef6a2..58c645d 100644 --- a/sys/kernel/kern_pipe.c +++ b/sys/kernel/kern_pipe.c @@ -26,14 +26,12 @@ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -//#include #include #include #include #include #include #include -//#include int sys_pipe2(struct thread *thr, struct sys_pipe2_args *args) { int error = 0x0; @@ -45,6 +43,7 @@ struct file *nfp2 = 0x0; struct pipeInfo *pipeDesc = kmalloc(sizeof(struct pipeInfo)); + memset(pipeDesc, 0x0, sizeof(struct pipeInfo)); error = falloc(thr, &nfp1, &fd1); diff --git a/sys/kernel/vfs_calls.c b/sys/kernel/vfs_calls.c index 067390f..1fe71b4 100644 --- a/sys/kernel/vfs_calls.c +++ b/sys/kernel/vfs_calls.c @@ -196,7 +196,7 @@ if (rpCNT >= 100 && pFD->bCNT == 0) { td->td_retval[0] = 0; } - else { + else { nbytes = (args->nbyte - (pFD->headPB->nbytes - pFD->headPB->offset) <= 0) ? args->nbyte : (pFD->headPB->nbytes - pFD->headPB->offset); //kprintf("[unb: , nbs: %i, bf: 0x%X]", args->nbyte, nbytes, fd->fd->buffer); //kprintf("PR: []", nbytes); @@ -342,11 +342,12 @@ switch (fd->fd_type) { case 3: /* XXX - Temp Pipe Stuff */ + pFD = fd->data; pBuf = (struct pipeBuf *) kmalloc(sizeof(struct pipeBuf)); pBuf->buffer = kmalloc(uap->nbyte); - //kprintf("[unb: , nbs: %i, bf: 0x%X]", uap->nbyte, nbytes, fd->fd->buffer); + memcpy(pBuf->buffer, uap->buf, uap->nbyte); pBuf->nbytes = uap->nbyte; @@ -362,7 +363,7 @@ pFD->bCNT++; td->td_retval[0] = nbytes; - //kprintf("[PW: :%i]", nbytes, fd->fd->offset); + break; default: kprintf("[]", uap->nbyte); @@ -378,15 +379,18 @@ } int sys_access(struct thread *td, struct sys_access_args *args) { - /* XXX - Need to impliment */ - //kprintf("SA:%s:", args->path, args->amode); + /* XXX - This is a temporary as it always returns true */ + + td->td_retval[0] = 0; return (0); } int sys_getdirentries(struct thread *td, struct sys_getdirentries_args *args) { - //kprintf("GDE: [:%i:0x%X]", args->fd, args->count, args->basep); + + struct file *fd = 0x0; + getfd(td, &fd, args->fd); char buf[DEV_BSIZE]; @@ -394,27 +398,15 @@ char *s; ssize_t n; - //fd->offset = 0; - td->td_retval[0] = fread(args->buf, args->count, 1, fd->fd); - //n = fsread(fd->fd->ino, args->buf, DEV_BSIZE, fd->fd); - //td->td_retval[0] = n; - /* - while ((n = fsread(*ino, buf, DEV_BSIZE, fd)) > 0) - for (s = buf; s < buf + DEV_BSIZE;) { - d = (void *) s; - if (!strcmp(name, d->d_name)) { - *ino = d->d_fileno; - return d->d_type; - } - s += d->d_reclen; - } - */ + td->td_retval[0] = fread(args->buf, args->count, 1, fd->fd); return (0); } int sys_readlink(struct thread *thr, struct sys_readlink_args *args) { + /* XXX - Need to implement readlink */ + kprintf("RL: %s:\n", args->path, args->count); //Return Error