summaryrefslogtreecommitdiff
path: root/userspace/foolshell.c
diff options
context:
space:
mode:
authorMichal Idziorek <m.i@gmx.at>2014-12-01 23:33:31 +0100
committerMichal Idziorek <m.i@gmx.at>2014-12-01 23:33:31 +0100
commitf20db37ca17245d5d20302a1ac1da347de5c3607 (patch)
treece0712176387f4555cf290615b71cdd1c935557d /userspace/foolshell.c
parentd8331335ff1720ce28eba45afe1a02814b38b033 (diff)
very buggy fork, execve and exit
Diffstat (limited to 'userspace/foolshell.c')
-rw-r--r--userspace/foolshell.c28
1 files changed, 12 insertions, 16 deletions
diff --git a/userspace/foolshell.c b/userspace/foolshell.c
index e010c18..78ba327 100644
--- a/userspace/foolshell.c
+++ b/userspace/foolshell.c
@@ -16,12 +16,12 @@ void hello()
" / __/ / /_/ / /_/ / / / /_/ /___/ / \n"
" /_/ \\____/\\____/_/ \\____//____/ \n"
" \n"
- "Welcome to FoolShell v0.4 (Compiled on " __DATE__ " at " __TIME__ "\n"
+ "Welcome to FoolShell v0.5 (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. You can get additional information for many commands\n"
- "by invking them with the --help or -h flag (e.g. ls --help) \n"
+ "by invoking them with the --help or -h flag (e.g. ls --help) \n"
);
printf("Your $PATH is currently set to: %s\n\n",getenv("PATH"));
@@ -211,20 +211,16 @@ int process(char *buf)
}
else
{
- char buf[256];
- 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
-
-
+ int pid=fork();
+ if(pid!=0)
+ {
+ printf("new task pid: %i \n",pid);
+ char buf[256];
+ sprintf(buf,"%s/%s",getenv("PATH"),token[0]);
+ execve(buf,token,environ);
+ puts("foolshell: command not found");
+ exit(1);
+ }
}
return 0;