Make load_include_configs void. Fix some cases where WD would not be restored.
This commit is contained in:
parent
713883f04c
commit
d4b1e71b91
|
@ -513,7 +513,7 @@ bool load_main_config(const char *path, bool is_active, bool validating);
|
||||||
/**
|
/**
|
||||||
* Loads an included config. Can only be used after load_main_config.
|
* Loads an included config. Can only be used after load_main_config.
|
||||||
*/
|
*/
|
||||||
bool load_include_configs(const char *path, struct sway_config *config,
|
void load_include_configs(const char *path, struct sway_config *config,
|
||||||
struct swaynag_instance *swaynag);
|
struct swaynag_instance *swaynag);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -7,11 +7,8 @@ struct cmd_results *cmd_include(int argc, char **argv) {
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!load_include_configs(argv[0], config,
|
// We don't care if the included config(s) fails to load.
|
||||||
&config->swaynag_config_errors)) {
|
load_include_configs(argv[0], config, &config->swaynag_config_errors);
|
||||||
return cmd_results_new(CMD_INVALID,
|
|
||||||
"Failed to include sub configuration file: %s", argv[0]);
|
|
||||||
}
|
|
||||||
|
|
||||||
return cmd_results_new(CMD_SUCCESS, NULL);
|
return cmd_results_new(CMD_SUCCESS, NULL);
|
||||||
}
|
}
|
||||||
|
|
|
@ -549,43 +549,34 @@ static bool load_include_config(const char *path, const char *parent_dir,
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool load_include_configs(const char *path, struct sway_config *config,
|
void load_include_configs(const char *path, struct sway_config *config,
|
||||||
struct swaynag_instance *swaynag) {
|
struct swaynag_instance *swaynag) {
|
||||||
char *wd = getcwd(NULL, 0);
|
char *wd = getcwd(NULL, 0);
|
||||||
char *parent_path = strdup(config->current_config_path);
|
char *parent_path = strdup(config->current_config_path);
|
||||||
const char *parent_dir = dirname(parent_path);
|
const char *parent_dir = dirname(parent_path);
|
||||||
|
|
||||||
if (chdir(parent_dir) < 0) {
|
if (chdir(parent_dir) < 0) {
|
||||||
free(parent_path);
|
sway_log(SWAY_ERROR, "failed to change working directory");
|
||||||
free(wd);
|
goto cleanup;
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
wordexp_t p;
|
wordexp_t p;
|
||||||
|
if (wordexp(path, &p, 0) == 0) {
|
||||||
if (wordexp(path, &p, 0) != 0) {
|
|
||||||
free(parent_path);
|
|
||||||
free(wd);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
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], parent_dir, config, swaynag);
|
||||||
}
|
}
|
||||||
free(parent_path);
|
|
||||||
wordfree(&p);
|
wordfree(&p);
|
||||||
|
|
||||||
// restore wd
|
|
||||||
if (chdir(wd) < 0) {
|
|
||||||
free(wd);
|
|
||||||
sway_log(SWAY_ERROR, "failed to restore working directory");
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Attempt to restore working directory before returning.
|
||||||
|
if (chdir(wd) < 0) {
|
||||||
|
sway_log(SWAY_ERROR, "failed to change working directory");
|
||||||
|
}
|
||||||
|
cleanup:
|
||||||
|
free(parent_path);
|
||||||
free(wd);
|
free(wd);
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void run_deferred_commands(void) {
|
void run_deferred_commands(void) {
|
||||||
|
|
Loading…
Reference in a new issue