diff options
| author | Miguel <m.i@gmx.at> | 2018-09-14 23:10:16 +0200 |
|---|---|---|
| committer | Miguel <m.i@gmx.at> | 2018-09-14 23:10:16 +0200 |
| commit | c4b20a0ebbde1348e1e085e2ea3be35345d92b7c (patch) | |
| tree | 611b68c1d288cace070152c628bb0e0e211bb500 /userspace/ls.c | |
| parent | fdf6100721870780319bc7cc766a0bb5b4789965 (diff) | |
tuining userspace and files
Diffstat (limited to 'userspace/ls.c')
| -rw-r--r-- | userspace/ls.c | 22 |
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; } |
