From 930245d7ffde91464865122a82437209680458c8 Mon Sep 17 00:00:00 2001
From: nicm <nicm>
Date: Sat, 25 May 2019 06:58:10 +0000
Subject: [PATCH] Make cmd_log_argv take a printf-like format for the prefix.

---
 cmd.c   | 19 +++++++++++++------
 spawn.c |  2 +-
 tmux.h  |  2 +-
 3 files changed, 15 insertions(+), 8 deletions(-)

diff --git a/cmd.c b/cmd.c
index 8736a6c7..ee443614 100644
--- a/cmd.c
+++ b/cmd.c
@@ -205,13 +205,20 @@ const struct cmd_entry *cmd_table[] = {
 	NULL
 };
 
-void
-cmd_log_argv(int argc, char **argv, const char *prefix)
+void printflike(3, 4)
+cmd_log_argv(int argc, char **argv, const char *fmt, ...)
 {
-	int	i;
+	char	*prefix;
+	va_list	 ap;
+	int	 i;
+
+	va_start(ap, fmt);
+	xvasprintf(&prefix, fmt, ap);
+	va_end(ap);
 
 	for (i = 0; i < argc; i++)
 		log_debug("%s: argv[%d]=%s", prefix, i, argv[i]);
+	free(prefix);
 }
 
 void
@@ -245,7 +252,7 @@ cmd_pack_argv(int argc, char **argv, char *buf, size_t len)
 
 	if (argc == 0)
 		return (0);
-	cmd_log_argv(argc, argv, __func__);
+	cmd_log_argv(argc, argv, "%s", __func__);
 
 	*buf = '\0';
 	for (i = 0; i < argc; i++) {
@@ -282,7 +289,7 @@ cmd_unpack_argv(char *buf, size_t len, int argc, char ***argv)
 		buf += arglen;
 		len -= arglen;
 	}
-	cmd_log_argv(argc, *argv, __func__);
+	cmd_log_argv(argc, *argv, "%s", __func__);
 
 	return (0);
 }
@@ -437,7 +444,7 @@ cmd_parse(int argc, char **argv, const char *file, u_int line, char **cause)
 	entry = cmd_find(name, cause);
 	if (entry == NULL)
 		return (NULL);
-	cmd_log_argv(argc, argv, entry->name);
+	cmd_log_argv(argc, argv, "%s: %s", __func__, entry->name);
 
 	args = args_parse(entry->args.template, argc, argv);
 	if (args == NULL)
diff --git a/spawn.c b/spawn.c
index 84f468e2..986a1e9d 100644
--- a/spawn.c
+++ b/spawn.c
@@ -329,7 +329,7 @@ spawn_pane(struct spawn_context *sc, char **cause)
 	}
 	if (cwd != NULL)
 		log_debug("%s: cwd=%s", __func__, cwd);
-	cmd_log_argv(new_wp->argc, new_wp->argv, __func__);
+	cmd_log_argv(new_wp->argc, new_wp->argv, "%s", __func__);
 	environ_log(child, "%s: environment ", __func__);
 
 	/* If the command is empty, don't fork a child process. */
diff --git a/tmux.h b/tmux.h
index 8f8bd902..fe4d5b90 100644
--- a/tmux.h
+++ b/tmux.h
@@ -1987,7 +1987,7 @@ int		 cmd_find_from_mouse(struct cmd_find_state *,
 int		 cmd_find_from_nothing(struct cmd_find_state *, int);
 
 /* cmd.c */
-void		 cmd_log_argv(int, char **, const char *);
+void printflike(3, 4) cmd_log_argv(int, char **, const char *, ...);
 void		 cmd_prepend_argv(int *, char ***, char *);
 void		 cmd_append_argv(int *, char ***, char *);
 int		 cmd_pack_argv(int, char **, char *, size_t);