diff options
Diffstat (limited to 't/helper/test-fake-ssh.c')
| -rw-r--r-- | t/helper/test-fake-ssh.c | 30 | 
1 files changed, 30 insertions, 0 deletions
diff --git a/t/helper/test-fake-ssh.c b/t/helper/test-fake-ssh.c new file mode 100644 index 0000000000..12beee99ad --- /dev/null +++ b/t/helper/test-fake-ssh.c @@ -0,0 +1,30 @@ +#include "git-compat-util.h" +#include "run-command.h" +#include "strbuf.h" + +int cmd_main(int argc, const char **argv) +{ +	const char *trash_directory = getenv("TRASH_DIRECTORY"); +	struct strbuf buf = STRBUF_INIT; +	FILE *f; +	int i; +	const char *child_argv[] = { NULL, NULL }; + +	/* First, print all parameters into $TRASH_DIRECTORY/ssh-output */ +	if (!trash_directory) +		die("Need a TRASH_DIRECTORY!"); +	strbuf_addf(&buf, "%s/ssh-output", trash_directory); +	f = fopen(buf.buf, "w"); +	if (!f) +		die("Could not write to %s", buf.buf); +	for (i = 0; i < argc; i++) +		fprintf(f, "%s%s", i > 0 ? " " : "", i > 0 ? argv[i] : "ssh:"); +	fprintf(f, "\n"); +	fclose(f); + +	/* Now, evaluate the *last* parameter */ +	if (argc < 2) +		return 0; +	child_argv[0] = argv[argc - 1]; +	return run_command_v_opt(child_argv, RUN_USING_SHELL); +}  | 
