mirror of
https://github.com/swaywm/sway.git
synced 2025-03-03 14:14:44 +01:00
Fix includes with relative paths
The function `load_include_configs` already changes the directory to the one containing the parent config. Therefore, `load_include_config` trying to assemble the "full" path leads to repetition of path segments, making the `realpath` call fail with ENOENT. Just calling `realpath` on the path itself from the directory with the parent configuration is sufficient, so there is no point in passing `parent_dir` to `load_include_config`.
This commit is contained in:
parent
2686afb95c
commit
410dab6803
1 changed files with 4 additions and 20 deletions
|
@ -549,28 +549,12 @@ bool load_main_config(const char *file, bool is_active, bool validating) {
|
||||||
return success;
|
return success;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool load_include_config(const char *path, const char *parent_dir,
|
static bool load_include_config(const char *path, struct sway_config *config,
|
||||||
struct sway_config *config, struct swaynag_instance *swaynag) {
|
struct swaynag_instance *swaynag) {
|
||||||
// save parent config
|
// save parent config
|
||||||
const char *parent_config = config->current_config_path;
|
const char *parent_config = config->current_config_path;
|
||||||
|
|
||||||
char *full_path;
|
char *real_path = realpath(path, NULL);
|
||||||
int len = strlen(path);
|
|
||||||
if (len >= 1 && path[0] != '/') {
|
|
||||||
len = len + strlen(parent_dir) + 2;
|
|
||||||
full_path = malloc(len * sizeof(char));
|
|
||||||
if (!full_path) {
|
|
||||||
sway_log(SWAY_ERROR,
|
|
||||||
"Unable to allocate full path to included config");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
snprintf(full_path, len, "%s/%s", parent_dir, path);
|
|
||||||
} else {
|
|
||||||
full_path = strdup(path);
|
|
||||||
}
|
|
||||||
|
|
||||||
char *real_path = realpath(full_path, NULL);
|
|
||||||
free(full_path);
|
|
||||||
|
|
||||||
if (real_path == NULL) {
|
if (real_path == NULL) {
|
||||||
sway_log(SWAY_DEBUG, "%s not found.", path);
|
sway_log(SWAY_DEBUG, "%s not found.", path);
|
||||||
|
@ -622,7 +606,7 @@ void load_include_configs(const char *path, struct sway_config *config,
|
||||||
char **w = p.we_wordv;
|
char **w = p.we_wordv;
|
||||||
size_t i;
|
size_t i;
|
||||||
for (i = 0; i < p.we_wordc; ++i) {
|
for (i = 0; i < p.we_wordc; ++i) {
|
||||||
load_include_config(w[i], parent_dir, config, swaynag);
|
load_include_config(w[i], config, swaynag);
|
||||||
}
|
}
|
||||||
wordfree(&p);
|
wordfree(&p);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue