pkgsrc-WIP-changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

pan2-git: increasingly desperate patches



Module Name:	pkgsrc-wip
Committed By:	Olaf Seibert <rhialto%falu.nl@localhost>
Pushed By:	rhialto
Date:		Fri Jun 25 23:43:10 2021 +0200
Changeset:	bfda22d1e9ac6133afdf0ebe6c1c4bda7cf2096d

Modified Files:
	pan2-git/distinfo
Added Files:
	pan2-git/patches/patch-zz-001-filenames
	pan2-git/patches/patch-zz-002-glib-header
Removed Files:
	pan2-git/patches/patch-filenames

Log Message:
pan2-git: increasingly desperate patches

since the Gnome upstream as more or less orphaned this software.

To see a diff of this commit:
https://wip.pkgsrc.org/cgi-bin/gitweb.cgi?p=pkgsrc-wip.git;a=commitdiff;h=bfda22d1e9ac6133afdf0ebe6c1c4bda7cf2096d

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

diffstat:
 pan2-git/distinfo                         |   3 +-
 pan2-git/patches/patch-filenames          | 280 -----------
 pan2-git/patches/patch-zz-001-filenames   | 280 +++++++++++
 pan2-git/patches/patch-zz-002-glib-header | 756 ++++++++++++++++++++++++++++++
 4 files changed, 1038 insertions(+), 281 deletions(-)

diffs:
diff --git a/pan2-git/distinfo b/pan2-git/distinfo
index 5883bca95d..25f91cc2e7 100644
--- a/pan2-git/distinfo
+++ b/pan2-git/distinfo
@@ -1,5 +1,6 @@
 $NetBSD$
 
 SHA1 (patch-configure.ac) = e71544a02c6c3fa09fe79f78eb39ebd31e0d8a3c
-SHA1 (patch-filenames) = bd7c49c59be49ba899b1c426aa69968c2443a12c
 SHA1 (patch-pan-general-e-util.cc) = c252f074b139b100f3f879261b1ba894b5f3350c
+SHA1 (patch-zz-001-filenames) = bd7c49c59be49ba899b1c426aa69968c2443a12c
+SHA1 (patch-zz-002-glib-header) = 57f5df96809a93af1dab0e309b7e6cfc7e613670
diff --git a/pan2-git/patches/patch-filenames b/pan2-git/patches/patch-filenames
deleted file mode 100644
index 9969a27501..0000000000
--- a/pan2-git/patches/patch-filenames
+++ /dev/null
@@ -1,280 +0,0 @@
-$NetBSD$
-
-diff --git a/pan/tasks/decoder.cc b/pan/tasks/decoder.cc
-index b4c21ae..04ea40a 100644
---- pan/tasks/decoder.cc
-+++ pan/tasks/decoder.cc
-@@ -61,7 +61,8 @@ Decoder :: enqueue (TaskArticle                     * task,
-                     const strings_t                 & input_files,
-                     const TaskArticle::SaveMode     & save_mode,
-                     const TaskArticle::SaveOptions  & options,
--                    const StringView                & filename)
-+                    const StringView                & filename,
-+                    const Article                   & article)
- {
-   disable_progress_update ();
- 
-@@ -71,6 +72,7 @@ Decoder :: enqueue (TaskArticle                     * task,
-   this->save_mode = save_mode;
-   this->options = options;
-   this->attachment_filename = filename;
-+  this->article_subject = article.subject;
- 
-   mark_read = false;
- 
-@@ -149,7 +151,12 @@ Decoder :: do_work()
-       {
- 
-         if (was_cancelled()) break;
--        if ((res = UULoadFileWithPartNo (const_cast<char*>(it->c_str()), 0, 0, ++i)) != UURET_OK) {
-+        const char *global_subject = NULL;
-+        // In SAVE_ALL mode, article_subject is the subject from the NZB file, if known
-+        if (options == TaskArticle::SAVE_ALL && !article_subject.empty()) {
-+          global_subject = article_subject.c_str();
-+        }
-+        if ((res = UULoadFileWithPartNo (const_cast<char*>(it->c_str()), 0, 0, ++i, global_subject)) != UURET_OK) {
-           g_snprintf(buf, bufsz,
-                      _("Error reading from %s: %s"),
-                      it->c_str(),
-@@ -171,8 +178,8 @@ Decoder :: do_work()
-       {
-         // skip all other attachments in SAVE_AS mode (single attachment download)
-         /// DBG why is this failing if article isn't cached????
--        if (!attachment_filename.empty())
--          if(strcmp(item->filename, attachment_filename.str) != 0 && options == TaskArticle::SAVE_AS) continue;
-+        if (options == TaskArticle::SAVE_AS && !attachment_filename.empty())
-+          if(strcmp(item->filename, attachment_filename.str) != 0) continue;
- 
-         file_errors.clear ();
- 
-diff --git a/pan/tasks/decoder.h b/pan/tasks/decoder.h
-index 74403c1..c0cff51 100644
---- pan/tasks/decoder.h
-+++ pan/tasks/decoder.h
-@@ -61,7 +61,8 @@ namespace pan
-                     const strings_t                & input_files,
-                     const TaskArticle::SaveMode    & save_mode,
-                     const TaskArticle::SaveOptions & options,
--                    const StringView               & filename);
-+                    const StringView               & filename,
-+                    const Article                  & article);
- 
-     public:
- 
-@@ -82,6 +83,7 @@ namespace pan
-       TaskArticle::SaveMode save_mode;
-       TaskArticle::SaveOptions options;
-       StringView attachment_filename;
-+      Quark article_subject;
- 
-       // These are set in the worker thread and polled in the main thread.
-       Mutex mut;
-diff --git a/pan/tasks/task-article.cc b/pan/tasks/task-article.cc
-index 9c96b7d..beaed60 100644
---- pan/tasks/task-article.cc
-+++ pan/tasks/task-article.cc
-@@ -350,7 +350,7 @@ TaskArticle :: use_decoder (Decoder* decoder)
-   _state.set_working();
-   const Article::mid_sequence_t mids (_article.get_part_mids());
-   ArticleCache :: strings_t filenames (_cache.get_filenames (mids));
--  _decoder->enqueue (this, _save_path, filenames, _save_mode, _options, _attachment);
-+  _decoder->enqueue (this, _save_path, filenames, _save_mode, _options, _attachment, _article);
-   set_status_va (_("Decoding %s"), _article.subject.c_str());
-   debug ("decoder thread was free, enqueued work");
- }
-diff --git a/uulib/uucheck.c b/uulib/uucheck.c
-index 98cb8e0..0f128d0 100644
---- uulib/uucheck.c
-+++ uulib/uucheck.c
-@@ -86,6 +86,12 @@ static char *nofname = "UNKNOWN";
- 
- static char *fnchars = "._-~!";
- 
-+/*
-+ * special characters we forbid a quoted filename to have
-+ */
-+
-+static char *fnqchars = "/:\\\"";
-+
- /*
-  * Policy for extracting a part number from the subject line.
-  * usually, look for part numbers in () brackets first, then in []
-@@ -148,23 +154,27 @@ UUGetFileName (char *subject, char *ptonum, char *ptonend)
-   }
- 
-   /*
--   * If the file was encoded by uuenview, then the filename is enclosed
--   * in [brackets]. But check what's inside these bracket's, try not to
--   * fall for something other than a filename
-+   * Try try to find a file name between quotes.
-+   * With yEnc this format is compulsory.
-    */
- 
-   ptr = subject;
--  while ((iter = strchr (ptr, '[')) != NULL) {
--    if (strchr (iter, ']') == NULL) {
-+  while ((iter = strchr (ptr, '"')) != NULL) {
-+    /* Don't overlap the sequence number */
-+    if (ptonum && ptonend && iter >= ptonum && iter <= ptonend) {
-       ptr = iter + 1;
-       continue;
-     }
-     iter++;
-+    if (strchr (iter, '"') == NULL) {
-+      ptr = iter + 1;
-+      continue;
-+    }
-     while (isspace (*iter))
-       iter++;
-     count = length = alflag = 0;
-     while (iter[count] && 
--	   (isalnum (iter[count]) || strchr (fnchars, iter[count])!=NULL)) {
-+	   (strchr (fnqchars, iter[count])==NULL)) {
-       if (isalpha (iter[count]))
- 	alflag++;
-       count++;
-@@ -173,10 +183,15 @@ UUGetFileName (char *subject, char *ptonum, char *ptonend)
-       ptr = iter + 1;
-       continue;
-     }
-+    /* Don't overlap the sequence number */
-+    if (ptonum && ptonend && iter+count >= ptonum && iter+count <= ptonend) {
-+      ptr = iter + 1;
-+      continue;
-+    }
-     length = count;
-     while (isspace (iter[count]))
-       count++;
--    if (iter[count] == ']') {
-+    if (iter[count] == '"') {
-       ptr = iter;
-       break;
-     }
-@@ -184,6 +199,46 @@ UUGetFileName (char *subject, char *ptonum, char *ptonend)
-     ptr = iter + 1;
-   }
- 
-+
-+  /*
-+   * If the file was encoded by uuenview, then the filename is enclosed
-+   * in [brackets]. But check what's inside these bracket's, try not to
-+   * fall for something other than a filename
-+   */
-+
-+  if (length == 0) {
-+    ptr = subject;
-+    while ((iter = strchr (ptr, '[')) != NULL) {
-+      if (strchr (iter, ']') == NULL) {
-+        ptr = iter + 1;
-+        continue;
-+      }
-+      iter++;
-+      while (isspace (*iter))
-+        iter++;
-+      count = length = alflag = 0;
-+      while (iter[count] &&
-+             (isalnum (iter[count]) || iter[count] == ' ' || strchr (fnchars, iter[count])!=NULL)) {
-+        if (isalpha (iter[count]))
-+          alflag++;
-+        count++;
-+      }
-+      if (count<4 || alflag==0) {
-+        ptr = iter + 1;
-+        continue;
-+      }
-+      length = count;
-+      while (isspace (iter[count]))
-+        count++;
-+      if (iter[count] == ']') {
-+        ptr = iter;
-+        break;
-+      }
-+      length = 0;
-+      ptr = iter + 1;
-+    }
-+  }
-+
-   /*
-    * new filename detection routine, fists mostly for files by ftp-by-email
-    * servers that create subject lines with ftp.host.address:/full/path/file
-diff --git a/uulib/uudeview.h b/uulib/uudeview.h
-index 753279d..16ad363 100644
---- uulib/uudeview.h
-+++ uulib/uudeview.h
-@@ -206,7 +206,7 @@ int	UUEXPORT UUSetFNameFilter	_ANSI_ARGS_((void *,
- 								 char *)));
- char *	UUEXPORT UUFNameFilter		_ANSI_ARGS_((char *));
- int	UUEXPORT UULoadFile		_ANSI_ARGS_((char *, char *, int));
--int	UUEXPORT UULoadFileWithPartNo	_ANSI_ARGS_((char *, char *, int, int));
-+int	UUEXPORT UULoadFileWithPartNo	_ANSI_ARGS_((char *, char *, int, int, const char *));
- uulist *UUEXPORT UUGetFileListItem	_ANSI_ARGS_((int));
- int	UUEXPORT UURenameFile		_ANSI_ARGS_((uulist *, char *));
- int	UUEXPORT UUDecodeToTemp		_ANSI_ARGS_((uulist *));
-diff --git a/uulib/uulib.c b/uulib/uulib.c
-index 2d6816d..1286f43 100644
---- uulib/uulib.c
-+++ uulib/uulib.c
-@@ -655,11 +655,11 @@ UUFNameFilter (char *fname)
- int UUEXPORT
- UULoadFile (char *filename, char *fileid, int delflag)
- {
--  return UULoadFileWithPartNo(filename, fileid, delflag, -1);
-+  return UULoadFileWithPartNo(filename, fileid, delflag, -1, NULL);
- }
- 
- int UUEXPORT
--UULoadFileWithPartNo (char *filename, char *fileid, int delflag, int partno)
-+UULoadFileWithPartNo (char *filename, char *fileid, int delflag, int partno, const char *global_subject)
- {
-   int res, sr, count=0;
-   struct stat finfo;
-@@ -667,6 +667,7 @@ UULoadFileWithPartNo (char *filename, char *fileid, int delflag, int partno)
-   uufile *fload;
-   itbd *killem;
-   FILE *datei;
-+  int overridden_subject;
- 
-   if ((datei = fopen (filename, "rb")) == NULL) {
-     UUMessage (uulib_id, __LINE__, UUMSG_ERROR,
-@@ -779,6 +780,23 @@ UULoadFileWithPartNo (char *filename, char *fileid, int delflag, int partno)
-       continue;
-     }
- 
-+    if (partno != -1 && global_subject &&
-+        loaded->uudet == YENC_ENCODED && /* only yEnc has a filename in each part */
-+        (loaded->subject && loaded->filename &&
-+         strstr(loaded->subject, loaded->filename) == NULL)) {
-+      /*
-+       * Sometimes articles derived from an NZB file have corrupt Subject: lines.
-+       * That also makes that UUInsertPartToList() fails to combine files properly.
-+       * We detect this situation by checking if the filename from the
-+       * part can be found in the Subject: header.
-+       */
-+      _FP_free(loaded->subject);
-+      loaded->subject = _FP_strdup((char *)global_subject);
-+      overridden_subject = 1;
-+    } else {
-+      overridden_subject = 0;
-+    }
-+
-     if ((fload = UUPreProcessPart (loaded, &res)) == NULL) {
-       /*
-        * no useful data found
-@@ -793,6 +811,17 @@ UULoadFileWithPartNo (char *filename, char *fileid, int delflag, int partno)
-       continue;
-     }
- 
-+    if (overridden_subject) {
-+      /*
-+       * If the yEnc file gives a different file name than the subject,
-+       * this is a security risk.
-+       *
-+       * Override the part file name with the one derived from the global subject.
-+       */
-+      _FP_free(fload->filename);
-+      fload->filename = _FP_strdup(fload->subfname);
-+    }
-+
-     if ((loaded->subject && *(loaded->subject)) ||
- 	(loaded->mimeid  && *(loaded->mimeid))  ||
- 	(loaded->filename&& *(loaded->filename))||
diff --git a/pan2-git/patches/patch-zz-001-filenames b/pan2-git/patches/patch-zz-001-filenames
new file mode 100644
index 0000000000..9969a27501
--- /dev/null
+++ b/pan2-git/patches/patch-zz-001-filenames
@@ -0,0 +1,280 @@
+$NetBSD$
+
+diff --git a/pan/tasks/decoder.cc b/pan/tasks/decoder.cc
+index b4c21ae..04ea40a 100644
+--- pan/tasks/decoder.cc
++++ pan/tasks/decoder.cc
+@@ -61,7 +61,8 @@ Decoder :: enqueue (TaskArticle                     * task,
+                     const strings_t                 & input_files,
+                     const TaskArticle::SaveMode     & save_mode,
+                     const TaskArticle::SaveOptions  & options,
+-                    const StringView                & filename)
++                    const StringView                & filename,
++                    const Article                   & article)
+ {
+   disable_progress_update ();
+ 
+@@ -71,6 +72,7 @@ Decoder :: enqueue (TaskArticle                     * task,
+   this->save_mode = save_mode;
+   this->options = options;
+   this->attachment_filename = filename;
++  this->article_subject = article.subject;
+ 
+   mark_read = false;
+ 
+@@ -149,7 +151,12 @@ Decoder :: do_work()
+       {
+ 
+         if (was_cancelled()) break;
+-        if ((res = UULoadFileWithPartNo (const_cast<char*>(it->c_str()), 0, 0, ++i)) != UURET_OK) {
++        const char *global_subject = NULL;
++        // In SAVE_ALL mode, article_subject is the subject from the NZB file, if known
++        if (options == TaskArticle::SAVE_ALL && !article_subject.empty()) {
++          global_subject = article_subject.c_str();
++        }
++        if ((res = UULoadFileWithPartNo (const_cast<char*>(it->c_str()), 0, 0, ++i, global_subject)) != UURET_OK) {
+           g_snprintf(buf, bufsz,
+                      _("Error reading from %s: %s"),
+                      it->c_str(),
+@@ -171,8 +178,8 @@ Decoder :: do_work()
+       {
+         // skip all other attachments in SAVE_AS mode (single attachment download)
+         /// DBG why is this failing if article isn't cached????
+-        if (!attachment_filename.empty())
+-          if(strcmp(item->filename, attachment_filename.str) != 0 && options == TaskArticle::SAVE_AS) continue;
++        if (options == TaskArticle::SAVE_AS && !attachment_filename.empty())
++          if(strcmp(item->filename, attachment_filename.str) != 0) continue;
+ 
+         file_errors.clear ();
+ 
+diff --git a/pan/tasks/decoder.h b/pan/tasks/decoder.h
+index 74403c1..c0cff51 100644
+--- pan/tasks/decoder.h
++++ pan/tasks/decoder.h
+@@ -61,7 +61,8 @@ namespace pan
+                     const strings_t                & input_files,
+                     const TaskArticle::SaveMode    & save_mode,
+                     const TaskArticle::SaveOptions & options,
+-                    const StringView               & filename);
++                    const StringView               & filename,
++                    const Article                  & article);
+ 
+     public:
+ 
+@@ -82,6 +83,7 @@ namespace pan
+       TaskArticle::SaveMode save_mode;
+       TaskArticle::SaveOptions options;
+       StringView attachment_filename;
++      Quark article_subject;
+ 
+       // These are set in the worker thread and polled in the main thread.
+       Mutex mut;
+diff --git a/pan/tasks/task-article.cc b/pan/tasks/task-article.cc
+index 9c96b7d..beaed60 100644
+--- pan/tasks/task-article.cc
++++ pan/tasks/task-article.cc
+@@ -350,7 +350,7 @@ TaskArticle :: use_decoder (Decoder* decoder)
+   _state.set_working();
+   const Article::mid_sequence_t mids (_article.get_part_mids());
+   ArticleCache :: strings_t filenames (_cache.get_filenames (mids));
+-  _decoder->enqueue (this, _save_path, filenames, _save_mode, _options, _attachment);
++  _decoder->enqueue (this, _save_path, filenames, _save_mode, _options, _attachment, _article);
+   set_status_va (_("Decoding %s"), _article.subject.c_str());
+   debug ("decoder thread was free, enqueued work");
+ }
+diff --git a/uulib/uucheck.c b/uulib/uucheck.c
+index 98cb8e0..0f128d0 100644
+--- uulib/uucheck.c
++++ uulib/uucheck.c
+@@ -86,6 +86,12 @@ static char *nofname = "UNKNOWN";
+ 
+ static char *fnchars = "._-~!";
+ 
++/*
++ * special characters we forbid a quoted filename to have
++ */
++
++static char *fnqchars = "/:\\\"";
++
+ /*
+  * Policy for extracting a part number from the subject line.
+  * usually, look for part numbers in () brackets first, then in []
+@@ -148,23 +154,27 @@ UUGetFileName (char *subject, char *ptonum, char *ptonend)
+   }
+ 
+   /*
+-   * If the file was encoded by uuenview, then the filename is enclosed
+-   * in [brackets]. But check what's inside these bracket's, try not to
+-   * fall for something other than a filename
++   * Try try to find a file name between quotes.
++   * With yEnc this format is compulsory.
+    */
+ 
+   ptr = subject;
+-  while ((iter = strchr (ptr, '[')) != NULL) {
+-    if (strchr (iter, ']') == NULL) {
++  while ((iter = strchr (ptr, '"')) != NULL) {
++    /* Don't overlap the sequence number */
++    if (ptonum && ptonend && iter >= ptonum && iter <= ptonend) {
+       ptr = iter + 1;
+       continue;
+     }
+     iter++;
++    if (strchr (iter, '"') == NULL) {
++      ptr = iter + 1;
++      continue;
++    }
+     while (isspace (*iter))
+       iter++;
+     count = length = alflag = 0;
+     while (iter[count] && 
+-	   (isalnum (iter[count]) || strchr (fnchars, iter[count])!=NULL)) {
++	   (strchr (fnqchars, iter[count])==NULL)) {
+       if (isalpha (iter[count]))
+ 	alflag++;
+       count++;
+@@ -173,10 +183,15 @@ UUGetFileName (char *subject, char *ptonum, char *ptonend)
+       ptr = iter + 1;
+       continue;
+     }
++    /* Don't overlap the sequence number */
++    if (ptonum && ptonend && iter+count >= ptonum && iter+count <= ptonend) {
++      ptr = iter + 1;
++      continue;
++    }
+     length = count;
+     while (isspace (iter[count]))
+       count++;
+-    if (iter[count] == ']') {
++    if (iter[count] == '"') {
+       ptr = iter;
+       break;
+     }
+@@ -184,6 +199,46 @@ UUGetFileName (char *subject, char *ptonum, char *ptonend)
+     ptr = iter + 1;
+   }
+ 
++
++  /*
++   * If the file was encoded by uuenview, then the filename is enclosed
++   * in [brackets]. But check what's inside these bracket's, try not to
++   * fall for something other than a filename
++   */
++
++  if (length == 0) {
++    ptr = subject;
++    while ((iter = strchr (ptr, '[')) != NULL) {
++      if (strchr (iter, ']') == NULL) {
++        ptr = iter + 1;
++        continue;
++      }
++      iter++;
++      while (isspace (*iter))
++        iter++;
++      count = length = alflag = 0;
++      while (iter[count] &&
++             (isalnum (iter[count]) || iter[count] == ' ' || strchr (fnchars, iter[count])!=NULL)) {
++        if (isalpha (iter[count]))
++          alflag++;
++        count++;
++      }
++      if (count<4 || alflag==0) {
++        ptr = iter + 1;
++        continue;
++      }
++      length = count;
++      while (isspace (iter[count]))
++        count++;
++      if (iter[count] == ']') {
++        ptr = iter;
++        break;
++      }
++      length = 0;
++      ptr = iter + 1;
++    }
++  }
++
+   /*
+    * new filename detection routine, fists mostly for files by ftp-by-email
+    * servers that create subject lines with ftp.host.address:/full/path/file
+diff --git a/uulib/uudeview.h b/uulib/uudeview.h
+index 753279d..16ad363 100644
+--- uulib/uudeview.h
++++ uulib/uudeview.h
+@@ -206,7 +206,7 @@ int	UUEXPORT UUSetFNameFilter	_ANSI_ARGS_((void *,
+ 								 char *)));
+ char *	UUEXPORT UUFNameFilter		_ANSI_ARGS_((char *));
+ int	UUEXPORT UULoadFile		_ANSI_ARGS_((char *, char *, int));
+-int	UUEXPORT UULoadFileWithPartNo	_ANSI_ARGS_((char *, char *, int, int));
++int	UUEXPORT UULoadFileWithPartNo	_ANSI_ARGS_((char *, char *, int, int, const char *));
+ uulist *UUEXPORT UUGetFileListItem	_ANSI_ARGS_((int));
+ int	UUEXPORT UURenameFile		_ANSI_ARGS_((uulist *, char *));
+ int	UUEXPORT UUDecodeToTemp		_ANSI_ARGS_((uulist *));
+diff --git a/uulib/uulib.c b/uulib/uulib.c
+index 2d6816d..1286f43 100644
+--- uulib/uulib.c
++++ uulib/uulib.c
+@@ -655,11 +655,11 @@ UUFNameFilter (char *fname)
+ int UUEXPORT
+ UULoadFile (char *filename, char *fileid, int delflag)
+ {
+-  return UULoadFileWithPartNo(filename, fileid, delflag, -1);
++  return UULoadFileWithPartNo(filename, fileid, delflag, -1, NULL);
+ }
+ 
+ int UUEXPORT
+-UULoadFileWithPartNo (char *filename, char *fileid, int delflag, int partno)
++UULoadFileWithPartNo (char *filename, char *fileid, int delflag, int partno, const char *global_subject)
+ {
+   int res, sr, count=0;
+   struct stat finfo;
+@@ -667,6 +667,7 @@ UULoadFileWithPartNo (char *filename, char *fileid, int delflag, int partno)
+   uufile *fload;
+   itbd *killem;
+   FILE *datei;
++  int overridden_subject;
+ 
+   if ((datei = fopen (filename, "rb")) == NULL) {
+     UUMessage (uulib_id, __LINE__, UUMSG_ERROR,
+@@ -779,6 +780,23 @@ UULoadFileWithPartNo (char *filename, char *fileid, int delflag, int partno)
+       continue;
+     }
+ 
++    if (partno != -1 && global_subject &&
++        loaded->uudet == YENC_ENCODED && /* only yEnc has a filename in each part */
++        (loaded->subject && loaded->filename &&
++         strstr(loaded->subject, loaded->filename) == NULL)) {
++      /*
++       * Sometimes articles derived from an NZB file have corrupt Subject: lines.
++       * That also makes that UUInsertPartToList() fails to combine files properly.
++       * We detect this situation by checking if the filename from the
++       * part can be found in the Subject: header.
++       */
++      _FP_free(loaded->subject);
++      loaded->subject = _FP_strdup((char *)global_subject);
++      overridden_subject = 1;
++    } else {
++      overridden_subject = 0;
++    }
++
+     if ((fload = UUPreProcessPart (loaded, &res)) == NULL) {
+       /*
+        * no useful data found
+@@ -793,6 +811,17 @@ UULoadFileWithPartNo (char *filename, char *fileid, int delflag, int partno)
+       continue;
+     }
+ 
++    if (overridden_subject) {
++      /*
++       * If the yEnc file gives a different file name than the subject,
++       * this is a security risk.
++       *
++       * Override the part file name with the one derived from the global subject.
++       */
++      _FP_free(fload->filename);
++      fload->filename = _FP_strdup(fload->subfname);
++    }
++
+     if ((loaded->subject && *(loaded->subject)) ||
+ 	(loaded->mimeid  && *(loaded->mimeid))  ||
+ 	(loaded->filename&& *(loaded->filename))||
diff --git a/pan2-git/patches/patch-zz-002-glib-header b/pan2-git/patches/patch-zz-002-glib-header
new file mode 100644
index 0000000000..a92e792701
--- /dev/null
+++ b/pan2-git/patches/patch-zz-002-glib-header
@@ -0,0 +1,756 @@
+commit 39ba1ad39b6912a342a99e3a949149348a9c4148
+Author: Olaf Seibert <rhialto%falu.nl@localhost>
+Date:   Mon Apr 5 16:11:49 2021 +0200
+
+    Take <glib.h> out of extern "C"
+    
+    and do the same for other <glib/*.h> files.
+
+diff --git a/pan/data-impl/article-filter.cc b/pan/data-impl/article-filter.cc
+index b06d0c2..f424738 100644
+--- pan/data-impl/article-filter.cc
++++ pan/data-impl/article-filter.cc
+@@ -25,10 +25,7 @@
+ #include <gmime/gmime.h>
+ 
+ //#include <glib/gprintf.h>
+-extern "C"
+-{
+-  #include <glib.h>
+-}
++#include <glib.h>
+ 
+ #include "article-filter.h"
+ 
+diff --git a/pan/data-impl/data-io.cc b/pan/data-impl/data-io.cc
+index bea1a90..d938634 100644
+--- pan/data-impl/data-io.cc
++++ pan/data-impl/data-io.cc
+@@ -27,9 +27,9 @@ extern "C" {
+   #include <sys/types.h> // for chmod
+   #include <sys/stat.h> // for chmod
+   #include <unistd.h>
+-  #include <glib.h>
+-  #include <glib/gi18n.h>
+ }
++#include <glib.h>
++#include <glib/gi18n.h>
+ #include <pan/general/debug.h>
+ #include <pan/general/file-util.h>
+ #include <pan/general/line-reader.h>
+diff --git a/pan/data-impl/groups.cc b/pan/data-impl/groups.cc
+index 244feb9..da0183a 100644
+--- pan/data-impl/groups.cc
++++ pan/data-impl/groups.cc
+@@ -29,9 +29,9 @@
+ #include <vector>
+ 
+ #include <glib.h>
++#include <glib/gi18n.h>
+ extern "C" {
+   #include <unistd.h>
+-  #include <glib/gi18n.h>
+ }
+ 
+ #include <pan/general/debug.h>
+diff --git a/pan/data-impl/headers.cc b/pan/data-impl/headers.cc
+index f8c4466..16d5672 100644
+--- pan/data-impl/headers.cc
++++ pan/data-impl/headers.cc
+@@ -25,10 +25,10 @@
+ #include <string>
+ #include <cmath>
+ #include <glib.h>
++#include <glib/gi18n.h>
+ extern "C" {
+   #include <sys/types.h> // for chmod
+   #include <sys/stat.h> // for chmod
+-  #include <glib/gi18n.h>
+ }
+ #include <pan/general/debug.h>
+ #include <pan/general/log.h>
+diff --git a/pan/data-impl/profiles.cc b/pan/data-impl/profiles.cc
+index e999fda..a6e6bb5 100644
+--- pan/data-impl/profiles.cc
++++ pan/data-impl/profiles.cc
+@@ -26,9 +26,9 @@
+ extern "C" {
+   #include <sys/types.h> // for chmod
+   #include <sys/stat.h> // for chmod
+-  #include <glib.h>
+-  #include <glib/gi18n.h>
+ }
++#include <glib.h>
++#include <glib/gi18n.h>
+ #include <pan/general/debug.h>
+ #include <pan/general/string-view.h>
+ #include <pan/general/file-util.h>
+diff --git a/pan/data-impl/server.cc b/pan/data-impl/server.cc
+index 9ea55d4..b23782f 100644
+--- pan/data-impl/server.cc
++++ pan/data-impl/server.cc
+@@ -25,10 +25,8 @@
+ #include <map>
+ #include <set>
+ #include <vector>
+-extern "C" {
+-  #include <glib.h> // for GMarkup
+-  #include <glib/gi18n.h>
+-}
++#include <glib.h> // for GMarkup
++#include <glib/gi18n.h>
+ #include <pan/general/debug.h>
+ #include <pan/general/file-util.h>
+ #include <pan/general/log.h>
+diff --git a/pan/data/article-cache.h b/pan/data/article-cache.h
+index 2ac722b..1304bfe 100644
+--- pan/data/article-cache.h
++++ pan/data/article-cache.h
+@@ -22,9 +22,7 @@
+ 
+ #include <map>
+ #include <vector>
+-extern "C" {
+-  #include <glib.h> // for guint64
+-}
++#include <glib.h> // for guint64
+ #include <pan/general/string-view.h>
+ #include <pan/general/quark.h>
+ 
+diff --git a/pan/data/cert-store.cc b/pan/data/cert-store.cc
+index 340fc8b..f6cd46e 100644
+--- pan/data/cert-store.cc
++++ pan/data/cert-store.cc
+@@ -34,10 +34,8 @@
+ #include <iostream>
+ #include <string>
+ 
+-extern "C" {
+ #include <glib/gi18n.h>
+ #include <glib.h>
+-}
+ 
+ #include <pan/general/debug.h>
+ #include <pan/general/e-util.h>
+diff --git a/pan/data/encode-cache.cc b/pan/data/encode-cache.cc
+index 3a82ea9..eecd1d1 100644
+--- pan/data/encode-cache.cc
++++ pan/data/encode-cache.cc
+@@ -29,10 +29,10 @@ extern "C"
+   #include <unistd.h>
+   #include <dirent.h>
+ 
+-  #include <glib.h>
+-  #include <glib/gi18n.h>
+   #include <gmime/gmime.h>
+ }
++#include <glib.h>
++#include <glib/gi18n.h>
+ 
+ #include <pan/general/debug.h>
+ #include <pan/general/file-util.h>
+diff --git a/pan/data/encode-cache.h b/pan/data/encode-cache.h
+index 8bbd530..1affc0c 100644
+--- pan/data/encode-cache.h
++++ pan/data/encode-cache.h
+@@ -22,9 +22,7 @@
+ 
+ #include <map>
+ #include <vector>
+-extern "C" {
+-  #include <glib.h> // for guint64
+-}
++#include <glib.h> // for guint64
+ #include <pan/general/string-view.h>
+ #include <pan/general/quark.h>
+ 
+diff --git a/pan/general/e-util.cc b/pan/general/e-util.cc
+index af5ccd0..62879ee 100644
+--- pan/general/e-util.cc
++++ pan/general/e-util.cc
+@@ -26,9 +26,9 @@
+ #include <ctime>
+ extern "C" {
+   #include <ctype.h>
+-  #include <glib.h>
+-  #include <glib/gi18n.h>
+ }
++#include <glib.h>
++#include <glib/gi18n.h>
+ #include "debug.h"
+ #include "e-util.h"
+ 
+diff --git a/pan/general/file-util.cc b/pan/general/file-util.cc
+index 02e9ed1..9efa269 100644
+--- pan/general/file-util.cc
++++ pan/general/file-util.cc
+@@ -27,12 +27,12 @@ extern "C"
+   #include <unistd.h>
+   #include <sys/stat.h>
+   #include <sys/types.h>
+-  #include <glib.h>
+-  #include <glib/gi18n.h>
+   #ifndef G_OS_WIN32
+     #include <pwd.h>
+   #endif
+ }
++#include <glib.h>
++#include <glib/gi18n.h>
+ 
+ #include "debug.h"
+ #include "log.h"
+diff --git a/pan/general/file-util.h b/pan/general/file-util.h
+index c125c8d..8c67639 100644
+--- pan/general/file-util.h
++++ pan/general/file-util.h
+@@ -25,9 +25,9 @@
+ extern "C" {
+   #include <stddef.h>
+   #include <stdio.h>
+-  #include <glib.h>
+-  #include <glib/gstdio.h>
+ }
++#include <glib.h>
++#include <glib/gstdio.h>
+ #include <pan/general/string-view.h>
+ 
+ #define g_freopen freopen
+diff --git a/pan/general/macros.h b/pan/general/macros.h
+index 6dcf908..b16230f 100644
+--- pan/general/macros.h
++++ pan/general/macros.h
+@@ -63,9 +63,6 @@
+ ***  g_assert
+ **/
+ 
+-extern "C"
+-{
+-  #include <glib.h>
+-}
++#include <glib.h>
+ 
+ #endif
+diff --git a/pan/general/text-match.cc b/pan/general/text-match.cc
+index fcacbe2..d390de0 100644
+--- pan/general/text-match.cc
++++ pan/general/text-match.cc
+@@ -20,9 +20,9 @@
+ #include <config.h>
+ extern "C" {
+   #include <ctype.h>
+-  #include <glib.h>
+-  #include <glib/gi18n.h>
+ }
++#include <glib.h>
++#include <glib/gi18n.h>
+ #include "debug.h"
+ #include "log.h"
+ #include "text-match.h"
+diff --git a/pan/gui/dl-headers-ui.cc b/pan/gui/dl-headers-ui.cc
+index 5841651..cfc536d 100644
+--- pan/gui/dl-headers-ui.cc
++++ pan/gui/dl-headers-ui.cc
+@@ -18,9 +18,9 @@
+  */
+ 
+ #include <config.h>
++#include <glib.h>
++#include <glib/gi18n.h>
+ extern "C" {
+-  #include <glib.h>
+-  #include <glib/gi18n.h>
+   #include "gtk-compat.h"
+ }
+ #include <pan/general/macros.h>
+diff --git a/pan/gui/group-prefs-dialog.cc b/pan/gui/group-prefs-dialog.cc
+index 677b07a..6983746 100644
+--- pan/gui/group-prefs-dialog.cc
++++ pan/gui/group-prefs-dialog.cc
+@@ -18,9 +18,9 @@
+  */
+ 
+ #include <config.h>
++#include <glib/gi18n.h>
++#include <glib.h>
+ extern "C" {
+-  #include <glib/gi18n.h>
+-  #include <glib.h>
+   #include "gtk-compat.h"
+ #ifdef HAVE_GTKSPELL
+   #include <enchant/enchant.h>
+diff --git a/pan/gui/group-prefs.cc b/pan/gui/group-prefs.cc
+index 3e9851b..b06a949 100644
+--- pan/gui/group-prefs.cc
++++ pan/gui/group-prefs.cc
+@@ -21,8 +21,8 @@ extern "C" {
+   #include <config.h>
+   #include <sys/types.h> // chmod
+   #include <sys/stat.h> // chmod
+-  #include <glib.h>
+ }
++#include <glib.h>
+ #include <iostream>
+ #include <fstream>
+ #include <pan/general/file-util.h>
+diff --git a/pan/gui/prefs-file.cc b/pan/gui/prefs-file.cc
+index bde7ef3..64c540f 100644
+--- pan/gui/prefs-file.cc
++++ pan/gui/prefs-file.cc
+@@ -24,8 +24,8 @@
+ extern "C" {
+   #include <sys/types.h> // for chmod
+   #include <sys/stat.h> // for chmod
+-  #include <glib.h>
+ }
++#include <glib.h>
+ #include <pan/general/file-util.h>
+ #include "prefs-file.h"
+ 
+diff --git a/pan/gui/prefs.cc b/pan/gui/prefs.cc
+index fdbd908..64dd8da 100644
+--- pan/gui/prefs.cc
++++ pan/gui/prefs.cc
+@@ -23,10 +23,8 @@
+ #include <iostream>
+ #include <sstream>
+ #include <string>
+-extern "C" {
+-  #include <glib.h>
+-  #include <glib/gi18n.h>
+-}
++#include <glib.h>
++#include <glib/gi18n.h>
+ #include <pan/general/debug.h>
+ #include <pan/general/log.h>
+ #include <pan/general/macros.h>
+diff --git a/pan/gui/server-ui.cc b/pan/gui/server-ui.cc
+index b42bc18..684ea0c 100644
+--- pan/gui/server-ui.cc
++++ pan/gui/server-ui.cc
+@@ -21,9 +21,9 @@
+ #include <cstdlib>
+ #include <cstring>
+ #include <climits>
++#include <glib.h>
++#include <glib/gi18n.h>
+ extern "C" {
+-  #include <glib.h>
+-  #include <glib/gi18n.h>
+   #include "gtk-compat.h"
+ }
+ 
+diff --git a/pan/gui/task-pane.cc b/pan/gui/task-pane.cc
+index 4f77922..1c302f9 100644
+--- pan/gui/task-pane.cc
++++ pan/gui/task-pane.cc
+@@ -18,9 +18,9 @@
+  */
+ 
+ #include <config.h>
++#include <glib.h>
++#include <glib/gi18n.h>
+ extern "C" {
+-  #include <glib.h>
+-  #include <glib/gi18n.h>
+   #include "gtk-compat.h"
+ }
+ #include <pan/general/e-util.h>
+diff --git a/pan/gui/url.cc b/pan/gui/url.cc
+index e1173ae..94ffb52 100644
+--- pan/gui/url.cc
++++ pan/gui/url.cc
+@@ -20,10 +20,8 @@
+ #include <config.h>
+ #include <iostream>
+ #include <string>
+-extern "C" {
+-  #include <glib.h>
+-  #include <glib/gi18n.h>
+-};
++#include <glib.h>
++#include <glib/gi18n.h>
+ #include <pan/general/log.h>
+ #include "url.h"
+ 
+diff --git a/pan/tasks/nntp.cc b/pan/tasks/nntp.cc
+index ceb1574..71c5cf1 100644
+--- pan/tasks/nntp.cc
++++ pan/tasks/nntp.cc
+@@ -22,10 +22,8 @@
+ #include <cstdarg>
+ #include <cstdlib> // abort, atoi, strtoul
+ #include <cstdio> // snprintf
+-extern "C" {
+-  #include <glib.h>
+-  #include <glib/gi18n.h>
+-}
++#include <glib.h>
++#include <glib/gi18n.h>
+ #include <pan/general/debug.h>
+ #include <pan/general/log.h>
+ #include <pan/general/messages.h>
+diff --git a/pan/tasks/nzb.cc b/pan/tasks/nzb.cc
+index af890e5..14df6f6 100644
+--- pan/tasks/nzb.cc
++++ pan/tasks/nzb.cc
+@@ -24,9 +24,7 @@
+ #include <sstream>
+ #include <string>
+ #include <map>
+-extern "C" {
+-  #include <glib.h>
+-}
++#include <glib.h>
+ #include <pan/general/debug.h>
+ #include <pan/general/file-util.h>
+ #include <pan/general/log.h>
+diff --git a/pan/tasks/socket-impl-main.cc b/pan/tasks/socket-impl-main.cc
+index c33edfd..688183c 100644
+--- pan/tasks/socket-impl-main.cc
++++ pan/tasks/socket-impl-main.cc
+@@ -30,10 +30,7 @@
+ //#include <glib/giochannel.h>
+ //#include <glib/gstring.h>
+ 
+-extern "C"
+-{
+-  #include <glib.h>
+-}
++#include <glib.h>
+ 
+ #include <pan/tasks/socket.h>
+ 
+diff --git a/pan/tasks/socket-impl-openssl.h b/pan/tasks/socket-impl-openssl.h
+index e48cbae..eea41d4 100644
+--- pan/tasks/socket-impl-openssl.h
++++ pan/tasks/socket-impl-openssl.h
+@@ -27,10 +27,7 @@
+ #include <string>
+ //#include <glib/giochannel.h>
+ //#include <glib/gstring.h>
+-extern "C"
+-{
+-  #include <glib.h>
+-}
++#include <glib.h>
+ 
+ #include <pan/general/debug.h>
+ #include <pan/general/quark.h>
+diff --git a/pan/tasks/socket.cc b/pan/tasks/socket.cc
+index 78d53fb..2c7a28d 100644
+--- pan/tasks/socket.cc
++++ pan/tasks/socket.cc
+@@ -21,9 +21,7 @@
+ #include <cstdarg>
+ #include <ctime>
+ #include <cmath>
+-extern "C" {
+-  #include <glib.h>
+-}
++#include <glib.h>
+ #include <pan/general/debug.h>
+ #include <pan/general/string-view.h>
+ #include "socket.h"
+diff --git a/pan/usenet-utils/filter-info.cc b/pan/usenet-utils/filter-info.cc
+index f464428..6b1a5c9 100644
+--- pan/usenet-utils/filter-info.cc
++++ pan/usenet-utils/filter-info.cc
+@@ -18,10 +18,8 @@
+  */
+ 
+ #include <config.h>
+-extern "C" {
+-  #include <glib.h>
+-  #include <glib/gi18n.h>
+-}
++#include <glib.h>
++#include <glib/gi18n.h>
+ #include <pan/general/macros.h>
+ #include "filter-info.h"
+ 
+diff --git a/pan/usenet-utils/message-check.cc b/pan/usenet-utils/message-check.cc
+index a511556..461ce86 100644
+--- pan/usenet-utils/message-check.cc
++++ pan/usenet-utils/message-check.cc
+@@ -21,9 +21,7 @@
+ #include <ctype.h>
+ #include <string.h>
+ #include <glib.h>
+-extern "C" {
+ #include <glib/gi18n.h>
+-}
+ #include <pan/general/debug.h>
+ #include <pan/general/macros.h>
+ #include <pan/general/string-view.h>
+diff --git a/pan/usenet-utils/rules-info.cc b/pan/usenet-utils/rules-info.cc
+index 1c03adc..91e78be 100644
+--- pan/usenet-utils/rules-info.cc
++++ pan/usenet-utils/rules-info.cc
+@@ -22,10 +22,8 @@
+ 
+ 
+ #include <config.h>
+-extern "C" {
+-  #include <glib.h>
+-  #include <glib/gi18n.h>
+-}
++#include <glib.h>
++#include <glib/gi18n.h>
+ #include <pan/general/macros.h>
+ #include "rules-info.h"
+ 
+diff --git a/pan/usenet-utils/text-massager.cc b/pan/usenet-utils/text-massager.cc
+index 4fcd8d5..15a818b 100644
+--- pan/usenet-utils/text-massager.cc
++++ pan/usenet-utils/text-massager.cc
+@@ -22,9 +22,7 @@
+ #include <map>
+ #include <cstring>
+ #include <glib.h>
+-extern "C" {
+ #include <glib/gi18n.h>
+-}
+ #include "text-massager.h"
+ #include <pan/general/log.h>
+ #include <pan/general/e-util.h>
+$NetBSD$
+
+--- ./pan/general/line-reader.cc.orig	2018-09-30 20:29:01.000000000 +0000
++++ ./pan/general/line-reader.cc
+@@ -1,9 +1,7 @@
+ #include <config.h>
+ #include <cstdio>
+ #include <cstdlib>
+-extern "C"{ 
+-  #include <glib/gi18n.h>
+-}
++#include <glib/gi18n.h>
+ #include <cerrno>
+ #include "file-util.h"
+ #include "line-reader.h"
+$NetBSD$
+
+--- pan/data/article-cache.cc.orig	2018-09-30 20:29:01.000000000 +0000
++++ pan/data/article-cache.cc
+@@ -26,11 +26,11 @@ extern "C"
+   #include <sys/stat.h>
+   #include <unistd.h>
+   #include <dirent.h>
+-
+-  #include <glib.h>
+-  #include <glib/gi18n.h>
+-  #include <gmime/gmime.h>
+ }
++#include <gmime/gmime.h>
++
++#include <glib.h>
++#include <glib/gi18n.h>
+ 
+ #include <pan/general/debug.h>
+ #include <pan/general/file-util.h>
+$NetBSD$
+
+--- pan/tasks/task-xoverinfo.cc.orig	2018-09-30 20:29:01.000000000 +0000
++++ pan/tasks/task-xoverinfo.cc
+@@ -24,10 +24,10 @@ extern "C" {
+   #define PROTOTYPES
+   #include <stdio.h>
+   #include <uulib/uudeview.h>
+-  #include <glib/gi18n.h>
+-  #include <gmime/gmime-utils.h>
+   #include <zlib.h>
+ }
++#include <glib/gi18n.h>
++#include <gmime/gmime-utils.h>
+ #include <fstream>
+ #include <iostream>
+ #include <pan/general/debug.h>
+$NetBSD$
+
+--- pan/tasks/task-post.cc.orig	2018-09-30 20:29:01.000000000 +0000
++++ pan/tasks/task-post.cc
+@@ -18,9 +18,7 @@
+  */
+ 
+ #include <config.h>
+-extern "C" {
+-  #include <glib/gi18n.h>
+-}
++#include <glib/gi18n.h>
+ #include "task-post.h"
+ #include <pan/general/debug.h>
+ #include <pan/general/log.h>
+$NetBSD$
+
+--- pan/tasks/task-groups.cc.orig	2018-09-30 20:29:01.000000000 +0000
++++ pan/tasks/task-groups.cc
+@@ -19,8 +19,8 @@
+ 
+ #include <config.h>
+ #include <cassert>
++#include <glib/gi18n.h>
+ extern "C" {
+-  #include <glib/gi18n.h>
+   #include <stdlib.h>
+ }
+ #include <pan/general/debug.h>
+$NetBSD$
+
+--- pan/tasks/task-xover.cc.orig	2018-09-30 20:29:01.000000000 +0000
++++ pan/tasks/task-xover.cc
+@@ -26,9 +26,10 @@ extern "C"
+ #define PROTOTYPES
+ #include <stdio.h>
+ #include <uulib/uudeview.h>
++}
++
+ #include <glib/gi18n.h>
+ #include <gmime/gmime-utils.h>
+-}
+ 
+ #include <fstream>
+ #include <iostream>
+$NetBSD$
+
+--- pan/data-impl/data-impl.cc.orig	2018-09-30 20:29:01.000000000 +0000
++++ pan/data-impl/data-impl.cc
+@@ -22,10 +22,8 @@
+ **************/
+ 
+ #include <config.h>
+-extern "C" {
+-  #include <glib/gi18n.h>
+-  #include <glib.h> // for g_build_filename
+-}
++#include <glib/gi18n.h>
++#include <glib.h> // for g_build_filename
+ #include <pan/general/debug.h>
+ #include <pan/general/file-util.h>
+ #include <pan/general/log.h>
+$NetBSD$
+
+--- pan/gui/progress-view.cc.orig	2018-09-30 20:29:01.000000000 +0000
++++ pan/gui/progress-view.cc
+@@ -18,9 +18,7 @@
+  */
+ 
+ #include <config.h>
+-extern "C" {
+-  #include "gtk-compat.h"
+-}
++#include "gtk-compat.h"
+ #include <pan/general/string-view.h>
+ #include <pan/usenet-utils/mime-utils.h>
+ #include "progress-view.h"
+$NetBSD$
+
+--- ./pan/gui/score-add-ui.cc.orig	2018-09-30 20:29:01.000000000 +0000
++++ ./pan/gui/score-add-ui.cc
+@@ -20,9 +20,7 @@
+ #include <config.h>
+ #include <cassert>
+ #include <climits>
+-extern "C" {
+-  #include <glib/gi18n.h>
+-}
++#include <glib/gi18n.h>
+ #include <pan/general/debug.h>
+ #include <pan/general/text-match.h>
+ #include "hig.h"
+$NetBSD$
+
+--- ./pan/gui/score-view-ui.cc.orig	2018-09-30 20:29:01.000000000 +0000
++++ ./pan/gui/score-view-ui.cc
+@@ -18,10 +18,8 @@
+  */
+ 
+ #include <config.h>
+-extern "C" {
+-  #include <glib/gi18n.h>
+-  #include "gtk-compat.h"
+-}
++#include <glib/gi18n.h>
++#include "gtk-compat.h"
+ #include <pan/general/debug.h>
+ #include "pad.h"
+ #include "score-add-ui.h"
+$NetBSD$
+
+--- ./pan/gui/save-ui.cc.orig	2018-09-30 20:29:01.000000000 +0000
++++ ./pan/gui/save-ui.cc
+@@ -18,10 +18,8 @@
+  */
+ 
+ #include <config.h>
+-extern "C" {
+-  #include <glib/gi18n.h>
+-  #include "gtk-compat.h"
+-}
++#include <glib/gi18n.h>
++#include "gtk-compat.h"
+ #include <pan/general/debug.h>
+ #include <pan/general/macros.h>
+ #include <pan/icons/pan-pixbufs.h>
+$NetBSD$
+
+--- ./pan/gui/save-attach-ui.cc.orig	2018-09-30 20:29:01.000000000 +0000
++++ ./pan/gui/save-attach-ui.cc
+@@ -18,10 +18,8 @@
+  */
+ 
+ #include <config.h>
+-extern "C" {
+-  #include <glib/gi18n.h>
+-  #include "gtk-compat.h"
+-}
++#include <glib/gi18n.h>
++#include "gtk-compat.h"
+ #include <pan/general/debug.h>
+ #include <pan/general/macros.h>
+ #include <pan/icons/pan-pixbufs.h>
+$NetBSD$
+
+--- ./pan/gui/actions.cc.orig	2018-09-30 20:29:01.000000000 +0000
++++ ./pan/gui/actions.cc
+@@ -18,10 +18,8 @@
+  */
+ 
+ #include <config.h>
+-extern "C" {
+   #include <glib/gi18n.h>
+   #include "gtk-compat.h"
+-}
+ 
+ #include <pan/general/macros.h>
+ #include <pan/general/debug.h>
+$NetBSD$
+
+--- ./pan/gui/header-pane.cc.orig	2018-09-30 20:29:01.000000000 +0000
++++ ./pan/gui/header-pane.cc
+@@ -19,10 +19,9 @@
+ 
+ extern "C" {
+   #include <config.h>
++}
+   #include <glib/gi18n.h>
+   #include "gtk-compat.h"
+-  #include "gtk-compat.h"
+-}
+ #include <cctype>
+ #include <cmath>
+ #include <algorithm>
+$NetBSD$
+
+--- ./pan/gui/prefs-ui.cc.orig	2018-09-30 20:29:01.000000000 +0000
++++ ./pan/gui/prefs-ui.cc
+@@ -18,10 +18,8 @@
+  */
+ 
+ #include <config.h>
+-extern "C" {
+   #include <glib/gi18n.h>
+   #include "gtk-compat.h"
+-}
+ #include <pan/general/debug.h>
+ #include <pan/general/macros.h>
+ #include <pan/general/file-util.h>



Home | Main Index | Thread Index | Old Index