summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrad Morgan <brad@dmgctrl.com>2013-05-07 13:53:23 -0400
committerBrad Morgan <brad@dmgctrl.com>2013-05-07 13:56:34 -0400
commit574b86b72294e4b0fd08281f4c19e013f0d9b137 (patch)
tree47402abd674f80c0d5d6333dcd6c0275e5980fce
parentc36565c0eea7b97726cffaeaf9abe2a3279ff70b (diff)
downloadlibgit2-574b86b72294e4b0fd08281f4c19e013f0d9b137.tar.gz
Fixed compilation issues when libssh2 is missing
-rw-r--r--include/git2/transport.h6
-rw-r--r--src/transport.c13
-rw-r--r--src/transports/cred.c2
-rw-r--r--src/transports/ssh.c4
4 files changed, 23 insertions, 2 deletions
diff --git a/include/git2/transport.h b/include/git2/transport.h
index cc29f8b0e..c455e9ee0 100644
--- a/include/git2/transport.h
+++ b/include/git2/transport.h
@@ -11,7 +11,9 @@
#include "net.h"
#include "types.h"
+#ifdef GIT_SSH
#include <libssh2.h>
+#endif
/**
* @file git2/transport.h
@@ -47,6 +49,7 @@ typedef struct git_cred_userpass_plaintext {
char *password;
} git_cred_userpass_plaintext;
+#ifdef GIT_SSH
/* A ssh key file and passphrase */
typedef struct git_cred_ssh_keyfile_passphrase {
git_cred parent;
@@ -63,6 +66,7 @@ typedef struct git_cred_ssh_publickey {
void *sign_callback;
void *sign_data;
} git_cred_ssh_publickey;
+#endif
/**
* Creates a new plain-text username and password credential object.
@@ -78,6 +82,7 @@ GIT_EXTERN(int) git_cred_userpass_plaintext_new(
const char *username,
const char *password);
+#ifdef GIT_SSH
/**
* Creates a new ssh key file and passphrase credential object.
* The supplied credential parameter will be internally duplicated.
@@ -111,6 +116,7 @@ GIT_EXTERN(int) git_cred_ssh_publickey_new(
size_t publickey_len,
LIBSSH2_USERAUTH_PUBLICKEY_SIGN_FUNC((*sign_callback)),
void *sign_data);
+#endif
/**
* Signature of a function which acquires a credential object.
diff --git a/src/transport.c b/src/transport.c
index 6a8e67df6..37c244c97 100644
--- a/src/transport.c
+++ b/src/transport.c
@@ -20,20 +20,25 @@ typedef struct transport_definition {
static git_smart_subtransport_definition http_subtransport_definition = { git_smart_subtransport_http, 1 };
static git_smart_subtransport_definition git_subtransport_definition = { git_smart_subtransport_git, 0 };
+#ifdef GIT_SSH
static git_smart_subtransport_definition ssh_subtransport_definition = { git_smart_subtransport_ssh, 0 };
+#endif
static transport_definition local_transport_definition = { "file://", 1, git_transport_local, NULL };
-#ifdef GIT_WIN32
+#ifdef GIT_SSH
+static transport_definition ssh_transport_definition = { "ssh://", 1, git_transport_smart, &ssh_subtransport_definition };
+#else
static transport_definition dummy_transport_definition = { NULL, 1, git_transport_dummy, NULL };
#endif
-static transport_definition ssh_transport_definition = { "ssh://", 1, git_transport_smart, &ssh_subtransport_definition };
static transport_definition transports[] = {
{"git://", 1, git_transport_smart, &git_subtransport_definition},
{"http://", 1, git_transport_smart, &http_subtransport_definition},
{"https://", 1, git_transport_smart, &http_subtransport_definition},
{"file://", 1, git_transport_local, NULL},
+#ifdef GIT_SSH
{"ssh://", 1, git_transport_smart, &ssh_subtransport_definition},
+#endif
{NULL, 0, 0}
};
@@ -76,7 +81,11 @@ static int transport_find_fn(const char *url, git_transport_cb *callback, void *
/* It could be a SSH remote path. Check to see if there's a :
* SSH is an unsupported transport mechanism in this version of libgit2 */
if (!definition && strrchr(url, ':'))
+#ifdef GIT_SSH
definition = &ssh_transport_definition;
+#else
+ definition = &dummy_transport_definition;
+#endif
/* Check to see if the path points to a file on the local file system */
if (!definition && git_path_exists(url) && git_path_isdir(url))
diff --git a/src/transports/cred.c b/src/transports/cred.c
index 5d5e745ff..e4d205ea2 100644
--- a/src/transports/cred.c
+++ b/src/transports/cred.c
@@ -59,6 +59,7 @@ int git_cred_userpass_plaintext_new(
return 0;
}
+#ifdef GIT_SSH
static void ssh_keyfile_passphrase_free(struct git_cred *cred)
{
git_cred_ssh_keyfile_passphrase *c = (git_cred_ssh_keyfile_passphrase *)cred;
@@ -184,3 +185,4 @@ int git_cred_ssh_publickey_new(
*cred = &c->parent;
return 0;
}
+#endif
diff --git a/src/transports/ssh.c b/src/transports/ssh.c
index a1df6c492..167df03db 100644
--- a/src/transports/ssh.c
+++ b/src/transports/ssh.c
@@ -5,6 +5,8 @@
* a Linking Exception. For full terms see the included COPYING file.
*/
+#ifdef GIT_SSH
+
#include "git2.h"
#include "buffer.h"
#include "netops.h"
@@ -520,3 +522,5 @@ int git_smart_subtransport_ssh(git_smart_subtransport **out, git_transport *owne
*out = (git_smart_subtransport *) t;
return 0;
}
+
+#endif