Skip to content

Commit ee4e225

Browse files
peffgitster
authored andcommitted
run-command: document use_shell option
It's unclear how run-command's use_shell option should impact the arguments fed to a command. Plausibly it could mean that we glue all of the arguments together into a string to pass to the shell, in which case that opens the question of whether the caller needs to quote them. But in fact we don't implement it that way (and even if we did, we'd probably auto-quote the arguments as part of the glue step). And we must not receive quoted arguments, because we might actually optimize out the shell entirely (i.e., the caller does not even know if a shell will be involved in the end or not). Since this ambiguity may have been the cause of a recent bug, let's document the option a bit. Signed-off-by: Jeff King <[email protected]> Reviewed-by: Taylor Blau <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 71ca53e commit ee4e225

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

run-command.h

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,8 +126,15 @@ struct child_process {
126126
*/
127127
unsigned silent_exec_failure:1;
128128

129-
unsigned stdout_to_stderr:1;
129+
/**
130+
* Run the command from argv[0] using a shell (but note that we may
131+
* still optimize out the shell call if the command contains no
132+
* metacharacters). Note that further arguments to the command in
133+
* argv[1], etc, do not need to be shell-quoted.
134+
*/
130135
unsigned use_shell:1;
136+
137+
unsigned stdout_to_stderr:1;
131138
unsigned clean_on_exit:1;
132139
unsigned wait_after_clean:1;
133140
void (*clean_on_exit_handler)(struct child_process *process);

0 commit comments

Comments
 (0)