[pan] remove support for GMime2



commit 62e3c588c5a46733e034974e9509573dd12835c4
Author: Dominique Dumont <dod debian org>
Date:   Fri Jan 21 18:43:11 2022 +0100

    remove support for GMime2
    
    GMime2 is dead, long live GMime3
    
    GMime2 code was removed with this handy command:
    
    $ unifdef -m -D HAVE_GMIME_30 $(ack -l HAVE_GMIME_30 pan)

 README.org                        |   1 -
 configure.ac                      |  13 +--
 pan/general/utf8-utils.cc         |  20 ----
 pan/gui/body-pane.cc              |  49 ----------
 pan/gui/gui.cc                    |  48 ----------
 pan/gui/pan.cc                    |   4 -
 pan/gui/post-ui.cc                | 190 --------------------------------------
 pan/tasks/nzb.cc                  |   4 -
 pan/tasks/task-post.cc            |   4 -
 pan/tasks/task-upload.cc          |  20 ----
 pan/tasks/task-xover.cc           |   4 -
 pan/usenet-utils/gpg.cc           |  35 -------
 pan/usenet-utils/message-check.cc |   4 -
 pan/usenet-utils/mime-utils.cc    |  92 ------------------
 pan/usenet-utils/mime-utils.h     |   4 -
 15 files changed, 1 insertion(+), 491 deletions(-)
---
diff --git a/README.org b/README.org
index 9dfcbde..f2bee35 100644
--- a/README.org
+++ b/README.org
@@ -96,7 +96,6 @@ other than testing. Use at your own risk:
 The following librairies are deprecated and will be removed in future
 releases:
 
-- [[https://gitlab.gnome.org/GNOME/gmime][GMime]] 2.6.20 or higher (optionally with PGP cryptography support)
 - GTK 2 2.16.0 or higher
 
 Run the following command to get a list of all options that you can
diff --git a/configure.ac b/configure.ac
index 4e21165..645dc3b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -50,7 +50,6 @@ m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
 dnl glib, gmime, and gtk are mandatory prerequisites.
 GLIB_REQUIRED=2.17.6
 GLIB_REQUIRED_FOR_DBUS=2.26.0
-GMIME26_REQUIRED=2.6.20
 GMIME30_REQUIRED=3.0.0
 GTK_REQUIRED=2.16.0
 GTK3_REQUIRED=3.0.0
@@ -123,16 +122,7 @@ dnl warnings when features of a newer GLib version are used.
 GLIB_CFLAGS="$GLIB_CFLAGS -DGLIB_VERSION_MAX_ALLOWED=G_ENCODE_VERSION\\(2,36\\)"
 
 dnl Check for GMime
-AC_ARG_WITH([gmime2],
-  AS_HELP_STRING([--with-gmime2],[enable GMime 2 support (deprecated, normally: no)]), 
[want_gmime2=$withval], [want_gmime2=no])
-if test "x$want_gmime2" = "xyes" ; then
-  PKG_CHECK_MODULES([GMIME], [gmime-2.6 >= $GMIME26_REQUIRED])
-else
-  PKG_CHECK_MODULES([GMIME], [gmime-3.0 >= $GMIME30_REQUIRED],
-  [
-  AC_DEFINE(HAVE_GMIME_30,[1],[GMime 3.0 available])
-  ])
-fi
+PKG_CHECK_MODULES([GMIME], [gmime-3.0 >= $GMIME30_REQUIRED])
 
 dnl Check for GMime cryptography support
 AC_ARG_WITH([gmime-crypto],
@@ -356,7 +346,6 @@ Configuration:
         Source code location:   ${srcdir}
         Compiler:               ${CXX}
         With D-Bus:             ${want_dbus}
-        With GMime 2:           ${want_gmime2}
         With GMime crypto:      ${want_gmime_crypto}
         With GtkSpell:          ${gtkspell_msg}
         With GTK 3:             ${gtk_msg}
diff --git a/pan/general/utf8-utils.cc b/pan/general/utf8-utils.cc
index d8e6dc9..2a40478 100644
--- a/pan/general/utf8-utils.cc
+++ b/pan/general/utf8-utils.cc
@@ -127,7 +127,6 @@ pan :: clean_utf8 (const StringView& in_arg)
   return out;
 }
 
-#ifdef HAVE_GMIME_30
 std::string
 pan :: header_to_utf8 (const StringView  & header,
                        const char        * fallback_charset1,
@@ -142,21 +141,6 @@ pan :: header_to_utf8 (const StringView  & header,
   return s;
 }
 
-#else
-std::string
-pan :: header_to_utf8 (const StringView  & header,
-                       const char        * fallback_charset1,
-                       const char        * fallback_charset2)
-{
-  std::string s = content_to_utf8 (header, fallback_charset1, fallback_charset2);
-  if (header.strstr ("=?")) {
-    char * decoded (g_mime_utils_header_decode_text ( s.c_str()));
-    s = clean_utf8 (decoded);
-    g_free (decoded);
-  }
-  return s;
-}
-#endif
 
 std::string
 pan :: mime_part_to_utf8 (GMimePart     * part,
@@ -167,11 +151,7 @@ pan :: mime_part_to_utf8 (GMimePart     * part,
   g_return_val_if_fail (GMIME_IS_PART(part), ret);
   const char * charset =
     g_mime_object_get_content_type_parameter (GMIME_OBJECT (part), "charset");
-#ifdef HAVE_GMIME_30
   GMimeDataWrapper * content = g_mime_part_get_content (part);
-#else
-  GMimeDataWrapper * content = g_mime_part_get_content_object (part);
-#endif
   GMimeStream *stream = g_mime_stream_mem_new ();
 
   g_mime_data_wrapper_write_to_stream (content, stream);
diff --git a/pan/gui/body-pane.cc b/pan/gui/body-pane.cc
index 6e8bb7d..43f0c43 100644
--- a/pan/gui/body-pane.cc
+++ b/pan/gui/body-pane.cc
@@ -903,11 +903,7 @@ namespace
     GError * err (0);
 
     // populate the loader
-#ifdef HAVE_GMIME_30
     GMimeDataWrapper * wrapper (g_mime_part_get_content (part));
-#else    
-    GMimeDataWrapper * wrapper (g_mime_part_get_content_object (part));
-#endif    
     if (wrapper)
     {
       GMimeStream * mem_stream (g_mime_stream_mem_new ());
@@ -1252,11 +1248,7 @@ BodyPane :: set_text_from_message (GMimeMessage * message)
   // maybe add the headers
   const bool do_show_headers (_prefs.get_flag ("show-all-headers", false));
   if (message && do_show_headers) {
-#ifdef HAVE_GMIME_30
     char * headers (g_mime_object_get_headers ((GMimeObject *) message, NULL));
-#else    
-    char * headers (g_mime_object_get_headers ((GMimeObject *) message));
-#endif    
     GtkTextIter end;
     gtk_text_buffer_get_end_iter (_buffer, &end);
     StringView line, v(headers);
@@ -2068,18 +2060,10 @@ BodyPane :: create_followup_or_reply (bool is_reply)
 
     if (is_reply || fup_to=="poster") {
       const std::string& to (reply_to.empty() ? from : reply_to);
-#ifdef HAVE_GMIME_30
       pan_g_mime_message_add_recipients_from_string (msg, GMIME_ADDRESS_TYPE_TO, to.c_str());
-#else
-      pan_g_mime_message_add_recipients_from_string (msg, GMIME_RECIPIENT_TYPE_TO, to.c_str());
-#endif
     } else {
       const std::string& groups (fup_to.empty() ? newsgroups : fup_to);
-#ifdef HAVE_GMIME_30
       g_mime_object_append_header ((GMimeObject *) msg, "Newsgroups", groups.c_str(), NULL);
-#else
-      g_mime_object_append_header ((GMimeObject *) msg, "Newsgroups", groups.c_str());
-#endif
     }
 
     // Subject:
@@ -2088,43 +2072,22 @@ BodyPane :: create_followup_or_reply (bool is_reply)
     std::string val (normalize_subject_re (h));
     if (val.find ("Re:") != 0) // add "Re: " if we don't have one
       val.insert (0, "Re: ");
-#ifdef HAVE_GMIME_30
     g_mime_message_set_subject (msg, val.c_str(), NULL);
-#else
-    g_mime_message_set_subject (msg, val.c_str());
-#endif
 
     // attribution lines
     const char * cpch = g_mime_object_get_header (_message_obj, "From");
     h = header_to_utf8 (cpch, message_charset, group_charset);
-#ifdef HAVE_GMIME_30
     g_mime_object_append_header (msg_obj, "X-Draft-Attribution-Author", h.c_str(), NULL);
-#else
-    g_mime_object_append_header (msg_obj, "X-Draft-Attribution-Author", h.c_str());
-#endif
 
     cpch = g_mime_message_get_message_id (_message);
     h = header_to_utf8 (cpch, message_charset, group_charset);
-#ifdef HAVE_GMIME_30
     g_mime_object_append_header (msg_obj, "X-Draft-Attribution-Id", h.c_str(), NULL);
-#else    
-    g_mime_object_append_header (msg_obj, "X-Draft-Attribution-Id", h.c_str());
-#endif    
 
-#ifdef HAVE_GMIME_30
     const char * header_t = "Date";
     const char * tmp_s = g_mime_object_get_header (_message_obj, header_t);
     const char * tmp = tmp_s;  // FIXME: convert time to string
-#else
-    char * tmp = g_mime_message_get_date_as_string (_message);
-#endif
     h = header_to_utf8 (tmp, message_charset, group_charset);
-#ifdef HAVE_GMIME_30
     g_mime_object_append_header (msg_obj, "X-Draft-Attribution-Date", h.c_str(), NULL);
-#else
-    g_mime_object_append_header (msg_obj, "X-Draft-Attribution-Date", h.c_str());
-    g_free (tmp);
-#endif
 
     // references
     const char * header = "References";
@@ -2136,11 +2099,7 @@ BodyPane :: create_followup_or_reply (bool is_reply)
     val += g_mime_message_get_message_id (_message);
     val += ">";
     val = GNKSA :: trim_references (val);
-#ifdef HAVE_GMIME_30
     g_mime_object_append_header (msg_obj, header, val.c_str(), NULL);
-#else    
-    g_mime_object_append_header (msg_obj, header, val.c_str());
-#endif    
 
     ///
     ///  BODY
@@ -2178,17 +2137,9 @@ BodyPane :: create_followup_or_reply (bool is_reply)
     g_mime_stream_write_string (stream, s.c_str());
     GMimeDataWrapper * wrapper = g_mime_data_wrapper_new_with_stream (stream, GMIME_CONTENT_ENCODING_8BIT);
     GMimePart * part = g_mime_part_new ();
-#ifdef HAVE_GMIME_30
     GMimeContentType * new_type = g_mime_content_type_parse (NULL, "text/plain; charset=UTF-8");
-#else    
-    GMimeContentType * new_type = g_mime_content_type_new_from_string ("text/plain; charset=UTF-8");
-#endif    
     g_mime_object_set_content_type ((GMimeObject *) part, new_type);
-#ifdef HAVE_GMIME_30
     g_mime_part_set_content (part, wrapper);
-#else    
-    g_mime_part_set_content_object (part, wrapper);
-#endif    
     g_mime_part_set_content_encoding (part, GMIME_CONTENT_ENCODING_8BIT);
     g_mime_message_set_mime_part (msg, GMIME_OBJECT(part));
     g_object_unref (new_type);
diff --git a/pan/gui/gui.cc b/pan/gui/gui.cc
index 7dca1e7..f45c294 100644
--- a/pan/gui/gui.cc
+++ b/pan/gui/gui.cc
@@ -745,11 +745,7 @@ namespace
       if (GMIME_IS_PART(o))
       {
         GMimePart * part (GMIME_PART (o));
-#ifdef HAVE_GMIME_30
         GMimeDataWrapper * wrapper (g_mime_part_get_content (part));
-#else        
-        GMimeDataWrapper * wrapper (g_mime_part_get_content_object (part));
-#endif        
         GMimeStream * mem_stream (g_mime_stream_mem_new ());
         g_mime_data_wrapper_write_to_stream (wrapper, mem_stream);
         const GByteArray * buffer (GMIME_STREAM_MEM(mem_stream)->buffer);
@@ -1326,12 +1322,8 @@ void GUI :: do_supersede_article ()
     return;
 
   // did this user post the message?
-#ifdef HAVE_GMIME_30
   InternetAddressList * Lsender (g_mime_message_get_sender (message));
   char * sender = internet_address_list_to_string(Lsender, NULL,  TRUE);
-#else  
-  const char * sender (g_mime_message_get_sender (message));
-#endif  
   const bool user_posted_this (_data.has_from_header (sender));
 
   if (!user_posted_this) {
@@ -1357,7 +1349,6 @@ void GUI :: do_supersede_article ()
   GMimeMessage * new_message (g_mime_message_new (false));
   GMimeObject * new_message_obj = (GMimeObject*)new_message;
 
-#ifdef HAVE_GMIME_30
   g_mime_object_set_header (new_message_obj, "Supersedes", old_mid, NULL);
   const char * addr = internet_address_list_to_string (g_mime_message_get_sender (message), NULL, TRUE);
   g_mime_message_add_mailbox (new_message, GMIME_ADDRESS_TYPE_SENDER, NULL, addr);
@@ -1369,28 +1360,13 @@ void GUI :: do_supersede_article ()
               g_mime_message_add_mailbox (new_message, GMIME_ADDRESS_TYPE_REPLY_TO, NULL, cpch);
   if ((cpch = g_mime_object_get_header ((GMimeObject *)message,     "Followup-To")))
               g_mime_object_set_header (new_message_obj, "Followup-To", cpch, NULL);
-#else  
-  g_mime_object_set_header (new_message_obj, "Supersedes", old_mid);
-  g_mime_message_set_sender (new_message, g_mime_message_get_sender (message));
-  g_mime_message_set_subject (new_message, g_mime_message_get_subject (message));
-  g_mime_object_set_header (new_message_obj, "Newsgroups", g_mime_object_get_header ((GMimeObject *)message, 
"Newsgroups"));
-  g_mime_object_set_header (new_message_obj, "References", g_mime_object_get_header ((GMimeObject *)message, 
"References"));
-  if ((cpch = g_mime_message_get_reply_to (message)))
-              g_mime_message_set_reply_to (new_message, cpch);
-  if ((cpch = g_mime_object_get_header ((GMimeObject *)message,     "Followup-To")))
-              g_mime_object_set_header (new_message_obj, "Followup-To", cpch);
-#endif  
   gboolean  unused (false);
   char * body (pan_g_mime_message_get_body (message, &unused));
   GMimeStream * stream = g_mime_stream_mem_new_with_buffer (body, strlen(body));
   g_free (body);
   GMimeDataWrapper * content_object = g_mime_data_wrapper_new_with_stream (stream, 
GMIME_CONTENT_ENCODING_DEFAULT);
   GMimePart * part = g_mime_part_new ();
-#ifdef HAVE_GMIME_30
    g_mime_part_set_content(part, content_object);
-#else  
-  g_mime_part_set_content_object (part, content_object);
-#endif  
   g_mime_message_set_mime_part (new_message, GMIME_OBJECT(part));
   g_object_unref (part);
   g_object_unref (content_object);
@@ -1424,11 +1400,7 @@ void GUI :: do_cancel_article ()
     return;
 
   // did this user post the message?
-#ifdef HAVE_GMIME_30
   const char * sender = internet_address_list_to_string(g_mime_message_get_sender (message), NULL, TRUE);
-#else  
-  const char * sender (g_mime_message_get_sender (message));
-#endif  
   const bool user_posted_this (_data.has_from_header (sender));
   if (!user_posted_this) {
     GtkWidget * w = gtk_message_dialog_new (
@@ -1448,28 +1420,16 @@ void GUI :: do_cancel_article ()
   // okay then...
   GMimeMessage * cancel = g_mime_message_new (false);
   char * cancel_message = g_strdup_printf ("cancel <%s>", g_mime_message_get_message_id(message));
-#ifdef HAVE_GMIME_30
   const char * s_addr = internet_address_list_to_string(g_mime_message_get_sender (message), NULL, TRUE);
   g_mime_message_add_mailbox (cancel, GMIME_ADDRESS_TYPE_SENDER, NULL, s_addr);
   g_mime_message_set_subject (cancel, "Cancel", NULL);
   g_mime_object_set_header ((GMimeObject *)cancel, "Newsgroups", g_mime_object_get_header ((GMimeObject 
*)message, "Newsgroups"), NULL);
   g_mime_object_set_header ((GMimeObject *)cancel, "Control", cancel_message, NULL);
-#else  
-  g_mime_message_set_sender (cancel, g_mime_message_get_sender (message));
-  g_mime_message_set_subject (cancel, "Cancel");
-  g_mime_object_set_header ((GMimeObject *)cancel, "Newsgroups", g_mime_object_get_header ((GMimeObject 
*)message, "Newsgroups"));
-  g_mime_object_set_header ((GMimeObject *)cancel, "Control", cancel_message);
-
-#endif  
   const char * body ("Ignore\r\nArticle canceled by author using " PACKAGE_STRING "\r\n");
   GMimeStream * stream = g_mime_stream_mem_new_with_buffer (body, strlen(body));
   GMimeDataWrapper * content_object = g_mime_data_wrapper_new_with_stream (stream, 
GMIME_CONTENT_ENCODING_DEFAULT);
   GMimePart * part = g_mime_part_new ();
-#ifdef HAVE_GMIME_30
   g_mime_part_set_content (part, content_object);
-#else  
-  g_mime_part_set_content_object (part, content_object);
-#endif  
   g_mime_message_set_mime_part (cancel, GMIME_OBJECT(part));
   g_object_unref (part);
   g_object_unref (content_object);
@@ -1631,19 +1591,11 @@ GUI :: do_post ()
       newsgroups = group;
   }
   if (!newsgroups.empty())
-#ifdef HAVE_GMIME_30
     g_mime_object_append_header ((GMimeObject *) message, "Newsgroups", newsgroups.c_str(), NULL);
-#else    
-    g_mime_object_append_header ((GMimeObject *) message, "Newsgroups", newsgroups.c_str());
-#endif    
 
   // content type
   GMimePart * part = g_mime_part_new ();
-#ifdef HAVE_GMIME_30
   GMimeContentType *type = g_mime_content_type_parse (NULL, "text/plain; charset=UTF-8");
-#else  
-  GMimeContentType *type = g_mime_content_type_new_from_string ("text/plain; charset=UTF-8");
-#endif  
   g_mime_object_set_content_type ((GMimeObject *) part, type);
   g_object_unref (type);
   g_mime_part_set_content_encoding (part, GMIME_CONTENT_ENCODING_8BIT);
diff --git a/pan/gui/pan.cc b/pan/gui/pan.cc
index c123f2d..301c86f 100644
--- a/pan/gui/pan.cc
+++ b/pan/gui/pan.cc
@@ -907,11 +907,7 @@ main (int argc, char *argv[])
 #if !GLIB_CHECK_VERSION(2,32,0)
   g_thread_init (0);
 #endif
-#ifdef HAVE_GMIME_30
   g_mime_init ();
-#else
-  g_mime_init (GMIME_ENABLE_RFC2047_WORKAROUNDS);
-#endif  
 
   bool gui(true), nzb(false), verbosed(false);
   std::string url;
diff --git a/pan/gui/post-ui.cc b/pan/gui/post-ui.cc
index 4812d00..ce93c5a 100644
--- a/pan/gui/post-ui.cc
+++ b/pan/gui/post-ui.cc
@@ -950,11 +950,7 @@ PostUI :: maybe_mail_message (GMimeMessage * message)
 {
   std::string url, to, groups;
   gboolean unused;
-#ifdef HAVE_GMIME_30
   char * headers (g_mime_object_get_headers ((GMimeObject *) message, NULL));
-#else
-  char * headers (g_mime_object_get_headers ((GMimeObject *) message));
-#endif
   char * body (pan_g_mime_message_get_body (message, &unused));
   StringView key, val, v(headers);
   v.trim ();
@@ -1052,11 +1048,7 @@ PostUI :: save_message_in_local_folder(const Mode& mode, const std::string& fold
          p.get_from_header(author);
          std::string subject(utf8ize (g_mime_message_get_subject (msg)));
          const char * refs = g_mime_object_get_header(GMIME_OBJECT(msg), "References");
-#ifdef HAVE_GMIME_30
          g_mime_object_set_header((GMimeObject *) msg, "Newsgroups", folder.c_str(), NULL);
-#else
-         g_mime_object_set_header((GMimeObject *) msg, "Newsgroups", folder.c_str());
-#endif
 
          // pseudo mid to get data from cache
          std::string message_id = pan_g_mime_message_set_message_id(msg, mid.c_str());
@@ -1066,18 +1058,10 @@ PostUI :: save_message_in_local_folder(const Mode& mode, const std::string& fold
          const Article* article = _data.xover_add (p.posting_server, folder, subject, author, posted, 
message_id, refs, sizeof(*msg), 3, xref.str(), true);
          if (article)
          {
-#ifdef HAVE_GMIME_30
           GDateTime * postedGDT = g_date_time_new_from_unix_utc(posted);  
                  g_mime_message_set_date(msg, postedGDT);
-#else
-                 g_mime_message_set_date(msg, posted, 0);
-#endif
                  ArticleCache& cache(_data.get_cache());
-#ifdef HAVE_GMIME_30
                  ArticleCache :: CacheResponse response = cache.add(mid, 
g_mime_object_to_string(GMIME_OBJECT(msg), NULL), true);
-#else
-                 ArticleCache :: CacheResponse response = cache.add(mid, 
g_mime_object_to_string(GMIME_OBJECT(msg)), true);
-#endif
                  g_object_unref(msg);
 
                  if (response.type != ArticleCache::CACHE_OK)
@@ -1516,11 +1500,7 @@ PostUI :: open_draft ()
     {
       GMimeStream * stream = g_mime_stream_mem_new_with_buffer (txt.c_str(), txt.size());
       GMimeParser * parser = g_mime_parser_new_with_stream (stream);
-#ifdef HAVE_GMIME_30
       GMimeMessage * message = g_mime_parser_construct_message (parser, NULL);
-#else
-      GMimeMessage * message = g_mime_parser_construct_message (parser);
-#endif
       if (message) {
         set_message (message);
         g_object_unref (G_OBJECT(message));
@@ -1591,7 +1571,6 @@ namespace
 GMimeMessage*
 PostUI :: new_message_from_ui (Mode mode, bool copy_body)
 {
-#ifdef HAVE_GMIME_30
 
   GMimeMessage * msg(0);
   msg = g_mime_message_new (true);
@@ -1733,138 +1712,6 @@ PostUI :: new_message_from_ui (Mode mode, bool copy_body)
 
   return msg;
 
-#else
-
-  GMimeMessage * msg(0);
-  msg = g_mime_message_new (false);
-
-  // headers from the ui: From
-  const Profile profile (get_current_profile ());
-  std::string s;
-  profile.get_from_header (s);
-  g_mime_message_set_sender (msg, s.c_str());
-
-  // headers from the ui: Subject
-  const char * cpch (gtk_entry_get_text (GTK_ENTRY(_subject_entry)));
-  if (cpch) {
-    g_mime_message_set_subject (msg, cpch);
-  }
-
-  // headers from the ui: To
-  const StringView to (gtk_entry_get_text (GTK_ENTRY(_to_entry)));
-  if (!to.empty())
-    pan_g_mime_message_add_recipients_from_string (msg, GMIME_RECIPIENT_TYPE_TO, to.str);
-
-  // headers from the ui: Newsgroups
-  const StringView groups (gtk_entry_get_text (GTK_ENTRY(_groups_entry)));
-  if (!groups.empty())
-    g_mime_object_set_header ((GMimeObject *) msg, "Newsgroups", groups.str);
-
-  // headers from the ui: Followup-To
-  const StringView followupto (gtk_entry_get_text (GTK_ENTRY(_followupto_entry)));
-  if (!followupto.empty())
-    g_mime_object_set_header ((GMimeObject *) msg, "Followup-To", followupto.str);
-
-  // headers from the ui: Reply-To
-  const StringView replyto (gtk_entry_get_text (GTK_ENTRY(_replyto_entry)));
-  if (!replyto.empty())
-    g_mime_object_set_header ((GMimeObject *) msg, "Reply-To", replyto.str);
-
-  // headers from posting profile (via prefs): Face
-  if (!profile.face.empty())
-  {
-    std::string f;
-    f += profile.face;
-
-    for (int i = GMIME_FOLD_BASE64_INTERVAL; i < f.length(); i += GMIME_FOLD_BASE64_INTERVAL)
-    {
-      f.insert (i, " ");
-    }
-    g_mime_object_set_header ((GMimeObject *) msg, "Face", f.c_str());
-  }
-
-  // headers from posting profile(via prefs): X-Face
-  if (!profile.xface.empty())
-  {
-    std::string f;
-    f += profile.xface;
-
-    // GMIME_FOLD_INTERVAL - 8: Accounting for 'X-Face: ' beginning of header
-    for(int i = GMIME_FOLD_INTERVAL - 8; i < f.length(); i += GMIME_FOLD_INTERVAL)
-    {
-      f.insert(i, " ");
-    }
-    g_mime_object_set_header ((GMimeObject *) msg, "X-Face", f.c_str());
-  }
-
-  // add the 'hidden headers'
-  foreach_const (str2str_t, _hidden_headers, it)
-    if ((mode==DRAFTING) || (it->first.find ("X-Draft-")!=0))
-      g_mime_object_set_header ((GMimeObject *) msg, it->first.c_str(), it->second.c_str());
-
-  // build headers from the 'more headers' entry field
-  std::map<std::string,std::string> headers;
-  GtkTextBuffer * buf (_headers_buf);
-  GtkTextIter start, end;
-  gtk_text_buffer_get_bounds (buf, &start, &end);
-  char * pch = gtk_text_buffer_get_text (buf, &start, &end, false);
-  StringView key, val, v(pch);
-  v.trim ();
-  while (v.pop_token (val, '\n') && val.pop_token(key,':')) {
-    key.trim ();
-    val.eat_chars (1);
-    val.trim ();
-    std::string key_str (key.to_string());
-    if (extra_header_is_editable (key, val))
-      g_mime_object_set_header ((GMimeObject *) msg, key.to_string().c_str(),
-                                val.to_string().c_str());
-  }
-  g_free (pch);
-
-  // User-Agent
-  if ((mode==POSTING || mode == UPLOADING) && _prefs.get_flag (USER_AGENT_PREFS_KEY, true))
-    g_mime_object_set_header ((GMimeObject *) msg, "User-Agent", get_user_agent());
-
-  // Message-ID for single text-only posts
-  if (mode==DRAFTING || ((mode==POSTING || mode==UPLOADING) && _prefs.get_flag (MESSAGE_ID_PREFS_KEY, 
false))) {
-    const std::string message_id = generate_message_id(profile);
-    pan_g_mime_message_set_message_id (msg, message_id.c_str());
-  }
-
-  // body & charset
-  {
-    std::string body;
-    if (copy_body) body = get_body();
-
-    GMimeStream *  stream =  g_mime_stream_mem_new_with_buffer (body.c_str(), body.size());
-
-    const std::string charset ((mode==POSTING && !_charset.empty()) ? _charset : "UTF-8");
-    if (charset != "UTF-8") {
-      // add a wrapper to convert from UTF-8 to $charset
-      GMimeStream * tmp = g_mime_stream_filter_new (stream);
-      g_object_unref (stream);
-      GMimeFilter * filter = g_mime_filter_charset_new ("UTF-8", charset.c_str());
-      g_mime_stream_filter_add (GMIME_STREAM_FILTER(tmp), filter);
-      g_object_unref (filter);
-      stream = tmp;
-    }
-    GMimeDataWrapper * content_object = g_mime_data_wrapper_new_with_stream (stream, 
GMIME_CONTENT_ENCODING_DEFAULT);
-    g_object_unref (stream);
-    GMimePart * part = g_mime_part_new ();
-    pch = g_strdup_printf ("text/plain; charset=%s", charset.c_str());
-    GMimeContentType * type = g_mime_content_type_new_from_string (pch);
-    g_free (pch);
-    g_mime_object_set_content_type ((GMimeObject *) part, type); // part owns type now. type isn't 
refcounted.
-    g_mime_part_set_content_object (part, content_object);
-    if (mode != UPLOADING) g_mime_part_set_content_encoding (part, _enc);
-    g_object_unref (content_object);
-    g_mime_message_set_mime_part (msg, GMIME_OBJECT(part));
-    g_object_unref (part);
-  }
-
-  return msg;
-  
-#endif
 }
 
 void
@@ -1940,11 +1787,7 @@ PostUI :: save_draft ()
     {
       errno = 0;
       std::ofstream o (filename);
-#ifdef HAVE_GMIME_30
       char * pch = g_mime_object_to_string ((GMimeObject *) msg, NULL);
-#else
-      char * pch = g_mime_object_to_string ((GMimeObject *) msg);
-#endif
       o << pch;
       o.close ();
 
@@ -2441,13 +2284,8 @@ PostUI :: set_message (GMimeMessage * message)
   s = utf8ize (g_mime_object_get_header ((GMimeObject *) message, "Reply-To"));
   gtk_entry_set_text (GTK_ENTRY(_replyto_entry), s.c_str());
 
-#ifdef HAVE_GMIME_30
   InternetAddressList * addresses = g_mime_message_get_addresses (message, GMIME_ADDRESS_TYPE_TO);
   char * pch  = internet_address_list_to_string (addresses, NULL, true);
-#else
-  InternetAddressList * addresses = g_mime_message_get_recipients (message, GMIME_RECIPIENT_TYPE_TO);
-  char * pch  = internet_address_list_to_string (addresses, true);
-#endif
   s = utf8ize (pch);
   gtk_entry_set_text (GTK_ENTRY(_to_entry), s.c_str());
   g_free (pch);
@@ -2455,13 +2293,8 @@ PostUI :: set_message (GMimeMessage * message)
   // update 'other headers'
   SetMessageForeachHeaderData data;
   const char *name, *value;
-#ifdef HAVE_GMIME_30
   GMimeHeaderList HList;
-#else
-  GMimeHeaderIter iter;
-#endif
 
-#ifdef HAVE_GMIME_30
 //  FIXME: GMime 3.0
   int index_v = 0;   
   int message_count = g_mime_header_list_get_count (message->mime_part->headers);
@@ -2488,25 +2321,6 @@ PostUI :: set_message (GMimeMessage * message)
       index_v++;
      } while ( index_v < message_count);
   }    
-#else
-  if (message->mime_part && g_mime_header_list_get_stream (message->mime_part->headers)) {
-    if (g_mime_header_list_get_iter (message->mime_part->headers, &iter)) {
-      do {
-        value = g_mime_header_iter_get_value (&iter);
-        name = g_mime_header_iter_get_name (&iter);
-        set_message_foreach_header_func (name, value, &data);
-      } while (g_mime_header_iter_next (&iter));
-    }
-  }
-
-  if (g_mime_header_list_get_iter (GMIME_OBJECT (message)->headers, &iter)) {
-    do {
-      value = g_mime_header_iter_get_value (&iter);
-      name = g_mime_header_iter_get_name (&iter);
-      set_message_foreach_header_func (name, value, &data);
-    } while (g_mime_header_iter_next (&iter));
-  }
-#endif
 
   s = utf8ize (data.visible_headers);
   if (!s.empty())
@@ -3274,11 +3088,7 @@ PostUI::draft_save_cb(gpointer ptr)
     char * filename = g_build_filename (draft_filename.c_str(), "autosave", NULL);
 
     std::ofstream o (filename);
-#ifdef HAVE_GMIME_30
     char * headers (g_mime_object_get_headers ((GMimeObject *) msg, NULL));
-#else
-    char * headers (g_mime_object_get_headers ((GMimeObject *) msg));
-#endif
     o << headers;
     const std::string body (data->get_body ());
     o << body;
diff --git a/pan/tasks/nzb.cc b/pan/tasks/nzb.cc
index 14df6f6..3677404 100644
--- a/pan/tasks/nzb.cc
+++ b/pan/tasks/nzb.cc
@@ -50,11 +50,7 @@ namespace
     {
       GMimeStream * stream = g_mime_stream_mem_new_with_buffer (txt.c_str(), txt.size());
       GMimeParser * parser = g_mime_parser_new_with_stream (stream);
-#ifdef HAVE_GMIME_30
       msg   = g_mime_parser_construct_message (parser, NULL);
-#else      
-      msg   = g_mime_parser_construct_message (parser);
-#endif      
       g_object_unref (G_OBJECT(parser));
       g_object_unref (G_OBJECT(stream));
     }
diff --git a/pan/tasks/task-post.cc b/pan/tasks/task-post.cc
index 977b012..afdba28 100644
--- a/pan/tasks/task-post.cc
+++ b/pan/tasks/task-post.cc
@@ -55,11 +55,7 @@ TaskPost :: use_nntp (NNTP * nntp)
 {
   _state.set_working ();
 
-#ifdef HAVE_GMIME_30
   char * text = g_mime_object_to_string (GMIME_OBJECT(_message), NULL);
-#else  
-  char * text = g_mime_object_to_string (GMIME_OBJECT(_message));
-#endif  
   nntp->post (text, this);
   g_free (text);
 }
diff --git a/pan/tasks/task-upload.cc b/pan/tasks/task-upload.cc
index 3008958..acf8d2f 100644
--- a/pan/tasks/task-upload.cc
+++ b/pan/tasks/task-upload.cc
@@ -194,40 +194,20 @@ TaskUpload :: prepend_headers(GMimeMessage* msg, TaskUpload::Needed * n, std::st
     //modify subject
     char buf[4096];
     if (_queue_pos != -1)
-#ifdef HAVE_GMIME_30    
       g_mime_message_set_subject (msg, build_subject_line (buf, 4096, _subject, _basename, n->partno, 
_total_parts), NULL);
-#else      
-      g_mime_message_set_subject (msg, build_subject_line (buf, 4096, _subject, _basename, n->partno, 
_total_parts));
-#endif      
 
     //modify references header
     std::string mids(_references);
     if (!_first_mid.empty()) mids += " <" + _first_mid + ">";
     if (_first_mid != n->last_mid && !_first && !n->last_mid.empty())  mids += " <" + n->last_mid + ">";
-#ifdef HAVE_GMIME_30
     if (!mids.empty()) g_mime_object_set_header ((GMimeObject *) msg, "References", mids.c_str(), NULL);
-#else    
-    if (!mids.empty()) g_mime_object_set_header ((GMimeObject *) msg, "References", mids.c_str());
-#endif
 
-#ifdef HAVE_GMIME_30
     char * all(g_mime_object_get_headers ((GMimeObject *) msg, NULL));
-#else    
-    char * all(g_mime_object_get_headers ((GMimeObject *) msg));
-#endif
     
     if (_first && _queue_pos==-1)
-#ifdef HAVE_GMIME_30
       all = g_mime_object_to_string ((GMimeObject *) msg, NULL);
-#else      
-      all = g_mime_object_to_string ((GMimeObject *) msg);
-#endif      
     else if (_first && _queue_pos == 0)
-#ifdef HAVE_GMIME_30
       all = g_mime_object_get_headers ((GMimeObject *) msg, NULL);
-#else      
-      all = g_mime_object_get_headers ((GMimeObject *) msg);
-#endif      
 
     out << all << "\n";
     if (_first && _queue_pos == -1) g_free(all);
diff --git a/pan/tasks/task-xover.cc b/pan/tasks/task-xover.cc
index 021f099..815c71c 100644
--- a/pan/tasks/task-xover.cc
+++ b/pan/tasks/task-xover.cc
@@ -399,12 +399,8 @@ TaskXOver::on_nntp_line_process(NNTP * nntp, const StringView & line)
        const char * fallback_charset = NULL; // FIXME
 
        // are we done?
-#ifdef HAVE_GMIME_30
        GDateTime * time_posted_gd = g_mime_utils_header_decode_date(date.str);
        const time_t time_posted = g_date_time_to_unix(time_posted_gd);
-#else  
-       const time_t time_posted = g_mime_utils_header_decode_date(date.str, NULL);
-#endif 
        if (_mode == DAYS && time_posted < _days_cutoff) {
                _server_to_minitasks[nntp->_server].clear();
                return;
diff --git a/pan/usenet-utils/gpg.cc b/pan/usenet-utils/gpg.cc
index 0c3ae14..b02b501 100644
--- a/pan/usenet-utils/gpg.cc
+++ b/pan/usenet-utils/gpg.cc
@@ -71,7 +71,6 @@ namespace pan
       signer.key_id = sig->cert->keyid ? sig->cert->keyid : "(null)";
       signer.fpr = sig->cert->fingerprint ? sig->cert->fingerprint : "(null)";
 
-#ifdef HAVE_GMIME_30
       switch (sig->cert->trust) {
       case GMIME_TRUST_UNKNOWN:
         signer.trust = "None";
@@ -109,40 +108,6 @@ namespace pan
       signer.expires = sig->expires;
       if (sig->expires == (time_t) 0)
         signer.never_expires = true;
-#else
-      switch (sig->cert->trust) {
-      case GMIME_CERTIFICATE_TRUST_NONE:
-        signer.trust = "None";
-        break;
-      case GMIME_CERTIFICATE_TRUST_NEVER:
-        signer.trust = "Never";
-        break;
-      case GMIME_CERTIFICATE_TRUST_UNDEFINED:
-        signer.trust = "Undefined";
-        break;
-      case GMIME_CERTIFICATE_TRUST_MARGINAL:
-        signer.trust = "Marginal";
-        break;
-      case GMIME_CERTIFICATE_TRUST_FULLY:
-        signer.trust = "Fully";
-        break;
-      case GMIME_CERTIFICATE_TRUST_ULTIMATE:
-        signer.trust = "Ultimate";
-        break;
-      }
-
-      switch (sig->status) {
-      case GMIME_SIGNATURE_STATUS_GOOD:
-        signer.status = "GOOD";
-        break;
-      case GMIME_SIGNATURE_STATUS_BAD:
-        signer.status = "BAD";
-        break;
-      case GMIME_SIGNATURE_STATUS_ERROR:
-        signer.status = "ERROR";
-        break;
-      }
-#endif
 
       signer.created = sig->created;
       signer.expires = sig->expires;
diff --git a/pan/usenet-utils/message-check.cc b/pan/usenet-utils/message-check.cc
index e383bb5..2fe017a 100644
--- a/pan/usenet-utils/message-check.cc
+++ b/pan/usenet-utils/message-check.cc
@@ -478,11 +478,7 @@ MessageCheck :: message_check (const GMimeMessage * message_const,
   }
 
   // one last error check
-#ifdef  HAVE_GMIME_30
   InternetAddressList * list (g_mime_message_get_addresses (message, GMIME_ADDRESS_TYPE_TO));
-#else  
-  InternetAddressList * list (g_mime_message_get_recipients (message, GMIME_RECIPIENT_TYPE_TO));
-#endif  
   const int n_to (internet_address_list_length (list));
   if (!group_qty && !n_to) {
     errors.insert (_("Error: No Recipients."));
diff --git a/pan/usenet-utils/mime-utils.cc b/pan/usenet-utils/mime-utils.cc
index f5d7620..3b4323d 100644
--- a/pan/usenet-utils/mime-utils.cc
+++ b/pan/usenet-utils/mime-utils.cc
@@ -815,11 +815,7 @@ namespace
       return;
 
     // get this part's content
-#ifdef HAVE_GMIME_30
     GMimeDataWrapper * content = g_mime_part_get_content (GMIME_PART (part));
-#else    
-    GMimeDataWrapper * content = g_mime_part_get_content_object (GMIME_PART (part));
-#endif
 
     if (!content)
       return;
@@ -873,11 +869,7 @@ namespace
 
           subpart_stream = tmp_part->stream;
           content = g_mime_data_wrapper_new_with_stream (subpart_stream, GMIME_CONTENT_ENCODING_DEFAULT);
-#ifdef HAVE_GMIME_30          
           g_mime_part_set_content (subpart, content);
-#else          
-          g_mime_part_set_content_object (subpart, content);
-#endif                    
           g_mime_multipart_add (GMIME_MULTIPART (multipart), GMIME_OBJECT (subpart));
 
           g_object_unref (content);
@@ -1047,19 +1039,11 @@ mime :: construct_message (GMimeStream    ** istreams,
 
   for (int i=0; i<qty; ++i) {
     GMimeParser* parser = g_mime_parser_new_with_stream (istreams[i]);
-#ifdef HAVE_GMIME_30
     messages[i] = g_mime_parser_construct_message(parser, NULL);
-#else    
-    messages[i] = g_mime_parser_construct_message(parser);
-#endif    
     g_object_unref(parser);
     g_mime_stream_reset(istreams[i]);
     parser = g_mime_parser_new_with_stream (istreams[i]);
-#ifdef HAVE_GMIME_30    
     GMimeObject* part = g_mime_parser_construct_part(parser, NULL);
-#else        
-    GMimeObject* part = g_mime_parser_construct_part(parser);
-#endif        
     g_object_unref (parser);
     parser = NULL;
     GMimeContentType * type = g_mime_object_get_content_type (part);
@@ -1402,11 +1386,7 @@ namespace
       return NULL;
     }
 
-#ifdef HAVE_GMIME_30
     GMimeDataWrapper *wrapper = g_mime_part_get_content(mime_part);
-#else    
-    GMimeDataWrapper *wrapper = g_mime_part_get_content_object(mime_part);
-#endif    
     GMimeStream *stream = g_mime_stream_mem_new();
     g_mime_data_wrapper_write_to_stream (wrapper, stream);
     GByteArray *bytes = g_mime_stream_mem_get_byte_array((GMimeStreamMem*)stream);
@@ -1456,7 +1436,6 @@ char *pan::pan_g_mime_message_get_body (GMimeMessage *message, gboolean *is_html
   return body;
 }
 
-#ifdef HAVE_GMIME_30
 void pan::pan_g_mime_message_add_recipients_from_string (GMimeMessage *message, GMimeAddressType type, const 
char *string)
 {
   InternetAddressList *addrlist;
@@ -1468,26 +1447,11 @@ void pan::pan_g_mime_message_add_recipients_from_string (GMimeMessage *message,
     }
   }
 }
-#else
-
-void pan::pan_g_mime_message_add_recipients_from_string (GMimeMessage *message, GMimeRecipientType type, 
const char *string)
-{
-  InternetAddressList *addrlist;
-  if ((addrlist = internet_address_list_parse_string (string))) {
-    for (int i = 0; i < internet_address_list_length (addrlist); ++i) {
-      InternetAddress *ia = internet_address_list_get_address (addrlist, i);
-      if (INTERNET_ADDRESS_IS_MAILBOX(ia))
-        g_mime_message_add_recipient (message, type, internet_address_get_name(ia), 
internet_address_mailbox_get_addr(INTERNET_ADDRESS_MAILBOX(ia)));
-    }
-  }
-}
-#endif
 
 /**
 * Works around a GMime bug that uses `Message-Id' rather than `Message-ID'
 */
 
-#ifdef HAVE_GMIME_30
 std::string pan::pan_g_mime_message_set_message_id (GMimeMessage *msg, const char *mid)
 {
     const char * charset = NULL; // "ISO-8859-1";  // FIXME
@@ -1498,17 +1462,6 @@ std::string pan::pan_g_mime_message_set_message_id (GMimeMessage *msg, const cha
     g_free (bracketed);
     return ret;
 }
-#else
-std::string pan::pan_g_mime_message_set_message_id (GMimeMessage *msg, const char *mid)
-{
-    g_mime_object_append_header ((GMimeObject *) msg, "Message-ID", mid);
-    char * bracketed = g_strdup_printf ("<%s>", mid);
-    g_mime_header_list_set (GMIME_OBJECT(msg)->headers, "Message-ID", bracketed);
-    std::string ret (bracketed);
-    g_free (bracketed);
-    return ret;
-}
-#endif
 
 namespace pan
 {
@@ -1523,31 +1476,19 @@ namespace pan
     content = g_mime_data_wrapper_new_with_stream (stream, GMIME_CONTENT_ENCODING_DEFAULT);
     g_object_unref (stream);
 
-#ifdef HAVE_GMIME_30
     g_mime_part_set_content (part, content);
-#else    
-    g_mime_part_set_content_object (part, content);
-#endif    
     g_object_unref (content);
   }
 #ifdef HAVE_GMIME_CRYPTO
   GMimeSignatureStatus
   get_sig_status (GMimeSignatureList *signatures)
   {
-#ifdef HAVE_GMIME_30
        GMimeSignatureStatus status = GMIME_SIGNATURE_STATUS_VALID;
-#else
-    GMimeSignatureStatus status = GMIME_SIGNATURE_STATUS_GOOD;
-#endif
     GMimeSignature *sig;
     int i;
 
     if (!signatures || signatures->array->len == 0)
-#ifdef HAVE_GMIME_30
       return GMIME_SIGNATURE_STATUS_SYS_ERROR;
-#else
-      return GMIME_SIGNATURE_STATUS_ERROR;
-#endif
 
     for (i = 0; i < g_mime_signature_list_length (signatures); i++) {
       sig = g_mime_signature_list_get_signature (signatures, i);
@@ -1581,30 +1522,18 @@ namespace pan
 
     if (info.type == GPG_VERIFY)
     {
-#ifdef HAVE_GMIME_30
       GMimeSignatureList * sigs = g_mime_multipart_signed_verify (mps, GMIME_VERIFY_NONE, &info.err);
-#else
-      GMimeSignatureList * sigs = g_mime_multipart_signed_verify (mps, gpg_ctx, &info.err);
-#endif
       if (info.err || !sigs) return false;
       if (sigs) info.no_sigs = false;
       fill_signer_info(info.signers, sigs);
-#ifdef HAVE_GMIME_30
       bool status = get_sig_status(sigs) == GMIME_SIGNATURE_STATUS_VALID;
-#else
-      bool status = get_sig_status(sigs) == GMIME_SIGNATURE_STATUS_GOOD;
-#endif
       g_object_unref(sigs);
       return status;
     }
 
     if (info.type == GPG_DECODE)
     {
-#ifdef HAVE_GMIME_30
       info.decrypted = g_mime_multipart_encrypted_decrypt (mpe, GMIME_DECRYPT_NONE, NULL, &info.result, 
&info.err);
-#else
-      info.decrypted = g_mime_multipart_encrypted_decrypt (mpe, gpg_ctx, &info.result, &info.err);
-#endif
       if (!info.decrypted)
         if (info.err) return false;
 
@@ -1613,11 +1542,7 @@ namespace pan
       {
         info.no_sigs = false;
         fill_signer_info(info.signers, sigs);
-#ifdef HAVE_GMIME_30
         bool status = get_sig_status(info.result->signatures) == GMIME_SIGNATURE_STATUS_VALID;
-#else
-        bool status = get_sig_status(info.result->signatures) == GMIME_SIGNATURE_STATUS_GOOD;
-#endif
         g_object_unref(sigs);
         return status;
       }
@@ -1646,18 +1571,12 @@ namespace pan
     mps = g_mime_multipart_signed_new ();
 
     /* sign the part */
-#ifdef HAVE_GMIME_30
     GMimeObject *gmo;
     gmo = g_mime_message_get_mime_part (body);
     mps = g_mime_multipart_signed_sign (gpg_ctx, gmo, uid.c_str(), &err);
     if (mps == NULL)
-#else
-    if (g_mime_multipart_signed_sign (mps, GMIME_OBJECT (part), gpg_ctx, uid.c_str(), 
GMIME_DIGEST_ALGO_SHA1, &err) <0)
-#endif
     {
-#ifdef HAVE_GMIME_30
       g_object_unref(gmo);
-#endif
       g_object_unref(mps);
       g_object_unref(G_OBJECT(part));
       return 0;
@@ -1671,9 +1590,7 @@ namespace pan
     g_mime_message_set_mime_part(body,GMIME_OBJECT(mps));
     g_object_unref(G_OBJECT(part));
     g_object_unref(mps);
-#ifdef HAVE_GMIME_30
     g_object_unref(gmo);
-#endif
     return body;
   }
 
@@ -1688,30 +1605,21 @@ namespace pan
 
     GMimeMultipartEncrypted * mpe = g_mime_multipart_encrypted_new();
 
-#ifdef HAVE_GMIME_30
        GMimeMultipartEncrypted *gmme;
        gmme = g_mime_multipart_encrypted_encrypt(gpg_ctx, GMIME_OBJECT (part), sign, uid.c_str(),
                                            GMIME_ENCRYPT_NONE, rcp, &err);
     if (gmme == NULL)
-#else
-    if (g_mime_multipart_encrypted_encrypt(mpe, GMIME_OBJECT (part), gpg_ctx, sign,
-                                           uid.c_str(), GMIME_DIGEST_ALGO_SHA1, rcp, &err) < 0)
-#endif
     {
       g_object_unref(mpe);
       g_object_unref(G_OBJECT(part));
-#ifdef HAVE_GMIME_30
       g_object_unref(gmme);
-#endif      
       return false;
     }
 
     g_mime_message_set_mime_part(body,GMIME_OBJECT(mpe));
     g_object_unref(G_OBJECT(part));
     g_object_unref(mpe);
-#ifdef HAVE_GMIME_30
     g_object_unref(gmme);
-#endif    
 
     return true;
   }
diff --git a/pan/usenet-utils/mime-utils.h b/pan/usenet-utils/mime-utils.h
index ef5d713..4046219 100644
--- a/pan/usenet-utils/mime-utils.h
+++ b/pan/usenet-utils/mime-utils.h
@@ -107,11 +107,7 @@ namespace pan
   };
 
   char *pan_g_mime_message_get_body (GMimeMessage *message, gboolean *is_html);
-#ifdef  HAVE_GMIME_30
   void pan_g_mime_message_add_recipients_from_string (GMimeMessage *message, GMimeAddressType type, const 
char *string);
-#else
-  void pan_g_mime_message_add_recipients_from_string (GMimeMessage *message, GMimeRecipientType type, const 
char *string);
-#endif  
   std::string pan_g_mime_message_set_message_id (GMimeMessage *msg, const char *mid);
 
   extern iconv_t conv;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]