From 98868d691592add3b740396d99fd1199421b4e5e Mon Sep 17 00:00:00 2001 From: Da Shen Date: Tue, 26 May 2026 12:08:13 +0800 Subject: [PATCH 1/4] =?UTF-8?q?[0161]=20=E6=9B=B4=E6=96=B0=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.7 --- devel/0161.md | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 devel/0161.md diff --git a/devel/0161.md b/devel/0161.md new file mode 100644 index 0000000000..98b3524313 --- /dev/null +++ b/devel/0161.md @@ -0,0 +1,41 @@ +# [0161] 移除 -delete-server-data 和 -delete-databases 中的 rm -rf + +## 相关文档 +- [dddd.md](dddd.md) - 任务文档模板 + +## 任务相关的代码文件 +- `src/Mogan/Research/research.cpp` +- `src/System/Boot/init_texmacs.cpp` + +## 如何测试 + +### 确定性测试(单元测试) +```bash +xmake b stem +``` + +### 非确定性测试(文档验证) +启动 Mogan Research,验证 `-delete-server-data` 和 `-delete-databases` 参数仍能正常识别。 + +## 如何提交 + +提交前执行以下最少步骤: + +```bash +xmake b stem +``` + +## What + +移除 `-delete-server-data` 和 `-delete-databases` 两个命令行选项中对 `rm -rf` 的调用,改用项目内置的 `remove` 函数。 + +1. 将 `system("rm -rf", url("..."))` 替换为 `remove(url("...") * url_wildcard("*"))` +2. 保持命令行参数解析逻辑不变 + +## Why + +`rm -rf` 是外部 shell 命令,存在潜在安全风险,且不符合项目编码规范。Mogan 提供了跨平台的 `remove` 函数,应优先使用项目内置的文件操作接口。 + +## How + +在 `research.cpp` 中,将原本通过 `system("rm -rf", ...)` 删除目录的代码,改为使用 `remove` 函数配合 `url_wildcard("*")` 通配符来删除目录内容,与其他缓存清理选项(如 `-delete-cache`、`-delete-font-cache`)的实现方式保持一致。 From ca90e23f2437985dec03348b1531ea62d4d1ec47 Mon Sep 17 00:00:00 2001 From: Da Shen Date: Tue, 26 May 2026 12:08:17 +0800 Subject: [PATCH 2/4] =?UTF-8?q?[0161]=20=E5=B0=86=20rm=20-rf=20=E6=9B=BF?= =?UTF-8?q?=E6=8D=A2=E4=B8=BA=E9=A1=B9=E7=9B=AE=E5=86=85=E7=BD=AE=20remove?= =?UTF-8?q?=20=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.7 --- src/Mogan/Research/research.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Mogan/Research/research.cpp b/src/Mogan/Research/research.cpp index 3bc3123877..d29d6135ac 100644 --- a/src/Mogan/Research/research.cpp +++ b/src/Mogan/Research/research.cpp @@ -132,10 +132,10 @@ immediate_options (int argc, char** argv) { else if (s == "-delete-plugin-cache") remove (get_tm_cache_path () * url ("plugin_cache.scm")); else if (s == "-delete-server-data") - system ("rm -rf", url ("$TEXMACS_HOME_PATH/server")); + remove (url ("$TEXMACS_HOME_PATH/server") * url_wildcard ("*")); else if (s == "-delete-databases") { - system ("rm -rf", url ("$TEXMACS_HOME_PATH/system/database")); - system ("rm -rf", url ("$TEXMACS_HOME_PATH/users")); + remove (url ("$TEXMACS_HOME_PATH/system/database") * url_wildcard ("*")); + remove (url ("$TEXMACS_HOME_PATH/users") * url_wildcard ("*")); } #ifdef QTTEXMACS else if (s == "-headless") headless_mode= true; From 73170c8431f8ed9b9a80b2f4f29c010cfd06b19f Mon Sep 17 00:00:00 2001 From: Da Shen Date: Tue, 26 May 2026 14:07:10 +0800 Subject: [PATCH 3/4] =?UTF-8?q?[0161]=20=E7=A7=BB=E9=99=A4=E6=9C=AA?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E7=9A=84=20-delete-server-data=20=E5=92=8C?= =?UTF-8?q?=20-delete-databases=20=E9=80=89=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.7 --- src/Mogan/Research/research.cpp | 6 ------ src/System/Boot/init_texmacs.cpp | 3 +-- 2 files changed, 1 insertion(+), 8 deletions(-) diff --git a/src/Mogan/Research/research.cpp b/src/Mogan/Research/research.cpp index d29d6135ac..c2a170ed7a 100644 --- a/src/Mogan/Research/research.cpp +++ b/src/Mogan/Research/research.cpp @@ -131,12 +131,6 @@ immediate_options (int argc, char** argv) { } else if (s == "-delete-plugin-cache") remove (get_tm_cache_path () * url ("plugin_cache.scm")); - else if (s == "-delete-server-data") - remove (url ("$TEXMACS_HOME_PATH/server") * url_wildcard ("*")); - else if (s == "-delete-databases") { - remove (url ("$TEXMACS_HOME_PATH/system/database") * url_wildcard ("*")); - remove (url ("$TEXMACS_HOME_PATH/users") * url_wildcard ("*")); - } #ifdef QTTEXMACS else if (s == "-headless") headless_mode= true; #endif diff --git a/src/System/Boot/init_texmacs.cpp b/src/System/Boot/init_texmacs.cpp index aef1d38e10..8d8e5e1f6d 100644 --- a/src/System/Boot/init_texmacs.cpp +++ b/src/System/Boot/init_texmacs.cpp @@ -799,8 +799,7 @@ TeXmacs_main (int argc, char** argv) { else if ((s == "-S") || (s == "-setup") || (s == "-delete-cache") || (s == "-delete-font-cache") || (s == "-delete-style-cache") || (s == "-delete-file-cache") || (s == "-delete-doc-cache") || - (s == "-delete-plugin-cache") || (s == "-delete-server-data") || - (s == "-delete-databases") || (s == "-headless")) + (s == "-delete-plugin-cache") || (s == "-headless")) ; else if (s == "-build-manual") { if ((++i) < argc) From baa6064a15cd57493ae973449bf47c9d5f0cf536 Mon Sep 17 00:00:00 2001 From: Da Shen Date: Tue, 26 May 2026 14:09:36 +0800 Subject: [PATCH 4/4] =?UTF-8?q?[0161]=20=E6=9B=B4=E6=96=B0=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.7 --- devel/0161.md | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/devel/0161.md b/devel/0161.md index 98b3524313..1919e08855 100644 --- a/devel/0161.md +++ b/devel/0161.md @@ -1,4 +1,4 @@ -# [0161] 移除 -delete-server-data 和 -delete-databases 中的 rm -rf +# [0161] 移除未使用的 -delete-server-data 和 -delete-databases 选项 ## 相关文档 - [dddd.md](dddd.md) - 任务文档模板 @@ -15,27 +15,28 @@ xmake b stem ``` ### 非确定性测试(文档验证) -启动 Mogan Research,验证 `-delete-server-data` 和 `-delete-databases` 参数仍能正常识别。 +启动 Mogan Research,确认 `-delete-server-data` 和 `-delete-databases` 参数已不在命令行选项列表中。 ## 如何提交 提交前执行以下最少步骤: ```bash +bin/format xmake b stem ``` ## What -移除 `-delete-server-data` 和 `-delete-databases` 两个命令行选项中对 `rm -rf` 的调用,改用项目内置的 `remove` 函数。 +从代码中彻底移除 `-delete-server-data` 和 `-delete-databases` 两个命令行选项。 -1. 将 `system("rm -rf", url("..."))` 替换为 `remove(url("...") * url_wildcard("*"))` -2. 保持命令行参数解析逻辑不变 +1. 从 `src/Mogan/Research/research.cpp` 中移除对应处理逻辑 +2. 从 `src/System/Boot/init_texmacs.cpp` 的参数解析列表中移除这两个选项 ## Why -`rm -rf` 是外部 shell 命令,存在潜在安全风险,且不符合项目编码规范。Mogan 提供了跨平台的 `remove` 函数,应优先使用项目内置的文件操作接口。 +这两个选项使用了外部 `rm -rf` 命令,存在潜在安全风险,且实际未被使用。直接移除最为安全。 ## How -在 `research.cpp` 中,将原本通过 `system("rm -rf", ...)` 删除目录的代码,改为使用 `remove` 函数配合 `url_wildcard("*")` 通配符来删除目录内容,与其他缓存清理选项(如 `-delete-cache`、`-delete-font-cache`)的实现方式保持一致。 +在 `research.cpp` 中删除对应的 `else if` 分支,在 `init_texmacs.cpp` 中将这两个选项从有效参数列表中剔除。