Lines Matching defs:ecp

197 	EXCMD *ecp;
220 loop: ecp = SLIST_FIRST(gp->ecq);
223 if (ecp->if_name != NULL) {
224 gp->if_lno = ecp->if_lno;
225 gp->if_name = ecp->if_name;
232 if (F_ISSET(ecp, E_MOVETOEND)) {
236 F_CLR(ecp, E_MOVETOEND);
240 if (F_ISSET(ecp, E_NEWLINE)) {
242 ++ecp->if_lno;
243 F_CLR(ecp, E_NEWLINE);
247 CLEAR_EX_CMD(ecp);
250 if (argv_init(sp, ecp))
255 ecp->save_cmdlen = 0;
258 for (notempty = 0; ecp->clen > 0; ++ecp->cp, --ecp->clen)
259 if ((ch = *ecp->cp) == '\n') {
261 ++ecp->if_lno;
274 if (ecp->clen != 0 && ch == ':') {
276 while (--ecp->clen > 0 && (ch = *++ecp->cp) == ':');
288 if (ecp->clen != 0 && ch == '"') {
289 while (--ecp->clen > 0 && *++ecp->cp != '\n');
290 if (*ecp->cp == '\n') {
291 F_SET(ecp, E_NEWLINE);
292 ++ecp->cp;
293 --ecp->clen;
299 for (; ecp->clen > 0; ++ecp->cp, --ecp->clen) {
300 ch = *ecp->cp;
320 if (ecp->clen == 0 &&
321 (!notempty || F_ISSET(sp, SC_VI) || F_ISSET(ecp, E_BLIGNORE))) {
324 ecp = SLIST_FIRST(gp->ecq);
325 if (ecp->clen == 0)
340 if (F_ISSET(ecp, E_NRSEP) &&
341 ecp->clen != 0 && (ecp->clen != 1 || ecp->cp[0] != '\004'))
342 F_CLR(ecp, E_NRSEP);
345 if (ex_range(sp, ecp, &tmp))
354 for (; ecp->clen > 0; ++ecp->cp, --ecp->clen) {
355 ch = *ecp->cp;
382 if (ecp->clen != 0 && ecp->cp[0] != '|' && ecp->cp[0] != '\n') {
383 if (STRCHR(SINGLE_CHAR_COMMANDS, *ecp->cp)) {
384 p = ecp->cp;
385 ++ecp->cp;
386 --ecp->clen;
389 for (p = ecp->cp;
390 ecp->clen > 0; --ecp->clen, ++ecp->cp)
391 if (!isascii(*ecp->cp) || !isalpha(*ecp->cp))
393 if ((namelen = ecp->cp - p) == 0) {
421 len = (ecp->cp - p) - (s - p);
422 ecp->cp -= len;
423 ecp->clen += len;
424 ecp->rcmd = cmds[C_DELETE];
425 ecp->rcmd.syntax = "1bca1";
426 ecp->cmd = &ecp->rcmd;
454 if ((ecp->cmd = ex_comm_search(p, namelen)) == NULL)
458 ecp->cp -= namelen - 1;
459 ecp->clen += namelen - 1;
460 ecp->cmd = &cmds[C_K];
470 ecp->cp -= namelen - 1;
471 ecp->clen += namelen - 1;
472 ecp->rcmd = cmds[C_SUBSTITUTE];
473 ecp->rcmd.fn = ex_subagain;
474 ecp->cmd = &ecp->rcmd;
491 skip_srch: if (ecp->cmd == &cmds[C_VISUAL_EX] && F_ISSET(sp, SC_VI))
492 ecp->cmd = &cmds[C_VISUAL_VI];
502 if (newscreen && !F_ISSET(ecp->cmd, E_NEWSCREEN) &&
503 (ecp->cmd == &cmds[C_PRINT] ||
504 ecp->cmd == &cmds[C_PRESERVE]))
508 if (newscreen && !F_ISSET(ecp->cmd, E_NEWSCREEN))
512 if (F_ISSET(ecp->cmd, E_SECURE) && O_ISSET(sp, O_SECURE)) {
513 ex_wemsg(sp, ecp->cmd->name, EXM_SECURE);
522 if ((ecp->cmd == &cmds[C_SHIFTL] && *p == '<') ||
523 (ecp->cmd == &cmds[C_SHIFTR] && *p == '>')) {
525 ecp->clen > 0; --ecp->clen, ++ecp->cp)
526 if (*ecp->cp != ch)
528 if (argv_exp0(sp, ecp, p, ecp->cp - p))
533 if (ecp->cmd == &cmds[C_HASH])
535 else if (ecp->cmd == &cmds[C_LIST])
537 else if (ecp->cmd == &cmds[C_PRINT])
539 F_CLR(ecp, E_USELASTCMD);
542 ecp->cmd = &cmds[C_PRINT];
545 F_SET(ecp, exp->fdef);
553 if (ecp->addrcnt == 0 && !F_ISSET(sp, SC_EX_GLOBAL)) {
554 ecp->addrcnt = 1;
555 ecp->addr1.lno = sp->lno + 1;
556 ecp->addr1.cno = sp->cno;
559 F_SET(ecp, E_USELASTCMD);
570 F_SET(ecp, E_OPTNUM);
571 FL_SET(ecp->iflags, E_C_HASH);
573 F_CLR(ecp, E_OPTNUM);
576 if (F_ISSET(sp, SC_EX) && (F_ISSET(ecp->cmd, E_VIONLY) || newscreen)) {
577 msgq_wstr(sp, M_ERR, ecp->cmd->name,
583 F_SET(ecp, ecp->cmd->flags);
585 F_CLR(ecp, E_NEWSCREEN);
589 * are the end of the string (ecp->clen), or unescaped (by <literal
630 ecp->save_cmd = ecp->cp;
631 if (ecp->cmd == &cmds[C_EDIT] || ecp->cmd == &cmds[C_EX] ||
632 ecp->cmd == &cmds[C_NEXT] || ecp->cmd == &cmds[C_VISUAL_VI] ||
633 ecp->cmd == &cmds[C_VSPLIT]) {
639 if (ecp->clen > 0 && *ecp->cp == '!') {
640 ++ecp->cp;
641 --ecp->clen;
642 FL_SET(ecp->iflags, E_C_FORCE);
645 ecp->save_cmd = ecp->cp;
647 for (; ecp->clen > 0; --ecp->clen, ++ecp->cp)
648 if (!cmdskip(*ecp->cp))
659 if (ecp->clen > 0 && *ecp->cp == '+') {
660 ++ecp->cp;
661 --ecp->clen;
662 for (arg1 = p = ecp->cp;
663 ecp->clen > 0; --ecp->clen, ++ecp->cp) {
664 ch = *ecp->cp;
665 if (IS_ESCAPE(sp, ecp, ch) &&
666 ecp->clen > 1) {
668 --ecp->clen;
669 ch = *++ecp->cp;
674 arg1_len = ecp->cp - arg1;
677 ecp->save_cmd = ecp->cp;
679 } else if (ecp->cmd == &cmds[C_BANG] ||
680 ecp->cmd == &cmds[C_GLOBAL] || ecp->cmd == &cmds[C_V]) {
690 for (p = ecp->cp; ecp->clen > 0; --ecp->clen, ++ecp->cp) {
691 ch = *ecp->cp;
692 if (ch == '\\' && ecp->clen > 1 && ecp->cp[1] == '\n') {
694 --ecp->clen;
695 ch = *++ecp->cp;
698 ++ecp->if_lno;
703 } else if (ecp->cmd == &cmds[C_READ] || ecp->cmd == &cmds[C_WRITE]) {
712 for (tmp = 0; ecp->clen > 0; --ecp->clen, ++ecp->cp) {
713 ch = *ecp->cp;
719 if (ecp->clen > 0 && ch == '!' &&
720 (ecp->cmd == &cmds[C_READ] || tmp))
721 for (; ecp->clen > 0; --ecp->clen, ++ecp->cp)
722 if (ecp->cp[0] == '\n')
724 } else if (ecp->cmd == &cmds[C_SUBSTITUTE]) {
731 for (; ecp->clen > 0; --ecp->clen, ++ecp->cp)
732 if (!cmdskip(ecp->cp[0]))
735 if (!isascii(ecp->cp[0]) ||
736 isalnum(ecp->cp[0]) || ecp->cp[0] == '|') {
737 ecp->rcmd = cmds[C_SUBSTITUTE];
738 ecp->rcmd.fn = ex_subagain;
739 ecp->cmd = &ecp->rcmd;
740 } else if (ecp->clen > 0) {
749 delim = *ecp->cp;
750 ++ecp->cp;
751 --ecp->clen;
752 for (cnt = 2; ecp->clen > 0 &&
753 cnt != 0; --ecp->clen, ++ecp->cp)
754 if (ecp->cp[0] == '\\' &&
755 ecp->clen > 1) {
756 ++ecp->cp;
757 --ecp->clen;
758 } else if (ecp->cp[0] == delim)
776 vi_address = ecp->clen != 0 && ecp->cp[0] != '\n';
777 for (p = ecp->cp; ecp->clen > 0; --ecp->clen, ++ecp->cp) {
778 ch = ecp->cp[0];
779 if (IS_ESCAPE(sp, ecp, ch) && ecp->clen > 1) {
780 CHAR_T tmp = ecp->cp[1];
784 ++ecp->if_lno;
787 --ecp->clen;
788 ++ecp->cp;
793 F_SET(ecp, E_NEWLINE);
794 --ecp->clen;
804 p = ecp->cp + 1;
805 ecp->cp = ecp->save_cmd;
806 ecp->save_cmd = p;
807 ecp->save_cmdlen = ecp->clen;
808 ecp->clen = ((ecp->save_cmd - ecp->cp) - 1) - discard;
819 if (ecp->cmd == &cmds[C_SET])
820 for (p = ecp->cp, len = ecp->clen; len > 0; --len, ++p)
821 if (IS_ESCAPE(sp, ecp, *p) && len > 1) {
845 switch (F_ISSET(ecp, E_ADDR1 | E_ADDR2 | E_ADDR2_ALL | E_ADDR2_NONE)) {
847 switch (ecp->addrcnt) {
849 ecp->addrcnt = 1;
850 F_SET(ecp, E_ADDR_DEF);
851 if (F_ISSET(ecp, E_ADDR_ZERODEF)) {
855 ecp->addr1.lno = 0;
856 F_SET(ecp, E_ADDR_ZERO);
858 ecp->addr1.lno = sp->lno;
860 ecp->addr1.lno = sp->lno;
861 ecp->addr1.cno = sp->cno;
866 ecp->addrcnt = 1;
867 ecp->addr1 = ecp->addr2;
871 if (ecp->addrcnt == 0) /* Default to nothing. */
875 if (ecp->addrcnt == 0) { /* Default entire/empty file. */
876 F_SET(ecp, E_ADDR_DEF);
877 ecp->addrcnt = 2;
879 ecp->addr2.lno = 0;
880 else if (db_last(sp, &ecp->addr2.lno))
882 if (F_ISSET(ecp, E_ADDR_ZERODEF) &&
883 ecp->addr2.lno == 0) {
884 ecp->addr1.lno = 0;
885 F_SET(ecp, E_ADDR_ZERO);
887 ecp->addr1.lno = 1;
888 ecp->addr1.cno = ecp->addr2.cno = 0;
889 F_SET(ecp, E_ADDR2_ALL);
894 two_addr: switch (ecp->addrcnt) {
896 ecp->addrcnt = 2;
897 F_SET(ecp, E_ADDR_DEF);
899 F_ISSET(ecp, E_ADDR_ZERODEF)) {
903 ecp->addr1.lno = ecp->addr2.lno = 0;
904 F_SET(ecp, E_ADDR_ZERO);
906 ecp->addr1.lno =
907 ecp->addr2.lno = sp->lno;
909 ecp->addr1.lno = ecp->addr2.lno = sp->lno;
910 ecp->addr1.cno = ecp->addr2.cno = sp->cno;
913 ecp->addrcnt = 2;
914 ecp->addr2 = ecp->addr1;
921 if (ecp->addrcnt) /* Error. */
931 if (ecp->cmd == &cmds[C_SCROLL]) {
932 ecp->addrcnt = 2;
933 ecp->addr1.lno = sp->lno + 1;
934 ecp->addr2.lno = sp->lno + O_VAL(sp, O_SCROLL);
935 ecp->addr1.cno = ecp->addr2.cno = sp->cno;
938 if (lno != 0 && lno > sp->lno && ecp->addr2.lno > lno)
939 ecp->addr2.lno = lno;
942 ecp->flagoff = 0;
943 for (np = ecp->cmd->syntax; *np != '\0'; ++np) {
950 if (ecp->clen > 0 && *ecp->cp == '!') {
951 ++ecp->cp;
952 --ecp->clen;
953 FL_SET(ecp->iflags, E_C_FORCE);
959 for (; ecp->clen > 0; --ecp->clen, ++ecp->cp)
960 if (!cmdskip(*ecp->cp))
962 if (ecp->clen == 0)
977 for (; ecp->clen; --ecp->clen, ++ecp->cp)
978 switch (*ecp->cp) {
980 ++ecp->flagoff;
984 --ecp->flagoff;
987 F_CLR(ecp, E_OPTNUM);
988 FL_SET(ecp->iflags, E_C_HASH);
992 FL_SET(ecp->iflags, E_C_LIST);
996 FL_SET(ecp->iflags, E_C_PRINT);
1005 for (; ecp->clen; --ecp->clen, ++ecp->cp)
1006 switch (*ecp->cp) {
1008 FL_SET(ecp->iflags, E_C_DASH);
1011 FL_SET(ecp->iflags, E_C_DOT);
1014 FL_SET(ecp->iflags, E_C_PLUS);
1017 FL_SET(ecp->iflags, E_C_CARAT);
1021 FL_SET(ecp->iflags, E_C_EQUAL);
1038 if ((ecp->cp[0] == '+' || ecp->cp[0] == '-' ||
1039 ecp->cp[0] == '^' || ecp->cp[0] == '#') &&
1048 if (!ISDIGIT(ecp->cp[0])) {
1049 ecp->buffer = *ecp->cp;
1050 ++ecp->cp;
1051 --ecp->clen;
1052 FL_SET(ecp->iflags, E_C_BUFFER);
1058 if (!ISDIGIT(*ecp->cp) && (*np != '+' ||
1059 (*ecp->cp != '+' && *ecp->cp != '-')))
1062 if (*ecp->cp == '-')
1063 FL_SET(ecp->iflags, E_C_COUNT_NEG);
1064 else if (*ecp->cp == '+')
1065 FL_SET(ecp->iflags, E_C_COUNT_POS);
1067 nget_slong(&ltmp, ecp->cp, &t, 10)) != NUM_OK) {
1075 ecp->clen -= (t - ecp->cp);
1076 ecp->cp = t;
1088 ecp->addr1 = ecp->addr2;
1089 ecp->addr2.lno = ecp->addr1.lno + ltmp - 1;
1091 ecp->count = ltmp;
1092 FL_SET(ecp->iflags, E_C_COUNT);
1095 if (argv_exp2(sp, ecp, ecp->cp, ecp->clen))
1107 if (ex_line(sp, ecp, &cur, &isaddr, &tmp))
1114 msgq_wstr(sp, M_ERR, ecp->cp,
1126 ecp->lineno = cur.lno;
1129 if (ecp->clen != 0) {
1130 if (argv_exp1(sp, ecp, ecp->cp,
1131 ecp->clen, ecp->cmd == &cmds[C_BANG]))
1137 if (argv_exp0(sp, ecp, ecp->cp, ecp->clen))
1150 for (p = t = ecp->cp;
1151 ecp->clen > 0; --ecp->clen, ++ecp->cp) {
1152 ch = *ecp->cp;
1154 ecp, ch) && ecp->clen > 1) {
1155 --ecp->clen;
1156 *p++ = *++ecp->cp;
1158 ++ecp->cp;
1159 --ecp->clen;
1164 if (argv_exp0(sp, ecp, t, p - t))
1168 for (; ecp->clen > 0;
1169 --ecp->clen, ++ecp->cp) {
1170 ch = *ecp->cp;
1174 if (ecp->clen == 0)
1178 for (p = t = ecp->cp; ecp->clen > 0;
1179 --ecp->clen, ++ecp->cp, ++p) {
1180 ch = *ecp->cp;
1182 ecp, ch) && ecp->clen > 1) {
1183 --ecp->clen;
1184 *p = *++ecp->cp;
1188 if (argv_exp0(sp, ecp, t, p - t))
1192 if (argv_exp3(sp, ecp, ecp->cp, ecp->clen))
1210 INT2CHAR(sp, ecp->cmd->name, STRLEN(ecp->cmd->name) + 1,
1220 for (; ecp->clen > 0; --ecp->clen) {
1221 ch = *ecp->cp++;
1230 if (ecp->clen != 0 || strpbrk(np, "lr")) {
1231 usage: msgq(sp, M_ERR, "086|Usage: %s", ecp->cmd->usage);
1245 switch (ecp->addrcnt) {
1255 if (ecp->addr2.lno == 0) {
1256 if (!F_ISSET(ecp, E_ADDR_ZERO) &&
1258 !F_ISSET(ecp, E_USELASTCMD))) {
1259 ex_badaddr(sp, ecp->cmd, A_ZERO, NUM_OK);
1262 } else if (!db_exist(sp, ecp->addr2.lno))
1263 if (FL_ISSET(ecp->iflags, E_C_COUNT)) {
1266 ecp->addr2.lno = lno;
1273 if (ecp->addr1.lno == 0) {
1274 if (!F_ISSET(ecp, E_ADDR_ZERO) &&
1276 !F_ISSET(ecp, E_USELASTCMD))) {
1277 ex_badaddr(sp, ecp->cmd, A_ZERO, NUM_OK);
1280 } else if (!db_exist(sp, ecp->addr1.lno)) {
1300 if ((F_ISSET(sp, SC_VI) || F_ISSET(ecp, E_NOPRDEF)) &&
1301 F_ISSET(ecp, E_USELASTCMD) && vi_address == 0) {
1302 switch (ecp->addrcnt) {
1305 (ecp->addr2.lno ? ecp->addr2.lno : 1)) {
1307 ecp->addr2.lno ? ecp->addr2.lno : 1;
1314 (ecp->addr1.lno ? ecp->addr1.lno : 1)) {
1316 ecp->addr1.lno ? ecp->addr1.lno : 1;
1322 ecp->cp = ecp->save_cmd;
1323 ecp->clen = ecp->save_cmdlen;
1332 if (F_ISSET(ecp, E_ABSMARK)) {
1335 F_CLR(ecp, E_ABSMARK);
1341 ex_comlog(sp, ecp);
1369 if (F_ISSET(ecp, E_NRSEP)) {
1372 (F_ISSET(ecp, E_USELASTCMD) || ecp->cmd == &cmds[C_SCROLL]))
1374 F_CLR(ecp, E_NRSEP);
1383 if (ecp->cmd->fn(sp, ecp) || INTERRUPTED(sp)) {
1393 msgq_wstr(sp, M_ERR, ecp->cmd->name,
1422 if (sp->ep != NULL && ecp->flagoff) {
1423 if (ecp->flagoff < 0) {
1424 if (sp->lno <= -ecp->flagoff) {
1430 if (!NPFITS(MAX_REC_NUMBER, sp->lno, ecp->flagoff)) {
1434 if (!db_exist(sp, sp->lno + ecp->flagoff)) {
1440 sp->lno += ecp->flagoff;
1454 if (FL_ISSET(ecp->iflags, E_CLRFLAG))
1455 FL_CLR(ecp->iflags, E_C_HASH | E_C_LIST | E_C_PRINT);
1458 if (F_ISSET(ecp, E_OPTNUM))
1459 FL_CLR(ecp->iflags, E_C_HASH);
1466 LF_INIT(FL_ISSET(ecp->iflags, E_C_HASH | E_C_LIST | E_C_PRINT));
1469 O_ISSET(sp, O_AUTOPRINT) && F_ISSET(ecp, E_AUTOPRINT))
1475 (void)ex_print(sp, ecp, &cur, &cur, flags);
1500 if (IS_ESCAPE(sp, ecp, arg1[arg1_len - 1])) {
1501 *--ecp->save_cmd = CH_LITERAL;
1502 ++ecp->save_cmdlen;
1505 ecp->save_cmd -= arg1_len;
1506 ecp->save_cmdlen += arg1_len;
1507 MEMCPY(ecp->save_cmd, arg1, arg1_len);
1517 F_SET(ecp, E_MOVETOEND);
1521 ecp->cp = ecp->save_cmd;
1522 ecp->clen = ecp->save_cmdlen;
1541 SLIST_FOREACH(ecp, sp->gp->ecq, q)
1542 switch (ecp->agv_flags) {
1581 if (ecp->save_cmdlen == 0)
1582 for (; ecp->clen; --ecp->clen) {
1583 ch = *ecp->cp++;
1584 if (IS_ESCAPE(sp, ecp, ch) && ecp->clen > 1) {
1585 --ecp->clen;
1586 ++ecp->cp;
1588 if (ecp->clen > 1)
1589 ecp->save_cmdlen = 1;
1593 if (ecp->save_cmdlen != 0 || SLIST_FIRST(gp->ecq) != &gp->excmd) {
1622 ex_range(SCR *sp, EXCMD *ecp, int *errp)
1638 * :3;/pattern/ecp->cp
1640 * will search for pattern from line 3. In addition, if ecp->cp
1655 for (addr = ADDR_NONE, ecp->addrcnt = 0; ecp->clen > 0;)
1656 switch (*ecp->cp) {
1659 if (F_ISSET(ecp, E_VISEARCH))
1683 if (db_last(sp, &ecp->addr2.lno))
1685 ecp->addr1.lno = ecp->addr2.lno == 0 ? 0 : 1;
1686 ecp->addr1.cno = ecp->addr2.cno = 0;
1687 ecp->addrcnt = 2;
1689 ++ecp->cp;
1690 --ecp->clen;
1694 if (F_ISSET(ecp, E_VISEARCH))
1704 switch (ecp->addrcnt) {
1706 ecp->addr1.lno = sp->lno;
1707 ecp->addr1.cno = sp->cno;
1708 ecp->addrcnt = 1;
1711 ecp->addr1 = ecp->addr2;
1714 ecp->addr2.lno = sp->lno;
1715 ecp->addr2.cno = sp->cno;
1716 ecp->addrcnt = 2;
1719 if (*ecp->cp == ';')
1720 switch (ecp->addrcnt) {
1725 sp->lno = ecp->addr1.lno;
1726 sp->cno = ecp->addr1.cno;
1729 sp->lno = ecp->addr2.lno;
1730 sp->cno = ecp->addr2.cno;
1737 ++ecp->cp;
1738 --ecp->clen;
1742 if (ex_line(sp, ecp, &m, &isaddr, errp))
1753 switch (ecp->addrcnt) {
1755 ecp->addr1 = m;
1756 ecp->addrcnt = 1;
1759 ecp->addr2 = m;
1760 ecp->addrcnt = 2;
1763 ecp->addr1 = ecp->addr2;
1764 ecp->addr2 = m;
1776 ret: if (F_ISSET(ecp, E_VISEARCH))
1780 switch (ecp->addrcnt) {
1782 ecp->addr1.lno = sp->lno;
1783 ecp->addr1.cno = sp->cno;
1784 ecp->addrcnt = 1;
1787 ecp->addr1 = ecp->addr2;
1790 ecp->addr2.lno = sp->lno;
1791 ecp->addr2.cno = sp->cno;
1792 ecp->addrcnt = 2;
1796 if (ecp->addrcnt == 2 && ecp->addr2.lno < ecp->addr1.lno) {
1821 ex_line(SCR *sp, EXCMD *ecp, MARK *mp, int *isaddrp, int *errp)
1835 F_CLR(ecp, E_DELTA);
1838 if (sp->ep == NULL && STRCHR(L("$0123456789'\\/?.+-^"), *ecp->cp)) {
1844 switch (*ecp->cp) {
1847 F_SET(ecp, E_ABSMARK);
1852 ++ecp->cp;
1853 --ecp->clen;
1858 F_SET(ecp, E_ABSMARK);
1860 if ((nret = nget_slong(&val, ecp->cp, &endp, 10)) != NUM_OK) {
1872 ecp->clen -= (endp - ecp->cp);
1873 ecp->cp = endp;
1877 F_SET(ecp, E_ABSMARK);
1879 if (ecp->clen == 1) {
1884 if (mark_get(sp, ecp->cp[1], mp, M_ERR)) {
1888 ecp->cp += 2;
1889 ecp->clen -= 2;
1898 if (ecp->clen < 2 ||
1899 (ecp->cp[1] != '/' && ecp->cp[1] != '?')) {
1904 ++ecp->cp;
1905 --ecp->clen;
1906 sf = ecp->cp[0] == '/' ? f_search : b_search;
1916 if (sf(sp, mp, mp, ecp->cp, ecp->clen, &endp,
1918 (F_ISSET(ecp, E_SEARCH_WMSG) ? SEARCH_WMSG : 0))) {
1924 ecp->clen -= (endp - ecp->cp);
1925 ecp->cp = endp;
1928 F_SET(ecp, E_ABSMARK);
1949 if (ecp->clen > 1 && ISDIGIT(ecp->cp[1]))
1950 *ecp->cp = '+';
1952 ++ecp->cp;
1953 --ecp->clen;
1959 for (; ecp->clen > 0 &&
1960 cmdskip(ecp->cp[0]); ++ecp->cp, --ecp->clen);
1967 if (ecp->clen != 0 && (ISDIGIT(ecp->cp[0]) ||
1968 ecp->cp[0] == '+' || ecp->cp[0] == '-' ||
1969 ecp->cp[0] == '^')) {
2001 F_SET(ecp, E_DELTA);
2003 for (; ecp->clen > 0 && cmdskip(ecp->cp[0]);
2004 ++ecp->cp, --ecp->clen);
2005 if (ecp->clen == 0 || (!ISDIGIT(ecp->cp[0]) &&
2006 ecp->cp[0] != '+' && ecp->cp[0] != '-' &&
2007 ecp->cp[0] != '^'))
2009 if (!ISDIGIT(ecp->cp[0]) &&
2010 !ISDIGIT(ecp->cp[1])) {
2011 total += ecp->cp[0] == '+' ? 1 : -1;
2012 --ecp->clen;
2013 ++ecp->cp;
2015 if (ecp->cp[0] == '-' ||
2016 ecp->cp[0] == '^') {
2017 ++ecp->cp;
2018 --ecp->clen;
2025 ecp->cp, &endp, 10)) != NUM_OK ||
2033 ecp->clen -= (endp - ecp->cp);
2034 ecp->cp = endp;
2071 EXCMD *ecp;
2081 ecp = SLIST_FIRST(gp->ecq);
2084 if (F_ISSET(ecp, E_NAMEDISCARD))
2085 free(ecp->if_name);
2091 if (ecp == &gp->excmd) {
2092 ecp->if_name = NULL;
2097 * ecp->clen will be 0 for the first discarded command, but
2103 if (ecp->clen != 0)
2110 if (FL_ISSET(ecp->agv_flags, AGV_ALL)) {
2112 while ((rp = TAILQ_FIRST(ecp->rq)) != NULL)
2114 TAILQ_REMOVE(ecp->rq, rp, q);
2124 if (FL_ISSET(ecp->agv_flags,
2125 AGV_GLOBAL | AGV_V) && ecp->range_lno != OOBLNO)
2126 if (db_exist(sp, ecp->range_lno))
2127 sp->lno = ecp->range_lno;
2134 free(ecp->o_cp);
2139 free(ecp);
2148 ecp->cp = ecp->o_cp;
2149 MEMCPY(ecp->cp, ecp->cp + ecp->o_clen, ecp->o_clen);
2150 ecp->clen = ecp->o_clen;
2151 ecp->range_lno = sp->lno = rp->start++;
2153 if (FL_ISSET(ecp->agv_flags, AGV_GLOBAL | AGV_V))
2166 EXCMD *ecp;
2174 ecp = SLIST_FIRST(gp->ecq);
2175 if (F_ISSET(ecp, E_NAMEDISCARD))
2176 free(ecp->if_name);
2178 if (ecp == &gp->excmd)
2180 if (FL_ISSET(ecp->agv_flags, AGV_ALL)) {
2181 while ((rp = TAILQ_FIRST(ecp->rq)) != NULL) {
2182 TAILQ_REMOVE(ecp->rq, rp, q);
2185 free(ecp->o_cp);
2188 free(ecp);
2191 ecp->if_name = NULL;
2192 ecp->clen = 0;
2346 ex_comlog(sp, ecp)
2348 EXCMD *ecp;
2350 TRACE(sp, "ecmd: "WS, ecp->cmd->name);
2351 if (ecp->addrcnt > 0) {
2352 TRACE(sp, " a1 %d", ecp->addr1.lno);
2353 if (ecp->addrcnt > 1)
2354 TRACE(sp, " a2: %d", ecp->addr2.lno);
2356 if (ecp->lineno)
2357 TRACE(sp, " line %d", ecp->lineno);
2358 if (ecp->flags)
2359 TRACE(sp, " flags 0x%x", ecp->flags);
2360 if (FL_ISSET(ecp->iflags, E_C_BUFFER))
2361 TRACE(sp, " buffer "WC, ecp->buffer);
2362 if (ecp->argc) {
2364 for (cnt = 0; cnt < ecp->argc; ++cnt)
2365 TRACE(sp, " arg %d: {"WS"}", cnt, ecp->argv[cnt]->bp);