Skip to contentSkip to conversation

Thunderbird: fix appp.sh format problems

PATCH In review Marco Stornelli 2 participants 3 messages Jun 15, 2016

lore
Share & tools
lore
#0 lore raw

PATCH v2 1/1 Thunderbird: fix appp.sh format problems

The current script has got the following problems:

1) It doesn't work if the language used by Thunderbird is not English;
2) The field To: filled by format-patch is not evaluated;
3) The field Cc: is loaded only from Cc used in the commit message instead of using even the Cc field filled by format-patch in the email header.

Added comments for point 1). Fixed point 2) and 3).

---
v2: changed the commit message to reflect better the script implementation

 contrib/thunderbird-patch-inline/appp.sh |   18 ++++++++++++++----
 1 files changed, 14 insertions(+), 4 deletions(-)
contrib/thunderbird-patch-inline/appp.sh +14 -4
index 5eb4a51..e6e1b85 100755
@@ -6,6 +6,9 @@
 
 # ExternalEditor can be downloaded at http://globs.org/articles.php?lng=en&pg=2
 
+# NOTE: You must change some words in this script according to the language
+# used by Mozilla Thunderbird, as <Subject>, <To>, <Don't remove this line>.
+
 CONFFILE=~/.appprc
 
 SEP="-=-=-=-=-=-=-=-=-=# Don't remove this line #=-=-=-=-=-=-=-=-=-"
@@ -26,17 +29,24 @@ fi
 cd - > /dev/null
 
 SUBJECT=`sed -n -e '/^Subject: /p' "${PATCH}"`
-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}"`
 
-CCS=`echo -e "$CMT_MSG\n$HEADERS" | sed -n -e 's/^Cc: \(.*\)$/\1,/gp' \
-	-e 's/^Signed-off-by: \(.*\)/\1,/gp'`
+export PATCH
+CCS=`perl -e 'local $/=undef; open FILE, $ENV{'PATCH'}; $text=<FILE>;
+close FILE; $cc = $1 if $text =~ /Cc: (.*?(,\n .*?)*)\n/s; $cc =~ s/\n//g;
+print $cc;'`
+
+TO=`perl -e 'local $/=undef; open FILE, $ENV{'PATCH'}; $text=<FILE>;
+close FILE; $to = $1 if $text =~ /To: (.*?(,\n .*?)*)\n/s; $to =~ s/\n//g;
+print $to;'`
 
+# Change <Subject> before next line according to Thunderbird language
 echo "$SUBJECT" > $1
+# Change <To> according to Thunderbird language
+echo "To: $TO" >> $1
 echo "Cc: $CCS" >> $1
-echo "$HEADERS" | sed -e '/^Subject: /d' -e '/^Cc: /d' >> $1
 echo "$SEP" >> $1
 
 echo "$CMT_MSG" >> $1
Signature · 1 line
1.7.3.4
#1 lore raw
Quoted 8 lines · Marco Stornelli

The current script has got the following problems:

1) It doesn't work if the language used by Thunderbird is not English;
2) The field To: filled by format-patch is not evaluated;
3) The field Cc: is loaded only from Cc used in the commit message instead of using even the Cc field filled by format-patch in the email header.

Quoted 5 lines

Added comments for point 1). Fixed point 2) and 3).

---
v2: changed the commit message to reflect better the script implementation

I actually thought what the log message of the previous version claimed to do was much more sensible.

The language used in the above 3 items describe what you perceive as a problem, but it is unclear what the desired behaviour that is different from the current one is. (2) "... is not evaluated" implies ", which is a problem, so fix it by evaluating it", but there is no single obvious fix to (3) "loaded only from Cc in commit and not Cc from format-patch". Should it ignore Cc from commit log message, or should it take Cc from both log message and e-mail header? I personally think it should the former, but it is not clear which you think is the right thing to do (or perhaps you have a third answer) if you only say "Fixed point 3".

Quoted 30 lines
 contrib/thunderbird-patch-inline/appp.sh |   18 ++++++++++++++----
 1 files changed, 14 insertions(+), 4 deletions(-)
contrib/thunderbird-patch-inline/appp.sh +4 -3
index 5eb4a51..e6e1b85 100755
@@ -6,6 +6,9 @@
 
 # ExternalEditor can be downloaded at http://globs.org/articles.php?lng=en&pg=2
 
+# NOTE: You must change some words in this script according to the language
+# used by Mozilla Thunderbird, as <Subject>, <To>, <Don't remove this line>.
+
 CONFFILE=~/.appprc
 
 SEP="-=-=-=-=-=-=-=-=-=# Don't remove this line #=-=-=-=-=-=-=-=-=-"
@@ -26,17 +29,24 @@ fi
 cd - > /dev/null
 
 SUBJECT=`sed -n -e '/^Subject: /p' "${PATCH}"`
-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}"`
 
-CCS=`echo -e "$CMT_MSG\n$HEADERS" | sed -n -e 's/^Cc: \(.*\)$/\1,/gp' \
-	-e 's/^Signed-off-by: \(.*\)/\1,/gp'`
+export PATCH

contrib/thunderbird-patch-inline/appp.sh fi · line 46

Quoted 10 lines
contrib/thunderbird-patch-inline/appp.sh +8 -0
+CCS=`perl -e 'local $/=undef; open FILE, $ENV{'PATCH'}; $text=<FILE>;
+close FILE; $cc = $1 if $text =~ /Cc: (.*?(,\n .*?)*)\n/s; $cc =~ s/\n//g;
+print $cc;'`
+
+TO=`perl -e 'local $/=undef; open FILE, $ENV{'PATCH'}; $text=<FILE>;
+close FILE; $to = $1 if $text =~ /To: (.*?(,\n .*?)*)\n/s; $to =~ s/\n//g;
+print $to;'`
 
+# Change <Subject> before next line according to Thunderbird language
 echo "$SUBJECT" > $1

"before next line"??? I do not think you meant to rename the variable $SUBJECT to $<localized string for subject>.

contrib/thunderbird-patch-inline/appp.sh fi · line 47

Quoted 1 line
contrib/thunderbird-patch-inline/appp.sh +1 -0
+# Change <To> according to Thunderbird language

# Change "To: " according to...

would be less confusing, as the line has to "to" on it when viewed case insensitively.

Quoted 7 lines
contrib/thunderbird-patch-inline/appp.sh +1 -1
+echo "To: $TO" >> $1
 
 echo "Cc: $CCS" >> $1
-echo "$HEADERS" | sed -e '/^Subject: /d' -e '/^Cc: /d' >> $1
 echo "$SEP" >> $1
 

echo "$CMT_MSG" >> $1

#2 lore raw

Il 30/08/2012 19:00, Junio C Hamano ha scritto:

Quoted 19 lines
Quoted 8 lines · Marco Stornelli

The current script has got the following problems:

1) It doesn't work if the language used by Thunderbird is not English;
2) The field To: filled by format-patch is not evaluated;
3) The field Cc: is loaded only from Cc used in the commit message instead of using even the Cc field filled by format-patch in the email header.

Quoted 5 lines

Added comments for point 1). Fixed point 2) and 3).

---
v2: changed the commit message to reflect better the script implementation

I actually thought what the log message of the previous version claimed to do was much more sensible.

Quoted 10 lines

The language used in the above 3 items describe what you perceive as a problem, but it is unclear what the desired behaviour that is different from the current one is. (2) "... is not evaluated" implies ", which is a problem, so fix it by evaluating it", but there is no single obvious fix to (3) "loaded only from Cc in commit and not Cc from format-patch". Should it ignore Cc from commit log message, or should it take Cc from both log message and e-mail header? I personally think it should the former, but it is not clear which you think is the right thing to do (or perhaps you have a third answer) if you only say "Fixed point 3".

Ok, I can change the commit. Actually with the new implementation Cc: is evaluated in both cases.

Quoted 38 lines
Quoted 38 lines
  contrib/thunderbird-patch-inline/appp.sh |   18 ++++++++++++++----
  1 files changed, 14 insertions(+), 4 deletions(-)
contrib/thunderbird-patch-inline/appp.sh +11 -3
index 5eb4a51..e6e1b85 100755
@@ -6,6 +6,9 @@
 
  # ExternalEditor can be downloaded at http://globs.org/articles.php?lng=en&pg=2
 
+# NOTE: You must change some words in this script according to the language
+# used by Mozilla Thunderbird, as <Subject>, <To>, <Don't remove this line>.
+
  CONFFILE=~/.appprc
 
  SEP="-=-=-=-=-=-=-=-=-=# Don't remove this line #=-=-=-=-=-=-=-=-=-"
@@ -26,17 +29,24 @@ fi
  cd - > /dev/null
 
  SUBJECT=`sed -n -e '/^Subject: /p' "${PATCH}"`
-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}"`
 
-CCS=`echo -e "$CMT_MSG\n$HEADERS" | sed -n -e 's/^Cc: \(.*\)$/\1,/gp' \
-	-e 's/^Signed-off-by: \(.*\)/\1,/gp'`
+export PATCH
+CCS=`perl -e 'local $/=undef; open FILE, $ENV{'PATCH'}; $text=<FILE>;
+close FILE; $cc = $1 if $text =~ /Cc: (.*?(,\n .*?)*)\n/s; $cc =~ s/\n//g;
+print $cc;'`
+
+TO=`perl -e 'local $/=undef; open FILE, $ENV{'PATCH'}; $text=<FILE>;
+close FILE; $to = $1 if $text =~ /To: (.*?(,\n .*?)*)\n/s; $to =~ s/\n//g;
+print $to;'`
 
Quoted 5 lines

contrib/thunderbird-patch-inline/appp.sh fi · line 46

Quoted 2 lines
contrib/thunderbird-patch-inline/appp.sh +1 -0
+# Change <Subject> before next line according to Thunderbird language
  echo "$SUBJECT" > $1

"before next line"??? I do not think you meant to rename the variable $SUBJECT to $<localized string for subject>.

In my case I add a line before in this way:

....
SUBJECT=echo $SUBJECT | sed 's/Subject/Oggetto/g' echo "$SUBJECT" > $1
....

Quoted 4 lines

contrib/thunderbird-patch-inline/appp.sh fi · line 47

Quoted 2 lines
contrib/thunderbird-patch-inline/appp.sh +1 -0
+# Change <To> according to Thunderbird language

# Change "To: " according to...

Ok.

Quoted 12 lines

would be less confusing, as the line has to "to" on it when viewed case insensitively.

Quoted 7 lines
contrib/thunderbird-patch-inline/appp.sh +1 -1
+echo "To: $TO" >> $1
 
  echo "Cc: $CCS" >> $1
-echo "$HEADERS" | sed -e '/^Subject: /d' -e '/^Cc: /d' >> $1
  echo "$SEP" >> $1
 

echo "$CMT_MSG" >> $1