builtin_t *p;
char *name;
} builtins[] = {
- { b_break, "break" },
- { b_builtin, "builtin" },
- { b_cd, "cd" },
- { b_echo, "echo" },
- { b_eval, "eval" },
- { b_exec, "exec" },
- { b_exit, "exit" },
- { b_limit, "limit" },
- { b_newpgrp, "newpgrp" },
- { b_return, "return" },
- { b_shift, "shift" },
- { b_umask, "umask" },
- { b_wait, "wait" },
- { b_dot, "." },
+ { b_break, "break" },
+ { b_builtin, "builtin" },
+ { b_cd, "cd" },
+ { b_echo, "echo" },
+ { b_eval, "eval" },
+ { b_exec, "exec" },
+ { b_exit, "exit" },
+ { b_limit, "limit" },
+ { b_newpgrp, "newpgrp" },
+ { b_return, "return" },
+ { b_shift, "shift" },
+ { b_umask, "umask" },
+ { b_wait, "wait" },
+ { b_dot, "." },
};
extern builtin_t *isbuiltin(char *s) {
bool interactive;
pid_t rc_pid;
-static bool dashEYE, dashell, dashoh;
-
static void assigndefault(char *,...);
static void checkfd(int, enum redirtype);
void usage(void) {
printf("Usage: %s [OPTION...] [FILE [ARG...]]\n", ARGV0);
+ exit(1);
}
/* open an fd on /dev/null if it is inherited closed */
static void checkfd(int fd, enum redirtype r) {
- int new = rc_open("/dev/null", r);
- if (new != fd && new != -1)
- close(new);
+ int new = rc_open("/dev/null", r);
+ if (new != fd && new != -1)
+ close(new);
}
extern int main(int argc, char *argv[], char *envp[]) {
- char *dashsee[2], *dollarzero, *null[1];
+ char *dollarzero, *null[1];
initprint();
- dashsee[0] = dashsee[1] = NULL;
dollarzero = argv[0];
rc_pid = getpid();
- dashell = (*argv[0] == '-'); /* login shell, per unix tradition */
-
+
OPTBEGIN {
- case 'e': dashee = true; break;
- case 'l': dashell = true; break;
- case 'o': dashoh = true; break;
- case 'p': dashpee = true; break;
- case 'c':
- dashsee[0] = EOPTARG(usage());
- break;
+ default: usage();
} OPTEND;
/* use isatty() iff neither -i nor -I is set, and iff the input is not from a script or -c flags */
}
static void assigndefault(char *name, ...) {
- va_list ap;
- List *l;
- char *v;
- va_start(ap, name);
- for (l = NULL; (v = va_arg(ap, char *)) != NULL;)
- l = append(l, word(v, NULL));
- varassign(name, l, false);
- set_exportable(name, false);
- if (streq(name, "path"))
- alias(name, l, false);
- va_end(ap);
+ va_list ap;
+ List *l;
+ char *v;
+ va_start(ap, name);
+ for (l = NULL; (v = va_arg(ap, char *)) != NULL;)
+ l = append(l, word(v, NULL));
+ varassign(name, l, false);
+ set_exportable(name, false);
+ if (streq(name, "path"))
+ alias(name, l, false);
+ va_end(ap);
}