# Conflicts: # RSYNC_COMPAT.md # src/client/client_cli.c # src/client/client_send.c # src/shared/transport_ssh.c # src/shared/transport_ssh.h # tests/integration/test_ssh.py # tests/test_client_cli.c # tests/test_transport_ssh.c
26 lines
1.4 KiB
C
26 lines
1.4 KiB
C
#ifndef TRANSPORT_SSH_H
|
|
#define TRANSPORT_SSH_H
|
|
|
|
#include "transport_tcp.h"
|
|
|
|
Client* client_connect_ssh(const char* destination, int port, const char* server_path,
|
|
bool old_args, const char* rsh_command, bool blocking_io,
|
|
char* const* remote_options, int remote_option_count);
|
|
/* Build the escaped remote-shell command string (the server program path quoted
|
|
* as one remote-shell word unless --old-args, followed by ` --stdio` and each
|
|
* --remote-option value appended as an individually single-quoted shell word).
|
|
* Every --remote-option value is individually escaped with the '\'' sequence and
|
|
* values with empty/control characters are rejected at the CLI parse layer. */
|
|
char* ssh_build_remote_command(const char* server_path, bool old_args, char* const* remote_options,
|
|
int remote_option_count);
|
|
/* Build the NULL-terminated child argv for the remote-shell client (argv[0] is
|
|
* the exec/execvp program). rsh_command is whitespace-split into leading argv
|
|
* words (NULL or "" selects the default "ssh"); the standard -o family, the
|
|
* optional -p port, the user@host and the remote command are appended. Every
|
|
* string (including argv[0]) is heap-owned; free with ssh_free_client_argv. */
|
|
char** ssh_build_client_argv(const char* rsh_command, int port, const char* userhost,
|
|
const char* remote_command);
|
|
void ssh_free_client_argv(char** argv);
|
|
|
|
#endif
|