diff options
author | Neal H. Walfield <[email protected]> | 2015-03-19 10:02:46 +0000 |
---|---|---|
committer | Neal H. Walfield <[email protected]> | 2015-03-23 18:58:29 +0000 |
commit | 51341badb623927f2a358588c725a356fc77dbe7 (patch) | |
tree | 0ef22daebec748e990b14edc145ee8471bd93bf7 /dirmngr/ldap-parse-uri.c | |
parent | Import _gpgme_parse_timestamp from gpgme as parse_timestamp. (diff) | |
download | gnupg-51341badb623927f2a358588c725a356fc77dbe7.tar.gz gnupg-51341badb623927f2a358588c725a356fc77dbe7.zip |
Add support to talking to LDAP key servers.
* g10/call-dirmngr.c (record_output): New function.
(ks_put_inq_cb): Use it here to generate a --with-colons like output
instead of a custom format.
* dirmngr/ks-action.c: Include "ldap-parse-uri.h".
(ks_action_help): If the provided URI is an LDAP URI, then use
ldap_parse_uri to parse. Call ks_ldap_help.
(ks_action_search): If passed an LDAP URI, then call ks_ldap_search.
(ks_action_get): Likewise.
(ks_action_put): Likewise. Also, change data from a 'const void *' to
a 'void *' and add info and infolen parameters. Add note that
function may modify DATA.
* dirmngr/ks-action.h (ks_action_put): Update declaration accordingly.
* dirmngr/server.c: Include "ldap-parse-uri.h".
(cmd_keyserver): If ITEM->URI is an LDAP URI, parse it using
ldap_parse_uri.
(hlp_ks_put): Improve documentation.
(cmd_ks_put): Also pass info and infolen to ks_action_put. Improve
documentation.
* dirmngr/ks-engine.h (ks_ldap_help): New declaration.
(ks_ldap_search): Likewise.
(ks_ldap_get): Likewise.
(ks_ldap_put): Likewise.
* dirmngr/ks-engine-ldap.c: New file.
* dirmngr/Makefile.am (dirmngr_SOURCES): Add ks-engine-ldap.c,
ldap-parse-uri.c and ldap-parse-uri.h.
(dirmngr_LDADD) [USE_LDAP]: Add $(ldaplibs).
--
Signed-off-by: Neal H. Walfield <[email protected]>
Diffstat (limited to 'dirmngr/ldap-parse-uri.c')
-rw-r--r-- | dirmngr/ldap-parse-uri.c | 37 |
1 files changed, 20 insertions, 17 deletions
diff --git a/dirmngr/ldap-parse-uri.c b/dirmngr/ldap-parse-uri.c index 4be58fdf5..2a341adf1 100644 --- a/dirmngr/ldap-parse-uri.c +++ b/dirmngr/ldap-parse-uri.c @@ -127,7 +127,7 @@ ldap_parse_uri (parsed_uri_t *purip, const char *uri) len = 0; -#define add(s) ({ if (s) len += strlen (s) + 1; }) +#define add(s) { if (s) len += strlen (s) + 1; } add (scheme); add (host); @@ -144,27 +144,30 @@ ldap_parse_uri (parsed_uri_t *purip, const char *uri) buffer = puri->buffer; -#define copy(s) \ - ({ \ - char *copy_result = NULL; \ - if (s) \ - { \ - copy_result = buffer; \ - buffer = stpcpy (buffer, s) + 1; \ - } \ - copy_result; \ - }) - - puri->scheme = ascii_strlwr (copy (scheme)); - puri->host = copy (host); - puri->path = copy (dn); - puri->auth = copy (bindname); +#define copy(to, s) \ + do \ + { \ + if (s) \ + { \ + to = buffer; \ + buffer = stpcpy (buffer, s) + 1; \ + } \ + } \ + while (0) + + copy (puri->scheme, scheme); + /* Make sure the scheme is lower case. */ + ascii_strlwr (puri->scheme); + + copy (puri->host, host); + copy (puri->path, dn); + copy (puri->auth, bindname); if (password) { puri->query = calloc (sizeof (*puri->query), 1); puri->query->name = "password"; - puri->query->value = copy (password); + copy (puri->query->value, password); puri->query->valuelen = strlen (password) + 1; } |