3 # bashbug - create a bug report and mail it to the bug address
5 # The bug address depends on the release status of the shell. Versions
6 # with status `devel', `alpha', `beta', or `rc' mail bug reports to
7 # chet@cwru.edu and, optionally, to bash-testers@cwru.edu.
8 # Other versions send mail to bug-bash@gnu.org.
10 # Copyright (C) 1996-2004 Free Software Foundation, Inc.
12 # This program is free software; you can redistribute it and/or modify
13 # it under the terms of the GNU General Public License as published by
14 # the Free Software Foundation; either version 2, or (at your option)
17 # This program is distributed in the hope that it will be useful,
18 # but WITHOUT ANY WARRANTY; without even the implied warranty of
19 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 # GNU General Public License for more details.
22 # You should have received a copy of the GNU General Public License
23 # along with this program; if not, write to the Free Software
24 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA.
27 # configuration section:
28 # these variables are filled in by the make target in Makefile
33 CFLAGS
=" -DPROGRAM='bash.exe' -DCONF_HOSTTYPE='i686' -DCONF_OSTYPE='msys' -DCONF_MACHTYPE='i686-pc-msys' -DCONF_VENDOR='pc' -DLOCALEDIR='/msys/share/locale' -DPACKAGE='bash' -DSHELL -DHAVE_CONFIG_H -DRECYCLES_PIDS -I. -I../../src/bash/bash-3.1 -I../../src/bash/bash-3.1/include -I../../src/bash/bash-3.1/lib -I../../src/bash/bash-3.1/lib/intl -I/devshop/msys/pkgupdate/bld/bash/lib/intl -O2 -s -fnative-struct -mcpu=i686"
37 MACHTYPE
="i686-pc-msys"
39 PATH
=/bin
:/usr
/bin
:/usr
/local
/bin
:$PATH
42 # Check if TMPDIR is set, default to /tmp
45 #Securely create a temporary directory for the temporary files
46 TEMPDIR
=$TMPDIR/bbug.$$
47 (umask 077 && mkdir
$TEMPDIR) ||
{
48 echo "$0: could not create temporary directory" >&2
52 TEMPFILE1
=$TEMPDIR/bbug1
53 TEMPFILE2
=$TEMPDIR/bbug2
55 USAGE
="Usage: $0 [--help] [--version] [bug-report-email-address]"
56 VERSTR
="GNU bashbug, version ${RELEASE}.${PATCHLEVEL}-${RELSTATUS}"
60 while [ $# -gt 0 ]; do
62 --help) shift ; do_help
=y
;;
63 --version) shift ; do_version
=y
;;
65 -*) echo "bashbug: ${1}: invalid option" >&2
72 if [ -n "$do_version" ]; then
77 if [ -n "$do_help" ]; then
82 Bashbug is used to send mail to the Bash maintainers
83 for when Bash doesn't behave like you'd like, or expect.
85 Bashbug will start up your editor (as defined by the shell's
86 EDITOR environment variable) with a preformatted bug report
87 template for you to fill in. The report will be mailed to the
88 bash maintainers by default. See the manual for details.
90 If you invoke bashbug by accident, just quit your editor without
91 saving any changes to the template, and no bug report will be sent.
96 # Figure out how to echo a string without a trailing newline
103 BASHTESTERS
="bash-testers@cwru.edu"
106 alpha
*|beta
*|devel
*|rc
*) BUGBASH
=chet@cwru.edu
;;
107 *) BUGBASH
=bug-bash@gnu.org
;;
111 alpha
*|beta
*|devel
*|rc
*)
112 echo "$0: This is a testing release. Would you like your bug report"
113 echo "$0: to be sent to the bash-testers mailing list?"
114 echo $n "$0: Send to bash-testers? $c"
117 y
*|Y
*) BUGBASH
="${BUGBASH},${BASHTESTERS}" ;;
121 BUGADDR
="${1-$BUGBASH}"
123 if [ -z "$DEFEDITOR" ] && [ -z "$EDITOR" ]; then
124 if [ -x /usr
/bin
/editor
]; then
126 elif [ -x /usr
/local
/bin
/ce
]; then
128 elif [ -x /usr
/local
/bin
/emacs
]; then
130 elif [ -x /usr
/contrib
/bin
/emacs
]; then
132 elif [ -x /usr
/bin
/emacs
]; then
134 elif [ -x /usr
/bin
/xemacs
]; then
136 elif [ -x /usr
/contrib
/bin
/jove
]; then
138 elif [ -x /usr
/local
/bin
/jove
]; then
140 elif [ -x /usr
/bin
/vi
]; then
143 echo "$0: No default editor found: attempting to use vi" >&2
149 : ${EDITOR=$DEFEDITOR}
151 : ${USER=${LOGNAME-`whoami`}}
153 trap 'rm -rf "$TEMPDIR"; exit 1' 1 2 3 13 15
154 trap 'rm -rf "$TEMPDIR"' 0
157 if (uname
) >/dev
/null
2>&1; then
161 if [ -f /usr
/lib
/sendmail
] ; then
162 RMAIL
="/usr/lib/sendmail"
164 elif [ -f /usr
/sbin
/sendmail
] ; then
165 RMAIL
="/usr/sbin/sendmail"
172 INITIAL_SUBJECT
='[50 character or so descriptive subject here (for reference)]'
174 cat > "$TEMPFILE1" <<EOF
177 Subject: ${INITIAL_SUBJECT}
179 Configuration Information [Automatically generated, do not change]:
183 Compilation CFLAGS: $CFLAGS
185 Machine Type: $MACHTYPE
187 Bash Version: $RELEASE
188 Patch Level: $PATCHLEVEL
189 Release Status: $RELSTATUS
192 [Detailed description of the problem, suggestion, or complaint.]
195 [Describe the sequence of events that causes the problem
199 [Description of how to fix the problem. If you don't know a
200 fix for the problem, don't include this section.]
203 cp "$TEMPFILE1" "$TEMPFILE2"
204 chmod u
+w
"$TEMPFILE1"
206 trap '' 2 # ignore interrupts while in editor
209 while [ $edstat -ne 0 ]; do
213 if [ $edstat -ne 0 ]; then
214 echo "$0: editor \`$EDITOR' exited with nonzero status."
215 echo "$0: Perhaps it was interrupted."
216 echo "$0: Type \`y' to give up, and lose your bug report;"
217 echo "$0: type \`n' to re-enter the editor."
218 echo $n "$0: Do you want to give up? $c"
228 # find the subject from the temp file and see if it's been changed
229 CURR_SUB
=`grep '^Subject: ' "$TEMPFILE1" | sed 's|^Subject:[ ]*||' | sed 1q`
232 "${INITIAL_SUBJECT}")
234 echo "$0: You have not changed the subject from the default."
235 echo "$0: Please use a more descriptive subject header."
236 echo "$0: Type \`y' to give up, and lose your bug report;"
237 echo "$0: type \`n' to re-enter the editor."
238 echo $n "$0: Do you want to give up? $c"
245 echo "$0: The editor will be restarted in five seconds."
253 trap 'rm -rf "$TEMPDIR"; exit 1' 2 # restore trap on SIGINT
255 if cmp -s "$TEMPFILE1" "$TEMPFILE2"
257 echo "File not changed, no bug report submitted."
261 echo $n "Send bug report? [y/n] $c"
267 ${RMAIL} $SMARGS < "$TEMPFILE1" ||
{
268 cat "$TEMPFILE1" >> $HOME/dead.bashbug
269 echo "$0: mail failed: report saved in $HOME/dead.bashbug" >&2