core: Improve code by using strconcat at two places.
* src/engine-gpgsm.c (gpgsm_export): Use _gpgme_strconcat. (gpgsm_keylist): Ditto. -- Signed-off-by: Werner Koch <wk@gnupg.org>
This commit is contained in:
parent
5cfdf878fb
commit
2a3cdb3e81
@ -1305,6 +1305,7 @@ gpgsm_delete (void *engine, gpgme_key_t key, unsigned int flags)
|
|||||||
}
|
}
|
||||||
length++;
|
length++;
|
||||||
|
|
||||||
|
/* Fixme: Ugly quoting code below - use some standard function. */
|
||||||
line = malloc (length);
|
line = malloc (length);
|
||||||
if (!line)
|
if (!line)
|
||||||
return gpg_error_from_syserror ();
|
return gpg_error_from_syserror ();
|
||||||
@ -1360,6 +1361,7 @@ set_recipients (engine_gpgsm_t gpgsm, gpgme_key_t recp[])
|
|||||||
int invalid_recipients = 0;
|
int invalid_recipients = 0;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
/* FIXME: Uyse a membuf etc to build up LINE. */
|
||||||
linelen = 10 + 40 + 1; /* "RECIPIENT " + guess + '\0'. */
|
linelen = 10 + 40 + 1; /* "RECIPIENT " + guess + '\0'. */
|
||||||
line = malloc (10 + 40 + 1);
|
line = malloc (10 + 40 + 1);
|
||||||
if (!line)
|
if (!line)
|
||||||
@ -1517,6 +1519,7 @@ gpgsm_export (void *engine, const char *pattern, gpgme_export_mode_t mode,
|
|||||||
engine_gpgsm_t gpgsm = engine;
|
engine_gpgsm_t gpgsm = engine;
|
||||||
gpgme_error_t err = 0;
|
gpgme_error_t err = 0;
|
||||||
char *cmd;
|
char *cmd;
|
||||||
|
const char *s1, *s2;
|
||||||
|
|
||||||
if (!gpgsm)
|
if (!gpgsm)
|
||||||
return gpg_error (GPG_ERR_INV_VALUE);
|
return gpg_error (GPG_ERR_INV_VALUE);
|
||||||
@ -1524,20 +1527,19 @@ gpgsm_export (void *engine, const char *pattern, gpgme_export_mode_t mode,
|
|||||||
if (!pattern)
|
if (!pattern)
|
||||||
pattern = "";
|
pattern = "";
|
||||||
|
|
||||||
cmd = malloc (7 + 9 + 9 + strlen (pattern) + 1);
|
s1 = s2 = "";
|
||||||
if (!cmd)
|
|
||||||
return gpg_error_from_syserror ();
|
|
||||||
|
|
||||||
strcpy (cmd, "EXPORT ");
|
|
||||||
if ((mode & GPGME_EXPORT_MODE_SECRET))
|
if ((mode & GPGME_EXPORT_MODE_SECRET))
|
||||||
{
|
{
|
||||||
strcat (cmd, "--secret ");
|
s1 = "--secret ";
|
||||||
if ((mode & GPGME_EXPORT_MODE_RAW))
|
if ((mode & GPGME_EXPORT_MODE_RAW))
|
||||||
strcat (cmd, "--raw ");
|
s2 = "--raw ";
|
||||||
else if ((mode & GPGME_EXPORT_MODE_PKCS12))
|
else if ((mode & GPGME_EXPORT_MODE_PKCS12))
|
||||||
strcat (cmd, "--pkcs12 ");
|
s2 = "--pkcs12 ";
|
||||||
}
|
}
|
||||||
strcat (cmd, pattern);
|
|
||||||
|
cmd = _gpgme_strconcat ("EXPORT ", s1, s2, pattern, NULL);
|
||||||
|
if (!cmd)
|
||||||
|
return gpg_error_from_syserror ();
|
||||||
|
|
||||||
gpgsm->output_cb.data = keydata;
|
gpgsm->output_cb.data = keydata;
|
||||||
err = gpgsm_set_fd (gpgsm, OUTPUT_FD, use_armor ? "--armor"
|
err = gpgsm_set_fd (gpgsm, OUTPUT_FD, use_armor ? "--armor"
|
||||||
@ -1568,6 +1570,7 @@ gpgsm_export_ext (void *engine, const char *pattern[], gpgme_export_mode_t mode,
|
|||||||
if (!gpgsm)
|
if (!gpgsm)
|
||||||
return gpg_error (GPG_ERR_INV_VALUE);
|
return gpg_error (GPG_ERR_INV_VALUE);
|
||||||
|
|
||||||
|
/*FIXME: Replace by membuf and a quoting function. */
|
||||||
if (pattern && *pattern)
|
if (pattern && *pattern)
|
||||||
{
|
{
|
||||||
const char **pat = pattern;
|
const char **pat = pattern;
|
||||||
@ -1868,21 +1871,12 @@ gpgsm_keylist (void *engine, const char *pattern, int secret_only,
|
|||||||
"OPTION offline=0" ,
|
"OPTION offline=0" ,
|
||||||
NULL, NULL);
|
NULL, NULL);
|
||||||
|
|
||||||
|
if (secret_only)
|
||||||
/* Length is "LISTSECRETKEYS " + p + '\0'. */
|
line = _gpgme_strconcat ("LISTSECRETKEYS ", pattern, NULL);
|
||||||
line = malloc (15 + strlen (pattern) + 1);
|
else
|
||||||
|
line = _gpgme_strconcat ("LISTKEYS ", pattern, NULL);
|
||||||
if (!line)
|
if (!line)
|
||||||
return gpg_error_from_syserror ();
|
return gpg_error_from_syserror ();
|
||||||
if (secret_only)
|
|
||||||
{
|
|
||||||
strcpy (line, "LISTSECRETKEYS ");
|
|
||||||
strcpy (&line[15], pattern);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
strcpy (line, "LISTKEYS ");
|
|
||||||
strcpy (&line[9], pattern);
|
|
||||||
}
|
|
||||||
|
|
||||||
gpgsm_clear_fd (gpgsm, INPUT_FD);
|
gpgsm_clear_fd (gpgsm, INPUT_FD);
|
||||||
gpgsm_clear_fd (gpgsm, OUTPUT_FD);
|
gpgsm_clear_fd (gpgsm, OUTPUT_FD);
|
||||||
@ -1943,6 +1937,7 @@ gpgsm_keylist_ext (void *engine, const char *pattern[], int secret_only,
|
|||||||
"OPTION offline=0" ,
|
"OPTION offline=0" ,
|
||||||
NULL, NULL);
|
NULL, NULL);
|
||||||
|
|
||||||
|
/* FIXME: Repalce by membuf and quoting function. */
|
||||||
if (pattern && *pattern)
|
if (pattern && *pattern)
|
||||||
{
|
{
|
||||||
const char **pat = pattern;
|
const char **pat = pattern;
|
||||||
|
Loading…
Reference in New Issue
Block a user