More libc portability updates, add in the website (which has not been
archived previously). Wrote 'which' during the meeting today.
-Erik
diff --git a/shell/lash.c b/shell/lash.c
index 9d4c27a..8ea5e30 100644
--- a/shell/lash.c
+++ b/shell/lash.c
@@ -113,13 +113,18 @@
static struct builtInCommand bltins[] = {
{"bg", "Resume a job in the background", "bg [%%job]", shell_fg_bg},
{"cd", "Change working directory", "cd [dir]", shell_cd},
- {"env", "Print all environment variables", "env", shell_env},
{"exit", "Exit from shell()", "exit", shell_exit},
{"fg", "Bring job into the foreground", "fg [%%job]", shell_fg_bg},
{"jobs", "Lists the active jobs", "jobs", shell_jobs},
- {"pwd", "Print current directory", "pwd", shell_pwd},
{"export", "Set environment variable", "export [VAR=value]", shell_export},
{"unset", "Unset environment variable", "unset VAR", shell_unset},
+ {NULL, NULL, NULL, NULL}
+};
+
+/* Table of built-in functions */
+static struct builtInCommand bltins_forking[] = {
+ {"env", "Print all environment variables", "env", shell_env},
+ {"pwd", "Print current directory", "pwd", shell_pwd},
{".", "Source-in and run commands in a file", ". filename", shell_source},
{"help", "List shell built-in commands", "help", shell_help},
{NULL, NULL, NULL, NULL}
@@ -247,6 +252,9 @@
for (x = bltins; x->cmd; x++) {
fprintf(stdout, "%s\t%s\n", x->cmd, x->descr);
}
+ for (x = bltins_forking; x->cmd; x++) {
+ fprintf(stdout, "%s\t%s\n", x->cmd, x->descr);
+ }
fprintf(stdout, "\n\n");
return TRUE;
}
@@ -743,6 +751,13 @@
nextout = 1;
}
+ /* Match any built-ins here */
+ for (x = bltins; x->cmd; x++) {
+ if (!strcmp(newJob.progs[i].argv[0], x->cmd)) {
+ return (x->function(&newJob, jobList));
+ }
+ }
+
if (!(newJob.progs[i].pid = fork())) {
signal(SIGTTOU, SIG_DFL);
@@ -760,7 +775,7 @@
setupRedirections(newJob.progs + i);
/* Match any built-ins here */
- for (x = bltins; x->cmd; x++) {
+ for (x = bltins_forking; x->cmd; x++) {
if (!strcmp(newJob.progs[i].argv[0], x->cmd)) {
exit (x->function(&newJob, jobList));
}