summaryrefslogtreecommitdiff
path: root/userspace/ls.c
diff options
context:
space:
mode:
Diffstat (limited to 'userspace/ls.c')
-rw-r--r--userspace/ls.c22
1 files changed, 8 insertions, 14 deletions
diff --git a/userspace/ls.c b/userspace/ls.c
index 413755b..416e139 100644
--- a/userspace/ls.c
+++ b/userspace/ls.c
@@ -1,4 +1,4 @@
-#include "fs/fs.h"
+#include "interface/fs.h"
void usage()
{
@@ -7,10 +7,7 @@ void usage()
int main(int argc, char **argv)
{
-
- fs_dirent *dirs=malloc(sizeof(fs_dirent)*25);
char *dir=getenv("PWD");
-// printf("PWD = %s\n",dir);
if(argc==2)
{
@@ -26,19 +23,16 @@ int main(int argc, char **argv)
}
}
- int ls=_readdir(dir,dirs,25);
- if(ls==-1)
+ fs_dirent dirs;
+ uint32_t pos=0;
+ int cnt=0;
+ while(1)
{
- printf("%s: file or directory '%s' not found.\n",argv[0],dir);
- return 0;
+ cnt =_readdir(dir,&dirs,&pos);
+ if(cnt<1) break;
+ printf("% 12i %s%c\n",dirs.inode, dirs.name, ((dirs.type==FS_FILE_TYPE_DIR)?'/':' '));
}
- int i;
- for(i=0;i<ls;i++)
- {
- printf("%i %s%c\n",dirs[i].inode, dirs[i].name, ((dirs[i].type==FS_FILE_TYPE_DIR)?'/':' '));
- }
-
return 0;
}