From bdb66433031ca96f2fd127995186623cd10c45b3 Mon Sep 17 00:00:00 2001 From: kaashoek Date: Mon, 14 Aug 2006 14:13:52 +0000 Subject: set size for directories correctly in wdir and mkfs mkdir ls shows stat info for each dir entry --- syscall.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'syscall.c') diff --git a/syscall.c b/syscall.c index 0ef2670..0a017c7 100644 --- a/syscall.c +++ b/syscall.c @@ -294,8 +294,10 @@ sys_mkdir(void) { struct proc *cp = curproc[cpu()]; struct inode *nip; + struct inode *pip; uint arg0; int l; + struct dirent de; if(fetcharg(0, &arg0) < 0) return -1; @@ -308,7 +310,15 @@ sys_mkdir(void) nip = mknod (cp->mem + arg0, T_DIR, 0, 0); - // XXX put . and .. in + de.name[0] = '.'; + de.inum = nip->inum; + writei (nip, (char *) &de, 0, sizeof(de)); + + pip = namei(".", NAMEI_LOOKUP, 0); + de.inum = pip->inum; + de.name[1] = '.'; + iput(pip); + writei (nip, (char *) &de, sizeof(de), sizeof(de)); iput(nip); return (nip == 0) ? -1 : 0; -- cgit v1.2.3