summaryrefslogtreecommitdiff
path: root/userspace/foolshell.c
diff options
context:
space:
mode:
Diffstat (limited to 'userspace/foolshell.c')
-rw-r--r--userspace/foolshell.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/userspace/foolshell.c b/userspace/foolshell.c
index faa46be..e010c18 100644
--- a/userspace/foolshell.c
+++ b/userspace/foolshell.c
@@ -16,11 +16,12 @@ void hello()
" / __/ / /_/ / /_/ / / / /_/ /___/ / \n"
" /_/ \\____/\\____/_/ \\____//____/ \n"
" \n"
- "Welcome to FoolShell v0.3 (Compiled on " __DATE__ " at " __TIME__ "\n"
+ "Welcome to FoolShell v0.4 (Compiled on " __DATE__ " at " __TIME__ "\n"
"------------------------------------------------------------------\n\n"
"Please type 'help' anytime, to show shell \"built-ins\" or execute \n"
"user programms that are in you $PATH directory by simply typing \n"
- "their filenames.\n"
+ "their filenames. You can get additional information for many commands\n"
+ "by invking them with the --help or -h flag (e.g. ls --help) \n"
);
printf("Your $PATH is currently set to: %s\n\n",getenv("PATH"));
@@ -210,13 +211,23 @@ int process(char *buf)
}
else
{
- execve(token[0],token,0);
char buf[256];
- sprintf(buf,"/bin/%s",token[0]);
+ sprintf(buf,"%s/%s",getenv("PATH"),token[0]);
+
asm("mov $0x05bff,%esp"); // set stack pointer
execve(buf,token,environ);
+ asm("mov $0x07000,%esp"); // set stack pointer
+
puts("foolshell: command not found");
+
+ asm("mov $0x05bff,%esp"); // set stack pointer
+ static char *argv[]={"shell","--silent",NULL};
+ execve("/bin/foolshell",argv,environ); // start shell
+
+
+
}
+ return 0;
}