/***************************************************************************** ExeG() This function executes a G command. Gq Get string from Q-register q into buffer G* Get last filespec string into buffer G_ Get last search string into buffer :Gq Type Q-register q on terminal *****************************************************************************/ #include "zport.h" /* define portability identifiers */ #include "tecoc.h" /* define general identifiers */ #include "defext.h" /* define external global variables */ #include "deferr.h" /* define identifiers for error messages */ DEFAULT ExeG() /* execute a G command */ { charptr TxtBeg; /* beginning of a text area */ charptr TxtEnd; /* end of a text area */ DBGFEN(1,"ExeG",NULL); if (IncCBP() == FAILURE) { /* move to char after G */ DBGFEX(1,DbgFNm,"FAILURE"); return FAILURE; } if (*CBfPtr == '*') { /* if it's G* */ TxtBeg = FBfBeg; TxtEnd = FBfPtr; } else if (*CBfPtr == '_') { /* else if it's G_ */ TxtBeg = SBfBeg; TxtEnd = SBfPtr; } else { /* else it's Gq */ if (FindQR() == FAILURE) { return FAILURE; } if (QR->Start == NULL) { /* if empty */ RefLen = 0; CmdMod = '\0'; /* clear modifiers flags */ EStTop = EStBot; /* clear expression stack */ DBGFEX(1,DbgFNm,"SUCCESS, Q-register empty"); return SUCCESS; } TxtBeg = QR->Start; TxtEnd = QR->End_P1; } if (CmdMod & COLON) { /* if it's :G */ TypBuf(TxtBeg, TxtEnd); } else { /* else (no : modifier) */ if (InsStr(TxtBeg, TxtEnd-TxtBeg) == FAILURE) { DBGFEX(1,DbgFNm,"FAILURE"); return FAILURE; } } CmdMod = '\0'; /* clear modifiers flags */ EStTop = EStBot; /* clear expression stack */ DBGFEX(1,DbgFNm,"SUCCESS"); return SUCCESS; }