tests: Add option --cancel to run-encrypt.
* tests/run-encrypt.c (cancel_after_progress): New. (progress_cb): Take care of it. (main): Add option --cancel. -- This tool may now be used to test gpgme_cancel_async. Releated to GnuPG-bug-id: 6534
This commit is contained in:
parent
eb68948c43
commit
8796456d23
@ -36,6 +36,7 @@
|
|||||||
|
|
||||||
|
|
||||||
static int verbose;
|
static int verbose;
|
||||||
|
static int cancel_after_progress;
|
||||||
|
|
||||||
|
|
||||||
static char *
|
static char *
|
||||||
@ -63,7 +64,10 @@ status_cb (void *opaque, const char *keyword, const char *value)
|
|||||||
static void
|
static void
|
||||||
progress_cb (void *opaque, const char *what, int type, int current, int total)
|
progress_cb (void *opaque, const char *what, int type, int current, int total)
|
||||||
{
|
{
|
||||||
(void)opaque;
|
static int count;
|
||||||
|
gpgme_ctx_t ctx = opaque;
|
||||||
|
gpg_error_t err;
|
||||||
|
|
||||||
(void)type;
|
(void)type;
|
||||||
|
|
||||||
if (total)
|
if (total)
|
||||||
@ -73,6 +77,19 @@ progress_cb (void *opaque, const char *what, int type, int current, int total)
|
|||||||
else
|
else
|
||||||
fprintf (stderr, "progress for '%s' %d\n", nonnull(what), current);
|
fprintf (stderr, "progress for '%s' %d\n", nonnull(what), current);
|
||||||
fflush (stderr);
|
fflush (stderr);
|
||||||
|
count++;
|
||||||
|
if (cancel_after_progress && count > cancel_after_progress)
|
||||||
|
{
|
||||||
|
err = gpgme_cancel_async (ctx);
|
||||||
|
if (err)
|
||||||
|
fprintf (stderr, "gpgme_cancel failed: %s <%s>\n",
|
||||||
|
gpg_strerror (err), gpg_strsource (err));
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fprintf (stderr, "operation canceled\n");
|
||||||
|
cancel_after_progress = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -136,6 +153,7 @@ show_usage (int ex)
|
|||||||
" --archive encrypt given file or directory into an archive\n"
|
" --archive encrypt given file or directory into an archive\n"
|
||||||
" --directory DIR switch to directory DIR before encrypting into an archive\n"
|
" --directory DIR switch to directory DIR before encrypting into an archive\n"
|
||||||
" --diagnostics print diagnostics\n"
|
" --diagnostics print diagnostics\n"
|
||||||
|
" --cancel N cancel after N progress lines\n"
|
||||||
, stderr);
|
, stderr);
|
||||||
exit (ex);
|
exit (ex);
|
||||||
}
|
}
|
||||||
@ -281,6 +299,14 @@ main (int argc, char **argv)
|
|||||||
diagnostics = 1;
|
diagnostics = 1;
|
||||||
argc--; argv++;
|
argc--; argv++;
|
||||||
}
|
}
|
||||||
|
else if (!strcmp (*argv, "--cancel"))
|
||||||
|
{
|
||||||
|
argc--; argv++;
|
||||||
|
if (!argc)
|
||||||
|
show_usage (1);
|
||||||
|
cancel_after_progress = atoi (*argv);
|
||||||
|
argc--; argv++;
|
||||||
|
}
|
||||||
else if (!strncmp (*argv, "--", 2))
|
else if (!strncmp (*argv, "--", 2))
|
||||||
show_usage (1);
|
show_usage (1);
|
||||||
|
|
||||||
@ -300,8 +326,8 @@ main (int argc, char **argv)
|
|||||||
gpgme_set_status_cb (ctx, status_cb, NULL);
|
gpgme_set_status_cb (ctx, status_cb, NULL);
|
||||||
gpgme_set_ctx_flag (ctx, "full-status", "1");
|
gpgme_set_ctx_flag (ctx, "full-status", "1");
|
||||||
}
|
}
|
||||||
if (print_progress)
|
if (print_progress || cancel_after_progress)
|
||||||
gpgme_set_progress_cb (ctx, progress_cb, NULL);
|
gpgme_set_progress_cb (ctx, progress_cb, ctx);
|
||||||
if (use_loopback)
|
if (use_loopback)
|
||||||
{
|
{
|
||||||
gpgme_set_pinentry_mode (ctx, GPGME_PINENTRY_MODE_LOOPBACK);
|
gpgme_set_pinentry_mode (ctx, GPGME_PINENTRY_MODE_LOOPBACK);
|
||||||
|
Loading…
Reference in New Issue
Block a user