mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-02 22:46:30 +02:00
* keylist.c (list_internal_keys): Renamed from gpgsm_list_keys.
(list_external_keys): New. (gpgsm_list_keys): Dispatcher for above. * call-dirmngr.c (lookup_cb,pattern_from_strlist) (gpgsm_dirmngr_lookup): New. * server.c (option_handler): Handle new option --list-mode. (do_listkeys): Handle options and actually use the mode argument. (get_status_string): New code TRUNCATED.
This commit is contained in:
parent
4f7330e0bb
commit
ad6abe7913
7 changed files with 345 additions and 26 deletions
41
sm/server.c
41
sm/server.c
|
@ -40,6 +40,8 @@ static FILE *statusfp;
|
|||
struct server_local_s {
|
||||
ASSUAN_CONTEXT assuan_ctx;
|
||||
int message_fd;
|
||||
int list_internal;
|
||||
int list_external;
|
||||
CERTLIST recplist;
|
||||
};
|
||||
|
||||
|
@ -144,6 +146,27 @@ option_handler (ASSUAN_CONTEXT ctx, const char *key, const char *value)
|
|||
if (!opt.lc_messages)
|
||||
return ASSUAN_Out_Of_Core;
|
||||
}
|
||||
else if (!strcmp (key, "list-mode"))
|
||||
{
|
||||
int i = *value? atoi (value) : 0;
|
||||
if (!i || i == 1) /* default and mode 1 */
|
||||
{
|
||||
ctrl->server_local->list_internal = 1;
|
||||
ctrl->server_local->list_external = 0;
|
||||
}
|
||||
else if (i == 2)
|
||||
{
|
||||
ctrl->server_local->list_internal = 0;
|
||||
ctrl->server_local->list_external = 1;
|
||||
}
|
||||
else if (i == 3)
|
||||
{
|
||||
ctrl->server_local->list_internal = 1;
|
||||
ctrl->server_local->list_external = 1;
|
||||
}
|
||||
else
|
||||
return ASSUAN_Parameter_Error;
|
||||
}
|
||||
else
|
||||
return ASSUAN_Invalid_Option;
|
||||
|
||||
|
@ -491,6 +514,7 @@ do_listkeys (ASSUAN_CONTEXT ctx, char *line, int mode)
|
|||
FILE *fp = assuan_get_data_fp (ctx);
|
||||
char *p;
|
||||
STRLIST list, sl;
|
||||
unsigned int listmode;
|
||||
|
||||
if (!fp)
|
||||
return set_error (General_Error, "no data stream");
|
||||
|
@ -519,7 +543,12 @@ do_listkeys (ASSUAN_CONTEXT ctx, char *line, int mode)
|
|||
}
|
||||
|
||||
ctrl->with_colons = 1;
|
||||
gpgsm_list_keys (assuan_get_pointer (ctx), list, fp, 3);
|
||||
listmode = mode;
|
||||
if (ctrl->server_local->list_internal)
|
||||
listmode |= (1<<6);
|
||||
if (ctrl->server_local->list_external)
|
||||
listmode |= (1<<7);
|
||||
gpgsm_list_keys (assuan_get_pointer (ctx), list, fp, listmode);
|
||||
free_strlist (list);
|
||||
return 0;
|
||||
}
|
||||
|
@ -654,6 +683,8 @@ gpgsm_server (void)
|
|||
ctrl.server_local = xcalloc (1, sizeof *ctrl.server_local);
|
||||
ctrl.server_local->assuan_ctx = ctx;
|
||||
ctrl.server_local->message_fd = -1;
|
||||
ctrl.server_local->list_internal = 1;
|
||||
ctrl.server_local->list_external = 0;
|
||||
|
||||
if (DBG_ASSUAN)
|
||||
assuan_set_log_stream (ctx, log_get_stream ());
|
||||
|
@ -757,6 +788,7 @@ get_status_string ( int no )
|
|||
case STATUS_ALREADY_SIGNED : s = "ALREADY_SIGNED"; break;
|
||||
case STATUS_EXPSIG : s = "EXPSIG"; break;
|
||||
case STATUS_EXPKEYSIG : s = "EXPKEYSIG"; break;
|
||||
case STATUS_TRUNCATED : s = "TRUNCATED"; break;
|
||||
default: s = "?"; break;
|
||||
}
|
||||
return s;
|
||||
|
@ -902,10 +934,3 @@ write_status_text_and_buffer ( int no, const char *string,
|
|||
fflush (statusfp);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue