forgot windows has to be fucking special
This commit is contained in:
parent
8b6d939678
commit
158cae043b
28
src/main.cpp
28
src/main.cpp
|
@ -1,6 +1,31 @@
|
||||||
#include "fprint.hpp"
|
#include "fprint.hpp"
|
||||||
#include "worker.hpp"
|
#include "worker.hpp"
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
#define _WIN32_LEAN_AND_MEAN
|
||||||
|
#include <windows.h>
|
||||||
|
|
||||||
|
std::uint32_t lastVtMode = 0;
|
||||||
|
|
||||||
|
void EnableVtMode() {
|
||||||
|
GetConsoleMode(GetStdHandle(STD_OUTPUT_HANDLE), &lastVtMode);
|
||||||
|
auto newMode = lastVtMode | ENABLE_PROCESSED_OUTPUT | ENABLE_VIRTUAL_TERMINAL_PROCESSING;
|
||||||
|
SetConsoleMode(GetStdHandle(STD_OUTPUT_HANDLE), newMode);
|
||||||
|
}
|
||||||
|
|
||||||
|
void DisableVtMode() {
|
||||||
|
SetConsoleMode(GetStdHandle(STD_OUTPUT_HANDLE), lastVtMode);
|
||||||
|
}
|
||||||
|
|
||||||
|
struct ScopedVtMode {
|
||||||
|
ScopedVtMode() { EnableVtMode(); }
|
||||||
|
~ScopedVtMode() { DisableVtMode(); }
|
||||||
|
ScopedVtMode(const ScopedVtMode&) = delete;
|
||||||
|
ScopedVtMode(ScopedVtMode&&) = delete;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
struct Arguments {
|
struct Arguments {
|
||||||
bool exact { false };
|
bool exact { false };
|
||||||
std::uint32_t startLength = 2;
|
std::uint32_t startLength = 2;
|
||||||
|
@ -119,6 +144,9 @@ struct Arguments {
|
||||||
};
|
};
|
||||||
|
|
||||||
int main(int argc, char** argv) {
|
int main(int argc, char** argv) {
|
||||||
|
#ifdef _WIN32
|
||||||
|
ScopedVtMode vtmode;
|
||||||
|
#endif
|
||||||
auto args = Arguments::FromArgv(argc, argv);
|
auto args = Arguments::FromArgv(argc, argv);
|
||||||
if(!args.Validate()) {
|
if(!args.Validate()) {
|
||||||
return 1;
|
return 1;
|
||||||
|
|
Loading…
Reference in New Issue