Re: [PATCH v4] Thunderbird: fix appp.sh format problems
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Sep 2, 2012, 18:42 UTC
- Message-ID
- <7vzk58gno2.fsf@alter.siamese.dyndns.org>
- In-Reply-To
- <50412E2D.7070503@kdbg.org>
Johannes Sixt <j6t@kdbg.org> writes:
Show 6 quoted lines
> Am 31.08.2012 16:09, schrieb Marco Stornelli:
>> +CCS=`perl -e 'local $/=undef; open FILE, $ENV{'PATCHTMP'}; $text=<FILE>;
>> +close FILE; $addr = $1 if $text =~ /Cc: (.*?(,\n .*?)*)\n/s; $addr =~ s/\n//g;
>> +print $addr;'`
>
> The quoting is broken in this line (sq within sq does not work).As you said later in the thread, perl lets you be loose and say $ENV{PATCHTMP} without quoting the string "PATCHTMP", so it is not quite _broken_ per-se, but the above gives a false impression to readers that the author meant to feed perl
open FILE, $ENV{'PATCHTMP'};which is not happening, so at least it is misleading.
> Am I correct that you intend to treat continuation lines with this > non-trivial perl script?
As the above regexp seems to try to match
Cc: marco, git,
j6t, other recipientI think that indeed is the intent.
Show 27 quoted lines
> All this processing gets tedious and
> unreadable. Let me suggest this pattern instead:
>
> # translate to Thunderbird language
> LANG_TO="To:"
> LANG_SUBJ="Subject:"
> LANG_CC="Cc:"
>
> LF= # terminates the _previous_ line
> while read -r line
> do
> case $line in
> 'To: '*)
> printf "${LF}%s" "$LANG_TO ${line#To: }"
> ;;
> 'Cc: '*) ...similar...
> 'Subject: '*) ...similar...
> ' '*) # continuation line
> printf "%s" "$line"
> ;;
> '')
> print "${LF}\n"
> cat
> ;;
> esac
> LF='\n'
> done <"$PATCH" >"$1"I think that is much more readable.