view octave-bug.in @ 2155:85fd0a6f3c97

[project @ 1996-05-13 09:02:48 by jwe]
author jwe
date Mon, 13 May 1996 09:05:19 +0000
parents 071f076f0a72
children aa04b4b4f285
line wrap: on
line source

#! /bin/sh -
#
# octave-bug - create a bug report and mail it to the bug-octave
# mailing list.
#
# Patterned after the bashbug script from bash 1.14.
#
# John W. Eaton
# jwe@bevo.che.wisc.edu
# University of Wisconsin-Madison
# Department of Chemical Engineering

# Configuration:  these variables are filled in when running make to
# compile Octave.

config_opts="%config_opts%"
VERSION="%VERSION%"
MACHINE="%TARGET_HOST_TYPE%"
F77="%F77%"
FFLAGS="%FFLAGS%"
FPICFLAG="%FPICFLAG%"
FLIBS="%FLIBS%"
F2C="%F2C%"
F2CFLAGS="%F2CFLAGS%"
CPPFLAGS="%CPPFLAGS%"
INCFLAGS="%INCFLAGS%"
CC="%CC%"
CC_VERSION="%CC_VERSION%"
CFLAGS="%CFLAGS%"
CPICFLAG="%CPICFLAG%"
CXX="%CXX%"
CXX_VERSION="%CXX_VERSION%"
CXXFLAGS="%BUG_CXXFLAGS%"
CXXPICFLAG="%CXXPICFLAG%"
LDFLAGS="%LDFLAGS%"
LIBFLAGS="%LIBFLAGS%"
RLD_FLAG="%RLD_FLAG%"
CXXLIBS="%CXXLIBS%"
TERMLIBS="%TERMLIBS%"
LIBS="%LIBS%"
LEXLIB="%LEXLIB%"
LIBPLPLOT="%LIBPLPLOT%"
LIBDLFCN="%LIBDLFCN%"
DEFS="%DEFS%"

CC_AND_VERSION=
if test -n "$CC_VERSION"; then
  CC_AND_VERSION="$CC, version $CC_VERSION"
fi

CXX_AND_VERSION=
if test -n "$CXX_VERSION"; then
  CXX_AND_VERSION="$CXX, version $CXX_VERSION"
fi

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

TEMP=/tmp/octave-bug.$$

: ${EDITOR=emacs}

trap 'rm -f $TEMP $TEMP.x; exit 1' 1 2 3 13 15
trap 'rm -f $TEMP $TEMP.x' 0

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

HAVE_FMT=false
if (fmt < /dev/null) > /dev/null 2>&1
then
  HAVE_FMT=true
fi

ss_p=`echo $VERSION | grep "^ss-"`
if test -n "$ss_p"
then
  BUGADDR="octave-maintainers@bevo.che.wisc.edu"
else
  BUGADDR="bug-octave@bevo.che.wisc.edu"
fi

SUBJECT="[50 character or so descriptive subject here (for reference)]"
if test $# -gt 0
then
  case "$1" in
    -s)
      shift
      if test $# -gt 0
      then
        SUBJECT="$1"
        shift
      else
        echo "usage: octave-bug [-s subject]"
        exit 1
      fi
    ;;
  esac
fi

cat > $TEMP << EOF
To: $BUGADDR
Subject: $SUBJECT
--------
Bug report for Octave $VERSION configured for $MACHINE

Description:
-----------

  * Please replace this item with a detailed description of the
    problem.  Suggestions or general comments are also welcome.

Repeat-By:
---------

  * Please replace this item with a description of the sequence of
    events that causes the problem to occur. 

Fix:
---

  * If possible, replace this item with a description of how to
    fix the problem (if you don't have a fix for the problem, don't
    include this section, but please do submit your report anyway).



Configuration (please do not edit this section):
-----------------------------------------------

uname output:     $UN
configure opts:   $config_opts
Fortran compiler: $F77
FFLAGS:           $FFLAGS
F2C:              $F2C
F2CFLAGS:         $F2CFLAGS
FLIBS:            $FLIBS
CPPFLAGS:         $CPPFLAGS
INCFLAGS:         $INCFLAGS
C compiler:       $CC_AND_VERSION
CFLAGS:           $CFLAGS
CPICFLAG:         $CPICFLAG
C++ compiler:     $CXX_AND_VERSION
CXXFLAGS:         $CXXFLAGS
CXXPICFLAG:       $CXXPICFLAG
LDFLAGS:          $LDFLAGS
LIBFLAGS:         $LIBFLAGS
RLD_FLAG:         $RLD_FLAG
CXXLIBS:          $CXXLIBS
TERMLIBS:         $TERMLIBS
LIBS:             $LIBS
LEXLIB:           $LEXLIB
LIBPLPLOT:        $LIBPLPLOT
LIBDLFCN:         $LIBDLFCN
DEFS:

EOF

if $HAVE_FMT
then
  echo $DEFS | fmt | sed 's/^/  /' >> $TEMP
else
  echo $DEFS >> $TEMP
fi

if test $# -gt 0
then
  if test -f "$1"
  then
    cat >> $TEMP << EOF

User-preferences (please do not edit this section):
--------------------------------------------------

EOF
    cat $1 >> $TEMP
  fi
fi

chmod u+w $TEMP
cp $TEMP $TEMP.x

status=0

if $EDITOR $TEMP
then
  if cmp -s $TEMP $TEMP.x
  then
    echo "file not changed -- no bug report submitted"
    status=1
  elif test `wc $TEMP | awk '{print $1}'` -eq 0; then
    echo "empty bug report file -- not submitted"
    status=1
  else

# Try to extract the recipient address, in case the To: line in the
# message template has been changed.  Also get cc: lines.

    TO_ADDR=`sed -e '/^--------[ \t]*$/q' $TEMP | sed -n -e 's/^[Tt][Oo]://p'`
    CC_ADDR=`sed -e '/^--------[ \t]*$/q' $TEMP | sed -n -e 's/^[Cc][Cc]://p'`

    if test -z "$TO_ADDR"
    then
      echo "no valid \`To:' field found in header -- using $BUGADDR instead"
    else
      BUGADDR="$TO_ADDR"      
    fi

    BUGADDR="$BUGADDR $CC_ADDR"

# Delete the `--------' separator in the message.

# Don't pretty-print this.  Odd whitespace kills Ultrix AWK!

    awk 'BEGIN{in_header=1;} /^--------[ \t]*$/ {
      if (in_header) { in_header=0; print ""; next; }
    } { print $0; }' $TEMP > $TEMP.x

# Now try to mail it.

    ( /bin/mail $BUGADDR < $TEMP.x ) > /dev/null 2>&1
    status=$?
    if test $status -ne 0; then
      ( Mail -s "$SUBJECT" $BUGADDR < $TEMP.x ) > /dev/null 2>&1
      status=$?
      if test $status -ne 0; then
        ( /usr/ucb/mail -s "$SUBJECT" $BUGADDR < $TEMP.x ) > /dev/null 2>&1
        status=$?
        if test $status -ne 0; then
          ( mailx -s "$SUBJECT" $BUGADDR < $TEMP.x ) > /dev/null 2>&1
          status=$?
        fi
      fi
    fi

    if test $status -ne 0; then
      echo "unable to send mail -- saving message in \$HOME/dead.octave-bug";
      cat $TEMP >> $HOME/dead.octave-bug;
      exit 1
    else
      echo "bug report sent to: $TO_ADDR"
      echo "             cc to: $CC_ADDR"
    fi
  fi
else
  echo "problems with edit -- no bug report submitted"
  status=1
fi

exit $status