Index: camel/camel-gpg-context.c =================================================================== --- camel/camel-gpg-context.c (révision 515) +++ camel/camel-gpg-context.c (copie de travail) @@ -730,9 +730,12 @@ printf ("status: %s\n", status); if (strncmp (status, "[GNUPG:] ", 9) != 0) { + gchar* message; + message = g_locale_to_utf8(status, -1, NULL, NULL, NULL); camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM, _("Unexpected GnuPG status message encountered:\n\n%s"), - status); + message); + g_free(message); return -1; } @@ -823,9 +826,12 @@ } } else if (!strncmp (status, "UNEXPECTED ", 11)) { /* this is an error */ + gchar* message; + message = g_locale_to_utf8(status+11, -1, NULL, NULL, NULL); camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM, _("Unexpected response from GnuPG: %s"), - status + 11); + message); + g_free(message); return -1; } else if (!strncmp (status, "NODATA", 6)) { /* this is an error */ @@ -1270,11 +1276,22 @@ if (gpg_ctx_op_wait (gpg) != 0) { const char *diagnostics; + gchar *message; diagnostics = gpg_ctx_get_diagnostics (gpg); - camel_exception_set (ex, CAMEL_EXCEPTION_SYSTEM, - diagnostics && *diagnostics ? diagnostics : - _("Failed to execute gpg.")); + + if (diagnostics) { + message = g_locale_to_utf8(diagnostics, -1, NULL, NULL, NULL); + } else { + message = _("Failed to execute gpg."); + } + + camel_exception_set (ex, CAMEL_EXCEPTION_SYSTEM, message); + + if (diagnostics) { + g_free(message); + } + goto fail; } @@ -1556,10 +1573,22 @@ if (gpg_ctx_op_wait (gpg) != 0) { const char *diagnostics; - + gchar *message; + diagnostics = gpg_ctx_get_diagnostics (gpg); - camel_exception_set (ex, CAMEL_EXCEPTION_SYSTEM, - diagnostics && *diagnostics ? diagnostics : _("Failed to execute gpg.")); + + if (diagnostics) { + message = g_locale_to_utf8(diagnostics, -1, NULL, NULL, NULL); + } else { + message = _("Failed to execute gpg."); + } + + camel_exception_set (ex, CAMEL_EXCEPTION_SYSTEM, message); + + if (diagnostics) { + g_free(message); + } + goto fail; } @@ -1674,11 +1703,22 @@ if (gpg_ctx_op_wait (gpg) != 0) { const char *diagnostics; - + gchar *message; + diagnostics = gpg_ctx_get_diagnostics (gpg); - camel_exception_set (ex, CAMEL_EXCEPTION_SYSTEM, - diagnostics && *diagnostics ? diagnostics : - _("Failed to execute gpg.")); + + if (diagnostics) { + message = g_locale_to_utf8(diagnostics, -1, NULL, NULL, NULL); + } else { + message = _("Failed to execute gpg."); + } + + camel_exception_set (ex, CAMEL_EXCEPTION_SYSTEM, message); + + if (diagnostics) { + g_free(message); + } + goto fail; } @@ -1753,11 +1793,22 @@ if (gpg_ctx_op_wait (gpg) != 0) { const char *diagnostics; - + gchar *message; + diagnostics = gpg_ctx_get_diagnostics (gpg); - camel_exception_set (ex, CAMEL_EXCEPTION_SYSTEM, - diagnostics && *diagnostics ? diagnostics : - _("Failed to execute gpg.")); + + if (diagnostics) { + message = g_locale_to_utf8(diagnostics, -1, NULL, NULL, NULL); + } else { + message = _("Failed to execute gpg."); + } + + camel_exception_set (ex, CAMEL_EXCEPTION_SYSTEM, message); + + if (diagnostics) { + g_free(message); + } + goto fail; } @@ -1798,11 +1849,22 @@ if (gpg_ctx_op_wait (gpg) != 0) { const char *diagnostics; - + gchar *message; + diagnostics = gpg_ctx_get_diagnostics (gpg); - camel_exception_set (ex, CAMEL_EXCEPTION_SYSTEM, - diagnostics && *diagnostics ? diagnostics : - _("Failed to execute gpg.")); + + if (diagnostics) { + message = g_locale_to_utf8(diagnostics, -1, NULL, NULL, NULL); + } else { + message = _("Failed to execute gpg."); + } + + camel_exception_set (ex, CAMEL_EXCEPTION_SYSTEM, message); + + if (diagnostics) { + g_free(message); + } + goto fail; }