Thorsten Leemhuis <linux@xxxxxxxxxxxxx> wrote: > On 30.11.21 09:24, Geert Uytterhoeven wrote: > > On Mon, Nov 29, 2021 at 11:29 PM Eric Wong <e@xxxxxxxxx> wrote: > >> It's a bit much for common cases with git-send-email and > >> reasonable MUAs, I think. I don't know if formail is commonly > >> installed, nowadays... > > Well, after your earlier suggestion I considered to go with this: > > - perl -pi -e 's|^Message-Id:\s*<?([^>]+)>?$|Link: > https://lore.kernel.org/r/$1|g;' "$1" > + perl -pi -e 's|^Message-ID:\s*<?([^>]+)>?$|Link: > https://lore.kernel.org/r/$1|i;' "$1" > > But... > > > Of course ;-) You need it to run checkpatch on patch series obtained > > through "b4 am", before you apply them to your tree: > > > > $ cat *mbx | formail -s scripts/checkpatch.pl > > ...this made me wonder if formail would be the better solution. I came > up with this: > > formail -A "Link: https://lore.kernel.org/r/`formail -c -x Message-ID < > "${1}" | sed 's!.*<\(.*\)>!\1!'`" < "${1}" | sponge "${1}" > > Downsides: instead of perl it requires sed and sponge (part of > moreutils, which I guess not everyone has installed; but I tried to > avoid a big here document or moving files around). As Geert noted, formail is probably reasonable, but I certainly don't have moreutils across all the systems I'm using right now. > Is that worth it? Or is there a way to realize this in a more elegant > fashion with tools everyone has installed? *shrug* Since newlines after ':' are a concern and it's (probably :P) safe to slurp entire contents of emails into memory nowadays; some minor tweaks to the original perl invocation should work: * use `$/ = undef' to force Perl to operate on the entire input at once * use `m' RE modifier to ensure `^' and `$' still match SOL/EOL ($/ is only the input record separator, it doesn't change Perl's definition of "lines" for `^' and `$') perl -i -p -e 'BEGIN{$/=undef};s|^Message-ID:\s*<?([^>]+)>?$|Link: https://lore.kernel.org/r/$1|im;'