play: Handle empty arguments to --key-map gracefully.
[paraslash.git] / play.c
diff --git a/play.c b/play.c
index ed1c6fefb84a060458714b77388e79183bdca762..1b3cc933926da62c9c6f6914759b66f015ac61ee 100644 (file)
--- a/play.c
+++ b/play.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2012-2014 Andre Noll <maan@tuebingen.mpg.de>
+ * Copyright (C) 2012 Andre Noll <maan@tuebingen.mpg.de>
  *
  * Licensed under the GPL v2. For licencing details see COPYING.
  */
@@ -184,10 +184,10 @@ static void parse_config_or_die(int argc, char *argv[])
                loglevel = get_loglevel_by_name(conf.loglevel_arg);
        }
        for (i = 0; i < conf.key_map_given; i++) {
-               char *s = strchr(conf.key_map_arg[i] + 1, ':');
-               if (s)
+               char *kma = conf.key_map_arg[i];
+               if (*kma && strchr(kma + 1, ':'))
                        continue;
-               PARA_EMERG_LOG("invalid key map arg: %s\n", conf.key_map_arg[i]);
+               PARA_EMERG_LOG("invalid key map arg: %s\n", kma);
                goto err;
        }
        free(config_file);
@@ -633,23 +633,24 @@ static char **get_mapped_keyseqs(void)
        return result;
 }
 
-#include "play_completion.h"
+#include "play.command_list.h"
 
+typedef int play_command_handler_t(struct play_task *, int, char**);
+static play_command_handler_t PLAY_COMMAND_HANDLERS;
 
 /* defines one command of para_play */
 struct pp_command {
        const char *name;
-       int (*handler)(struct play_task *, int, char**);
+       play_command_handler_t *handler;
        const char *description;
        const char *usage;
        const char *help;
 };
 
-#include "play_command_list.h"
 static struct pp_command pp_cmds[] = {DEFINE_PLAY_CMD_ARRAY};
 #define FOR_EACH_COMMAND(c) for (c = 0; pp_cmds[c].name; c++)
 
-#include "play_completion.h"
+#include "play.completion.h"
 static struct i9e_completer pp_completers[];
 
 I9E_DUMMY_COMPLETER(jmp);