diff --git a/src/mdiary.c b/src/mdiary.c index 75d4663..5fe10aa 100644 --- a/src/mdiary.c +++ b/src/mdiary.c @@ -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);