0.8.6claws43
[claws.git] / src / pgptext.c
index 1c08af771f9c4f00861129bd1303cf094f1d1c0e..952d3d710659f87e6484acc3da946a3acb3b7369 100644 (file)
@@ -36,8 +36,8 @@
 #include "intl.h"
 #include "procmime.h"
 #include "procheader.h"
-#include "base64.h"
-#include "uuencode.h"
+#include "common/base64.h"
+#include "common/uuencode.h"
 #include "unmime.h"
 #include "codeconv.h"
 #include "utils.h"
@@ -58,17 +58,6 @@ static char *content_names[] = {
     NULL
 };
 
-static char *mime_version_name[] = {
-    "Mime-Version",
-    NULL
-};
-
-
-struct passphrase_cb_info_s {
-    GpgmeCtx c;
-    int did_it;
-};
-
 /* stolen from rfc2015.c */
 static int
 gpg_name_cmp(const char *a, const char *b)
@@ -82,31 +71,6 @@ gpg_name_cmp(const char *a, const char *b)
     return *a != *b;
 }
 
-static const char *
-passphrase_cb (void *opaque, const char *desc, void *r_hd)
-{
-    struct passphrase_cb_info_s *info = opaque;
-    GpgmeCtx ctx = info ? info->c : NULL;
-    const char *pass;
-
-    if (!desc) {
-        /* FIXME: cleanup by looking at *r_hd */
-        return NULL;
-    }
-
-    gpgmegtk_set_passphrase_grab (prefs_common.passphrase_grab);
-    g_message ("%% requesting passphrase for `%s': ", desc );
-    pass = gpgmegtk_passphrase_mbox (desc);
-    if (!pass) {
-        g_message ("%% cancel passphrase entry");
-        gpgme_cancel (ctx);
-    }
-    else
-        g_message ("%% sending passphrase");
-
-    return pass;
-}
-
 static GpgmeData
 pgptext_decrypt (MimeInfo *partinfo, FILE *fp)
 {
@@ -119,27 +83,27 @@ pgptext_decrypt (MimeInfo *partinfo, FILE *fp)
 
     err = gpgme_new (&ctx);
     if (err) {
-        g_message ("gpgme_new failed: %s", gpgme_strerror (err));
+        debug_print ("gpgme_new failed: %s\n", gpgme_strerror (err));
         goto leave;
     }
 
     err = gpgme_data_new_from_filepart (&cipher, NULL, fp,
                                        partinfo->fpos, partinfo->size);
     if (err) {
-        g_message ("gpgme_data_new_from_filepart failed: %s",
-                   gpgme_strerror (err));
+        debug_print ("gpgme_data_new_from_filepart failed: %s\n",
+                     gpgme_strerror (err));
         goto leave;
     }
 
     err = gpgme_data_new (&plain);
     if (err) {
-        g_message ("gpgme_new failed: %s", gpgme_strerror (err));
+        debug_print ("gpgme_new failed: %s\n", gpgme_strerror (err));
         goto leave;
     }
 
     if (!getenv("GPG_AGENT_INFO")) {
         info.c = ctx;
-        gpgme_set_passphrase_cb (ctx, passphrase_cb, &info);
+        gpgme_set_passphrase_cb (ctx, gpgmegtk_passphrase_cb, (void *)&info);
     } 
 
     err = gpgme_op_decrypt (ctx, cipher, plain);
@@ -147,12 +111,13 @@ pgptext_decrypt (MimeInfo *partinfo, FILE *fp)
 leave:
     gpgme_data_release (cipher);
     if (err) {
-        g_warning ("** decryption failed: %s", gpgme_strerror (err));
+        gpgmegtk_free_passphrase();
+        debug_print ("decryption failed: %s\n", gpgme_strerror (err));
         gpgme_data_release (plain);
         plain = NULL;
     }
     else
-        g_message ("** decryption succeeded");
+        debug_print ("decryption succeeded\n");
 
     gpgme_release (ctx);
     return plain;
@@ -188,6 +153,7 @@ headerp(char *p, char **names)
 
 MimeInfo * pgptext_find_signature (MimeInfo *mimeinfo)
 {
+       return NULL;
 }
 
 gboolean pgptext_has_signature (MimeInfo *mimeinfo)
@@ -217,23 +183,24 @@ int pgptext_is_encrypted (MimeInfo *mimeinfo, MsgInfo *msginfo)
        gchar *check_begin_pgp_msg = "-----BEGIN PGP MESSAGE-----\n";
        gchar *check_end_pgp_msg = "-----END PGP MESSAGE-----\n";
        
-       g_return_if_fail(msginfo != NULL);
+       g_return_val_if_fail(msginfo != NULL, 0);
        
        if (!mimeinfo)
                return 0;
        
-       if ((fp = procmsg_open_message(msginfo)) == NULL) return;
-       mimeinfo = procmime_scan_mime_header(fp, MIME_TEXT);
+       if ((fp = procmsg_open_message(msginfo)) == NULL) return 0;
+       mimeinfo = procmime_scan_mime_header(fp);
        fclose(fp);
-       if (!mimeinfo) return;
+       if (!mimeinfo) return 0;
 
        file = procmsg_get_message_file_path(msginfo);
-       g_return_if_fail(file != NULL);
+       g_return_val_if_fail(file != NULL, 0);
 
        if (mimeinfo->mime_type != MIME_TEXT) {
-               if ((fp = fopen(file, "r")) == NULL) {
+               if ((fp = fopen(file, "rb")) == NULL) {
                        FILE_OP_ERROR(file, "fopen");
-                       return;
+                       g_free(file);
+                       return 0;
                }
                /* skip headers */
                if (mimeinfo->mime_type == MIME_MULTIPART) {
@@ -256,9 +223,10 @@ int pgptext_is_encrypted (MimeInfo *mimeinfo, MsgInfo *msginfo)
                }
                fclose(fp);
        } else {
-               if ((fp = fopen(file, "r")) == NULL) {
+               if ((fp = fopen(file, "rb")) == NULL) {
                        FILE_OP_ERROR(file, "fopen");
-                       return;
+                       g_free(file);
+                       return 0;
                }
                /* skip headers */
                if (fseek(fp, mimeinfo->fpos, SEEK_SET) < 0)
@@ -294,8 +262,6 @@ void pgptext_decrypt_message (MsgInfo *msginfo, MimeInfo *mimeinfo, FILE *fp)
 {
     static int id;
     MimeInfo *partinfo;
-    int n, found;
-    int ver_okay=0;
     char *fname;
     GpgmeData plain;
     FILE *dstfp;
@@ -305,7 +271,7 @@ void pgptext_decrypt_message (MsgInfo *msginfo, MimeInfo *mimeinfo, FILE *fp)
 
     g_return_if_fail (mimeinfo->mime_type == MIME_TEXT);
 
-    g_message ("** text/plain with pgptext encountered");
+    debug_print ("text/plain with pgptext encountered\n");
 
     partinfo = procmime_scan_message(msginfo);
                
@@ -329,7 +295,7 @@ void pgptext_decrypt_message (MsgInfo *msginfo, MimeInfo *mimeinfo, FILE *fp)
     fname = g_strdup_printf("%s%cplaintext.%08x",
                            get_mime_tmp_dir(), G_DIR_SEPARATOR, ++id);
 
-    if ((dstfp = fopen(fname, "w")) == NULL) {
+    if ((dstfp = fopen(fname, "wb")) == NULL) {
         FILE_OP_ERROR(fname, "fopen");
         g_free(fname);
         msginfo->decryption_failed = 1;
@@ -350,7 +316,7 @@ void pgptext_decrypt_message (MsgInfo *msginfo, MimeInfo *mimeinfo, FILE *fp)
                
     err = gpgme_data_rewind (plain);
     if (err)
-        g_message ("** gpgme_data_rewind failed: %s", gpgme_strerror (err));
+        debug_print ("gpgme_data_rewind failed: %s\n", gpgme_strerror (err));
 
                /* insert blank line to avoid some trouble... */
                fputs ("\n", dstfp);
@@ -360,7 +326,7 @@ void pgptext_decrypt_message (MsgInfo *msginfo, MimeInfo *mimeinfo, FILE *fp)
     }
 
     if (err != GPGME_EOF) {
-        g_warning ("** gpgme_data_read failed: %s", gpgme_strerror (err));
+        debug_print ("gpgme_data_read failed: %s\n", gpgme_strerror (err));
     }
 
     fclose (dstfp);
@@ -372,10 +338,12 @@ void pgptext_decrypt_message (MsgInfo *msginfo, MimeInfo *mimeinfo, FILE *fp)
 
 int pgptext_encrypt (const char *file, GSList *recp_list)
 {
+       return 0;
 }
 
 int pgptext_sign (const char *file, PrefsAccount *ac)
 {
+       return 0;
 }
 
 #endif /* USE_GPGME */