aboutsummaryrefslogtreecommitdiffstats
path: root/tests/run-encrypt.c
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2023-06-15 09:00:59 +0000
committerWerner Koch <[email protected]>2023-06-15 09:01:46 +0000
commit8796456d235d2d7a8a1ce7337abc1d4d149bcf9a (patch)
tree98f4be098eded8c7bb9198feabcb6946adc94c02 /tests/run-encrypt.c
parentcore: Use 64 bit instead of gpgme_off_t for some internal functions. (diff)
downloadgpgme-8796456d235d2d7a8a1ce7337abc1d4d149bcf9a.tar.gz
gpgme-8796456d235d2d7a8a1ce7337abc1d4d149bcf9a.zip
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
Diffstat (limited to '')
-rw-r--r--tests/run-encrypt.c32
1 files changed, 29 insertions, 3 deletions
diff --git a/tests/run-encrypt.c b/tests/run-encrypt.c
index 2d1c6e9d..7266ba56 100644
--- a/tests/run-encrypt.c
+++ b/tests/run-encrypt.c
@@ -36,6 +36,7 @@
static int verbose;
+static int cancel_after_progress;
static char *
@@ -63,7 +64,10 @@ status_cb (void *opaque, const char *keyword, const char *value)
static void
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;
if (total)
@@ -73,6 +77,19 @@ progress_cb (void *opaque, const char *what, int type, int current, int total)
else
fprintf (stderr, "progress for '%s' %d\n", nonnull(what), current);
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"
" --directory DIR switch to directory DIR before encrypting into an archive\n"
" --diagnostics print diagnostics\n"
+ " --cancel N cancel after N progress lines\n"
, stderr);
exit (ex);
}
@@ -281,6 +299,14 @@ main (int argc, char **argv)
diagnostics = 1;
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))
show_usage (1);
@@ -300,8 +326,8 @@ main (int argc, char **argv)
gpgme_set_status_cb (ctx, status_cb, NULL);
gpgme_set_ctx_flag (ctx, "full-status", "1");
}
- if (print_progress)
- gpgme_set_progress_cb (ctx, progress_cb, NULL);
+ if (print_progress || cancel_after_progress)
+ gpgme_set_progress_cb (ctx, progress_cb, ctx);
if (use_loopback)
{
gpgme_set_pinentry_mode (ctx, GPGME_PINENTRY_MODE_LOOPBACK);