diff --git a/src/screen_keydef.c b/src/screen_keydef.c
index dde5ce571321e56f8aebd75500a264424775799e..31c3582e4d61de964eb242669df8c9f357a286dd 100644 (file)
--- a/src/screen_keydef.c
+++ b/src/screen_keydef.c
/* ncmpc (Ncurses MPD Client)
- * (c) 2004-2010 The Music Player Daemon Project
+ * (c) 2004-2017 The Music Player Daemon Project
* Project homepage: http://musicpd.org
*
* This program is free software; you can redistribute it and/or modify
#include "conf.h"
#include "screen.h"
#include "screen_utils.h"
+#include "options.h"
#include "Compiler.h"
#include <assert.h>
static int
save_keys(void)
{
- if (check_user_conf_dir()) {
- screen_status_printf(_("Error: Unable to create directory ~/.ncmpc - %s"),
- strerror(errno));
- screen_bell();
- return -1;
+ char *allocated = NULL;
+ const char *filename = options.key_file;
+ if (filename == NULL) {
+ if (!check_user_conf_dir()) {
+ screen_status_printf(_("Error: Unable to create directory ~/.ncmpc - %s"),
+ strerror(errno));
+ screen_bell();
+ return -1;
+ }
+
+ filename = allocated = build_user_key_binding_filename();
}
- char *filename = build_user_key_binding_filename();
FILE *f = fopen(filename, "w");
if (f == NULL) {
screen_status_printf(_("Error: %s - %s"), filename, strerror(errno));
screen_bell();
- g_free(filename);
+ g_free(allocated);
return -1;
}
if (write_key_bindings(f, KEYDEF_WRITE_HEADER))
- screen_status_printf(_("Error: %s - %s"), filename, strerror(errno));
- else
screen_status_printf(_("Wrote %s"), filename);
+ else
+ screen_status_printf(_("Error: %s - %s"), filename, strerror(errno));
- g_free(filename);
+ g_free(allocated);
return fclose(f);
}