feat: add -c arg for config file

This commit is contained in:
Victor Tennekes 2025-11-19 16:31:33 +01:00
parent 8e4d3b7aac
commit 75b91d64be
No known key found for this signature in database
2 changed files with 37 additions and 30 deletions

View file

@ -2943,7 +2943,7 @@ void set_default_key_bindings(Config *config) {
config->key_bindings_count += default_key_bindings_count;
}
void parse_config(void) {
void parse_config(const char *cli_config_file) {
char filename[1024];
@ -2989,30 +2989,34 @@ void parse_config(void) {
create_config_keymap();
// 获取 MANGOCONFIG 环境变量
const char *mangoconfig = getenv("MANGOCONFIG");
// 如果 MANGOCONFIG 环境变量不存在或为空,则使用 HOME 环境变量
if (!mangoconfig || mangoconfig[0] == '\0') {
// 获取当前用户家目录
const char *homedir = getenv("HOME");
if (!homedir) {
// 如果获取失败,则无法继续
return;
}
// 构建日志文件路径
snprintf(filename, sizeof(filename), "%s/.config/mango/config.conf",
homedir);
// 检查文件是否存在
if (access(filename, F_OK) != 0) {
// 如果文件不存在,则使用 /etc/mango/config.conf
snprintf(filename, sizeof(filename), "%s/mango/config.conf",
SYSCONFDIR);
}
if (cli_config_path != NULL) {
snprintf(filename, sizeof(filename), "%s", cli_config_path);
} else {
// 使用 MANGOCONFIG 环境变量作为配置文件夹路径
snprintf(filename, sizeof(filename), "%s/config.conf", mangoconfig);
// 获取 MANGOCONFIG 环境变量
const char *mangoconfig = getenv("MANGOCONFIG");
// 如果 MANGOCONFIG 环境变量不存在或为空,则使用 HOME 环境变量
if (!mangoconfig || mangoconfig[0] == '\0') {
// 获取当前用户家目录
const char *homedir = getenv("HOME");
if (!homedir) {
// 如果获取失败,则无法继续
return;
}
// 构建日志文件路径
snprintf(filename, sizeof(filename), "%s/.config/mango/config.conf",
homedir);
// 检查文件是否存在
if (access(filename, F_OK) != 0) {
// 如果文件不存在,则使用 /etc/mango/config.conf
snprintf(filename, sizeof(filename), "%s/mango/config.conf",
SYSCONFDIR);
}
} else {
// 使用 MANGOCONFIG 环境变量作为配置文件夹路径
snprintf(filename, sizeof(filename), "%s/config.conf", mangoconfig);
}
}
set_value_default();