[svn] GnuPG - r4021 - trunk/g10
svn author dshaw
cvs at cvs.gnupg.org
Thu Feb 23 18:00:04 CET 2006
Author: dshaw
Date: 2006-02-23 18:00:02 +0100 (Thu, 23 Feb 2006)
New Revision: 4021
Modified:
trunk/g10/ChangeLog
trunk/g10/keyserver-internal.h
trunk/g10/keyserver.c
trunk/g10/options.h
Log:
* options.h, keyserver.c (add_canonical_option): New.
(parse_keyserver_options): Moved from here. (parse_keyserver_uri): Use it
here so each keyserver can have some private options in addition to the
main keyserver-options (e.g. per-keyserver auth).
Modified: trunk/g10/ChangeLog
===================================================================
--- trunk/g10/ChangeLog 2006-02-22 23:37:23 UTC (rev 4020)
+++ trunk/g10/ChangeLog 2006-02-23 17:00:02 UTC (rev 4021)
@@ -1,3 +1,11 @@
+2006-02-23 David Shaw <dshaw at jabberwocky.com>
+
+ * options.h, keyserver.c (add_canonical_option): New.
+ (parse_keyserver_options): Moved from here.
+ (parse_keyserver_uri): Use it here so each keyserver can have some
+ private options in addition to the main keyserver-options
+ (e.g. per-keyserver auth).
+
2006-02-22 David Shaw <dshaw at jabberwocky.com>
* options.h, keyserver-internal.h, keyserver.c
Modified: trunk/g10/keyserver-internal.h
===================================================================
--- trunk/g10/keyserver-internal.h 2006-02-22 23:37:23 UTC (rev 4020)
+++ trunk/g10/keyserver-internal.h 2006-02-23 17:00:02 UTC (rev 4021)
@@ -29,7 +29,8 @@
int parse_keyserver_options(char *options);
void free_keyserver_spec(struct keyserver_spec *keyserver);
-struct keyserver_spec *parse_keyserver_uri(const char *uri,int require_scheme,
+struct keyserver_spec *parse_keyserver_uri(const char *string,
+ int require_scheme,
const char *configname,
unsigned int configlineno);
struct keyserver_spec *parse_preferred_keyserver(PKT_signature *sig);
Modified: trunk/g10/keyserver.c
===================================================================
--- trunk/g10/keyserver.c 2006-02-22 23:37:23 UTC (rev 4020)
+++ trunk/g10/keyserver.c 2006-02-23 17:00:02 UTC (rev 4021)
@@ -104,6 +104,27 @@
static size_t max_cert_size=DEFAULT_MAX_CERT_SIZE;
+static void
+add_canonical_option(char *option,STRLIST *list)
+{
+ char *arg=argsplit(option);
+
+ if(arg)
+ {
+ char *joined;
+
+ joined=xmalloc(strlen(option)+1+strlen(arg)+1);
+ /* Make a canonical name=value form with no spaces */
+ strcpy(joined,option);
+ strcat(joined,"=");
+ strcat(joined,arg);
+ add_to_strlist(list,joined);
+ xfree(joined);
+ }
+ else
+ add_to_strlist(list,option);
+}
+
int
parse_keyserver_options(char *options)
{
@@ -152,23 +173,7 @@
{
/* All of the standard options have failed, so the option is
destined for a keyserver plugin. */
- char *arg=argsplit(tok);
-
- if(arg)
- {
- char *joined;
-
- joined=xmalloc(strlen(tok)+1+strlen(arg)+1);
- /* Make a canonical name=value form with no
- spaces */
- strcpy(joined,tok);
- strcat(joined,"=");
- strcat(joined,arg);
- add_to_strlist(&opt.keyserver_options.other,joined);
- xfree(joined);
- }
- else
- add_to_strlist(&opt.keyserver_options.other,tok);
+ add_canonical_option(tok,&opt.keyserver_options.other);
}
}
@@ -193,6 +198,7 @@
xfree(keyserver->port);
xfree(keyserver->path);
xfree(keyserver->opaque);
+ free_strlist(keyserver->options);
xfree(keyserver);
}
@@ -201,18 +207,33 @@
keyserver/ksutil.c for limited use in gpgkeys_ldap or the like. */
struct keyserver_spec *
-parse_keyserver_uri(const char *uri,int require_scheme,
+parse_keyserver_uri(const char *string,int require_scheme,
const char *configname,unsigned int configlineno)
{
int assume_hkp=0;
struct keyserver_spec *keyserver;
const char *idx;
int count;
+ char *uri,*options;
- assert(uri!=NULL);
+ assert(string!=NULL);
keyserver=xmalloc_clear(sizeof(struct keyserver_spec));
+ uri=xstrdup(string);
+
+ options=strchr(uri,' ');
+ if(options)
+ {
+ char *tok;
+
+ *options='\0';
+ options++;
+
+ while((tok=optsep(&options)))
+ add_canonical_option(tok,&keyserver->options);
+ }
+
/* Get the scheme */
for(idx=uri,count=0;*idx && *idx!=':';idx++)
@@ -1038,6 +1059,9 @@
for(temp=opt.keyserver_options.other;temp;temp=temp->next)
fprintf(spawn->tochild,"OPTION %s\n",temp->d);
+ for(temp=opt.keyserver->options;temp;temp=temp->next)
+ fprintf(spawn->tochild,"OPTION %s\n",temp->d);
+
switch(action)
{
case KS_GET:
Modified: trunk/g10/options.h
===================================================================
--- trunk/g10/options.h 2006-02-22 23:37:23 UTC (rev 4020)
+++ trunk/g10/options.h 2006-02-23 17:00:02 UTC (rev 4021)
@@ -136,6 +136,7 @@
char *port;
char *path;
char *opaque;
+ STRLIST options;
struct
{
unsigned int direct_uri:1;
More information about the Gnupg-commits
mailing list