diff options
Diffstat (limited to 'userspace/foolshell.c')
| -rw-r--r-- | userspace/foolshell.c | 147 |
1 files changed, 0 insertions, 147 deletions
diff --git a/userspace/foolshell.c b/userspace/foolshell.c deleted file mode 100644 index 36912c8..0000000 --- a/userspace/foolshell.c +++ /dev/null @@ -1,147 +0,0 @@ -#include <stdio.h> -#include <assert.h> -#include <string.h> -#include "syscalls.c" -#include "../fs/fs.h" - -void hello() { - puts( - "Welcome to FoolShell v0.1" - ); -} - -void prompt() { - printf( - "$ " - ); -} - -int main(int argc, char **argv) -{ - hello(); - - FILE *input; - input=fopen("input.txt","r"); - char *buf=malloc(256); - - while(1) - { - prompt(); - fgets(buf,255,input); - buf[strlen(buf)-1]=0; // remove \n - process(buf); - } - - return 0; -} - -char **tokenize(char *buf) -{ - - char **token; - token=malloc(10*sizeof(char*)); - - int l=strlen(buf); - - int i; - int c=0; - - for(i=0;i<l;i++) - { - // init space for next token - token[c]=malloc(256); - - //skip all the whitespace - while(buf[i]==' '&&i<l)i++; - if(i==l)break; - - //get token - int t=0; - - while(buf[i]!=' '&&i<l) - { - token[c][t]=buf[i]; - t++; - i++; - } - token[c][t]=0; - - -// printf("token %i : <%s>\n",c, token[c]); - c++; - - } - - return token; - -} - -int process(char *buf) -{ - - char **token=tokenize(buf); - char *command=token[0]; - // puts(command); - // copied from trottelshell - - if(!strcmp(command,"help")) - { - puts("foolshell: supported built-in commands: 'help', 'echo [string]', 'ls [inode_nr]', exec [inode_nr],'malloc [bytes]', 'free [address]', 'getenv [var]', 'putenv [var] [val]'"); - } - else if(!strcmp(command,"ls")) - { - fs_dirent *dirs=malloc(sizeof(fs_dirent)*25); - - int ls=readdir(atoi(token[1]),dirs,25); - - int i; - for(i=0;i<ls;i++) - { - printf("foolshell: %i %s%c\n",dirs[i].inode, dirs[i].name, ((dirs[i].type==FS_FILE_TYPE_DIR)?'/':' ')); - } - - } - else if(!strcmp(command,"exec")) - { - execve(atoi(token[1]),0,0); - - } - else if(!strcmp(command,"echo")) - { - printf("foolshell: \"%s\"\n",token[1]); - - } - else if(!strcmp(command,"malloc")) - { - uint8_t *mall=malloc(atoi(token[1])); - printf("foolshell: allocated %d bytes at 0x%08X (%i).\n",atoi(token[1]),mall,mall); - } - else if(!strcmp(command,"free")) - { - free(atoi(token[1])); - printf("foolshell: called free(0x%08X).\n",atoi(token[1])); - } - else if(!strcmp(command,"getenv")) - { - printf("foolshell: %s = %s \n",token[1],getenv(token[1])); - } - else if(!strcmp(command,"putenv")) - { - char buf[256]; - sprintf(buf,"%s=%s",token[1],token[2]); - putenv(buf); - printf("foolshell: %s = %s \n",token[1],getenv(token[1])); - } - else - { - puts("foolshell: command not found"); - } - - - // -} - - - - - |
