#!/bin/sh -
#
# fvwm-bug - create a bug report and mail it to the bug address
#          - adapted from equivalent `bashbug' script
#
# The bug address could depend on the release status of FVWM.  Currently
# it doesn't.
#

PATH=/bin:/usr/bin:/usr/local/bin:$PATH
export PATH

# If they don't have a preferred editor set, then use
if [ -n "$VISUAL" ]; then
  EDIT="$VISUAL"
elif [ -n "$EDITOR" ]; then
  EDIT="$EDITOR"
elif [ -x /bin/vitmp ]; then
  EDIT=vitmp
elif [ -x /usr/bin/vim ]; then
  EDIT=vim
elif [ -x /bin/vi ]; then
  EDIT=vi
else
  echo "${0##*/}: No default editor found: attempting to use vi" >&2
  EDIT=vi
fi

TEMP=`mktemp -t fvwm-bug.XXXXXXXXXX` || exit
TEMPx=`mktemp -t fvwm-bug.XXXXXXXXXX` || { rm -f -- "$TEMP"; exit 1; }

# Figure out how to echo a string without a trailing newline
N=`echo 'hi there\c'`
case "$N" in
*c)	n=-n c= ;;
*)	n= c='\c' ;;
esac

exit_handler()
{
	local rc=$?
	trap '' EXIT
	rm -f -- "$TEMP" "$TEMPx"
	exit $rc
}
trap exit_handler EXIT HUP INT PIPE TERM QUIT

# Who is mail from?
: ${USER=${LOGNAME-`whoami`}}

# Who is mail to?
if test $# -eq 1 ; then
    BUGADDR="$1"
elif test $# -eq 0 ; then
    LOCAL='FVWM Development Team <fvwm@packages.altlinux.org>'
    WORKERS=fvwm-workers@fvwm.org

    if test "$LOCAL"; then
	echo "Do you want to send the report to the local maintainer <$LOCAL>,"
	echo "the FVWM workers <$WORKERS>, or both?"
	echo $n "Send report to (l)ocal, (w)orkers, (b)oth? " $c
	read ans
	case "$ans" in
	l*|L*) BUGADDR="$LOCAL";;
	f*|F*|w*|W*) BUGADDR="$WORKERS";;
	b*|B*) BUGADDR="$LOCAL,$WORKERS";;
	*) echo "[Defaulting to LOCAL]"; BUGADDR="$LOCAL";;
	esac
    fi
else
    echo >&2 "usage: fvwm-bug [address]"
    exit 1
fi

UN=
if (uname) >/dev/null 2>&1; then
	UN=`uname -a`
fi

if [ -f /usr/lib/sendmail ] ; then
	RMAIL="/usr/lib/sendmail"
elif [ -f /usr/sbin/sendmail ] ; then
	RMAIL="/usr/sbin/sendmail"
else
	RMAIL=rmail
fi


prefix=/usr/X11R6
exec_prefix=/usr
datadir=${prefix}/share
libexecdir=${prefix}/lib/X11
: ${FVWM_USERDIR=unset}
FVWM_DATADIR=${datadir}/fvwm
FVWM_MODULEDIR=${libexecdir}/fvwm/2.5.3


cat > "$TEMP" <<EOF
From: ${USER}
To: ${BUGADDR}
Subject: [50 character or so descriptive subject here (for reference)]

Configuration Information [Automatically generated, do not change]:
uname: $UN
compiler flags: gcc -pipe -Wall -O2 -fexpensive-optimizations -march=i586 -mcpu=i686 -Wall -Wno-implicit-int

FVWM Version:	2.5.3
FVWM_MODULEDIR:	$FVWM_MODULEDIR
FVWM_DATADIR:	$FVWM_DATADIR
FVWM_USERDIR:	$FVWM_USERDIR

Description:
	[Detailed description of the problem, suggestion, or complaint.]

Repeat-By:
	[Describe the sequence of events that causes the problem
	to occur.]

Fix:
	[Description of how to fix the problem.  If you don't know a
	fix for the problem, don't include this section.]
EOF

cp "$TEMP" "$TEMPx"

trap '' INT		# ignore interrupts while in editor

until $EDIT "$TEMP"; do
	echo "$0: editor \`$EDIT' exited with nonzero status."
	echo "$0: Perhaps it was interrupted."
	echo "$0: Type \`y' to give up, and lose your bug report;"
	echo "$0: type \`n' to re-enter the editor."
	echo $n "$0: Do you want to give up? $c"

	read ans
	case "$ans" in
	[Yy]*) exit 1 ;;
	esac
done

trap exit_handler INT	# restore trap on SIGINT

if cmp -s "$TEMP" "$TEMPx"
then
	echo "File not changed, no bug report submitted."
	exit
fi

echo $n "Send bug report? [y/n] $c"
read ans
case "$ans" in
[Nn]*)	exit 0 ;;
esac

${RMAIL} "$BUGADDR" < "$TEMP" || {
	cat "$TEMP" >> "$HOME/dead.fvwm-bug"
	echo "$0: mail failed: report saved in $HOME/dead.fvwm-bug" >&2
}

exit 0
