From c65057ef8b03ce11d4c002ed8d1615926486b7a4 Mon Sep 17 00:00:00 2001
From: Brian Ashworth <bosrsf04@gmail.com>
Date: Tue, 5 Feb 2019 22:06:42 -0500
Subject: [PATCH] load_main_config: add realpath to config_chain

Since `load_include_config` compares against the realpath of a config
file when checking if a config has already been added, the main config's
realpath has to be added to the config_chain.
---
 sway/config.c | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/sway/config.c b/sway/config.c
index 0c23fad8..18fb69d9 100644
--- a/sway/config.c
+++ b/sway/config.c
@@ -379,6 +379,14 @@ bool load_main_config(const char *file, bool is_active, bool validating) {
 		path = get_config_path();
 	}
 
+	char *real_path = realpath(path, NULL);
+	if (real_path == NULL) {
+		sway_log(SWAY_DEBUG, "%s not found.", path);
+		free(path);
+		return false;
+	}
+	free(path);
+
 	struct sway_config *old_config = config;
 	config = calloc(1, sizeof(struct sway_config));
 	if (!config) {
@@ -401,8 +409,8 @@ bool load_main_config(const char *file, bool is_active, bool validating) {
 		input_manager_reset_all_inputs();
 	}
 
-	config->current_config_path = path;
-	list_add(config->config_chain, path);
+	config->current_config_path = real_path;
+	list_add(config->config_chain, real_path);
 
 	config->reading = true;
 
@@ -454,7 +462,7 @@ bool load_main_config(const char *file, bool is_active, bool validating) {
 	}
 	*/
 
-	success = success && load_config(path, config,
+	success = success && load_config(real_path, config,
 			&config->swaynag_config_errors);
 
 	if (validating) {