Subject: Re: [PATCH v2 04/11] contrib: remove "thunderbird-patch-inline"

From: Phillip Wood <[email-masked]>
Date: Mon, 12 May 2025 14:02:43 +0100

Hi Collin

On 12/05/2025 05:05, Collin Funk wrote:
> Hi,
> 
> You said:
> 
>> The "thunderbird-patch-inline" directory in "contrib/" contains a script
>> to send patch files via Thunderbird. This script depends on the
>> ExternalEditor extension [1], which seems to be effectively unmaintained
>> with the last update being in 2008. While the extension has eventually
>> been maintained in [2], that fork hasn't received any updates since
>> 2020, either.
>>
>> In addition, the script itself hasn't really seen a lot of maintenance
>> outside of a couple of global cleanups. It is quite unlikely that this
>> setup still works, and if it did it's even less likely that somebody
>> uses this script.
> 
> FWIW, in case it helps any Thunderbird users, there is External Editor
> Revived which seems to work pretty well when I used Thunderbird [1].

Thanks for pointing that out. I noticed that extensional the other day
but had not got around to posting it.

> I think this script would be irrelevant with that extension though.

Users who want to post patches using thunderbird would still benefit
from the script. It needs tweaking to account for a different
separator between the headers and message body though. The patch below
does that.

Best Wishes

Phillip

---- >8 ----
From: Phillip Wood <[email-masked]>
Subject: [PATCH] contrib: update thunderbird-patch-inline

This script uses an extension to run an external editor from
thunderbird that is no-longer maintained. Replace it with a different
extension that is maintained[1]. The new extension uses a different
separator between the mail headers and message body so update the
script to accommodate that.

Signed-Off-By: Phillip Wood <[email-masked]>

[1] https://github.com/Frederick888/external-editor-revived
---

diff --git a/contrib/thunderbird-patch-inline/README b/contrib/thunderbird-patch-inline/README
index 000147bbe4a..aa00b379a60 100644
--- a/contrib/thunderbird-patch-inline/README
+++ b/contrib/thunderbird-patch-inline/README
@@ -1,6 +1,6 @@
-appp.sh is a script that is supposed to be used together with ExternalEditor
-for Mozilla Thunderbird. It will let you include patches inline in e-mails
-in an easy way.
+appp.sh is a script that is supposed to be used together with
+ExternalEditorRevived for Mozilla Thunderbird. It will let you include
+patches inline in e-mails in an easy way.
  
  Usage:
  - Generate the patch with git format-patch.
@@ -14,7 +14,7 @@ will be moved to the section between the --- and the diffstat.
  
  All S-O-B:s and Cc:s in the patch will be added to the CC list.
  
-To set it up, just install External Editor and tell it to use appp.sh as the
-editor.
+To set it up, just install External Editor Revived and tell it to use
+appp.sh as the editor.
  
  Zenity is a required dependency.
diff --git a/contrib/thunderbird-patch-inline/appp.sh b/contrib/thunderbird-patch-inline/appp.sh
index fdcc9483520..72c37aace4e 100755
--- a/contrib/thunderbird-patch-inline/appp.sh
+++ b/contrib/thunderbird-patch-inline/appp.sh
@@ -1,10 +1,12 @@
  #!/bin/sh
  # Copyright 2008 Lukas Sandström <[email-masked]>
  #
-# AppendPatch - A script to be used together with ExternalEditor
+# AppendPatch - A script to be used together with ExternalEditorRevived
  # for Mozilla Thunderbird to properly include patches inline in e-mails.
  
-# ExternalEditor can be downloaded at http://globs.org/articles.php?lng=en&pg=2
+# ExternalEditorRevived extension can be installed using the Add-ons
+# manager in thunderbird, the source is available at
+# https://github.com/Frederick888/external-editor-revived
  
  CONFFILE=~/.appprc
  
@@ -25,8 +27,12 @@ fi
  
  cd - > /dev/null
  
+# The headers are separated from the message body by a blanks
+# line. However the message uses CR LF line ending so on platforms
+# where the native line ending is LF we see a line with a single CR.
+SEP="$(printf '^\r\\{0,1\\}$')"
  SUBJECT=$(sed -n -e '/^Subject: /p' "${PATCH}")
-HEADERS=$(sed -e '/^'"${SEP}"'$/,$d' $1)
+HEADERS=$(sed -e "/${SEP}/"',$d' $1)
  BODY=$(sed -e "1,/${SEP}/d" $1)
  CMT_MSG=$(sed -e '1,/^$/d' -e '/^---$/,$d' "${PATCH}")
  DIFF=$(sed -e '1,/^---$/d' "${PATCH}")
@@ -37,7 +43,7 @@ CCS=$(printf '%s\n%s\n' "$CMT_MSG" "$HEADERS" | sed -n -e 's/^Cc: \(.*\)$/\1,/gp
  echo "$SUBJECT" > $1
  echo "Cc: $CCS" >> $1
  echo "$HEADERS" | sed -e '/^Subject: /d' -e '/^Cc: /d' >> $1
-echo "$SEP" >> $1
+echo >> $1
  
  echo "$CMT_MSG" >> $1
  echo "---" >> $1