- if ((f = fopen(filename, "r")) == 0)
- return -1;
- sourcefilename = filename;
- for (lineno = 1; fgets(buf, sizeof buf, f) != 0; lineno++) {
- if (*buf == '#')
- continue;
- breakup(buf);
- if (argc == 0)
- continue;
- pp = argv;
- switch (**pp++) {
- case 'w':
- if ((id = findid()) < 0) {
- if (error("Too many windows.") < 0)
- goto bad;
- break;
- }
- if (argc < 5) {
- if (error("Syntax error.") < 0)
- goto bad;
- break;
- }
- if (**pp == '*')
- row = 0;
- else
- row = atoi(*pp);
- if (**++pp == '*')
- col = 0;
- else
- col = atoi(*pp);
- if (**++pp == '*')
- nrow = WRows - row;
- else
- nrow = atoi(*pp);
- if (**++pp == '*')
- ncol = WCols - col;
- else
- ncol = atoi(*pp);
- w = doopen(id, nrow, ncol, row, col);
- if (w == 0) {
- if (error("Can't open window: row %d col %d, %d rows %d cols.", row, col, nrow, ncol) < 0)
- goto bad;
- break;
- }
- break;
- case '%':
- id = atoi(*pp);
- if (id < 1 || id > 9 || (w = wwfind(id)) == 0) {
- if (error("%d: No such window.", id) < 0)
- goto bad;
- break;
- }
- setselwin(w);
+ if (!terse)
+ wwputs("New window position: ", cmdwin);
+ col = w->ww_w.l;
+ row = w->ww_w.t;
+ wwadd(boxwin, framewin->ww_back);
+ for (;;) {
+ wwbox(boxwin, row - 1, col - 1, w->ww_w.nr + 2, w->ww_w.nc + 2);
+ getminmax(row, w->ww_w.nr, 1, wwnrow,
+ &currow, &minrow, &maxrow);
+ getminmax(col, w->ww_w.nc, 0, wwncol,
+ &curcol, &mincol, &maxcol);
+ wwsetcursor(currow, curcol);
+ while (wwpeekc() < 0)
+ wwiomux();
+ switch (getpos(&row, &col, minrow, mincol, maxrow, maxcol)) {
+ case 3:
+ wwunbox(boxwin);
+ wwdelete(boxwin);
+ return;
+ case 2:
+ wwunbox(boxwin);