Merge branch 'master' into feature/filesystem

This commit is contained in:
Stephen Anthony 2022-07-07 18:01:42 -02:30
commit fd8e2f9255
1 changed files with 40 additions and 1 deletions

View File

@ -153,6 +153,40 @@ bool isProfilingRun(int ac, char* av[]) {
return string(av[1]) == "-profile";
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void attachConsole()
{
#if defined(BSPF_WINDOWS)
// Attach console to allow command line output (e.g. for -help)
AttachConsole(ATTACH_PARENT_PROCESS);
FILE* fDummy;
freopen_s(&fDummy, "CONOUT$", "w", stdout);
// Windows displays a new prompt immediately after starting the app.
// This code tries to hide it before the new output is generated.
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_SCREEN_BUFFER_INFO csbi;
if(GetConsoleScreenBufferInfo(hConsole, &csbi))
{
COORD pos = {0, csbi.dwCursorPosition.Y};
SetConsoleCursorPosition(hConsole, pos);
cout << std::setw(160) << ""; // this clears the extra prompt display
SetConsoleCursorPosition(hConsole, pos);
}
else
cout << endl << endl;
#endif
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void freeConsole()
{
#if defined(BSPF_WINDOWS)
cout << "Press \"Enter\"" << endl << std::flush;
FreeConsole();
#endif
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#if defined(BSPF_MACOS)
int stellaMain(int ac, char* av[])
@ -219,22 +253,27 @@ int main(int ac, char* av[])
string romfile = localOpts["ROMFILE"].toString();
if(localOpts["listrominfo"].toBool())
{
attachConsole();
Logger::debug("Showing output from 'listrominfo' ...");
theOSystem->propSet().print();
freeConsole();
return Cleanup();
}
else if(localOpts["rominfo"].toBool())
{
attachConsole();
Logger::debug("Showing output from 'rominfo' ...");
FSNode romnode(romfile);
Logger::error(theOSystem->getROMInfo(romnode));
freeConsole();
return Cleanup();
}
else if(localOpts["help"].toBool())
{
attachConsole();
Logger::debug("Displaying usage");
theOSystem->settings().usage();
freeConsole();
return Cleanup();
}