#! /bin/sh -
#
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 2000, 2001, 2002, 2004,
#               2005, 2006, 2009 John W. Eaton
#
# This file is part of Octave.
# 
# Octave 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 3 of the License, or (at
# your option) any later version.
# 
# Octave 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 Octave; see the file COPYING.  If not, see
# <http://www.gnu.org/licenses/>.

# octave-bug - create a bug report and mail it to the bug-octave
# mailing list.
#
# Patterned after the bashbug script from bash 1.14.

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

config_opts="'--host=amd64-portbld-freebsd7.3' '--with-blas=-L/usr/local/lib -lblas' '--with-lapack=-llapack' '--enable-shared' '--prefix=/usr/local' '--mandir=/usr/local/man' '--infodir=/usr/local/info/' '--build=amd64-portbld-freebsd7.3' 'build_alias=amd64-portbld-freebsd7.3' 'host_alias=amd64-portbld-freebsd7.3' 'CC=gcc45' 'CFLAGS=-O2 -fno-strict-aliasing -pipe -I/usr/local/include -I/usr/local/include/metis -Wl,-rpath=/usr/local/lib/gcc45' 'LDFLAGS= -Wl,-rpath=/usr/local/lib/gcc45 -L/usr/local/lib -pthread' 'CPP=cpp45' 'CXX=g++45' 'CXXFLAGS=-O2 -fno-strict-aliasing -pipe -I/usr/local/include -I/usr/local/include/metis -Wl,-rpath=/usr/local/lib/gcc45 -I/usr/local/include -I/usr/local/include/metis' 'F77=gfortran45' 'FFLAGS=-O'"
VERSION="3.3.50"
SED="/usr/local/bin/gsed"
MACHINE="amd64-portbld-freebsd7.3"
F77="gfortran45"
FFLAGS="-O"
FPICFLAG="-fPIC"
FLIBS="-L/usr/local/lib -L/usr/local/lib/gcc45/gcc/x86_64-portbld-freebsd7.3/4.5.3 -L/usr/local/lib/gcc45/gcc/x86_64-portbld-freebsd7.3/4.5.3/../../../../../x86_64-portbld-freebsd7.3/lib -L/usr/local/lib/gcc45/gcc/x86_64-portbld-freebsd7.3/4.5.3/../../.. -lgfortran -lm -lpthread"
CPPFLAGS="-I/usr/local/include -I/usr/local/include/freetype2 -I/usr/local/include"
INCFLAGS="-I. -I. -I./liboctave -I./src -I./libcruft/misc"
CC="gcc45"
CC_VERSION="4.5.3 20110203 (prerelease) (GCC) "
CFLAGS="-O2 -fno-strict-aliasing -pipe -I/usr/local/include -I/usr/local/include/metis -Wl,-rpath=/usr/local/lib/gcc45"
CPICFLAG="-fPIC"
CXX="g++45"
CXX_VERSION="4.5.3"
CXXFLAGS="-O2 -fno-strict-aliasing -pipe -I/usr/local/include -I/usr/local/include/metis -Wl,-rpath=/usr/local/lib/gcc45 -I/usr/local/include -I/usr/local/include/metis -I/usr/local/include/freetype2 -I/usr/local/include"
CXXPICFLAG="-fPIC"
LD_CXX="g++45"
LDFLAGS="-Wl,-rpath=/usr/local/lib/gcc45 -L/usr/local/lib -pthread"
LIBFLAGS="-L."
RLD_FLAG="-Wl,-rpath -Wl,/usr/local/lib/octave-3.3.50"
LEXLIB=""
LIBGLOB=""
LIBS="-lm  -L/usr/local/lib -lfreetype -lz -L/usr/X11R6/lib -lGL -lGLU"

AMD_CPPFLAGS=""
AMD_LDFLAGS=""
AMD_LIBS="-lamd"
ARPACK_CPPFLAGS=""
ARPACK_LDFLAGS=""
ARPACK_LIBS=""
BLAS_LIBS="-llapack -L/usr/local/lib -lblas"
CAMD_CPPFLAGS=""
CAMD_LDFLAGS=""
CAMD_LIBS="-lcamd"
CARBON_LIBS=""
CCOLAMD_CPPFLAGS=""
CCOLAMD_LDFLAGS=""
CCOLAMD_LIBS="-lccolamd"
CHOLMOD_CPPFLAGS=""
CHOLMOD_LDFLAGS=""
CHOLMOD_LIBS=""
COLAMD_CPPFLAGS=""
COLAMD_LDFLAGS=""
COLAMD_LIBS="-lcolamd"
CURL_CPPFLAGS=""
CURL_LDFLAGS=""
CURL_LIBS=""
CXSPARSE_CPPFLAGS=""
CXSPARSE_LDFLAGS=""
CXSPARSE_LIBS="-lcxsparse"
DL_LIBS=""
FFTW3_CPPFLAGS=""
FFTW3_LDFLAGS=""
FFTW3_LIBS="-lfftw3"
FFTW3F_CPPFLAGS=""
FFTW3F_LDFLAGS=""
FFTW3F_LIBS=""
GRAPHICS_LIBS=""
GLPK_CPPFLAGS=""
GLPK_LDFLAGS=""
GLPK_LIBS="-lglpk"
HDF5_CPPFLAGS=""
HDF5_LDFLAGS=""
HDF5_LIBS="-lhdf5"
OPENGL_LIBS="-L/usr/local/lib -lfontconfig   -L/usr/X11R6/lib -lGL -lGLU"
PTHREAD_CFLAGS="-D_THREAD_SAFE "
PTHREAD_LIBS=""
QHULL_CPPFLAGS=""
QHULL_LDFLAGS=""
QHULL_LIBS="-lqhull"
QRUPDATE_CPPFLAGS=""
QRUPDATE_LDFLAGS=""
QRUPDATE_LIBS=""
READLINE_LIBS="-lreadline"
REGEX_LIBS="-L/usr/local/lib -Wl,-R/usr/local/lib -lpcre"
TERM_LIBS="-lncurses"
UMFPACK_CPPFLAGS=""
UMFPACK_LDFLAGS=""
UMFPACK_LIBS="-lumfpack"
X11_INCFLAGS=""
X11_LIBS="-lX11"
Z_CPPFLAGS=""
Z_LDFLAGS=""
Z_LIBS="-lz"

DEFS="-DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DOCTAVE_SOURCE=1 -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -D__EXTENSIONS__=1 -D_ALL_SOURCE=1 -D_GNU_SOURCE=1 -D_POSIX_PTHREAD_SEMANTICS=1 -D_TANDEM_SOURCE=1 -DSEPCHAR=':' -DSEPCHAR_STR=\":\" -D__NO_MATH_INLINES=1 -DCXX_NEW_FRIEND_TEMPLATE_DECL=1 -DCXX_ISO_COMPLIANT_LIBRARY=1 -DHAVE_PTHREAD=1 -DHAVE_X_WINDOWS=1 -DFLOAT_TRUNCATE= -DHAVE_LIBM=1 -DF77_FUNC(name,NAME)=name ## _ -DF77_FUNC_(name,NAME)=name ## _ -DHAVE_IEEE754_DATA_FORMAT=1 -DHAVE_QHULL_QHULL_A_H=1 -DHAVE_QHULL=1 -DHAVE_PCRE_COMPILE=1 -DHAVE_PCRE=1 -DHAVE_REGEXEC=1 -DHAVE_REGEX=1 -DHAVE_ZLIB_H=1 -DHAVE_Z=1 -DHAVE_HDF5_H=1 -DHAVE_HDF5=1 -DHAVE_H5GGET_NUM_OBJS=1 -DHAVE_FFTW3_H=1 -DHAVE_FFTW3=1 -DHAVE_FFTW3_H=1 -DHAVE_GLPK_H=1 -DHAVE_GLPK=1 -DHAVE_GL_GL_H=1 -DHAVE_GL_GLU_H=1 -DHAVE_OPENGL=1 -DHAVE_FREETYPE=1 -DHAVE_FONTCONFIG=1 -DHAVE_BLAS=1 -DHAVE_SUITESPARSE_AMD_H=1 -DHAVE_AMD=1 -DHAVE_SUITESPARSE_CAMD_H=1 -DHAVE_CAMD=1 -DHAVE_SUITESPARSE_COLAMD_H=1 -DHAVE_COLAMD=1 -DHAVE_SUITESPARSE_CCOLAMD_H=1 -DHAVE_CCOLAMD=1 -DHAVE_SUITESPARSE_CHOLMOD_H=1 -DHAVE_SUITESPARSE_CS_H=1 -DHAVE_CXSPARSE=1 -DHAVE_SUITESPARSE_UMFPACK_H=1 -DHAVE_UMFPACK=1 -DUMFPACK_SEPARATE_SPLIT=1 -DHAVE_GETHOSTNAME=1 -DHAVE_GETPWNAM=1 -DHAVE_DEV_T=1 -DHAVE_INO_T=1 -DHAVE_NLINK_T=1 -DHAVE_NLINK_T=1 -DHAVE_LONG_LONG_INT=1 -DHAVE_UNSIGNED_LONG_LONG_INT=1 -DHAVE_SIGSET_T=1 -DHAVE_SIG_ATOMIC_T=1 -DSIZEOF_SHORT=2 -DSIZEOF_INT=4 -DSIZEOF_LONG=8 -DSIZEOF_LONG_LONG=8 -DHAVE_ALLOCA=1 -DHAVE_PLACEMENT_DELETE=1 -DHAVE_DYNAMIC_AUTO_ARRAYS=1 -DHAVE_FAST_INT_OPS=1 -DSIZEOF_LONG_DOUBLE=16 -DSTDC_HEADERS=1 -DHAVE_DIRENT_H=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_SYS_WAIT_H=1 -DHAVE_ASSERT_H=1 -DHAVE_CURSES_H=1 -DHAVE_DLFCN_H=1 -DHAVE_FCNTL_H=1 -DHAVE_FLOAT_H=1 -DHAVE_FLOATINGPOINT_H=1 -DHAVE_GRP_H=1 -DHAVE_IEEEFP_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_LIMITS_H=1 -DHAVE_LOCALE_H=1 -DHAVE_MEMORY_H=1 -DHAVE_NCURSES_H=1 -DHAVE_POLL_H=1 -DHAVE_PTHREAD_H=1 -DHAVE_PWD_H=1 -DHAVE_STDINT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_SYS_IOCTL_H=1 -DHAVE_SYS_PARAM_H=1 -DHAVE_SYS_POLL_H=1 -DHAVE_SYS_RESOURCE_H=1 -DHAVE_SYS_SELECT_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_SYS_TIMES_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_UTSNAME_H=1 -DHAVE_TERMCAP_H=1 -DHAVE_UNISTD_H=1 -DHAVE_UTIME_H=1 -DHAVE_SSTREAM=1 -DHAVE_TERMIOS_H=1 -DHAVE_SGTTY_H=1 -DHAVE_GLOB_H=1 -DHAVE_FNMATCH_H=1 -DHAVE_FNMATCH=1 -DHAVE_GLOB=1 -DHAVE_ATEXIT=1 -DHAVE_BASENAME=1 -DHAVE_BCOPY=1 -DHAVE_BZERO=1 -DHAVE_CHMOD=1 -DHAVE_DUP2=1 -DHAVE_ENDGRENT=1 -DHAVE_ENDPWENT=1 -DHAVE_EXECVP=1 -DHAVE_EXPM1=1 -DHAVE_EXPM1F=1 -DHAVE_FCNTL=1 -DHAVE_FORK=1 -DHAVE_FSTAT=1 -DHAVE_GETCWD=1 -DHAVE_GETEGID=1 -DHAVE_GETEUID=1 -DHAVE_GETGID=1 -DHAVE_GETGRENT=1 -DHAVE_GETGRGID=1 -DHAVE_GETGRNAM=1 -DHAVE_GETPGRP=1 -DHAVE_GETPID=1 -DHAVE_GETPPID=1 -DHAVE_GETPWENT=1 -DHAVE_GETPWUID=1 -DHAVE_GETTIMEOFDAY=1 -DHAVE_GETUID=1 -DHAVE_GETWD=1 -DHAVE_KILL=1 -DHAVE_LGAMMA=1 -DHAVE_LGAMMAF=1 -DHAVE_LGAMMA_R=1 -DHAVE_LGAMMAF_R=1 -DHAVE_LINK=1 -DHAVE_LOCALTIME_R=1 -DHAVE_LOG1P=1 -DHAVE_LOG1PF=1 -DHAVE_LSTAT=1 -DHAVE_MEMMOVE=1 -DHAVE_MKDIR=1 -DHAVE_MKFIFO=1 -DHAVE_MKSTEMP=1 -DHAVE_PIPE=1 -DHAVE_POLL=1 -DHAVE_PUTENV=1 -DHAVE_RAISE=1 -DHAVE_READLINK=1 -DHAVE_REALPATH=1 -DHAVE_RENAME=1 -DHAVE_RINDEX=1 -DHAVE_RMDIR=1 -DHAVE_ROUNDL=1 -DHAVE_SELECT=1 -DHAVE_SETGRENT=1 -DHAVE_SETLOCALE=1 -DHAVE_SETPWENT=1 -DHAVE_SETVBUF=1 -DHAVE_SIGACTION=1 -DHAVE_SIGLONGJMP=1 -DHAVE_SIGPENDING=1 -DHAVE_SIGPROCMASK=1 -DHAVE_SIGSUSPEND=1 -DHAVE_SNPRINTF=1 -DHAVE_STAT=1 -DHAVE_STRCASECMP=1 -DHAVE_STRDUP=1 -DHAVE_STRERROR=1 -DHAVE_STRNCASECMP=1 -DHAVE_STRPTIME=1 -DHAVE_STRSIGNAL=1 -DHAVE_SYMLINK=1 -DHAVE_TEMPNAM=1 -DHAVE_TRUNC=1 -DHAVE_UMASK=1 -DHAVE_UNAME=1 -DHAVE_UNLINK=1 -DHAVE_USLEEP=1 -DHAVE_UTIME=1 -DHAVE_VFPRINTF=1 -DHAVE_VSPRINTF=1 -DHAVE_VSNPRINTF=1 -DHAVE_WAITPID=1 -DHAVE__CHMOD=1 -DHAVE_DECL_EXP2=1 -DHAVE_DECL_ROUND=1 -DHAVE_DECL_TGAMMA=1 -DHAVE_EXP2=1 -DHAVE_ROUND=1 -DHAVE_TGAMMA=1 -DHAVE_STRFTIME=1 -DHAVE_C99_VSNPRINTF=1 -DOCTAVE_HAVE_BROKEN_STRPTIME=1 -DHAVE_DLOPEN=1 -DHAVE_DLSYM=1 -DHAVE_DLERROR=1 -DHAVE_DLCLOSE=1 -DHAVE_DLOPEN_API=1 -DENABLE_DYNAMIC_LINKING=1 -DHAVE_TIMEVAL=1 -DHAVE_CMATH_ISNAN=1 -DHAVE_CMATH_ISNANF=1 -DHAVE_CMATH_ISINF=1 -DHAVE_CMATH_ISINFF=1 -DHAVE_CMATH_ISFINITE=1 -DHAVE_CMATH_ISFINITEF=1 -DHAVE_FINITE=1 -DHAVE_ISNAN=1 -DHAVE_ISINF=1 -DHAVE_COPYSIGN=1 -DHAVE_DECL_SIGNBIT=1 -DHAVE_ACOSH=1 -DHAVE_ACOSHF=1 -DHAVE_ASINH=1 -DHAVE_ASINHF=1 -DHAVE_ATANH=1 -DHAVE_ATANHF=1 -DHAVE_ERF=1 -DHAVE_ERFF=1 -DHAVE_ERFC=1 -DHAVE_ERFCF=1 -DHAVE_EXP2F=1 -DHAVE_HYPOTF=1 -DHAVE_STRUCT_STAT_ST_BLKSIZE=1 -DHAVE_STRUCT_STAT_ST_BLOCKS=1 -DHAVE_STRUCT_STAT_ST_RDEV=1 -DHAVE_STRUCT_TM_TM_ZONE=1 -DHAVE_TM_ZONE=1 -DUSE_READLINE=1 -DRETSIGTYPE=void -DHAVE_DECL_SYS_SIGLIST=1 -DHAVE_POSIX_SIGNALS=1 -DRETSIGTYPE_IS_VOID=1 -DHAVE_GETRUSAGE=1 -DHAVE_TIMES=1 -DYYTEXT_POINTER=1"

: ${USER=$LOGNAME}

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.$$

if [ -z "$DEFEDITOR" ] && [ -z "$EDITOR" ]; then
  if [ -x /usr/bin/editor ]; then
    DEFEDITOR=editor
  elif [ -x /usr/local/bin/ce ]; then
    DEFEDITOR=ce
  elif [ -x /usr/local/bin/emacs ]; then
    DEFEDITOR=emacs
  elif [ -x /usr/contrib/bin/emacs ]; then
    DEFEDITOR=emacs
  elif [ -x /usr/bin/emacs ]; then
    DEFEDITOR=emacs
  elif [ -x /usr/bin/xemacs ]; then
    DEFEDITOR=xemacs
  elif [ -x /usr/contrib/bin/jove ]; then
    DEFEDITOR=jove
  elif [ -x /usr/local/bin/jove ]; then
    DEFEDITOR=jove
  elif [ -x /usr/bin/vi ]; then
    DEFEDITOR=vi
  else
    echo "octave-bug: No default editor found: attempting to use vi" >&2
    DEFEDITOR=vi
  fi
fi

: ${EDITOR=$DEFEDITOR}

if [ -z "$DEFPAGER" ] && [ -z "$PAGER" ]; then
  if [ -x /usr/bin/pager ]; then
    DEFPAGER=pager
  elif [ -x /usr/bin/less ]; then
    DEFPAGER=less
  elif [ -x /bin/less ]; then
    DEFPAGER=less
  elif [ -x /usr/local/bin/less ]; then
    DEFPAGER=less
  elif [ -x /usr/bin/more ]; then
    DEFPAGER=more
  elif [ -x /bin/more ]; then
    DEFPAGER=more
  elif [ -x /usr/bin/pg ]; then
    DEFPAGER=pg
  elif [ -x /bin/pg ]; then
    DEFPAGER=pg
  else
    echo "octave-bug: No default pager found: attempting to use more" >&2
    DEFPAGER=more
  fi
fi

: ${PAGER=$DEFPAGER}

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

# Check whether to use -n or \c to keep echo from printing a newline
# character.  Stolen from autoconf, which borrowed the idea from dist 3.0.

if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
  # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
  if (echo -n testing; echo 1,2,3) | $SED s/-n/xn/ | grep xn >/dev/null; then
    echo_n=
    echo_c='
'
  else
    echo_n=-n
    echo_c=
  fi
else
  echo_n=
  echo_c='\c'
fi

ss_p=`echo $VERSION | grep "^ss-"`
if test -n "$ss_p"; then
  BUGADDR="maintainers@octave.org"
else
  pretest_p=`echo $VERSION \
    | $SED 's,.*\.\([0-9]*\).*,\1,' \
    | grep -v '\.' \
    | grep '[0-9]'`

  if test -n "$pretest_p" && test "$pretest_p" -ge 90; then
    BUGADDR="maintainers@octave.org"
  else
    BUGADDR="bug@octave.org"
  fi
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
EOF
if test -n "$USER"; then
cat >> $TEMP << EOF
Cc: $USER
EOF
fi
cat >> $TEMP << EOF
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
SED:               $SED
Fortran compiler:  $F77
FFLAGS:            $FFLAGS
FLIBS:             $FLIBS
CPPFLAGS:          $CPPFLAGS
INCFLAGS:          $INCFLAGS
C compiler:        $CC_AND_VERSION
CFLAGS:            $CFLAGS
CPICFLAG:          $CPICFLAG
C++ compiler:      $CXX_AND_VERSION
CXXFLAGS:          $CXXFLAGS
CXXPICFLAG:        $CXXPICFLAG
LD_CXX:            $LD_CXX
LDFLAGS:           $LDFLAGS
LIBFLAGS:          $LIBFLAGS
RLD_FLAG:          $RLD_FLAG
LEXLIB:            $LEXLIB
LIBGLOB:           $LIBGLOB
LIBS:              $LIBS
AMD_CPPFLAGS:      $AMD_CPPFLAGS
AMD_LDFLAGS:       $AMD_LDFLAGS
AMD_LIBS:          $AMD_LIBS
ARPACK_LIBS:       $ARPACK_LIBS
BLAS_LIBS:         $BLAS_LIBS
CAMD_CPPFLAGS:     $CAMD_CPPFLAGS
CAMD_LDFLAGS:      $CAMD_LDFLAGS
CAMD_LIBS:         $CAMD_LIBS
CARBON_LIBS:       $CARBON_LIBS
CCOLAMD_CPPFLAGS:  $CCOLAMD_CPPFLAGS
CCOLAMD_LDFLAGS:   $CCOLAMD_LDFLAGS
CCOLAMD_LIBS:      $CCOLAMD_LIBS
CHOLMOD_CPPFLAGS:  $CHOLMOD_CPPFLAGS
CHOLMOD_LDFLAGS:   $CHOLMOD_LDFLAGS
CHOLMOD_LIBS:      $CHOLMOD_LIBS
COLAMD_CPPFLAGS:   $COLAMD_CPPFLAGS
COLAMD_LDFLAGS:    $COLAMD_LDFLAGS
COLAMD_LIBS:       $COLAMD_LIBS
CURL_CPPFLAGS:     $CURL_CPPFLAGS
CURL_LDFLAGS:      $CURL_LDFLAGS
CURL_LIBS:         $CURL_LIBS
CXSPARSE_CPPFLAGS: $CXSPARSE_CPPFLAGS
CXSPARSE_LDFLAGS:  $CXSPARSE_LDFLAGS
CXSPARSE_LIBS:     $CXSPARSE_LIBS
DL_LIBS:           $DL_LIBS
FFTW3_CPPFLAGS:    $FFTW3_CPPFLAGS
FFTW3_LDFLAGS:     $FFTW3_LDFLAGS
FFTW3_LIBS:        $FFTW3_LIBS
FFTW3F_CPPFLAGS:   $FFTW3F_CPPFLAGS
FFTW3F_LDFLAGS:    $FFTW3F_LDFLAGS
FFTW3F_LIBS:       $FFTW3F_LIBS
GRAPHICS_LIBS:     $GRAPHICS_LIBS
GLPK_CPPFLAGS:     $GLPK_CPPFLAGS
GLPK_LDFLAGS:      $GLPK_LDFLAGS
GLPK_LIBS:         $GLPK_LIBS
HDF5_CPPFLAGS:     $HDF5_CPPFLAGS
HDF5_LDFLAGS:      $HDF5_LDFLAGS
HDF5_LIBS:         $HDF5_LIBS
OPENGL_LIBS:       $OPENGL_LIBS
PTHREAD_CFLAGS:    $PTHREAD_CFLAGS
PTHREAD_LIBS:      $PTHREAD_LIBS
QHULL_CPPFLAGS:    $QHULL_CPPFLAGS
QHULL_LDFLAGS:     $QHULL_LDFLAGS
QHULL_LIBS:        $QHULL_LIBS
QRUPDATE_LIBS:     $QRUPDATE_LIBS
READLINE_LIBS:     $READLINE_LIBS
REGEX_LIBS:        $REGEX_LIBS
TERM_LIBS:         $TERM_LIBS
UMFPACK_LIBS:      $UMFPACK_LIBS
X11_INCFLAGS:      $X11_INCFLAGS
X11_LIBS:          $X11_LIBS
Z_CPPFLAGS:        $Z_CPPFLAGS
Z_LDFLAGS:         $Z_LDFLAGS
Z_LIBS:            $Z_LIBS
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

editing=true

while $editing; do
  if $EDITOR $TEMP; then
    while $editing; do
      echo $echo_n "(a)bort, (e)dit, (l)ist, (s)end? $echo_c"
      read ans
      case "$ans" in
        a* | A*)
          status=1
          editing=false
        ;;
        e* | E*)
          break;
        ;;
        l* | L*)
          $PAGER $TEMP
        ;;
        s* | S*)
          editing=false
        ;;
      esac
    done
  else
    echo "problems with edit -- no bug report submitted"
    status=1
    editing=false
  fi
done

if test $status -eq 0; 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"

    TMP_SUB=`$SED -e '/^--------[ \t]*$/q' $TEMP | $SED -n -e 's/^Subject://p'`

    if test -n "$TMP_SUB"; then
      SUBJECT="$TMP_SUB"
    fi

# 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.

    # indicate that we have not yet sent email successfully
    status=11

    if test $status -ne 0; then
      ( mailx -s "$SUBJECT" $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=$?
          # make /bin/mail our last resort -- it ignores the subject line
          if test $status -ne 0; then
            ( /bin/mail $BUGADDR < $TEMP.x ) > /dev/null 2>&1
            status=$?
            if test $status -ne 0; then
              echo "unable to send mail..."
            fi
          fi
        fi
      fi
    fi
  fi
fi

if test $status -ne 0; then
  dead_bug_file=$HOME/dead-octave-bug
  looking_for_file=true;
  n=1
  while $looking_for_file; do
    if test -f "$dead_bug_file-$n"; then
      n=`expr $n + 1`
    else
      looking_for_file=false
      dead_bug_file=$dead_bug_file-$n
    fi
  done
  echo "saving message in $dead_bug_file";
  cat $TEMP >> $dead_bug_file;
  exit 1
else
  echo "bug report sent to: $TO_ADDR"
  echo "             cc to: $CC_ADDR"
fi

exit $status
