From 90315917e96276883fca6e6d2c4a62f57f55fdb8 Mon Sep 17 00:00:00 2001 From: Aoran Zeng Date: Wed, 27 Aug 2025 11:53:08 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BD=BF=E7=94=A8=20`xy.enable=5Fcolor`?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/xy.h | 34 +++++++++++++++++++++++++++++----- src/chsrc-main.c | 2 +- test/xy.c | 5 ++++- 3 files changed, 34 insertions(+), 7 deletions(-) diff --git a/lib/xy.h b/lib/xy.h index b3c9944..f7bf3e3 100644 --- a/lib/xy.h +++ b/lib/xy.h @@ -58,10 +58,6 @@ #endif -/* 全局变量 */ -bool xy_enable_color = true; - -/* 由 xy_init() 赋值 */ bool xy_on_windows = false; bool xy_on_linux = false; bool xy_on_macos = false; @@ -70,6 +66,34 @@ bool xy_on_android = false; char *xy_os_devnull = NULL; +/* 全局变量 与 全局状态 */ +struct +{ + bool enable_color; + + bool on_windows; + bool on_linux; + bool on_macos; + bool on_bsd; + bool on_android; + + char *os_devnull; +} +xy = +{ + .enable_color = true, + + /* 由 xy_init() 赋值 */ + .on_windows = false, + .on_linux = false, + .on_macos = false, + .on_bsd = false, + .on_android = false, + + .os_devnull = NULL +}; + + #ifdef _WIN32 #define XY_Build_On_Windows 1 @@ -388,7 +412,7 @@ _xy_str_to_terminal_style (int style, const char *str) { char *color_fmt_str = NULL; - if (!xy_enable_color) + if (!xy.enable_color) { color_fmt_str = "%s"; goto new_str; diff --git a/src/chsrc-main.c b/src/chsrc-main.c index deb8377..65dba5c 100644 --- a/src/chsrc-main.c +++ b/src/chsrc-main.c @@ -716,7 +716,7 @@ main (int argc, char const *argv[]) else if (xy_streql (argv[i], "-no-color") || xy_streql (argv[i], "-no-colour")) { ProgMode.NoColorMode = true; - xy_enable_color = false; + xy.enable_color = false; } else if ( xy_streql (argv[i], "-h") || xy_streql (argv[i], "-help") diff --git a/test/xy.c b/test/xy.c index fcd957e..e6acc02 100644 --- a/test/xy.c +++ b/test/xy.c @@ -5,7 +5,7 @@ * Test Authors : 曾奥然 * Contributors : Mikachu2333 * Created On : <2023-08-30> - * Last Modified : <2025-08-26> + * Last Modified : <2025-08-27> * * Test xy.h * ------------------------------------------------------------*/ @@ -30,6 +30,9 @@ main (int argc, char const *argv[]) { xy_init (); + // 关闭颜色 + // xy.enable_color = false; + println (xy_os_depend_str ("Hello, Windows!", "Hello, Unix!")); println (3);