diff options
| author | Miguel <m.i@gmx.at> | 2018-09-19 01:52:14 +0200 |
|---|---|---|
| committer | Miguel <m.i@gmx.at> | 2018-09-19 01:52:14 +0200 |
| commit | 1e08b64b43bf9c50b644da3f76d5a8bcc73f62da (patch) | |
| tree | 53aca729b7faeb781b04b9c62a7b1b13efa21991 /userspace/ls.c | |
| parent | 2d91384197847a7e8fe2c3f548918a8277d3086d (diff) | |
addding sysfs and pipes etc
Diffstat (limited to 'userspace/ls.c')
| -rw-r--r-- | userspace/ls.c | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/userspace/ls.c b/userspace/ls.c index 416e139..b3a17ef 100644 --- a/userspace/ls.c +++ b/userspace/ls.c @@ -1,10 +1,5 @@ #include "interface/fs.h" -void usage() -{ - puts("ls [inode_nr]"); -} - int main(int argc, char **argv) { char *dir=getenv("PWD"); @@ -13,8 +8,9 @@ int main(int argc, char **argv) { if(argv[1][0]!='/') { + if(!strcmp(dir,"/"))dir++; char buf[256]; - sprintf(buf,"%s/%s",dir,argv[1]); + sprintf(buf,"%s/%s",dir,argv[1]); dir=buf; } else @@ -23,16 +19,22 @@ int main(int argc, char **argv) } } + printf("listing %s\n",dir); + fs_dirent dirs; uint32_t pos=0; - int cnt=0; while(1) { - cnt =_readdir(dir,&dirs,&pos); - if(cnt<1) break; - printf("% 12i %s%c\n",dirs.inode, dirs.name, ((dirs.type==FS_FILE_TYPE_DIR)?'/':' ')); - } + uint32_t ret=_readdir(dir,&dirs,&pos); + if(ret==-1) + { + printf("directory not found!\n"); + break; + } + if(ret==0)break; + printf("% 12i %s%c\n",dirs.inode, dirs.name, ((dirs.type==FS_FILE_TYPE_DIR)?'/':' ')); + } return 0; } |
