summaryrefslogtreecommitdiff
path: root/userspace
diff options
context:
space:
mode:
Diffstat (limited to 'userspace')
-rw-r--r--userspace/cat.c17
-rw-r--r--userspace/ls.c24
-rw-r--r--userspace/sysfs_write.c9
3 files changed, 33 insertions, 17 deletions
diff --git a/userspace/cat.c b/userspace/cat.c
index 5b419ca..d0b018b 100644
--- a/userspace/cat.c
+++ b/userspace/cat.c
@@ -5,8 +5,17 @@ int main(int argc, char **argv)
FILE *f;
if(argc>1){
char buf[256];
- sprintf(buf,"%s/%s",getenv("PWD"),argv[1]);
- f=fopen(buf,"r");
+ if(argv[1][0]!='/')
+ {
+ sprintf(buf,"%s/%s",getenv("PWD"),argv[1]);
+ printf("cat %s\n",buf);
+ f=fopen(buf,"r");
+ }
+ else
+ {
+ printf("cat %s\n",argv[1]);
+ f=fopen(argv[1],"r");
+ }
}
else f=stdin;
@@ -15,14 +24,10 @@ int main(int argc, char **argv)
char c;
- printf("-- reading from file byte by byte --\n\n");
-
while(fread(&c,1,1,f))
{
printf("%c",c);
}
- printf("\n-- no more data on this file --\n");
-
return 0;
}
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;
}
diff --git a/userspace/sysfs_write.c b/userspace/sysfs_write.c
new file mode 100644
index 0000000..b35f063
--- /dev/null
+++ b/userspace/sysfs_write.c
@@ -0,0 +1,9 @@
+#include <stdio.h>
+int main()
+{
+ FILE *f=fopen("/sys/mem","w");
+ uint32_t data=0xaabbccdd;
+ fwrite(&data,4,1,f);
+// fclose(f); // not automatically by newlib?
+ fflush(f);
+}