#!/bin/sh # # File a bug against the Mutt mail user agent. # # # $Id: muttbug.sh.in,v 2.18 2001/10/10 09:56:51 roessler Exp $ # # # Copyright (c) 2000 Thomas Roessler # # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. # SUBMIT="submit@bugs.guug.de" DEBIAN_SUBMIT="submit@bugs.debian.org" prefix=/usr DEBUGGER=/usr/apps/studio11/SUNWspro/bin/dbx SENDMAIL=/usr/sbin/sendmail sysconfdir=/etc pkgdatadir=@pkgdatadir@ include_file () { echo echo "--- Begin $1" sed -e 's/^-/- -/' $1 | egrep -v '^[ ]*(#|$)' echo "--- End $1" echo } debug_gdb () { cat << EOF > $SCRATCH/gdb.rc bt list quit EOF $DEBUGGER -n -x $SCRATCH/gdb.rc -c $CORE mutt } debug_dbx () { cat << EOF > $SCRATCH/dbx.rc where list quit EOF $DEBUGGER -s $SCRATCH/dbx.rc mutt $CORE } debug_sdb () { cat << EOF > $SCRATCH/sdb.rc t w q EOF $DEBUGGER mutt $CORE < $SCRATCH/sdb.rc } case `echo -n` in "") n=-n; c= ;; *) n=; c='\c' ;; esac exec > /dev/tty exec < /dev/tty SCRATCH=${TMPDIR-/tmp}/`basename $0`.`hostname`.$$ mkdir ${SCRATCH} || \ { echo "`basename $0`: Can't create temporary directory." >& 2 ; exit 1 ; } trap "rm -r -f ${SCRATCH} ; trap '' 0 ; exit" 0 1 2 TEMPLATE=${SCRATCH}/template.txt echo "Please enter a one-line description of the problem you experience:" echo $n "> $c" read SUBJECT cat < $c" read _CORE test "$_CORE" && CORE="$_CORE" fi echo $n "Do you want to include your personal mutt configuration files? [Y|n] $c" read personal case "$personal" in [nN]*) personal=no ;; *) personal=yes ;; esac echo $n "Do you want to include your system's global mutt configuration file? [Y|n] $c" read global case "$global" in [nN]*) global=no ;; *) global=yes ;; esac if test -f /etc/debian_version ; then DEBIAN=yes echo $n "Checking whether mutt has been installed as a package... $c" DEBIANVERSION="`dpkg -l mutt | grep '^[ih]' | awk '{print $3}'`" 2> /dev/null if test "$DEBIANVERSION" ; then DPKG=yes else DPKG=no unset DEBIANVERSION fi echo "$DPKG" echo $n "File this bug with Debian? [Y|n] $c" read DPKG case "$DPKG" in [nN]) DPKG=no ;; *) DPKG=yes ;; esac else DEBIAN=no DPKG=no fi MUTTVERSION="`mutt -v | head -1 | awk '{print $2}'`" test "$DPKG" = "yes" && SUBMIT="$SUBMIT, $DEBIAN_SUBMIT" exec > ${TEMPLATE} test "$EMAIL" && echo "From: $EMAIL" test "$REPLYTO" && echo "Reply-To: $REPLYTO" test "$ORGANIZATION" && echo "Organization: $ORGANIZATION" echo "Subject: mutt-$MUTTVERSION: $SUBJECT" echo "To: $SUBMIT" echo "Bcc: ${EMAIL-$LOGNAME}" echo echo "Package: mutt" echo "Version: ${DEBIANVERSION-$MUTTVERSION}" echo "Severity: $severity" echo echo "-- Please type your report below this line" echo echo echo if test "$DEBIAN" = "yes" ; then echo "Obtaining Debian-specific information..." > /dev/tty bug -p -s dummy mutt | \ sed -n -e "/^-- System Information/,/^---/p" | \ grep -v '^---' fi echo echo "-- Build environment information" echo echo "(Note: This is the build environment installed on the system" echo "muttbug is run on. Information may or may not match the environment" echo "used to build mutt.)" echo echo "- gcc version information" echo "cc" cc -v 2>&1 echo echo "- CFLAGS" echo -xstrconst -fsimple=1 -xlibmil -xlibmopt -xarch=amd64a -xdepend -xcrossfile -xO4 -I/tmp/build/root4build/usr/include -I/usr/sfw/include -DC_SOLARIS=1 echo echo "-- Mutt Version Information" echo mutt -v if test "$CORE" && test -f "$CORE" ; then echo echo "-- Core Dump Analysis Output" echo case "$DEBUGGER" in *sdb) debug_sdb $CORE ;; *dbx) debug_dbx $CORE ;; *gdb) debug_gdb $CORE ;; esac echo fi if test "$personal" = "yes" ; then CANDIDATES=".muttrc-${MUTTVERSION} .muttrc .mutt/muttrc-${MUTTVERSION} .mutt/muttrc" MATCHED="none" for f in $CANDIDATES; do if test -f "${HOME}/$f" ; then MATCHED="${HOME}/$f" break fi done if test "$MATCHED" = "none" ; then echo "Warning: Can't find your personal .muttrc." >&2 else include_file $MATCHED fi fi if test "$global" = "yes" ; then CANDIDATES="Muttrc-${MUTTVERSION} Muttrc" DIRECTORIES="$sysconfdir $pkgdatadir" MATCHED="none" for d in $DIRECTORIES ; do for f in $CANDIDATES; do if test -f $d/$f ; then MATCHED="$d/$f" break fi done test "$MATCHED" = "none" || break done if test "$MATCHED" = "none" ; then echo "Warning: Can't find global Muttrc." >&2 else include_file $MATCHED fi fi exec > /dev/tty cp $TEMPLATE $SCRATCH/mutt-bug.txt input="e" while : ; do if test "$input" = "e" ; then ${VISUAL-${EDITOR-vi}} $SCRATCH/mutt-bug.txt if cmp $SCRATCH/mutt-bug.txt ${TEMPLATE} > /dev/null ; then echo "Warning: Bug report was not modified!" fi fi echo $n "Submit, Edit, View, Quit? [S|e|v|q] $c" read _input input="`echo $_input | tr EVSQ evsq`" case $input in e*) ;; v*) ${PAGER-more} $SCRATCH/mutt-bug.txt ;; s*|"") $SENDMAIL -t < $SCRATCH/mutt-bug.txt ; exit ;; q*) exit esac done