/** * Reads input, parses it and executes commands on '\n'. * * @returns VBox status. * @param pDbgc Debugger console instance data. * @param fNoExecute Indicates that no commands should actually be executed. */ int dbgcProcessInput(PDBGC pDbgc, bool fNoExecute) { /* * We know there's input ready, so let's read it first. */ int rc = dbgcInputRead(pDbgc); if (RT_FAILURE(rc)) return rc; /* * Now execute any ready commands. */ if (pDbgc->cInputLines) { pDbgc->pBack->pfnSetReady(pDbgc->pBack, false); pDbgc->fReady = false; rc = dbgcProcessCommands(pDbgc, fNoExecute); if (RT_SUCCESS(rc) && rc != VWRN_DBGC_CMD_PENDING) pDbgc->fReady = true; if ( RT_SUCCESS(rc) && pDbgc->iRead == pDbgc->iWrite && pDbgc->fReady) rc = pDbgc->CmdHlp.pfnPrintf(&pDbgc->CmdHlp, NULL, "VBoxDbg> "); if ( RT_SUCCESS(rc) && pDbgc->fReady) pDbgc->pBack->pfnSetReady(pDbgc->pBack, true); } else /* Received nonsense; just skip it. */ pDbgc->iRead = pDbgc->iWrite; return rc; }
/** * Reads input, parses it and executes commands on '\n'. * * @returns VBox status code. * @param pDbgc Debugger console instance data. * @param fNoExecute Indicates that no commands should actually be executed. */ int dbgcProcessInput(PDBGC pDbgc, bool fNoExecute) { /* * We know there's input ready, so let's read it first. */ int rc = dbgcInputRead(pDbgc); if (RT_FAILURE(rc)) return rc; /* * Now execute any ready commands. */ if (pDbgc->cInputLines) { pDbgc->pBack->pfnSetReady(pDbgc->pBack, false); pDbgc->fReady = false; rc = dbgcProcessCommands(pDbgc, fNoExecute); if (RT_SUCCESS(rc) && rc != VWRN_DBGC_CMD_PENDING) pDbgc->fReady = true; if ( RT_SUCCESS(rc) && pDbgc->iRead == pDbgc->iWrite && pDbgc->fReady) rc = pDbgc->CmdHlp.pfnPrintf(&pDbgc->CmdHlp, NULL, "VBoxDbg> "); if ( RT_SUCCESS(rc) && pDbgc->fReady) pDbgc->pBack->pfnSetReady(pDbgc->pBack, true); } /* * else - we have incomplete line, so leave it in the buffer and * wait for more input. * * Windows telnet client is in "character at a time" mode by * default and putty sends eol as a separate packet that will be * most likely read separately from the command line it * terminates. */ return rc; }