1 /*****************************************************************************
2
3 ExeCrt()
4
5 This function "executes" a ^ (caret) command. Most TECO commands
6 which are control characters (^A, ^B, etc) can also be entered as a caret
7 and letter combination. For example, control-A can also be entered as
8 caret-A.
9
10 *****************************************************************************/
11
12 #include "zport.h" /* define portability identifiers */
13 #include "tecoc.h" /* define general identifiers */
14 #include "defext.h" /* define external global variables */
15 #include "chmacs.h" /* define character processing macros */
16 #include "deferr.h" /* define identifiers for error messages */
17
ExeCrt()18 DEFAULT ExeCrt() /* execute a ^ (caret) command */
19 {
20 unsigned char TmpChr;
21 static DEFAULT (*FCAray[])(VVOID) = {
22 /* ^A*/ ExeCtA, /* ^B*/ ZExCtB, /* ^C*/ ExeCtC,
23 /* ^D*/ ExeCtD, /* ^E*/ ExeCtE, /* ^F*/ ExeNYI,
24 /* ^G*/ ExeIll, /* ^H*/ ZExCtH, /*TAB*/ ExeCtI,
25 /* LF*/ ExeNul, /* VT*/ ExeIll, /* FF*/ ExeCtL,
26 /* CR*/ ExeNul, /* ^N*/ ExeCtN, /* ^O*/ ExeCtO,
27 /* ^P*/ ExeCtP, /* ^Q*/ ExeCtQ, /* ^R*/ ExeCtR,
28 /* ^S*/ ExeCtS, /* ^T*/ ExeCtT, /* ^U*/ ExeCtU,
29 /* ^V*/ ExeCtV, /* ^W*/ ExeCtW, /* ^X*/ ExeCtX,
30 /* ^Y*/ ExeCtY, /* ^Z*/ ExeCtZ, /* ^[*/ ExeEsc,
31 /* ^\*/ ExeIll, /* ^]*/ ExeIll, /* ^^*/ ExeCCC,
32 /* ^_*/ ExeUsc
33 };
34
35 if (IncCBP() == FAILURE) {
36 return FAILURE;
37 }
38 TmpChr = To_Upper(*CBfPtr);
39 if ((TmpChr < 'A') || (TmpChr > '_')) {
40 ErrChr(ERR_IUC, *CBfPtr);
41 return FAILURE;
42 }
43 return (*FCAray[TmpChr-'A'])();
44 }
45