-echo $echo_n "$out$echo_c" | cmp -s - tmp-$$/stdout || exit 1
-echo $echo_n "$err$echo_c" | cmp -s - tmp-$$/stderr || exit 1
+
+compare() {
+ eval tempfile=tmp-$$/std${1}
+ eval echo \""\${$1}"\" | sed '$d' > ${tempfile}0
+
+ sedscript=tmp-$$/${1}.sed
+ if eval test \".\${${1}_ignore}\" = .; then
+ :
+ else
+ eval echo \"\${${1}_ignore}\" | sed 's,^.*$,/&/d,;' > $sedscript
+ sed -f $sedscript ${tempfile} > ${tempfile}.1
+ mv ${tempfile}.1 ${tempfile}
+ fi
+
+ if eval test -z "\${${1}_regex}" ; then
+ cmp -s ${tempfile}0 ${tempfile} || exit 1
+ else
+ awk '{print NR " " $0}' ${tempfile}0 > ${tempfile}.1
+ awk '{print NR " " $0}' ${tempfile} | join ${tempfile}.1 - |
+ while read NUM RE LINE
+ do
+ echo "$LINE" | grep -- "$RE" >/dev/null || exit 1
+ done
+ fi
+}
+
+compare out
+compare err
+