From e66f6d6404466c880ece14f5609f6f2febdee915 Mon Sep 17 00:00:00 2001 From: YiFang Xiao Date: Tue, 16 May 2023 22:13:23 +0800 Subject: [PATCH] opt: redirect the log to the current console MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🎨 apply clang-format changes --- .clang-format | 6 +++--- src/main.cc | 37 +++++++++++++++++++++++-------------- 2 files changed, 26 insertions(+), 17 deletions(-) diff --git a/.clang-format b/.clang-format index 6467a4cc..b0e8ca9f 100644 --- a/.clang-format +++ b/.clang-format @@ -77,10 +77,10 @@ IndentCaseBlocks: false IndentGotoLabels: true IndentPPDirectives: BeforeHash IndentExternBlock: AfterExternBlock -IndentRequiresClause: true +# IndentRequiresClause: true IndentWidth: 2 IndentWrappedFunctionNames: false -InsertBraces: false +# InsertBraces: false InsertTrailingCommas: None KeepEmptyLinesAtTheStartOfBlocks: true LambdaBodyIndentation: Signature @@ -104,7 +104,7 @@ PPIndentWidth: -1 ReferenceAlignment: Pointer ReflowComments: false SortIncludes: Never -RequiresClausePosition: OwnLine +# RequiresClausePosition: OwnLine RemoveBracesLLVM: false SeparateDefinitionBlocks: Leave ShortNamespaceLines: 1 diff --git a/src/main.cc b/src/main.cc index 83178663..81a1cb92 100644 --- a/src/main.cc +++ b/src/main.cc @@ -17,6 +17,7 @@ #ifdef Q_OS_WIN32 #include + #include #endif #include "termination.hh" @@ -217,18 +218,27 @@ void processCommandLine( QCoreApplication * app, GDOptions * result) int main( int argc, char ** argv ) { #ifdef Q_OS_UNIX - // GoldenDict use lots of X11 functions and it currently cannot work - // natively on Wayland. This workaround will force GoldenDict to use - // XWayland. - char * xdg_envc = getenv("XDG_SESSION_TYPE"); - QString xdg_session = xdg_envc ? QString::fromLatin1(xdg_envc) : QString(); - if (!QString::compare(xdg_session, QString("wayland"), Qt::CaseInsensitive)) - { - setenv("QT_QPA_PLATFORM", "xcb", 1); - } + // GoldenDict use lots of X11 functions and it currently cannot work + // natively on Wayland. This workaround will force GoldenDict to use + // XWayland. + char * xdg_envc = getenv( "XDG_SESSION_TYPE" ); + QString xdg_session = xdg_envc ? QString::fromLatin1( xdg_envc ) : QString(); + if ( !QString::compare( xdg_session, QString( "wayland" ), Qt::CaseInsensitive ) ) { + setenv( "QT_QPA_PLATFORM", "xcb", 1 ); + } #endif + #ifdef Q_OS_MAC - setenv("LANG", "en_US.UTF-8", 1); + setenv( "LANG", "en_US.UTF-8", 1 ); +#endif + +#ifdef Q_OS_WIN32 + // attach the new console to this application's process + if ( AttachConsole( ATTACH_PARENT_PROCESS ) ) { + // reopen the std I/O streams to redirect I/O to the new console + freopen( "CON", "w", stdout ); + freopen( "CON", "w", stderr ); + } #endif @@ -246,7 +256,7 @@ int main( int argc, char ** argv ) int newArgc = argc + 1 + 1; char ** newArgv = new char *[ newArgc ]; for ( int i = 0; i < argc; i++ ) { - newArgv[ i ] = argv[ i ]; + newArgv[ i ] = argv[ i ]; } newArgv[ argc ] = ARG_DISABLE_WEB_SECURITY; newArgv[ argc + 1 ] = nullptr; @@ -263,9 +273,8 @@ int main( int argc, char ** argv ) QString appDirPath = QCoreApplication::applicationDirPath() + "/crash"; QDir dir; - if (!dir.exists(appDirPath)) { - bool res = dir.mkpath(appDirPath); - qDebug() << "New mkdir " << appDirPath << " " << res; + if ( !dir.exists( appDirPath ) ) { + dir.mkpath( appDirPath ); } google_breakpad::ExceptionHandler eh(