From: Marco Stornelli Date: Sat, 01 Sep 2012 07:43:16 GMT Subject: Re: [PATCH v4] Thunderbird: fix appp.sh format problems Message-ID: <5041BC94.7000304@gmail.com> In-Reply-To: <50412E2D.7070503@kdbg.org> Il 31/08/2012 23:35, Johannes Sixt ha scritto: > Am 31.08.2012 16:09, schrieb Marco Stornelli: >> +CCS=`perl -e 'local $/=undef; open FILE, $ENV{'PATCHTMP'}; $text=; >> +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). I don't understand what you mean, I'm using this script and it works perfectly. > > Am I correct that you intend to treat continuation lines with this > non-trivial perl script? All this processing gets tedious and > unreadable. Let me suggest this pattern instead: The perl script is used to have To: and Cc: email addresses in single line, without using \n. I tried with sed, but it's a little bit difficult (at least for me) because sed usually works on a single line, it's tricky with multilines. > > # 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" > > Instead of printing right away, you can also accumulate the data in > variables and print them right before the 'cat'. I would do that only if > a particular order of To:, Cc:, and Subject: is required in the output. > > (I don't know how the "do not delete this line" line fits in the > picture, but I'm sure you can figure it out.) > > -- Hannes > >