More libc portability updates, add in the website (which has not been

archived previously).  Wrote 'which' during the meeting today.
 -Erik
This commit is contained in:
Erik Andersen
2000-05-19 05:35:19 +00:00
parent d356c6e9d1
commit 330fd2b576
38 changed files with 3428 additions and 521 deletions

View File

@@ -113,13 +113,18 @@ static int busy_loop(FILE * input);
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 @@ static int shell_help(struct job *cmd, struct jobSet *junk)
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 @@ static int runCommand(struct job newJob, struct jobSet *jobList, int inBg)
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 @@ static int runCommand(struct job newJob, struct jobSet *jobList, int inBg)
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));
}