Commit | Line | Data |
---|---|---|
57f965d5 | 1 | #ifndef lint |
c417b691 | 2 | static char *sccsid = "@(#)cmd3.c 1.3 83/07/22"; |
57f965d5 EW |
3 | #endif |
4 | ||
5 | #include "defs.h" | |
6 | ||
7 | struct ww *getwin(); | |
8 | struct ww *openwin(); | |
9 | char *strtime(); | |
10 | ||
c417b691 EW |
11 | doclose(flag, w) |
12 | register struct ww *w; | |
57f965d5 | 13 | { |
c417b691 | 14 | char didit = 0; |
57f965d5 | 15 | |
c417b691 EW |
16 | switch (flag) { |
17 | case CLOSE_ONE: | |
18 | if (w == 0) | |
57f965d5 EW |
19 | break; |
20 | if (w == selwin) | |
21 | setselwin(0); | |
22 | wwclose(w); | |
c417b691 | 23 | didit++; |
57f965d5 | 24 | break; |
c417b691 EW |
25 | case CLOSE_DEAD: |
26 | case CLOSE_ALL: | |
57f965d5 EW |
27 | for (w = wwhead; w;) { |
28 | if (w != cmdwin | |
c417b691 | 29 | && (w->ww_state == WW_DEAD || flag == CLOSE_ALL)) { |
57f965d5 EW |
30 | struct ww *w1; |
31 | w = (w1 = w)->ww_next; | |
32 | if (w1 == selwin) | |
33 | setselwin(0); | |
b4be6cd6 EW |
34 | if (w->ww_state == WW_HASPROC && w->ww_pid == 0) |
35 | { | |
36 | wwprintf(cmdwin, "%d: pid == 0. ", | |
37 | w->ww_ident); | |
c417b691 | 38 | } else { |
b4be6cd6 | 39 | wwclose(w1); |
c417b691 EW |
40 | didit++; |
41 | } | |
57f965d5 EW |
42 | } else |
43 | w = w->ww_next; | |
44 | } | |
45 | break; | |
46 | } | |
47 | if (selwin == 0) { | |
c417b691 | 48 | for (w = wwhead; w && w == cmdwin; w = w->ww_next) |
57f965d5 EW |
49 | ; |
50 | setselwin(w); | |
51 | } | |
c417b691 EW |
52 | if (didit) |
53 | reframe(); | |
57f965d5 | 54 | } |