diff options
author | Nicholas Marriott <nicholas.marriott@gmail.com> | 2014-06-18 09:31:07 +0100 |
---|---|---|
committer | Nicholas Marriott <nicholas.marriott@gmail.com> | 2014-06-18 09:31:07 +0100 |
commit | 77f582ff137808cc3743ad545f63422cc8e71a71 (patch) | |
tree | 5737aa67c96dcd11d3474989889189732e374900 /cmd.c | |
parent | f5973b77763e3f8da8e8f6483464f6f4bc2f3981 (diff) | |
parent | 92af7f5901bd944e385e7fdbe8696b2c911ed776 (diff) | |
download | rtmux-77f582ff137808cc3743ad545f63422cc8e71a71.tar.gz rtmux-77f582ff137808cc3743ad545f63422cc8e71a71.tar.bz2 rtmux-77f582ff137808cc3743ad545f63422cc8e71a71.zip |
Merge branch 'master' of ssh://git.code.sf.net/p/tmux/tmux-code
Diffstat (limited to 'cmd.c')
-rw-r--r-- | cmd.c | 30 |
1 files changed, 28 insertions, 2 deletions
@@ -179,14 +179,14 @@ cmd_unpack_argv(char *buf, size_t len, int argc, char ***argv) } char ** -cmd_copy_argv(int argc, char *const *argv) +cmd_copy_argv(int argc, char **argv) { char **new_argv; int i; if (argc == 0) return (NULL); - new_argv = xcalloc(argc, sizeof *new_argv); + new_argv = xcalloc(argc + 1, sizeof *new_argv); for (i = 0; i < argc; i++) { if (argv[i] != NULL) new_argv[i] = xstrdup(argv[i]); @@ -206,6 +206,32 @@ cmd_free_argv(int argc, char **argv) free(argv); } +char * +cmd_stringify_argv(int argc, char **argv) +{ + char *buf; + int i; + size_t len; + + if (argc == 0) + return (xstrdup("")); + + len = 0; + buf = NULL; + + for (i = 0; i < argc; i++) { + len += strlen(argv[i]) + 1; + buf = xrealloc(buf, 1, len); + + if (i == 0) + *buf = '\0'; + else + strlcat(buf, " ", len); + strlcat(buf, argv[i], len); + } + return (buf); +} + struct cmd * cmd_parse(int argc, char **argv, const char *file, u_int line, char **cause) { |