summaryrefslogtreecommitdiff
path: root/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'main.c')
-rw-r--r--main.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/main.c b/main.c
index 41d4d80..dad50d3 100644
--- a/main.c
+++ b/main.c
@@ -278,6 +278,9 @@ main(int argc, char *argv[])
/* Set this before parsing arguments */
Flag(FPRIVILEGED) = getuid() != ksheuid || getgid() != getegid();
+ /* set before parse_args */
+ writefd = 0;
+
/* this to note if monitor is set on command line (see below) */
Flag(FMONITOR) = 127;
argi = parse_args(argv, OF_CMDLINE, (int *) 0);
@@ -286,6 +289,10 @@ main(int argc, char *argv[])
/* NOTREACHED */
}
+ /* print initial cwd */
+ if (writefd)
+ dprintf(writefd, "cwd%s\n", current_wd);
+
if (Flag(FCOMMAND)) {
s = pushs(SSTRING, ATEMP);
if (!(s->start = s->str = argv[argi++]))
@@ -578,7 +585,12 @@ shell(s, toplevel)
set_prompt(PS1, s);
}
+ if (interactive && writefd)
+ dprintf(writefd, "\n");
t = compile(s);
+ if (interactive && writefd && s->start[0] != '\n')
+ dprintf(writefd, "cmd%s", s->start);
+
if (t != NULL && t->type == TEOF) {
if (wastty && Flag(FIGNOREEOF) && --attempts > 0) {
shellf("Use `exit' to leave ksh\n");