From: Samuel GROOT Date: Wed, 08 Jun 2016 19:23:44 GMT Subject: Re: [PATCH v4 2/6] t9001: check email address is in Cc: field Message-ID: <6b2b9023-b50e-9bbd-840a-ec7142ec5a75@grenoble-inp.org> In-Reply-To: On 06/08/2016 07:34 PM, Junio C Hamano wrote: > Samuel GROOT writes: >> diff --git a/t/t9001-send-email.sh b/t/t9001-send-email.sh >> index 56ad8ce..943e6b7 100755 >> --- a/t/t9001-send-email.sh >> +++ b/t/t9001-send-email.sh >> @@ -888,8 +888,8 @@ test_expect_success $PREREQ 'utf8 Cc is rfc2047 encoded' ' >> --to=nobody@example.com \ >> --smtp-server="$(pwd)/fake.sendmail" \ >> outdir/*.patch && >> - grep "^ " msgtxt1 | >> - grep "=?UTF-8?q?=C3=A0=C3=A9=C3=AC=C3=B6=C3=BA?= " >> + cc_adr=$(awk "/^Cc: /{flag=1}/^Subject: /{flag=0} flag {print}" msgtxt1) && >> + echo "$cc_adr" | fgrep "=?UTF-8?q?=C3=A0=C3=A9=C3=AC=C3=B6=C3=BA?= " >> ' > > This still depends on that the output has Cc: before Subject: and > there is no other header that can have an address on it. E.g. > > To: a@example.com > Cc: b@example.com > X-foo: <> > Subject: [PATCH] A sample patch > > would still say that the address is _on_ the CC: list. We thought of that but did not find the proper way to do it. > I do not usually do awk, but I think you should be able to avoid > capturing output from it, echoing and then grepping, which is way > too ugly. Perhaps you can start from something like below? > > #!/bin/sh > awk ' > BEGIN { in_cc = 0 } > /^[Cc][Cc]: / { > sub("^[Cc][Cc]: *", "") > in_cc = 1 > } > /^[^ ]*:/ { > in_cc = 0 > } > /^$/ { exit } > in_cc { > sub("^ *", "") > sub(", *$", "") > print > } > ' <<\EOF > To: a@example.com > Cc: b@example.com, > c@example.com, > d@example.com > X-foo: e@example.com > Subject: [PATCH] A sample patch > > Cc: foo@example.com > EOF Thanks, I will work on that :-)