MCPcopy Index your code
hub / github.com/git/git / determine_ssh_variant

Function determine_ssh_variant

connect.c:1168–1213  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1166}
1167
1168static enum ssh_variant determine_ssh_variant(const char *ssh_command,
1169 int is_cmdline)
1170{
1171 enum ssh_variant ssh_variant = VARIANT_AUTO;
1172 const char *variant;
1173 char *p = NULL;
1174
1175 override_ssh_variant(&ssh_variant);
1176
1177 if (ssh_variant != VARIANT_AUTO)
1178 return ssh_variant;
1179
1180 if (!is_cmdline) {
1181 p = xstrdup(ssh_command);
1182 variant = basename(p);
1183 } else {
1184 const char **ssh_argv;
1185
1186 p = xstrdup(ssh_command);
1187 if (split_cmdline(p, &ssh_argv) > 0) {
1188 variant = basename((char *)ssh_argv[0]);
1189 /*
1190 * At this point, variant points into the buffer
1191 * referenced by p, hence we do not need ssh_argv
1192 * any longer.
1193 */
1194 free(ssh_argv);
1195 } else {
1196 free(p);
1197 return ssh_variant;
1198 }
1199 }
1200
1201 if (!strcasecmp(variant, "ssh") ||
1202 !strcasecmp(variant, "ssh.exe"))
1203 ssh_variant = VARIANT_SSH;
1204 else if (!strcasecmp(variant, "plink") ||
1205 !strcasecmp(variant, "plink.exe"))
1206 ssh_variant = VARIANT_PLINK;
1207 else if (!strcasecmp(variant, "tortoiseplink") ||
1208 !strcasecmp(variant, "tortoiseplink.exe"))
1209 ssh_variant = VARIANT_TORTOISEPLINK;
1210
1211 free(p);
1212 return ssh_variant;
1213}
1214
1215/*
1216 * Open a connection using Git's native protocol.

Callers 1

fill_ssh_argsFunction · 0.85

Calls 3

override_ssh_variantFunction · 0.85
xstrdupFunction · 0.85
split_cmdlineFunction · 0.85

Tested by

no test coverage detected