compositor: Log the full path of the config file we're using
diff --git a/shared/config-parser.c b/shared/config-parser.c
index 1cee946..e1bf212 100644
--- a/shared/config-parser.c
+++ b/shared/config-parser.c
@@ -41,69 +41,6 @@
 	const __typeof__( ((type *)0)->member ) *__mptr = (ptr);	\
 	(type *)( (char *)__mptr - offsetof(type,member) );})
 
-static int
-open_config_file(const char *name)
-{
-	const char *config_dir  = getenv("XDG_CONFIG_HOME");
-	const char *home_dir	= getenv("HOME");
-	const char *config_dirs = getenv("XDG_CONFIG_DIRS");
-	char path[PATH_MAX];
-	const char *p, *next;
-	int fd;
-
-	if (name[0] == '/')
-		return open(name, O_RDONLY | O_CLOEXEC);
-
-	/* Precedence is given to config files in the home directory,
-	 * and then to directories listed in XDG_CONFIG_DIRS and
-	 * finally to the current working directory. */
-
-	/* $XDG_CONFIG_HOME */
-	if (config_dir) {
-		snprintf(path, sizeof path, "%s/%s", config_dir, name);
-		fd = open(path, O_RDONLY | O_CLOEXEC);
-		if (fd >= 0)
-			return fd;
-	}
-
-	/* $HOME/.config */
-	if (home_dir) {
-		snprintf(path, sizeof path, "%s/.config/%s", home_dir, name);
-		fd = open(path, O_RDONLY | O_CLOEXEC);
-		if (fd >= 0)
-			return fd;
-	}
-
-	/* For each $XDG_CONFIG_DIRS: weston/<config_file> */
-	if (!config_dirs)
-		config_dirs = "/etc/xdg";  /* See XDG base dir spec. */
-
-	for (p = config_dirs; *p != '\0'; p = next) {
-		next = strchrnul(p, ':');
-		snprintf(path, sizeof path,
-			 "%.*s/weston/%s", (int)(next - p), p, name);
-		fd = open(path, O_RDONLY | O_CLOEXEC);
-		if (fd >= 0)
-			return fd;
-
-		if (*next == ':')
-			next++;
-	}
-
-	/* Current working directory. */
-	snprintf(path, sizeof path, "./%s", name);
-	fd = open(path, O_RDONLY | O_CLOEXEC);
-
-	if (fd >= 0)
-		fprintf(stderr,
-			"using config in current working directory: %s\n",
-			path);
-	else
-		fprintf(stderr, "config file \"%s\" not found.\n", name);
-
-	return fd;
-}
-
 struct weston_config_entry {
 	char *key;
 	char *value;
@@ -118,8 +55,66 @@
 
 struct weston_config {
 	struct wl_list section_list;
+	char path[PATH_MAX];
 };
 
+static int
+open_config_file(struct weston_config *c, const char *name)
+{
+	const char *config_dir  = getenv("XDG_CONFIG_HOME");
+	const char *home_dir	= getenv("HOME");
+	const char *config_dirs = getenv("XDG_CONFIG_DIRS");
+	const char *p, *next;
+	int fd;
+
+	if (name[0] == '/') {
+		snprintf(c->path, sizeof c->path, "%s", name);
+		return open(name, O_RDONLY | O_CLOEXEC);
+	}
+
+	/* Precedence is given to config files in the home directory,
+	 * and then to directories listed in XDG_CONFIG_DIRS and
+	 * finally to the current working directory. */
+
+	/* $XDG_CONFIG_HOME */
+	if (config_dir) {
+		snprintf(c->path, sizeof c->path, "%s/%s", config_dir, name);
+		fd = open(c->path, O_RDONLY | O_CLOEXEC);
+		if (fd >= 0)
+			return fd;
+	}
+
+	/* $HOME/.config */
+	if (home_dir) {
+		snprintf(c->path, sizeof c->path,
+			 "%s/.config/%s", home_dir, name);
+		fd = open(c->path, O_RDONLY | O_CLOEXEC);
+		if (fd >= 0)
+			return fd;
+	}
+
+	/* For each $XDG_CONFIG_DIRS: weston/<config_file> */
+	if (!config_dirs)
+		config_dirs = "/etc/xdg";  /* See XDG base dir spec. */
+
+	for (p = config_dirs; *p != '\0'; p = next) {
+		next = strchrnul(p, ':');
+		snprintf(c->path, sizeof c->path,
+			 "%.*s/weston/%s", (int)(next - p), p, name);
+		fd = open(c->path, O_RDONLY | O_CLOEXEC);
+		if (fd >= 0)
+			return fd;
+
+		if (*next == ':')
+			next++;
+	}
+
+	/* Current working directory. */
+	snprintf(c->path, sizeof c->path, "./%s", name);
+
+	return open(c->path, O_RDONLY | O_CLOEXEC);
+}
+
 static struct weston_config_entry *
 config_section_get_entry(struct weston_config_section *section,
 			 const char *key)
@@ -329,7 +324,7 @@
 
 	wl_list_init(&config->section_list);
 
-	fd = open_config_file(name);
+	fd = open_config_file(config, name);
 	if (fd == -1) {
 		free(config);
 		return NULL;
@@ -387,6 +382,12 @@
 	return config;
 }
 
+const char *
+weston_config_get_full_path(struct weston_config *config)
+{
+	return config->path;
+}
+
 int
 weston_config_next_section(struct weston_config *config,
 			   struct weston_config_section **section,