diff options
author | Jari Aalto <jari.aalto@cante.net> | 2001-11-13 17:56:06 +0000 |
---|---|---|
committer | Jari Aalto <jari.aalto@cante.net> | 2009-09-12 16:46:54 +0000 |
commit | f73dda092b33638d2d5e9c35375f687a607b5403 (patch) | |
tree | f21584e70a444d6a1ecba0fb5e2cf79e8cce91db /support/bashbug.sh | |
parent | 28ef6c316f1aff914bb95ac09787a3c83c1815fd (diff) | |
download | android_external_bash-f73dda092b33638d2d5e9c35375f687a607b5403.tar.gz android_external_bash-f73dda092b33638d2d5e9c35375f687a607b5403.tar.bz2 android_external_bash-f73dda092b33638d2d5e9c35375f687a607b5403.zip |
Imported from ../bash-2.05a.tar.gz.
Diffstat (limited to 'support/bashbug.sh')
-rw-r--r-- | support/bashbug.sh | 126 |
1 files changed, 90 insertions, 36 deletions
diff --git a/support/bashbug.sh b/support/bashbug.sh index 1064cb4..60eaeb9 100644 --- a/support/bashbug.sh +++ b/support/bashbug.sh @@ -3,11 +3,12 @@ # bashbug - create a bug report and mail it to the bug address # # The bug address depends on the release status of the shell. Versions -# with status `alpha' or `beta' mail bug reports to chet@po.cwru.edu. +# with status `devel', `alpha', `beta', or `rc' mail bug reports to +# chet@po.cwru.edu and, optionally, to bash-testers@po.cwru.edu. # Other versions send mail to bug-bash@gnu.org. # # configuration section: -# these variables are filled in by the make target in cpp-Makefile +# these variables are filled in by the make target in Makefile # MACHINE="!MACHINE!" OS="!OS!" @@ -23,14 +24,32 @@ export PATH # If the OS supplies a program to make temp files with semi-random names, # use it. -TEMP=/tmp/bbug.$$ -for d in /bin /usr/bin /usr/local/bin ; do - if [ -x $d/mktemp ]; then - TEMP=`$d/mktemp -t bbug ` ; break; - elif [ -x $d/tempfile ]; then - TEMP=` $d/tempfile --prefix bbug --mode 600 `; break - fi -done +: ${TMPDIR:=/tmp} +rm_tmp1=false +rm_tmp2=false + +# if we don't have mktemp or tempfile, we don't want to see error messages +# like `mktemp: not found', so temporarily redirect stderr using {...} while +# trying to run them. this may fail using old versions of the bourne shell +# that run {...} blocks with redirections in subshells; in that case we're +# no worse off than previous versions + +{ TEMPFILE1=`mktemp "$TMPDIR/bbug.XXXXXX" 2>/dev/null` ; } 2>/dev/null +if [ -z "$TEMPFILE1" ]; then + { TEMPFILE1=`tempfile --prefix bbug --mode 600 2>/dev/null`; } 2>/dev/null +fi +if [ -z "$TEMPFILE1" ]; then + TEMPFILE1=$TMPDIR/bbug.$$ + rm_tmp1=true +fi +{ TEMPFILE2=`mktemp "$TMPDIR/bbug.XXXXXX" 2>/dev/null`; } 2>/dev/null +if [ -z "$TEMPFILE2" ]; then + { TEMPFILE2=`tempfile --prefix bbug --mode 600 2>/dev/null`; } 2>/dev/null +fi +if [ -z "$TEMPFILE2" ]; then + TEMPFILE2="$TMPDIR/bbug.$$.x" + rm_tmp2=true +fi USAGE="Usage: $0 [--help] [--version] [bug-report-email-address]" VERSTR="GNU bashbug, version ${RELEASE}.${PATCHLEVEL}-${RELSTATUS}" @@ -83,12 +102,12 @@ esac BASHTESTERS="bash-testers@po.cwru.edu" case "$RELSTATUS" in -alpha*|beta*|devel*) BUGBASH=chet@po.cwru.edu ;; -*) BUGBASH=bug-bash@gnu.org ;; +alpha*|beta*|devel*|rc*) BUGBASH=chet@po.cwru.edu ;; +*) BUGBASH=bug-bash@gnu.org ;; esac case "$RELSTATUS" in -alpha*|beta*|devel*) +alpha*|beta*|devel*|rc*) echo "$0: This is a testing release. Would you like your bug report" echo "$0: to be sent to the bash-testers mailing list?" echo $n "$0: Send to bash-testers? $c" @@ -130,8 +149,8 @@ fi : ${USER=${LOGNAME-`whoami`}} -trap 'rm -f $TEMP $TEMP.x; exit 1' 1 2 3 13 15 -trap 'rm -f $TEMP $TEMP.x' 0 +trap 'rm -f "$TEMPFILE1" "$TEMPFILE2"; exit 1' 1 2 3 13 15 +trap 'rm -f "$TEMPFILE1" "$TEMPFILE2"' 0 UN= if (uname) >/dev/null 2>&1; then @@ -149,13 +168,15 @@ else SMARGS="$BUGADDR" fi -# this is raceable -rm -f $TEMP +INITIAL_SUBJECT='[50 character or so descriptive subject here (for reference)]' + +# this is raceable unless (hopefully) we used mktemp(1) or tempfile(1) +$rm_tmp1 && rm -f "$TEMPFILE1" -cat > $TEMP <<EOF +cat > "$TEMPFILE1" <<EOF From: ${USER} To: ${BUGADDR} -Subject: [50 character or so descriptive subject here (for reference)] +Subject: ${INITIAL_SUBJECT} Configuration Information [Automatically generated, do not change]: Machine: $MACHINE @@ -181,29 +202,62 @@ Fix: fix for the problem, don't include this section.] EOF -# this is still raceable -rm -f $TEMP.x -cp $TEMP $TEMP.x -chmod u+w $TEMP +# this is still raceable unless (hopefully) we used mktemp(1) or tempfile(1) +$rm_tmp2 && rm -f "$TEMPFILE2" + +cp "$TEMPFILE1" "$TEMPFILE2" +chmod u+w "$TEMPFILE1" trap '' 2 # ignore interrupts while in editor -until $EDITOR $TEMP; do - echo "$0: editor \`$EDITOR' 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" +edstat=1 +while [ $edstat -ne 0 ]; do + $EDITOR "$TEMPFILE1" + edstat=$? + + if [ $edstat -ne 0 ]; then + echo "$0: editor \`$EDITOR' 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 + + continue + fi + + # find the subject from the temp file and see if it's been changed + CURR_SUB=`grep '^Subject: ' "$TEMPFILE1" | sed 's|^Subject:[ ]*||' | sed 1q` - read ans - case "$ans" in - [Yy]*) exit 1 ;; + case "$CURR_SUB" in + "${INITIAL_SUBJECT}") + echo + echo "$0: You have not changed the subject from the default." + echo "$0: Please use a more descriptive subject header." + 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 + + echo "$0: The editor will be restarted in five seconds." + sleep 5 + edstat=1 + ;; esac + done -trap 'rm -f $TEMP $TEMP.x; exit 1' 2 # restore trap on SIGINT +trap 'rm -f "$TEMPFILE1" "$TEMPFILE2"; exit 1' 2 # restore trap on SIGINT -if cmp -s $TEMP $TEMP.x +if cmp -s "$TEMPFILE1" "$TEMPFILE2" then echo "File not changed, no bug report submitted." exit @@ -215,8 +269,8 @@ case "$ans" in [Nn]*) exit 0 ;; esac -${RMAIL} $SMARGS < $TEMP || { - cat $TEMP >> $HOME/dead.bashbug +${RMAIL} $SMARGS < "$TEMPFILE1" || { + cat "$TEMPFILE1" >> $HOME/dead.bashbug echo "$0: mail failed: report saved in $HOME/dead.bashbug" >&2 } |