---
 cmd.c  |   14 ++++++++++++--
 tmux.c |    2 +-
 tmux.h |    4 +++-
 3 files changed, 16 insertions(+), 4 deletions(-)

diff --git a/cmd.c b/cmd.c
index c8e9702..083c5eb 100644
--- a/cmd.c
+++ b/cmd.c
@@ -27,7 +27,8 @@
 
 #include "tmux.h"
 
-const struct cmd_entry *cmd_table[] = {
+struct cmd_entry ** cmd_table;
+static const struct cmd_entry *cmd_table_builtin[] = {
        &cmd_attach_session_entry,
        &cmd_bind_key_entry,
        &cmd_break_pane_entry,
@@ -134,6 +135,15 @@ struct winlink     *cmd_find_window_offset(const char *, 
struct session *, int *);
 int             cmd_find_index_offset(const char *, struct session *, int *);
 struct window_pane *cmd_find_pane_offset(const char *, struct winlink *);
 
+void
+cmd_table_init(void)
+{
+  int nitems = nitems (cmd_table_builtin);
+
+  cmd_table = calloc (nitems, sizeof (struct cmd_entry *));
+  memcpy (cmd_table, cmd_table_builtin, nitems*sizeof (struct cmd_entry *));
+}
+
 int
 cmd_pack_argv(int argc, char **argv, char *buf, size_t len)
 {
@@ -209,7 +219,7 @@ cmd_free_argv(int argc, char **argv)
 struct cmd *
 cmd_parse(int argc, char **argv, const char *file, u_int line, char **cause)
 {
-       const struct cmd_entry **entryp, *entry;
+       struct cmd_entry        **entryp, *entry;
        struct cmd              *cmd;
        struct args             *args;
        char                     s[BUFSIZ];
diff --git a/tmux.c b/tmux.c
index 8ea91eb..58d585b 100644
--- a/tmux.c
+++ b/tmux.c
@@ -400,7 +400,7 @@ main(int argc, char **argv)
        /* Set process title. */
        setproctitle("%s (%s)", __progname, socket_path);
 #endif
-
+       cmd_table_init();
        /* Pass control to the client. */
        ev_base = osdep_event_init();
        exit(client_main(argc, argv, flags));
diff --git a/tmux.h b/tmux.h
index 834ac6e..42847c0 100644
--- a/tmux.h
+++ b/tmux.h
@@ -1732,6 +1732,7 @@ long long  args_strtonum(
                    struct args *, u_char, long long, long long, char **);
 
 /* cmd.c */
+void             cmd_table_init (void);
 int             cmd_pack_argv(int, char **, char *, size_t);
 int             cmd_unpack_argv(char *, size_t, int, char ***);
 char          **cmd_copy_argv(int, char *const *);
@@ -1750,7 +1751,8 @@ struct winlink    *cmd_find_pane(struct cmd_q *, const 
char *, struct session **,
                     struct window_pane **);
 char           *cmd_template_replace(const char *, const char *, int);
 const char             *cmd_get_default_path(struct cmd_q *, const char *);
-extern const struct cmd_entry *cmd_table[];
+
+extern struct cmd_entry **cmd_table;
 extern const struct cmd_entry cmd_attach_session_entry;
 extern const struct cmd_entry cmd_bind_key_entry;
 extern const struct cmd_entry cmd_break_pane_entry;
-- 
1.7.10.4


------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_mar
_______________________________________________
tmux-users mailing list
tmux-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tmux-users

Reply via email to