make ls work on directories
This commit is contained in:
parent
3fd50978a8
commit
2e51e12f09
3
BUGS
3
BUGS
|
@ -22,6 +22,3 @@ ide.c: synchronous disk write -> polling disk write. search for
|
|||
|
||||
fs.c: split all name operations off in name.c? (starting with namei but move
|
||||
wdir keep in fs.c)
|
||||
|
||||
ls.c: apply tim's patch
|
||||
|
||||
|
|
12
ls.c
12
ls.c
|
@ -25,6 +25,7 @@ main(int argc, char *argv[])
|
|||
int fd;
|
||||
uint off;
|
||||
uint sz;
|
||||
char *p;
|
||||
|
||||
if(argc > 2){
|
||||
puts("Usage: ls [dir]\n");
|
||||
|
@ -63,8 +64,15 @@ main(int argc, char *argv[])
|
|||
break;
|
||||
}
|
||||
if(dirent.inum != 0) {
|
||||
// xxx prepend to name the pathname supplied to ls (e.g. .. in ls ..)
|
||||
if(stat (dirent.name, &st) < 0) {
|
||||
p = buf;
|
||||
if(argc == 2) {
|
||||
strcpy(p, argv[1]);
|
||||
p += strlen(p);
|
||||
if(*(p-1) != '/')
|
||||
*p++ = '/';
|
||||
}
|
||||
strcpy(p, dirent.name);
|
||||
if(stat(buf, &st) < 0) {
|
||||
printf(1, "stat: failed %s\n", dirent.name);
|
||||
continue;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue