-}
-
-cc="Linux-Next Mailing List <linux-next@vger.kernel.org>, Linux Kernel Mailing List <linux-kernel@vger.kernel.org>"
-
-[ "$branch" ] || {
- branch=$(grep '^Merging ' $log | tail -1 | sed 's/^Merging //' | sed 's/ .*$//')
- branch=${branch%%/*}
-}
-
-contact=$(awk -F ' ' '$3=="'"$branch"'" { print $1; }' $control)
-greeting=${contact%% *}
-greeting=${greeting#\"}
-[ "${contact%,*}" = "${contact}" ] || greeting="all"
-
-subject="${1//BRANCH/$branch}"
-filter="sed -e \"s/BRANCH/$branch/g\""
-[ "$kconfig" ] &&
- filter="$filter -e \"s/KCONFIG_NAME/$kconfig/g\""
-filter="$filter | fmt -s"
-
-$(dirname $0)/send_email "$contact" "$cc" "linux-next: $subject" <<EOF
-Hi $greeting,
-
-$(eval $filter)
-EOF
+fi
+
+subject="$1"
+shift
+
+cc=( 'Linux Next Mailing List <linux-next@vger.kernel.org>'
+ 'Linux Kernel Mailing List <linux-kernel@vger.kernel.org>'
+ "$@" )
+
+if [ -z "$branch" ]; then
+ branch=$(grep '^Merging ' "$log" | tail -n 1 |
+ sed 's/^Merging \([^ /]*\).*$/\1/')
+fi
+
+contact=$(get_contacts "$branch")
+subject=${subject//BRANCH/$branch}
+filter=( -E -e 's/^([^ ])/|\1/' -e "s/BRANCH/$branch/g" )
+if [ -n "$kconfig" ]; then
+ filter+=( -e "s/KCONFIG_NAME/$kconfig/g" )
+fi
+
+{
+ printf 'Hi all,\n\n'
+ sed "${filter[@]}" | fmt -w 76 -u -p '|' | sed 's/^|//'
+} | "$bin_dir"/send_email "linux-next: $subject" "$contact" "${cc[@]}"