diff options
author | Nicholas Marriott <nicholas.marriott@gmail.com> | 2015-12-03 14:43:33 +0000 |
---|---|---|
committer | Nicholas Marriott <nicholas.marriott@gmail.com> | 2015-12-03 14:43:33 +0000 |
commit | 4d5cab408555341b64be10bf4fbd86a4d6415749 (patch) | |
tree | ea917586411cf24716aaec28a9d2d5a2b890c176 /cmd-list.c | |
parent | 3cdb2f0bb793b641ec07ef45b3fd485c2089d9e4 (diff) | |
parent | 66bad2e9798f191d34c083a9c2a9d644e8984b24 (diff) | |
download | rtmux-4d5cab408555341b64be10bf4fbd86a4d6415749.tar.gz rtmux-4d5cab408555341b64be10bf4fbd86a4d6415749.tar.bz2 rtmux-4d5cab408555341b64be10bf4fbd86a4d6415749.zip |
Merge branch 'master' of github.com:tmux/tmux
Diffstat (limited to 'cmd-list.c')
-rw-r--r-- | cmd-list.c | 35 |
1 files changed, 19 insertions, 16 deletions
@@ -99,25 +99,28 @@ cmd_list_free(struct cmd_list *cmdlist) free(cmdlist); } -size_t -cmd_list_print(struct cmd_list *cmdlist, char *buf, size_t len) +char * +cmd_list_print(struct cmd_list *cmdlist) { struct cmd *cmd; - size_t off, used; + char *buf, *this; + size_t len; + + len = 1; + buf = xcalloc(1, len); - off = 0; TAILQ_FOREACH(cmd, &cmdlist->list, qentry) { - if (off >= len) - break; - off += cmd_print(cmd, buf + off, len - off); - if (off >= len) - break; - if (TAILQ_NEXT(cmd, qentry) != NULL) { - used = xsnprintf(buf + off, len - off, " ; "); - if (used > len - off) - used = len - off; - off += used; - } + this = cmd_print(cmd); + + len += strlen(this) + 3; + buf = xrealloc(buf, len); + + strlcat(buf, this, len); + if (TAILQ_NEXT(cmd, qentry) != NULL) + strlcat(buf, " ; ", len); + + free(this); } - return (off); + + return (buf); } |