aboutsummaryrefslogtreecommitdiffstats
path: root/g10/keyserver.c
diff options
context:
space:
mode:
authorDavid Shaw <[email protected]>2003-12-28 04:38:00 +0000
committerDavid Shaw <[email protected]>2003-12-28 04:38:00 +0000
commit0f346cf8c14565b8c283966a6c805a07bae13915 (patch)
tree7e91aeb29800f201120dc86aa944c3ae6a6719a7 /g10/keyserver.c
parent* main.h, misc.c (parse_options): Add a "noisy" flag to enable and disable (diff)
downloadgnupg-0f346cf8c14565b8c283966a6c805a07bae13915.tar.gz
gnupg-0f346cf8c14565b8c283966a6c805a07bae13915.zip
* keyserver.c (strip_leading_space, get_arg): New.
(parse_keyserver_options): Use them here to allow arguments to keyserver-options. Since none of our options need arguments yet, just pass them through whole to the keyserver helper.
Diffstat (limited to '')
-rw-r--r--g10/keyserver.c46
1 files changed, 45 insertions, 1 deletions
diff --git a/g10/keyserver.c b/g10/keyserver.c
index 279a4e37e..3a04cec5b 100644
--- a/g10/keyserver.c
+++ b/g10/keyserver.c
@@ -74,6 +74,33 @@ struct kopts
static int keyserver_work(int action,STRLIST list,
KEYDB_SEARCH_DESC *desc,int count);
+static void
+strip_leading_space(char **stringp)
+{
+ while(**stringp)
+ {
+ if(ascii_isspace(**stringp))
+ (*stringp)++;
+ else
+ return;
+ }
+}
+
+static char *
+get_arg(char **stringp)
+{
+ strip_leading_space(stringp);
+
+ if(**stringp=='=')
+ {
+ (*stringp)++;
+ strip_leading_space(stringp);
+ return strsep(stringp," ,");
+ }
+
+ return NULL;
+}
+
void
parse_keyserver_options(char *options)
{
@@ -127,7 +154,24 @@ parse_keyserver_options(char *options)
&&
!parse_export_options(tok,
&opt.keyserver_options.export_options,0))
- add_to_strlist(&opt.keyserver_options.other,tok);
+ {
+ char *arg;
+ if(options && (arg=get_arg(&options)))
+ {
+ char *joined;
+
+ joined=m_alloc(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);
+ m_free(joined);
+ }
+ else
+ add_to_strlist(&opt.keyserver_options.other,tok);
+ }
}
}
}