aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Shaw <[email protected]>2005-03-16 23:46:07 +0000
committerDavid Shaw <[email protected]>2005-03-16 23:46:07 +0000
commit4f347281a9047106fa4516b191be99248761fe67 (patch)
tree59ee60580852f401e5aa983d088ea73a92a1e1ab
parent(parse_ccid_descriptor): Make SCM workaround (diff)
downloadgnupg-4f347281a9047106fa4516b191be99248761fe67.tar.gz
gnupg-4f347281a9047106fa4516b191be99248761fe67.zip
* ksutil.h, ksutil.c (ks_action_to_string): New. (free_ks_options): Only
free if options exist.
-rw-r--r--keyserver/ChangeLog3
-rw-r--r--keyserver/ksutil.c36
-rw-r--r--keyserver/ksutil.h5
3 files changed, 31 insertions, 13 deletions
diff --git a/keyserver/ChangeLog b/keyserver/ChangeLog
index e167143b5..a12acd3a3 100644
--- a/keyserver/ChangeLog
+++ b/keyserver/ChangeLog
@@ -1,5 +1,8 @@
2005-03-16 David Shaw <[email protected]>
+ * ksutil.h, ksutil.c (ks_action_to_string): New.
+ (free_ks_options): Only free if options exist.
+
* ksutil.h, ksutil.c (init_ks_options, free_ks_options,
parse_ks_options): Pull a lot of duplicated code into a single
options parser for all keyserver helpers.
diff --git a/keyserver/ksutil.c b/keyserver/ksutil.c
index 9700c0370..223f52e8b 100644
--- a/keyserver/ksutil.c
+++ b/keyserver/ksutil.c
@@ -85,13 +85,16 @@ init_ks_options(void)
void
free_ks_options(struct ks_options *opt)
{
- free(opt->host);
- free(opt->port);
- free(opt->scheme);
- free(opt->auth);
- free(opt->path);
- free(opt->ca_cert_file);
- free(opt);
+ if(opt)
+ {
+ free(opt->host);
+ free(opt->port);
+ free(opt->scheme);
+ free(opt->auth);
+ free(opt->path);
+ free(opt->ca_cert_file);
+ free(opt);
+ }
}
/* Returns 0 if we "ate" the line. Returns >0, a KEYSERVER_ error
@@ -109,11 +112,6 @@ parse_ks_options(char *line,struct ks_options *opt)
char path[URLMAX_PATH+1];
char option[MAX_OPTION+1];
-#if 0
- if(sscanf(line,"%c",&hash)==1 && hash=='#')
- continue;
-#endif
-
if(line[0]=='#')
return 0;
@@ -267,3 +265,17 @@ parse_ks_options(char *line,struct ks_options *opt)
return -1;
}
+
+const char *
+ks_action_to_string(enum ks_action action)
+{
+ switch(action)
+ {
+ case KS_UNKNOWN: return "UNKNOWN";
+ case KS_GET: return "GET";
+ case KS_SEND: return "SEND";
+ case KS_SEARCH: return "SEARCH";
+ }
+
+ return "?";
+}
diff --git a/keyserver/ksutil.h b/keyserver/ksutil.h
index 8559d8db8..3ed7b9683 100644
--- a/keyserver/ksutil.h
+++ b/keyserver/ksutil.h
@@ -59,9 +59,11 @@ struct keylist
unsigned int set_timeout(unsigned int seconds);
int register_timeout(void);
+enum ks_action {KS_UNKNOWN=0,KS_GET,KS_SEND,KS_SEARCH};
+
struct ks_options
{
- enum {KS_UNKNOWN,KS_GET,KS_SEND,KS_SEARCH} action;
+ enum ks_action action;
char *host;
char *port;
char *scheme;
@@ -83,5 +85,6 @@ struct ks_options
struct ks_options *init_ks_options(void);
void free_ks_options(struct ks_options *opt);
int parse_ks_options(char *line,struct ks_options *opt);
+const char *ks_action_to_string(enum ks_action action);
#endif /* !_KSUTIL_H_ */