Stop decryption for all encrypted files when cancel is pressed

handy-eval
Markus Koch 2021-01-03 14:19:23 +01:00
parent 21206d4e3e
commit 65d12ae9e0
1 changed files with 16 additions and 3 deletions

View File

@ -383,7 +383,15 @@ static void mdiary_add_gpg_to_store(struct mdiary_scanner *mdiary_scanner,
gchar *cmd_stderr = NULL;
gint exit_status = 0;
cmd = g_strdup_printf("gpg --decrypt %s", filename);
g_message("Decrypt file: %s", filename);
if (mdiary_scanner->gpg_enabled == 2) { /* GPG operation was manually cancelled */
g_warning("GPG: Skipping file.");
mdiary_scanner->entries_failed++; /* Simply count files that won't be decoded. */
return;
}
cmd = g_strdup_printf("gpg --decrypt \"%s\"", filename);
if (g_spawn_command_line_sync(cmd, &cmd_stdout, &cmd_stderr, &exit_status, NULL) && exit_status == 0) {
g_message("GPG: Decryption OK!\n");
@ -393,11 +401,16 @@ static void mdiary_add_gpg_to_store(struct mdiary_scanner *mdiary_scanner,
} else {
mdiary_scanner->entries_failed++;
mdiary_scanner->error_code |= MDS_ERROR_GPG;
g_warning("GPG: Decryption of message failed!\n"
g_warning("GPG: Decryption of message failed with error code %d!\n"
"---------- SNIP ----------\n"
"%s"
"---------- SNIP ----------\n",
cmd_stderr ? cmd_stderr : "Unknown error.");
exit_status,
cmd_stderr ? cmd_stderr : "Unknown error.\n");
if (cmd_stderr && strstr(cmd_stderr, "Operation cancelled")) {
g_warning("GPG: Aborting import of further GPG messages.");
mdiary_scanner->gpg_enabled = 2;
}
}
g_free(cmd);