summary |
tags |
clone url |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
c5c241c)
SCCS-vsn: usr.bin/window/main.c 3.18
SCCS-vsn: usr.bin/window/cmd.c 3.23
SCCS-vsn: usr.bin/window/cmd2.c 3.24
SCCS-vsn: usr.bin/window/defs.h 3.11
SCCS-vsn: usr.bin/window/cmd4.c 3.9
SCCS-vsn: usr.bin/window/lcmd1.c 3.17
SCCS-vsn: usr.bin/window/mloop.c 3.4
-static char *sccsid = "@(#)cmd.c 3.22 84/03/29";
+static char *sccsid = "@(#)cmd.c 3.23 84/04/05";
{
register char c;
register struct ww *w;
{
register char c;
register struct ww *w;
- if (!terse)
- wwadd(cmdwin, &wwhead);
- if (selwin != 0)
- wwcursor(selwin, 1);
for (;;) {
while ((c = wwgetc()) >= 0) {
if (!terse)
for (;;) {
while ((c = wwgetc()) >= 0) {
if (!terse)
}
setselwin(w);
if (checkproc(selwin) >= 0)
}
setselwin(w);
if (checkproc(selwin) >= 0)
break;
case '%':
if ((w = getwin()) != 0)
break;
case '%':
if ((w = getwin()) != 0)
if (lastselwin != 0) {
setselwin(lastselwin);
if (checkproc(selwin) >= 0)
if (lastselwin != 0) {
setselwin(lastselwin);
if (checkproc(selwin) >= 0)
} else
error("No previous window.");
break;
} else
error("No previous window.");
break;
break;
case CTRL([):
if (checkproc(selwin) >= 0)
break;
case CTRL([):
if (checkproc(selwin) >= 0)
break;
case CTRL(z):
wwsuspend();
break;
case CTRL(z):
wwsuspend();
if (checkproc(selwin) >= 0) {
(void) write(selwin->ww_pty,
&escapec, 1);
if (checkproc(selwin) >= 0) {
(void) write(selwin->ww_pty,
&escapec, 1);
- if (wwcurwin != 0 || quit)
break;
if (terse)
wwsetcursor(0, 0);
break;
if (terse)
wwsetcursor(0, 0);
while (wwpeekc() < 0)
wwiomux();
}
while (wwpeekc() < 0)
wwiomux();
}
- if (!quit) {
- if (!terse) {
- wwdelete(cmdwin);
- reframe();
- }
- wwcursor(selwin, 0);
- }
+ if (!quit)
+ setcmd(0);
+
+setcmd(new)
+char new;
+{
+ if (new && !incmd) {
+ if (!terse)
+ wwadd(cmdwin, &wwhead);
+ if (selwin != 0)
+ wwcursor(selwin, 1);
+ wwcurwin = 0;
+ } else if (!new && incmd) {
+ if (!terse) {
+ wwdelete(cmdwin);
+ reframe();
+ }
+ if (selwin != 0)
+ wwcursor(selwin, 0);
+ wwcurwin = selwin;
+ }
+ incmd = new;
+}
+
+setterse(new)
+char new;
+{
+ if (incmd)
+ if (new && !terse) {
+ wwdelete(cmdwin);
+ reframe();
+ } else if (!new && terse)
+ wwadd(cmdwin, &wwhead);
+ terse = new;
+}
+
+/*
+ * Set the current window.
+ */
+setselwin(w)
+struct ww *w;
+{
+ if (selwin == w)
+ return;
+ lastselwin = selwin;
+ front(selwin = w, 1);
+}
-static char *sccsid = "@(#)cmd2.c 3.23 84/03/03";
+static char *sccsid = "@(#)cmd2.c 3.24 84/04/05";
- if (terse)
- wwadd(cmdwin, &wwhead);
+ char oldterse = terse;
+
+ setterse(0);
wwputs("Really quit [yn]? ", cmdwin);
wwcurtowin(cmdwin);
while (wwpeekc() < 0)
wwputs("Really quit [yn]? ", cmdwin);
wwcurtowin(cmdwin);
while (wwpeekc() < 0)
quit++;
} else
wwputs("\r\n", cmdwin);
quit++;
} else
wwputs("\r\n", cmdwin);
- if (terse && !quit)
- wwdelete(cmdwin);
+ setterse(!quit && oldterse);
-static char *sccsid = "@(#)cmd4.c 3.8 84/03/03";
+static char *sccsid = "@(#)cmd4.c 3.9 84/04/05";
- if (terse)
- wwadd(cmdwin, &wwhead);
wwputc(':', cmdwin);
wwgets(buf, wwncol - 3, cmdwin);
wwputs("\r\n", cmdwin);
wwputc(':', cmdwin);
wwgets(buf, wwncol - 3, cmdwin);
wwputs("\r\n", cmdwin);
- if (terse)
- wwdelete(cmdwin);
- else
- wwcurtowin(cmdwin);
+ wwcurtowin(cmdwin);
+ setterse(oldterse);
if (dolongcmd(buf) < 0)
error("Out of memory.");
}
if (dolongcmd(buf) < 0)
error("Out of memory.");
}
- * @(#)defs.h 3.10 84/03/29
+ * @(#)defs.h 3.11 84/04/05
char quit; /* quit command issued */
char terse; /* terse mode */
char debug; /* debug mode */
char quit; /* quit command issued */
char terse; /* terse mode */
char debug; /* debug mode */
+char incmd; /* in command mode */
struct ww *getwin();
struct ww *openwin();
struct ww *getwin();
struct ww *openwin();
-static char *sccsid = "@(#)lcmd1.c 3.16 84/03/29";
+static char *sccsid = "@(#)lcmd1.c 3.17 84/04/05";
{
v->v_type = V_NUM;
v->v_num = terse;
{
v->v_type = V_NUM;
v->v_num = terse;
- terse = vtobool(a, 1, terse);
- if (!terse && v->v_num)
- wwadd(cmdwin, &wwhead);
- else if (!v->v_num && terse)
- wwdelete(cmdwin);
- reframe();
+ setterse(vtobool(a, 1, terse));
}
struct lcmd_arg arg_source[] = {
}
struct lcmd_arg arg_source[] = {
-static char *sccsid = "@(#)main.c 3.17 84/03/29";
+static char *sccsid = "@(#)main.c 3.18 84/04/05";
char fflag = 0;
char dflag = 0;
char xflag = 0;
char fflag = 0;
char dflag = 0;
char xflag = 0;
+ char *cmd = 0;
+ char tflag = 0;
if (p = rindex(*argv, '/'))
p++;
if (p = rindex(*argv, '/'))
p++;
case 'f':
fflag++;
break;
case 'f':
fflag++;
break;
+ case 'c':
+ if (cmd != 0) {
+ (void) fprintf(stderr,
+ "Only one -c allowed.\n");
+ (void) usage();
+ }
+ cmd = next(argv);
+ break;
case 'e':
setescape(next(argv));
break;
case 't':
case 'e':
setescape(next(argv));
break;
case 't':
break;
case 'd':
dflag++;
break;
case 'd':
dflag++;
wwflush();
(void) signal(SIGCHLD, wwchild);
setvars();
wwflush();
(void) signal(SIGCHLD, wwchild);
setvars();
- if (fflag)
- wwcurwin = 0;
- else {
- if (!terse)
- wwadd(cmdwin, &wwhead);
+
+ setterse(tflag);
+ setcmd(1);
+ if (cmd != 0)
+ dolongcmd(cmd);
+ if (!fflag) {
if (dflag || doconfig() < 0)
dodefault();
if (dflag || doconfig() < 0)
dodefault();
- if (selwin != 0) {
- wwcurwin = selwin;
- wwcursor(selwin, 0);
- }
- if (!terse) {
- wwdelete(cmdwin);
- reframe();
- }
+ if (selwin != 0)
+ setcmd(0);
-static char *sccsid = "@(#)mloop.c 3.3 84/03/03";
+static char *sccsid = "@(#)mloop.c 3.4 84/04/05";
mloop()
{
while (!quit) {
mloop()
{
while (!quit) {
docmd();
} else if (wwcurwin->ww_state != WWS_HASPROC) {
docmd();
} else if (wwcurwin->ww_state != WWS_HASPROC) {
if (wwpeekc() == escapec)
(void) wwgetc();
error("Process died.");
if (wwpeekc() == escapec)
(void) wwgetc();
error("Process died.");
wwibp = p;
}
if (wwpeekc() == escapec) {
wwibp = p;
}
if (wwpeekc() == escapec) {