* vim:ts=4:sw=4:expandtab
*
* i3 - an improved dynamic tiling window manager
+ * © 2009-2011 Michael Stapelberg and contributors (see also: LICENSE)
*
- * © 2009-2010 Michael Stapelberg and contributors
- *
- * See file LICENSE for license information.
- *
- * src/config.c: Contains all functions handling the configuration file (calling
- * the parser (src/cfgparse.y) with the correct path, switching key bindings
- * mode).
+ * config.c: Configuration file (calling the parser (src/cfgparse.y) with the
+ * correct path, switching key bindings mode).
*
*/
+#include "all.h"
/* We need Xlib for XStringToKeysym */
#include <X11/Xlib.h>
-#include "all.h"
-
char *current_configpath = NULL;
Config config;
struct modes_head modes;
+struct barconfig_head barconfigs = TAILQ_HEAD_INITIALIZER(barconfigs);
/**
* Ungrabs all keys, to be called before re-grabbing the keys because of a
xdg_config_home = "~/.config";
xdg_config_home = resolve_tilde(xdg_config_home);
- if (asprintf(&config_path, "%s/i3/config", xdg_config_home) == -1)
- die("asprintf() failed");
+ sasprintf(&config_path, "%s/i3/config", xdg_config_home);
free(xdg_config_home);
if (path_exists(config_path))
char *tok = strtok(buf, ":");
while (tok != NULL) {
tok = resolve_tilde(tok);
- if (asprintf(&config_path, "%s/i3/config", tok) == -1)
- die("asprintf() failed");
+ sasprintf(&config_path, "%s/i3/config", tok);
free(tok);
if (path_exists(config_path)) {
free(buf);
FREE(assign);
}
+ /* Clear bar configs */
+ Barconfig *barconfig;
+ while (!TAILQ_EMPTY(&barconfigs)) {
+ barconfig = TAILQ_FIRST(&barconfigs);
+ FREE(barconfig->id);
+ for (int c = 0; c < barconfig->num_outputs; c++)
+ free(barconfig->outputs[c]);
+ FREE(barconfig->outputs);
+ FREE(barconfig->tray_output);
+ FREE(barconfig->socket_path);
+ FREE(barconfig->status_command);
+ FREE(barconfig->font);
+ FREE(barconfig->colors.background);
+ FREE(barconfig->colors.statusline);
+ FREE(barconfig->colors.focused_workspace_text);
+ FREE(barconfig->colors.focused_workspace_bg);
+ FREE(barconfig->colors.active_workspace_text);
+ FREE(barconfig->colors.active_workspace_bg);
+ FREE(barconfig->colors.inactive_workspace_text);
+ FREE(barconfig->colors.inactive_workspace_bg);
+ FREE(barconfig->colors.urgent_workspace_text);
+ FREE(barconfig->colors.urgent_workspace_bg);
+ TAILQ_REMOVE(&barconfigs, barconfig, configs);
+ FREE(barconfig);
+ }
+
/* Clear workspace names */
#if 0
Workspace *ws;