From 574b86b72294e4b0fd08281f4c19e013f0d9b137 Mon Sep 17 00:00:00 2001 From: Brad Morgan Date: Tue, 7 May 2013 13:53:23 -0400 Subject: [PATCH] Fixed compilation issues when libssh2 is missing --- include/git2/transport.h | 6 ++++++ src/transport.c | 13 +++++++++++-- src/transports/cred.c | 2 ++ src/transports/ssh.c | 4 ++++ 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 +#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