- row = a[0].v_type != V_NUM ? 1 : a[0].v_num;
- col = a[1].v_type != V_NUM ? 0 : a[1].v_num;
- nrow = a[2].v_type != V_NUM ? wwnrow - row : a[2].v_num;
- ncol = a[3].v_type != V_NUM ? wwncol - col : a[3].v_num;
- nline = a[4].v_type == V_ERR ? nbufline : a[4].v_num;
- label = a[5].v_type == V_ERR ? 0 : a[5].v_str;
- if (a[6].v_type == V_STR) {
- if (mkargv(a[6].v_str, argv, sizeof argv / sizeof *argv) < 0)
- return;
- sh = argv;
- shf = *argv;
+ row = a->v_type == V_ERR ? 1 : a->v_num;
+ a++;
+ col = a->v_type == V_ERR ? 0 : a->v_num;
+ a++;
+ nrow = a->v_type == V_ERR ? wwnrow - row : a->v_num;
+ a++;
+ ncol = a->v_type == V_ERR ? wwncol - col : a->v_num;
+ a++;
+ nline = a->v_type == V_ERR ? nbufline : a->v_num;
+ a++;
+ label = a->v_type == V_ERR ? 0 : a->v_str;
+ if ((haspty = vtobool(++a, 1, -1)) < 0)
+ return;
+ if ((hasframe = vtobool(++a, 1, -1)) < 0)
+ return;
+ if ((mapnl = vtobool(++a, !haspty, -1)) < 0)
+ return;
+ if ((++a)->v_type != V_ERR) {
+ for (pp = argv; a->v_type != V_ERR &&
+ pp < &argv[sizeof argv/sizeof *argv-1]; pp++, a++) {
+ if (a->v_type == V_NUM && p_convstr(a->v_num) < 0) {
+ p_memerror();
+ return;
+ }
+ *pp = a->v_str;
+ }
+ *pp = 0;
+ shf = *(sh = argv);
+ if (*sh = rindex(shf, '/'))
+ (*sh)++;
+ else
+ *sh = shf;