mirror of
git://git.gnupg.org/gnupg.git
synced 2025-01-08 12:44:23 +01:00
Enable readline support in --card-edit.
better cope with re-inserted cards.
This commit is contained in:
parent
e57d2a8630
commit
f27bdef888
@ -1,5 +1,9 @@
|
|||||||
2009-08-05 Werner Koch <wk@g10code.com>
|
2009-08-05 Werner Koch <wk@g10code.com>
|
||||||
|
|
||||||
|
* card-util.c: Enable readline support also in GnuPG-2.
|
||||||
|
|
||||||
|
* call-agent.c (agent_learn): Always select the card first.
|
||||||
|
|
||||||
* gpg.c: Add --key-edit alias.
|
* gpg.c: Add --key-edit alias.
|
||||||
|
|
||||||
* call-agent.c (scd_genkey_cb): Forward progress status lines.
|
* call-agent.c (scd_genkey_cb): Forward progress status lines.
|
||||||
|
@ -458,6 +458,19 @@ agent_learn (struct agent_card_info_s *info)
|
|||||||
if (rc)
|
if (rc)
|
||||||
return rc;
|
return rc;
|
||||||
|
|
||||||
|
/* Send the serialno command to initialize the connection. We don't
|
||||||
|
care about the data returned. If the card has already been
|
||||||
|
initialized, this is a very fast command. The main reason we
|
||||||
|
need to do this here is to handle a card removed case so that an
|
||||||
|
"l" command in --card-edit can be used to show ta newly inserted
|
||||||
|
card. We request the openpgp card because that is what we
|
||||||
|
expect. */
|
||||||
|
rc = assuan_transact (agent_ctx, "SCD SERIALNO openpgp",
|
||||||
|
NULL, NULL, NULL, NULL, NULL, NULL);
|
||||||
|
if (rc)
|
||||||
|
return rc;
|
||||||
|
|
||||||
|
|
||||||
memset (info, 0, sizeof *info);
|
memset (info, 0, sizeof *info);
|
||||||
rc = assuan_transact (agent_ctx, "SCD LEARN --force",
|
rc = assuan_transact (agent_ctx, "SCD LEARN --force",
|
||||||
dummy_data_cb, NULL, default_inq_cb, NULL,
|
dummy_data_cb, NULL, default_inq_cb, NULL,
|
||||||
|
@ -23,6 +23,10 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
#ifdef HAVE_LIBREADLINE
|
||||||
|
# define GNUPG_LIBREADLINE_H_INCLUDED
|
||||||
|
# include <readline/readline.h>
|
||||||
|
#endif /*HAVE_LIBREADLINE*/
|
||||||
|
|
||||||
#if GNUPG_MAJOR_VERSION != 1
|
#if GNUPG_MAJOR_VERSION != 1
|
||||||
# include "gpg.h"
|
# include "gpg.h"
|
||||||
@ -34,12 +38,8 @@
|
|||||||
#include "options.h"
|
#include "options.h"
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "keyserver-internal.h"
|
#include "keyserver-internal.h"
|
||||||
|
|
||||||
#if GNUPG_MAJOR_VERSION == 1
|
#if GNUPG_MAJOR_VERSION == 1
|
||||||
# ifdef HAVE_LIBREADLINE
|
|
||||||
# define GNUPG_LIBREADLINE_H_INCLUDED
|
|
||||||
# include <stdio.h>
|
|
||||||
# include <readline/readline.h>
|
|
||||||
# endif /*HAVE_LIBREADLINE*/
|
|
||||||
# include "cardglue.h"
|
# include "cardglue.h"
|
||||||
#else /*GNUPG_MAJOR_VERSION!=1*/
|
#else /*GNUPG_MAJOR_VERSION!=1*/
|
||||||
# include "call-agent.h"
|
# include "call-agent.h"
|
||||||
@ -1704,7 +1704,7 @@ static struct
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
#if GNUPG_MAJOR_VERSION == 1 && defined (HAVE_LIBREADLINE)
|
#ifdef HAVE_LIBREADLINE
|
||||||
|
|
||||||
/* These two functions are used by readline for command completion. */
|
/* These two functions are used by readline for command completion. */
|
||||||
|
|
||||||
@ -1737,6 +1737,7 @@ command_generator(const char *text,int state)
|
|||||||
static char **
|
static char **
|
||||||
card_edit_completion(const char *text, int start, int end)
|
card_edit_completion(const char *text, int start, int end)
|
||||||
{
|
{
|
||||||
|
(void)end;
|
||||||
/* If we are at the start of a line, we try and command-complete.
|
/* If we are at the start of a line, we try and command-complete.
|
||||||
If not, just do nothing for now. */
|
If not, just do nothing for now. */
|
||||||
|
|
||||||
@ -1747,7 +1748,7 @@ card_edit_completion(const char *text, int start, int end)
|
|||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
#endif /* GNUPG_MAJOR_VERSION == 1 && HAVE_LIBREADLINE */
|
#endif /*HAVE_LIBREADLINE*/
|
||||||
|
|
||||||
/* Menu to edit all user changeable values on an OpenPGP card. Only
|
/* Menu to edit all user changeable values on an OpenPGP card. Only
|
||||||
Key creation is not handled here. */
|
Key creation is not handled here. */
|
||||||
@ -1815,14 +1816,10 @@ card_edit (strlist_t commands)
|
|||||||
|
|
||||||
if (!have_commands)
|
if (!have_commands)
|
||||||
{
|
{
|
||||||
#if GNUPG_MAJOR_VERSION == 1
|
|
||||||
tty_enable_completion (card_edit_completion);
|
tty_enable_completion (card_edit_completion);
|
||||||
#endif
|
|
||||||
answer = cpr_get_no_help("cardedit.prompt", _("Command> "));
|
answer = cpr_get_no_help("cardedit.prompt", _("Command> "));
|
||||||
cpr_kill_prompt();
|
cpr_kill_prompt();
|
||||||
#if GNUPG_MAJOR_VERSION == 1
|
|
||||||
tty_disable_completion ();
|
tty_disable_completion ();
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
trim_spaces(answer);
|
trim_spaces(answer);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user