don't override port configuration with explicit argument if the url doesn't contains it it permits to .ssh/config to be honored same diff from stsp@
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
diff --git a/lib/fetch.c b/lib/fetch.c
index 4ad71dd..8ef36ea 100644
--- a/lib/fetch.c
+++ b/lib/fetch.c
@@ -90,29 +90,28 @@ dial_ssh(pid_t *fetchpid, int *fetchfd, const char *host, const char *port,
int pid, pfd[2];
char cmd[64];
char *argv[11];
- int i = 0;
+ int i = 0, j;
*fetchpid = -1;
*fetchfd = -1;
- if (port == NULL)
- port = "22";
-
- argv[0] = GOT_FETCH_PATH_SSH;
- argv[1] = "-p";
- argv[2] = (char *)port;
+ argv[i++] = GOT_FETCH_PATH_SSH;
+ if (port != NULL) {
+ argv[i++] = "-p";
+ argv[i++] = (char *)port;
+ }
if (verbosity == -1) {
- argv[3 + i++] = "-q";
+ argv[i++] = "-q";
} else {
/* ssh(1) allows up to 3 "-v" options. */
- for (i = 0; i < MIN(3, verbosity); i++)
- argv[3 + i] = "-v";
- }
- argv[3 + i] = "--";
- argv[4 + i] = (char *)host;
- argv[5 + i] = (char *)cmd;
- argv[6 + i] = (char *)path;
- argv[7 + i] = NULL;
+ for (j = 0; j < MIN(3, verbosity); j++)
+ argv[i++] = "-v";
+ }
+ argv[i++] = "--";
+ argv[i++] = (char *)host;
+ argv[i++] = (char *)cmd;
+ argv[i++] = (char *)path;
+ argv[i++] = NULL;
if (pipe(pfd) == -1)
return got_error_from_errno("pipe");