From 0165db3552b3e19654aa89757727ee8da19f61a5 Mon Sep 17 00:00:00 2001 From: youmetme <321640253@qq.com> Date: Fri, 5 Dec 2025 15:36:48 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix:=20=E5=AF=B9=E5=8F=82=E6=95=B0=E5=A3=B0?= =?UTF-8?q?=E6=98=8E=E8=BF=9B=E8=A1=8C=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/ArgParse.h | 48 +++++++++++++++++++++++---------------------- src/ArgParse.c | 48 +++++++++++++++++++++++---------------------- src/ArgParseTools.c | 32 +++++++++++++++--------------- src/ArgParseTools.h | 44 +++++++++++++++++++++-------------------- 4 files changed, 89 insertions(+), 83 deletions(-) diff --git a/include/ArgParse.h b/include/ArgParse.h index 767aa26..0dd2c39 100644 --- a/include/ArgParse.h +++ b/include/ArgParse.h @@ -118,9 +118,9 @@ void argParseAutoHelp(ArgParse *argParse); * @return Command* 命令指针 */ Command *argParseAddCommand(ArgParse *argParse, - char *name, - char *help, - char *default_val, // 默认值 + const char *name, + const char *help, + const char *default_val, // 默认值 ArgParseCallback callback, CommandGroup *group, ArgParseValueType value_type); @@ -135,9 +135,9 @@ Command *argParseAddCommand(ArgParse *argParse, * @return Command* 子命令指针 */ Command *argParseAddSubCommand(Command *Parent, - char *name, - char *help, - char *default_val, + const char *name, + const char *help, + const char *default_val, ArgParseCallback callback, CommandGroup *group, ArgParseValueType value_type); @@ -154,10 +154,10 @@ Command *argParseAddSubCommand(Command *Parent, * @return CommandArgs* 参数指针 */ CommandArgs *argParseAddArg(Command *command, - char *short_opt, - char *long_opt, - char *help, - char *default_val, + const char *short_opt, + const char *long_opt, + const char *help, + const char *default_val, ArgParseCallback callback, bool required, ArgParseValueType value_type); @@ -174,10 +174,10 @@ CommandArgs *argParseAddArg(Command *command, * @return */ CommandArgs *argParseAddGlobalArg(ArgParse *argParse, - char *short_opt, - char *long_opt, - char *help, - char *default_val, + const char *short_opt, + const char *long_opt, + const char *help, + const char *default_val, ArgParseCallback callback, bool required, ArgParseValueType value_type); @@ -228,7 +228,7 @@ char **argParseGetCurCommandValues(ArgParse *argParse, int *len); * @return char* 选项值 * @return */ -char *argParseGetCurArg(ArgParse *argParse, char *opt); +char *argParseGetCurArg(ArgParse *argParse, const char *opt); /** * @brief 获取当前解析到的命令参数列表,仅适用于多值参数 @@ -237,7 +237,7 @@ char *argParseGetCurArg(ArgParse *argParse, char *opt); * @param len 参数个数buffer * @return char** 参数列表 */ -char **argParseGetCurArgList(ArgParse *argParse, char *opt, int *len); +char **argParseGetCurArgList(ArgParse *argParse, const char *opt, int *len); /** * @brief 获取全局参数 @@ -245,7 +245,7 @@ char **argParseGetCurArgList(ArgParse *argParse, char *opt, int *len); * @param opt 选项名 * @return char* 选项值 */ -char *argParseGetGlobalArg(ArgParse *argParse, char *opt); +char *argParseGetGlobalArg(ArgParse *argParse, const char *opt); /** * @brief 获取全局参数列表,仅适用于多值参数 @@ -254,7 +254,7 @@ char *argParseGetGlobalArg(ArgParse *argParse, char *opt); * @param len 参数个数buffer * @return char** 参数列表 */ -char **argParseGetGlobalArgList(ArgParse *argParse, char *opt, int *len); +char **argParseGetGlobalArgList(ArgParse *argParse, const char *opt, int *len); /** * @brief 检查当前解析到的命令的某个参数是否被触发 @@ -262,7 +262,7 @@ char **argParseGetGlobalArgList(ArgParse *argParse, char *opt, int *len); * @param opt 选项名 * @return bool 是否被触发 */ -bool argParseCheckCurArgTriggered(ArgParse *argParse, char *opt); +bool argParseCheckCurArgTriggered(ArgParse *argParse, const char *opt); /** * @brief 检查当前解析到的命令是否被触发 @@ -270,7 +270,8 @@ bool argParseCheckCurArgTriggered(ArgParse *argParse, char *opt); * @param command_name 命令名 * @return bool 是否被触发 */ -bool argParseCheckCommandTriggered(ArgParse *argParse, char *command_name); +bool argParseCheckCommandTriggered(ArgParse *argParse, + const char *command_name); /** * @brief 检查全局参数是否被触发 @@ -278,7 +279,7 @@ bool argParseCheckCommandTriggered(ArgParse *argParse, char *command_name); * @param opt 选项名 * @return bool 是否被触发 */ -bool argParseCheckGlobalTriggered(ArgParse *argParse, char *opt); +bool argParseCheckGlobalTriggered(ArgParse *argParse, const char *opt); char *argParseGetVal(ArgParse *argParse); char **argParseGetValList(ArgParse *argParse, int *len); @@ -306,8 +307,9 @@ char *argParseGenerateHelp(ArgParse *argParse); * @param short_flag 是否为短选项 * @return char* 选项错误信息 */ -char * -argParseGenerateArgErrorMsg(ArgParse *argParse, char *name, bool short_flag); +char *argParseGenerateArgErrorMsg(ArgParse *argParse, + const char *name, + bool short_flag); NORETURN void argParseError(ArgParse *argParse, Command *lastCommand, diff --git a/src/ArgParse.c b/src/ArgParse.c index 7367d98..06bdc10 100644 --- a/src/ArgParse.c +++ b/src/ArgParse.c @@ -109,9 +109,9 @@ void argParseCommandAutoHelp(Command *command) { } Command *argParseAddCommand(ArgParse *argParse, - char *name, - char *help, - char *default_val, + const char *name, + const char *help, + const char *default_val, ArgParseCallback callback, CommandGroup *group, ArgParseValueType value_type) { @@ -148,9 +148,9 @@ Command *argParseAddCommand(ArgParse *argParse, * @return */ Command *argParseAddSubCommand(Command *Parent, - char *name, - char *help, - char *default_val, + const char *name, + const char *help, + const char *default_val, ArgParseCallback callback, CommandGroup *group, ArgParseValueType value_type) { @@ -179,10 +179,10 @@ Command *argParseAddSubCommand(Command *Parent, } CommandArgs *argParseAddArg(Command *command, - char *short_opt, - char *long_opt, - char *help, - char *default_val, + const char *short_opt, + const char *long_opt, + const char *help, + const char *default_val, ArgParseCallback callback, bool required, ArgParseValueType value_type) { @@ -209,10 +209,10 @@ CommandArgs *argParseAddArg(Command *command, } CommandArgs *argParseAddGlobalArg(ArgParse *argParse, - char *short_opt, - char *long_opt, - char *help, - char *default_val, + const char *short_opt, + const char *long_opt, + const char *help, + const char *default_val, ArgParseCallback callback, bool required, ArgParseValueType value_type) { @@ -649,7 +649,7 @@ char *argParseGetCurCommandName(ArgParse *argParse) { * @return char* 选项值 * @return */ -char *argParseGetCurArg(ArgParse *argParse, char *opt) { +char *argParseGetCurArg(ArgParse *argParse, const char *opt) { CommandArgs *arg = NULL; // 尝试获取当前命令的长选项参数 arg = argParseFindCommandArgs(argParse->current_command, opt, false); @@ -675,7 +675,7 @@ char *argParseGetCurArg(ArgParse *argParse, char *opt) { * @param len 参数个数buffer * @return char** 参数列表 */ -char **argParseGetCurArgList(ArgParse *argParse, char *opt, int *len) { +char **argParseGetCurArgList(ArgParse *argParse, const char *opt, int *len) { CommandArgs *arg = NULL; arg = argParseFindCommandArgs(argParse->current_command, opt, false); @@ -696,7 +696,7 @@ char **argParseGetCurArgList(ArgParse *argParse, char *opt, int *len) { * @param opt 选项名 * @return char* 选项值 */ -char *argParseGetGlobalArg(ArgParse *argParse, char *opt) { +char *argParseGetGlobalArg(ArgParse *argParse, const char *opt) { CommandArgs *arg = NULL; arg = argParseFindGlobalArgs(argParse, opt, false); @@ -750,7 +750,7 @@ char **argParseGetCurCommandValues(ArgParse *argParse, int *len) { * @param len 参数个数buffer * @return char** 参数列表 */ -char **argParseGetGlobalArgList(ArgParse *argParse, char *opt, int *len) { +char **argParseGetGlobalArgList(ArgParse *argParse, const char *opt, int *len) { CommandArgs *arg = NULL; arg = argParseFindGlobalArgs(argParse, opt, false); @@ -833,7 +833,7 @@ char *argParseGenerateHelpForCommand(Command *command) { } // 检查全局参数是否被触发 -bool argParseCheckGlobalTriggered(ArgParse *argParse, char *opt) { +bool argParseCheckGlobalTriggered(ArgParse *argParse, const char *opt) { CommandArgs *arg = NULL; arg = argParseFindGlobalArgs(argParse, opt, false); @@ -847,7 +847,7 @@ bool argParseCheckGlobalTriggered(ArgParse *argParse, char *opt) { return arg->is_trigged; } // 检测当前命令的某项参数是否被触发 -bool argParseCheckCurArgTriggered(ArgParse *argParse, char *opt) { +bool argParseCheckCurArgTriggered(ArgParse *argParse, const char *opt) { CommandArgs *arg = NULL; arg = argParseFindCommandArgs(argParse->current_command, opt, false); @@ -861,7 +861,8 @@ bool argParseCheckCurArgTriggered(ArgParse *argParse, char *opt) { return arg->is_trigged; } // 检测指定命令是否被触发 -bool argParseCheckCommandTriggered(ArgParse *argParse, char *command_name) { +bool argParseCheckCommandTriggered(ArgParse *argParse, + const char *command_name) { Command *command = argParseFindCommand(argParse, command_name); if (command == NULL) { return false; @@ -923,8 +924,9 @@ NORETURN void argParseError(ArgParse *argParse, exit(1); } -char * -argParseGenerateArgErrorMsg(ArgParse *argParse, char *name, bool short_flag) { +char *argParseGenerateArgErrorMsg(ArgParse *argParse, + const char *name, + bool short_flag) { if (argParse == NULL) { return NULL; } diff --git a/src/ArgParseTools.c b/src/ArgParseTools.c index e6fcb86..cf1c59e 100644 --- a/src/ArgParseTools.c +++ b/src/ArgParseTools.c @@ -11,7 +11,7 @@ * @param str 字符串 * @return 复制后的字符串内存指针 */ -char *stringNewCopy(char *str) { +char *stringNewCopy(const char *str) { if (str == NULL) { return NULL; } @@ -24,9 +24,9 @@ char *stringNewCopy(char *str) { } // 构造命令 -Command *createCommand(char *name, - char *help, - char *default_val, +Command *createCommand(const char *name, + const char *help, + const char *default_val, ArgParseCallback callback, CommandGroup *group, ArgParseValueType value_typ) { @@ -83,7 +83,7 @@ ArgType checkArgType(char *arg) { } // 寻找命令 -Command *argParseFindCommand(ArgParse *argParse, char *name) { +Command *argParseFindCommand(ArgParse *argParse, const char *name) { for (size_t i = 0; i < argParse->commands_len; i++) { if (strcmp(argParse->commands[i]->name, name) == 0) { return argParse->commands[i]; @@ -92,7 +92,7 @@ Command *argParseFindCommand(ArgParse *argParse, char *name) { return NULL; } -Command *argParseFindSubCommand(Command *command, char *name) { +Command *argParseFindSubCommand(Command *command, const char *name) { for (size_t i = 0; i < command->sub_commands_len; i++) { if (strcmp(command->sub_commands[i]->name, name) == 0) { return command->sub_commands[i]; @@ -101,10 +101,10 @@ Command *argParseFindSubCommand(Command *command, char *name) { return NULL; } -CommandArgs *createCommandArgs(char *short_opt, - char *long_opt, - char *default_val, - char *help, +CommandArgs *createCommandArgs(const char *short_opt, + const char *long_opt, + const char *default_val, + const char *help, ArgParseCallback callback, bool required, ArgParseValueType value_type) { @@ -133,7 +133,7 @@ CommandArgs *createCommandArgs(char *short_opt, } CommandArgs * -argParseFindCommandArgs(Command *command, char *name, bool short_flag) { +argParseFindCommandArgs(Command *command, const char *name, bool short_flag) { if (command == NULL) { return NULL; } @@ -155,7 +155,7 @@ argParseFindCommandArgs(Command *command, char *name, bool short_flag) { } CommandArgs * -argParseFindGlobalArgs(ArgParse *argParse, char *name, bool short_flag) { +argParseFindGlobalArgs(ArgParse *argParse, const char *name, bool short_flag) { for (size_t i = 0; i < argParse->global_args_len; i++) { if (short_flag) { if (argParse->global_args[i]->short_opt != NULL && @@ -178,7 +178,7 @@ argParseFindGlobalArgs(ArgParse *argParse, char *name, bool short_flag) { * @param val 值 * @return 成功返回true,失败返回false */ -bool argParseSetArgVal(CommandArgs *args, char *val) { +bool argParseSetArgVal(CommandArgs *args, const char *val) { if (args->value_type == ArgParseMULTIVALUE) { // 多值 args->val = realloc(args->val, (args->val_len + 1) * sizeof(char *)); if (args->val == NULL) { @@ -212,7 +212,7 @@ bool argParseSetArgVal(CommandArgs *args, char *val) { return false; } -bool argParseSetCommandVal(Command *command, char *val) { +bool argParseSetCommandVal(Command *command, const char *val) { if (command->value_type == ArgParseMULTIVALUE) { // 多值 command->val = realloc(command->val, (command->val_len + 1) * sizeof(char *)); @@ -252,7 +252,7 @@ bool argParseSetCommandVal(Command *command, char *val) { * @param val 值 * @return 成功返回true,失败返回false */ -bool argParseSetVal(ArgParse *argParse, char *val) { +bool argParseSetVal(ArgParse *argParse, const char *val) { if (argParse->value_type == ArgParseMULTIVALUE) { // 多值 argParse->val = @@ -287,7 +287,7 @@ bool argParseSetVal(ArgParse *argParse, char *val) { return false; } -size_t __getStrlen(char *str) { +size_t __getStrlen(const char *str) { if (str == NULL) { return 0; } diff --git a/src/ArgParseTools.h b/src/ArgParseTools.h index 82e0837..1b90d70 100644 --- a/src/ArgParseTools.h +++ b/src/ArgParseTools.h @@ -16,22 +16,23 @@ typedef enum { BAD, // 错误 } ArgType; -Command *createCommand(char *name, - char *help, - char *default_val, +Command *createCommand(const char *name, + const char *help, + const char *default_val, ArgParseCallback callback, CommandGroup *group, ArgParseValueType value_type); // 创建命令 -CommandGroup *createCommandGroup(char *name, char *help); // 创建命令组 +CommandGroup *createCommandGroup(const char *name, + const char *help); // 创建命令组 CommandGroup *addCommandToGroup(CommandGroup *group, Command *command); // 添加命令到命令组 -CommandArgs *createCommandArgs(char *short_opt, - char *long_opt, - char *default_val, - char *help, +CommandArgs *createCommandArgs(const char *short_opt, + const char *long_opt, + const char *default_val, + const char *help, ArgParseCallback callback, bool required, ArgParseValueType value_type); // 创建命令参数 @@ -42,29 +43,30 @@ CommandArgs *createCommandArgs(char *short_opt, * @param val 值 * @return 成功返回true,失败返回false */ -bool argParseSetArgVal(CommandArgs *args, char *val); // 设置命令参数值 +bool argParseSetArgVal(CommandArgs *args, const char *val); // 设置命令参数值 -bool argParseSetCommandVal(Command *command, char *val); // 设置命令值 +bool argParseSetCommandVal(Command *command, const char *val); // 设置命令值 -bool argParseSetVal(ArgParse *argParse, char *val); // 设置值 +bool argParseSetVal(ArgParse *argParse, const char *val); // 设置值 ArgType checkArgType(char *arg); // 检查参数类型 -Command *argParseFindCommand(ArgParse *argParse, char *name); // 查找命令 +Command *argParseFindCommand(ArgParse *argParse, const char *name); // 查找命令 -Command *argParseFindSubCommand(Command *command, char *name); // 查找子命令 +Command *argParseFindSubCommand(Command *command, + const char *name); // 查找子命令 -CommandArgs *argParseFindCommandArgs(Command *command, - char *name, - bool short_flag); // 查找命令参数 +CommandArgs *argParseFindCommandArgs(Command *command, + const char *name, + bool short_flag); // 查找命令参数 -CommandArgs *argParseFindGlobalArgs(ArgParse *argParse, - char *name, - bool short_flag); // 查找全局参数 +CommandArgs *argParseFindGlobalArgs(ArgParse *argParse, + const char *name, + bool short_flag); // 查找全局参数 -char *stringNewCopy(char *str); // 创建字符串副本 +char *stringNewCopy(const char *str); // 创建字符串副本 void __catStr(char **dst, int count, ...); // 字符串拼接 -size_t __getStrlen(char *str); // 获取字符串长度 +size_t __getStrlen(const char *str); // 获取字符串长度 #ifdef __cplusplus } From dd4b87f4f22d0dc9f3428742217fbd2844e4a567 Mon Sep 17 00:00:00 2001 From: youmetme <321640253@qq.com> Date: Tue, 9 Dec 2025 19:59:32 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix:=20=E6=9B=B4=E6=96=B0=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E5=90=8D=E7=A7=B0=E5=92=8CURL=E4=B8=BACArgParse?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- conanfile.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/conanfile.py b/conanfile.py index 9301d0c..eeedbe6 100644 --- a/conanfile.py +++ b/conanfile.py @@ -4,12 +4,12 @@ from conan.tools.files import copy import os -class loggingRecipe(ConanFile): +class CArgParseRecipe(ConanFile): name = "cargparse" version = "0.3.2" license = "MIT" author = "321640253@qq.com" - url = "https://gitea.youmetme.wang/youmetme/logging" + url = "https://gitea.youmetme.wang/youmetme/CArgParse" description = "C语言命令行参数解析器" topics = ( "argparse",