Imported from ../bash-2.02.tar.gz.
[platform/upstream/bash.git] / support / bashbug.sh
1 #!/bin/sh -
2 #
3 # bashbug - create a bug report and mail it to the bug address
4 #
5 # The bug address depends on the release status of the shell.  Versions
6 # with status `alpha' or `beta' mail bug reports to chet@po.cwru.edu.
7 # Other versions send mail to bug-bash@gnu.org.
8 #
9 # configuration section:
10 #       these variables are filled in by the make target in cpp-Makefile
11 #
12 MACHINE="!MACHINE!"
13 OS="!OS!"
14 CC="!CC!"
15 CFLAGS="!CFLAGS!"
16 RELEASE="!RELEASE!"
17 PATCHLEVEL="!PATCHLEVEL!"
18 RELSTATUS="!RELSTATUS!"
19 MACHTYPE="!MACHTYPE!"
20
21 PATH=/bin:/usr/bin:/usr/local/bin:$PATH
22 export PATH
23
24 TEMP=/tmp/bbug.$$
25
26 # Figure out how to echo a string without a trailing newline
27 N=`echo 'hi there\c'`
28 case "$N" in
29 *c)     n=-n c= ;;
30 *)      n= c='\c' ;;
31 esac
32
33 BASHTESTERS="bash-testers@po.cwru.edu"
34
35 case "$RELSTATUS" in
36 alpha*|beta*)   BUGBASH=chet@po.cwru.edu ;;
37 *)              BUGBASH=bug-bash@gnu.org ;;
38 esac
39
40 case "$RELSTATUS" in
41 alpha*|beta*)   echo "$0: This is a testing release.  Would you like your bug report"
42                 echo "$0: to be sent to the bash-testers mailing list?"
43                 echo $n "$0: Send to bash-testers? $c"
44                 read ans
45                 case "$ans" in
46                 y*|Y*)  BUGBASH="${BUGBASH},${BASHTESTERS}" ;;
47                 esac ;;
48 esac
49
50 BUGADDR="${1-$BUGBASH}"
51
52 : ${EDITOR=emacs}
53
54 : ${USER=${LOGNAME-`whoami`}}
55
56 trap 'rm -f $TEMP $TEMP.x; exit 1' 1 2 3 13 15
57 trap 'rm -f $TEMP $TEMP.x' 0
58
59 UN=
60 if (uname) >/dev/null 2>&1; then
61         UN=`uname -a`
62 fi
63
64 if [ -f /usr/lib/sendmail ] ; then
65         RMAIL="/usr/lib/sendmail"
66 elif [ -f /usr/sbin/sendmail ] ; then
67         RMAIL="/usr/sbin/sendmail"
68 else
69         RMAIL=rmail
70 fi
71
72 # this is raceable
73 rm -f $TEMP
74
75 cat > $TEMP <<EOF
76 From: ${USER}
77 To: ${BUGADDR}
78 Subject: [50 character or so descriptive subject here (for reference)]
79
80 Configuration Information [Automatically generated, do not change]:
81 Machine: $MACHINE
82 OS: $OS
83 Compiler: $CC
84 Compilation CFLAGS: $CFLAGS
85 uname output: $UN
86 Machine Type: $MACHTYPE
87
88 Bash Version: $RELEASE
89 Patch Level: $PATCHLEVEL
90 Release Status: $RELSTATUS
91
92 Description:
93         [Detailed description of the problem, suggestion, or complaint.]
94
95 Repeat-By:
96         [Describe the sequence of events that causes the problem
97         to occur.]
98
99 Fix:
100         [Description of how to fix the problem.  If you don't know a
101         fix for the problem, don't include this section.]
102 EOF
103
104 # this is still raceable
105 rm -f $TEMP.x
106 cp $TEMP $TEMP.x
107 chmod u+w $TEMP
108
109 trap '' 2               # ignore interrupts while in editor
110
111 until $EDITOR $TEMP; do
112         echo "$0: editor \`$EDITOR' exited with nonzero status."
113         echo "$0: Perhaps it was interrupted."
114         echo "$0: Type \`y' to give up, and lose your bug report;"
115         echo "$0: type \`n' to re-enter the editor."
116         echo $n "$0: Do you want to give up? $c"
117
118         read ans
119         case "$ans" in
120         [Yy]*) exit 1 ;;
121         esac
122 done
123
124 trap 'rm -f $TEMP $TEMP.x; exit 1' 2    # restore trap on SIGINT
125
126 if cmp -s $TEMP $TEMP.x
127 then
128         echo "File not changed, no bug report submitted."
129         exit
130 fi
131
132 echo $n "Send bug report? [y/n] $c"
133 read ans
134 case "$ans" in
135 [Nn]*)  exit 0 ;;
136 esac
137
138 ${RMAIL} $BUGADDR < $TEMP || {
139         cat $TEMP >> $HOME/dead.bashbug
140         echo "$0: mail failed: report saved in $HOME/dead.bashbug" >&2
141 }
142
143 exit 0