summaryrefslogtreecommitdiff
path: root/userspace/ls.c
diff options
context:
space:
mode:
authorMiguel <m.i@gmx.at>2018-09-19 01:52:14 +0200
committerMiguel <m.i@gmx.at>2018-09-19 01:52:14 +0200
commit1e08b64b43bf9c50b644da3f76d5a8bcc73f62da (patch)
tree53aca729b7faeb781b04b9c62a7b1b13efa21991 /userspace/ls.c
parent2d91384197847a7e8fe2c3f548918a8277d3086d (diff)
addding sysfs and pipes etc
Diffstat (limited to 'userspace/ls.c')
-rw-r--r--userspace/ls.c24
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;
}