From 3d45deaf460e8169814ea0244c75d21cbe48882f Mon Sep 17 00:00:00 2001 From: Dan Engelbrecht Date: Thu, 15 Jan 2026 15:05:37 +0100 Subject: use current locale when converting wide char command line arguments to string (#712) * set utf8 locale, only set LC_CTYPE as we don't want to affect how decimal point or sorting orders are handled * set language/region explicitly so we can use LC_ALL --- src/zenserver/main.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src/zenserver/main.cpp') diff --git a/src/zenserver/main.cpp b/src/zenserver/main.cpp index 34848c831..da256d06d 100644 --- a/src/zenserver/main.cpp +++ b/src/zenserver/main.cpp @@ -206,6 +206,10 @@ AppMain(int argc, char* argv[]) int test_main(int argc, char** argv) { +# if ZEN_PLATFORM_WINDOWS + setlocale(LC_ALL, "en_us.UTF8"); +# endif // ZEN_PLATFORM_WINDOWS + zen::logging::InitializeLogging(); zen::logging::SetLogLevel(zen::logging::level::Debug); @@ -218,6 +222,10 @@ test_main(int argc, char** argv) int main(int argc, char* argv[]) { +#if ZEN_PLATFORM_WINDOWS + setlocale(LC_ALL, "en_us.UTF8"); +#endif // ZEN_PLATFORM_WINDOWS + using namespace zen; if (argc >= 2) -- cgit v1.2.3 From 975babca65c6e118db268c6335a4ecbf7c2a9744 Mon Sep 17 00:00:00 2001 From: Stefan Boberg Date: Mon, 19 Jan 2026 15:47:59 +0100 Subject: zenserver API changes, some other minor changes (#720) * add system metrics output to top command * removed unnecessary xmake directives * file system API/comment tweaks * fixed out-of-range access in httpserver test * updated ZenServer base API to allow customization by mode --- src/zenserver/main.cpp | 54 ++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 41 insertions(+), 13 deletions(-) (limited to 'src/zenserver/main.cpp') diff --git a/src/zenserver/main.cpp b/src/zenserver/main.cpp index da256d06d..78bce7d06 100644 --- a/src/zenserver/main.cpp +++ b/src/zenserver/main.cpp @@ -54,8 +54,6 @@ SignalCallbackHandler(int SigNum) namespace zen { -using namespace std::literals; - ////////////////////////////////////////////////////////////////////////// #if ZEN_PLATFORM_WINDOWS @@ -89,6 +87,13 @@ AppMain(int argc, char* argv[]) { using namespace std::literals; + signal(SIGINT, utils::SignalCallbackHandler); + signal(SIGTERM, utils::SignalCallbackHandler); + +#if ZEN_PLATFORM_LINUX + IgnoreChildSignals(); +#endif + try { typename Main::Config ServerOptions; @@ -227,26 +232,49 @@ main(int argc, char* argv[]) #endif // ZEN_PLATFORM_WINDOWS using namespace zen; + using namespace std::literals; + + auto _ = zen::MakeGuard([] { + // Allow some time for worker threads to unravel, in an effort + // to prevent shutdown races in TLS object destruction + WaitForThreads(1000); + }); + + enum + { + kHub, + kStore, + kTest + } ServerMode = kStore; if (argc >= 2) { - if (argv[1] == "test"sv) + if (argv[1] == "hub"sv) { + ServerMode = kHub; + } + else if (argv[1] == "store"sv) + { + ServerMode = kStore; + } + else if (argv[1] == "test"sv) + { + ServerMode = kTest; + } + } + + switch (ServerMode) + { + case kTest: #if ZEN_WITH_TESTS return test_main(argc, argv); #else fprintf(stderr, "test option not available in release mode!\n"); exit(5); #endif - } + break; + default: + case kStore: + return AppMain(argc, argv); } - - signal(SIGINT, utils::SignalCallbackHandler); - signal(SIGTERM, utils::SignalCallbackHandler); - -#if ZEN_PLATFORM_LINUX - IgnoreChildSignals(); -#endif - - return AppMain(argc, argv); } -- cgit v1.2.3 From e8d162c293fbdf9a40a1369b60b80fa286aceb0f Mon Sep 17 00:00:00 2001 From: Stefan Boberg Date: Wed, 21 Jan 2026 09:38:16 +0100 Subject: zen hub (#574) Initial implementation of zenserver "hub" mode. This is an experimental feature. zenserver can be started in hub mode by specifying `hub` as the first argument to zenserver --- src/zenserver/main.cpp | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src/zenserver/main.cpp') diff --git a/src/zenserver/main.cpp b/src/zenserver/main.cpp index 78bce7d06..996f96da8 100644 --- a/src/zenserver/main.cpp +++ b/src/zenserver/main.cpp @@ -25,6 +25,8 @@ #include "storage/storageconfig.h" #include "storage/zenstorageserver.h" +#include "hub/zenhubserver.h" + #if ZEN_PLATFORM_WINDOWS # include # include @@ -273,6 +275,8 @@ main(int argc, char* argv[]) exit(5); #endif break; + case kHub: + return AppMain(argc, argv); default: case kStore: return AppMain(argc, argv); -- cgit v1.2.3 From a735026f7376456eba7fb55e0c70c3353ea9c25a Mon Sep 17 00:00:00 2001 From: Dan Engelbrecht Date: Thu, 22 Jan 2026 12:56:08 +0100 Subject: hotfix 5.7.18 (#730) * make sure we properly convert command line args for zenserver as well * make sure we *add* wildcards/excludes in addition to defaults --- src/zenserver/main.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'src/zenserver/main.cpp') diff --git a/src/zenserver/main.cpp b/src/zenserver/main.cpp index 996f96da8..3a58d1f4a 100644 --- a/src/zenserver/main.cpp +++ b/src/zenserver/main.cpp @@ -19,6 +19,7 @@ #include #include #include +#include #include #include "diag/logging.h" @@ -195,12 +196,12 @@ AppMain(int argc, char* argv[]) } catch (const AssertException& AssertEx) { - fprintf(stderr, ZEN_APP_NAME " ERROR: Caught assert exception in main: '%s'", AssertEx.FullDescription().c_str()); + fprintf(stderr, ZEN_APP_NAME " ERROR: Caught assert exception in main: '%s'\n", AssertEx.FullDescription().c_str()); return 1; } catch (const std::exception& Ex) { - fprintf(stderr, ZEN_APP_NAME " ERROR: Caught exception in main: '%s'", Ex.what()); + fprintf(stderr, ZEN_APP_NAME " ERROR: Caught exception in main: '%s'\n", Ex.what()); return 1; } @@ -233,6 +234,8 @@ main(int argc, char* argv[]) setlocale(LC_ALL, "en_us.UTF8"); #endif // ZEN_PLATFORM_WINDOWS + zen::CommandLineConverter ArgConverter(argc, argv); + using namespace zen; using namespace std::literals; -- cgit v1.2.3