diff options
| author | Michal Idziorek <m.i@gmx.at> | 2014-11-24 03:11:16 +0100 |
|---|---|---|
| committer | Michal Idziorek <m.i@gmx.at> | 2014-11-24 03:11:16 +0100 |
| commit | 1cb7a6bd1ab40188987feeaeefce021d441819e6 (patch) | |
| tree | e9dd69467be2c240f6ef2e3abb375f8868fac599 /userspace/ls.c | |
| parent | 21e1c5e540da32b89fc4812caad494f0e25c17aa (diff) | |
some progress with userspace
Diffstat (limited to 'userspace/ls.c')
| -rw-r--r-- | userspace/ls.c | 46 |
1 files changed, 28 insertions, 18 deletions
diff --git a/userspace/ls.c b/userspace/ls.c index 5b5034b..4cbcb6d 100644 --- a/userspace/ls.c +++ b/userspace/ls.c @@ -7,28 +7,38 @@ void usage() int main(int argc, char **argv) { - fs_dirent *dirs=malloc(sizeof(fs_dirent)*25); + char *dir; + fs_dirent *dirs=malloc(sizeof(fs_dirent)*25); - if(argc!=2) + if(argc!=2) + { + dir=getenv("PWD"); + } + else + { + if(argv[1][0]=="/")dir=argv[1]; + else { - usage(); - return 0; - } - - char *dir=argv[1]; - int ls=readdir(dir,dirs,25); - if(ls==-1) - { - printf("%s: file or directory '%s' not found.\n",argv[0],dir); - return 0; - } - + char buf[256]; + sprintf(buf,"%s/%s",getenv("PWD"),argv[1]); + dir=buf; - 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)?'/':' ')); } + } + int ls=readdir(dir,dirs,25); + if(ls==-1) + { + printf("%s: file or directory '%s' not found.\n",argv[0],dir); return 0; + } + + + 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; } |
