summaryrefslogtreecommitdiff
path: root/userspace/ls.c
diff options
context:
space:
mode:
authorMichal Idziorek <m.i@gmx.at>2014-11-24 03:11:16 +0100
committerMichal Idziorek <m.i@gmx.at>2014-11-24 03:11:16 +0100
commit1cb7a6bd1ab40188987feeaeefce021d441819e6 (patch)
treee9dd69467be2c240f6ef2e3abb375f8868fac599 /userspace/ls.c
parent21e1c5e540da32b89fc4812caad494f0e25c17aa (diff)
some progress with userspace
Diffstat (limited to 'userspace/ls.c')
-rw-r--r--userspace/ls.c46
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;
}