* [Linux] BugFix: Corrections to allow the Linux win console (Ie. the terminal you ran the game from) to act as a console input.

This commit is contained in:
Robert MacGregor 2021-09-22 20:28:39 -04:00
parent f83b528f3c
commit 4cfb3c4f04

View file

@ -41,7 +41,10 @@ StdConsole *stdConsole = NULL;
DefineEngineFunction(enableWinConsole, void, (bool _enable),, "enableWinConsole(bool);")
{
if (stdConsole)
stdConsole->enable(_enable);
{
stdConsole->enable(_enable);
stdConsole->enableInput(_enable);
}
}
void StdConsole::create()
@ -141,6 +144,9 @@ StdConsole::StdConsole()
stdIn = dup(0);
stdErr = dup(2);
// Ensure in buffer is null terminated after allocation
inbuf[0] = 0x00;
iCmdIndex = 0;
stdConsoleEnabled = false;
stdConsoleInputEnabled = false;
@ -195,11 +201,14 @@ void StdConsole::processConsoleLine(const char *consoleLine)
{
if(stdConsoleEnabled)
{
inbuf[inpos] = 0;
if(lineOutput)
printf("%s\n", consoleLine);
else
printf("%c%s\n%s%s", '\r', consoleLine, Con::getVariable("Con::Prompt"), inbuf);
{
// Clear current line before outputting the console line. This prevents prompt text from overflowing onto normal output.
printf("%c[2K", 27);
printf("%c%s\n%s%s", '\r', consoleLine, Con::getVariable("Con::Prompt"), inbuf);
}
}
}
@ -323,6 +332,7 @@ void StdConsole::process()
printf("%s", Con::getVariable("Con::Prompt"));
inpos = outpos = 0;
inbuf[0] = 0x00; // Ensure inbuf is NULL terminated after sending out command
break;
case 27:
// JMQTODO: are these magic numbers keyboard map specific?