Got rid of 'curwin'.
[unix-history] / usr / src / usr.bin / window / lcmd1.c
CommitLineData
bd002416 1#ifndef lint
03e75950 2static char *sccsid = "@(#)lcmd1.c 3.6 83/08/26";
bd002416
EW
3#endif
4
5#include "defs.h"
6
bd002416
EW
7l_window()
8{
9 register char **pp = argv;
4cbe417d 10 int col, row, ncol, nrow, id, nline;
bd002416 11
03e75950 12 if ((id = findid()) < 0)
bd002416 13 return;
4cbe417d
EW
14 row = **++pp == '*' ? 1 : atoi(*pp);
15 col = **++pp == '*' ? 0 : atoi(*pp);
16 nrow = **++pp == '*' ? wwnrow - row : atoi(*pp);
17 ncol = **++pp == '*' ? wwncol - col : atoi(*pp);
18 nline = *++pp == 0 ? nbufline : atoi(*pp);
03e75950 19 (void) openwin(id, row, col, nrow, ncol, nline);
4cbe417d
EW
20}
21
22l_buffer()
23{
24 nbufline = atoi(argv[1]);
bd002416
EW
25}
26
27l_select()
28{
29 struct ww *w;
30
31 if ((w = idtowin(*argv + 1)) == 0)
32 return;
33 setselwin(w);
34}
35
36l_escape()
37{
38 setescape(argv[1]);
39}
40
41l_label()
42{
43 struct ww *w;
44
45 if ((w = idtowin(argv[1])) == 0)
46 return;
47 if (setlabel(w, argv[2]) < 0)
48 error("Out of memory.");
49 reframe();
50}
51
52l_terse()
53{
54 char oldterse = terse;
55
56 if (argc < 2)
57 terse = 1;
58 else if (strcmp(argv[1], "off") == 0)
59 terse = 0;
60 else
61 terse = 1;
62 if (terse && !oldterse)
63 wwdelete(cmdwin);
64 else if (!terse && oldterse)
65 wwadd(cmdwin, &wwhead);
66 reframe();
67}
68
69l_source()
70{
71 if (insource) {
72 error("Recursive source.");
73 return;
74 }
75 if (dosource(argv[1]) < 0)
76 error("Can't open %s.", argv[1]);
77}
78
79l_write()
80{
81 struct ww *w;
82
83 if ((w = idtowin(argv[1])) == 0)
84 return;
85 (void) write(w->ww_pty, argv[2], strlen(argv[2]));
86}
87
8aee01cc
EW
88l_close()
89{
90 register i;
91 register struct ww *w;
92 char didit = 0;
93
a4c3bba5
EW
94 if (argc < 2) {
95 c_close((struct ww *)0);
96 return;
97 }
8aee01cc
EW
98 for (i = 1; i < argc; i++) {
99 if ((w = idtowin(argv[i])) == 0)
100 continue;
101 closewin(w);
102 didit++;
103 }
104 if (selwin == 0) {
105 for (i = 0; i < NWINDOW && window[i] != 0; i++)
106 ;
107 if (i < NWINDOW)
108 setselwin(window[i]);
109 }
110 if (didit)
111 reframe();
112}
113
bd002416
EW
114struct ww *
115idtowin(idstr)
116char *idstr;
117{
118 register id;
119 struct ww *w;
120
121 id = atoi(idstr) - 1;
122 if (id < 0 || id >= NWINDOW || (w = window[id]) == 0) {
123 error("%d: No such window.", id + 1);
124 return 0;
125 }
126 return w;
127}