#! /bin/sh # # To apply this patch, cd to the top level Octave source directory and # run this file through /bin/sh. It will first remove any files that # have been deleted from the source distribution since the last # release and then update the sources with patch(1). # # Diffs for updating *.ps, *.dvi, and *.info* files are not included # because they can be recreated from the Texinfo files using TeX and # makeinfo. # # Diffs for updating parse.cc and y.tab.h are not included because # they can be recreated from the file parse.y using bison. # # Diffs for updating lex.cc are not included because it can be # recreated from lex.l using flex. # # Diffs for updating the configure script are not included because # it can be recreated from configure.in using autoconf. # # John W. Eaton # jwe@bevo.che.wisc.edu # University of Wisconsin-Madison # Department of Chemical Engineering if test -f src/octave.cc ; then true else echo '***********************************************************' 1>&2 echo 'You must run this script in the top-level octave directory!' 1>&2 echo '***********************************************************' 1>&2 exit 1 fi ### ### Special commands should go here. ### rm -f doc/interpreter/bugs1.texi doc/interpreter/install1.texi rm -f doinstall.sh octave.sh emacs/octave.el rm -rf emacs/CVS echo 'patching existing files' patch -p1 << \PATCH_EOF diff -cNr octave-2.0.1/BUGS octave-2.0.2/BUGS *** octave-2.0.1/BUGS Sat Oct 12 17:26:58 1996 --- octave-2.0.2/BUGS Sun Jan 26 22:18:05 1997 *************** *** 34,45 **** to turn the pager off. - * Control-C doesn't work properly in the pager on DEC Alpha systems - running OSF/1 3.0. - - This appears to be a bug in the OSF/1 3.0 Bourne shell. The - problem doesn't appear on systems running OSF/1 1.3. - * If you get messages like Input line too long --- 34,39 ---- *************** *** 85,92 **** Of course, this doesn't really fix the problem, but it does make it much less likely that you will run into trouble unless you are putting a very large number of lines on a given plot. - - * String handling could use some work. A list of ideas for future enhancements is distributed with Octave. See the file `PROJECTS' in the top level directory in the source --- 79,84 ---- diff -cNr octave-2.0.1/ChangeLog octave-2.0.2/ChangeLog *** octave-2.0.1/ChangeLog Tue Jan 7 00:16:40 1997 --- octave-2.0.2/ChangeLog Mon Jan 27 15:52:16 1997 *************** *** 1,3 **** --- 1,64 ---- + Mon Jan 27 00:10:10 1997 John W. Eaton + + * Version 2.0.2 released. + + * configure.in: Add check for usleep(). + (bsd_gcc_kluge_targets_frag): New fragment. + + * Makefile.in: Delete `internal' targets. + (static-binary-dist, dynamic-binary-dist): Special cases. + + * octMakefile.in (static-binary-dist, dynamic-binary-dist): + New targets. + (binary-dist, bin-dist): Delete. + + Sun Jan 26 19:39:51 1997 John W. Eaton + + * emacs/Makefile.in: New file. + * configure.in: create emacs/Makefile. + * octMakefile.in: Move/add emacs dir to the appropriate lists. + + Sat Jan 25 22:27:14 1997 John W. Eaton + + * aclocal.m4 (OCTAVE_CHECK_TYPE): New macro, stolen from bash. + * configure.in: Use it. + * acconfig.h: Add #undef for sigset_t. + + * configure.in (RLD_FLAG): Delete. + * mkoctfile.in (RLD_FLAG): Delete. + * octave-bug.in (RLD_FLAG): Delete. + * Makeconf.in (RLD_FLAG): Delete. + + * Makefile.in (bin-dist): New target. + + * install-octave: Rename from doinstall.sh. Update for 2.x. + + Wed Jan 22 11:14:07 1997 John W. Eaton + + * aclocal.m4 (ld_run_path): Anchor search at beginning of line to + avoid GNU sed bug on HP-UX systems. Use just one sed command. + + * emacs/octave-hlp.el, emacs/octave-inf.el, emacs/octave-mod.el: + New files from Kurt Hornik. + * emacs/octave.el: Delete. + + Mon Jan 20 11:16:21 1997 John W. Eaton + + * mkoctfile.in (ALL_CXXFLAGS): Delete reference to -lg++. + + * configure.in (RLD_FLAG): For sparc-sun-sunos4*, remove space + between -L and $(libdir). + (FPICFLAG): If using g77, set it to -fPIC. + + Sun Jan 19 15:57:20 1997 John W. Eaton + + * Makeconf.in, configure.in: Delete FUGLY. + + Wed Jan 8 23:12:02 1997 John W. Eaton + + * configure.in (DEFAULT_PAGER): On cygwin32 systems, also look for + more.com. + Tue Jan 7 00:16:35 1997 John W. Eaton * Version 2.0.1 released. diff -cNr octave-2.0.1/INSTALL.OCTAVE octave-2.0.2/INSTALL.OCTAVE *** octave-2.0.1/INSTALL.OCTAVE Sat Oct 12 17:26:57 1996 --- octave-2.0.2/INSTALL.OCTAVE Sun Jan 26 22:17:59 1997 *************** *** 12,19 **** Octave, see *Note Binary Distributions::. * Run the shell script `configure'. This will determine the features ! your system has (or doesn't have) and create a file named Makefile ! from each of the files named Makefile.in. Here is a summary of the configure options that are most frequently used when building Octave: --- 12,19 ---- Octave, see *Note Binary Distributions::. * Run the shell script `configure'. This will determine the features ! your system has (or doesn't have) and create a file named ! `Makefile' from each of the files named `Makefile.in'. Here is a summary of the configure options that are most frequently used when building Octave: *************** *** 42,48 **** Print a summary of the options recognized by the configure script. ! See the file INSTALL for more information about the command line options used by configure. That file also contains instructions for compiling in a directory other than where the source is located. --- 42,48 ---- Print a summary of the options recognized by the configure script. ! See the file `INSTALL' for more information about the command line options used by configure. That file also contains instructions for compiling in a directory other than where the source is located. *************** *** 50,56 **** * Run make. You will need a recent version of GNU make. Modifying Octave's ! Makefiles to work with other make programs is probably not worth your time. We recommend you get and compile GNU make instead. For plotting, you will need to have gnuplot installed on your --- 50,56 ---- * Run make. You will need a recent version of GNU make. Modifying Octave's ! makefiles to work with other make programs is probably not worth your time. We recommend you get and compile GNU make instead. For plotting, you will need to have gnuplot installed on your *************** *** 59,77 **** `gnu' in gnuplot is a coincidence--it is not related to the GNU project or the FSF in any but the most peripheral sense. ! For version ss-961012, you must have the GNU C++ compiler (gcc) ! version 2.6.3 or later to compile Octave. You will also need ! version 2.6.1 of the GNU C++ class library (libg++). If you plan ! to modify the parser you will also need GNU bison and fles. If ! you modify the documentation, you will need GNU Texinfo, along ! with the patch for the makeinfo program that is distributed with ! Octave. GNU make, gcc, and libg++, gnuplot, bison, flex, and Texinfo are all available from many anonymous ftp archives. The primary site is prep.ai.mit.edu, but it is often very busy. A list of sites that mirror the software on prep is available by anonymous ftp ! from prep.ai.mit.edu in the file /pub/gnu/GNUinfo/FTP, or by fingering fsf@prep.ai.mit.edu. If you don't have a Fortran compiler, or if your Fortran compiler --- 59,77 ---- `gnu' in gnuplot is a coincidence--it is not related to the GNU project or the FSF in any but the most peripheral sense. ! For version 2.0.1, you must have the GNU C++ compiler (gcc) ! version 2.7.2 or later to compile Octave. You will also need ! version 2.7.1 or 2.7.2 of the GNU C++ class library (libg++). If ! you plan to modify the parser you will also need GNU bison and ! fles. If you modify the documentation, you will need GNU Texinfo, ! along with the patch for the makeinfo program that is distributed ! with Octave. GNU make, gcc, and libg++, gnuplot, bison, flex, and Texinfo are all available from many anonymous ftp archives. The primary site is prep.ai.mit.edu, but it is often very busy. A list of sites that mirror the software on prep is available by anonymous ftp ! from prep.ai.mit.edu in the file `/pub/gnu/GNUinfo/FTP', or by fingering fsf@prep.ai.mit.edu. If you don't have a Fortran compiler, or if your Fortran compiler *************** *** 100,106 **** This will install a copy of octave, its libraries, and its documentation in the destination directory. As distributed, ! Octave is installed in the following directories: `PREFIX/bin' Octave and other binaries that people will want to run --- 100,110 ---- This will install a copy of octave, its libraries, and its documentation in the destination directory. As distributed, ! Octave is installed in the following directories. In the table ! below, PREFIX defaults to `/usr/local', VERSION stands for the ! current version number of the interpreter, and HOST_TYPE is the ! type of computer on which Octave is installed (for example, ! `i586-unknown-gnu'). `PREFIX/bin' Octave and other binaries that people will want to run *************** *** 109,114 **** --- 113,121 ---- `PREFIX/lib' Libraries like libcruft.a and liboctave.a. + `PREFIX/share' + Architecture-independent data files. + `PREFIX/include/octave' Include files distributed with Octave. *************** *** 118,124 **** `PREFIX/info' Info files describing Octave. ! `PREFIX/lib/octave/VERSION/m' Function files distributed with Octave. This includes the Octave version, so that multiple versions of Octave may be installed at the same time. --- 125,131 ---- `PREFIX/info' Info files describing Octave. ! `PREFIX/share/octave/VERSION/m' Function files distributed with Octave. This includes the Octave version, so that multiple versions of Octave may be installed at the same time. *************** *** 129,142 **** `PREFIX/lib/octave/VERSION/oct/HOST_TYPE' Object files that will be dynamically loaded. ! `PREFIX/lib/octave/VERSION/imagelib' Image files that are distributed with Octave. - where PREFIX defaults to `/usr/local', VERSION stands for the - current version number of the interpreter, and HOST_TYPE is the - type of computer on which Octave is installed (for example, - `i486-unknown-gnu'). - Installation Problems ===================== --- 136,144 ---- `PREFIX/lib/octave/VERSION/oct/HOST_TYPE' Object files that will be dynamically loaded. ! `PREFIX/share/octave/VERSION/imagelib' Image files that are distributed with Octave. Installation Problems ===================== *************** *** 144,157 **** that don't really mean anything is wrong) that may show up during installation of Octave. ! * If `configure' fails when trying to create its output files, you ! may have found a limitation in the version of `sed' on your ! system. Using GNU `sed' avoids the problem. ! ! * You may need to edit some files in the gcc include subdirectory to ! add prototypes for functions there. For example, Ultrix 4.2 needs ! proper declarations for the `signal()' and the `SIG_IGN' macro in ! the file `signal.h'. On some systems the `SIG_IGN' macro is defined to be something like this: --- 146,175 ---- that don't really mean anything is wrong) that may show up during installation of Octave. ! * On some SCO systems, `info' fails to compile if `HAVE_TERMIOS_H' ! is defined int `config.h'. Simply removing the definition from ! `info/config.h' should allow it to compile. ! ! * If `configure' finds `dlopen', `dlsym', `dlclose', and `dlerror', ! but not the header file `dlfcn.h', you need to find the source for ! the header file and install it in the directory `usr/include'. ! This is reportedly a problem with Slackware 3.1. For Linux/GNU ! systems, the source for `dlfcn.h' is in the `ldso' package. ! ! * If you encounter errors like ! ! passing `void (*)()' as argument 2 of ! `octave_set_signal_handler(int, void (*)(int))' ! ! or ! ! warning: ANSI C++ prohibits conversion from `(int)' to `(...)' ! ! while compiling `sighandlers.cc', you may need to edit some files ! in the gcc include subdirectory to add proper prototypes for ! functions there. For example, Ultrix 4.2 needs proper ! declarations for the `signal()' and the `SIG_IGN' macro in the ! file `signal.h'. On some systems the `SIG_IGN' macro is defined to be something like this: *************** *** 162,199 **** #define SIG_IGN (void (*)(int))1 ! to match the prototype declaration for `signal()'. ! The gcc fixincludes/fixproto script should probably fix this when ! gcc installs its modified set of header files, but I don't think ! that's been done yet. ! ! * There is a bug with the makeinfo program that is distributed with ! texinfo-3.1 that causes the indices in Octave's on-line manual to ! be generated incorrectly. If you need to recreate the on-line ! documentation, you should get the makeinfo program that is ! distributed with texinfo-3.1 and apply the patch for makeinfo that ! is distributed with Octave. See the file MAKEINFO.PATCH for more ! details. ! ! * If you don't have NPSOL but you still want to be able to solve ! NLPs, or if you don't have QPSOL but you still want to solve QPs, ! you'll need to find replacements or order them from Stanford. If ! you know of a freely redistributable replacement, please let us ! know--we might be interested in distributing it with Octave. ! You can get more information about NPSOL and QPSOL from ! Stanford Business Sofrtware, Inc. ! 2680 Bayshore Parkway, Suite 304 ! Mountain View, CA 94043 ! Tel: (415) 962-8719 ! Fax: (415) 962-1869 ! Octave may soon support FSQP, an NLP solver from Andre Tits ! (andre@src.umd.edu) of the University of Maryland. FSQP is ! available free of charge to academic sites, but can not be ! redistributed to third parties. * Some of the Fortran subroutines may fail to compile with older versions of the Sun Fortran compiler. If you get errors like --- 180,209 ---- #define SIG_IGN (void (*)(int))1 ! to match the prototype declaration for `signal()'. This change ! should also be made for the `SIG_DFL' and `SIG_ERR' symbols. It ! may be necessary to change the definitions in `sys/signal.h' as ! well. ! ! The gcc fixincludes/fixproto script should probably fix these ! problems when gcc installs its modified set of header files, but I ! don't think that's been done yet. ! *You should not change the files in `/usr/include'*. You can find ! the gcc include directory tree by running the command ! gcc -print-libgcc-file-name ! The directory of gcc include files normally begins in the same ! directory that contains the file `libgcc.a'. ! * There is a bug with the makeinfo program that is distributed with ! Texinfo (through version 3.9) that causes the indices in Octave's ! on-line manual to be generated incorrectly. If you need to ! recreate the on-line documentation, you should get the makeinfo ! program that is distributed with texinfo-3.9 and apply the patch ! for makeinfo that is distributed with Octave. See the file ! `MAKEINFO.PATCH' for more details. * Some of the Fortran subroutines may fail to compile with older versions of the Sun Fortran compiler. If you get errors like *************** *** 201,211 **** zgemm.f: zgemm: warning: unexpected parent of complex expression subtree ! zgemm.f, line 245: warning: unexpected parent of complex expression subtree warning: unexpected parent of complex expression subtree ! zgemm.f, line 304: warning: unexpected parent of complex expression subtree warning: unexpected parent of complex expression subtree ! zgemm.f, line 327: warning: unexpected parent of complex expression subtree pcc_binval: missing IR_CONV in complex op make[2]: *** [zgemm.o] Error 1 --- 211,224 ---- zgemm.f: zgemm: warning: unexpected parent of complex expression subtree ! zgemm.f, line 245: warning: unexpected parent of complex ! expression subtree warning: unexpected parent of complex expression subtree ! zgemm.f, line 304: warning: unexpected parent of complex ! expression subtree warning: unexpected parent of complex expression subtree ! zgemm.f, line 327: warning: unexpected parent of complex ! expression subtree pcc_binval: missing IR_CONV in complex op make[2]: *** [zgemm.o] Error 1 *************** *** 244,270 **** .objc_class_name_NXStringTable .objc_class_name_NXBundle ! One kludge around this problem is to extract `termios.o' from `libposix.a', put it in Octave's `src' directory, and add it to ! the list of files to link together in the Makefile. Suggestions for better ways to solve this problem are welcome! - * With g++ 2.6.3 (and possibly other 2.6.x versions) on some Intel - x86 systems, compiling `Array-d.cc' fails with the messages like - - as: /tmp/cc005254.s:4057: Local symbol LBB103 never defined. - as: /tmp/cc005254.s:4057: Local symbol LBE103 never defined. - - A possible workaround for this is to compile without `-g'. - * If Octave crashes immediately with a floating point exception, it is likely that it is failing to initialize the IEEE floating point values for infinity and NaN. If your system actually does support IEEE arithmetic, you should be able to fix this problem by modifying the function ! `octave_ieee_init' in the file `sysdep.cc' to correctly initialize ! Octave's internal infinity and NaN variables. If your system does not support IEEE arithmetic but Octave's configure script incorrectly determined that it does, you can work --- 257,275 ---- .objc_class_name_NXStringTable .objc_class_name_NXBundle ! One kluge around this problem is to extract `termios.o' from `libposix.a', put it in Octave's `src' directory, and add it to ! the list of files to link together in the makefile. Suggestions for better ways to solve this problem are welcome! * If Octave crashes immediately with a floating point exception, it is likely that it is failing to initialize the IEEE floating point values for infinity and NaN. If your system actually does support IEEE arithmetic, you should be able to fix this problem by modifying the function ! `octave_ieee_init' in the file `lo-ieee.cc' to correctly ! initialize Octave's internal infinity and NaN variables. If your system does not support IEEE arithmetic but Octave's configure script incorrectly determined that it does, you can work *************** *** 275,284 **** possible to modify Octave's configuration script to automatically determine the proper thing to do. ! * Using the -O flag with old versions of the Sun Fortran compiler ! apparently prevents if from compiling some of the Fortran ! subroutines that Octave uses. The workaround is to not use -O for ! those subroutines. Binary Distributions ==================== --- 280,303 ---- possible to modify Octave's configuration script to automatically determine the proper thing to do. ! * If you don't have NPSOL but you still want to be able to solve ! NLPs, or if you don't have QPSOL but you still want to solve QPs, ! you'll need to find replacements or order them from Stanford. If ! you know of a freely redistributable replacement, please let us ! know--we might be interested in distributing it with Octave. ! ! You can get more information about NPSOL and QPSOL from ! ! Stanford Business Sofrtware, Inc. ! 2680 Bayshore Parkway, Suite 304 ! Mountain View, CA 94043 ! Tel: (415) 962-8719 ! Fax: (415) 962-1869 ! ! Octave may soon support FSQP, an NLP solver from Andre Tits ! (andre@src.umd.edu) of the University of Maryland. FSQP is ! available free of charge to academic sites, but can not be ! redistributed to third parties. Binary Distributions ==================== *************** *** 316,321 **** --- 335,343 ---- `lib/octave/VERSION/exec/HOST_TYPE' Executables to be run by Octave rather than the user. + `lib/octave/VERSION/oct/HOST_TYPE' + Object files that will be dynamically loaded. + `lib/octave/VERSION/imagelib' Image files that are distributed with Octave. *************** *** 326,349 **** If these directories don't exist, the script `doinstall.sh' will create them for you. ! If this is possible for you to install Octave in `/usr/local', or if you would prefer to install it in a different directory, you can specify the name of the top level directory as an argument to the doinstall.sh script. For example: sh ./doinstall.sh /some/other/directory ! Octave will then be installed in subdirectories of the directory ! `/some/other/directory' Creating a Binary Distribution ------------------------------ Here is how to build a binary distribution for others. ! * Build Octave in the same directory as the source. This is required ! since the `binary-dist' targets in the Makefiles will not work if ! you compile outside the source tree. * Use `CFLAGS=-O CXXFLAGS=-O LDFLAGS=' as arguments for Make because most people who get the binary distributions are probably not --- 348,371 ---- If these directories don't exist, the script `doinstall.sh' will create them for you. ! If it is not possible for you to install Octave in `/usr/local', or if you would prefer to install it in a different directory, you can specify the name of the top level directory as an argument to the doinstall.sh script. For example: sh ./doinstall.sh /some/other/directory ! will install Octave in subdirectories of the directory ! `/some/other/directory'. Creating a Binary Distribution ------------------------------ Here is how to build a binary distribution for others. ! * You must build Octave in the same directory as the source. This is ! required since the `binary-dist' targets in the makefiles will not ! work if you compile outside the source tree. * Use `CFLAGS=-O CXXFLAGS=-O LDFLAGS=' as arguments for Make because most people who get the binary distributions are probably not diff -cNr octave-2.0.1/Makeconf.in octave-2.0.2/Makeconf.in *** octave-2.0.1/Makeconf.in Thu Dec 12 14:41:34 1996 --- octave-2.0.2/Makeconf.in Sat Jan 25 22:49:40 1997 *************** *** 54,62 **** F77 = @F77@ FFLAGS = @FFLAGS@ FPICFLAG = @FPICFLAG@ - FUGLY = @FUGLY@ FORTRAN_MAIN_FLAG = @FORTRAN_MAIN_FLAG@ ! ALL_FFLAGS = $(FUGLY) $(FFLAGS) # cc and associated flags. --- 54,61 ---- F77 = @F77@ FFLAGS = @FFLAGS@ FPICFLAG = @FPICFLAG@ FORTRAN_MAIN_FLAG = @FORTRAN_MAIN_FLAG@ ! ALL_FFLAGS = $(FFLAGS) # cc and associated flags. *************** *** 115,122 **** ALL_LDFLAGS = $(LIBFLAGS) $(FORTRAN_MAIN_FLAG) $(GCC_IEEE_FP_FLAG) \ $(LD_STATIC_FLAG) $(CPICFLAG) $(LDFLAGS) - RLD_FLAG = @RLD_FLAG@ - FLIBS = @FLIBS@ CXXLIBS = @CXXLIBS@ --- 114,119 ---- *************** *** 336,342 **** -e "s;%GCC_IEEE_FP_FLAG%;\"${GCC_IEEE_FP_FLAG}\";" \ -e "s;%LDFLAGS%;\"${LDFLAGS}\";" \ -e "s;%LIBFLAGS%;\"-L${libdir}\";" \ - -e "s;%RLD_FLAG%;\"${RLD_FLAG}\";" \ -e "s;%CXXLIBS%;\"${CXXLIBS}\";" \ -e "s;%TERMLIBS%;\"${TERMLIBS}\";" \ -e "s;%LIBS%;\"${LIBS}\";" \ --- 333,338 ---- diff -cNr octave-2.0.1/Makefile.in octave-2.0.2/Makefile.in *** octave-2.0.1/Makefile.in Thu Dec 12 02:18:24 1996 --- octave-2.0.2/Makefile.in Mon Jan 27 13:28:22 1997 *************** *** 35,44 **** TARGETS = octave-bug mkoctfile libcruft liboctave kpathsea info dlfcn \ src scripts doc check octave.info INSTALL.OCTAVE BUGS \ ! install uninstall tags TAGS clean-tar dist-z links-for-dist \ ! dist-tar clean-dist-tar dist links-for-bin-dist bin-dist-tar \ ! clean-bin-dist-tar binary-dist conf-dist snapshot-z snapshot \ ! snapshot-version NO_DEP_TARGETS = clean mostlyclean distclean maintainer-clean --- 35,41 ---- TARGETS = octave-bug mkoctfile libcruft liboctave kpathsea info dlfcn \ src scripts doc check octave.info INSTALL.OCTAVE BUGS \ ! install uninstall tags TAGS dist conf-dist snapshot snapshot-version NO_DEP_TARGETS = clean mostlyclean distclean maintainer-clean *************** *** 49,53 **** --- 46,70 ---- $(NO_DEP_TARGETS): FORCE $(MAKE) -f octMakefile omit_deps=true $@ + + binary-dist: FORCE + @echo "***" + @echo "*** you must specify either static or dynamic:" + @echo "***" + @echo "*** make dynamic-binary-dist" + @echo "***" + @echo "*** dynamically linked version typically including support" + @echo "*** for shared libraried and dynamically linked functions" + @echo "***" + @echo "*** make static-binary-dist" + @echo "***" + @echo "*** statically linked version" + @echo "***" + + static-binary-dist: + $(MAKE) -f octMakefile DIST_TYPE=static binary-dist + + dynamic-binary-dist: + $(MAKE) -f octMakefile DIST_TYPE=dynamic binary-dist FORCE: diff -cNr octave-2.0.1/NEWS octave-2.0.2/NEWS *** octave-2.0.1/NEWS Tue Dec 10 01:10:56 1996 --- octave-2.0.2/NEWS Mon Jan 27 15:51:08 1997 *************** *** 1,3 **** --- 1,21 ---- + Summary of changes for version 2.0.2: + ------------------------------------ + + * Octave now stops executing commands from a script file if an error + is encountered. + + * The return, and break commands now cause Octave to quit executing + commands from script files. When used in invalid contexts, the + break, continue, and return commands are now simply ignored + instead of producing parse errors. + + * size ("") is now [0, 0]. + + * New functions: + + sleep -- pause execution for a specified number of seconds + usleep -- pause execution for a specified number of microseconds + Summary of changes for version 2.0: ---------------------------------- diff -cNr octave-2.0.1/PROJECTS octave-2.0.2/PROJECTS *** octave-2.0.1/PROJECTS Mon Jan 6 00:23:23 1997 --- octave-2.0.2/PROJECTS Thu Jan 23 10:31:46 1997 *************** *** 144,155 **** * Consider changing the default value of `string_fill_char' from SPC to NUL. - * Consider making size ("") ==> [0, 0] for compatibility with - Matlab, at least when some preference variable is set. - - * Consider making [] equivalent to "" for compatibility with - Matlab, at least when some preference variable is set. - * Consider making ["test", []] ==> "test", for compatibility with Matlab, at least when some set of preferences are set. --- 144,149 ---- *************** *** 399,408 **** * Is Matrix::fortran_vec() really necessary? * print_usage() should set error_state in most cases? - - * Add an option to make Octave quit executing a script when error() is - called. Also make it possible for `return' or `break' to exit a - script. * Make statements like this --- 393,398 ---- diff -cNr octave-2.0.1/README.Linux octave-2.0.2/README.Linux *** octave-2.0.1/README.Linux Tue Jan 7 00:19:53 1997 --- octave-2.0.2/README.Linux Wed Jan 22 10:44:28 1997 *************** *** 24,34 **** --- 24,36 ---- * Linux kernel 2.0.6 * gcc/g++ 2.7.2 + * g77 0.5.18 * libg++/libstdc++ 2.7.1.0 * libm 5.0.5 * libc 5.2.18 * libncurses 3.0 * ld.so 1.7.14 + * binutils 2.6 I know from experience that the versions listed above seem to work well together. But if you have a newer version of the kernel, you may *************** *** 39,44 **** --- 41,48 ---- for the libraries. If it is not, please ask the maintainers of the libraries to clarify the documentation. + Please note that I am NOT + Octave won't even compile ------------------------- *************** *** 99,104 **** --- 103,113 ---- ar cq libieee.a + NOTE: you should fix this problem (either by editing the specs file or + by creating the library) *before* running configure and compiling + Octave. Otherwise, configure may incorrectly determine that your + system doesn't have support for some IEEE math functions. + My system doesn't have g77 -------------------------- *************** *** 140,143 **** University of Wisconsin-Madison Department of Chemical Engineering ! Thu Dec 19 13:07:46 1996 --- 149,152 ---- University of Wisconsin-Madison Department of Chemical Engineering ! Wed Jan 15 20:04:54 1997 diff -cNr octave-2.0.1/README.Windows octave-2.0.2/README.Windows *** octave-2.0.1/README.Windows Sat Dec 14 09:06:39 1996 --- octave-2.0.2/README.Windows Wed Jan 8 23:16:00 1997 *************** *** 33,41 **** * GNU info doesn't work yet. It compiles but doesn't run. Perhaps the problem is just that a proper termcap entry needs to be defined. ! * If you have a working version of less, the pager will probably work. ! The GNU-WIN32 tools used to include a copy of less, but I am told it ! was dropped from the distribution because it didn't work very well. * To make plotting work, you will need to find a version of gnuplot that can read commands from a pipe. The binary versions of gnuplot --- 33,45 ---- * GNU info doesn't work yet. It compiles but doesn't run. Perhaps the problem is just that a proper termcap entry needs to be defined. ! * If no other pager can be found, Octave will use more.com. Since ! that's a pretty limited pager (no going backward, etc.) you may want ! to find a working version of less. The GNU-WIN32 tools used to ! include a copy of less, but I am told it was dropped from the ! distribution because it didn't work very well. If you know of a ! better port of less that will work with Octave, please contact ! bug-octave@bevo.che.wisc.edu. * To make plotting work, you will need to find a version of gnuplot that can read commands from a pipe. The binary versions of gnuplot *************** *** 62,65 **** University of Wisconsin-Madison Department of Chemical Engineering ! Tue Dec 10 01:00:52 1996 --- 66,69 ---- University of Wisconsin-Madison Department of Chemical Engineering ! Wed Jan 8 23:15:59 1997 diff -cNr octave-2.0.1/acconfig.h octave-2.0.2/acconfig.h *** octave-2.0.1/acconfig.h Mon Dec 9 11:16:00 1996 --- octave-2.0.2/acconfig.h Sat Jan 25 23:12:10 1997 *************** *** 122,127 **** --- 122,130 ---- /* Define to `short' if doesn't define. */ #undef nlink_t + /* Define to `int' if doesn't define. */ + #undef sigset_t + /* Leave that blank line there!! Autoheader needs it. If you're adding to this file, keep in mind: diff -cNr octave-2.0.1/aclocal.m4 octave-2.0.2/aclocal.m4 *** octave-2.0.1/aclocal.m4 Thu Dec 19 16:25:28 1996 --- octave-2.0.2/aclocal.m4 Sat Jan 25 23:15:17 1997 *************** *** 126,133 **** fi dnl ld_run_path=`echo $foutput | \ ! sed -n -e 's/.*\(LD_RUN_PATH *= *[^ ]*\).*/\1/p' | \ ! sed -e 's/LD_RUN_PATH *= *//'` dnl dnl We are only supposed to find this on Solaris systems, and this dnl substitution is probably only going to work with gcc on those --- 126,132 ---- fi dnl ld_run_path=`echo $foutput | \ ! sed -n -e 's/^.*\(LD_RUN_PATH *= *\([^ ]*\).*/\1/p'` dnl dnl We are only supposed to find this on Solaris systems, and this dnl substitution is probably only going to work with gcc on those *************** *** 564,568 **** --- 563,592 ---- AC_MSG_RESULT($octave_cv_must_reinstall_sighandlers) if test "$octave_cv_must_reinstall_sighandlers" = yes; then AC_DEFINE(MUST_REINSTALL_SIGHANDLERS) + fi + ]) + dnl + dnl This check originally from bash 2.0. + dnl + dnl Check for typedef'd symbols in header files, but allow the caller to + dnl specify the include files to be checked in addition to the default. + dnl + dnl OCTAVE_CHECK_TYPE(TYPE, HEADERS, DEFAULT[, VALUE-IF-FOUND]) + AC_DEFUN(OCTAVE_CHECK_TYPE, + [AC_REQUIRE([AC_HEADER_STDC])dnl + AC_MSG_CHECKING(for $1) + AC_CACHE_VAL(octave_cv_type_$1, + [AC_EGREP_CPP($1, [#include + #if STDC_HEADERS + #include + #endif + $2 + ], octave_cv_type_$1=yes, octave_cv_type_$1=no)]) + AC_MSG_RESULT($octave_cv_type_$1) + ifelse($#, 4, [if test $octave_cv_type_$1 = yes; then + AC_DEFINE($4) + fi]) + if test $octave_cv_type_$1 = no; then + AC_DEFINE($1, $3) fi ]) diff -cNr octave-2.0.1/config.h.in octave-2.0.2/config.h.in *** octave-2.0.1/config.h.in Mon Dec 9 11:16:29 1996 --- octave-2.0.2/config.h.in Mon Jan 27 13:05:28 1997 *************** *** 207,212 **** --- 207,215 ---- /* Define to `short' if doesn't define. */ #undef nlink_t + /* Define to `int' if doesn't define. */ + #undef sigset_t + /* The number of bytes in a int. */ #undef SIZEOF_INT *************** *** 422,427 **** --- 425,433 ---- /* Define if you have the unlink function. */ #undef HAVE_UNLINK + + /* Define if you have the usleep function. */ + #undef HAVE_USLEEP /* Define if you have the vfprintf function. */ #undef HAVE_VFPRINTF diff -cNr octave-2.0.1/configure octave-2.0.2/configure *** octave-2.0.1/configure Tue Jan 7 00:15:13 1997 --- octave-2.0.2/configure Mon Jan 27 15:54:54 1997 *************** *** 1,6 **** #! /bin/sh ! # From configure.in Revision: 1.243 --- 1,7 ---- #! /bin/sh ! # From configure.in Revision: 1.251 ! *************** *** 581,587 **** fi echo $ac_n "checking host system type""... $ac_c" 1>&6 ! echo "configure:585: checking host system type" >&5 host_alias=$host case "$host_alias" in --- 582,588 ---- fi echo $ac_n "checking host system type""... $ac_c" 1>&6 ! echo "configure:586: checking host system type" >&5 host_alias=$host case "$host_alias" in *************** *** 802,808 **** # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:806: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 803,809 ---- # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:807: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** *** 833,839 **** echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works""... $ac_c" 1>&6 ! echo "configure:837: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5 ac_ext=C # CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. --- 834,840 ---- echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works""... $ac_c" 1>&6 ! echo "configure:838: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5 ac_ext=C # CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. *************** *** 843,853 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then ac_cv_prog_cxx_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then --- 844,854 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then ac_cv_prog_cxx_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then *************** *** 873,884 **** { echo "configure: error: installation or configuration problem: C++ compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 ! echo "configure:877: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cxx_cross" 1>&6 cross_compiling=$ac_cv_prog_cxx_cross echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6 ! echo "configure:882: checking whether we are using GNU C++" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 874,885 ---- { echo "configure: error: installation or configuration problem: C++ compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 ! echo "configure:878: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cxx_cross" 1>&6 cross_compiling=$ac_cv_prog_cxx_cross echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6 ! echo "configure:883: checking whether we are using GNU C++" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** *** 887,893 **** yes; #endif EOF ! if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:891: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gxx=yes else ac_cv_prog_gxx=no --- 888,894 ---- yes; #endif EOF ! if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:892: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gxx=yes else ac_cv_prog_gxx=no *************** *** 902,908 **** ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS= echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6 ! echo "configure:906: checking whether ${CXX-g++} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 903,909 ---- ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS= echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6 ! echo "configure:907: checking whether ${CXX-g++} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** *** 930,936 **** fi echo $ac_n "checking how to run the C++ preprocessor""... $ac_c" 1>&6 ! echo "configure:934: checking how to run the C++ preprocessor" >&5 if test -z "$CXXCPP"; then if eval "test \"`echo '$''{'ac_cv_prog_CXXCPP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 931,937 ---- fi echo $ac_n "checking how to run the C++ preprocessor""... $ac_c" 1>&6 ! echo "configure:935: checking how to run the C++ preprocessor" >&5 if test -z "$CXXCPP"; then if eval "test \"`echo '$''{'ac_cv_prog_CXXCPP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** *** 943,954 **** cross_compiling=$ac_cv_prog_cxx_cross CXXCPP="${CXX-g++} -E" cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:952: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then : --- 944,955 ---- cross_compiling=$ac_cv_prog_cxx_cross CXXCPP="${CXX-g++} -E" cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:953: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then : *************** *** 1023,1029 **** # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1027: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1024,1030 ---- # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1028: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** *** 1052,1058 **** # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1056: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1053,1059 ---- # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1057: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** *** 1100,1106 **** fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 ! echo "configure:1104: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. --- 1101,1107 ---- fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 ! echo "configure:1105: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. *************** *** 1110,1120 **** cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then --- 1111,1121 ---- cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then *************** *** 1134,1145 **** { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 ! echo "configure:1138: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 ! echo "configure:1143: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1135,1146 ---- { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 ! echo "configure:1139: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 ! echo "configure:1144: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** *** 1148,1154 **** yes; #endif EOF ! if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1152: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no --- 1149,1155 ---- yes; #endif EOF ! if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1153: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no *************** *** 1163,1169 **** ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 ! echo "configure:1167: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1164,1170 ---- ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 ! echo "configure:1168: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** *** 1191,1197 **** fi echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 ! echo "configure:1195: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= --- 1192,1198 ---- fi echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 ! echo "configure:1196: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= *************** *** 1206,1218 **** # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:1216: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then : --- 1207,1219 ---- # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:1217: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then : *************** *** 1223,1235 **** rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:1233: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then : --- 1224,1236 ---- rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:1234: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then : *************** *** 1253,1265 **** if test $ac_cv_prog_gcc = yes; then echo $ac_n "checking whether ${CC-cc} needs -traditional""... $ac_c" 1>&6 ! echo "configure:1257: checking whether ${CC-cc} needs -traditional" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc_traditional'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_pattern="Autoconf.*'x'" cat > conftest.$ac_ext < Autoconf TIOCGETP --- 1254,1266 ---- if test $ac_cv_prog_gcc = yes; then echo $ac_n "checking whether ${CC-cc} needs -traditional""... $ac_c" 1>&6 ! echo "configure:1258: checking whether ${CC-cc} needs -traditional" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc_traditional'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_pattern="Autoconf.*'x'" cat > conftest.$ac_ext < Autoconf TIOCGETP *************** *** 1277,1283 **** if test $ac_cv_prog_gcc_traditional = no; then cat > conftest.$ac_ext < Autoconf TCGETA --- 1278,1284 ---- if test $ac_cv_prog_gcc_traditional = no; then cat > conftest.$ac_ext < Autoconf TCGETA *************** *** 1411,1426 **** CXXPICFLAG=-fPIC FPICFLAG=-fPIC SHLEXT=so - RLD_FLAG= case "$canonical_host_type" in alpha-dec-osf*) CPICFLAG= CXXPICFLAG= FPICFLAG= - RLD_FLAG='-Xlinker -rpath -Xlinker $(libdir)' - ;; - i[3456789]86-*-linux*) - RLD_FLAG='-Xlinker -rpath -Xlinker $(libdir)' ;; rs6000-ibm-aix* | powerpc-ibm-aix*) CPICFLAG= --- 1412,1422 ---- *************** *** 1435,1452 **** FPICFLAG=+Z fi SHLEXT=sl - RLD_FLAG='-Xlinker +b -Xlinker $(libdir)' ;; *-sgi-*) ! FPICFLAG=-KPIC ;; sparc-sun-sunos4*) ! FPICFLAG=-PIC ! RLD_FLAG='-L $(libdir)' ;; sparc-sun-solaris2*) ! FPICFLAG=-PIC ! RLD_FLAG='-Xlinker -R -Xlinker $(libdir)' ;; esac echo "$ac_t""defining FPICFLAG to be $FPICFLAG" 1>&6 --- 1431,1457 ---- FPICFLAG=+Z fi SHLEXT=sl ;; *-sgi-*) ! if $use_g77; then ! FPICFLAG=-fPIC ! else ! FPICFLAG=-KPIC ! fi ;; sparc-sun-sunos4*) ! if $use_g77; then ! FPICFLAG=-fPIC ! else ! FPICFLAG=-PIC ! fi ;; sparc-sun-solaris2*) ! if $use_g77; then ! FPICFLAG=-fPIC ! else ! FPICFLAG=-PIC ! fi ;; esac echo "$ac_t""defining FPICFLAG to be $FPICFLAG" 1>&6 *************** *** 1460,1466 **** - ### Allow compilation of smaller kernel. This only works if some form ### of dynamic linking is also supported and used. --- 1465,1470 ---- *************** *** 1486,1492 **** ### functions like gethostname and gettimeofday is in libsocket. echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6 ! echo "configure:1490: checking for POSIXized ISC" >&5 if test -d /etc/conf/kconfig.d && grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1 then --- 1490,1496 ---- ### functions like gethostname and gettimeofday is in libsocket. echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6 ! echo "configure:1494: checking for POSIXized ISC" >&5 if test -d /etc/conf/kconfig.d && grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1 then *************** *** 1508,1524 **** ac_safe=`echo "minix/config.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for minix/config.h""... $ac_c" 1>&6 ! echo "configure:1512: checking for minix/config.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:1522: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* --- 1512,1528 ---- ac_safe=`echo "minix/config.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for minix/config.h""... $ac_c" 1>&6 ! echo "configure:1516: checking for minix/config.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:1526: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* *************** *** 1556,1564 **** fi echo $ac_n "checking for AIX""... $ac_c" 1>&6 ! echo "configure:1560: checking for AIX" >&5 cat > conftest.$ac_ext <&6 ! echo "configure:1564: checking for AIX" >&5 cat > conftest.$ac_ext <&6 ! echo "configure:1584: checking for getpwnam in -lsun" >&5 ac_lib_var=`echo sun'_'getpwnam | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 1584,1590 ---- echo $ac_n "checking for getpwnam in -lsun""... $ac_c" 1>&6 ! echo "configure:1588: checking for getpwnam in -lsun" >&5 ac_lib_var=`echo sun'_'getpwnam | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** *** 1588,1594 **** ac_save_LIBS="$LIBS" LIBS="-lsun $LIBS" cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else --- 1603,1609 ---- getpwnam() ; return 0; } EOF ! if { (eval echo configure:1607: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else *************** *** 1627,1633 **** fi echo $ac_n "checking for gethostname in -lsocket""... $ac_c" 1>&6 ! echo "configure:1631: checking for gethostname in -lsocket" >&5 ac_lib_var=`echo socket'_'gethostname | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 1631,1637 ---- fi echo $ac_n "checking for gethostname in -lsocket""... $ac_c" 1>&6 ! echo "configure:1635: checking for gethostname in -lsocket" >&5 ac_lib_var=`echo socket'_'gethostname | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** *** 1635,1641 **** ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else --- 1650,1656 ---- gethostname() ; return 0; } EOF ! if { (eval echo configure:1654: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else *************** *** 1678,1684 **** ### be eliminated in favor of run-time checks. echo $ac_n "checking size of short""... $ac_c" 1>&6 ! echo "configure:1682: checking size of short" >&5 if eval "test \"`echo '$''{'ac_cv_sizeof_short'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1682,1688 ---- ### be eliminated in favor of run-time checks. echo $ac_n "checking size of short""... $ac_c" 1>&6 ! echo "configure:1686: checking size of short" >&5 if eval "test \"`echo '$''{'ac_cv_sizeof_short'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** *** 1686,1692 **** { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext < main() --- 1690,1696 ---- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext < main() *************** *** 1697,1703 **** exit(0); } EOF ! if { (eval echo configure:1701: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then ac_cv_sizeof_short=`cat conftestval` else --- 1701,1707 ---- exit(0); } EOF ! if { (eval echo configure:1705: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then ac_cv_sizeof_short=`cat conftestval` else *************** *** 1717,1723 **** echo $ac_n "checking size of int""... $ac_c" 1>&6 ! echo "configure:1721: checking size of int" >&5 if eval "test \"`echo '$''{'ac_cv_sizeof_int'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1721,1727 ---- echo $ac_n "checking size of int""... $ac_c" 1>&6 ! echo "configure:1725: checking size of int" >&5 if eval "test \"`echo '$''{'ac_cv_sizeof_int'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** *** 1725,1731 **** { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext < main() --- 1729,1735 ---- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext < main() *************** *** 1736,1742 **** exit(0); } EOF ! if { (eval echo configure:1740: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then ac_cv_sizeof_int=`cat conftestval` else --- 1740,1746 ---- exit(0); } EOF ! if { (eval echo configure:1744: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then ac_cv_sizeof_int=`cat conftestval` else *************** *** 1756,1762 **** echo $ac_n "checking size of long""... $ac_c" 1>&6 ! echo "configure:1760: checking size of long" >&5 if eval "test \"`echo '$''{'ac_cv_sizeof_long'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1760,1766 ---- echo $ac_n "checking size of long""... $ac_c" 1>&6 ! echo "configure:1764: checking size of long" >&5 if eval "test \"`echo '$''{'ac_cv_sizeof_long'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** *** 1764,1770 **** { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext < main() --- 1768,1774 ---- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext < main() *************** *** 1775,1781 **** exit(0); } EOF ! if { (eval echo configure:1779: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then ac_cv_sizeof_long=`cat conftestval` else --- 1779,1785 ---- exit(0); } EOF ! if { (eval echo configure:1783: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then ac_cv_sizeof_long=`cat conftestval` else *************** *** 1800,1818 **** # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works # for constant arguments. Useless! echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6 ! echo "configure:1804: checking for working alloca.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = alloca(2 * sizeof(int)); ; return 0; } EOF ! if { (eval echo configure:1816: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* ac_cv_header_alloca_h=yes else --- 1804,1822 ---- # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works # for constant arguments. Useless! echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6 ! echo "configure:1808: checking for working alloca.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = alloca(2 * sizeof(int)); ; return 0; } EOF ! if { (eval echo configure:1820: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* ac_cv_header_alloca_h=yes else *************** *** 1833,1844 **** fi echo $ac_n "checking for alloca""... $ac_c" 1>&6 ! echo "configure:1837: checking for alloca" >&5 if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:1841: checking for alloca" >&5 if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* ac_cv_func_alloca_works=yes else --- 1865,1871 ---- char *p = (char *) alloca(1); ; return 0; } EOF ! if { (eval echo configure:1869: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* ac_cv_func_alloca_works=yes else *************** *** 1893,1904 **** echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6 ! echo "configure:1897: checking whether alloca needs Cray hooks" >&5 if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:1901: checking whether alloca needs Cray hooks" >&5 if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:1927: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:1931: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 1955,1961 ---- ; return 0; } EOF ! if { (eval echo configure:1959: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** *** 1978,1984 **** fi echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 ! echo "configure:1982: checking stack direction for C alloca" >&5 if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1982,1988 ---- fi echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 ! echo "configure:1986: checking stack direction for C alloca" >&5 if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** *** 1986,1992 **** ac_cv_c_stack_direction=0 else cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then ac_cv_c_stack_direction=1 else --- 2009,2015 ---- exit (find_stack_direction() < 0); } EOF ! if { (eval echo configure:2013: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then ac_cv_c_stack_direction=1 else *************** *** 2027,2038 **** fi echo $ac_n "checking for working const""... $ac_c" 1>&6 ! echo "configure:2031: checking for working const" >&5 if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:2035: checking for working const" >&5 if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_const=yes else --- 2085,2091 ---- ; return 0; } EOF ! if { (eval echo configure:2089: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_const=yes else *************** *** 2107,2113 **** echo $ac_n "checking for C++ libraries""... $ac_c" 1>&6 ! echo "configure:2111: checking for C++ libraries" >&5 if eval "test \"`echo '$''{'octave_cv_cxxlibs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2111,2117 ---- echo $ac_n "checking for C++ libraries""... $ac_c" 1>&6 ! echo "configure:2115: checking for C++ libraries" >&5 if eval "test \"`echo '$''{'octave_cv_cxxlibs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** *** 2123,2136 **** CXXFLAGS="$XCXXFLAGS -v" export CXXFLAGS coutput=`( cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then : else echo "configure: failed program was:" >&5 --- 2127,2140 ---- CXXFLAGS="$XCXXFLAGS -v" export CXXFLAGS coutput=`( cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then : else echo "configure: failed program was:" >&5 *************** *** 2204,2210 **** ### See if we should define NPOS. echo $ac_n "checking whether including defines NPOS""... $ac_c" 1>&6 ! echo "configure:2208: checking whether including defines NPOS" >&5 if eval "test \"`echo '$''{'octave_cv_string_npos'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2208,2214 ---- ### See if we should define NPOS. echo $ac_n "checking whether including defines NPOS""... $ac_c" 1>&6 ! echo "configure:2212: checking whether including defines NPOS" >&5 if eval "test \"`echo '$''{'octave_cv_string_npos'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** *** 2217,2230 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { size_t foo = NPOS ; return 0; } EOF ! if { (eval echo configure:2228: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* octave_cv_string_npos=yes else --- 2221,2234 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { size_t foo = NPOS ; return 0; } EOF ! if { (eval echo configure:2232: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* octave_cv_string_npos=yes else *************** *** 2267,2273 **** # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2271: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2271,2277 ---- # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2275: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** *** 2341,2347 **** # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2345: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_F77'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2345,2351 ---- # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2349: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_F77'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** *** 2371,2385 **** fi - FUGLY= have_fortran_compiler=false have_f2c=false if $use_g77; then - FUGLY=-fugly - echo "$ac_t""defining FUGLY to be $FUGLY" 1>&6 echo $ac_n "checking for Fortran libraries""... $ac_c" 1>&6 ! echo "configure:2383: checking for Fortran libraries" >&5 if eval "test \"`echo '$''{'octave_cv_flibs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2375,2386 ---- fi have_fortran_compiler=false have_f2c=false if $use_g77; then echo $ac_n "checking for Fortran libraries""... $ac_c" 1>&6 ! echo "configure:2384: checking for Fortran libraries" >&5 if eval "test \"`echo '$''{'octave_cv_flibs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** *** 2390,2397 **** foutput=`echo $foutput | sed 's/,/ /g'` fi ld_run_path=`echo $foutput | \ ! sed -n -e 's/.*\(LD_RUN_PATH *= *[^ ]*\).*/\1/p' | \ ! sed -e 's/LD_RUN_PATH *= *//'` if test -n "$ld_run_path"; then if test "$ac_cv_prog_gcc" = yes; then ld_run_path="-Xlinker -R -Xlinker $ld_run_path" --- 2391,2397 ---- foutput=`echo $foutput | sed 's/,/ /g'` fi ld_run_path=`echo $foutput | \ ! sed -n -e 's/^.*\(LD_RUN_PATH *= *\([^ ]*\).*/\1/p'` if test -n "$ld_run_path"; then if test "$ac_cv_prog_gcc" = yes; then ld_run_path="-Xlinker -R -Xlinker $ld_run_path" *************** *** 2521,2528 **** foutput=`echo $foutput | sed 's/,/ /g'` fi ld_run_path=`echo $foutput | \ ! sed -n -e 's/.*\(LD_RUN_PATH *= *[^ ]*\).*/\1/p' | \ ! sed -e 's/LD_RUN_PATH *= *//'` if test -n "$ld_run_path"; then if test "$ac_cv_prog_gcc" = yes; then ld_run_path="-Xlinker -R -Xlinker $ld_run_path" --- 2521,2527 ---- foutput=`echo $foutput | sed 's/,/ /g'` fi ld_run_path=`echo $foutput | \ ! sed -n -e 's/^.*\(LD_RUN_PATH *= *\([^ ]*\).*/\1/p'` if test -n "$ld_run_path"; then if test "$ac_cv_prog_gcc" = yes; then ld_run_path="-Xlinker -R -Xlinker $ld_run_path" *************** *** 2631,2637 **** FLIBS="$octave_cv_flibs" echo "$ac_t""$FLIBS" 1>&6 echo $ac_n "checking whether $F77 uses uppercase external names""... $ac_c" 1>&6 ! echo "configure:2635: checking whether $F77 uses uppercase external names" >&5 if eval "test \"`echo '$''{'octave_cv_f77_uppercase_names'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2630,2636 ---- FLIBS="$octave_cv_flibs" echo "$ac_t""$FLIBS" 1>&6 echo $ac_n "checking whether $F77 uses uppercase external names""... $ac_c" 1>&6 ! echo "configure:2634: checking whether $F77 uses uppercase external names" >&5 if eval "test \"`echo '$''{'octave_cv_f77_uppercase_names'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** *** 2656,2662 **** fi echo $ac_n "checking whether $F77 appends underscores to external names""... $ac_c" 1>&6 ! echo "configure:2660: checking whether $F77 appends underscores to external names" >&5 if eval "test \"`echo '$''{'octave_cv_f77_append_underscore'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 2655,2661 ---- fi echo $ac_n "checking whether $F77 appends underscores to external names""... $ac_c" 1>&6 ! echo "configure:2659: checking whether $F77 appends underscores to external names" >&5 if eval "test \"`echo '$''{'octave_cv_f77_append_underscore'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** *** 2690,2696 **** echo $ac_n "checking $F77/f2c compatibility""... $ac_c" 1>&6 ! echo "configure:2694: checking $F77/f2c compatibility" >&5 if eval "test \"`echo '$''{'octave_cv_f2c_f77_compat'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2689,2695 ---- echo $ac_n "checking $F77/f2c compatibility""... $ac_c" 1>&6 ! echo "configure:2693: checking $F77/f2c compatibility" >&5 if eval "test \"`echo '$''{'octave_cv_f2c_f77_compat'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** *** 2772,2778 **** # Extract the first word of "f2c", so it can be a program name with args. set dummy f2c; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2776: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_F2C'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2771,2777 ---- # Extract the first word of "f2c", so it can be a program name with args. set dummy f2c; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2775: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_F2C'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** *** 2804,2810 **** fi ! f77_rules_frag=Makerules.f77 if $have_fortran_compiler; then cat << \EOF > $f77_rules_frag --- 2803,2809 ---- fi ! f77_rules_frag=Makefrag.f77 if $have_fortran_compiler; then cat << \EOF > $f77_rules_frag *************** *** 2836,2842 **** oct_conflib=libconflib.a oct_obj_ext=o ! if { (eval echo configure:2840: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then $AR $ARFLAGS $oct_conflib conftest.$oct_obj_ext 1>&5 if test -n "$RANLIB"; then $RANLIB $oct_conflib 1>&5 --- 2835,2841 ---- oct_conflib=libconflib.a oct_obj_ext=o ! if { (eval echo configure:2839: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then $AR $ARFLAGS $oct_conflib conftest.$oct_obj_ext 1>&5 if test -n "$RANLIB"; then $RANLIB $oct_conflib 1>&5 *************** *** 2844,2850 **** fi rm -f conftest* echo $ac_n "checking for f_open in -lf2c""... $ac_c" 1>&6 ! echo "configure:2848: checking for f_open in -lf2c" >&5 ac_lib_var=`echo f2c'_'f_open | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 2843,2849 ---- fi rm -f conftest* echo $ac_n "checking for f_open in -lf2c""... $ac_c" 1>&6 ! echo "configure:2847: checking for f_open in -lf2c" >&5 ac_lib_var=`echo f2c'_'f_open | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** *** 2852,2858 **** ac_save_LIBS="$LIBS" LIBS="-lf2c -L. -lconflib -lm $LIBS" cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else --- 2862,2868 ---- f_open() ; return 0; } EOF ! if { (eval echo configure:2866: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else *************** *** 2888,2894 **** if test -z "$FLIBS"; then echo $ac_n "checking for d_sin in -lF77""... $ac_c" 1>&6 ! echo "configure:2892: checking for d_sin in -lF77" >&5 ac_lib_var=`echo F77'_'d_sin | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 2887,2893 ---- if test -z "$FLIBS"; then echo $ac_n "checking for d_sin in -lF77""... $ac_c" 1>&6 ! echo "configure:2891: checking for d_sin in -lF77" >&5 ac_lib_var=`echo F77'_'d_sin | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** *** 2896,2902 **** ac_save_LIBS="$LIBS" LIBS="-lF77 -lm $LIBS" cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else --- 2906,2912 ---- d_sin() ; return 0; } EOF ! if { (eval echo configure:2910: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else *************** *** 2930,2936 **** if test -n "$FLIBS"; then echo $ac_n "checking for f_rew in -lI77""... $ac_c" 1>&6 ! echo "configure:2934: checking for f_rew in -lI77" >&5 ac_lib_var=`echo I77'_'f_rew | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 2929,2935 ---- if test -n "$FLIBS"; then echo $ac_n "checking for f_rew in -lI77""... $ac_c" 1>&6 ! echo "configure:2933: checking for f_rew in -lI77" >&5 ac_lib_var=`echo I77'_'f_rew | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** *** 2938,2944 **** ac_save_LIBS="$LIBS" LIBS="-lI77 -lF77 $LIBS" cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else --- 2948,2954 ---- f_rew() ; return 0; } EOF ! if { (eval echo configure:2952: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else *************** *** 2976,2982 **** if test -z "$FLIBS"; then echo "configure: warning: I found f2c but not libf2c.a, or libF77.a and libI77.a" 1>&2 fi ! f77_rules_frag=Makerules.f77 cat << \EOF > $f77_rules_frag %.c : %.f --- 2975,2981 ---- if test -z "$FLIBS"; then echo "configure: warning: I found f2c but not libf2c.a, or libF77.a and libI77.a" 1>&2 fi ! f77_rules_frag=Makefrag.f77 cat << \EOF > $f77_rules_frag %.c : %.f *************** *** 3011,3026 **** - ### Checks for header files. echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 ! echo "configure:3019: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include --- 3010,3024 ---- ### Checks for header files. echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 ! echo "configure:3017: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include *************** *** 3028,3034 **** #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:3032: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* --- 3026,3032 ---- #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:3030: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* *************** *** 3045,3051 **** if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF --- 3043,3049 ---- if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF *************** *** 3063,3069 **** if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF --- 3061,3067 ---- if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF *************** *** 3084,3090 **** : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') --- 3082,3088 ---- : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') *************** *** 3095,3101 **** exit (0); } EOF ! if { (eval echo configure:3099: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then : else --- 3093,3099 ---- exit (0); } EOF ! if { (eval echo configure:3097: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then : else *************** *** 3123,3134 **** do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr that defines DIR""... $ac_c" 1>&6 ! echo "configure:3127: checking for $ac_hdr that defines DIR" >&5 if eval "test \"`echo '$''{'ac_cv_header_dirent_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_hdr> --- 3121,3132 ---- do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr that defines DIR""... $ac_c" 1>&6 ! echo "configure:3125: checking for $ac_hdr that defines DIR" >&5 if eval "test \"`echo '$''{'ac_cv_header_dirent_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_hdr> *************** *** 3136,3142 **** DIR *dirp = 0; ; return 0; } EOF ! if { (eval echo configure:3140: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* eval "ac_cv_header_dirent_$ac_safe=yes" else --- 3134,3140 ---- DIR *dirp = 0; ; return 0; } EOF ! if { (eval echo configure:3138: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* eval "ac_cv_header_dirent_$ac_safe=yes" else *************** *** 3161,3167 **** # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. if test $ac_header_dirent = dirent.h; then echo $ac_n "checking for opendir in -ldir""... $ac_c" 1>&6 ! echo "configure:3165: checking for opendir in -ldir" >&5 ac_lib_var=`echo dir'_'opendir | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 3159,3165 ---- # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. if test $ac_header_dirent = dirent.h; then echo $ac_n "checking for opendir in -ldir""... $ac_c" 1>&6 ! echo "configure:3163: checking for opendir in -ldir" >&5 ac_lib_var=`echo dir'_'opendir | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** *** 3169,3175 **** ac_save_LIBS="$LIBS" LIBS="-ldir $LIBS" cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else --- 3178,3184 ---- opendir() ; return 0; } EOF ! if { (eval echo configure:3182: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else *************** *** 3202,3208 **** else echo $ac_n "checking for opendir in -lx""... $ac_c" 1>&6 ! echo "configure:3206: checking for opendir in -lx" >&5 ac_lib_var=`echo x'_'opendir | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 3200,3206 ---- else echo $ac_n "checking for opendir in -lx""... $ac_c" 1>&6 ! echo "configure:3204: checking for opendir in -lx" >&5 ac_lib_var=`echo x'_'opendir | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** *** 3210,3216 **** ac_save_LIBS="$LIBS" LIBS="-lx $LIBS" cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else --- 3219,3225 ---- opendir() ; return 0; } EOF ! if { (eval echo configure:3223: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else *************** *** 3244,3255 **** fi echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 ! echo "configure:3248: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include --- 3242,3253 ---- fi echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 ! echo "configure:3246: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include *************** *** 3258,3264 **** struct tm *tp; ; return 0; } EOF ! if { (eval echo configure:3262: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else --- 3256,3262 ---- struct tm *tp; ; return 0; } EOF ! if { (eval echo configure:3260: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else *************** *** 3279,3290 **** fi echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6 ! echo "configure:3283: checking for sys/wait.h that is POSIX.1 compatible" >&5 if eval "test \"`echo '$''{'ac_cv_header_sys_wait_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include --- 3277,3288 ---- fi echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6 ! echo "configure:3281: checking for sys/wait.h that is POSIX.1 compatible" >&5 if eval "test \"`echo '$''{'ac_cv_header_sys_wait_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include *************** *** 3300,3306 **** s = WIFEXITED (s) ? WEXITSTATUS (s) : 1; ; return 0; } EOF ! if { (eval echo configure:3304: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_sys_wait_h=yes else --- 3298,3304 ---- s = WIFEXITED (s) ? WEXITSTATUS (s) : 1; ; return 0; } EOF ! if { (eval echo configure:3302: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_sys_wait_h=yes else *************** *** 3329,3345 **** do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 ! echo "configure:3333: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:3343: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* --- 3327,3343 ---- do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 ! echo "configure:3331: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:3341: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* *************** *** 3377,3383 **** ### See if the optional nonlinear programming code is present. echo $ac_n "checking for npsol""... $ac_c" 1>&6 ! echo "configure:3381: checking for npsol" >&5 if test -f $srcdir/libcruft/npsol/npsol.f; then echo "$ac_t""yes" 1>&6 else --- 3375,3381 ---- ### See if the optional nonlinear programming code is present. echo $ac_n "checking for npsol""... $ac_c" 1>&6 ! echo "configure:3379: checking for npsol" >&5 if test -f $srcdir/libcruft/npsol/npsol.f; then echo "$ac_t""yes" 1>&6 else *************** *** 3389,3395 **** fi echo $ac_n "checking for qpsol""... $ac_c" 1>&6 ! echo "configure:3393: checking for qpsol" >&5 if test -f $srcdir/libcruft/qpsol/qpsol.f; then echo "$ac_t""yes" 1>&6 else --- 3387,3393 ---- fi echo $ac_n "checking for qpsol""... $ac_c" 1>&6 ! echo "configure:3391: checking for qpsol" >&5 if test -f $srcdir/libcruft/qpsol/qpsol.f; then echo "$ac_t""yes" 1>&6 else *************** *** 3401,3407 **** fi echo $ac_n "checking for fsqp""... $ac_c" 1>&6 ! echo "configure:3405: checking for fsqp" >&5 if test -f $srcdir/libcruft/fsqp/fsqpd.f; then echo "$ac_t""yes" 1>&6 else --- 3399,3405 ---- fi echo $ac_n "checking for fsqp""... $ac_c" 1>&6 ! echo "configure:3403: checking for fsqp" >&5 if test -f $srcdir/libcruft/fsqp/fsqpd.f; then echo "$ac_t""yes" 1>&6 else *************** *** 3420,3434 **** lstat memmove mkdir mkfifo on_exit pipe putenv rename rindex rmdir \ setgrent setpwent setvbuf sigaction sigpending sigprocmask \ sigsuspend stat strcasecmp strdup strerror stricmp strncasecmp \ ! strnicmp tempnam umask unlink vfprintf vsprintf waitpid do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:3427: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:3425: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 3449,3455 ---- ; return 0; } EOF ! if { (eval echo configure:3453: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** *** 3477,3483 **** echo $ac_n "checking whether putenv uses malloc""... $ac_c" 1>&6 ! echo "configure:3481: checking whether putenv uses malloc" >&5 if eval "test \"`echo '$''{'octave_cv_func_putenv_malloc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 3475,3481 ---- echo $ac_n "checking whether putenv uses malloc""... $ac_c" 1>&6 ! echo "configure:3479: checking whether putenv uses malloc" >&5 if eval "test \"`echo '$''{'octave_cv_func_putenv_malloc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** *** 3485,3491 **** octave_cv_func_putenv_malloc=no else cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then octave_cv_func_putenv_malloc=yes else --- 3536,3542 ---- exit (rstr1 == rstr2 ? 0 : 1); } EOF ! if { (eval echo configure:3540: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then octave_cv_func_putenv_malloc=yes else *************** *** 3559,3577 **** fi echo $ac_n "checking whether program_invocation_name is predefined""... $ac_c" 1>&6 ! echo "configure:3563: checking whether program_invocation_name is predefined" >&5 if eval "test \"`echo '$''{'octave_cv_var_program_inv_name'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* octave_cv_var_program_inv_name=yes else --- 3557,3575 ---- fi echo $ac_n "checking whether program_invocation_name is predefined""... $ac_c" 1>&6 ! echo "configure:3561: checking whether program_invocation_name is predefined" >&5 if eval "test \"`echo '$''{'octave_cv_var_program_inv_name'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* octave_cv_var_program_inv_name=yes else *************** *** 3601,3607 **** ;; *) echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 ! echo "configure:3605: checking for dlopen in -ldl" >&5 ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 3599,3605 ---- ;; *) echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 ! echo "configure:3603: checking for dlopen in -ldl" >&5 ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** *** 3609,3615 **** ac_save_LIBS="$LIBS" LIBS="-ldl $LIBS" cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else --- 3618,3624 ---- dlopen() ; return 0; } EOF ! if { (eval echo configure:3622: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else *************** *** 3650,3661 **** for ac_func in dlopen dlsym dlerror dlclose do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:3654: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:3652: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 3676,3682 ---- ; return 0; } EOF ! if { (eval echo configure:3680: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** *** 3730,3736 **** if test "$WITH_SHL" = yes || test "$WITH_SHL" = maybe; then echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 ! echo "configure:3734: checking for shl_load in -ldld" >&5 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 3728,3734 ---- if test "$WITH_SHL" = yes || test "$WITH_SHL" = maybe; then echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 ! echo "configure:3732: checking for shl_load in -ldld" >&5 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** *** 3738,3744 **** ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else --- 3747,3753 ---- shl_load() ; return 0; } EOF ! if { (eval echo configure:3751: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else *************** *** 3779,3790 **** for ac_func in shl_load shl_findsym do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:3783: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:3781: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 3805,3811 ---- ; return 0; } EOF ! if { (eval echo configure:3809: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** *** 3869,3880 **** ### which one (if any) appears in sys/time.h. echo $ac_n "checking for gettimeofday""... $ac_c" 1>&6 ! echo "configure:3873: checking for gettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:3871: checking for gettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_func_gettimeofday'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_gettimeofday=yes" else --- 3895,3901 ---- ; return 0; } EOF ! if { (eval echo configure:3899: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_gettimeofday=yes" else *************** *** 3912,3925 **** if eval "test \"`echo '$ac_cv_func_'gettimeofday`\" = yes"; then echo "$ac_t""yes" 1>&6 cat > conftest.$ac_ext < int main() { gettimeofday ((struct timeval *) 0,(struct timezone *) 0); ; return 0; } EOF ! if { (eval echo configure:3923: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then : else echo "configure: failed program was:" >&5 --- 3910,3923 ---- if eval "test \"`echo '$ac_cv_func_'gettimeofday`\" = yes"; then echo "$ac_t""yes" 1>&6 cat > conftest.$ac_ext < int main() { gettimeofday ((struct timeval *) 0,(struct timezone *) 0); ; return 0; } EOF ! if { (eval echo configure:3921: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then : else echo "configure: failed program was:" >&5 *************** *** 3947,3953 **** ### with functions from the BSD/NET2 math library. echo $ac_n "checking for quiet_nan in -lsunmath""... $ac_c" 1>&6 ! echo "configure:3951: checking for quiet_nan in -lsunmath" >&5 ac_lib_var=`echo sunmath'_'quiet_nan | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 3945,3951 ---- ### with functions from the BSD/NET2 math library. echo $ac_n "checking for quiet_nan in -lsunmath""... $ac_c" 1>&6 ! echo "configure:3949: checking for quiet_nan in -lsunmath" >&5 ac_lib_var=`echo sunmath'_'quiet_nan | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** *** 3955,3961 **** ac_save_LIBS="$LIBS" LIBS="-lsunmath -lm $LIBS" cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else --- 3964,3970 ---- quiet_nan() ; return 0; } EOF ! if { (eval echo configure:3968: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else *************** *** 3998,4004 **** case "$canonical_host_type" in *-*-linux*) echo $ac_n "checking for sin in -lm""... $ac_c" 1>&6 ! echo "configure:4002: checking for sin in -lm" >&5 ac_lib_var=`echo m'_'sin | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 3996,4002 ---- case "$canonical_host_type" in *-*-linux*) echo $ac_n "checking for sin in -lm""... $ac_c" 1>&6 ! echo "configure:4000: checking for sin in -lm" >&5 ac_lib_var=`echo m'_'sin | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** *** 4006,4012 **** ac_save_LIBS="$LIBS" LIBS="-lm -lc $LIBS" cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else --- 4015,4021 ---- sin() ; return 0; } EOF ! if { (eval echo configure:4019: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else *************** *** 4047,4053 **** ;; *) echo $ac_n "checking for sin in -lm""... $ac_c" 1>&6 ! echo "configure:4051: checking for sin in -lm" >&5 ac_lib_var=`echo m'_'sin | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 4045,4051 ---- ;; *) echo $ac_n "checking for sin in -lm""... $ac_c" 1>&6 ! echo "configure:4049: checking for sin in -lm" >&5 ac_lib_var=`echo m'_'sin | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** *** 4055,4061 **** ac_save_LIBS="$LIBS" LIBS="-lm $LIBS" cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else --- 4064,4070 ---- sin() ; return 0; } EOF ! if { (eval echo configure:4068: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else *************** *** 4127,4138 **** for ac_func in finite isnan isinf infinity quiet_nan do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:4131: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:4129: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 4153,4159 ---- ; return 0; } EOF ! if { (eval echo configure:4157: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** *** 4187,4198 **** for ac_func in acosh asinh atanh erf erfc do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:4191: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:4189: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 4213,4219 ---- ; return 0; } EOF ! if { (eval echo configure:4217: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** *** 4245,4256 **** ### Checks for OS specific cruft. echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6 ! echo "configure:4249: checking for st_blksize in struct stat" >&5 if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include --- 4243,4254 ---- ### Checks for OS specific cruft. echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6 ! echo "configure:4247: checking for st_blksize in struct stat" >&5 if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include *************** *** 4258,4264 **** struct stat s; s.st_blksize; ; return 0; } EOF ! if { (eval echo configure:4262: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_st_blksize=yes else --- 4256,4262 ---- struct stat s; s.st_blksize; ; return 0; } EOF ! if { (eval echo configure:4260: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_st_blksize=yes else *************** *** 4279,4290 **** fi echo $ac_n "checking for st_blocks in struct stat""... $ac_c" 1>&6 ! echo "configure:4283: checking for st_blocks in struct stat" >&5 if eval "test \"`echo '$''{'ac_cv_struct_st_blocks'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include --- 4277,4288 ---- fi echo $ac_n "checking for st_blocks in struct stat""... $ac_c" 1>&6 ! echo "configure:4281: checking for st_blocks in struct stat" >&5 if eval "test \"`echo '$''{'ac_cv_struct_st_blocks'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include *************** *** 4292,4298 **** struct stat s; s.st_blocks; ; return 0; } EOF ! if { (eval echo configure:4296: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_st_blocks=yes else --- 4290,4296 ---- struct stat s; s.st_blocks; ; return 0; } EOF ! if { (eval echo configure:4294: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_st_blocks=yes else *************** *** 4315,4326 **** fi echo $ac_n "checking for st_rdev in struct stat""... $ac_c" 1>&6 ! echo "configure:4319: checking for st_rdev in struct stat" >&5 if eval "test \"`echo '$''{'ac_cv_struct_st_rdev'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include --- 4313,4324 ---- fi echo $ac_n "checking for st_rdev in struct stat""... $ac_c" 1>&6 ! echo "configure:4317: checking for st_rdev in struct stat" >&5 if eval "test \"`echo '$''{'ac_cv_struct_st_rdev'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include *************** *** 4328,4334 **** struct stat s; s.st_rdev; ; return 0; } EOF ! if { (eval echo configure:4332: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_st_rdev=yes else --- 4326,4332 ---- struct stat s; s.st_rdev; ; return 0; } EOF ! if { (eval echo configure:4330: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_st_rdev=yes else *************** *** 4349,4360 **** fi echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 ! echo "configure:4353: checking whether struct tm is in sys/time.h or time.h" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include --- 4347,4358 ---- fi echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 ! echo "configure:4351: checking whether struct tm is in sys/time.h or time.h" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include *************** *** 4362,4368 **** struct tm *tp; tp->tm_sec; ; return 0; } EOF ! if { (eval echo configure:4366: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else --- 4360,4366 ---- struct tm *tp; tp->tm_sec; ; return 0; } EOF ! if { (eval echo configure:4364: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else *************** *** 4383,4394 **** fi echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 ! echo "configure:4387: checking for tm_zone in struct tm" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_cv_struct_tm> --- 4381,4392 ---- fi echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 ! echo "configure:4385: checking for tm_zone in struct tm" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_cv_struct_tm> *************** *** 4396,4402 **** struct tm tm; tm.tm_zone; ; return 0; } EOF ! if { (eval echo configure:4400: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm_zone=yes else --- 4394,4400 ---- struct tm tm; tm.tm_zone; ; return 0; } EOF ! if { (eval echo configure:4398: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm_zone=yes else *************** *** 4416,4427 **** else echo $ac_n "checking for tzname""... $ac_c" 1>&6 ! echo "configure:4420: checking for tzname" >&5 if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #ifndef tzname /* For SGI. */ --- 4414,4425 ---- else echo $ac_n "checking for tzname""... $ac_c" 1>&6 ! echo "configure:4418: checking for tzname" >&5 if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #ifndef tzname /* For SGI. */ *************** *** 4431,4437 **** atoi(*tzname); ; return 0; } EOF ! if { (eval echo configure:4435: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* ac_cv_var_tzname=yes else --- 4429,4435 ---- atoi(*tzname); ; return 0; } EOF ! if { (eval echo configure:4433: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* ac_cv_var_tzname=yes else *************** *** 4453,4459 **** fi echo $ac_n "checking whether closedir returns void""... $ac_c" 1>&6 ! echo "configure:4457: checking whether closedir returns void" >&5 if eval "test \"`echo '$''{'ac_cv_func_closedir_void'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 4451,4457 ---- fi echo $ac_n "checking whether closedir returns void""... $ac_c" 1>&6 ! echo "configure:4455: checking whether closedir returns void" >&5 if eval "test \"`echo '$''{'ac_cv_func_closedir_void'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** *** 4461,4473 **** ac_cv_func_closedir_void=yes else cat > conftest.$ac_ext < #include <$ac_header_dirent> int closedir(); main() { exit(closedir(opendir(".")) != 0); } EOF ! if { (eval echo configure:4471: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then ac_cv_func_closedir_void=no else --- 4459,4471 ---- ac_cv_func_closedir_void=yes else cat > conftest.$ac_ext < #include <$ac_header_dirent> int closedir(); main() { exit(closedir(opendir(".")) != 0); } EOF ! if { (eval echo configure:4469: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then ac_cv_func_closedir_void=no else *************** *** 4491,4502 **** echo $ac_n "checking for gr_passwd in struct group""... $ac_c" 1>&6 ! echo "configure:4495: checking for gr_passwd in struct group" >&5 if eval "test \"`echo '$''{'octave_cv_struct_gr_passwd'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include --- 4489,4500 ---- echo $ac_n "checking for gr_passwd in struct group""... $ac_c" 1>&6 ! echo "configure:4493: checking for gr_passwd in struct group" >&5 if eval "test \"`echo '$''{'octave_cv_struct_gr_passwd'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include *************** *** 4504,4510 **** struct group s; s.gr_passwd; ; return 0; } EOF ! if { (eval echo configure:4508: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* octave_cv_struct_gr_passwd=yes else --- 4502,4508 ---- struct group s; s.gr_passwd; ; return 0; } EOF ! if { (eval echo configure:4506: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* octave_cv_struct_gr_passwd=yes else *************** *** 4528,4534 **** TERMLIBS="" for termlib in ncurses curses termcap terminfo termlib; do echo $ac_n "checking for tputs in -l${termlib}""... $ac_c" 1>&6 ! echo "configure:4532: checking for tputs in -l${termlib}" >&5 ac_lib_var=`echo ${termlib}'_'tputs | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 4526,4532 ---- TERMLIBS="" for termlib in ncurses curses termcap terminfo termlib; do echo $ac_n "checking for tputs in -l${termlib}""... $ac_c" 1>&6 ! echo "configure:4530: checking for tputs in -l${termlib}" >&5 ac_lib_var=`echo ${termlib}'_'tputs | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** *** 4536,4542 **** ac_save_LIBS="$LIBS" LIBS="-l${termlib} $LIBS" cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else --- 4545,4551 ---- tputs() ; return 0; } EOF ! if { (eval echo configure:4549: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else *************** *** 4587,4602 **** fi echo $ac_n "checking for struct exception in math.h""... $ac_c" 1>&6 ! echo "configure:4591: checking for struct exception in math.h" >&5 cat > conftest.$ac_ext < int main() { struct exception *x; x->type; x->name; ; return 0; } EOF ! if { (eval echo configure:4600: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* echo "$ac_t""yes" 1>&6 cat >> confdefs.h <<\EOF --- 4585,4600 ---- fi echo $ac_n "checking for struct exception in math.h""... $ac_c" 1>&6 ! echo "configure:4589: checking for struct exception in math.h" >&5 cat > conftest.$ac_ext < int main() { struct exception *x; x->type; x->name; ; return 0; } EOF ! if { (eval echo configure:4598: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* echo "$ac_t""yes" 1>&6 cat >> confdefs.h <<\EOF *************** *** 4614,4625 **** ### Signal stuff. echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6 ! echo "configure:4618: checking return type of signal handlers" >&5 if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include --- 4612,4623 ---- ### Signal stuff. echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6 ! echo "configure:4616: checking return type of signal handlers" >&5 if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include *************** *** 4636,4642 **** int i; ; return 0; } EOF ! if { (eval echo configure:4640: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_type_signal=void else --- 4634,4640 ---- int i; ; return 0; } EOF ! if { (eval echo configure:4638: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_type_signal=void else *************** *** 4655,4666 **** echo $ac_n "checking for sys_siglist declaration in signal.h or unistd.h""... $ac_c" 1>&6 ! echo "configure:4659: checking for sys_siglist declaration in signal.h or unistd.h" >&5 if eval "test \"`echo '$''{'ac_cv_decl_sys_siglist'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include --- 4653,4664 ---- echo $ac_n "checking for sys_siglist declaration in signal.h or unistd.h""... $ac_c" 1>&6 ! echo "configure:4657: checking for sys_siglist declaration in signal.h or unistd.h" >&5 if eval "test \"`echo '$''{'ac_cv_decl_sys_siglist'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include *************** *** 4672,4678 **** char *msg = *(sys_siglist + 1); ; return 0; } EOF ! if { (eval echo configure:4676: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_decl_sys_siglist=yes else --- 4670,4676 ---- char *msg = *(sys_siglist + 1); ; return 0; } EOF ! if { (eval echo configure:4674: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_decl_sys_siglist=yes else *************** *** 4693,4708 **** fi echo $ac_n "checking for sys_siglist variable""... $ac_c" 1>&6 ! echo "configure:4697: checking for sys_siglist variable" >&5 cat > conftest.$ac_ext < int main() { extern char *sys_siglist[]; printf ("%s\n", sys_siglist[1]); ; return 0; } EOF ! if { (eval echo configure:4706: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* echo "$ac_t""yes" 1>&6 cat >> confdefs.h <<\EOF --- 4691,4706 ---- fi echo $ac_n "checking for sys_siglist variable""... $ac_c" 1>&6 ! echo "configure:4695: checking for sys_siglist variable" >&5 cat > conftest.$ac_ext < int main() { extern char *sys_siglist[]; printf ("%s\n", sys_siglist[1]); ; return 0; } EOF ! if { (eval echo configure:4704: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* echo "$ac_t""yes" 1>&6 cat >> confdefs.h <<\EOF *************** *** 4718,4730 **** rm -f conftest* echo $ac_n "checking for type of signal functions""... $ac_c" 1>&6 ! echo "configure:4722: checking for type of signal functions" >&5 if eval "test \"`echo '$''{'octave_cv_signal_vintage'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { --- 4716,4728 ---- rm -f conftest* echo $ac_n "checking for type of signal functions""... $ac_c" 1>&6 ! echo "configure:4720: checking for type of signal functions" >&5 if eval "test \"`echo '$''{'octave_cv_signal_vintage'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { *************** *** 4737,4743 **** ; return 0; } EOF ! if { (eval echo configure:4741: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* octave_cv_signal_vintage=posix else --- 4735,4741 ---- ; return 0; } EOF ! if { (eval echo configure:4739: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* octave_cv_signal_vintage=posix else *************** *** 4746,4752 **** rm -rf conftest* cat > conftest.$ac_ext < int main() { --- 4744,4750 ---- rm -rf conftest* cat > conftest.$ac_ext < int main() { *************** *** 4756,4762 **** ; return 0; } EOF ! if { (eval echo configure:4760: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* octave_cv_signal_vintage=4.2bsd else --- 4754,4760 ---- ; return 0; } EOF ! if { (eval echo configure:4758: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* octave_cv_signal_vintage=4.2bsd else *************** *** 4765,4771 **** rm -rf conftest* cat > conftest.$ac_ext < --- 4763,4769 ---- rm -rf conftest* cat > conftest.$ac_ext < *************** *** 4778,4784 **** ; return 0; } EOF ! if { (eval echo configure:4782: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* octave_cv_signal_vintage=svr3 else --- 4776,4782 ---- ; return 0; } EOF ! if { (eval echo configure:4780: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* octave_cv_signal_vintage=svr3 else *************** *** 4819,4825 **** echo $ac_n "checking if signal handlers must be reinstalled when invoked""... $ac_c" 1>&6 ! echo "configure:4823: checking if signal handlers must be reinstalled when invoked" >&5 if eval "test \"`echo '$''{'octave_cv_must_reinstall_sighandlers'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 4817,4823 ---- echo $ac_n "checking if signal handlers must be reinstalled when invoked""... $ac_c" 1>&6 ! echo "configure:4821: checking if signal handlers must be reinstalled when invoked" >&5 if eval "test \"`echo '$''{'octave_cv_must_reinstall_sighandlers'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** *** 4827,4833 **** { echo "configure: error: cannot check signal handling if cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext < --- 4825,4831 ---- { echo "configure: error: cannot check signal handling if cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext < *************** *** 4869,4875 **** } EOF ! if { (eval echo configure:4873: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then octave_cv_must_reinstall_sighandlers=no else --- 4867,4873 ---- } EOF ! if { (eval echo configure:4871: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then octave_cv_must_reinstall_sighandlers=no else *************** *** 4895,4906 **** ### Type stuff. echo $ac_n "checking for mode_t""... $ac_c" 1>&6 ! echo "configure:4899: checking for mode_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS --- 4893,4904 ---- ### Type stuff. echo $ac_n "checking for mode_t""... $ac_c" 1>&6 ! echo "configure:4897: checking for mode_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS *************** *** 4928,4939 **** fi echo $ac_n "checking for off_t""... $ac_c" 1>&6 ! echo "configure:4932: checking for off_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS --- 4926,4937 ---- fi echo $ac_n "checking for off_t""... $ac_c" 1>&6 ! echo "configure:4930: checking for off_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS *************** *** 4961,4972 **** fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 ! echo "configure:4965: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS --- 4959,4970 ---- fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 ! echo "configure:4963: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS *************** *** 4994,5005 **** fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 ! echo "configure:4998: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS --- 4992,5003 ---- fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 ! echo "configure:4996: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS *************** *** 5027,5038 **** fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 ! echo "configure:5031: checking for uid_t in sys/types.h" >&5 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF --- 5025,5036 ---- fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 ! echo "configure:5029: checking for uid_t in sys/types.h" >&5 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF *************** *** 5061,5072 **** fi echo $ac_n "checking for dev_t""... $ac_c" 1>&6 ! echo "configure:5065: checking for dev_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_dev_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS --- 5059,5070 ---- fi echo $ac_n "checking for dev_t""... $ac_c" 1>&6 ! echo "configure:5063: checking for dev_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_dev_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS *************** *** 5094,5105 **** fi echo $ac_n "checking for ino_t""... $ac_c" 1>&6 ! echo "configure:5098: checking for ino_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_ino_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS --- 5092,5103 ---- fi echo $ac_n "checking for ino_t""... $ac_c" 1>&6 ! echo "configure:5096: checking for ino_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_ino_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS *************** *** 5127,5138 **** fi echo $ac_n "checking for nlink_t""... $ac_c" 1>&6 ! echo "configure:5131: checking for nlink_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_nlink_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS --- 5125,5136 ---- fi echo $ac_n "checking for nlink_t""... $ac_c" 1>&6 ! echo "configure:5129: checking for nlink_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_nlink_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS *************** *** 5159,5164 **** --- 5157,5198 ---- fi + echo $ac_n "checking for sigset_t""... $ac_c" 1>&6 + echo "configure:5162: checking for sigset_t" >&5 + if eval "test \"`echo '$''{'octave_cv_type_sigset_t'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext < + #if STDC_HEADERS + #include + #endif + #include + + EOF + if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "sigset_t" >/dev/null 2>&1; then + rm -rf conftest* + octave_cv_type_sigset_t=yes + else + rm -rf conftest* + octave_cv_type_sigset_t=no + fi + rm -f conftest* + + fi + + echo "$ac_t""$octave_cv_type_sigset_t" 1>&6 + + if test $octave_cv_type_sigset_t = no; then + cat >> confdefs.h <<\EOF + #define sigset_t int + EOF + + fi + ### Define VOID_SIGHANDLER for readline. *************** *** 5172,5186 **** esac for ac_func in getrusage times do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:5179: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:5215: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 5239,5245 ---- ; return 0; } EOF ! if { (eval echo configure:5243: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** *** 5227,5233 **** fi done - case "$canonical_host_type" in *-*-cygwin32) cat >> confdefs.h <<\EOF --- 5263,5268 ---- *************** *** 5237,5242 **** --- 5272,5303 ---- ;; esac + bsd_gcc_kluge_targets_frag= + case "$canonical_host_type" in + *-*-386bsd* | *-*-openbsd* | *-*-netbsd* | *-*-freebsd*) + bsd_gcc_kluge_targets_frag=Makefrag.bsd + cat << \EOF > $bsd_gcc_kluge_targets_frag + + lex.o: lex.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS_NO_PT_FLAGS) $< + + pt-plot.o: pt-plot.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS_NO_PT_FLAGS) $< + + symtab.o: symtab.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS_NO_PT_FLAGS) $< + + toplev.o: toplev.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS_NO_PT_FLAGS) $< + + unwind-prot.o: unwind-prot.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS_NO_PT_FLAGS) $< + + EOF + ;; + esac + + ### Checks for other programs used for building, testing, installing, ### and running Octave. ### *************** *** 5249,5255 **** # Extract the first word of "flex", so it can be a program name with args. set dummy flex; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:5253: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LEX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 5310,5316 ---- # Extract the first word of "flex", so it can be a program name with args. set dummy flex; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:5314: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LEX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** *** 5282,5288 **** *) ac_lib=l ;; esac echo $ac_n "checking for yywrap in -l$ac_lib""... $ac_c" 1>&6 ! echo "configure:5286: checking for yywrap in -l$ac_lib" >&5 ac_lib_var=`echo $ac_lib'_'yywrap | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 5343,5349 ---- *) ac_lib=l ;; esac echo $ac_n "checking for yywrap in -l$ac_lib""... $ac_c" 1>&6 ! echo "configure:5347: checking for yywrap in -l$ac_lib" >&5 ac_lib_var=`echo $ac_lib'_'yywrap | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** *** 5290,5296 **** ac_save_LIBS="$LIBS" LIBS="-l$ac_lib $LIBS" cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else --- 5362,5368 ---- yywrap() ; return 0; } EOF ! if { (eval echo configure:5366: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else *************** *** 5343,5349 **** # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:5347: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_YACC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 5404,5410 ---- # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:5408: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_YACC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** *** 5382,5388 **** esac echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 ! echo "configure:5386: checking whether ln -s works" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 5443,5449 ---- esac echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 ! echo "configure:5447: checking whether ln -s works" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** *** 5425,5431 **** # Extract the first word of "runtest", so it can be a program name with args. set dummy runtest; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:5429: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RUNTEST'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 5486,5492 ---- # Extract the first word of "runtest", so it can be a program name with args. set dummy runtest; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:5490: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RUNTEST'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** *** 5453,5459 **** # Extract the first word of "expect", so it can be a program name with args. set dummy expect; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:5457: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_EXPECT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 5514,5520 ---- # Extract the first word of "expect", so it can be a program name with args. set dummy expect; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:5518: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_EXPECT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** *** 5494,5500 **** # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 ! echo "configure:5498: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 5555,5561 ---- # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 ! echo "configure:5559: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** *** 5555,5561 **** # Extract the first word of "gnuplot", so it can be a program name with args. set dummy gnuplot; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:5559: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_GNUPLOT_BINARY'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 5616,5622 ---- # Extract the first word of "gnuplot", so it can be a program name with args. set dummy gnuplot; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:5620: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_GNUPLOT_BINARY'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** *** 5582,5588 **** if test -n "$GNUPLOT_BINARY"; then echo $ac_n "checking to see if your gnuplot supports multiplot""... $ac_c" 1>&6 ! echo "configure:5586: checking to see if your gnuplot supports multiplot" >&5 if test -z "`echo 'set term unknown; set multiplot' | \ $GNUPLOT_BINARY 2>&1`"; then echo "$ac_t""yes" 1>&6 --- 5643,5649 ---- if test -n "$GNUPLOT_BINARY"; then echo $ac_n "checking to see if your gnuplot supports multiplot""... $ac_c" 1>&6 ! echo "configure:5647: checking to see if your gnuplot supports multiplot" >&5 if test -z "`echo 'set term unknown; set multiplot' | \ $GNUPLOT_BINARY 2>&1`"; then echo "$ac_t""yes" 1>&6 *************** *** 5594,5600 **** echo "$ac_t""no" 1>&6 fi echo $ac_n "checking to see if your gnuplot supports multiple plot windows""... $ac_c" 1>&6 ! echo "configure:5598: checking to see if your gnuplot supports multiple plot windows" >&5 if test -z "`echo 'set term x11 2' | $GNUPLOT_BINARY 2>&1`"; then echo "$ac_t""yes" 1>&6 cat >> confdefs.h <<\EOF --- 5655,5661 ---- echo "$ac_t""no" 1>&6 fi echo $ac_n "checking to see if your gnuplot supports multiple plot windows""... $ac_c" 1>&6 ! echo "configure:5659: checking to see if your gnuplot supports multiple plot windows" >&5 if test -z "`echo 'set term x11 2' | $GNUPLOT_BINARY 2>&1`"; then echo "$ac_t""yes" 1>&6 cat >> confdefs.h <<\EOF *************** *** 5617,5628 **** echo "configure: warning: at the Octave prompt." 1>&2 fi ! for ac_prog in less more page pg do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:5626: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_DEFAULT_PAGER'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 5678,5696 ---- echo "configure: warning: at the Octave prompt." 1>&2 fi ! octave_possible_pagers="less more page pg" ! case "$canonical_host_type" in ! *-*-cygwin32) ! octave_possible_pagers="$octave_possible_pagers more.com" ! ;; ! esac ! ! for ac_prog in $octave_possible_pagers do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:5694: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_DEFAULT_PAGER'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** *** 5821,5829 **** trap 'rm -fr `echo "Makefile octMakefile Makeconf test/Makefile dlfcn/Makefile doc/Makefile doc/faq/Makefile doc/interpreter/Makefile ! doc/liboctave/Makefile doc/refcard/Makefile examples/Makefile ! liboctave/Makefile src/Makefile libcruft/Makefile ! libcruft/Makerules libcruft/blas/Makefile libcruft/balgen/Makefile libcruft/dassl/Makefile libcruft/eispack/Makefile libcruft/fftpack/Makefile libcruft/fsqp/Makefile libcruft/lapack/Makefile libcruft/linpack/Makefile --- 5889,5898 ---- trap 'rm -fr `echo "Makefile octMakefile Makeconf test/Makefile dlfcn/Makefile doc/Makefile doc/faq/Makefile doc/interpreter/Makefile ! doc/liboctave/Makefile doc/refcard/Makefile emacs/Makefile ! emacs/Makefile examples/Makefile liboctave/Makefile ! src/Makefile libcruft/Makefile libcruft/Makerules ! libcruft/blas/Makefile libcruft/balgen/Makefile libcruft/dassl/Makefile libcruft/eispack/Makefile libcruft/fftpack/Makefile libcruft/fsqp/Makefile libcruft/lapack/Makefile libcruft/linpack/Makefile *************** *** 5903,5909 **** s%@CPICFLAG@%$CPICFLAG%g s%@CXXPICFLAG@%$CXXPICFLAG%g s%@SHLEXT@%$SHLEXT%g - s%@RLD_FLAG@%$RLD_FLAG%g s%@DLFCN_DIR@%$DLFCN_DIR%g s%@OCTAVE_LITE@%$OCTAVE_LITE%g s%@ALLOCA@%$ALLOCA%g --- 5972,5977 ---- *************** *** 5915,5921 **** s%@F2C@%$F2C%g s%@FC@%$FC%g s%@FFLAGS@%$FFLAGS%g - s%@FUGLY@%$FUGLY%g s%@FLIBS@%$FLIBS%g s%@F2CFLAGS@%$F2CFLAGS%g s%@FORTRAN_MAIN_FLAG@%$FORTRAN_MAIN_FLAG%g --- 5983,5988 ---- *************** *** 5929,5934 **** --- 5996,6003 ---- s%@LIBOBJS@%$LIBOBJS%g s%@TERMLIBS@%$TERMLIBS%g s%@VOID_SIGHANDLER@%$VOID_SIGHANDLER%g + /@bsd_gcc_kluge_targets_frag@/r $bsd_gcc_kluge_targets_frag + s%@bsd_gcc_kluge_targets_frag@%%g s%@LEX@%$LEX%g s%@LEXLIB@%$LEXLIB%g s%@LFLAGS@%$LFLAGS%g *************** *** 5989,5997 **** CONFIG_FILES=\${CONFIG_FILES-"Makefile octMakefile Makeconf test/Makefile dlfcn/Makefile doc/Makefile doc/faq/Makefile doc/interpreter/Makefile ! doc/liboctave/Makefile doc/refcard/Makefile examples/Makefile ! liboctave/Makefile src/Makefile libcruft/Makefile ! libcruft/Makerules libcruft/blas/Makefile libcruft/balgen/Makefile libcruft/dassl/Makefile libcruft/eispack/Makefile libcruft/fftpack/Makefile libcruft/fsqp/Makefile libcruft/lapack/Makefile libcruft/linpack/Makefile --- 6058,6067 ---- CONFIG_FILES=\${CONFIG_FILES-"Makefile octMakefile Makeconf test/Makefile dlfcn/Makefile doc/Makefile doc/faq/Makefile doc/interpreter/Makefile ! doc/liboctave/Makefile doc/refcard/Makefile emacs/Makefile ! emacs/Makefile examples/Makefile liboctave/Makefile ! src/Makefile libcruft/Makefile libcruft/Makerules ! libcruft/blas/Makefile libcruft/balgen/Makefile libcruft/dassl/Makefile libcruft/eispack/Makefile libcruft/fftpack/Makefile libcruft/fsqp/Makefile libcruft/lapack/Makefile libcruft/linpack/Makefile *************** *** 6282,6288 **** if test -z "$F77"; then FORT="$F2C $F2CFLAGS" else ! FORT="$F77 $FFLAGS $FUGLY" fi echo "$ac_t"" --- 6352,6358 ---- if test -z "$F77"; then FORT="$F2C $F2CFLAGS" else ! FORT="$F77 $FFLAGS" fi echo "$ac_t"" diff -cNr octave-2.0.1/configure.in octave-2.0.2/configure.in *** octave-2.0.1/configure.in Fri Dec 13 22:39:00 1996 --- octave-2.0.2/configure.in Mon Jan 27 15:32:14 1997 *************** *** 21,27 **** ### Software Foundation, 59 Temple Place - Suite 330, Boston, MA ### 02111-1307, USA. ! AC_REVISION($Revision: 1.243 $) AC_PREREQ(2.9) AC_INIT(src/octave.cc) AC_CONFIG_HEADER(config.h) --- 21,27 ---- ### Software Foundation, 59 Temple Place - Suite 330, Boston, MA ### 02111-1307, USA. ! AC_REVISION($Revision: 1.251 $) AC_PREREQ(2.9) AC_INIT(src/octave.cc) AC_CONFIG_HEADER(config.h) *************** *** 380,397 **** CXXPICFLAG=-fPIC FPICFLAG=-fPIC SHLEXT=so - RLD_FLAG= case "$canonical_host_type" in alpha-dec-osf*) CPICFLAG= CXXPICFLAG= FPICFLAG= - RLD_FLAG='-Xlinker -rpath -Xlinker $(libdir)' - ;; - changequote(,)dnl - i[3456789]86-*-linux*) - changequote([,])dnl - RLD_FLAG='-Xlinker -rpath -Xlinker $(libdir)' ;; rs6000-ibm-aix* | powerpc-ibm-aix*) CPICFLAG= --- 380,390 ---- *************** *** 406,423 **** FPICFLAG=+Z fi SHLEXT=sl - RLD_FLAG='-Xlinker +b -Xlinker $(libdir)' ;; *-sgi-*) ! FPICFLAG=-KPIC ;; sparc-sun-sunos4*) ! FPICFLAG=-PIC ! RLD_FLAG='-L $(libdir)' ;; sparc-sun-solaris2*) ! FPICFLAG=-PIC ! RLD_FLAG='-Xlinker -R -Xlinker $(libdir)' ;; esac AC_MSG_RESULT([defining FPICFLAG to be $FPICFLAG]) --- 399,425 ---- FPICFLAG=+Z fi SHLEXT=sl ;; *-sgi-*) ! if $use_g77; then ! FPICFLAG=-fPIC ! else ! FPICFLAG=-KPIC ! fi ;; sparc-sun-sunos4*) ! if $use_g77; then ! FPICFLAG=-fPIC ! else ! FPICFLAG=-PIC ! fi ;; sparc-sun-solaris2*) ! if $use_g77; then ! FPICFLAG=-fPIC ! else ! FPICFLAG=-PIC ! fi ;; esac AC_MSG_RESULT([defining FPICFLAG to be $FPICFLAG]) *************** *** 429,435 **** AC_SUBST(CPICFLAG) AC_SUBST(CXXPICFLAG) AC_SUBST(SHLEXT) - AC_SUBST(RLD_FLAG) AC_SUBST(DLFCN_DIR) ### Allow compilation of smaller kernel. This only works if some form --- 431,436 ---- *************** *** 534,546 **** AC_CHECK_PROGS(F77, g77 f77 f90 xlf cf77 fc) fi - FUGLY= have_fortran_compiler=false have_f2c=false if $use_g77; then - FUGLY=-fugly - AC_MSG_RESULT([defining FUGLY to be $FUGLY]) OCTAVE_FLIBS AC_DEFINE(F77_APPEND_UNDERSCORE, 1) AC_MSG_RESULT([defining F77_APPEND_UNDERSCORE to be 1]) --- 535,544 ---- *************** *** 585,591 **** fi ! f77_rules_frag=Makerules.f77 if $have_fortran_compiler; then changequote(,)dnl cat << \EOF > $f77_rules_frag --- 583,589 ---- fi ! f77_rules_frag=Makefrag.f77 if $have_fortran_compiler; then changequote(,)dnl cat << \EOF > $f77_rules_frag *************** *** 636,642 **** if test -z "$FLIBS"; then AC_MSG_WARN([I found f2c but not libf2c.a, or libF77.a and libI77.a]) fi ! f77_rules_frag=Makerules.f77 cat << \EOF > $f77_rules_frag %.c : %.f --- 634,640 ---- if test -z "$FLIBS"; then AC_MSG_WARN([I found f2c but not libf2c.a, or libF77.a and libI77.a]) fi ! f77_rules_frag=Makefrag.f77 cat << \EOF > $f77_rules_frag %.c : %.f *************** *** 665,671 **** AC_SUBST(FC) AC_SUBST(F77) AC_SUBST(FFLAGS) - AC_SUBST(FUGLY) AC_SUBST(FLIBS) AC_SUBST(F2C) AC_SUBST(F2CFLAGS) --- 663,668 ---- *************** *** 727,733 **** lstat memmove mkdir mkfifo on_exit pipe putenv rename rindex rmdir \ setgrent setpwent setvbuf sigaction sigpending sigprocmask \ sigsuspend stat strcasecmp strdup strerror stricmp strncasecmp \ ! strnicmp tempnam umask unlink vfprintf vsprintf waitpid) OCTAVE_SMART_PUTENV OCTAVE_PROGRAM_INVOCATION_NAME --- 724,730 ---- lstat memmove mkdir mkfifo on_exit pipe putenv rename rindex rmdir \ setgrent setpwent setvbuf sigaction sigpending sigprocmask \ sigsuspend stat strcasecmp strdup strerror stricmp strncasecmp \ ! strnicmp tempnam umask unlink usleep vfprintf vsprintf waitpid) OCTAVE_SMART_PUTENV OCTAVE_PROGRAM_INVOCATION_NAME *************** *** 931,936 **** --- 928,934 ---- AC_CHECK_TYPE(dev_t, short) AC_CHECK_TYPE(ino_t, unsigned long) AC_CHECK_TYPE(nlink_t, short) + OCTAVE_CHECK_TYPE(sigset_t, [#include ], int) ### Define VOID_SIGHANDLER for readline. *************** *** 944,957 **** esac AC_SUBST(VOID_SIGHANDLER) ! AC_CHECK_FUNCS(getrusage times) case "$canonical_host_type" in *-*-cygwin32) AC_DEFINE(RUSAGE_TIMES_ONLY, 1) ;; esac ### Checks for other programs used for building, testing, installing, ### and running Octave. ### --- 942,982 ---- esac AC_SUBST(VOID_SIGHANDLER) ! ### A system dependent kluge or two. + AC_CHECK_FUNCS(getrusage times) case "$canonical_host_type" in *-*-cygwin32) AC_DEFINE(RUSAGE_TIMES_ONLY, 1) ;; esac + bsd_gcc_kluge_targets_frag= + case "$canonical_host_type" in + *-*-386bsd* | *-*-openbsd* | *-*-netbsd* | *-*-freebsd*) + bsd_gcc_kluge_targets_frag=Makefrag.bsd + cat << \EOF > $bsd_gcc_kluge_targets_frag + + lex.o: lex.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS_NO_PT_FLAGS) $< + + pt-plot.o: pt-plot.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS_NO_PT_FLAGS) $< + + symtab.o: symtab.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS_NO_PT_FLAGS) $< + + toplev.o: toplev.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS_NO_PT_FLAGS) $< + + unwind-prot.o: unwind-prot.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS_NO_PT_FLAGS) $< + + EOF + ;; + esac + AC_SUBST_FILE(bsd_gcc_kluge_targets_frag) + ### Checks for other programs used for building, testing, installing, ### and running Octave. ### *************** *** 1055,1061 **** AC_MSG_WARN([at the Octave prompt.]) fi ! AC_CHECK_PROGS(DEFAULT_PAGER, less more page pg, []) if test -z "$DEFAULT_PAGER"; then AC_MSG_WARN([I couldn't find `less', `more', `page', or `pg']) fi --- 1080,1093 ---- AC_MSG_WARN([at the Octave prompt.]) fi ! octave_possible_pagers="less more page pg" ! case "$canonical_host_type" in ! *-*-cygwin32) ! octave_possible_pagers="$octave_possible_pagers more.com" ! ;; ! esac ! ! AC_CHECK_PROGS(DEFAULT_PAGER, $octave_possible_pagers, []) if test -z "$DEFAULT_PAGER"; then AC_MSG_WARN([I couldn't find `less', `more', `page', or `pg']) fi *************** *** 1113,1121 **** AC_OUTPUT(Makefile octMakefile Makeconf test/Makefile dlfcn/Makefile doc/Makefile doc/faq/Makefile doc/interpreter/Makefile ! doc/liboctave/Makefile doc/refcard/Makefile examples/Makefile ! liboctave/Makefile src/Makefile libcruft/Makefile ! libcruft/Makerules libcruft/blas/Makefile libcruft/balgen/Makefile libcruft/dassl/Makefile libcruft/eispack/Makefile libcruft/fftpack/Makefile libcruft/fsqp/Makefile libcruft/lapack/Makefile libcruft/linpack/Makefile --- 1145,1154 ---- AC_OUTPUT(Makefile octMakefile Makeconf test/Makefile dlfcn/Makefile doc/Makefile doc/faq/Makefile doc/interpreter/Makefile ! doc/liboctave/Makefile doc/refcard/Makefile emacs/Makefile ! emacs/Makefile examples/Makefile liboctave/Makefile ! src/Makefile libcruft/Makefile libcruft/Makerules ! libcruft/blas/Makefile libcruft/balgen/Makefile libcruft/dassl/Makefile libcruft/eispack/Makefile libcruft/fftpack/Makefile libcruft/fsqp/Makefile libcruft/lapack/Makefile libcruft/linpack/Makefile *************** *** 1132,1138 **** if test -z "$F77"; then FORT="$F2C $F2CFLAGS" else ! FORT="$F77 $FFLAGS $FUGLY" fi AC_MSG_RESULT([ --- 1165,1171 ---- if test -z "$F77"; then FORT="$F2C $F2CFLAGS" else ! FORT="$F77 $FFLAGS" fi AC_MSG_RESULT([ diff -cNr octave-2.0.1/doc/ChangeLog octave-2.0.2/doc/ChangeLog *** octave-2.0.1/doc/ChangeLog Tue Jan 7 00:17:25 1997 --- octave-2.0.2/doc/ChangeLog Mon Jan 27 15:52:34 1997 *************** *** 1,3 **** --- 1,23 ---- + Mon Jan 27 15:52:33 1997 John W. Eaton + + * Version 2.0.2 released. + + Sun Jan 26 22:07:45 1997 John W. Eaton + + * interpreter/Makefile.in: Make BUGS file directly from bugs.texi. + * interpreter/bugs.texi: Incorporate bugs1.texi directly. + * interpreter/bugs1.texi: Delete. + + * interpreter/Makefile.in: Make INSTALL file directly from + install.texi. + * interpreter/install.texi: Incorporate install1.texi directly. + * interpreter/install1.texi: Delete. + + Sat Jan 25 22:32:33 1997 John W. Eaton + + * Makefile.in, interpreter/Makefile.in, liboctave/Makefile.in, + faq/Makefile.in, refcard/Makefile.in (bin-dist): New target. + Tue Jan 7 00:17:24 1997 John W. Eaton * Version 2.0.1 released. diff -cNr octave-2.0.1/doc/Makefile.in octave-2.0.2/doc/Makefile.in *** octave-2.0.1/doc/Makefile.in Thu Dec 12 02:23:35 1996 --- octave-2.0.2/doc/Makefile.in Thu Jan 23 16:11:58 1997 *************** *** 26,31 **** --- 26,33 ---- DISTSUBDIRS = $(SUBDIRS) + BINDISTSUBDIRS = $(SUBDIRS) + all: $(SUBDIRS) .PHONY: all *************** *** 63,65 **** --- 65,71 ---- ln $(DISTFILES) ../`cat ../.fname`/doc for dir in $(DISTSUBDIRS); do mkdir ../`cat ../.fname`/doc/$$dir; cd $$dir; $(MAKE) $@; cd ..; done .PHONY: dist + + bin-dist: + for dir in $(BINDISTSUBDIRS); do mkdir ../`cat ../.fname`/doc/$$dir; cd $$dir; $(MAKE) $@; cd ..; done + .PHONY: bin-dist diff -cNr octave-2.0.1/doc/faq/FAQ.texi octave-2.0.2/doc/faq/FAQ.texi *** octave-2.0.1/doc/faq/FAQ.texi Sat Dec 14 11:02:04 1996 --- octave-2.0.2/doc/faq/FAQ.texi Sun Jan 26 22:20:52 1997 *************** *** 3,18 **** @setfilename FAQ.info @settitle Frequently asked questions about Octave (with answers) - @c Smaller amounts of whitespace for the 8.5 by 11 inch format. - @tex - \global\chapheadingskip = 15pt plus 4pt minus 2pt - \global\secheadingskip = 12pt plus 3pt minus 2pt - \global\subsecheadingskip = 9pt plus 2pt minus 2pt - \global\parskip 5pt plus 1pt - - @finalout - @end tex - @setchapternewpage off @titlepage --- 3,8 ---- diff -cNr octave-2.0.1/doc/faq/Makefile.in octave-2.0.2/doc/faq/Makefile.in *** octave-2.0.1/doc/faq/Makefile.in Thu Dec 12 02:24:15 1996 --- octave-2.0.2/doc/faq/Makefile.in Fri Jan 24 22:37:27 1997 *************** *** 26,31 **** --- 26,33 ---- DISTFILES := Makefile.in $(TEXINFO) $(FORMATTED) + BINDISTFILES = + SPELL := $(patsubst %.texi, %.spell, $(ALL_TEXINFO)) %.spell : %.texi *************** *** 70,72 **** --- 72,80 ---- dist: all ln $(DISTFILES) ../../`cat ../../.fname`/doc/faq .PHONY: dist + + bin-dist: + if [ -n "$(BINDISTFILES)" ]; then \ + ln $(BINDISTFILES) ../../`cat ../../.fname`/doc/faq ; \ + fi + .PHONY: bin-dist diff -cNr octave-2.0.1/doc/interpreter/Makefile.in octave-2.0.2/doc/interpreter/Makefile.in *** octave-2.0.1/doc/interpreter/Makefile.in Thu Dec 12 02:24:12 1996 --- octave-2.0.2/doc/interpreter/Makefile.in Sun Jan 26 22:11:03 1997 *************** *** 20,41 **** SOURCES = ! TEXINFO = amuse.texi arith.texi audio.texi bugs.texi bugs1.texi \ control.texi cp-idx.texi diffeq.texi emacs.texi expr.texi \ extend.texi fn-idx.texi func.texi gnuinfo.texi help.texi \ history.texi hsuser.texi image.texi in-idx.texi install.texi \ ! install1.texi intro.texi invoke.texi io.texi linalg.texi \ matrix.texi nonlin.texi octave.texi op-idx.texi optim.texi \ plot.texi poly.texi preface.texi program.texi quad.texi \ rd-idx.texi rluser.texi set.texi signal.texi special.texi \ stats.texi stmt.texi strings.texi system.texi var.texi \ vr-idx.texi ! FORMATTED = octave.dvi octave.ps octave.info octave.info-[0-9]* DISTFILES = Makefile.in dir octave.1 conf.texi gpl.texi \ $(TEXINFO) $(FORMATTED) SPELL = $(patsubst %.texi, %.spell, $(ALL_TEXINFO)) %.spell : %.texi --- 20,53 ---- SOURCES = ! TEXINFO = amuse.texi arith.texi audio.texi bugs.texi \ control.texi cp-idx.texi diffeq.texi emacs.texi expr.texi \ extend.texi fn-idx.texi func.texi gnuinfo.texi help.texi \ history.texi hsuser.texi image.texi in-idx.texi install.texi \ ! intro.texi invoke.texi io.texi linalg.texi \ matrix.texi nonlin.texi octave.texi op-idx.texi optim.texi \ plot.texi poly.texi preface.texi program.texi quad.texi \ rd-idx.texi rluser.texi set.texi signal.texi special.texi \ stats.texi stmt.texi strings.texi system.texi var.texi \ vr-idx.texi ! FORMATTED = octave.dvi octave.ps octave.info octave.info octave.info-[0-9]* DISTFILES = Makefile.in dir octave.1 conf.texi gpl.texi \ $(TEXINFO) $(FORMATTED) + ifeq ($(wildcard octave.info), ) + BINDISTFILES = $(srcdir)/octave.1 $(srcdir)/octave.info \ + $(wildcard $(srcdir)/octave.info-[0-9]*) + else + BINDISTFILES = $(srcdir)/octave.1 octave.info octave.info-[0-9]* + endif + + # Look for version.h to get version information. + xfiles := $(TOPDIR)/src/version.h $(srcdir)/$(TOPDIR)/src/version.h + + version_file := $(firstword $(foreach file, $(xfiles), $(wildcard $(file)))) + SPELL = $(patsubst %.texi, %.spell, $(ALL_TEXINFO)) %.spell : %.texi *************** *** 78,91 **** octave.ps: octave.dvi -dvips -o octave.ps octave.dvi ! ../../INSTALL.OCTAVE: install1.texi install.texi ! -makeinfo --no-header --output INSTALL -I$(srcdir) \ ! $(srcdir)/install1.texi mv INSTALL ../../INSTALL.OCTAVE ! ../../BUGS: bugs1.texi bugs.texi ! -makeinfo --no-header --output BUGS -I$(srcdir) \ ! $(srcdir)/bugs1.texi mv BUGS ../../BUGS check: all --- 90,103 ---- octave.ps: octave.dvi -dvips -o octave.ps octave.dvi ! ../../INSTALL.OCTAVE: install.texi ! -makeinfo -D INSTALLONLY --no-headers --no-split --output INSTALL \ ! -I$(srcdir) $(srcdir)/install.texi mv INSTALL ../../INSTALL.OCTAVE ! ../../BUGS: bugs.texi ! -makeinfo -D BUGSONLY --no-headers --no-split --output BUGS \ ! -I$(srcdir) $(srcdir)/bugs.texi mv BUGS ../../BUGS check: all *************** *** 162,164 **** --- 174,182 ---- dist: all ln $(DISTFILES) ../../`cat ../../.fname`/doc/interpreter .PHONY: dist + + bin-dist: + if [ -n "$(BINDISTFILES)" ]; then \ + ln $(BINDISTFILES) ../../`cat ../../.fname`/doc/interpreter ; \ + fi + .PHONY: bin-dist diff -cNr octave-2.0.1/doc/interpreter/bugs.texi octave-2.0.2/doc/interpreter/bugs.texi *** octave-2.0.1/doc/interpreter/bugs.texi Thu Dec 5 15:35:19 1996 --- octave-2.0.2/doc/interpreter/bugs.texi Sun Jan 26 22:18:31 1997 *************** *** 9,14 **** --- 9,29 ---- @node Trouble, Command Line Editing, Installation, Top @appendix Known Causes of Trouble with Octave @end ifclear + + @ifset BUGSONLY + @include conf.texi + + This file documents known bugs in Octave and describes where and how to + report any bugs that you may find. + + Copyright (C) 1996 John W. Eaton. You may copy, distribute, and + modify it freely as long as you preserve this copyright notice and + permission notice. + + @node Trouble, Trouble, Trouble, (dir) + @chapter Known Causes of Trouble with Octave + @end ifset + @cindex bugs, known @cindex installation trouble @cindex known causes of trouble diff -cNr octave-2.0.1/doc/interpreter/conf.texi octave-2.0.2/doc/interpreter/conf.texi *** octave-2.0.1/doc/interpreter/conf.texi Tue Jan 7 00:30:59 1997 --- octave-2.0.2/doc/interpreter/conf.texi Mon Jan 27 00:18:18 1997 *************** *** 2,6 **** @c This is part of the Octave manual. @c For copying conditions, see the file gpl.texi. ! @set VERSION 2.0.1 @set OCTAVEHOME /usr/local --- 2,6 ---- @c This is part of the Octave manual. @c For copying conditions, see the file gpl.texi. ! @set VERSION 2.0.2 @set OCTAVEHOME /usr/local diff -cNr octave-2.0.1/doc/interpreter/emacs.texi octave-2.0.2/doc/interpreter/emacs.texi *** octave-2.0.1/doc/interpreter/emacs.texi Thu Nov 21 01:33:05 1996 --- octave-2.0.2/doc/interpreter/emacs.texi Wed Jan 22 11:13:31 1997 *************** *** 1,6 **** ! @c Copyright (C) 1996 John W. Eaton ! @c Written by Kurt Hornik on 1996/05/17 ! @c Updated for octave.el version 0.8.3 by KH on 1996/07/02 @c This is part of the Octave manual. @c For copying conditions, see the file gpl.texi. --- 1,6 ---- ! @c Copyright (C) 1996, 1997 John W. Eaton ! @c Written by Kurt Hornik on 1996/05/17. ! @c Last updated by KH on 1997/01/22. @c This is part of the Octave manual. @c For copying conditions, see the file gpl.texi. *************** *** 28,41 **** or suggestions on using Emacs with Octave. @menu ! * Setting Up Octave Mode:: * Using Octave Mode:: * Running Octave From Within Emacs:: * Using the Emacs Info Reader for Octave:: @end menu ! @node Setting Up Octave Mode, Using Octave Mode, Emacs, Emacs ! @section Setting Up Octave Mode If you are lucky, your sysadmins have already arranged everything so that Emacs automatically goes into Octave mode whenever you visit an --- 28,58 ---- or suggestions on using Emacs with Octave. @menu ! * Installing the Emacs Octave Package:: * Using Octave Mode:: * Running Octave From Within Emacs:: * Using the Emacs Info Reader for Octave:: @end menu ! @node Installing the Emacs Octave Package, Using Octave Mode, Emacs, Emacs ! @section Installing the Emacs Octave Package ! ! The Emacs package @file{octave} consists of the three files ! @file{octave-mod.el}, @file{octave-inf.el}, and @file{octave-hlp.el}. ! These files, or better yet their byte-compiled versions, should be ! somewhere in your Emacs load-path. ! ! If you have GNU Emacs with a version number at least as high as 19.35, ! you are all set up, because the package is respectively will be part of ! GNU Emacs as of version 19.35. ! ! Otherwise, copy the three files from the @file{emacs} subdirectory of ! the Octave distribution to a place where Emacs can find them (this ! depends on how your Emacs was installed). Byte-compile them for speed ! if you want. ! ! @node Using Octave Mode, Running Octave From Within Emacs, Installing the Emacs Octave Package, Emacs ! @section Using Octave Mode If you are lucky, your sysadmins have already arranged everything so that Emacs automatically goes into Octave mode whenever you visit an *************** *** 44,66 **** @enumerate @item - Make sure that the file @file{octave.el} (or better, its byte-compiled - version @file{octave.elc}) from the Octave distribution is somewhere in - your load-path. - - @quotation - @strong{Note:} The current version of @file{octave.el} was developed, - tested and byte-compiled under GNU Emacs 19.31. It may not work under - other Emacs versions, in particular under XEmacs. - @end quotation - - @item To begin using Octave mode for all @file{.m} files you visit, add the following lines to a file loaded by Emacs at startup time, typically your @file{~/.emacs} file: @lisp ! (autoload 'octave-mode "octave" nil t) (setq auto-mode-alist (cons '(\"\\\\.m$\" . octave-mode) auto-mode-alist)) @end lisp --- 61,72 ---- @enumerate @item To begin using Octave mode for all @file{.m} files you visit, add the following lines to a file loaded by Emacs at startup time, typically your @file{~/.emacs} file: @lisp ! (autoload 'octave-mode "octave-mod" nil t) (setq auto-mode-alist (cons '(\"\\\\.m$\" . octave-mode) auto-mode-alist)) @end lisp *************** *** 81,89 **** Font-lock mode. @end enumerate - @node Using Octave Mode, Running Octave From Within Emacs, Setting Up Octave Mode, Emacs - @section Using Octave Mode - In Octave mode, the following special Emacs commands can be used in addition to the standard Emacs commands. --- 87,92 ---- *************** *** 102,115 **** @item ; Insert an ``electric'' semicolon (@code{octave-electric-semi}). If ! @code{octave-auto-indent} is non-@code{nil}, typing a @samp{;} automatically reindents the current line, inserts a newline and indents the new line. @item ` Start entering an abbreviation (@code{octave-abbrev-start}). If Abbrev mode is turned on, typing @kbd{`C-h} or @kbd{`?} lists all abbrevs. ! Any other key combination is executed normally. @item M-LFD Break line at point and insert continuation marker and alignment --- 105,119 ---- @item ; Insert an ``electric'' semicolon (@code{octave-electric-semi}). If ! @code{octave-auto-newline} is non-@code{nil}, typing a @samp{;} automatically reindents the current line, inserts a newline and indents the new line. @item ` Start entering an abbreviation (@code{octave-abbrev-start}). If Abbrev mode is turned on, typing @kbd{`C-h} or @kbd{`?} lists all abbrevs. ! Any other key combination is executed normally. Note that all Octave ! abbrevs start with a grave accent. @item M-LFD Break line at point and insert continuation marker and alignment *************** *** 142,152 **** Properly indents the Octave function which contains point (@code{octave-indent-defun}). @item C-c ; ! Puts the first character of @code{octave-comment-start} (usually ! @samp{#}) at the beginning of every line in the region ! (@code{octave-comment-region}). With just @kbd{C-u} prefix argument, ! uncomment each line in the region. @item C-c : Uncomments every line in the region (@code{octave-uncomment-region}). --- 146,164 ---- Properly indents the Octave function which contains point (@code{octave-indent-defun}). + @item M-; + If there is no comment already on this line, create a code-level comment + (started by two comment characters) if the line is empty, or an in-line + comment (started by one comment character) otherwise + (@code{octave-indent-for-comment}). + Point is left after the start of the comment which is properly aligned. + @item C-c ; ! Puts the comment character @samp{#} (more precisely, the string value of ! @code{octave-comment-start}) at the beginning of every line in the ! region (@code{octave-comment-region}). With just @kbd{C-u} prefix ! argument, uncomment each line in the region. A numeric prefix argument ! @var{N} means use @var{N} comment characters. @item C-c : Uncomments every line in the region (@code{octave-uncomment-region}). *************** *** 224,231 **** The variable @code{octave-help-files} is a list of files to search through and defaults to @code{'("octave")}. If there is also an Octave ! Local Guide with corresponding info file @file{octave-LG} (for example), ! you can have @code{octave-help} search both files by @lisp (setq octave-help-files '("octave" "octave-LG")) @end lisp --- 236,243 ---- The variable @code{octave-help-files} is a list of files to search through and defaults to @code{'("octave")}. If there is also an Octave ! Local Guide with corresponding info file, say, @file{octave-LG}, you can ! have @code{octave-help} search both files by @lisp (setq octave-help-files '("octave" "octave-LG")) @end lisp *************** *** 282,296 **** Extra indentation applied to statements in block structures. Default is 2. - @item octave-comment-column - Column to indent right-margin comments to. - Default is 32. - (Such comments are created using @key{M-;} (@code{indent-for-comment}).) - - @item octave-comment-start - Delimiter inserted to start new comment. - Default value is @samp{# }. - @item octave-continuation-offset Extra indentation applied to Octave continuation lines. Default is 4. --- 294,299 ---- *************** *** 299,312 **** String used for Octave continuation lines. Normally @samp{\}. ! @item octave-fill-column ! Column beyond which automatic line-wrapping should happen. ! Default is 72. ! ! @item octave-inhibit-startup-message ! If @code{t}, no startup message is displayed when Octave mode is ! called. ! Default is @code{nil}. @end table --- 302,310 ---- String used for Octave continuation lines. Normally @samp{\}. ! @item octave-mode-startup-message ! If @code{t} (default), a startup message is displayed when Octave mode ! is called. @end table *************** *** 356,371 **** to directly start an inferior Octave process. If Emacs does not know about this command, add the line @lisp ! (autoload 'run-octave "octave" nil t) @end lisp @noindent to your @file{.emacs} file. This will start Octave in a special buffer the name of which is specified by the variable @code{inferior-octave-buffer} and defaults to ! @code{"*Octave Interaction*"}. From within this buffer, you can interact with the inferior Octave process `as usual', i.e., by entering ! Octave commands at the prompt. You can also communicate with an inferior Octave process from within files with Octave code (i.e., buffers in Octave mode), using the --- 354,373 ---- to directly start an inferior Octave process. If Emacs does not know about this command, add the line @lisp ! (autoload 'run-octave "octave-inf" nil t) @end lisp @noindent to your @file{.emacs} file. This will start Octave in a special buffer the name of which is specified by the variable @code{inferior-octave-buffer} and defaults to ! @code{"*Inferior Octave*"}. From within this buffer, you can interact with the inferior Octave process `as usual', i.e., by entering ! Octave commands at the prompt. The buffer is in Inferior Octave mode, ! which is derived from the standard Comint mode, a major mode for ! interacting with an inferior interpreter. See the documentation for ! @code{comint-mode} for more details, and use @kbd{C-h b} to find out ! about available special keybindings. You can also communicate with an inferior Octave process from within files with Octave code (i.e., buffers in Octave mode), using the *************** *** 391,397 **** Make sure that `inferior-octave-buffer' is displayed (@code{octave-show-process-buffer}). @item C-c i h ! Delete all windows that display @file{inferior-octave-buffer} (@code{octave-hide-process-buffer}). @item C-c i k Kill the inferior Octave process and its buffer --- 393,399 ---- Make sure that `inferior-octave-buffer' is displayed (@code{octave-show-process-buffer}). @item C-c i h ! Delete all windows that display the inferior Octave buffer (@code{octave-hide-process-buffer}). @item C-c i k Kill the inferior Octave process and its buffer *************** *** 423,429 **** startup; note that these commands will not produce any visible output in the process buffer. Which file to use is controlled by the variable @code{inferior-octave-startup-file}. If this is @code{nil}, the file ! @file{~/.emacs_octave} is used if it exists. And finally, @code{inferior-octave-mode-hook} is run after starting the process and putting its buffer into Inferior Octave mode. Hence, if you --- 425,431 ---- startup; note that these commands will not produce any visible output in the process buffer. Which file to use is controlled by the variable @code{inferior-octave-startup-file}. If this is @code{nil}, the file ! @file{~/.emacs-octave} is used if it exists. And finally, @code{inferior-octave-mode-hook} is run after starting the process and putting its buffer into Inferior Octave mode. Hence, if you *************** *** 456,471 **** You can also set up the Emacs Info reader for dealing with the results of Octave's @samp{help -i}. For this, the package @file{gnuserv} needs ! to be installed. The @file{gnuserv} package is not distributed with GNU ! Emacs, but it can be retrieved from any GNU Emacs Lisp Code Directory ! archive, e.g.@: @file{ftp://ftp.cis.ohio-state.edu/pub/gnu/emacs/elisp-archive}, ! in the @file{packages} subdirectory. There is also a newer version ! around (use archie to look for @file{gnuserv-2.1alpha.tar.gz}). If @file{gnuserv} is installed, add the lines @lisp ! (autoload 'octave-help "octave" nil t) (require 'gnuserv) (gnuserv-start) @end lisp --- 458,474 ---- You can also set up the Emacs Info reader for dealing with the results of Octave's @samp{help -i}. For this, the package @file{gnuserv} needs ! to be installed, which unfortunately still does not come with GNU Emacs ! (it does with XEmacs). It can be retrieved from any GNU Emacs Lisp Code ! Directory archive, e.g.@: @file{ftp://ftp.cis.ohio-state.edu/pub/gnu/emacs/elisp-archive}, ! in the @file{packages} subdirectory. The alpha version of an enhanced ! version of gnuserv is available at ! @file{ftp://ftp.wellfleet.com/netman/psmith/emacs/gnuserv-2.1alpha.tar.gz}. If @file{gnuserv} is installed, add the lines @lisp ! (autoload 'octave-help "octave-hlp" nil t) (require 'gnuserv) (gnuserv-start) @end lisp *************** *** 480,488 **** that the Emacs variable @code{octave-help-files} is set correctly). In this case, set @code{INFO_PROGRAM} to @code{"info-emacs-octave-help"}. ! If you use Octave from within Emacs, it is probably best to put these ! settings in the @file{~/.emacs_octave} startup file (or in the file ! named by the Emacs variable @code{inferior-octave-startup-file}). @c Local Variables: @c TeX-command-default: "Texinfo" --- 483,491 ---- that the Emacs variable @code{octave-help-files} is set correctly). In this case, set @code{INFO_PROGRAM} to @code{"info-emacs-octave-help"}. ! If you use Octave from within Emacs, these settings are best done in the ! @file{~/.emacs-octave} startup file (or the file pointed to by the Emacs ! variable @code{inferior-octave-startup-file}). @c Local Variables: @c TeX-command-default: "Texinfo" diff -cNr octave-2.0.1/doc/interpreter/install.texi octave-2.0.2/doc/interpreter/install.texi *** octave-2.0.1/doc/interpreter/install.texi Thu Nov 21 01:33:05 1996 --- octave-2.0.2/doc/interpreter/install.texi Sun Jan 26 23:39:25 1997 *************** *** 9,14 **** --- 9,28 ---- @node Installation, Trouble, Emacs, Top @appendix Installing Octave @end ifclear + + @ifset INSTALLONLY + @include conf.texi + + This file documents the installation 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. + + @node Installation, Installation, Installation, (dir) + @chapter Installing Octave + @end ifset + @cindex installing Octave Here is the procedure for installing Octave from scratch on a Unix *************** *** 183,192 **** @samp{ldso} package. @item ! You may need to edit some files in the gcc include subdirectory to add ! prototypes for functions there. For example, Ultrix 4.2 needs proper ! declarations for the @code{signal()} and the @code{SIG_IGN} macro in the ! file @file{signal.h}. On some systems the @code{SIG_IGN} macro is defined to be something like this: --- 197,223 ---- @samp{ldso} package. @item ! If you encounter errors like ! ! @smallexample ! @group ! passing `void (*)()' as argument 2 of ! `octave_set_signal_handler(int, void (*)(int))' ! @end group ! @end smallexample ! ! @noindent ! or ! ! @smallexample ! warning: ANSI C++ prohibits conversion from `(int)' to `(...)' ! @end smallexample ! ! @noindent ! while compiling @file{sighandlers.cc}, you may need to edit some files ! in the gcc include subdirectory to add proper prototypes for functions ! there. For example, Ultrix 4.2 needs proper declarations for the ! @code{signal()} and the @code{SIG_IGN} macro in the file @file{signal.h}. On some systems the @code{SIG_IGN} macro is defined to be something like this: *************** *** 203,213 **** @end example @noindent ! to match the prototype declaration for @code{signal()}. ! The gcc fixincludes/fixproto script should probably fix this when gcc ! installs its modified set of header files, but I don't think that's ! been done yet. @item There is a bug with the makeinfo program that is distributed with --- 234,258 ---- @end example @noindent ! to match the prototype declaration for @code{signal()}. This change ! should also be made for the @code{SIG_DFL} and @code{SIG_ERR} symbols. ! It may be necessary to change the definitions in @file{sys/signal.h} as ! well. ! ! The gcc fixincludes/fixproto script should probably fix these problems ! when gcc installs its modified set of header files, but I don't think ! that's been done yet. ! @strong{You should not change the files in @file{/usr/include}}. You ! can find the gcc include directory tree by running the command ! ! @example ! gcc -print-libgcc-file-name ! @end example ! ! @noindent ! The directory of gcc include files normally begins in the same directory ! that contains the file @file{libgcc.a}. @item There is a bug with the makeinfo program that is distributed with *************** *** 351,357 **** To install Octave from a binary distribution, execute the command @example ! sh ./doinstall.sh @end example @noindent --- 396,402 ---- To install Octave from a binary distribution, execute the command @example ! sh ./install-octave @end example @noindent *************** *** 364,387 **** @item bin Octave and other binaries that people will want to run directly. @item man/man1 Unix-style man pages describing Octave. @item info Info files describing Octave. ! @item lib/octave/@var{version}/m Function files distributed with Octave. This includes the Octave version, so that multiple versions of Octave may be installed at the same time. ! @item lib/octave/@var{version}/exec/@var{host_type} Executables to be run by Octave rather than the user. ! @item lib/octave/@var{version}/oct/@var{host_type} Object files that will be dynamically loaded. ! @item lib/octave/@var{version}/imagelib Image files that are distributed with Octave. @end table --- 409,437 ---- @item bin Octave and other binaries that people will want to run directly. + @item lib + Shared libraries that Octave needs in order to run. These files are + not included if you are installing a statically linked version of + Octave. + @item man/man1 Unix-style man pages describing Octave. @item info Info files describing Octave. ! @item share/octave/@var{version}/m Function files distributed with Octave. This includes the Octave version, so that multiple versions of Octave may be installed at the same time. ! @item libexec/octave/@var{version}/exec/@var{host_type} Executables to be run by Octave rather than the user. ! @item libexec/octave/@var{version}/oct/@var{host_type} Object files that will be dynamically loaded. ! @item share/octave/@var{version}/imagelib Image files that are distributed with Octave. @end table *************** *** 390,405 **** interpreter, and @var{host_type} is the type of computer on which Octave is installed (for example, @samp{i486-unknown-gnu}). ! If these directories don't exist, the script @file{doinstall.sh} will ! create them for you. If it is not possible for you to install Octave in @file{/usr/local}, or if you would prefer to install it in a different directory, you can specify the name of the top level directory as an argument to the ! doinstall.sh script. For example: @example ! sh ./doinstall.sh /some/other/directory @end example @noindent --- 440,469 ---- interpreter, and @var{host_type} is the type of computer on which Octave is installed (for example, @samp{i486-unknown-gnu}). ! If these directories don't exist, the script @file{install-octave} will ! create them for you. The installation script also creates the following ! subdirectories of @file{/usr/local} that are intended for locally ! installed functions: ! ! @table @file ! @item share/octave/site/m ! Locally installed M-files. ! ! @item libexec/octave/site/exec/@var{host_type} ! Locally installed binaries intendec to be run by Octave rather than by ! the user. ! ! @item libexec/octave/site/octave/@var{host_type} ! Local object files that will be dynamically linked. ! @end table If it is not possible for you to install Octave in @file{/usr/local}, or if you would prefer to install it in a different directory, you can specify the name of the top level directory as an argument to the ! @file{install-octave} script. For example: @example ! sh ./install-octave /some/other/directory @end example @noindent *************** *** 414,429 **** @itemize @bullet @item ! You must build Octave in the same directory as the source. This is ! required since the @samp{binary-dist} targets in the makefiles will not ! work if you compile outside the source tree. @item ! Use @samp{CFLAGS=-O CXXFLAGS=-O LDFLAGS=} as arguments for Make because ! most people who get the binary distributions are probably not going to ! be interested in debugging Octave. @item ! Type @samp{make binary-dist}. This will build everything and then pack ! it up for distribution. @end itemize --- 478,525 ---- @itemize @bullet @item ! Unpack the source distribution. ! ! @item ! Configure Octave using the command ! ! @example ! ./configure --disable-dl --disable-shl --disable-shared ! @end example ! ! If your system supports shared libraries and dynamic linking, you should ! also build a binary that supports those features, but it is important to ! create a statically linked executable that will run no matter what ! versions of the libraries are installed on the target system. ! ! @item ! Build the binaries using the command ! ! @example ! make LDFLAGS=-static ! @end example @item ! Type @samp{make static-binary-dist}. This will create a compressed tar ! file ready for distribution. The file will have a name like ! @file{octave-@var{version}-@var{host_type}-static.tar.gz}. @item ! If your system supports dynamic linking and shared libraries, build ! another version of Octave that supports these features. Use the ! commands ! ! @example ! @group ! configure --enable-shared ! make ! make dynamic-binary-dist ! @end group ! @end example ! ! @noindent ! This will create a compressed tar file ready for distribution. The file ! will have a name like ! @file{octave-@var{version}-@var{host_type}-dynamic.tar.gz}. ! @end itemize diff -cNr octave-2.0.1/doc/interpreter/octave.texi octave-2.0.2/doc/interpreter/octave.texi *** octave-2.0.1/doc/interpreter/octave.texi Thu Nov 21 01:32:55 1996 --- octave-2.0.2/doc/interpreter/octave.texi Wed Jan 22 11:13:20 1997 *************** *** 323,329 **** Using Emacs With Octave ! * Setting Up Octave Mode:: * Using Octave Mode:: * Running Octave From Within Emacs:: * Using the Emacs Info Reader for Octave:: --- 323,329 ---- Using Emacs With Octave ! * Installing the Emacs Octave Package:: * Using Octave Mode:: * Running Octave From Within Emacs:: * Using the Emacs Info Reader for Octave:: diff -cNr octave-2.0.1/doc/interpreter/program.texi octave-2.0.2/doc/interpreter/program.texi *** octave-2.0.1/doc/interpreter/program.texi Thu Nov 21 01:33:05 1996 --- octave-2.0.2/doc/interpreter/program.texi Wed Jan 22 23:13:21 1997 *************** *** 283,301 **** 0. @end deftypefn ! @deftypefn {Built-in Function} {} error (@var{msg}) ! Print the message @var{msg}, prefixed by the string @samp{error: }, and ! set Octave's internal error state such that control will return to the ! top level without evaluating any more commands. This is useful for ! aborting from functions. ! If @var{msg} does not end with a new line character, Octave will print a ! traceback of all the function calls leading to the error. For example, @example function f () g () end function g () h () end function h () nargin == 1 || error ("nargin != 1"); end f () error: nargin != 1 error: evaluating index expression near line 1, column 30 --- 283,317 ---- 0. @end deftypefn ! @deftypefn {Built-in Function} {} error (@var{template}, @dots{}) ! The @code{error} function formats the optional arguments under the ! control of the template string @var{template} using the same rules as ! the @code{printf} family of functions (@pxref{Formatted Output}). ! The resulting message is prefixed by the string @samp{error: } and ! printed on the @code{stderr} stream. ! Calling @code{error} also sets Octave's internal error state such that ! control will return to the top level without evaluating any more ! commands. This is useful for aborting from functions or scripts. ! ! If the error message does not end with a new line character, Octave will ! print a traceback of all the function calls leading to the error. For ! example, given the following function definitions: @example + @group function f () g () end function g () h () end function h () nargin == 1 || error ("nargin != 1"); end + @end group + @end example + + @noindent + calling the function @code{f()} will result in a list of messages that + can help you to quickly locate the exact location of the error: + + @example + @group f () error: nargin != 1 error: evaluating index expression near line 1, column 30 *************** *** 303,324 **** error: called from `h' error: called from `g' error: called from `f' @end example ! @noindent ! produces a list of messages that can help you to quickly locate the ! exact location of the error. ! ! If @var{msg} ends in a new line character, Octave will only print ! @var{msg} and will not display any traceback messages as it returns control to the top level. For example, modifying the error message in the previous example to end in a new line causes Octave to only print a single message: @example function h () nargin == 1 || error ("nargin != 1\n"); end f () error: nargin != 1 @end example @end deftypefn --- 319,339 ---- error: called from `h' error: called from `g' error: called from `f' + @end group @end example ! If the error message ends in a new line character, Octave will print the ! message but will not display any traceback messages as it returns control to the top level. For example, modifying the error message in the previous example to end in a new line causes Octave to only print a single message: @example + @group function h () nargin == 1 || error ("nargin != 1\n"); end f () error: nargin != 1 + @end group @end example @end deftypefn diff -cNr octave-2.0.1/doc/liboctave/Makefile.in octave-2.0.2/doc/liboctave/Makefile.in *** octave-2.0.1/doc/liboctave/Makefile.in Thu Dec 12 02:24:06 1996 --- octave-2.0.2/doc/liboctave/Makefile.in Fri Jan 24 22:37:23 1997 *************** *** 29,34 **** --- 29,36 ---- DISTFILES = Makefile.in conf.texi gpl.texi $(TEXINFO) $(FORMATTED) + BINDISTFILES = + SPELL = $(patsubst %.texi, %.spell, $(TEXINFO)) %.spell : %.texi *************** *** 108,110 **** --- 110,118 ---- dist: all ln $(DISTFILES) ../../`cat ../../.fname`/doc/liboctave .PHONY: dist + + bin-dist: + if [ -n "$(BINDISTFILES)" ]; then \ + ln $(BINDISTFILES) ../../`cat ../../.fname`/doc/liboctave ; \ + fi + .PHONY: bin-dist diff -cNr octave-2.0.1/doc/liboctave/conf.texi octave-2.0.2/doc/liboctave/conf.texi *** octave-2.0.1/doc/liboctave/conf.texi Tue Jan 7 00:35:20 1997 --- octave-2.0.2/doc/liboctave/conf.texi Mon Jan 27 00:19:16 1997 *************** *** 2,6 **** @c This is part of the Octave manual. @c For copying conditions, see the file gpl.texi. ! @set VERSION 2.0.1 @set OCTAVEHOME /usr/local --- 2,6 ---- @c This is part of the Octave manual. @c For copying conditions, see the file gpl.texi. ! @set VERSION 2.0.2 @set OCTAVEHOME /usr/local diff -cNr octave-2.0.1/doc/refcard/Makefile.in octave-2.0.2/doc/refcard/Makefile.in *** octave-2.0.1/doc/refcard/Makefile.in Thu Dec 12 02:24:09 1996 --- octave-2.0.2/doc/refcard/Makefile.in Fri Jan 24 22:37:22 1997 *************** *** 26,31 **** --- 26,33 ---- DISTFILES := Makefile.in $(TEX) $(FORMATTED) + BINDISTFILES = $(addprefix $(srcdir)/, $(TEX) $(FORMATTED)) + all: $(FORMATTED) refcard-a4.dvi: refcard-a4.tex refcard.tex *************** *** 69,71 **** --- 71,79 ---- dist: all ln $(DISTFILES) ../../`cat ../../.fname`/doc/refcard .PHONY: dist + + bin-dist: + if [ -n "$(BINDISTFILES)" ]; then \ + ln $(BINDISTFILES) ../../`cat ../../.fname`/doc/refcard ; \ + fi + .PHONY: bin-dist diff -cNr octave-2.0.1/emacs/Makefile.in octave-2.0.2/emacs/Makefile.in *** octave-2.0.1/emacs/Makefile.in Wed Dec 31 18:00:00 1969 --- octave-2.0.2/emacs/Makefile.in Sun Jan 26 19:34:42 1997 *************** *** 0 **** --- 1,62 ---- + # + # Makefile for octave's emacs directory + # + # John W. Eaton + # jwe@bevo.che.wisc.edu + # University of Wisconsin-Madison + # Department of Chemical Engineering + + TOPDIR = .. + + srcdir = @srcdir@ + top_srcdir = @top_srcdir@ + VPATH = @srcdir@ + + include $(TOPDIR)/Makeconf + + INSTALL = @INSTALL@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_DATA = @INSTALL_DATA@ + + EL_FILES = octave-hlp.el octave-inf.el octave-mod.el + + ELC_FILES = octave-hlp.elc octave-inf.elc octave-mod.elc + + SOURCES = $(EL_FILES) + + DISTFILES = Makefile.in $(EL_FILES) $(ELC_FILES) NEWS TODO + + BINDISTFILES = $(addprefix $(srcdir)/, $(EL_FILES) $(ELC_FILES) NEWS TODO) + + all: + .PHONY: all + + install: + .PHONY: install + + tags: + ctags $(SOURCES) + + TAGS: $(SOURCES) + etags $(SOURCES) + + clean mostlyclean: + .PHONY: clean mostlyclean + + distclean: + rm -f Makefile + .PHONY: distclean + + maintainer-clean: distclean + rm -f tags TAGS + .PHONY: maintainer-clean + + dist: + ln $(DISTFILES) ../`cat ../.fname`/emacs + .PHONY: dist + + bin-dist: + if [ -n "$(BINDISTFILES)" ]; then \ + ln $(BINDISTFILES) ../`cat ../.fname`/emacs ; \ + fi + .PHONY: bin-dist diff -cNr octave-2.0.1/emacs/octave-hlp.el octave-2.0.2/emacs/octave-hlp.el *** octave-2.0.1/emacs/octave-hlp.el Wed Dec 31 18:00:00 1969 --- octave-2.0.2/emacs/octave-hlp.el Wed Jan 22 10:09:12 1997 *************** *** 0 **** --- 1,133 ---- + ;; octave-hlp.el --- getting help on Octave symbols using info + + ;;; Copyright (C) 1997 Free Software Foundation, Inc. + + ;; Author: Kurt Hornik + ;; Author: John Eaton + ;; Maintainer: Kurt Hornik + ;; Keywords: languages + + ;; This file is part of GNU Emacs. + + ;; GNU Emacs 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 2, or (at your option) + ;; any later version. + + ;; GNU Emacs 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 GNU Emacs; see the file COPYING. If not, write to the + ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, + ;; Boston, MA 02111-1307, USA. + + ;;; Commentary: + + ;; Provides the command `octave-help' which allows index lookup of a + ;; symbol in the Octave-related info files, as specified by the list + ;; `octave-help-files'. + + ;; Other features may be added in future versions. + + ;;; Code: + + (require 'octave-mod) + (require 'info) + + (defvar octave-help-files '("octave") + "List of info files with documentation for Octave. + Default is (\"octave\").") + + (defvar octave-help-lookup-alist nil + "Alist of Octave index entries for lookup.") + + (defvar octave-help-completion-alist nil + "Alist of Octave index entries for completion. + The entries are of the form (VAR . VAR), where VAR runs through all + different keys in `octave-help-lookup-alist'.") + + ;;;###autoload + (defun octave-help (key) + "Get help on Octave symbols from the Octave info files. + Look up KEY in the function, operator and variable indices of the files + specified by `octave-help-files'. + If KEY is not a string, prompt for it with completion." + (interactive + (list + (completing-read (format "Describe Octave symbol: ") + (octave-help-get-completion-alist) + nil t))) + (if (get-buffer "*info*") + (set-buffer "*info*")) + (if (zerop (length key)) + (Info-find-node (car octave-help-files) "Top") + (let ((alist (copy-alist (octave-help-get-lookup-alist))) + entry matches) + (while (setq entry (car alist)) + (if (string-match key (car entry)) + (add-to-list 'matches entry)) + (setq alist (cdr alist))) + (if matches + (progn + (setq Info-index-alternatives matches) + (Info-index-next 0)))))) + + (defun octave-help-get-lookup-alist () + "Build the index lookup alist from all Octave info files. + The files specified by `octave-help-files' are searched." + (if octave-help-lookup-alist + () + (message "Building help lookup alist...") + (let ((files octave-help-files) file key node) + (save-window-excursion + (while files + (setq file (car files)) + (Info-goto-node (concat "(" file ")")) + (condition-case nil + (progn + (Info-index "") + (while + (progn + (while (re-search-forward + "^\\* \\([^(:]+\\)[^:]*: *\\(.+\\)\\.$" + nil t) + (setq key (match-string 1) + node (concat "(" file ")" (match-string 2))) + (and (string-match "\\(.*\\>\\) *$" key) + (setq key (replace-match "\\1" t nil key))) + (add-to-list 'octave-help-lookup-alist + (list key + node + (concat (concat "(" file ")") + Info-current-node) + 0))) + (and (setq node (Info-extract-pointer "next" t)) + (string-match + (concat "\\(Function\\|Operator\\|Variable\\) " + "\\") + node))) + (Info-goto-node node))) + (error nil)) + (setq files (cdr files))))) + (message "Building help lookup alist...done")) + octave-help-lookup-alist) + + (defun octave-help-get-completion-alist () + "Build the index completion alist from all Octave info files. + The files specified by `octave-help-files' are searched." + (if octave-help-completion-alist + () + (message "Building help completion alist...") + (let ((alist (octave-help-get-lookup-alist)) entry) + (while alist + (setq entry (car alist)) + (add-to-list 'octave-help-completion-alist + (cons (car entry) (car entry))) + (setq alist (cdr alist)))) + (message "Building help completion alist...done")) + octave-help-completion-alist) + + ;;; octave-hlp.el ends here diff -cNr octave-2.0.1/emacs/octave-inf.el octave-2.0.2/emacs/octave-inf.el *** octave-2.0.1/emacs/octave-inf.el Wed Dec 31 18:00:00 1969 --- octave-2.0.2/emacs/octave-inf.el Wed Jan 22 10:09:12 1997 *************** *** 0 **** --- 1,350 ---- + ;; octave-inf.el --- running Octave as an inferior Emacs process + + ;;; Copyright (C) 1997 Free Software Foundation, Inc. + + ;; Author: Kurt Hornik + ;; Author: John Eaton + ;; Maintainer: Kurt Hornik + ;; Keywords: languages + + ;; This file is part of GNU Emacs. + + ;; GNU Emacs 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 2, or (at your option) + ;; any later version. + + ;; GNU Emacs 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 GNU Emacs; see the file COPYING. If not, write to the + ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, + ;; Boston, MA 02111-1307, USA. + + ;;; Code: + + (require 'octave-mod) + (require 'comint) + + (defvar inferior-octave-program "octave" + "*Program invoked by `inferior-octave'.") + + (defvar inferior-octave-prompt "\\(^octave\\(:[0-9]+\\)?\\|^\\)>+ " + "*Regexp to match prompts for the inferior Octave process.") + + (defvar inferior-octave-startup-file nil + "*Name of the inferior Octave startup file. + The contents of this file are sent to the inferior Octave process on + startup.") + + (defvar inferior-octave-startup-args nil + "*List of command line arguments for the inferior Octave process. + For example, for suppressing the startup message and using `traditional' + mode, set this to (\"-q\" \"--traditional\").") + + (defvar inferior-octave-mode-map nil + "Keymap used in Inferior Octave mode.") + (if inferior-octave-mode-map + () + (let ((map (copy-keymap comint-mode-map))) + (define-key map "\t" 'comint-dynamic-complete) + (define-key map "\M-?" 'comint-dynamic-list-filename-completions) + (define-key map "\C-c\C-l" 'inferior-octave-dynamic-list-input-ring) + (define-key map [menu-bar inout list-history] + '("List Input History" . inferior-octave-dynamic-list-input-ring)) + (define-key map "\C-c\C-h" 'octave-help) + (setq inferior-octave-mode-map map))) + + (defvar inferior-octave-mode-syntax-table nil + "Syntax table in use in inferior-octave-mode buffers.") + (if inferior-octave-mode-syntax-table + () + (let ((table (make-syntax-table))) + (modify-syntax-entry ?\` "w" table) + (modify-syntax-entry ?\# "<" table) + (modify-syntax-entry ?\n ">" table) + (setq inferior-octave-mode-syntax-table table))) + + (defvar inferior-octave-mode-hook nil + "*Hook to be run when Inferior Octave mode is started.") + + (defvar inferior-octave-font-lock-keywords + (list + (cons inferior-octave-prompt 'font-lock-type-face)) + ;; Could certainly do more font locking in inferior Octave ... + "Additional expressions to highlight in Inferior Octave mode.") + + (defvar inferior-octave-output-list nil) + (defvar inferior-octave-output-string nil) + (defvar inferior-octave-receive-in-progress nil) + + (defvar inferior-octave-startup-hook nil) + + (defvar inferior-octave-complete-impossible nil + "Non-nil means that `inferior-octave-complete' is impossible.") + + (defvar inferior-octave-dynamic-complete-functions + '(inferior-octave-complete comint-dynamic-complete-filename) + "List of functions called to perform completion for inferior Octave. + This variable is used to initialize `comint-dynamic-complete-functions' + in the Inferior Octave buffer.") + + (defun inferior-octave-mode () + "Major mode for interacting with an inferior Octave process. + Runs Octave as a subprocess of Emacs, with Octave I/O through an Emacs + buffer. + + Entry to this mode successively runs the hooks `comint-mode-hook' and + `inferior-octave-mode-hook'." + (interactive) + (comint-mode) + (setq comint-prompt-regexp inferior-octave-prompt + major-mode 'inferior-octave-mode + mode-name "Inferior Octave" + mode-line-process '(":%s") + local-abbrev-table octave-abbrev-table) + (use-local-map inferior-octave-mode-map) + (set-syntax-table inferior-octave-mode-syntax-table) + + (make-local-variable 'comment-start) + (setq comment-start octave-comment-start) + (make-local-variable 'comment-end) + (setq comment-end "") + (make-local-variable 'comment-column) + (setq comment-column 32) + (make-local-variable 'comment-start-skip) + (setq comment-start-skip octave-comment-start-skip) + + (make-local-variable 'font-lock-defaults) + (setq font-lock-defaults '(inferior-octave-font-lock-keywords nil nil)) + + (setq comint-input-ring-file-name + (or (getenv "OCTAVE_HISTFILE") "~/.octave_hist") + comint-input-ring-size (or (getenv "OCTAVE_HISTSIZE") 1024) + comint-input-filter-functions '(inferior-octave-directory-tracker) + comint-dynamic-complete-functions + inferior-octave-dynamic-complete-functions) + (comint-read-input-ring t) + + (run-hooks 'inferior-octave-mode-hook)) + + ;;;###autoload + (defun inferior-octave (&optional arg) + "Run an inferior Octave process, I/O via `inferior-octave-buffer'. + This buffer is put in Inferior Octave mode. See `inferior-octave-mode'. + + Unless ARG is non-nil, switches to this buffer. + + The elements of the list `inferior-octave-startup-args' are sent as + command line arguments to the inferior Octave process on startup. + + Additional commands to be executed on startup can be provided either in + the file specified by `inferior-octave-startup-file' or by the default + startup file, `~/.emacs-octave'." + (interactive "P") + (let ((buffer inferior-octave-buffer)) + (get-buffer-create buffer) + (if (comint-check-proc buffer) + () + (save-excursion + (set-buffer buffer) + (comint-mode) + (inferior-octave-startup) + (inferior-octave-mode))) + (if (not arg) + (pop-to-buffer buffer)))) + + ;;;###autoload + (defalias 'run-octave 'inferior-octave) + + (defun inferior-octave-startup () + "Start an inferior Octave process." + (let ((proc (comint-exec-1 + (substring inferior-octave-buffer 1 -1) + inferior-octave-buffer + inferior-octave-program + inferior-octave-startup-args))) + (set-process-filter proc 'inferior-octave-output-digest) + (setq comint-ptyp process-connection-type + inferior-octave-process proc + inferior-octave-output-list nil + inferior-octave-output-string nil + inferior-octave-receive-in-progress t) + + ;; This may look complicated ... However, we need to make sure that + ;; we additional startup code only AFTER Octave is ready (otherwise, + ;; output may be mixed up). Hence, we need to digest the Octave + ;; output to see when it issues a prompt. + (while inferior-octave-receive-in-progress + (accept-process-output inferior-octave-process)) + (goto-char (point-max)) + (set-marker (process-mark proc) (point)) + (insert-before-markers + (concat + (if (not (bobp)) " \n") + (if inferior-octave-output-list + (concat (mapconcat + 'identity inferior-octave-output-list "\n") + "\n")))) + ;; O.k., now we are ready for the Inferior Octave startup commands. + (let* (commands + (program (file-name-nondirectory inferior-octave-program)) + (file (or inferior-octave-startup-file + (concat "~/.emacs-" program)))) + (setq commands + (list "page_screen_output = 0;\n" + (if (not (string-equal + inferior-octave-output-string ">> ")) + "PS1=\"\\\\s> \";\n") + (if (file-exists-p file) + (format "source (\"%s\");\n" file)))) + (inferior-octave-send-list-and-digest commands)) + (insert-before-markers + (concat + (if inferior-octave-output-list + (concat (mapconcat + 'identity inferior-octave-output-list "\n") + "\n")) + inferior-octave-output-string)) + ;; Next, we check whether Octave supports `completion_matches' ... + (inferior-octave-send-list-and-digest + (list "exist \"completion_matches\"\n")) + (setq inferior-octave-complete-impossible + (not (string-match "5$" (car inferior-octave-output-list)))) + + ;; And finally, everything is back to normal. + (set-process-filter proc 'inferior-octave-output-filter) + (run-hooks 'inferior-octave-startup-hook))) + + + (defun inferior-octave-complete () + "Perform completion on the Octave symbol preceding point. + This is implemented using the Octave command `completion_matches' which + is NOT available with versions of Octave prior to 2.0." + (interactive) + (let* ((end (point)) + (command (save-excursion + (skip-syntax-backward "w_") + (and (looking-at comint-prompt-regexp) + (goto-char (match-end 0))) + (buffer-substring-no-properties (point) end))) + (proc (get-buffer-process inferior-octave-buffer)) + (filter (process-filter proc))) + (cond (inferior-octave-complete-impossible + (error (concat + "Your Octave does not have `completion_matches'. " + "Please upgrade to version 2.X."))) + ((string-equal command "") + (message "Cannot complete an empty string")) + (t + (inferior-octave-send-list-and-digest + (list (concat "completion_matches (\"" command "\");\n"))) + ;; Sort the list + (setq inferior-octave-output-list + (sort inferior-octave-output-list 'string-lessp)) + ;; Remove duplicates + (let* ((x inferior-octave-output-list) + (y (cdr x))) + (while y + (if (string-equal (car x) (car y)) + (setcdr x (setq y (cdr y))) + (setq x y + y (cdr y))))) + ;; And let comint handle the rest + (comint-dynamic-simple-complete + command inferior-octave-output-list))))) + + (defun inferior-octave-dynamic-list-input-ring () + "List the buffer's input history in a help buffer" + ;; We cannot use `comint-dynamic-list-input-ring', because it replaces + ;; "completion" by "history reference" ... + (interactive) + (if (or (not (ring-p comint-input-ring)) + (ring-empty-p comint-input-ring)) + (message "No history") + (let ((history nil) + (history-buffer " *Input History*") + (index (1- (ring-length comint-input-ring))) + (conf (current-window-configuration))) + ;; We have to build up a list ourselves from the ring vector. + (while (>= index 0) + (setq history (cons (ring-ref comint-input-ring index) history) + index (1- index))) + ;; Change "completion" to "history reference" + ;; to make the display accurate. + (with-output-to-temp-buffer history-buffer + (display-completion-list history) + (set-buffer history-buffer)) + (message "Hit space to flush") + (let ((ch (read-event))) + (if (eq ch ?\ ) + (set-window-configuration conf) + (setq unread-command-events (list ch))))))) + + (defun inferior-octave-strip-ctrl-g (string) + "Strip leading `^G' character. + If STRING starts with a `^G', ring the bell and strip it." + (if (string-match "^\a" string) + (progn + (ding) + (setq string (substring string 1)))) + string) + + (defun inferior-octave-output-filter (proc string) + "Standard output filter for the inferior Octave process. + Ring Emacs bell if process output starts with an ASCII bell, and pass + the rest to `comint-output-filter'." + (comint-output-filter proc (inferior-octave-strip-ctrl-g string))) + + (defun inferior-octave-output-digest (proc string) + "Special output filter for the inferior Octave process. + Save all output between newlines into `inferior-octave-output-list', and + the rest to `inferior-octave-output-string'." + (setq string (concat inferior-octave-output-string string)) + (while (string-match "\n" string) + (setq inferior-octave-output-list + (append inferior-octave-output-list + (list (substring string 0 (match-beginning 0)))) + string (substring string (match-end 0)))) + (if (string-match inferior-octave-prompt string) + (setq inferior-octave-receive-in-progress nil)) + (setq inferior-octave-output-string string)) + + (defun inferior-octave-send-list-and-digest (list) + "Send LIST to the inferior Octave process and digest the output. + The elements of LIST have to be strings and are sent one by one. All + output is passed to the filter `inferior-octave-output-digest'." + (let* ((proc inferior-octave-process) + (filter (process-filter proc)) + string) + (set-process-filter proc 'inferior-octave-output-digest) + (setq inferior-octave-output-list nil) + (unwind-protect + (while (setq string (car list)) + (setq inferior-octave-output-string nil + inferior-octave-receive-in-progress t) + (comint-send-string proc string) + (while inferior-octave-receive-in-progress + (accept-process-output proc)) + (setq list (cdr list))) + (set-process-filter proc filter)))) + + (defun inferior-octave-directory-tracker (string) + "Tracks `cd' commands issued to the inferior Octave process. + Use \\[inferior-octave-resync-dirs] to resync if Emacs gets confused." + (if (string-match "[ \t]*cd[ \t]*\\([^ \t\n;]*\\)[ \t\n;]" + string) + (cd (substring string (match-beginning 1) (match-end 1))))) + + (defun inferior-octave-resync-dirs () + "Resync the buffer's idea of the current directory. + This command queries the inferior Octave process about its current + directory and makes this the current buffer's default directory." + (interactive) + (inferior-octave-send-list-and-digest '("pwd\n")) + (cd (car inferior-octave-output-list))) + + ;;; octave-inf.el ends here diff -cNr octave-2.0.1/emacs/octave-mod.el octave-2.0.2/emacs/octave-mod.el *** octave-2.0.1/emacs/octave-mod.el Wed Dec 31 18:00:00 1969 --- octave-2.0.2/emacs/octave-mod.el Wed Jan 22 10:09:12 1997 *************** *** 0 **** --- 1,1395 ---- + ;; octave-mod.el --- editing Octave source files under Emacs + + ;;; Copyright (C) 1997 Free Software Foundation, Inc. + + ;; Author: Kurt Hornik + ;; Author: John Eaton + ;; Maintainer: Kurt Hornik + ;; Keywords: languages + + ;; This file is part of GNU Emacs. + + ;; GNU Emacs 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 2, or (at your option) + ;; any later version. + + ;; GNU Emacs 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 GNU Emacs; see the file COPYING. If not, write to the + ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, + ;; Boston, MA 02111-1307, USA. + + ;;; Commentary: + + ;; This package provides Emacs support for Octave. + ;; It defines Octave mode, a major mode for editing + ;; Octave code. + + ;; The file octave-hlp.el provides `octave-help', a facility for looking up + ;; documentation on a symbol in the Octave info files. + + ;; The file octave-inf.el contains code for interacting with an inferior + ;; Octave process using comint. + + ;; See the documentation of `octave-mode', `octave-help' and + ;; `run-octave' for further information on usage and customization. + + ;;; Code: + + (defconst octave-maintainer-address + "Kurt Hornik , bug-gnu-emacs@prep.ai.mit.edu" + "Current maintainer of the Emacs Octave package.") + + (defvar octave-abbrev-table nil + "Abbrev table for Octave's reserved words. + Used in octave-mode and inferior-octave-mode buffers. + All Octave abbrevs start with a grave accent (`).") + (if octave-abbrev-table + () + (let ((ac abbrevs-changed)) + (define-abbrev-table 'octave-abbrev-table ()) + (define-abbrev octave-abbrev-table "`a" "all_va_args" nil) + (define-abbrev octave-abbrev-table "`b" "break" nil) + (define-abbrev octave-abbrev-table "`ca" "catch" nil) + (define-abbrev octave-abbrev-table "`c" "continue" nil) + (define-abbrev octave-abbrev-table "`el" "else" nil) + (define-abbrev octave-abbrev-table "`eli" "elseif" nil) + (define-abbrev octave-abbrev-table "`et" "end_try_catch" nil) + (define-abbrev octave-abbrev-table "`eu" "end_unwind_protect" nil) + (define-abbrev octave-abbrev-table "`ef" "endfor" nil) + (define-abbrev octave-abbrev-table "`efu" "endfunction" nil) + (define-abbrev octave-abbrev-table "`ei" "endif" nil) + (define-abbrev octave-abbrev-table "`ew" "endwhile" nil) + (define-abbrev octave-abbrev-table "`f" "for" nil) + (define-abbrev octave-abbrev-table "`fu" "function" nil) + (define-abbrev octave-abbrev-table "`gl" "global" nil) + (define-abbrev octave-abbrev-table "`gp" "gplot" nil) + (define-abbrev octave-abbrev-table "`gs" "gsplot" nil) + (define-abbrev octave-abbrev-table "`if" "if ()" nil) + (define-abbrev octave-abbrev-table "`rp" "replot" nil) + (define-abbrev octave-abbrev-table "`r" "return" nil) + (define-abbrev octave-abbrev-table "`t" "try" nil) + (define-abbrev octave-abbrev-table "`up" "unwind_protect" nil) + (define-abbrev octave-abbrev-table "`upc" "unwind_protect_cleanup" nil) + (define-abbrev octave-abbrev-table "`w" "while ()" nil) + (setq abbrevs-changed ac))) + + (defvar octave-comment-char ?# + "Character to start an Octave comment.") + (defvar octave-comment-start + (concat (make-string 1 octave-comment-char) " ") + "String to insert to start a new Octave in-line comment.") + (defvar octave-comment-start-skip "\\s<+\\s-*" + "Regexp to match the start of an Octave comment up to its body.") + + (defvar octave-begin-keywords + '("for" "function" "if" "try" "unwind_protect" "while")) + (defvar octave-else-keywords + '("catch" "else" "elseif" "unwind_protect_cleanup")) + (defvar octave-end-keywords + '("end" "endfor" "endfunction" "endif" "end_try_catch" + "end_unwind_protect" "endwhile")) + + (defvar octave-reserved-words + (append octave-begin-keywords octave-else-keywords octave-end-keywords + '("all_va_args" "break" "continue" "global" "gplot" "gsplot" + "replot" "return")) + "Reserved words in Octave.") + + (defvar octave-text-functions + '("casesen" "cd" "chdir" "clear" "diary" "dir" "document" "echo" + "edit_history" "format" "gset" "gshow" "help" "history" "hold" + "load" "ls" "more" "run_history" "save" "set" "show" "type" + "which" "who" "whos") + "Text functions in Octave (these names are also reserved).") + + (defvar octave-variables + '("EDITOR" "EXEC_PATH" "F_DUPFD" "F_GETFD" "F_GETFL" "F_SETFD" + "F_SETFL" "I" "IMAGEPATH" "INFO_FILE" "INFO_PROGRAM" "Inf" "J" + "LOADPATH" "NaN" "OCTAVE_VERSION" "O_APPEND" "O_CREAT" "O_EXCL" + "O_NONBLOCK" "O_RDONLY" "O_RDWR" "O_TRUNC" "O_WRONLY" "PAGER" "PS1" + "PS2" "PS4" "PWD" "SEEK_CUR" "SEEK_END" "SEEK_SET" "__F_DUPFD__" + "__F_GETFD__" "__F_GETFL__" "__F_SETFD__" "__F_SETFL__" "__I__" + "__Inf__" "__J__" "__NaN__" "__OCTAVE_VERSION__" "__O_APPEND__" + "__O_CREAT__" "__O_EXCL__" "__O_NONBLOCK__" "__O_RDONLY__" + "__O_RDWR__" "__O_TRUNC__" "__O_WRONLY__" "__PWD__" "__SEEK_CUR__" + "__SEEK_END__" "__SEEK_SET__" "__argv__" "__e__" "__eps__" + "__error_text__" "__i__" "__inf__" "__j__" "__nan__" "__pi__" + "__program_invocation_name__" "__program_name__" "__realmax__" + "__realmin__" "__stderr__" "__stdin__" "__stdout__" "ans" "argv" + "automatic_replot" "beep_on_error" "completion_append_char" + "default_return_value" "default_save_format" + "define_all_return_values" "do_fortran_indexing" "e" + "echo_executing_commands" "empty_list_elements_ok" "eps" + "error_text" "gnuplot_binary" "gnuplot_has_multiplot" "history_file" + "history_size" "ignore_function_time_stamp" "implicit_str_to_num_ok" + "inf" "nan" "nargin" "ok_to_lose_imaginary_part" + "output_max_field_width" "output_precision" + "page_output_immediately" "page_screen_output" "pi" + "prefer_column_vectors" "prefer_zero_one_indexing" + "print_answer_id_name" "print_empty_dimensions" + "program_invocation_name" "program_name" "propagate_empty_matrices" + "realmax" "realmin" "resize_on_range_error" + "return_last_computed_value" "save_precision" "saving_history" + "silent_functions" "split_long_rows" "stderr" "stdin" "stdout" + "string_fill_char" "struct_levels_to_print" + "suppress_verbose_help_message" "treat_neg_dim_as_zero" + "warn_assign_as_truth_value" "warn_comma_in_global_decl" + "warn_divide_by_zero" "warn_function_name_clash" + "warn_missing_semicolon" "whitespace_in_literal_matrix") + "Builtin variables in Octave.") + + (defvar octave-function-header-regexp + (concat "^\\s-*\\<\\(function\\)\\>" + "\\([^=;\n]*=[ \t]*\\|[ \t]*\\)\\(\\w+\\)\\>") + "Regexp to match an Octave function header. + The string `function' and its name are given by the first and third + parenthetical grouping.") + + (defvar octave-font-lock-keywords + (list + ;; Fontify all builtin keywords. + (cons (concat "\\<\\(" + (mapconcat 'identity octave-reserved-words "\\|") + (mapconcat 'identity octave-text-functions "\\|") + "\\)\\>") + 'font-lock-keyword-face) + ;; Fontify all builtin operators. + (cons "\\(&\\||\\|<=\\|>=\\|==\\|<\\|>\\|!=\\|!\\)" + 'font-lock-reference-face) + ;; Fontify all builtin variables. + (cons (concat "\\<\\(" + (mapconcat 'identity octave-variables "\\|") + "\\)\\>") + 'font-lock-variable-name-face) + ;; Fontify all function declarations. + (list octave-function-header-regexp + '(1 font-lock-keyword-face) + '(3 font-lock-function-name-face nil t))) + "Additional Octave expressions to highlight.") + + (defvar inferior-octave-buffer "*Inferior Octave*" + "*Name of buffer for running an inferior Octave process.") + + (defvar inferior-octave-process nil) + + (defvar octave-mode-map nil + "Keymap used in Octave mode.") + (if octave-mode-map + () + (let ((map (make-sparse-keymap))) + (define-key map "`" 'octave-abbrev-start) + (define-key map ";" 'octave-electric-semi) + (define-key map " " 'octave-electric-space) + (define-key map "\n" 'octave-reindent-then-newline-and-indent) + (define-key map "\t" 'indent-according-to-mode) + (define-key map "\e;" 'octave-indent-for-comment) + (define-key map "\e\n" 'octave-indent-new-comment-line) + (define-key map "\e\t" 'octave-complete-symbol) + (define-key map "\M-\C-a" 'octave-beginning-of-defun) + (define-key map "\M-\C-e" 'octave-end-of-defun) + (define-key map "\M-\C-h" 'octave-mark-defun) + (define-key map "\M-\C-q" 'octave-indent-defun) + (define-key map "\C-c;" 'octave-comment-region) + (define-key map "\C-c:" 'octave-uncomment-region) + (define-key map "\C-c\C-b" 'octave-submit-bug-report) + (define-key map "\C-c\C-p" 'octave-previous-code-line) + (define-key map "\C-c\C-n" 'octave-next-code-line) + (define-key map "\C-c\C-a" 'octave-beginning-of-line) + (define-key map "\C-c\C-e" 'octave-end-of-line) + (define-key map "\C-c\M-\C-n" 'octave-forward-block) + (define-key map "\C-c\M-\C-p" 'octave-backward-block) + (define-key map "\C-c\M-\C-u" 'octave-backward-up-block) + (define-key map "\C-c\M-\C-d" 'octave-down-block) + (define-key map "\C-c\M-\C-h" 'octave-mark-block) + (define-key map "\C-c]" 'octave-close-block) + (define-key map "\C-cf" 'octave-insert-defun) + (define-key map "\C-c\C-h" 'octave-help) + (define-key map "\C-cil" 'octave-send-line) + (define-key map "\C-cib" 'octave-send-block) + (define-key map "\C-cif" 'octave-send-defun) + (define-key map "\C-cir" 'octave-send-region) + (define-key map "\C-cis" 'octave-show-process-buffer) + (define-key map "\C-cih" 'octave-hide-process-buffer) + (define-key map "\C-cik" 'octave-kill-process) + (setq octave-mode-map map))) + + (defvar octave-mode-menu + (list "Octave" + (list "Lines" + ["Previous Code Line" octave-previous-code-line t] + ["Next Code Line" octave-next-code-line t] + ["Begin of Continuation" octave-beginning-of-line t] + ["End of Continuation" octave-end-of-line t] + ["Split Line at Point" octave-indent-new-comment-line t]) + (list "Blocks" + ["Next Block" octave-forward-block t] + ["Previous Block" octave-backward-block t] + ["Down Block" octave-down-block t] + ["Up Block" octave-backward-up-block t] + ["Mark Block" octave-mark-block t] + ["Close Block" octave-close-block t]) + (list "Functions" + ["Begin of Function" octave-beginning-of-defun t] + ["End of Function" octave-end-of-defun t] + ["Mark Function" octave-mark-defun t] + ["Indent Function" octave-indent-defun t] + ["Insert Function" octave-insert-defun t]) + "-" + (list "Debug" + ["Send Current Line" octave-send-line t] + ["Send Current Block" octave-send-block t] + ["Send Current Function" octave-send-defun t] + ["Send Region" octave-send-region t] + ["Show Process Buffer" octave-show-process-buffer t] + ["Hide Process Buffer" octave-hide-process-buffer t] + ["Kill Process" octave-kill-process t]) + "-" + ["Indent Line" indent-according-to-mode t] + ["Complete Symbol" octave-complete-symbol t] + "-" + ["Toggle Abbrev Mode" abbrev-mode t] + ["Toggle Auto-Fill Mode" auto-fill-mode t] + "-" + ["Submit Bug Report" octave-submit-bug-report t] + "-" + ["Describe Octave Mode" octave-describe-major-mode t] + ["Lookup Octave Index" octave-help t]) + "Menu for Octave mode.") + + (defvar octave-mode-syntax-table nil + "Syntax table in use in octave-mode buffers.") + (if octave-mode-syntax-table + () + (let ((table (make-syntax-table))) + (modify-syntax-entry ?\r " " table) + (modify-syntax-entry ?+ "." table) + (modify-syntax-entry ?- "." table) + (modify-syntax-entry ?= "." table) + (modify-syntax-entry ?* "." table) + (modify-syntax-entry ?/ "." table) + (modify-syntax-entry ?> "." table) + (modify-syntax-entry ?< "." table) + (modify-syntax-entry ?& "." table) + (modify-syntax-entry ?| "." table) + (modify-syntax-entry ?! "." table) + (modify-syntax-entry ?\\ "\\" table) + (modify-syntax-entry ?\' "." table) + (modify-syntax-entry ?\` "w" table) + (modify-syntax-entry ?\" "\"" table) + (modify-syntax-entry ?. "w" table) + (modify-syntax-entry ?_ "w" table) + (modify-syntax-entry ?\% "." table) + (modify-syntax-entry ?\# "<" table) + (modify-syntax-entry ?\n ">" table) + (setq octave-mode-syntax-table table))) + + (defvar octave-auto-newline nil + "*Non-nil means automatically newline after a semicolon in Octave mode.") + + (defvar octave-blink-matching-block t + "*Control the blinking of matching Octave block keywords. + Non-nil means show matching begin of block when inserting a space, + newline or semicolon after an else or end keyword.") + (defvar octave-block-offset 2 + "*Extra indentation applied to statements in Octave block structures.") + + (defvar octave-block-begin-regexp + (concat "\\<\\(" + (mapconcat 'identity octave-begin-keywords "\\|") + "\\)\\>")) + (defvar octave-block-else-regexp + (concat "\\<\\(" + (mapconcat 'identity octave-else-keywords "\\|") + "\\)\\>")) + (defvar octave-block-end-regexp + (concat "\\<\\(" + (mapconcat 'identity octave-end-keywords "\\|") + "\\)\\>")) + (defvar octave-block-begin-or-end-regexp + (concat octave-block-begin-regexp "\\|" octave-block-end-regexp)) + (defvar octave-block-else-or-end-regexp + (concat octave-block-else-regexp "\\|" octave-block-end-regexp)) + (defvar octave-block-match-alist + '(("for" . ("end" "endfor")) + ("function" . ("end" "endfunction")) + ("if" . ("else" "elseif" "end" "endif")) + ("try" . ("catch" "end" "end_try_catch")) + ("unwind_protect" . ("unwind_protect_cleanup" "end" + "end_unwind_protect")) + ("while" . ("end" "endwhile"))) + "Alist with Octave's matching block keywords. + Has Octave's begin keywords as keys and a list of the matching else or + end keywords as associated values.") + + (defvar octave-block-comment-start + (concat (make-string 2 octave-comment-char) " ") + "String to insert to start a new Octave comment on an empty line.") + + (defvar octave-continuation-offset 4 + "*Extra indentation applied to Octave continuation lines.") + (defvar octave-continuation-regexp + "[^#%\n]*\\(\\\\\\|\\.\\.\\.\\)\\s-*\\(\\s<.*\\)?$") + (defvar octave-continuation-string "\\" + "*Character string used for Octave continuation lines. Normally \\.") + + (defvar octave-completion-alist nil + "Alist of Octave symbols for completion in Octave mode. + Each element looks like (VAR . VAR), where the car and cdr are the same + symbol (an Octave command or variable name). + Currently, only builtin variables can be completed.") + + (defvar octave-mode-imenu-generic-expression + (list + ;; Functions + (list nil octave-function-header-regexp 3)) + "Imenu expression for Octave mode. See `imenu-generic-expression'.") + + (defvar octave-mode-startup-message t + "*Nil means do not display the Octave mode startup message.") + + (defvar octave-mode-hook nil + "*Hook to be run when Octave mode is started.") + + (defvar octave-send-show-buffer t + "*Non-nil means display `inferior-octave-buffer' after sending to it.") + (defvar octave-send-line-auto-forward t + "*Control auto-forward after sending to the inferior Octave process. + Non-nil means always go to the next Octave code line after sending.") + (defvar octave-send-echo-input t + "*Non-nil means echo input sent to the inferior Octave process.") + + + ;;;###autoload + (defun octave-mode () + "Major mode for editing Octave code. + + This mode makes it easier to write Octave code by helping with + indentation, doing some of the typing for you (with Abbrev mode) and by + showing keywords, comments, strings, etc. in different faces (with + Font Lock mode on terminals that support it). + + Octave itself is a high-level language, primarily intended for numerical + computations. It provides a convenient command line interface for + solving linear and nonlinear problems numerically. Function definitions + can also be stored in files, and it can be used in a batch mode (which + is why you need this mode!). + + The latest released version of Octave is always available via anonymous + ftp from bevo.che.wisc.edu in the directory `/pub/octave'. Complete + source and binaries for several popular systems are available. + + Type \\[list-abbrevs] to display the built-in abbrevs for Octave keywords. + + Keybindings + =========== + + \\{octave-mode-map} + + Variables you can use to customize Octave mode + ============================================== + + octave-auto-newline + Non-nil means auto-insert a newline and indent after a semicolon. + Default is nil. + + octave-blink-matching-block + Non-nil means show matching begin of block when inserting a space, + newline or semicolon after an else or end keyword. Default is t. + + octave-block-offset + Extra indentation applied to statements in block structures. + Default is 2. + + octave-continuation-offset + Extra indentation applied to Octave continuation lines. + Default is 4. + + octave-continuation-string + String used for Octave continuation lines. + Default is a backslash. + + octave-mode-startup-message + Nil means do not display the Octave mode startup message. + Default is t. + + octave-send-echo-input + Non-nil means always display `inferior-octave-buffer' after sending a + command to the inferior Octave process. + + octave-send-line-auto-forward + Non-nil means always go to the next unsent line of Octave code after + sending a line to the inferior Octave process. + + octave-send-echo-input + Non-nil means echo input sent to the inferior Octave process. + + Turning on Octave mode runs the hook `octave-mode-hook'. + + To begin using this mode for all `.m' files that you edit, add the + following lines to your `.emacs' file: + + (autoload 'octave-mode \"octave-mod\" nil t) + (setq auto-mode-alist + (cons '(\"\\\\.m$\" . octave-mode) auto-mode-alist)) + + To automatically turn on the abbrev, auto-fill and font-lock features, + add the following lines to your `.emacs' file as well: + + (add-hook 'octave-mode-hook + (lambda () + (abbrev-mode 1) + (auto-fill-mode 1) + (if (eq window-system 'x) + (font-lock-mode 1)))) + + To submit a problem report, enter \\[octave-submit-bug-report] from \ + an Octave mode buffer. + This automatically sets up a mail buffer with version information + already added. You just need to add a description of the problem, + including a reproducible test case and send the message." + (interactive) + (kill-all-local-variables) + + (use-local-map octave-mode-map) + (setq major-mode 'octave-mode) + (setq mode-name "Octave") + (setq local-abbrev-table octave-abbrev-table) + (set-syntax-table octave-mode-syntax-table) + + (make-local-variable 'indent-line-function) + (setq indent-line-function 'octave-indent-line) + + (make-local-variable 'comment-start) + (setq comment-start octave-comment-start) + (make-local-variable 'comment-end) + (setq comment-end "") + (make-local-variable 'comment-column) + (setq comment-column 32) + (make-local-variable 'comment-start-skip) + (setq comment-start-skip "\\s<+\\s-*") + (make-local-variable 'comment-indent-function) + (setq comment-indent-function 'octave-comment-indent) + + (make-local-variable 'parse-sexp-ignore-comments) + (setq parse-sexp-ignore-comments t) + (make-local-variable 'paragraph-start) + (setq paragraph-start (concat "\\s-*$\\|" page-delimiter)) + (make-local-variable 'paragraph-separate) + (setq paragraph-separate paragraph-start) + (make-local-variable 'paragraph-ignore-fill-prefix) + (setq paragraph-ignore-fill-prefix t) + (make-local-variable 'fill-paragraph-function) + (setq fill-paragraph-function 'octave-fill-paragraph) + (make-local-variable 'adaptive-fill-regexp) + (setq adaptive-fill-regexp nil) + (make-local-variable 'fill-column) + (setq fill-column 72) + (make-local-variable 'normal-auto-fill-function) + (setq normal-auto-fill-function 'octave-auto-fill) + + (make-local-variable 'font-lock-defaults) + (setq font-lock-defaults '(octave-font-lock-keywords nil nil)) + + (make-local-variable 'imenu-generic-expression) + (setq imenu-generic-expression octave-mode-imenu-generic-expression) + + (octave-add-octave-menu) + (octave-initialize-completions) + (run-hooks 'octave-mode-hook)) + + ;;; Miscellaneous useful functions + (defun octave-describe-major-mode () + "Describe the current major mode." + (interactive) + (describe-function major-mode)) + + (defun octave-point (position) + "Returns the value of point at certain positions." + (save-excursion + (cond + ((eq position 'bol) (beginning-of-line)) + ((eq position 'eol) (end-of-line)) + ((eq position 'boi) (back-to-indentation)) + ((eq position 'bonl) (forward-line 1)) + ((eq position 'bopl) (forward-line -1)) + (t (error "unknown buffer position requested: %s" position))) + (point))) + + (defsubst octave-in-comment-p () + "Returns t if point is inside an Octave comment, nil otherwise." + (interactive) + (save-excursion + (nth 4 (parse-partial-sexp (octave-point 'bol) (point))))) + + (defsubst octave-in-string-p () + "Returns t if point is inside an Octave string, nil otherwise." + (interactive) + (save-excursion + (nth 3 (parse-partial-sexp (octave-point 'bol) (point))))) + + (defsubst octave-not-in-string-or-comment-p () + "Returns t iff point is not inside an Octave string or comment." + (let ((pps (parse-partial-sexp (octave-point 'bol) (point)))) + (not (or (nth 3 pps) (nth 4 pps))))) + + (defun octave-in-block-p () + "Returns t if point is inside an Octave block, nil otherwise. + The block is taken to start at the first letter of the begin keyword and + to end after the end keyword." + (let ((pos (point))) + (save-excursion + (condition-case nil + (progn + (skip-syntax-forward "w") + (octave-up-block -1) + (octave-forward-block) + t) + (error nil)) + (< pos (point))))) + + (defun octave-in-defun-p () + "Returns t iff point is inside an Octave function declaration. + The function is taken to start at the `f' of `function' and to end after + the end keyword." + (let ((pos (point))) + (save-excursion + (or (and (looking-at "\\") + (octave-not-in-string-or-comment-p)) + (and (octave-beginning-of-defun) + (condition-case nil + (progn + (octave-forward-block) + t) + (error nil)) + (< pos (point))))))) + + ;;; Comments + (defun octave-comment-region (beg end &optional arg) + "Comment or uncomment each line in the region as Octave code. + See `comment-region'." + (interactive "r\nP") + (let ((comment-start (char-to-string octave-comment-char))) + (comment-region beg end arg))) + + (defun octave-uncomment-region (beg end &optional arg) + "Uncomment each line in the region as Octave code." + (interactive "r\nP") + (or arg (setq arg 1)) + (octave-comment-region beg end (- arg))) + + + ;;; Indentation + (defun calculate-octave-indent () + "Return appropriate indentation for current line as Octave code. + Returns an integer (the column to indent to) unless the line is a + comment line with fixed goal golumn. In that case, returns a list whose + car is the column to indent to, and whose cdr is the current indentation + level." + (let ((is-continuation-line + (save-excursion + (if (zerop (octave-previous-code-line)) + (looking-at octave-continuation-regexp)))) + (icol 0)) + (save-excursion + (beginning-of-line) + ;; If we can move backward out one level of parentheses, take 1 + ;; plus the indentation of that parenthesis. Otherwise, go back + ;; to the beginning of the previous code line, and compute the + ;; offset this line gives. + (if (condition-case nil + (progn + (up-list -1) + t) + (error nil)) + (setq icol (+ 1 (current-column))) + (if (zerop (octave-previous-code-line)) + (progn + (octave-beginning-of-line) + (back-to-indentation) + (setq icol (current-column)) + (let ((bot (point)) + (eol (octave-point 'eol))) + (while (< (point) eol) + (if (octave-not-in-string-or-comment-p) + (cond + ((looking-at octave-block-begin-regexp) + (setq icol (+ icol octave-block-offset))) + ((looking-at octave-block-else-regexp) + (if (= bot (point)) + (setq icol (+ icol octave-block-offset)))) + ((looking-at octave-block-end-regexp) + (if (not (= bot (point))) + (setq icol (- icol octave-block-offset)))))) + (forward-char))) + (if is-continuation-line + (setq icol (+ icol octave-continuation-offset))))))) + (save-excursion + (back-to-indentation) + (cond + ((and (or (looking-at octave-block-else-regexp) + (looking-at octave-block-end-regexp)) + (octave-not-in-string-or-comment-p)) + (setq icol (- icol octave-block-offset))) + ((looking-at "\\s<\\s<\\s<\\S<") + (setq icol (list 0 icol))) + ((looking-at "\\s<\\S<") + (setq icol (list comment-column icol))))) + icol)) + + (defun octave-comment-indent () + (if (looking-at "\\s<\\s<\\s<") + 0 + (if (looking-at "\\s<\\s<") + (calculate-octave-indent) + (skip-syntax-backward " ") + (max (if (bolp) 0 (+ (current-column))) + comment-column)))) + + (defun octave-indent-for-comment () + "Maybe insert and indent an Octave comment. + If there is no comment already on this line, create a code-level comment + (started by two comment characters) if the line is empty, or an in-line + comment (started by one comment character) otherwise. + Point is left after the start of the comment which is properly aligned." + (interactive) + (indent-for-comment) + (indent-according-to-mode)) + + (defun octave-indent-line (&optional arg) + "Indent current line as Octave code. + With optional ARG, use this as offset unless this line is a comment with + fixed goal column." + (interactive) + (or arg (setq arg 0)) + (let ((icol (calculate-octave-indent)) + (relpos (- (current-column) (current-indentation)))) + (if (listp icol) + (setq icol (car icol)) + (setq icol (+ icol arg))) + (if (< icol 0) + (error "Unmatched end keyword") + (indent-line-to icol) + (if (> relpos 0) + (move-to-column (+ icol relpos)))))) + + (defun octave-indent-new-comment-line () + "Break Octave line at point, continuing comment if within one. + If within code, insert `octave-continuation-string' before breaking the + line. If within a string, signal an error. + The new line is properly indented." + (interactive) + (delete-horizontal-space) + (cond + ((octave-in-comment-p) + (indent-new-comment-line)) + ((octave-in-string-p) + (error "Cannot split a code line inside a string")) + (t + (insert (concat " " octave-continuation-string)) + (octave-reindent-then-newline-and-indent)))) + + (defun octave-indent-defun () + "Properly indents the Octave function which contains point." + (interactive) + (save-excursion + (octave-mark-defun) + (message "Indenting function...") + (indent-region (point) (mark) nil)) + (message "Indenting function...done.")) + + + ;;; Motion + (defun octave-next-code-line (&optional arg) + "Move ARG lines of Octave code forward (backward if ARG is negative). + Skips past all empty and comment lines. Default for ARG is 1. + + On success, return 0. Otherwise, go as far as possible and return -1." + (interactive "p") + (or arg (setq arg 1)) + (beginning-of-line) + (let ((n 0) + (inc (if (> arg 0) 1 -1))) + (while (and (/= arg 0) (= n 0)) + (setq n (forward-line inc)) + (while (and (= n 0) + (looking-at "\\s-*\\($\\|\\s<\\)")) + (setq n (forward-line inc))) + (setq arg (- arg inc))) + n)) + + (defun octave-previous-code-line (&optional arg) + "Move ARG lines of Octave code backward (forward if ARG is negative). + Skips past all empty and comment lines. Default for ARG is 1. + + On success, return 0. Otherwise, go as far as possible and return -1." + (interactive "p") + (or arg (setq arg 1)) + (octave-next-code-line (- arg))) + + (defun octave-beginning-of-line () + "Move point to beginning of current Octave line. + If on an empty or comment line, go to the beginning of that line. + Otherwise, move backward to the beginning of the first Octave code line + which is not inside a continuation statement, i.e., which does not + follow a code line ending in `...' or `\\', or is inside an open + parenthesis list." + (interactive) + (beginning-of-line) + (if (not (looking-at "\\s-*\\($\\|\\s<\\)")) + (while (or (condition-case nil + (progn + (up-list -1) + (beginning-of-line) + t) + (error nil)) + (and (or (looking-at "\\s-*\\($\\|\\s<\\)") + (save-excursion + (if (zerop (octave-previous-code-line)) + (looking-at octave-continuation-regexp)))) + (zerop (forward-line -1))))))) + + (defun octave-end-of-line () + "Move point to end of current Octave line. + If on an empty or comment line, go to the end of that line. + Otherwise, move forward to the end of the first Octave code line which + does not end in `...' or `\\' or is inside an open parenthesis list." + (interactive) + (end-of-line) + (if (save-excursion + (beginning-of-line) + (looking-at "\\s-*\\($\\|\\s<\\)")) + () + (while (or (condition-case nil + (progn + (up-list 1) + (end-of-line) + t) + (error nil)) + (and (save-excursion + (beginning-of-line) + (or (looking-at "\\s-*\\($\\|\\s<\\)") + (looking-at octave-continuation-regexp))) + (zerop (forward-line 1))))) + (end-of-line))) + + (defun octave-scan-blocks (from count depth) + "Scan from character number FROM by COUNT Octave begin-end blocks. + Returns the character number of the position thus found. + + If DEPTH is nonzero, block depth begins counting from that value. + Only places where the depth in blocks becomes zero are candidates for + stopping; COUNT such places are counted. + + If the beginning or end of the buffer is reached and the depth is wrong, + an error is signaled." + (let ((min-depth (if (> depth 0) 0 depth)) + (inc (if (> count 0) 1 -1))) + (save-excursion + (while (/= count 0) + (catch 'foo + (while (or (re-search-forward + octave-block-begin-or-end-regexp nil 'move inc) + (if (/= depth 0) + (error "Unbalanced block"))) + (if (octave-not-in-string-or-comment-p) + (progn + (cond + ((match-end 1) + (setq depth (+ depth inc))) + ((match-end 2) + (setq depth (- depth inc)))) + (if (< depth min-depth) + (error "Containing expression ends prematurely")) + (if (= depth 0) + (throw 'foo nil)))))) + (setq count (- count inc))) + (point)))) + + (defun octave-forward-block (&optional arg) + "Move forward across one balanced Octave begin-end block. + With argument, do it that many times. + Negative arg -N means move backward across N blocks." + (interactive "p") + (or arg (setq arg 1)) + (goto-char (or (octave-scan-blocks (point) arg 0) (buffer-end arg)))) + + (defun octave-backward-block (&optional arg) + "Move backward across one balanced Octave begin-end block. + With argument, do it that many times. + Negative arg -N means move forward across N blocks." + (interactive "p") + (or arg (setq arg 1)) + (octave-forward-block (- arg))) + + (defun octave-down-block (arg) + "Move forward down one begin-end block level of Octave code. + With argument, do this that many times. + A negative argument means move backward but still go down a level. + In Lisp programs, an argument is required." + (interactive "p") + (let ((inc (if (> arg 0) 1 -1))) + (while (/= arg 0) + (goto-char (or (octave-scan-blocks (point) inc -1) + (buffer-end arg))) + (setq arg (- arg inc))))) + + (defun octave-backward-up-block (arg) + "Move backward out of one begin-end block level of Octave code. + With argument, do this that many times. + A negative argument means move forward but still to a less deep spot. + In Lisp programs, an argument is required." + (interactive "p") + (octave-up-block (- arg))) + + (defun octave-up-block (arg) + "Move forward out of one begin-end block level of Octave code. + With argument, do this that many times. + A negative argument means move backward but still to a less deep spot. + In Lisp programs, an argument is required." + (interactive "p") + (let ((inc (if (> arg 0) 1 -1))) + (while (/= arg 0) + (goto-char (or (octave-scan-blocks (point) inc 1) + (buffer-end arg))) + (setq arg (- arg inc))))) + + (defun octave-mark-block () + "Put point at the beginning of this Octave block, mark at the end. + The block marked is the one that contains point or follows point." + (interactive) + (let ((pos (point))) + (if (or (and (octave-in-block-p) + (skip-syntax-forward "w")) + (condition-case nil + (progn + (octave-down-block 1) + (octave-in-block-p)) + (error nil))) + (progn + (octave-up-block -1) + (push-mark (point)) + (octave-forward-block) + (exchange-point-and-mark)) + (goto-char pos) + (message "No block to mark found")))) + + (defun octave-close-block () + "Close the current Octave block on a separate line. + An error is signaled if no block to close is found." + (interactive) + (let (bb-keyword) + (condition-case nil + (progn + (save-excursion + (octave-backward-up-block 1) + (setq bb-keyword (buffer-substring-no-properties + (match-beginning 1) (match-end 1)))) + (if (save-excursion + (beginning-of-line) + (looking-at "^\\s-*$")) + (indent-according-to-mode) + (octave-reindent-then-newline-and-indent)) + (insert (car (reverse + (assoc bb-keyword + octave-block-match-alist)))) + (octave-reindent-then-newline-and-indent) + t) + (error (message "No block to close found"))))) + + (defun octave-blink-matching-block-open () + "Blink the matching Octave begin block keyword. + If point is right after an Octave else or end type block keyword, move + cursor momentarily to the corresponding begin keyword. + Signal an error if the keywords are incompatible." + (interactive) + (let (bb-keyword bb-arg eb-keyword pos eol) + (if (and (octave-not-in-string-or-comment-p) + (looking-at "\\>") + (save-excursion + (skip-syntax-backward "w") + (looking-at octave-block-else-or-end-regexp))) + (save-excursion + (cond + ((match-end 1) + (setq eb-keyword + (buffer-substring-no-properties + (match-beginning 1) (match-end 1))) + (octave-backward-up-block 1)) + ((match-end 2) + (setq eb-keyword + (buffer-substring-no-properties + (match-beginning 2) (match-end 2))) + (octave-backward-block))) + (setq pos (match-end 0) + bb-keyword + (buffer-substring-no-properties + (match-beginning 0) pos) + pos (+ pos 1) + eol (octave-point 'eol) + bb-arg + (save-excursion + (save-restriction + (goto-char pos) + (while (and (skip-syntax-forward "^<" eol) + (octave-in-string-p) + (not (forward-char 1)))) + (skip-syntax-backward " ") + (buffer-substring-no-properties pos (point))))) + (if (member eb-keyword + (cdr (assoc bb-keyword octave-block-match-alist))) + (progn + (message "Matches `%s %s'" bb-keyword bb-arg) + (if (pos-visible-in-window-p) + (sit-for blink-matching-delay))) + (error "Block keywords `%s' and `%s' do not match" + bb-keyword eb-keyword)))))) + + (defun octave-beginning-of-defun (&optional arg) + "Move backward to the beginning of an Octave function. + With positive ARG, do it that many times. Negative argument -N means + move forward to Nth following beginning of a function. + Returns t unless search stops at the beginning or end of the buffer." + (interactive "p") + (let* ((arg (or arg 1)) + (inc (if (> arg 0) 1 -1)) + (found)) + (and (not (eobp)) + (not (and (> arg 0) (looking-at "\\"))) + (skip-syntax-forward "w")) + (while (and (/= arg 0) + (setq found + (re-search-backward "\\" nil 'move inc))) + (if (octave-not-in-string-or-comment-p) + (setq arg (- arg inc)))) + (if found + (progn + (and (< inc 0) (goto-char (match-beginning 0))) + t)))) + + (defun octave-end-of-defun (&optional arg) + "Move forward to the end of an Octave function. + With positive ARG, do it that many times. Negative argument -N means + move back to Nth preceding end of a function. + + An end of a function occurs right after the end keyword matching the + `function' keyword that starts the function." + (interactive "p") + (or arg (setq arg 1)) + (and (< arg 0) (skip-syntax-backward "w")) + (and (> arg 0) (skip-syntax-forward "w")) + (if (octave-in-defun-p) + (setq arg (- arg 1))) + (if (= arg 0) (setq arg -1)) + (if (octave-beginning-of-defun (- arg)) + (octave-forward-block))) + + (defun octave-mark-defun () + "Put point at the beginning of this Octave function, mark at its end. + The function marked is the one containing point or following point." + (interactive) + (let ((pos (point))) + (if (or (octave-in-defun-p) + (and (octave-beginning-of-defun -1) + (octave-in-defun-p))) + (progn + (skip-syntax-forward "w") + (octave-beginning-of-defun) + (push-mark (point)) + (octave-end-of-defun) + (exchange-point-and-mark)) + (goto-char pos) + (message "No function to mark found")))) + + + ;;; Filling + (defun octave-auto-fill () + "Perform auto-fill in Octave mode." + (if (> (current-column) (current-fill-column)) + (if (octave-in-comment-p) + (do-auto-fill) + (if (> (current-column) (current-fill-column)) + (let ((fill-column (- (current-fill-column) + (length octave-continuation-string)))) + (do-auto-fill) + (save-excursion + (forward-line -1) + (end-of-line) + (insert (concat " " octave-continuation-string))) + (indent-according-to-mode)))))) + + (defun octave-fill-paragraph (&optional arg) + "Fill paragraph of Octave code, handling Octave comments." + (interactive "P") + (save-excursion + (let ((end (progn (forward-paragraph) (point))) + (beg (progn + (forward-paragraph -1) + (skip-chars-forward " \t\n") + (beginning-of-line) + (point))) + (cfc (current-fill-column)) + (ind (calculate-octave-indent)) + comment-prefix) + (save-restriction + (goto-char beg) + (narrow-to-region beg end) + (if (listp ind) (setq ind (nth 1 ind))) + (while (not (eobp)) + (condition-case nil + (octave-indent-line ind) + (error nil)) + (if (and (> ind 0) + (not + (save-excursion + (beginning-of-line) + (looking-at "^\\s-*\\($\\|\\s<+\\)")))) + (setq ind 0)) + (move-to-column cfc) + ;; First check whether we need to combine non-empty comment lines + (if (and (< (current-column) cfc) + (octave-in-comment-p) + (not (save-excursion + (beginning-of-line) + (looking-at "^\\s-*\\s<+\\s-*$")))) + ;; This is a nonempty comment line which does not extend + ;; past the fill column. If it is followed by an nonempty + ;; comment line with the same comment prefix, try to + ;; combine them, and repeat this until either we reach the + ;; fill-column or there is nothing more to combine. + (progn + ;; Get the comment prefix + (save-excursion + (beginning-of-line) + (while (and (re-search-forward "\\s<+") + (not (octave-in-comment-p)))) + (setq comment-prefix (match-string 0))) + ;; And keep combining ... + (while (and (< (current-column) cfc) + (save-excursion + (forward-line 1) + (and (looking-at + (concat "^\\s-*" + comment-prefix + "\\S<")) + (not (looking-at + (concat "^\\s-*" + comment-prefix + "\\s-*$")))))) + (delete-char 1) + (re-search-forward comment-prefix) + (delete-region (match-beginning 0) (match-end 0)) + (fixup-whitespace) + (move-to-column cfc)))) + (skip-chars-forward "^ \t\n") + (delete-horizontal-space) + (if (or (< (current-column) cfc) + (and (= (current-column) cfc) (eolp))) + (forward-line 1) + (if (not (eolp)) (insert " ")) + (octave-auto-fill)))) + t))) + + + ;;; Completions + (defun octave-initialize-completions () + "Create an alist for Octave completions." + (if octave-completion-alist + () + (setq octave-completion-alist + (mapcar '(lambda (var) (cons var var)) + (append octave-reserved-words + octave-text-functions + octave-variables))))) + + (defun octave-complete-symbol () + "Perform completion on Octave symbol preceding point. + Compare that symbol against Octave's reserved words and builtin + variables." + ;; This code taken from lisp-complete-symbol + (interactive) + (let* ((end (point)) + (beg (save-excursion (backward-sexp 1) (point))) + (string (buffer-substring-no-properties beg end)) + (completion (try-completion string octave-completion-alist))) + (cond ((eq completion t)) ; ??? + ((null completion) + (message "Can't find completion for \"%s\"" string) + (ding)) + ((not (string= string completion)) + (delete-region beg end) + (insert completion)) + (t + (let ((list (all-completions string octave-completion-alist)) + (conf (current-window-configuration))) + ;; Taken from comint.el + (message "Making completion list...") + (with-output-to-temp-buffer "*Completions*" + (display-completion-list list)) + (message "Hit space to flush") + (let (key first) + (if (save-excursion + (set-buffer (get-buffer "*Completions*")) + (setq key (read-key-sequence nil) + first (aref key 0)) + (and (consp first) (consp (event-start first)) + (eq (window-buffer (posn-window (event-start + first))) + (get-buffer "*Completions*")) + (eq (key-binding key) 'mouse-choose-completion))) + (progn + (mouse-choose-completion first) + (set-window-configuration conf)) + (if (eq first ?\ ) + (set-window-configuration conf) + (setq unread-command-events + (listify-key-sequence key)))))))))) + + + ;;; Electric characters && friends + (defun octave-reindent-then-newline-and-indent () + "Reindent current Octave line, insert newline, and indent the new line. + If Abbrev mode is on, expand abbrevs first." + (interactive) + (if abbrev-mode (expand-abbrev)) + (if octave-blink-matching-block + (octave-blink-matching-block-open)) + (save-excursion + (delete-region (point) (progn (skip-chars-backward " \t") (point))) + (indent-according-to-mode)) + (insert "\n") + (indent-according-to-mode)) + + (defun octave-electric-semi () + "Insert a semicolon in Octave mode. + Always reindent the line. Insert a newline if `octave-auto-newline' is + non-nil." + (interactive) + (if (not (octave-not-in-string-or-comment-p)) + (insert ";") + (if abbrev-mode (expand-abbrev)) + (if octave-blink-matching-block + (octave-blink-matching-block-open)) + (indent-according-to-mode) + (insert ";") + (if octave-auto-newline + (newline-and-indent)))) + + (defun octave-electric-space () + "Insert a space in Octave mode. + Maybe expand abbrevs and blink matching block open keywords." + (interactive) + (setq last-command-char ? ) + (if (not (octave-not-in-string-or-comment-p)) + (progn + (indent-according-to-mode) + (self-insert-command 1)) + (if abbrev-mode (expand-abbrev)) + (if octave-blink-matching-block + (octave-blink-matching-block-open)) + (if (save-excursion + (skip-syntax-backward " ") + (not (bolp))) + (indent-according-to-mode)) + (self-insert-command 1))) + + (defun octave-abbrev-start () + "Start entering an Octave abbreviation. + If Abbrev mode is turned on, typing ` (grave accent) followed by ? or + \\[help-command] lists all Octave abbrevs. Any other key combination is + executed normally. + Note that all Octave mode abbrevs start with a grave accent." + (interactive) + (if (not abbrev-mode) + (self-insert-command 1) + (let (c) + (insert last-command-char) + (if (or (eq (setq c (read-event)) ??) + (eq c help-char)) + (let ((abbrev-table-name-list '(octave-mode-abbrev-table))) + (list-abbrevs)) + (setq unread-command-events (list c)))))) + + (defun octave-insert-defun (name args vals) + "Insert an Octave function skeleton. + Prompt for the function's name, arguments and return values (to be + entered without parens)." + (interactive + (list + (read-from-minibuffer "Function name: " + (substring (buffer-name) 0 -2)) + (read-from-minibuffer "Arguments: ") + (read-from-minibuffer "Return values: "))) + (let ((string (format "%s %s (%s)" + (cond + ((string-equal vals "") + vals) + ((string-match "[ ,]" vals) + (concat " [" vals "] =")) + (t + (concat " " vals " ="))) + name + args)) + (prefix octave-block-comment-start)) + (if (not (bobp)) (newline)) + (insert "function" string) + (indent-according-to-mode) + (newline 2) + (insert prefix "usage: " string) + (reindent-then-newline-and-indent) + (insert prefix) + (reindent-then-newline-and-indent) + (insert prefix) + (indent-according-to-mode) + (save-excursion + (newline 2) + (insert "endfunction") + (indent-according-to-mode)))) + + + ;;; Menu + (defun octave-add-octave-menu () + "Adds the `Octave' menu to the menu bar in Octave mode." + (require 'easymenu) + (easy-menu-define octave-mode-menu-map octave-mode-map + "Menu keymap for Octave mode." octave-mode-menu) + (easy-menu-add octave-mode-menu-map octave-mode-map)) + + + ;;; Communication with the inferior Octave process + (defun octave-kill-process () + "Kill inferior Octave process and its buffer." + (interactive) + (if inferior-octave-process + (progn + (process-send-string inferior-octave-process "quit;\n") + (accept-process-output inferior-octave-process))) + (if inferior-octave-buffer + (kill-buffer inferior-octave-buffer))) + + (defun octave-show-process-buffer () + "Make sure that `inferior-octave-buffer' is displayed." + (interactive) + (if (get-buffer inferior-octave-buffer) + (display-buffer inferior-octave-buffer) + (message "No buffer named %s" inferior-octave-buffer))) + + (defun octave-hide-process-buffer () + "Delete all windows that display `inferior-octave-buffer'." + (interactive) + (if (get-buffer inferior-octave-buffer) + (delete-windows-on inferior-octave-buffer) + (message "No buffer named %s" inferior-octave-buffer))) + + (defun octave-send-region (beg end) + "Send current region to the inferior Octave process." + (interactive "r") + (inferior-octave t) + (let ((proc inferior-octave-process) + (string (buffer-substring-no-properties beg end)) + line) + (save-excursion + (set-buffer inferior-octave-buffer) + (setq inferior-octave-output-list nil) + (while (not (string-equal string "")) + (if (string-match "\n" string) + (setq line (substring string 0 (match-beginning 0)) + string (substring string (match-end 0))) + (setq line string string "")) + (setq inferior-octave-receive-in-progress t) + (inferior-octave-send-list-and-digest (list (concat line "\n"))) + (while inferior-octave-receive-in-progress + (accept-process-output proc)) + (insert-before-markers + (mapconcat 'identity + (append + (if octave-send-echo-input (list line) (list "")) + (mapcar 'inferior-octave-strip-ctrl-g + inferior-octave-output-list) + (list inferior-octave-output-string)) + "\n"))))) + (if octave-send-show-buffer + (display-buffer inferior-octave-buffer))) + + (defun octave-send-block () + "Send current Octave block to the inferior Octave process." + (interactive) + (save-excursion + (octave-mark-block) + (octave-send-region (point) (mark)))) + + (defun octave-send-defun () + "Send current Octave function to the inferior Octave process." + (interactive) + (save-excursion + (octave-mark-defun) + (octave-send-region (point) (mark)))) + + (defun octave-send-line (&optional arg) + "Send current Octave code line to the inferior Octave process. + With positive prefix ARG, send that many lines. + If `octave-send-line-auto-forward' is non-nil, go to the next unsent + code line." + (interactive "P") + (or arg (setq arg 1)) + (if (> arg 0) + (let (beg end) + (beginning-of-line) + (setq beg (point)) + (octave-next-code-line (- arg 1)) + (end-of-line) + (setq end (point)) + (if octave-send-line-auto-forward + (octave-next-code-line 1)) + (octave-send-region beg end)))) + + (defun octave-eval-print-last-sexp () + "Evaluate Octave sexp before point and print value into current buffer." + (interactive) + (inferior-octave t) + (let ((standard-output (current-buffer)) + (print-escape-newlines nil) + (opoint (point))) + (terpri) + (prin1 + (save-excursion + (forward-sexp -1) + (inferior-octave-send-list-and-digest + (list (concat (buffer-substring-no-properties (point) opoint) + "\n"))) + (mapconcat 'identity inferior-octave-output-list "\n"))) + (terpri))) + + ;;; Bug reporting + (defun octave-submit-bug-report () + "Submit a bug report on the Emacs Octave package via mail." + (interactive) + (require 'reporter) + (and + (y-or-n-p "Do you want to submit a bug report? ") + (reporter-submit-bug-report + octave-maintainer-address + (concat "Emacs version " emacs-version) + (list + 'octave-auto-newline + 'octave-blink-matching-block + 'octave-block-offset + 'octave-comment-char + 'octave-continuation-offset + 'octave-continuation-string + 'octave-help-files + 'octave-mode-startup-message + 'octave-send-echo-input + 'octave-send-line-auto-forward + 'octave-send-show-buffer)))) + + ;;; provide ourself + + (provide 'octave-mod) + + ;;; octave-mod.el ends here diff -cNr octave-2.0.1/examples/Makefile.in octave-2.0.2/examples/Makefile.in *** octave-2.0.1/examples/Makefile.in Thu Dec 12 02:23:22 1996 --- octave-2.0.2/examples/Makefile.in Fri Jan 24 22:37:14 1997 *************** *** 18,26 **** INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ ! SOURCES = hello.cc make_int.cc info-emacs-info info-emacs-octave-help ! DISTFILES = Makefile.in $(SOURCES) SUBDIRS = --- 18,30 ---- INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ ! SCRIPTS = info-emacs-info info-emacs-octave-help ! SOURCES = hello.cc make_int.cc ! ! DISTFILES = Makefile.in $(SOURCES) $(SCRIPTS) ! ! BINDISTFILES = $(addprefix $(srcdir)/, $(SCRIPTS)) SUBDIRS = *************** *** 52,54 **** --- 56,64 ---- dist: ln $(DISTFILES) ../`cat ../.fname`/examples .PHONY: dist + + bin-dist: + if [ -n "$(BINDISTFILES)" ]; then \ + ln $(BINDISTFILES) ../`cat ../.fname`/examples ; \ + fi + .PHONY: bin-dist diff -cNr octave-2.0.1/info/ChangeLog octave-2.0.2/info/ChangeLog *** octave-2.0.1/info/ChangeLog Mon Jan 6 19:15:09 1997 --- octave-2.0.2/info/ChangeLog Sat Jan 25 22:33:55 1997 *************** *** 1,3 **** --- 1,16 ---- + Sat Jan 25 22:33:43 1997 John W. Eaton + + * Makefile.in (bin-dist): New target. + + Sat Jan 18 15:57:49 1997 John W. Eaton + + * Makefile.in (MAKEDOC_OBJECTS): Also include $(LIBOBJS). + + Wed Jan 15 14:52:23 1997 John W. Eaton + + * Makefile.in (LIBOBJS): Allow substitution. + (SRCS): Add memcpy.c, memmove.c, and strdup.c to the list. + Mon Jan 6 19:14:49 1997 John W. Eaton * terminal.c (terminal_prep_terminal): Only delete OCRNL from diff -cNr octave-2.0.1/info/Makefile.in octave-2.0.2/info/Makefile.in *** octave-2.0.1/info/Makefile.in Thu Dec 12 02:26:56 1996 --- octave-2.0.2/info/Makefile.in Sat Jan 25 22:40:02 1997 *************** *** 1,5 **** # Makefile for texinfo/info. -*- Indented-Text -*- ! # $Id: Makefile.in,v 1.35 1996/12/12 08:26:56 jwe Exp $ # # Copyright (C) 1993,96 Free Software Foundation, Inc. --- 1,5 ---- # Makefile for texinfo/info. -*- Indented-Text -*- ! # $Id: Makefile.in,v 1.38 1997/01/26 04:40:02 jwe Exp $ # # Copyright (C) 1993,96 Free Software Foundation, Inc. *************** *** 46,51 **** --- 46,53 ---- LIBS = $(TERMLIBS) @LIBS@ LOADLIBES = $(LIBS) + LIBOBJS = @LIBOBJS@ + SHELL = /bin/sh CFLAGS = @CFLAGS@ *************** *** 71,77 **** signals.c terminal.c tilde.c window.c \ xmalloc.c indices.c makedoc.c nodemenu.c \ footnotes.c dribble.c variables.c gc.c man.c \ ! clib.c getopt.c getopt1.c bzero.c HDRS = display.h doc.h echo_area.h filesys.h \ general.h getopt.h info-utils.h info.h \ --- 73,80 ---- signals.c terminal.c tilde.c window.c \ xmalloc.c indices.c makedoc.c nodemenu.c \ footnotes.c dribble.c variables.c gc.c man.c \ ! clib.c getopt.c getopt1.c bzero.c \ ! memcpy.c memmove.c strdup.c HDRS = display.h doc.h echo_area.h filesys.h \ general.h getopt.h info-utils.h info.h \ *************** *** 92,98 **** $(srcdir)/footnotes.c $(srcdir)/variables.c # The name of the program which builds documentation structure from CMDFILES. ! MAKEDOC_OBJECTS = makedoc.o clib.o xmalloc.o MAKEDOC_SOURCE = makedoc.c clib.c xmalloc.c infofiles = info.info info-stnd.info --- 95,101 ---- $(srcdir)/footnotes.c $(srcdir)/variables.c # The name of the program which builds documentation structure from CMDFILES. ! MAKEDOC_OBJECTS = makedoc.o clib.o xmalloc.o $(LIBOBJS) MAKEDOC_SOURCE = makedoc.c clib.c xmalloc.c infofiles = info.info info-stnd.info *************** *** 104,109 **** --- 107,114 ---- DISTFILES = Makefile.in ChangeLog README NEWS info.1 configure.in \ configure mkinstalldirs $(SRCS) $(HDRS) $(infofiles) $(TEXINFO) $(DVI) + BINDISTFILES = info + %.o : %.c $(CC) -c $(CPPFLAGS) $(LDEFS) $(DEFS) -I. -I$(srcdir) $(CFLAGS) $< *************** *** 156,161 **** --- 161,172 ---- dist: all-info all-dvi ln $(DISTFILES) ../`cat ../.fname`/info .PHONY: dist + + bin-dist: + if [ -n "$(BINDISTFILES)" ]; then \ + ln $(BINDISTFILES) ../`cat ../.fname`/info ; \ + fi + .PHONY: bin-dist TAGS: $(SRCS) makedoc-TAGS etags $(SRCS) diff -cNr octave-2.0.1/info/memcpy.c octave-2.0.2/info/memcpy.c *** octave-2.0.1/info/memcpy.c Wed Dec 31 18:00:00 1969 --- octave-2.0.2/info/memcpy.c Tue Nov 12 21:40:20 1996 *************** *** 0 **** --- 1,20 ---- + /* Copy LEN bytes starting at SRCADDR to DESTADDR. Result undefined + if the source overlaps with the destination. + Return DESTADDR. */ + + #ifdef HAVE_CONFIG_H + #include + #endif + + char * + memcpy (destaddr, srcaddr, len) + char *destaddr; + const char *srcaddr; + int len; + { + char *dest = destaddr; + + while (len-- > 0) + *destaddr++ = *srcaddr++; + return dest; + } diff -cNr octave-2.0.1/info/memmove.c octave-2.0.2/info/memmove.c *** octave-2.0.1/info/memmove.c Wed Dec 31 18:00:00 1969 --- octave-2.0.2/info/memmove.c Tue Nov 12 21:40:20 1996 *************** *** 0 **** --- 1,24 ---- + /* memmove.c -- copy memory. + Copy LENGTH bytes from SOURCE to DEST. Does not null-terminate. + In the public domain. + By David MacKenzie . */ + + #ifdef HAVE_CONFIG_H + #include + #endif + + void + memmove (dest, source, length) + char *dest; + const char *source; + unsigned length; + { + if (source < dest) + /* Moving from low mem to hi mem; start at end. */ + for (source += length, dest += length; length; --length) + *--dest = *--source; + else if (source != dest) + /* Moving from hi mem to low mem; start at beginning. */ + for (; length; --length) + *dest++ = *source++; + } diff -cNr octave-2.0.1/info/strdup.c octave-2.0.2/info/strdup.c *** octave-2.0.1/info/strdup.c Wed Dec 31 18:00:00 1969 --- octave-2.0.2/info/strdup.c Tue Nov 12 21:40:20 1996 *************** *** 0 **** --- 1,43 ---- + /* strdup.c -- return a newly allocated copy of a string + Copyright (C) 1990 Free Software Foundation, Inc. + + This program 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 2, or (at your option) + any later version. + + This program 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 this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ + + #ifdef HAVE_CONFIG_H + #include + #endif + + #ifdef STDC_HEADERS + #include + #include + #else + char *malloc (); + char *strcpy (); + #endif + + /* Return a newly allocated copy of STR, + or 0 if out of memory. */ + + char * + strdup (str) + const char *str; + { + char *newstr; + + newstr = (char *) malloc (strlen (str) + 1); + if (newstr) + strcpy (newstr, str); + return newstr; + } diff -cNr octave-2.0.1/install-octave octave-2.0.2/install-octave *** octave-2.0.1/install-octave Wed Dec 31 18:00:00 1969 --- octave-2.0.2/install-octave Mon Jan 27 19:24:58 1997 *************** *** 0 **** --- 1,276 ---- + #!/bin/sh + # + # install-octave -- install script for binary distributions. + # + # John W. Eaton + # jwe@bevo.che.wisc.edu + # University of Wisconsin-Madison + # Department of Chemical Engineering + + # get version + version=`cat VERSION 2> /dev/null` + + if test -z "$version" + then + echo "install-octave: no version number!" + exit 1 + fi + + # get host type + target_host_type=`cat ARCH 2> /dev/null` + + if test -z "$target_host_type" + then + echo "install-octave: host archetecture not found!" + exit 1 + fi + + distdir=`pwd` + + # 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 + + # ==================== Where To Install Things ==================== + + # The default location for installation. Everything is placed in + # subdirectories of this directory. The default values for many of + # the variables below are expressed in terms of this one, so you may + # not need to change them. This defaults to /usr/local. + prefix=/usr/local + + prefix="/usr/local" + if test $# -eq 1 + then + prefix=$1 + else + if test $# -gt 1 + then + echo "usage: install-octave [prefix-directory]" + exit 1 + fi + fi + + # Like `prefix', but used for architecture-specific files. + exec_prefix="$prefix" + + # Where to install Octave and other binaries that people will want to + # run directly. + bindir="$exec_prefix/bin" + + # Where to install architecture-independent data files. ${fcnfiledir} + # and ${localfcnfiledir} are subdirectories of this. + datadir="$prefix/share" + + # Where to install and expect libraries like libcruft.a, liboctave.a, + # and libreadline.a, executable files to be run by Octave rather than + # directly by users, and other architecture-dependent data. + # ${archlibdir} is a subdirectory of this. + libdir="$exec_prefix/lib" + + # Where to install and expect executable programs to be run by Octave + # rather than directly by users. + libexecdir="$exec_prefix/libexec" + + # Where to install Octave's include files. The default is + # ${prefix}/include/octave + includedir="$prefix/include" + + # Where to install Octave's man pages, and what extension they should + # have. The default is ${prefix}/man/man1 + mandir="$prefix/man/man1" + manext="1" + + # Where to install and expect the info files describing Octave.. + infodir="$prefix/info" + + # The fill path to the default info file. + infofile="$infodir/octave.info" + + # ==================== Octave-specific directories ==================== + + # These variables hold the values Octave will actually use. They are + # based on the values of the standard Make variables above. + + # Where to install the function file distributed with + # Octave. This includes the Octave version, so that the + # function files for different versions of Octave will install + # themselves in separate directories. + fcnfiledir="$datadir/octave/$version/m" + + # Directories Octave should search for function files specific + # to this site (i.e. customizations), before consulting + # ${fcnfiledir}. This should be a colon-separated list of + # directories. + localfcnfiledir="$datadir/octave/site/m" + localfcnfilepath="$localfcnfiledir//" + + # Where to put executables to be run by Octave rather than + # the user. This path usually includes the Octave version + # and configuration name, so that multiple configurations + # for multiple versions of Octave may be installed at once. + archlibdir="$libexecdir/octave/$version/exec/$target_host_type" + + # Where to put executables to be run by Octave rather than by the + # user that are specific to this site. + localarchlibdir="$libexecdir/octave/site/exec/$target_host_type" + + # Where to put object files that will by dynamically loaded. + # This path usually includes the Octave version and configuration + # name, so that multiple configurations for multiple versions of + # Octave may be installed at once. + octfiledir="$libexecdir/octave/$version/oct/$target_host_type" + + # Directories Octave should search for object files that will be + # dynamically loaded and that are specific to this site + # (i.e. customizations), before consulting ${octfiledir}. This should + # be a colon-separated list of directories. + localoctfiledir="$libexecdir/octave/site/oct/$target_host_type" + localoctfilepath="$localoctfiledir//" + + # Where Octave will search to find its function files. Before + # changing this, check to see if your purpose wouldn't + # better be served by changing localfcnfilepath. This + # should be a colon-separated list of directories. + fcnfilepath=".:$localoctfilepath:$localfcnfilepath:$octfiledir//:$fcnfiledir//" + + # Where Octave will search to find image files.es. + imagedir="$datadir/octave/$version/imagelib" + imagepath=".:$imagedir//" + + cat << EOF + Installing octave in the following subdirectories of + $prefix: + + bindir: `echo $bindir | sed "s,^$prefix/,,"` + datadir: `echo $datadir | sed "s,^$prefix/,,"` + libdir: `echo $libdir | sed "s,^$prefix/,,"` + includedir: `echo $includedir | sed "s,^$prefix/,,"` + mandir: `echo $mandir | sed "s,^$prefix/,,"` + infodir: `echo $infodir | sed "s,^$prefix/,,"` + fcnfiledir: `echo $fcnfiledir | sed "s,^$prefix/,,"` + localfcnfiledir: `echo $localfcnfiledir | sed "s,^$prefix/,,"` + archlibdir: `echo $archlibdir | sed "s,^$prefix/,,"` + localarchlibdir: `echo $localarchlibdir | sed "s,^$prefix/,,"` + octfiledir: `echo $octfiledir | sed "s,^$prefix/,,"` + localoctfiledir: `echo $localoctfiledir | sed "s,^$prefix/,,"` + imagedir: `echo $imagedir | sed "s,^$prefix/,,"` + + EOF + + echo $echo_n "Is this correct [y/N]? " $echo_c + + read ans + + case "$ans" in + y | Y | yes | YES) + ;; + *) + exit 1 + ;; + esac + + DIRS_TO_MAKE="$bindir $datadir $libdir $libexecdir $includedir $mandir \ + $infodir $fcnfiledir $localfcnfiledir $archlibdir $localarchlibdir \ + $octfiledir $localoctfiledir $imagedir" + + ./mkinstalldirs $DIRS_TO_MAKE + + if test "$prefix" = /usr/local + then + echo "installing src/octave as $bindir/octave" + cp src/octave $bindir/octave + chmod 755 $bindir/octave + else + echo "installing octave-sh as $bindir/octave" + sed "s|@OCTAVE_HOME@|$prefix|; s|@LD_LIBRARY_PATH@|$libdir|" octave-sh \ + > $bindir/octave + chmod 755 $bindir/octave + + echo "installing src/octave as $bindir/octave.bin" + cp src/octave $bindir/octave.bin + chmod 755 $bindir/octave.bin + fi + + echo "installing octave-bug as $bindir/octave-bug" + cp octave-bug $bindir/octave-bug + chmod 755 $bindir/octave-bug + + echo "installing info as $archlibdir/info" + cp info/info $archlibdir/info + chmod 755 $archlibdir/info + + echo "installing shared libraries in $libdir" + for f in `cat LIBRARIES` + do + file=`basename $f` + cp $f $libdir/$file + chmod 644 $libdir/$file + done + + echo "installing .oct files in $octfiledir" + cd src + for f in `find . -name '*.oct' -print` + do + file=`basename $f` + cp $f $octfiledir/$file + chmod 755 $octfiledir/$file + done + if test -f links-to-make; then + cat links-to-make | while read src dest + do + if test -n "$src" && test -n "$dest"; then + cd $octfiledir + ln $src $dest + fi + done + fi + cd $distdir + + echo "installing .m files in $fcnfiledir" + cd scripts + tar cf - . | ( cd $fcnfiledir ; tar xf - ) + find $fcnfiledir -type f -print | xargs chmod 0644 + find $fcnfiledir -name '*.img' -print | xargs rm -f + cd $distdir + + echo "installing image files in $imagedir" + cd scripts + for f in `find . -name '*.img' -print` + do + file=`basename $f` + cp $f $imagedir/$file + chmod 644 $imagedir/$file + done + cd $distdir + + echo "creating ls-R file in $datadir/octave" + ls -LR $datadir/octave $libexecdir/octave > $datadir/octave/ls-R + + echo "installing info files in $infodir" + for f in doc/interpreter/octave.info* + do + file=`basename $f` + cp $f $infodir/$file + chmod 644 $infodir/$file + done + + echo "installing man page in $mandir" + cp doc/interpreter/octave.1 $mandir/octave.$manext + chmod 644 $mandir/octave.$manext + + exit 0 diff -cNr octave-2.0.1/kpathsea/CVS/Entries octave-2.0.2/kpathsea/CVS/Entries *** octave-2.0.1/kpathsea/CVS/Entries Thu Dec 5 19:00:24 1996 --- octave-2.0.2/kpathsea/CVS/Entries Sat Jan 25 22:40:03 1997 *************** *** 116,124 **** /xstat.h/1.2/Sun Jun 25 19:56:32 1995// /xstrdup.c/1.2/Sun Jun 25 19:56:32 1995// /README.CONFIGURE/1.1/Fri Jul 19 01:56:40 1996// - /Makefile.in/1.11/Tue Oct 29 23:27:32 1996// /c-std.h/1.3/Sun Nov 3 21:35:45 1996// /c-unistd.h/1.3/Sun Nov 3 21:36:44 1996// /config.guess/1.3/Tue Dec 3 17:48:21 1996// /config.sub/1.3/Fri Dec 6 00:58:45 1996// ! /ChangeLog/1.6/Fri Dec 6 00:59:47 1996// --- 116,124 ---- /xstat.h/1.2/Sun Jun 25 19:56:32 1995// /xstrdup.c/1.2/Sun Jun 25 19:56:32 1995// /README.CONFIGURE/1.1/Fri Jul 19 01:56:40 1996// /c-std.h/1.3/Sun Nov 3 21:35:45 1996// /c-unistd.h/1.3/Sun Nov 3 21:36:44 1996// /config.guess/1.3/Tue Dec 3 17:48:21 1996// /config.sub/1.3/Fri Dec 6 00:58:45 1996// ! /ChangeLog/1.7/Sun Jan 26 04:34:07 1997// ! /Makefile.in/1.12/Sat Jan 25 05:24:58 1997// diff -cNr octave-2.0.1/kpathsea/ChangeLog octave-2.0.2/kpathsea/ChangeLog *** octave-2.0.1/kpathsea/ChangeLog Thu Dec 5 18:59:47 1996 --- octave-2.0.2/kpathsea/ChangeLog Sat Jan 25 22:34:07 1997 *************** *** 1,3 **** --- 1,7 ---- + Sat Jan 25 22:33:56 1997 John W. Eaton + + * Makefile.in (bin-dist): New target. + Thu Dec 5 18:59:44 1996 John W. Eaton * config.sub: Update to current version from FSF. diff -cNr octave-2.0.1/kpathsea/Makefile.in octave-2.0.2/kpathsea/Makefile.in *** octave-2.0.1/kpathsea/Makefile.in Tue Oct 29 17:27:32 1996 --- octave-2.0.2/kpathsea/Makefile.in Fri Jan 24 23:24:58 1997 *************** *** 37,42 **** --- 37,47 ---- SH_LIBS_TO_INSTALL = libkpathsea.$(SHLEXT) + ifeq ($(SHARED_LIBS), true) + BINDISTFILES = libkpathsea.$(SHLEXT) + BINDISTLIBS = $(addprefix kpathsea/, libkpathsea.$(SHLEXT)) + endif + default all: stamp-picdir kpsewhich MakeTeXPK kpathsea.info stamp-shared stamp-picdir: *************** *** 196,201 **** --- 201,213 ---- ln CONFIGURE HIER common.ac $(distdir) cd $(distdir); rm -f paths.h cd $(distdir); add-version $(version) version.c + + bin-dist: + if [ -n "$(BINDISTFILES)" ]; then \ + ln $(BINDISTFILES) ../`cat ../.fname`/kpathsea ; \ + fi + echo $(BINDISTLIBS) >> ../`cat ../.fname`/LIBRARIES + .PHONY: bin-dist ac_include ../make/config.make diff -cNr octave-2.0.1/libcruft/ChangeLog octave-2.0.2/libcruft/ChangeLog *** octave-2.0.1/libcruft/ChangeLog Tue Jan 7 00:17:22 1997 --- octave-2.0.2/libcruft/ChangeLog Mon Jan 27 15:52:30 1997 *************** *** 1,3 **** --- 1,27 ---- + Mon Jan 27 15:52:29 1997 John W. Eaton + + * Version 2.0.2 released. + + Sat Jan 25 22:34:10 1997 John W. Eaton + + * Makefile.in, balgen/Makefile.in, blas/Makefile.in, + cfsqp/Makefile.in, dassl/Makefile.in, eispack/Makefile.in, + fftpack/Makefile.in, fsqp/Makefile.in, lapack/Makefile.in, + linpack/Makefile.in, minpack/Makefile.in, misc/Makefile.in, + npsol/Makefile.in, odepack/Makefile.in, qpsol/Makefile.in, + quadpack/Makefile.in, ranlib/Makefile.in, slatec-fn/Makefile.in, + villad/Makefile.in (bin-dist): New target. + + Wed Jan 22 15:03:33 1997 John W. Eaton + + * misc/Makefile.in (pic/machar.o): Add $(CPICFLAG) for this target. + + * misc/d1mach.f (d1mach): Move SAVE statement ahead of DATA statment. + + Wed Jan 15 21:04:29 1997 John W. Eaton + + * blas/*.f: Update to latest version from Netlib. + Tue Jan 7 00:17:17 1997 John W. Eaton * Version 2.0.1 released. diff -cNr octave-2.0.1/libcruft/Makefile.in octave-2.0.2/libcruft/Makefile.in *** octave-2.0.1/libcruft/Makefile.in Thu Dec 12 02:23:15 1996 --- octave-2.0.2/libcruft/Makefile.in Fri Jan 24 23:25:42 1997 *************** *** 32,37 **** --- 32,42 ---- DISTFILES = Makefile.in ChangeLog Makerules.in $(SOURCES) STOP.patch + ifeq ($(SHARED_LIBS), true) + BINDISTFILES = libcruft.$(SHLEXT) + BINDISTLIBS = $(addprefix libcruft/, libcruft.$(SHLEXT)) + endif + all: $(SUBDIRS) stamp-shared .PHONY: all *************** *** 117,119 **** --- 122,131 ---- for dir in $(SUBDIRS); do mkdir ../`cat ../.fname`/libcruft/$$dir; cd $$dir; $(MAKE) $@; cd ..; done ln $(DISTFILES) ../`cat ../.fname`/libcruft .PHONY: dist + + bin-dist: + if [ -n "$(BINDISTFILES)" ]; then \ + ln $(BINDISTFILES) ../`cat ../.fname`/libcruft ; \ + fi + echo $(BINDISTLIBS) >> ../`cat ../.fname`/LIBRARIES + .PHONY: bin-dist diff -cNr octave-2.0.1/libcruft/blas/dasum.f octave-2.0.2/libcruft/blas/dasum.f *** octave-2.0.1/libcruft/blas/dasum.f Thu Jul 18 20:29:10 1996 --- octave-2.0.2/libcruft/blas/dasum.f Wed Jan 15 20:58:43 1997 *************** *** 1,41 **** ! DOUBLE PRECISION FUNCTION DASUM(N,DX,INCX) ! C ! C TAKES THE SUM OF THE ABSOLUTE VALUES. ! C JACK DONGARRA, LINPACK, 3/11/78. ! C ! DOUBLE PRECISION DX(1),DTEMP ! INTEGER I,INCX,M,MP1,N,NINCX ! C ! DASUM = 0.0D0 ! DTEMP = 0.0D0 ! IF(N.LE.0)RETURN ! IF(INCX.EQ.1)GO TO 20 ! C ! C CODE FOR INCREMENT NOT EQUAL TO 1 ! C ! NINCX = N*INCX ! DO 10 I = 1,NINCX,INCX ! DTEMP = DTEMP + DABS(DX(I)) ! 10 CONTINUE ! DASUM = DTEMP ! RETURN ! C ! C CODE FOR INCREMENT EQUAL TO 1 ! C ! C ! C CLEAN-UP LOOP ! C ! 20 M = MOD(N,6) ! IF( M .EQ. 0 ) GO TO 40 ! DO 30 I = 1,M ! DTEMP = DTEMP + DABS(DX(I)) ! 30 CONTINUE ! IF( N .LT. 6 ) GO TO 60 ! 40 MP1 = M + 1 ! DO 50 I = MP1,N,6 ! DTEMP = DTEMP + DABS(DX(I)) + DABS(DX(I + 1)) + DABS(DX(I + 2)) ! * + DABS(DX(I + 3)) + DABS(DX(I + 4)) + DABS(DX(I + 5)) ! 50 CONTINUE ! 60 DASUM = DTEMP ! RETURN ! END --- 1,43 ---- ! double precision function dasum(n,dx,incx) ! c ! c takes the sum of the absolute values. ! c jack dongarra, linpack, 3/11/78. ! c modified 3/93 to return if incx .le. 0. ! c modified 12/3/93, array(1) declarations changed to array(*) ! c ! double precision dx(*),dtemp ! integer i,incx,m,mp1,n,nincx ! c ! dasum = 0.0d0 ! dtemp = 0.0d0 ! if( n.le.0 .or. incx.le.0 )return ! if(incx.eq.1)go to 20 ! c ! c code for increment not equal to 1 ! c ! nincx = n*incx ! do 10 i = 1,nincx,incx ! dtemp = dtemp + dabs(dx(i)) ! 10 continue ! dasum = dtemp ! return ! c ! c code for increment equal to 1 ! c ! c ! c clean-up loop ! c ! 20 m = mod(n,6) ! if( m .eq. 0 ) go to 40 ! do 30 i = 1,m ! dtemp = dtemp + dabs(dx(i)) ! 30 continue ! if( n .lt. 6 ) go to 60 ! 40 mp1 = m + 1 ! do 50 i = mp1,n,6 ! dtemp = dtemp + dabs(dx(i)) + dabs(dx(i + 1)) + dabs(dx(i + 2)) ! * + dabs(dx(i + 3)) + dabs(dx(i + 4)) + dabs(dx(i + 5)) ! 50 continue ! 60 dasum = dtemp ! return ! end diff -cNr octave-2.0.1/libcruft/blas/daxpy.f octave-2.0.2/libcruft/blas/daxpy.f *** octave-2.0.1/libcruft/blas/daxpy.f Thu Jul 18 20:29:10 1996 --- octave-2.0.2/libcruft/blas/daxpy.f Wed Jan 15 20:58:43 1997 *************** *** 1,47 **** ! SUBROUTINE DAXPY(N,DA,DX,INCX,DY,INCY) ! C ! C CONSTANT TIMES A VECTOR PLUS A VECTOR. ! C USES UNROLLED LOOPS FOR INCREMENTS EQUAL TO ONE. ! C JACK DONGARRA, LINPACK, 3/11/78. ! C ! DOUBLE PRECISION DX(1),DY(1),DA ! INTEGER I,INCX,INCY,IXIY,M,MP1,N ! C ! IF(N.LE.0)RETURN ! IF (DA .EQ. 0.0D0) RETURN ! IF(INCX.EQ.1.AND.INCY.EQ.1)GO TO 20 ! C ! C CODE FOR UNEQUAL INCREMENTS OR EQUAL INCREMENTS ! C NOT EQUAL TO 1 ! C ! IX = 1 ! IY = 1 ! IF(INCX.LT.0)IX = (-N+1)*INCX + 1 ! IF(INCY.LT.0)IY = (-N+1)*INCY + 1 ! DO 10 I = 1,N ! DY(IY) = DY(IY) + DA*DX(IX) ! IX = IX + INCX ! IY = IY + INCY ! 10 CONTINUE ! RETURN ! C ! C CODE FOR BOTH INCREMENTS EQUAL TO 1 ! C ! C ! C CLEAN-UP LOOP ! C ! 20 M = MOD(N,4) ! IF( M .EQ. 0 ) GO TO 40 ! DO 30 I = 1,M ! DY(I) = DY(I) + DA*DX(I) ! 30 CONTINUE ! IF( N .LT. 4 ) RETURN ! 40 MP1 = M + 1 ! DO 50 I = MP1,N,4 ! DY(I) = DY(I) + DA*DX(I) ! DY(I + 1) = DY(I + 1) + DA*DX(I + 1) ! DY(I + 2) = DY(I + 2) + DA*DX(I + 2) ! DY(I + 3) = DY(I + 3) + DA*DX(I + 3) ! 50 CONTINUE ! RETURN ! END --- 1,48 ---- ! subroutine daxpy(n,da,dx,incx,dy,incy) ! c ! c constant times a vector plus a vector. ! c uses unrolled loops for increments equal to one. ! c jack dongarra, linpack, 3/11/78. ! c modified 12/3/93, array(1) declarations changed to array(*) ! c ! double precision dx(*),dy(*),da ! integer i,incx,incy,ix,iy,m,mp1,n ! c ! if(n.le.0)return ! if (da .eq. 0.0d0) return ! if(incx.eq.1.and.incy.eq.1)go to 20 ! c ! c code for unequal increments or equal increments ! c not equal to 1 ! c ! ix = 1 ! iy = 1 ! if(incx.lt.0)ix = (-n+1)*incx + 1 ! if(incy.lt.0)iy = (-n+1)*incy + 1 ! do 10 i = 1,n ! dy(iy) = dy(iy) + da*dx(ix) ! ix = ix + incx ! iy = iy + incy ! 10 continue ! return ! c ! c code for both increments equal to 1 ! c ! c ! c clean-up loop ! c ! 20 m = mod(n,4) ! if( m .eq. 0 ) go to 40 ! do 30 i = 1,m ! dy(i) = dy(i) + da*dx(i) ! 30 continue ! if( n .lt. 4 ) return ! 40 mp1 = m + 1 ! do 50 i = mp1,n,4 ! dy(i) = dy(i) + da*dx(i) ! dy(i + 1) = dy(i + 1) + da*dx(i + 1) ! dy(i + 2) = dy(i + 2) + da*dx(i + 2) ! dy(i + 3) = dy(i + 3) + da*dx(i + 3) ! 50 continue ! return ! end diff -cNr octave-2.0.1/libcruft/blas/dcopy.f octave-2.0.2/libcruft/blas/dcopy.f *** octave-2.0.1/libcruft/blas/dcopy.f Thu Jul 18 20:29:10 1996 --- octave-2.0.2/libcruft/blas/dcopy.f Wed Jan 15 20:58:43 1997 *************** *** 1,49 **** ! SUBROUTINE DCOPY(N,DX,INCX,DY,INCY) ! C ! C COPIES A VECTOR, X, TO A VECTOR, Y. ! C USES UNROLLED LOOPS FOR INCREMENTS EQUAL TO ONE. ! C JACK DONGARRA, LINPACK, 3/11/78. ! C ! DOUBLE PRECISION DX(1),DY(1) ! INTEGER I,INCX,INCY,IX,IY,M,MP1,N ! C ! IF(N.LE.0)RETURN ! IF(INCX.EQ.1.AND.INCY.EQ.1)GO TO 20 ! C ! C CODE FOR UNEQUAL INCREMENTS OR EQUAL INCREMENTS ! C NOT EQUAL TO 1 ! C ! IX = 1 ! IY = 1 ! IF(INCX.LT.0)IX = (-N+1)*INCX + 1 ! IF(INCY.LT.0)IY = (-N+1)*INCY + 1 ! DO 10 I = 1,N ! DY(IY) = DX(IX) ! IX = IX + INCX ! IY = IY + INCY ! 10 CONTINUE ! RETURN ! C ! C CODE FOR BOTH INCREMENTS EQUAL TO 1 ! C ! C ! C CLEAN-UP LOOP ! C ! 20 M = MOD(N,7) ! IF( M .EQ. 0 ) GO TO 40 ! DO 30 I = 1,M ! DY(I) = DX(I) ! 30 CONTINUE ! IF( N .LT. 7 ) RETURN ! 40 MP1 = M + 1 ! DO 50 I = MP1,N,7 ! DY(I) = DX(I) ! DY(I + 1) = DX(I + 1) ! DY(I + 2) = DX(I + 2) ! DY(I + 3) = DX(I + 3) ! DY(I + 4) = DX(I + 4) ! DY(I + 5) = DX(I + 5) ! DY(I + 6) = DX(I + 6) ! 50 CONTINUE ! RETURN ! END --- 1,50 ---- ! subroutine dcopy(n,dx,incx,dy,incy) ! c ! c copies a vector, x, to a vector, y. ! c uses unrolled loops for increments equal to one. ! c jack dongarra, linpack, 3/11/78. ! c modified 12/3/93, array(1) declarations changed to array(*) ! c ! double precision dx(*),dy(*) ! integer i,incx,incy,ix,iy,m,mp1,n ! c ! if(n.le.0)return ! if(incx.eq.1.and.incy.eq.1)go to 20 ! c ! c code for unequal increments or equal increments ! c not equal to 1 ! c ! ix = 1 ! iy = 1 ! if(incx.lt.0)ix = (-n+1)*incx + 1 ! if(incy.lt.0)iy = (-n+1)*incy + 1 ! do 10 i = 1,n ! dy(iy) = dx(ix) ! ix = ix + incx ! iy = iy + incy ! 10 continue ! return ! c ! c code for both increments equal to 1 ! c ! c ! c clean-up loop ! c ! 20 m = mod(n,7) ! if( m .eq. 0 ) go to 40 ! do 30 i = 1,m ! dy(i) = dx(i) ! 30 continue ! if( n .lt. 7 ) return ! 40 mp1 = m + 1 ! do 50 i = mp1,n,7 ! dy(i) = dx(i) ! dy(i + 1) = dx(i + 1) ! dy(i + 2) = dx(i + 2) ! dy(i + 3) = dx(i + 3) ! dy(i + 4) = dx(i + 4) ! dy(i + 5) = dx(i + 5) ! dy(i + 6) = dx(i + 6) ! 50 continue ! return ! end diff -cNr octave-2.0.1/libcruft/blas/ddot.f octave-2.0.2/libcruft/blas/ddot.f *** octave-2.0.1/libcruft/blas/ddot.f Thu Jul 18 20:29:10 1996 --- octave-2.0.2/libcruft/blas/ddot.f Wed Jan 15 20:58:43 1997 *************** *** 1,48 **** ! DOUBLE PRECISION FUNCTION DDOT(N,DX,INCX,DY,INCY) ! C ! C FORMS THE DOT PRODUCT OF TWO VECTORS. ! C USES UNROLLED LOOPS FOR INCREMENTS EQUAL TO ONE. ! C JACK DONGARRA, LINPACK, 3/11/78. ! C ! DOUBLE PRECISION DX(1),DY(1),DTEMP ! INTEGER I,INCX,INCY,IX,IY,M,MP1,N ! C ! DDOT = 0.0D0 ! DTEMP = 0.0D0 ! IF(N.LE.0)RETURN ! IF(INCX.EQ.1.AND.INCY.EQ.1)GO TO 20 ! C ! C CODE FOR UNEQUAL INCREMENTS OR EQUAL INCREMENTS ! C NOT EQUAL TO 1 ! C ! IX = 1 ! IY = 1 ! IF(INCX.LT.0)IX = (-N+1)*INCX + 1 ! IF(INCY.LT.0)IY = (-N+1)*INCY + 1 ! DO 10 I = 1,N ! DTEMP = DTEMP + DX(IX)*DY(IY) ! IX = IX + INCX ! IY = IY + INCY ! 10 CONTINUE ! DDOT = DTEMP ! RETURN ! C ! C CODE FOR BOTH INCREMENTS EQUAL TO 1 ! C ! C ! C CLEAN-UP LOOP ! C ! 20 M = MOD(N,5) ! IF( M .EQ. 0 ) GO TO 40 ! DO 30 I = 1,M ! DTEMP = DTEMP + DX(I)*DY(I) ! 30 CONTINUE ! IF( N .LT. 5 ) GO TO 60 ! 40 MP1 = M + 1 ! DO 50 I = MP1,N,5 ! DTEMP = DTEMP + DX(I)*DY(I) + DX(I + 1)*DY(I + 1) + ! * DX(I + 2)*DY(I + 2) + DX(I + 3)*DY(I + 3) + DX(I + 4)*DY(I + 4) ! 50 CONTINUE ! 60 DDOT = DTEMP ! RETURN ! END --- 1,49 ---- ! double precision function ddot(n,dx,incx,dy,incy) ! c ! c forms the dot product of two vectors. ! c uses unrolled loops for increments equal to one. ! c jack dongarra, linpack, 3/11/78. ! c modified 12/3/93, array(1) declarations changed to array(*) ! c ! double precision dx(*),dy(*),dtemp ! integer i,incx,incy,ix,iy,m,mp1,n ! c ! ddot = 0.0d0 ! dtemp = 0.0d0 ! if(n.le.0)return ! if(incx.eq.1.and.incy.eq.1)go to 20 ! c ! c code for unequal increments or equal increments ! c not equal to 1 ! c ! ix = 1 ! iy = 1 ! if(incx.lt.0)ix = (-n+1)*incx + 1 ! if(incy.lt.0)iy = (-n+1)*incy + 1 ! do 10 i = 1,n ! dtemp = dtemp + dx(ix)*dy(iy) ! ix = ix + incx ! iy = iy + incy ! 10 continue ! ddot = dtemp ! return ! c ! c code for both increments equal to 1 ! c ! c ! c clean-up loop ! c ! 20 m = mod(n,5) ! if( m .eq. 0 ) go to 40 ! do 30 i = 1,m ! dtemp = dtemp + dx(i)*dy(i) ! 30 continue ! if( n .lt. 5 ) go to 60 ! 40 mp1 = m + 1 ! do 50 i = mp1,n,5 ! dtemp = dtemp + dx(i)*dy(i) + dx(i + 1)*dy(i + 1) + ! * dx(i + 2)*dy(i + 2) + dx(i + 3)*dy(i + 3) + dx(i + 4)*dy(i + 4) ! 50 continue ! 60 ddot = dtemp ! return ! end diff -cNr octave-2.0.1/libcruft/blas/dgemm.f octave-2.0.2/libcruft/blas/dgemm.f *** octave-2.0.1/libcruft/blas/dgemm.f Thu Jul 18 20:29:10 1996 --- octave-2.0.2/libcruft/blas/dgemm.f Wed Jan 15 20:58:44 1997 *************** *** 1,37 **** - ************************************************************************ - * - * File of the DOUBLE PRECISION Level-3 BLAS. - * ========================================== - * - * SUBROUTINE DGEMM ( TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB, - * $ BETA, C, LDC ) - * - * SUBROUTINE DSYMM ( SIDE, UPLO, M, N, ALPHA, A, LDA, B, LDB, - * $ BETA, C, LDC ) - * - * SUBROUTINE DSYRK ( UPLO, TRANS, N, K, ALPHA, A, LDA, - * $ BETA, C, LDC ) - * - * SUBROUTINE DSYR2K( UPLO, TRANS, N, K, ALPHA, A, LDA, B, LDB, - * $ BETA, C, LDC ) - * - * SUBROUTINE DTRMM ( SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, - * $ B, LDB ) - * - * SUBROUTINE DTRSM ( SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, - * $ B, LDB ) - * - * See: - * - * Dongarra J. J., Du Croz J. J., Duff I. and Hammarling S. - * A set of Level 3 Basic Linear Algebra Subprograms. Technical - * Memorandum No.88 (Revision 1), Mathematics and Computer Science - * Division, Argonne National Laboratory, 9700 South Cass Avenue, - * Argonne, Illinois 60439. - * - * - ************************************************************************ - * SUBROUTINE DGEMM ( TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB, $ BETA, C, LDC ) * .. Scalar Arguments .. --- 1,3 ---- diff -cNr octave-2.0.1/libcruft/blas/dgemv.f octave-2.0.2/libcruft/blas/dgemv.f *** octave-2.0.1/libcruft/blas/dgemv.f Thu Jul 18 20:29:10 1996 --- octave-2.0.2/libcruft/blas/dgemv.f Wed Jan 15 20:58:44 1997 *************** *** 1,63 **** - * - ************************************************************************ - * - * File of the DOUBLE PRECISION Level-2 BLAS. - * =========================================== - * - * SUBROUTINE DGEMV ( TRANS, M, N, ALPHA, A, LDA, X, INCX, - * $ BETA, Y, INCY ) - * - * SUBROUTINE DGBMV ( TRANS, M, N, KL, KU, ALPHA, A, LDA, X, INCX, - * $ BETA, Y, INCY ) - * - * SUBROUTINE DSYMV ( UPLO, N, ALPHA, A, LDA, X, INCX, - * $ BETA, Y, INCY ) - * - * SUBROUTINE DSBMV ( UPLO, N, K, ALPHA, A, LDA, X, INCX, - * $ BETA, Y, INCY ) - * - * SUBROUTINE DSPMV ( UPLO, N, ALPHA, AP, X, INCX, BETA, Y, INCY ) - * - * SUBROUTINE DTRMV ( UPLO, TRANS, DIAG, N, A, LDA, X, INCX ) - * - * SUBROUTINE DTBMV ( UPLO, TRANS, DIAG, N, K, A, LDA, X, INCX ) - * - * SUBROUTINE DTPMV ( UPLO, TRANS, DIAG, N, AP, X, INCX ) - * - * SUBROUTINE DTRSV ( UPLO, TRANS, DIAG, N, A, LDA, X, INCX ) - * - * SUBROUTINE DTBSV ( UPLO, TRANS, DIAG, N, K, A, LDA, X, INCX ) - * - * SUBROUTINE DTPSV ( UPLO, TRANS, DIAG, N, AP, X, INCX ) - * - * SUBROUTINE DGER ( M, N, ALPHA, X, INCX, Y, INCY, A, LDA ) - * - * SUBROUTINE DSYR ( UPLO, N, ALPHA, X, INCX, A, LDA ) - * - * SUBROUTINE DSPR ( UPLO, N, ALPHA, X, INCX, AP ) - * - * SUBROUTINE DSYR2 ( UPLO, N, ALPHA, X, INCX, Y, INCY, A, LDA ) - * - * SUBROUTINE DSPR2 ( UPLO, N, ALPHA, X, INCX, Y, INCY, AP ) - * - * See: - * - * Dongarra J. J., Du Croz J. J., Hammarling S. and Hanson R. J.. - * An extended set of Fortran Basic Linear Algebra Subprograms. - * - * Technical Memoranda Nos. 41 (revision 3) and 81, Mathematics - * and Computer Science Division, Argonne National Laboratory, - * 9700 South Cass Avenue, Argonne, Illinois 60439, US. - * - * Or - * - * NAG Technical Reports TR3/87 and TR4/87, Numerical Algorithms - * Group Ltd., NAG Central Office, 256 Banbury Road, Oxford - * OX2 7DE, UK, and Numerical Algorithms Group Inc., 1101 31st - * Street, Suite 100, Downers Grove, Illinois 60515-1263, USA. - * - ************************************************************************ - * SUBROUTINE DGEMV ( TRANS, M, N, ALPHA, A, LDA, X, INCX, $ BETA, Y, INCY ) * .. Scalar Arguments .. --- 1,3 ---- diff -cNr octave-2.0.1/libcruft/blas/dger.f octave-2.0.2/libcruft/blas/dger.f *** octave-2.0.1/libcruft/blas/dger.f Thu Jul 18 20:29:10 1996 --- octave-2.0.2/libcruft/blas/dger.f Wed Jan 15 20:58:44 1997 *************** *** 1,6 **** - * - ************************************************************************ - * SUBROUTINE DGER ( M, N, ALPHA, X, INCX, Y, INCY, A, LDA ) * .. Scalar Arguments .. DOUBLE PRECISION ALPHA --- 1,3 ---- diff -cNr octave-2.0.1/libcruft/blas/dnrm2.f octave-2.0.2/libcruft/blas/dnrm2.f *** octave-2.0.1/libcruft/blas/dnrm2.f Thu Jul 18 20:29:10 1996 --- octave-2.0.2/libcruft/blas/dnrm2.f Wed Jan 15 20:58:44 1997 *************** *** 1,122 **** ! DOUBLE PRECISION FUNCTION DNRM2 ( N, DX, INCX) ! INTEGER NEXT ! DOUBLE PRECISION DX(1), CUTLO, CUTHI, HITEST, SUM, XMAX,ZERO,ONE ! DATA ZERO, ONE /0.0D0, 1.0D0/ ! C ! C EUCLIDEAN NORM OF THE N-VECTOR STORED IN DX() WITH STORAGE ! C INCREMENT INCX . ! C IF N .LE. 0 RETURN WITH RESULT = 0. ! C IF N .GE. 1 THEN INCX MUST BE .GE. 1 ! C ! C C.L.LAWSON, 1978 JAN 08 ! C ! C FOUR PHASE METHOD USING TWO BUILT-IN CONSTANTS THAT ARE ! C HOPEFULLY APPLICABLE TO ALL MACHINES. ! C CUTLO = MAXIMUM OF DSQRT(U/EPS) OVER ALL KNOWN MACHINES. ! C CUTHI = MINIMUM OF DSQRT(V) OVER ALL KNOWN MACHINES. ! C WHERE ! C EPS = SMALLEST NO. SUCH THAT EPS + 1. .GT. 1. ! C U = SMALLEST POSITIVE NO. (UNDERFLOW LIMIT) ! C V = LARGEST NO. (OVERFLOW LIMIT) ! C ! C BRIEF OUTLINE OF ALGORITHM.. ! C ! C PHASE 1 SCANS ZERO COMPONENTS. ! C MOVE TO PHASE 2 WHEN A COMPONENT IS NONZERO AND .LE. CUTLO ! C MOVE TO PHASE 3 WHEN A COMPONENT IS .GT. CUTLO ! C MOVE TO PHASE 4 WHEN A COMPONENT IS .GE. CUTHI/M ! C WHERE M = N FOR X() REAL AND M = 2*N FOR COMPLEX. ! C ! C VALUES FOR CUTLO AND CUTHI.. ! C FROM THE ENVIRONMENTAL PARAMETERS LISTED IN THE IMSL CONVERTER ! C DOCUMENT THE LIMITING VALUES ARE AS FOLLOWS.. ! C CUTLO, S.P. U/EPS = 2**(-102) FOR HONEYWELL. CLOSE SECONDS ARE ! C UNIVAC AND DEC AT 2**(-103) ! C THUS CUTLO = 2**(-51) = 4.44089E-16 ! C CUTHI, S.P. V = 2**127 FOR UNIVAC, HONEYWELL, AND DEC. ! C THUS CUTHI = 2**(63.5) = 1.30438E19 ! C CUTLO, D.P. U/EPS = 2**(-67) FOR HONEYWELL AND DEC. ! C THUS CUTLO = 2**(-33.5) = 8.23181D-11 ! C CUTHI, D.P. SAME AS S.P. CUTHI = 1.30438D19 ! C DATA CUTLO, CUTHI / 8.232D-11, 1.304D19 / ! C DATA CUTLO, CUTHI / 4.441E-16, 1.304E19 / ! DATA CUTLO, CUTHI / 8.232D-11, 1.304D19 / ! C ! IF(N .GT. 0) GO TO 10 ! DNRM2 = ZERO ! GO TO 300 ! C ! 10 ASSIGN 30 TO NEXT ! SUM = ZERO ! NN = N * INCX ! C BEGIN MAIN LOOP ! I = 1 ! 20 GO TO NEXT,(30, 50, 70, 110) ! 30 IF( DABS(DX(I)) .GT. CUTLO) GO TO 85 ! ASSIGN 50 TO NEXT ! XMAX = ZERO ! C ! C PHASE 1. SUM IS ZERO ! C ! 50 IF( DX(I) .EQ. ZERO) GO TO 200 ! IF( DABS(DX(I)) .GT. CUTLO) GO TO 85 ! C ! C PREPARE FOR PHASE 2. ! ASSIGN 70 TO NEXT ! GO TO 105 ! C ! C PREPARE FOR PHASE 4. ! C ! 100 I = J ! ASSIGN 110 TO NEXT ! SUM = (SUM / DX(I)) / DX(I) ! 105 XMAX = DABS(DX(I)) ! GO TO 115 ! C ! C PHASE 2. SUM IS SMALL. ! C SCALE TO AVOID DESTRUCTIVE UNDERFLOW. ! C ! 70 IF( DABS(DX(I)) .GT. CUTLO ) GO TO 75 ! C ! C COMMON CODE FOR PHASES 2 AND 4. ! C IN PHASE 4 SUM IS LARGE. SCALE TO AVOID OVERFLOW. ! C ! 110 IF( DABS(DX(I)) .LE. XMAX ) GO TO 115 ! SUM = ONE + SUM * (XMAX / DX(I))**2 ! XMAX = DABS(DX(I)) ! GO TO 200 ! C ! 115 SUM = SUM + (DX(I)/XMAX)**2 ! GO TO 200 ! C ! C ! C PREPARE FOR PHASE 3. ! C ! 75 SUM = (SUM * XMAX) * XMAX ! C ! C ! C FOR REAL OR D.P. SET HITEST = CUTHI/N ! C FOR COMPLEX SET HITEST = CUTHI/(2*N) ! C ! 85 HITEST = CUTHI/FLOAT( N ) ! C ! C PHASE 3. SUM IS MID-RANGE. NO SCALING. ! C ! DO 95 J =I,NN,INCX ! IF(DABS(DX(J)) .GE. HITEST) GO TO 100 ! 95 SUM = SUM + DX(J)**2 ! DNRM2 = DSQRT( SUM ) ! GO TO 300 ! C ! 200 CONTINUE ! I = I + INCX ! IF ( I .LE. NN ) GO TO 20 ! C ! C END OF MAIN LOOP. ! C ! C COMPUTE SQUARE ROOT AND ADJUST FOR SCALING. ! C ! DNRM2 = XMAX * DSQRT(SUM) ! 300 CONTINUE RETURN END --- 1,60 ---- ! DOUBLE PRECISION FUNCTION DNRM2 ( N, X, INCX ) ! * .. Scalar Arguments .. ! INTEGER INCX, N ! * .. Array Arguments .. ! DOUBLE PRECISION X( * ) ! * .. ! * ! * DNRM2 returns the euclidean norm of a vector via the function ! * name, so that ! * ! * DNRM2 := sqrt( x'*x ) ! * ! * ! * ! * -- This version written on 25-October-1982. ! * Modified on 14-October-1993 to inline the call to DLASSQ. ! * Sven Hammarling, Nag Ltd. ! * ! * ! * .. Parameters .. ! DOUBLE PRECISION ONE , ZERO ! PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 ) ! * .. Local Scalars .. ! INTEGER IX ! DOUBLE PRECISION ABSXI, NORM, SCALE, SSQ ! * .. Intrinsic Functions .. ! INTRINSIC ABS, SQRT ! * .. ! * .. Executable Statements .. ! IF( N.LT.1 .OR. INCX.LT.1 )THEN ! NORM = ZERO ! ELSE IF( N.EQ.1 )THEN ! NORM = ABS( X( 1 ) ) ! ELSE ! SCALE = ZERO ! SSQ = ONE ! * The following loop is equivalent to this call to the LAPACK ! * auxiliary routine: ! * CALL DLASSQ( N, X, INCX, SCALE, SSQ ) ! * ! DO 10, IX = 1, 1 + ( N - 1 )*INCX, INCX ! IF( X( IX ).NE.ZERO )THEN ! ABSXI = ABS( X( IX ) ) ! IF( SCALE.LT.ABSXI )THEN ! SSQ = ONE + SSQ*( SCALE/ABSXI )**2 ! SCALE = ABSXI ! ELSE ! SSQ = SSQ + ( ABSXI/SCALE )**2 ! END IF ! END IF ! 10 CONTINUE ! NORM = SCALE * SQRT( SSQ ) ! END IF ! * ! DNRM2 = NORM RETURN + * + * End of DNRM2. + * END diff -cNr octave-2.0.1/libcruft/blas/drot.f octave-2.0.2/libcruft/blas/drot.f *** octave-2.0.1/libcruft/blas/drot.f Thu Jul 18 20:29:10 1996 --- octave-2.0.2/libcruft/blas/drot.f Wed Jan 15 20:58:44 1997 *************** *** 1,36 **** ! SUBROUTINE DROT (N,DX,INCX,DY,INCY,C,S) ! C ! C APPLIES A PLANE ROTATION. ! C JACK DONGARRA, LINPACK, 3/11/78. ! C ! DOUBLE PRECISION DX(1),DY(1),DTEMP,C,S ! INTEGER I,INCX,INCY,IX,IY,N ! C ! IF(N.LE.0)RETURN ! IF(INCX.EQ.1.AND.INCY.EQ.1)GO TO 20 ! C ! C CODE FOR UNEQUAL INCREMENTS OR EQUAL INCREMENTS NOT EQUAL ! C TO 1 ! C ! IX = 1 ! IY = 1 ! IF(INCX.LT.0)IX = (-N+1)*INCX + 1 ! IF(INCY.LT.0)IY = (-N+1)*INCY + 1 ! DO 10 I = 1,N ! DTEMP = C*DX(IX) + S*DY(IY) ! DY(IY) = C*DY(IY) - S*DX(IX) ! DX(IX) = DTEMP ! IX = IX + INCX ! IY = IY + INCY ! 10 CONTINUE ! RETURN ! C ! C CODE FOR BOTH INCREMENTS EQUAL TO 1 ! C ! 20 DO 30 I = 1,N ! DTEMP = C*DX(I) + S*DY(I) ! DY(I) = C*DY(I) - S*DX(I) ! DX(I) = DTEMP ! 30 CONTINUE ! RETURN ! END --- 1,37 ---- ! subroutine drot (n,dx,incx,dy,incy,c,s) ! c ! c applies a plane rotation. ! c jack dongarra, linpack, 3/11/78. ! c modified 12/3/93, array(1) declarations changed to array(*) ! c ! double precision dx(*),dy(*),dtemp,c,s ! integer i,incx,incy,ix,iy,n ! c ! if(n.le.0)return ! if(incx.eq.1.and.incy.eq.1)go to 20 ! c ! c code for unequal increments or equal increments not equal ! c to 1 ! c ! ix = 1 ! iy = 1 ! if(incx.lt.0)ix = (-n+1)*incx + 1 ! if(incy.lt.0)iy = (-n+1)*incy + 1 ! do 10 i = 1,n ! dtemp = c*dx(ix) + s*dy(iy) ! dy(iy) = c*dy(iy) - s*dx(ix) ! dx(ix) = dtemp ! ix = ix + incx ! iy = iy + incy ! 10 continue ! return ! c ! c code for both increments equal to 1 ! c ! 20 do 30 i = 1,n ! dtemp = c*dx(i) + s*dy(i) ! dy(i) = c*dy(i) - s*dx(i) ! dx(i) = dtemp ! 30 continue ! return ! end diff -cNr octave-2.0.1/libcruft/blas/dscal.f octave-2.0.2/libcruft/blas/dscal.f *** octave-2.0.1/libcruft/blas/dscal.f Thu Jul 18 20:29:10 1996 --- octave-2.0.2/libcruft/blas/dscal.f Wed Jan 15 20:58:44 1997 *************** *** 1,41 **** ! SUBROUTINE DSCAL(N,DA,DX,INCX) ! C ! C SCALES A VECTOR BY A CONSTANT. ! C USES UNROLLED LOOPS FOR INCREMENT EQUAL TO ONE. ! C JACK DONGARRA, LINPACK, 3/11/78. ! C ! DOUBLE PRECISION DA,DX(1) ! INTEGER I,INCX,M,MP1,N,NINCX ! C ! IF(N.LE.0)RETURN ! IF(INCX.EQ.1)GO TO 20 ! C ! C CODE FOR INCREMENT NOT EQUAL TO 1 ! C ! NINCX = N*INCX ! DO 10 I = 1,NINCX,INCX ! DX(I) = DA*DX(I) ! 10 CONTINUE ! RETURN ! C ! C CODE FOR INCREMENT EQUAL TO 1 ! C ! C ! C CLEAN-UP LOOP ! C ! 20 M = MOD(N,5) ! IF( M .EQ. 0 ) GO TO 40 ! DO 30 I = 1,M ! DX(I) = DA*DX(I) ! 30 CONTINUE ! IF( N .LT. 5 ) RETURN ! 40 MP1 = M + 1 ! DO 50 I = MP1,N,5 ! DX(I) = DA*DX(I) ! DX(I + 1) = DA*DX(I + 1) ! DX(I + 2) = DA*DX(I + 2) ! DX(I + 3) = DA*DX(I + 3) ! DX(I + 4) = DA*DX(I + 4) ! 50 CONTINUE ! RETURN ! END --- 1,43 ---- ! subroutine dscal(n,da,dx,incx) ! c ! c scales a vector by a constant. ! c uses unrolled loops for increment equal to one. ! c jack dongarra, linpack, 3/11/78. ! c modified 3/93 to return if incx .le. 0. ! c modified 12/3/93, array(1) declarations changed to array(*) ! c ! double precision da,dx(*) ! integer i,incx,m,mp1,n,nincx ! c ! if( n.le.0 .or. incx.le.0 )return ! if(incx.eq.1)go to 20 ! c ! c code for increment not equal to 1 ! c ! nincx = n*incx ! do 10 i = 1,nincx,incx ! dx(i) = da*dx(i) ! 10 continue ! return ! c ! c code for increment equal to 1 ! c ! c ! c clean-up loop ! c ! 20 m = mod(n,5) ! if( m .eq. 0 ) go to 40 ! do 30 i = 1,m ! dx(i) = da*dx(i) ! 30 continue ! if( n .lt. 5 ) return ! 40 mp1 = m + 1 ! do 50 i = mp1,n,5 ! dx(i) = da*dx(i) ! dx(i + 1) = da*dx(i + 1) ! dx(i + 2) = da*dx(i + 2) ! dx(i + 3) = da*dx(i + 3) ! dx(i + 4) = da*dx(i + 4) ! 50 continue ! return ! end diff -cNr octave-2.0.1/libcruft/blas/dswap.f octave-2.0.2/libcruft/blas/dswap.f *** octave-2.0.1/libcruft/blas/dswap.f Thu Jul 18 20:29:10 1996 --- octave-2.0.2/libcruft/blas/dswap.f Wed Jan 15 20:58:45 1997 *************** *** 1,55 **** ! SUBROUTINE DSWAP (N,DX,INCX,DY,INCY) ! C ! C INTERCHANGES TWO VECTORS. ! C USES UNROLLED LOOPS FOR INCREMENTS EQUAL ONE. ! C JACK DONGARRA, LINPACK, 3/11/78. ! C ! DOUBLE PRECISION DX(1),DY(1),DTEMP ! INTEGER I,INCX,INCY,IX,IY,M,MP1,N ! C ! IF(N.LE.0)RETURN ! IF(INCX.EQ.1.AND.INCY.EQ.1)GO TO 20 ! C ! C CODE FOR UNEQUAL INCREMENTS OR EQUAL INCREMENTS NOT EQUAL ! C TO 1 ! C ! IX = 1 ! IY = 1 ! IF(INCX.LT.0)IX = (-N+1)*INCX + 1 ! IF(INCY.LT.0)IY = (-N+1)*INCY + 1 ! DO 10 I = 1,N ! DTEMP = DX(IX) ! DX(IX) = DY(IY) ! DY(IY) = DTEMP ! IX = IX + INCX ! IY = IY + INCY ! 10 CONTINUE ! RETURN ! C ! C CODE FOR BOTH INCREMENTS EQUAL TO 1 ! C ! C ! C CLEAN-UP LOOP ! C ! 20 M = MOD(N,3) ! IF( M .EQ. 0 ) GO TO 40 ! DO 30 I = 1,M ! DTEMP = DX(I) ! DX(I) = DY(I) ! DY(I) = DTEMP ! 30 CONTINUE ! IF( N .LT. 3 ) RETURN ! 40 MP1 = M + 1 ! DO 50 I = MP1,N,3 ! DTEMP = DX(I) ! DX(I) = DY(I) ! DY(I) = DTEMP ! DTEMP = DX(I + 1) ! DX(I + 1) = DY(I + 1) ! DY(I + 1) = DTEMP ! DTEMP = DX(I + 2) ! DX(I + 2) = DY(I + 2) ! DY(I + 2) = DTEMP ! 50 CONTINUE ! RETURN ! END --- 1,56 ---- ! subroutine dswap (n,dx,incx,dy,incy) ! c ! c interchanges two vectors. ! c uses unrolled loops for increments equal one. ! c jack dongarra, linpack, 3/11/78. ! c modified 12/3/93, array(1) declarations changed to array(*) ! c ! double precision dx(*),dy(*),dtemp ! integer i,incx,incy,ix,iy,m,mp1,n ! c ! if(n.le.0)return ! if(incx.eq.1.and.incy.eq.1)go to 20 ! c ! c code for unequal increments or equal increments not equal ! c to 1 ! c ! ix = 1 ! iy = 1 ! if(incx.lt.0)ix = (-n+1)*incx + 1 ! if(incy.lt.0)iy = (-n+1)*incy + 1 ! do 10 i = 1,n ! dtemp = dx(ix) ! dx(ix) = dy(iy) ! dy(iy) = dtemp ! ix = ix + incx ! iy = iy + incy ! 10 continue ! return ! c ! c code for both increments equal to 1 ! c ! c ! c clean-up loop ! c ! 20 m = mod(n,3) ! if( m .eq. 0 ) go to 40 ! do 30 i = 1,m ! dtemp = dx(i) ! dx(i) = dy(i) ! dy(i) = dtemp ! 30 continue ! if( n .lt. 3 ) return ! 40 mp1 = m + 1 ! do 50 i = mp1,n,3 ! dtemp = dx(i) ! dx(i) = dy(i) ! dy(i) = dtemp ! dtemp = dx(i + 1) ! dx(i + 1) = dy(i + 1) ! dy(i + 1) = dtemp ! dtemp = dx(i + 2) ! dx(i + 2) = dy(i + 2) ! dy(i + 2) = dtemp ! 50 continue ! return ! end diff -cNr octave-2.0.1/libcruft/blas/dsyr.f octave-2.0.2/libcruft/blas/dsyr.f *** octave-2.0.1/libcruft/blas/dsyr.f Thu Jul 18 20:29:10 1996 --- octave-2.0.2/libcruft/blas/dsyr.f Wed Jan 15 20:58:45 1997 *************** *** 1,6 **** - * - ************************************************************************ - * SUBROUTINE DSYR ( UPLO, N, ALPHA, X, INCX, A, LDA ) * .. Scalar Arguments .. DOUBLE PRECISION ALPHA --- 1,3 ---- diff -cNr octave-2.0.1/libcruft/blas/dsyrk.f octave-2.0.2/libcruft/blas/dsyrk.f *** octave-2.0.1/libcruft/blas/dsyrk.f Thu Jul 18 20:29:10 1996 --- octave-2.0.2/libcruft/blas/dsyrk.f Wed Jan 15 20:58:45 1997 *************** *** 1,6 **** - * - ************************************************************************ - * SUBROUTINE DSYRK ( UPLO, TRANS, N, K, ALPHA, A, LDA, $ BETA, C, LDC ) * .. Scalar Arguments .. --- 1,3 ---- diff -cNr octave-2.0.1/libcruft/blas/dtrmm.f octave-2.0.2/libcruft/blas/dtrmm.f *** octave-2.0.1/libcruft/blas/dtrmm.f Thu Jul 18 20:29:10 1996 --- octave-2.0.2/libcruft/blas/dtrmm.f Wed Jan 15 20:58:46 1997 *************** *** 1,6 **** - * - ************************************************************************ - * SUBROUTINE DTRMM ( SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, $ B, LDB ) * .. Scalar Arguments .. --- 1,3 ---- *************** *** 237,243 **** END IF ELSE * ! * Form B := alpha*B*A'. * IF( UPPER )THEN DO 110, J = 1, N --- 234,240 ---- END IF ELSE * ! * Form B := alpha*A'*B. * IF( UPPER )THEN DO 110, J = 1, N diff -cNr octave-2.0.1/libcruft/blas/dtrmv.f octave-2.0.2/libcruft/blas/dtrmv.f *** octave-2.0.1/libcruft/blas/dtrmv.f Thu Jul 18 20:29:10 1996 --- octave-2.0.2/libcruft/blas/dtrmv.f Wed Jan 15 20:58:46 1997 *************** *** 1,6 **** - * - ************************************************************************ - * SUBROUTINE DTRMV ( UPLO, TRANS, DIAG, N, A, LDA, X, INCX ) * .. Scalar Arguments .. INTEGER INCX, LDA, N --- 1,3 ---- diff -cNr octave-2.0.1/libcruft/blas/dtrsm.f octave-2.0.2/libcruft/blas/dtrsm.f *** octave-2.0.1/libcruft/blas/dtrsm.f Thu Jul 18 20:29:10 1996 --- octave-2.0.2/libcruft/blas/dtrsm.f Wed Jan 15 20:58:46 1997 *************** *** 1,6 **** - * - ************************************************************************ - * SUBROUTINE DTRSM ( SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, $ B, LDB ) * .. Scalar Arguments .. --- 1,3 ---- diff -cNr octave-2.0.1/libcruft/blas/dtrsv.f octave-2.0.2/libcruft/blas/dtrsv.f *** octave-2.0.1/libcruft/blas/dtrsv.f Thu Jul 18 20:29:10 1996 --- octave-2.0.2/libcruft/blas/dtrsv.f Wed Jan 15 20:58:46 1997 *************** *** 1,6 **** - * - ************************************************************************ - * SUBROUTINE DTRSV ( UPLO, TRANS, DIAG, N, A, LDA, X, INCX ) * .. Scalar Arguments .. INTEGER INCX, LDA, N --- 1,3 ---- diff -cNr octave-2.0.1/libcruft/blas/dzasum.f octave-2.0.2/libcruft/blas/dzasum.f *** octave-2.0.1/libcruft/blas/dzasum.f Thu Jul 18 20:29:10 1996 --- octave-2.0.2/libcruft/blas/dzasum.f Wed Jan 15 20:58:46 1997 *************** *** 2,22 **** c c takes the sum of the absolute values. c jack dongarra, 3/11/78. ! c modified to correct problem with negative increment, 8/21/90. c ! double complex zx(1) double precision stemp,dcabs1 integer i,incx,ix,n c dzasum = 0.0d0 stemp = 0.0d0 ! if(n.le.0)return if(incx.eq.1)go to 20 c c code for increment not equal to 1 c ix = 1 - if(incx.lt.0)ix = (-n+1)*incx + 1 do 10 i = 1,n stemp = stemp + dcabs1(zx(ix)) ix = ix + incx --- 2,22 ---- c c takes the sum of the absolute values. c jack dongarra, 3/11/78. ! c modified 3/93 to return if incx .le. 0. ! c modified 12/3/93, array(1) declarations changed to array(*) c ! double complex zx(*) double precision stemp,dcabs1 integer i,incx,ix,n c dzasum = 0.0d0 stemp = 0.0d0 ! if( n.le.0 .or. incx.le.0 )return if(incx.eq.1)go to 20 c c code for increment not equal to 1 c ix = 1 do 10 i = 1,n stemp = stemp + dcabs1(zx(ix)) ix = ix + incx diff -cNr octave-2.0.1/libcruft/blas/dznrm2.f octave-2.0.2/libcruft/blas/dznrm2.f *** octave-2.0.1/libcruft/blas/dznrm2.f Thu Jul 18 20:29:10 1996 --- octave-2.0.2/libcruft/blas/dznrm2.f Wed Jan 15 20:58:46 1997 *************** *** 1,138 **** ! double precision function dznrm2( n, zx, incx) ! logical imag, scale ! integer i, incx, ix, n, next ! double precision cutlo, cuthi, hitest, sum, xmax, absx, zero, one ! double complex zx(1) ! double precision dreal,dimag ! double complex zdumr,zdumi ! dreal(zdumr) = zdumr ! dimag(zdumi) = (0.0d0,-1.0d0)*zdumi ! data zero, one /0.0d0, 1.0d0/ ! c ! c unitary norm of the complex n-vector stored in zx() with storage ! c increment incx . ! c if n .le. 0 return with result = 0. ! c if n .ge. 1 then incx must be .ge. 1 ! c ! c c.l.lawson , 1978 jan 08 ! c modified to correct problem with negative increment, 8/21/90. ! c ! c four phase method using two built-in constants that are ! c hopefully applicable to all machines. ! c cutlo = maximum of sqrt(u/eps) over all known machines. ! c cuthi = minimum of sqrt(v) over all known machines. ! c where ! c eps = smallest no. such that eps + 1. .gt. 1. ! c u = smallest positive no. (underflow limit) ! c v = largest no. (overflow limit) ! c ! c brief outline of algorithm.. ! c ! c phase 1 scans zero components. ! c move to phase 2 when a component is nonzero and .le. cutlo ! c move to phase 3 when a component is .gt. cutlo ! c move to phase 4 when a component is .ge. cuthi/m ! c where m = n for x() real and m = 2*n for complex. ! c ! c values for cutlo and cuthi.. ! c from the environmental parameters listed in the imsl converter ! c document the limiting values are as follows.. ! c cutlo, s.p. u/eps = 2**(-102) for honeywell. close seconds are ! c univac and dec at 2**(-103) ! c thus cutlo = 2**(-51) = 4.44089e-16 ! c cuthi, s.p. v = 2**127 for univac, honeywell, and dec. ! c thus cuthi = 2**(63.5) = 1.30438e19 ! c cutlo, d.p. u/eps = 2**(-67) for honeywell and dec. ! c thus cutlo = 2**(-33.5) = 8.23181d-11 ! c cuthi, d.p. same as s.p. cuthi = 1.30438d19 ! c data cutlo, cuthi / 8.232d-11, 1.304d19 / ! c data cutlo, cuthi / 4.441e-16, 1.304e19 / ! data cutlo, cuthi / 8.232d-11, 1.304d19 / ! c ! if(n .gt. 0) go to 10 ! dznrm2 = zero ! go to 300 ! c ! 10 assign 30 to next ! sum = zero ! i = 1 ! if( incx .lt. 0 )i = (-n+1)*incx + 1 ! c begin main loop ! do 220 ix = 1,n ! absx = dabs(dreal(zx(i))) ! imag = .false. ! go to next,(30, 50, 70, 90, 110) ! 30 if( absx .gt. cutlo) go to 85 ! assign 50 to next ! scale = .false. ! c ! c phase 1. sum is zero ! c ! 50 if( absx .eq. zero) go to 200 ! if( absx .gt. cutlo) go to 85 ! c ! c prepare for phase 2. ! assign 70 to next ! go to 105 ! c ! c prepare for phase 4. ! c ! 100 assign 110 to next ! sum = (sum / absx) / absx ! 105 scale = .true. ! xmax = absx ! go to 115 ! c ! c phase 2. sum is small. ! c scale to avoid destructive underflow. ! c ! 70 if( absx .gt. cutlo ) go to 75 ! c ! c common code for phases 2 and 4. ! c in phase 4 sum is large. scale to avoid overflow. ! c ! 110 if( absx .le. xmax ) go to 115 ! sum = one + sum * (xmax / absx)**2 ! xmax = absx ! go to 200 ! c ! 115 sum = sum + (absx/xmax)**2 ! go to 200 ! c ! c ! c prepare for phase 3. ! c ! 75 sum = (sum * xmax) * xmax ! c ! 85 assign 90 to next ! scale = .false. ! c ! c for real or d.p. set hitest = cuthi/n ! c for complex set hitest = cuthi/(2*n) ! c ! hitest = cuthi/dble( 2*n ) ! c ! c phase 3. sum is mid-range. no scaling. ! c ! 90 if(absx .ge. hitest) go to 100 ! sum = sum + absx**2 ! 200 continue ! c control selection of real and imaginary parts. ! c ! if(imag) go to 210 ! absx = dabs(dimag(zx(i))) ! imag = .true. ! go to next,( 50, 70, 90, 110 ) ! c ! 210 continue ! i = i + incx ! 220 continue ! c ! c end of main loop. ! c compute square root and adjust for scaling. ! c ! dznrm2 = dsqrt(sum) ! if(scale) dznrm2 = dznrm2 * xmax ! 300 continue ! return ! end --- 1,67 ---- ! DOUBLE PRECISION FUNCTION DZNRM2( N, X, INCX ) ! * .. Scalar Arguments .. ! INTEGER INCX, N ! * .. Array Arguments .. ! COMPLEX*16 X( * ) ! * .. ! * ! * DZNRM2 returns the euclidean norm of a vector via the function ! * name, so that ! * ! * DZNRM2 := sqrt( conjg( x' )*x ) ! * ! * ! * ! * -- This version written on 25-October-1982. ! * Modified on 14-October-1993 to inline the call to ZLASSQ. ! * Sven Hammarling, Nag Ltd. ! * ! * ! * .. Parameters .. ! DOUBLE PRECISION ONE , ZERO ! PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 ) ! * .. Local Scalars .. ! INTEGER IX ! DOUBLE PRECISION NORM, SCALE, SSQ, TEMP ! * .. Intrinsic Functions .. ! INTRINSIC ABS, DIMAG, DBLE, SQRT ! * .. ! * .. Executable Statements .. ! IF( N.LT.1 .OR. INCX.LT.1 )THEN ! NORM = ZERO ! ELSE ! SCALE = ZERO ! SSQ = ONE ! * The following loop is equivalent to this call to the LAPACK ! * auxiliary routine: ! * CALL ZLASSQ( N, X, INCX, SCALE, SSQ ) ! * ! DO 10, IX = 1, 1 + ( N - 1 )*INCX, INCX ! IF( DBLE( X( IX ) ).NE.ZERO )THEN ! TEMP = ABS( DBLE( X( IX ) ) ) ! IF( SCALE.LT.TEMP )THEN ! SSQ = ONE + SSQ*( SCALE/TEMP )**2 ! SCALE = TEMP ! ELSE ! SSQ = SSQ + ( TEMP/SCALE )**2 ! END IF ! END IF ! IF( DIMAG( X( IX ) ).NE.ZERO )THEN ! TEMP = ABS( DIMAG( X( IX ) ) ) ! IF( SCALE.LT.TEMP )THEN ! SSQ = ONE + SSQ*( SCALE/TEMP )**2 ! SCALE = TEMP ! ELSE ! SSQ = SSQ + ( TEMP/SCALE )**2 ! END IF ! END IF ! 10 CONTINUE ! NORM = SCALE * SQRT( SSQ ) ! END IF ! * ! DZNRM2 = NORM ! RETURN ! * ! * End of DZNRM2. ! * ! END diff -cNr octave-2.0.1/libcruft/blas/idamax.f octave-2.0.2/libcruft/blas/idamax.f *** octave-2.0.1/libcruft/blas/idamax.f Thu Jul 18 20:29:10 1996 --- octave-2.0.2/libcruft/blas/idamax.f Wed Jan 15 20:58:47 1997 *************** *** 1,37 **** ! INTEGER FUNCTION IDAMAX(N,DX,INCX) ! C ! C FINDS THE INDEX OF ELEMENT HAVING MAX. ABSOLUTE VALUE. ! C JACK DONGARRA, LINPACK, 3/11/78. ! C ! DOUBLE PRECISION DX(1),DMAX ! INTEGER I,INCX,IX,N ! C ! IDAMAX = 0 ! IF( N .LT. 1 ) RETURN ! IDAMAX = 1 ! IF(N.EQ.1)RETURN ! IF(INCX.EQ.1)GO TO 20 ! C ! C CODE FOR INCREMENT NOT EQUAL TO 1 ! C ! IX = 1 ! DMAX = DABS(DX(1)) ! IX = IX + INCX ! DO 10 I = 2,N ! IF(DABS(DX(IX)).LE.DMAX) GO TO 5 ! IDAMAX = I ! DMAX = DABS(DX(IX)) ! 5 IX = IX + INCX ! 10 CONTINUE ! RETURN ! C ! C CODE FOR INCREMENT EQUAL TO 1 ! C ! 20 DMAX = DABS(DX(1)) ! DO 30 I = 2,N ! IF(DABS(DX(I)).LE.DMAX) GO TO 30 ! IDAMAX = I ! DMAX = DABS(DX(I)) ! 30 CONTINUE ! RETURN ! END --- 1,39 ---- ! integer function idamax(n,dx,incx) ! c ! c finds the index of element having max. absolute value. ! c jack dongarra, linpack, 3/11/78. ! c modified 3/93 to return if incx .le. 0. ! c modified 12/3/93, array(1) declarations changed to array(*) ! c ! double precision dx(*),dmax ! integer i,incx,ix,n ! c ! idamax = 0 ! if( n.lt.1 .or. incx.le.0 ) return ! idamax = 1 ! if(n.eq.1)return ! if(incx.eq.1)go to 20 ! c ! c code for increment not equal to 1 ! c ! ix = 1 ! dmax = dabs(dx(1)) ! ix = ix + incx ! do 10 i = 2,n ! if(dabs(dx(ix)).le.dmax) go to 5 ! idamax = i ! dmax = dabs(dx(ix)) ! 5 ix = ix + incx ! 10 continue ! return ! c ! c code for increment equal to 1 ! c ! 20 dmax = dabs(dx(1)) ! do 30 i = 2,n ! if(dabs(dx(i)).le.dmax) go to 30 ! idamax = i ! dmax = dabs(dx(i)) ! 30 continue ! return ! end diff -cNr octave-2.0.1/libcruft/blas/izamax.f octave-2.0.2/libcruft/blas/izamax.f *** octave-2.0.1/libcruft/blas/izamax.f Thu Jul 18 20:29:10 1996 --- octave-2.0.2/libcruft/blas/izamax.f Wed Jan 15 20:58:47 1997 *************** *** 2,16 **** c c finds the index of element having max. absolute value. c jack dongarra, 1/15/85. ! c modified to correct problem with negative increment, 8/21/90. c ! double complex zx(1) double precision smax integer i,incx,ix,n double precision dcabs1 c izamax = 0 ! if(n.lt.1)return izamax = 1 if(n.eq.1)return if(incx.eq.1)go to 20 --- 2,17 ---- c c finds the index of element having max. absolute value. c jack dongarra, 1/15/85. ! c modified 3/93 to return if incx .le. 0. ! c modified 12/3/93, array(1) declarations changed to array(*) c ! double complex zx(*) double precision smax integer i,incx,ix,n double precision dcabs1 c izamax = 0 ! if( n.lt.1 .or. incx.le.0 )return izamax = 1 if(n.eq.1)return if(incx.eq.1)go to 20 *************** *** 18,25 **** c code for increment not equal to 1 c ix = 1 ! if(incx.lt.0)ix = (-n+1)*incx + 1 ! smax = dcabs1(zx(ix)) ix = ix + incx do 10 i = 2,n if(dcabs1(zx(ix)).le.smax) go to 5 --- 19,25 ---- c code for increment not equal to 1 c ix = 1 ! smax = dcabs1(zx(1)) ix = ix + incx do 10 i = 2,n if(dcabs1(zx(ix)).le.smax) go to 5 diff -cNr octave-2.0.1/libcruft/blas/lsame.f octave-2.0.2/libcruft/blas/lsame.f *** octave-2.0.1/libcruft/blas/lsame.f Thu Jul 18 20:29:10 1996 --- octave-2.0.2/libcruft/blas/lsame.f Wed Jan 15 20:58:47 1997 *************** *** 1,89 **** ! LOGICAL FUNCTION LSAME ( CA, CB ) * .. Scalar Arguments .. ! CHARACTER*1 CA, CB * .. * * Purpose * ======= * ! * LSAME tests if CA is the same letter as CB regardless of case. ! * CB is assumed to be an upper case letter. LSAME returns .TRUE. if ! * CA is either the same as CB or the equivalent lower case letter. ! * ! * N.B. This version of the routine is only correct for ASCII code. ! * Installers must modify the routine for other character-codes. ! * ! * For EBCDIC systems the constant IOFF must be changed to -64. ! * For CDC systems using 6-12 bit representations, the system- ! * specific code in comments must be activated. ! * ! * Parameters ! * ========== * ! * CA - CHARACTER*1 ! * CB - CHARACTER*1 ! * On entry, CA and CB specify characters to be compared. ! * Unchanged on exit. * * ! * Auxiliary routine for Level 2 Blas. * - * -- Written on 20-July-1986 - * Richard Hanson, Sandia National Labs. - * Jeremy Du Croz, Nag Central Office. - * - * .. Parameters .. - INTEGER IOFF - PARAMETER ( IOFF=32 ) * .. Intrinsic Functions .. ! INTRINSIC ICHAR * .. Executable Statements .. * * Test if the characters are equal * ! LSAME = CA .EQ. CB * ! * Now test for equivalence * ! IF ( .NOT.LSAME ) THEN ! LSAME = ICHAR(CA) - IOFF .EQ. ICHAR(CB) ! END IF * ! RETURN * ! * The following comments contain code for CDC systems using 6-12 bit ! * representations. * ! * .. Parameters .. ! * INTEGER ICIRFX ! * PARAMETER ( ICIRFX=62 ) ! * .. Scalar Arguments .. ! * CHARACTER*1 CB ! * .. Array Arguments .. ! * CHARACTER*1 CA(*) ! * .. Local Scalars .. ! * INTEGER IVAL ! * .. Intrinsic Functions .. ! * INTRINSIC ICHAR, CHAR ! * .. Executable Statements .. * ! * See if the first character in string CA equals string CB. * ! * LSAME = CA(1) .EQ. CB .AND. CA(1) .NE. CHAR(ICIRFX) * ! * IF (LSAME) RETURN * ! * The characters are not identical. Now check them for equivalence. ! * Look for the 'escape' character, circumflex, followed by the ! * letter. * ! * IVAL = ICHAR(CA(2)) ! * IF (IVAL.GE.ICHAR('A') .AND. IVAL.LE.ICHAR('Z')) THEN ! * LSAME = CA(1) .EQ. CHAR(ICIRFX) .AND. CA(2) .EQ. CB ! * END IF * * RETURN * ! * End of LSAME. * END --- 1,87 ---- ! LOGICAL FUNCTION LSAME( CA, CB ) ! * ! * -- LAPACK auxiliary routine (version 2.0) -- ! * Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd., ! * Courant Institute, Argonne National Lab, and Rice University ! * January 31, 1994 ! * * .. Scalar Arguments .. ! CHARACTER CA, CB * .. * * Purpose * ======= * ! * LSAME returns .TRUE. if CA is the same letter as CB regardless of ! * case. * ! * Arguments ! * ========= * + * CA (input) CHARACTER*1 + * CB (input) CHARACTER*1 + * CA and CB specify the single characters to be compared. * ! * ===================================================================== * * .. Intrinsic Functions .. ! INTRINSIC ICHAR ! * .. ! * .. Local Scalars .. ! INTEGER INTA, INTB, ZCODE ! * .. * .. Executable Statements .. * * Test if the characters are equal * ! LSAME = CA.EQ.CB ! IF( LSAME ) ! $ RETURN * ! * Now test for equivalence if both characters are alphabetic. * ! ZCODE = ICHAR( 'Z' ) * ! * Use 'Z' rather than 'A' so that ASCII can be detected on Prime ! * machines, on which ICHAR returns a value with bit 8 set. ! * ICHAR('A') on Prime machines returns 193 which is the same as ! * ICHAR('A') on an EBCDIC machine. * ! INTA = ICHAR( CA ) ! INTB = ICHAR( CB ) * ! IF( ZCODE.EQ.90 .OR. ZCODE.EQ.122 ) THEN * ! * ASCII is assumed - ZCODE is the ASCII code of either lower or ! * upper case 'Z'. * ! IF( INTA.GE.97 .AND. INTA.LE.122 ) INTA = INTA - 32 ! IF( INTB.GE.97 .AND. INTB.LE.122 ) INTB = INTB - 32 * ! ELSE IF( ZCODE.EQ.233 .OR. ZCODE.EQ.169 ) THEN * ! * EBCDIC is assumed - ZCODE is the EBCDIC code of either lower or ! * upper case 'Z'. * ! IF( INTA.GE.129 .AND. INTA.LE.137 .OR. ! $ INTA.GE.145 .AND. INTA.LE.153 .OR. ! $ INTA.GE.162 .AND. INTA.LE.169 ) INTA = INTA + 64 ! IF( INTB.GE.129 .AND. INTB.LE.137 .OR. ! $ INTB.GE.145 .AND. INTB.LE.153 .OR. ! $ INTB.GE.162 .AND. INTB.LE.169 ) INTB = INTB + 64 ! * ! ELSE IF( ZCODE.EQ.218 .OR. ZCODE.EQ.250 ) THEN ! * ! * ASCII is assumed, on Prime machines - ZCODE is the ASCII code ! * plus 128 of either lower or upper case 'Z'. ! * ! IF( INTA.GE.225 .AND. INTA.LE.250 ) INTA = INTA - 32 ! IF( INTB.GE.225 .AND. INTB.LE.250 ) INTB = INTB - 32 ! END IF ! LSAME = INTA.EQ.INTB * * RETURN * ! * End of LSAME * END diff -cNr octave-2.0.1/libcruft/blas/sdot.f octave-2.0.2/libcruft/blas/sdot.f *** octave-2.0.1/libcruft/blas/sdot.f Thu Jul 18 20:29:10 1996 --- octave-2.0.2/libcruft/blas/sdot.f Wed Jan 15 20:58:47 1997 *************** *** 1,48 **** ! REAL FUNCTION SDOT(N,SX,INCX,SY,INCY) ! C ! C FORMS THE DOT PRODUCT OF TWO VECTORS. ! C USES UNROLLED LOOPS FOR INCREMENTS EQUAL TO ONE. ! C JACK DONGARRA, LINPACK, 3/11/78. ! C ! REAL SX(1),SY(1),STEMP ! INTEGER I,INCX,INCY,IX,IY,M,MP1,N ! C ! STEMP = 0.0E0 ! SDOT = 0.0E0 ! IF(N.LE.0)RETURN ! IF(INCX.EQ.1.AND.INCY.EQ.1)GO TO 20 ! C ! C CODE FOR UNEQUAL INCREMENTS OR EQUAL INCREMENTS ! C NOT EQUAL TO 1 ! C ! IX = 1 ! IY = 1 ! IF(INCX.LT.0)IX = (-N+1)*INCX + 1 ! IF(INCY.LT.0)IY = (-N+1)*INCY + 1 ! DO 10 I = 1,N ! STEMP = STEMP + SX(IX)*SY(IY) ! IX = IX + INCX ! IY = IY + INCY ! 10 CONTINUE ! SDOT = STEMP ! RETURN ! C ! C CODE FOR BOTH INCREMENTS EQUAL TO 1 ! C ! C ! C CLEAN-UP LOOP ! C ! 20 M = MOD(N,5) ! IF( M .EQ. 0 ) GO TO 40 ! DO 30 I = 1,M ! STEMP = STEMP + SX(I)*SY(I) ! 30 CONTINUE ! IF( N .LT. 5 ) GO TO 60 ! 40 MP1 = M + 1 ! DO 50 I = MP1,N,5 ! STEMP = STEMP + SX(I)*SY(I) + SX(I + 1)*SY(I + 1) + ! * SX(I + 2)*SY(I + 2) + SX(I + 3)*SY(I + 3) + SX(I + 4)*SY(I + 4) ! 50 CONTINUE ! 60 SDOT = STEMP ! RETURN ! END --- 1,49 ---- ! real function sdot(n,sx,incx,sy,incy) ! c ! c forms the dot product of two vectors. ! c uses unrolled loops for increments equal to one. ! c jack dongarra, linpack, 3/11/78. ! c modified 12/3/93, array(1) declarations changed to array(*) ! c ! real sx(*),sy(*),stemp ! integer i,incx,incy,ix,iy,m,mp1,n ! c ! stemp = 0.0e0 ! sdot = 0.0e0 ! if(n.le.0)return ! if(incx.eq.1.and.incy.eq.1)go to 20 ! c ! c code for unequal increments or equal increments ! c not equal to 1 ! c ! ix = 1 ! iy = 1 ! if(incx.lt.0)ix = (-n+1)*incx + 1 ! if(incy.lt.0)iy = (-n+1)*incy + 1 ! do 10 i = 1,n ! stemp = stemp + sx(ix)*sy(iy) ! ix = ix + incx ! iy = iy + incy ! 10 continue ! sdot = stemp ! return ! c ! c code for both increments equal to 1 ! c ! c ! c clean-up loop ! c ! 20 m = mod(n,5) ! if( m .eq. 0 ) go to 40 ! do 30 i = 1,m ! stemp = stemp + sx(i)*sy(i) ! 30 continue ! if( n .lt. 5 ) go to 60 ! 40 mp1 = m + 1 ! do 50 i = mp1,n,5 ! stemp = stemp + sx(i)*sy(i) + sx(i + 1)*sy(i + 1) + ! * sx(i + 2)*sy(i + 2) + sx(i + 3)*sy(i + 3) + sx(i + 4)*sy(i + 4) ! 50 continue ! 60 sdot = stemp ! return ! end diff -cNr octave-2.0.1/libcruft/blas/xerbla.f octave-2.0.2/libcruft/blas/xerbla.f *** octave-2.0.1/libcruft/blas/xerbla.f Thu Jul 18 20:29:10 1996 --- octave-2.0.2/libcruft/blas/xerbla.f Wed Jan 15 20:58:50 1997 *************** *** 1,45 **** ! SUBROUTINE XERBLA ( SRNAME, INFO ) ! * .. Scalar Arguments .. ! INTEGER INFO CHARACTER*6 SRNAME * .. * * Purpose * ======= * ! * XERBLA is an error handler for the Level 2 BLAS routines. * ! * It is called by the Level 2 BLAS routines if an input parameter is ! * invalid. ! * ! * Installers should consider modifying the STOP statement in order to * call system-specific exception-handling facilities. * ! * Parameters ! * ========== ! * ! * SRNAME - CHARACTER*6. ! * On entry, SRNAME specifies the name of the routine which ! * called XERBLA. ! * ! * INFO - INTEGER. ! * On entry, INFO specifies the position of the invalid ! * parameter in the parameter-list of the calling routine. ! * * ! * Auxiliary routine for Level 2 Blas. * ! * Written on 20-July-1986. * - * .. Executable Statements .. * ! WRITE (*,99999) SRNAME, INFO * ! CALL XSTOPX (' ') * ! 99999 FORMAT ( ' ** On entry to ', A6, ' parameter number ', I2, ! $ ' had an illegal value' ) * ! * End of XERBLA. * END --- 1,43 ---- ! SUBROUTINE XERBLA( SRNAME, INFO ) ! * ! * -- LAPACK auxiliary routine (preliminary version) -- ! * Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd., ! * Courant Institute, Argonne National Lab, and Rice University ! * February 29, 1992 ! * ! * .. Scalar Arguments .. CHARACTER*6 SRNAME + INTEGER INFO * .. * * Purpose * ======= * ! * XERBLA is an error handler for the LAPACK routines. ! * It is called by an LAPACK routine if an input parameter has an ! * invalid value. A message is printed and execution stops. * ! * Installers may consider modifying the STOP statement in order to * call system-specific exception-handling facilities. * ! * Arguments ! * ========= * ! * SRNAME (input) CHARACTER*6 ! * The name of the routine which called XERBLA. * ! * INFO (input) INTEGER ! * The position of the invalid parameter in the parameter list ! * of the calling routine. * * ! WRITE( *, FMT = 9999 )SRNAME, INFO * ! STOP * ! 9999 FORMAT( ' ** On entry to ', A6, ' parameter number ', I2, ' had ', ! $ 'an illegal value' ) * ! * End of XERBLA * END diff -cNr octave-2.0.1/libcruft/blas/zaxpy.f octave-2.0.2/libcruft/blas/zaxpy.f *** octave-2.0.1/libcruft/blas/zaxpy.f Thu Jul 18 20:29:10 1996 --- octave-2.0.2/libcruft/blas/zaxpy.f Wed Jan 15 20:58:50 1997 *************** *** 2,9 **** c c constant times a vector plus a vector. c jack dongarra, 3/11/78. c ! double complex zx(1),zy(1),za integer i,incx,incy,ix,iy,n double precision dcabs1 if(n.le.0)return --- 2,10 ---- c c constant times a vector plus a vector. c jack dongarra, 3/11/78. + c modified 12/3/93, array(1) declarations changed to array(*) c ! double complex zx(*),zy(*),za integer i,incx,incy,ix,iy,n double precision dcabs1 if(n.le.0)return diff -cNr octave-2.0.1/libcruft/blas/zcopy.f octave-2.0.2/libcruft/blas/zcopy.f *** octave-2.0.1/libcruft/blas/zcopy.f Thu Jul 18 20:29:10 1996 --- octave-2.0.2/libcruft/blas/zcopy.f Wed Jan 15 20:58:50 1997 *************** *** 2,9 **** c c copies a vector, x, to a vector, y. c jack dongarra, linpack, 4/11/78. c ! double complex zx(1),zy(1) integer i,incx,incy,ix,iy,n c if(n.le.0)return --- 2,10 ---- c c copies a vector, x, to a vector, y. c jack dongarra, linpack, 4/11/78. + c modified 12/3/93, array(1) declarations changed to array(*) c ! double complex zx(*),zy(*) integer i,incx,incy,ix,iy,n c if(n.le.0)return diff -cNr octave-2.0.1/libcruft/blas/zdotc.f octave-2.0.2/libcruft/blas/zdotc.f *** octave-2.0.1/libcruft/blas/zdotc.f Thu Jul 18 20:29:10 1996 --- octave-2.0.2/libcruft/blas/zdotc.f Wed Jan 15 20:58:50 1997 *************** *** 2,9 **** c c forms the dot product of a vector. c jack dongarra, 3/11/78. c ! double complex zx(1),zy(1),ztemp integer i,incx,incy,ix,iy,n ztemp = (0.0d0,0.0d0) zdotc = (0.0d0,0.0d0) --- 2,10 ---- c c forms the dot product of a vector. c jack dongarra, 3/11/78. + c modified 12/3/93, array(1) declarations changed to array(*) c ! double complex zx(*),zy(*),ztemp integer i,incx,incy,ix,iy,n ztemp = (0.0d0,0.0d0) zdotc = (0.0d0,0.0d0) diff -cNr octave-2.0.1/libcruft/blas/zdotu.f octave-2.0.2/libcruft/blas/zdotu.f *** octave-2.0.1/libcruft/blas/zdotu.f Thu Jul 18 20:29:10 1996 --- octave-2.0.2/libcruft/blas/zdotu.f Wed Jan 15 20:58:51 1997 *************** *** 2,9 **** c c forms the dot product of two vectors. c jack dongarra, 3/11/78. c ! double complex zx(1),zy(1),ztemp integer i,incx,incy,ix,iy,n ztemp = (0.0d0,0.0d0) zdotu = (0.0d0,0.0d0) --- 2,10 ---- c c forms the dot product of two vectors. c jack dongarra, 3/11/78. + c modified 12/3/93, array(1) declarations changed to array(*) c ! double complex zx(*),zy(*),ztemp integer i,incx,incy,ix,iy,n ztemp = (0.0d0,0.0d0) zdotu = (0.0d0,0.0d0) diff -cNr octave-2.0.1/libcruft/blas/zdscal.f octave-2.0.2/libcruft/blas/zdscal.f *** octave-2.0.1/libcruft/blas/zdscal.f Thu Jul 18 20:29:10 1996 --- octave-2.0.2/libcruft/blas/zdscal.f Wed Jan 15 20:58:51 1997 *************** *** 2,20 **** c c scales a vector by a constant. c jack dongarra, 3/11/78. ! c modified to correct problem with negative increment, 8/21/90. c ! double complex zx(1) double precision da integer i,incx,ix,n c ! if(n.le.0)return if(incx.eq.1)go to 20 c c code for increment not equal to 1 c ix = 1 - if(incx.lt.0)ix = (-n+1)*incx + 1 do 10 i = 1,n zx(ix) = dcmplx(da,0.0d0)*zx(ix) ix = ix + incx --- 2,20 ---- c c scales a vector by a constant. c jack dongarra, 3/11/78. ! c modified 3/93 to return if incx .le. 0. ! c modified 12/3/93, array(1) declarations changed to array(*) c ! double complex zx(*) double precision da integer i,incx,ix,n c ! if( n.le.0 .or. incx.le.0 )return if(incx.eq.1)go to 20 c c code for increment not equal to 1 c ix = 1 do 10 i = 1,n zx(ix) = dcmplx(da,0.0d0)*zx(ix) ix = ix + incx diff -cNr octave-2.0.1/libcruft/blas/zherk.f octave-2.0.2/libcruft/blas/zherk.f *** octave-2.0.1/libcruft/blas/zherk.f Thu Jul 18 20:29:10 1996 --- octave-2.0.2/libcruft/blas/zherk.f Wed Jan 15 20:58:52 1997 *************** *** 1,9 **** ! SUBROUTINE ZHERK ( UPLO, TRANS, N, K, ALPHA, A, LDA, ! $ BETA, C, LDC ) * .. Scalar Arguments .. ! CHARACTER*1 UPLO, TRANS ! INTEGER N, K, LDA, LDC DOUBLE PRECISION ALPHA, BETA * .. Array Arguments .. COMPLEX*16 A( LDA, * ), C( LDC, * ) * .. --- 1,9 ---- ! SUBROUTINE ZHERK( UPLO, TRANS, N, K, ALPHA, A, LDA, BETA, C, LDC ) * .. Scalar Arguments .. ! CHARACTER TRANS, UPLO ! INTEGER K, LDA, LDC, N DOUBLE PRECISION ALPHA, BETA + * .. * .. Array Arguments .. COMPLEX*16 A( LDA, * ), C( LDC, * ) * .. *************** *** 61,67 **** * matrix A. K must be at least zero. * Unchanged on exit. * ! * ALPHA - DOUBLE PRECISION. * On entry, ALPHA specifies the scalar alpha. * Unchanged on exit. * --- 61,67 ---- * matrix A. K must be at least zero. * Unchanged on exit. * ! * ALPHA - DOUBLE PRECISION . * On entry, ALPHA specifies the scalar alpha. * Unchanged on exit. * *************** *** 84,90 **** * On entry, BETA specifies the scalar beta. * Unchanged on exit. * ! * C - COMPLEX*16 array of DIMENSION ( LDC, n ). * Before entry with UPLO = 'U' or 'u', the leading n by n * upper triangular part of the array C must contain the upper * triangular part of the hermitian matrix and the strictly --- 84,90 ---- * On entry, BETA specifies the scalar beta. * Unchanged on exit. * ! * C - COMPLEX*16 array of DIMENSION ( LDC, n ). * Before entry with UPLO = 'U' or 'u', the leading n by n * upper triangular part of the array C must contain the upper * triangular part of the hermitian matrix and the strictly *************** *** 116,143 **** * Jeremy Du Croz, Numerical Algorithms Group Ltd. * Sven Hammarling, Numerical Algorithms Group Ltd. * * * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. External Subroutines .. EXTERNAL XERBLA * .. Intrinsic Functions .. ! INTRINSIC DCMPLX, DCONJG, MAX, DBLE * .. Local Scalars .. LOGICAL UPPER INTEGER I, INFO, J, L, NROWA DOUBLE PRECISION RTEMP COMPLEX*16 TEMP * .. Parameters .. ! DOUBLE PRECISION ONE , ZERO ! PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 ) * .. * .. Executable Statements .. * * Test the input parameters. * ! IF( LSAME( TRANS, 'N' ) )THEN NROWA = N ELSE NROWA = K --- 116,150 ---- * Jeremy Du Croz, Numerical Algorithms Group Ltd. * Sven Hammarling, Numerical Algorithms Group Ltd. * + * -- Modified 8-Nov-93 to set C(J,J) to DBLE( C(J,J) ) when BETA = 1. + * Ed Anderson, Cray Research Inc. + * * * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME + * .. * .. External Subroutines .. EXTERNAL XERBLA + * .. * .. Intrinsic Functions .. ! INTRINSIC DBLE, DCMPLX, DCONJG, MAX ! * .. * .. Local Scalars .. LOGICAL UPPER INTEGER I, INFO, J, L, NROWA DOUBLE PRECISION RTEMP COMPLEX*16 TEMP + * .. * .. Parameters .. ! DOUBLE PRECISION ONE, ZERO ! PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 ) * .. * .. Executable Statements .. * * Test the input parameters. * ! IF( LSAME( TRANS, 'N' ) ) THEN NROWA = N ELSE NROWA = K *************** *** 145,205 **** UPPER = LSAME( UPLO, 'U' ) * INFO = 0 ! IF( ( .NOT.UPPER ).AND. ! $ ( .NOT.LSAME( UPLO , 'L' ) ) )THEN INFO = 1 ! ELSE IF( ( .NOT.LSAME( TRANS, 'N' ) ).AND. ! $ ( .NOT.LSAME( TRANS, 'C' ) ) )THEN INFO = 2 ! ELSE IF( N .LT.0 )THEN INFO = 3 ! ELSE IF( K .LT.0 )THEN INFO = 4 ! ELSE IF( LDA.LT.MAX( 1, NROWA ) )THEN INFO = 7 ! ELSE IF( LDC.LT.MAX( 1, N ) )THEN INFO = 10 END IF ! IF( INFO.NE.0 )THEN CALL XERBLA( 'ZHERK ', INFO ) RETURN END IF * * Quick return if possible. * ! IF( ( N.EQ.0 ).OR. ! $ ( ( ( ALPHA.EQ.ZERO ).OR.( K.EQ.0 ) ).AND.( BETA.EQ.ONE ) ) ) ! $ RETURN * * And when alpha.eq.zero. * ! IF( ALPHA.EQ.ZERO )THEN ! IF( UPPER )THEN ! IF( BETA.EQ.ZERO )THEN ! DO 20, J = 1, N ! DO 10, I = 1, J C( I, J ) = ZERO 10 CONTINUE 20 CONTINUE ELSE ! DO 40, J = 1, N ! DO 30, I = 1, J - 1 C( I, J ) = BETA*C( I, J ) 30 CONTINUE C( J, J ) = BETA*DBLE( C( J, J ) ) 40 CONTINUE END IF ELSE ! IF( BETA.EQ.ZERO )THEN ! DO 60, J = 1, N ! DO 50, I = J, N C( I, J ) = ZERO 50 CONTINUE 60 CONTINUE ELSE ! DO 80, J = 1, N C( J, J ) = BETA*DBLE( C( J, J ) ) ! DO 70, I = J + 1, N C( I, J ) = BETA*C( I, J ) 70 CONTINUE 80 CONTINUE --- 152,210 ---- UPPER = LSAME( UPLO, 'U' ) * INFO = 0 ! IF( ( .NOT.UPPER ) .AND. ( .NOT.LSAME( UPLO, 'L' ) ) ) THEN INFO = 1 ! ELSE IF( ( .NOT.LSAME( TRANS, 'N' ) ) .AND. ! $ ( .NOT.LSAME( TRANS, 'C' ) ) ) THEN INFO = 2 ! ELSE IF( N.LT.0 ) THEN INFO = 3 ! ELSE IF( K.LT.0 ) THEN INFO = 4 ! ELSE IF( LDA.LT.MAX( 1, NROWA ) ) THEN INFO = 7 ! ELSE IF( LDC.LT.MAX( 1, N ) ) THEN INFO = 10 END IF ! IF( INFO.NE.0 ) THEN CALL XERBLA( 'ZHERK ', INFO ) RETURN END IF * * Quick return if possible. * ! IF( ( N.EQ.0 ) .OR. ( ( ( ALPHA.EQ.ZERO ) .OR. ( K.EQ.0 ) ) .AND. ! $ ( BETA.EQ.ONE ) ) )RETURN * * And when alpha.eq.zero. * ! IF( ALPHA.EQ.ZERO ) THEN ! IF( UPPER ) THEN ! IF( BETA.EQ.ZERO ) THEN ! DO 20 J = 1, N ! DO 10 I = 1, J C( I, J ) = ZERO 10 CONTINUE 20 CONTINUE ELSE ! DO 40 J = 1, N ! DO 30 I = 1, J - 1 C( I, J ) = BETA*C( I, J ) 30 CONTINUE C( J, J ) = BETA*DBLE( C( J, J ) ) 40 CONTINUE END IF ELSE ! IF( BETA.EQ.ZERO ) THEN ! DO 60 J = 1, N ! DO 50 I = J, N C( I, J ) = ZERO 50 CONTINUE 60 CONTINUE ELSE ! DO 80 J = 1, N C( J, J ) = BETA*DBLE( C( J, J ) ) ! DO 70 I = J + 1, N C( I, J ) = BETA*C( I, J ) 70 CONTINUE 80 CONTINUE *************** *** 210,260 **** * * Start the operations. * ! IF( LSAME( TRANS, 'N' ) )THEN * * Form C := alpha*A*conjg( A' ) + beta*C. * ! IF( UPPER )THEN ! DO 130, J = 1, N ! IF( BETA.EQ.ZERO )THEN ! DO 90, I = 1, J C( I, J ) = ZERO 90 CONTINUE ! ELSE IF( BETA.NE.ONE )THEN ! DO 100, I = 1, J - 1 C( I, J ) = BETA*C( I, J ) 100 CONTINUE C( J, J ) = BETA*DBLE( C( J, J ) ) END IF ! DO 120, L = 1, K ! IF( A( J, L ).NE.DCMPLX( ZERO ) )THEN TEMP = ALPHA*DCONJG( A( J, L ) ) ! DO 110, I = 1, J - 1 C( I, J ) = C( I, J ) + TEMP*A( I, L ) 110 CONTINUE ! C( J, J ) = DBLE( C( J, J ) ) + $ DBLE( TEMP*A( I, L ) ) END IF 120 CONTINUE 130 CONTINUE ELSE ! DO 180, J = 1, N ! IF( BETA.EQ.ZERO )THEN ! DO 140, I = J, N C( I, J ) = ZERO 140 CONTINUE ! ELSE IF( BETA.NE.ONE )THEN C( J, J ) = BETA*DBLE( C( J, J ) ) ! DO 150, I = J + 1, N C( I, J ) = BETA*C( I, J ) 150 CONTINUE END IF ! DO 170, L = 1, K ! IF( A( J, L ).NE.DCMPLX( ZERO ) )THEN ! TEMP = ALPHA*DCONJG( A( J, L ) ) ! C( J, J ) = DBLE( C( J, J ) ) + $ DBLE( TEMP*A( J, L ) ) ! DO 160, I = J + 1, N C( I, J ) = C( I, J ) + TEMP*A( I, L ) 160 CONTINUE END IF --- 215,269 ---- * * Start the operations. * ! IF( LSAME( TRANS, 'N' ) ) THEN * * Form C := alpha*A*conjg( A' ) + beta*C. * ! IF( UPPER ) THEN ! DO 130 J = 1, N ! IF( BETA.EQ.ZERO ) THEN ! DO 90 I = 1, J C( I, J ) = ZERO 90 CONTINUE ! ELSE IF( BETA.NE.ONE ) THEN ! DO 100 I = 1, J - 1 C( I, J ) = BETA*C( I, J ) 100 CONTINUE C( J, J ) = BETA*DBLE( C( J, J ) ) + ELSE + C( J, J ) = DBLE( C( J, J ) ) END IF ! DO 120 L = 1, K ! IF( A( J, L ).NE.DCMPLX( ZERO ) ) THEN TEMP = ALPHA*DCONJG( A( J, L ) ) ! DO 110 I = 1, J - 1 C( I, J ) = C( I, J ) + TEMP*A( I, L ) 110 CONTINUE ! C( J, J ) = DBLE( C( J, J ) ) + $ DBLE( TEMP*A( I, L ) ) END IF 120 CONTINUE 130 CONTINUE ELSE ! DO 180 J = 1, N ! IF( BETA.EQ.ZERO ) THEN ! DO 140 I = J, N C( I, J ) = ZERO 140 CONTINUE ! ELSE IF( BETA.NE.ONE ) THEN C( J, J ) = BETA*DBLE( C( J, J ) ) ! DO 150 I = J + 1, N C( I, J ) = BETA*C( I, J ) 150 CONTINUE + ELSE + C( J, J ) = DBLE( C( J, J ) ) END IF ! DO 170 L = 1, K ! IF( A( J, L ).NE.DCMPLX( ZERO ) ) THEN ! TEMP = ALPHA*DCONJG( A( J, L ) ) ! C( J, J ) = DBLE( C( J, J ) ) + $ DBLE( TEMP*A( J, L ) ) ! DO 160 I = J + 1, N C( I, J ) = C( I, J ) + TEMP*A( I, L ) 160 CONTINUE END IF *************** *** 265,310 **** * * Form C := alpha*conjg( A' )*A + beta*C. * ! IF( UPPER )THEN ! DO 220, J = 1, N ! DO 200, I = 1, J - 1 TEMP = ZERO ! DO 190, L = 1, K TEMP = TEMP + DCONJG( A( L, I ) )*A( L, J ) 190 CONTINUE ! IF( BETA.EQ.ZERO )THEN C( I, J ) = ALPHA*TEMP ELSE C( I, J ) = ALPHA*TEMP + BETA*C( I, J ) END IF 200 CONTINUE RTEMP = ZERO ! DO 210, L = 1, K RTEMP = RTEMP + DCONJG( A( L, J ) )*A( L, J ) 210 CONTINUE ! IF( BETA.EQ.ZERO )THEN C( J, J ) = ALPHA*RTEMP ELSE C( J, J ) = ALPHA*RTEMP + BETA*DBLE( C( J, J ) ) END IF 220 CONTINUE ELSE ! DO 260, J = 1, N RTEMP = ZERO ! DO 230, L = 1, K RTEMP = RTEMP + DCONJG( A( L, J ) )*A( L, J ) 230 CONTINUE ! IF( BETA.EQ.ZERO )THEN C( J, J ) = ALPHA*RTEMP ELSE C( J, J ) = ALPHA*RTEMP + BETA*DBLE( C( J, J ) ) END IF ! DO 250, I = J + 1, N TEMP = ZERO ! DO 240, L = 1, K TEMP = TEMP + DCONJG( A( L, I ) )*A( L, J ) 240 CONTINUE ! IF( BETA.EQ.ZERO )THEN C( I, J ) = ALPHA*TEMP ELSE C( I, J ) = ALPHA*TEMP + BETA*C( I, J ) --- 274,319 ---- * * Form C := alpha*conjg( A' )*A + beta*C. * ! IF( UPPER ) THEN ! DO 220 J = 1, N ! DO 200 I = 1, J - 1 TEMP = ZERO ! DO 190 L = 1, K TEMP = TEMP + DCONJG( A( L, I ) )*A( L, J ) 190 CONTINUE ! IF( BETA.EQ.ZERO ) THEN C( I, J ) = ALPHA*TEMP ELSE C( I, J ) = ALPHA*TEMP + BETA*C( I, J ) END IF 200 CONTINUE RTEMP = ZERO ! DO 210 L = 1, K RTEMP = RTEMP + DCONJG( A( L, J ) )*A( L, J ) 210 CONTINUE ! IF( BETA.EQ.ZERO ) THEN C( J, J ) = ALPHA*RTEMP ELSE C( J, J ) = ALPHA*RTEMP + BETA*DBLE( C( J, J ) ) END IF 220 CONTINUE ELSE ! DO 260 J = 1, N RTEMP = ZERO ! DO 230 L = 1, K RTEMP = RTEMP + DCONJG( A( L, J ) )*A( L, J ) 230 CONTINUE ! IF( BETA.EQ.ZERO ) THEN C( J, J ) = ALPHA*RTEMP ELSE C( J, J ) = ALPHA*RTEMP + BETA*DBLE( C( J, J ) ) END IF ! DO 250 I = J + 1, N TEMP = ZERO ! DO 240 L = 1, K TEMP = TEMP + DCONJG( A( L, I ) )*A( L, J ) 240 CONTINUE ! IF( BETA.EQ.ZERO ) THEN C( I, J ) = ALPHA*TEMP ELSE C( I, J ) = ALPHA*TEMP + BETA*C( I, J ) diff -cNr octave-2.0.1/libcruft/blas/zscal.f octave-2.0.2/libcruft/blas/zscal.f *** octave-2.0.1/libcruft/blas/zscal.f Thu Jul 18 20:29:10 1996 --- octave-2.0.2/libcruft/blas/zscal.f Wed Jan 15 20:58:52 1997 *************** *** 2,19 **** c c scales a vector by a constant. c jack dongarra, 3/11/78. ! c modified to correct problem with negative increment, 8/21/90. c ! double complex za,zx(1) integer i,incx,ix,n c ! if(n.le.0)return if(incx.eq.1)go to 20 c c code for increment not equal to 1 c ix = 1 - if(incx.lt.0)ix = (-n+1)*incx + 1 do 10 i = 1,n zx(ix) = za*zx(ix) ix = ix + incx --- 2,19 ---- c c scales a vector by a constant. c jack dongarra, 3/11/78. ! c modified 3/93 to return if incx .le. 0. ! c modified 12/3/93, array(1) declarations changed to array(*) c ! double complex za,zx(*) integer i,incx,ix,n c ! if( n.le.0 .or. incx.le.0 )return if(incx.eq.1)go to 20 c c code for increment not equal to 1 c ix = 1 do 10 i = 1,n zx(ix) = za*zx(ix) ix = ix + incx diff -cNr octave-2.0.1/libcruft/blas/zswap.f octave-2.0.2/libcruft/blas/zswap.f *** octave-2.0.1/libcruft/blas/zswap.f Thu Jul 18 20:29:10 1996 --- octave-2.0.2/libcruft/blas/zswap.f Wed Jan 15 20:58:52 1997 *************** *** 2,9 **** c c interchanges two vectors. c jack dongarra, 3/11/78. c ! double complex zx(1),zy(1),ztemp integer i,incx,incy,ix,iy,n c if(n.le.0)return --- 2,10 ---- c c interchanges two vectors. c jack dongarra, 3/11/78. + c modified 12/3/93, array(1) declarations changed to array(*) c ! double complex zx(*),zy(*),ztemp integer i,incx,incy,ix,iy,n c if(n.le.0)return diff -cNr octave-2.0.1/libcruft/blas/ztrmm.f octave-2.0.2/libcruft/blas/ztrmm.f *** octave-2.0.1/libcruft/blas/ztrmm.f Thu Jul 18 20:29:10 1996 --- octave-2.0.2/libcruft/blas/ztrmm.f Wed Jan 15 20:58:53 1997 *************** *** 237,243 **** END IF ELSE * ! * Form B := alpha*B*A' or B := alpha*B*conjg( A' ). * IF( UPPER )THEN DO 120, J = 1, N --- 237,243 ---- END IF ELSE * ! * Form B := alpha*A'*B or B := alpha*conjg( A' )*B. * IF( UPPER )THEN DO 120, J = 1, N diff -cNr octave-2.0.1/libcruft/misc/Makefile.in octave-2.0.2/libcruft/misc/Makefile.in *** octave-2.0.1/libcruft/misc/Makefile.in Wed Dec 11 01:50:17 1996 --- octave-2.0.2/libcruft/misc/Makefile.in Wed Jan 22 20:08:56 1997 *************** *** 54,57 **** $(XCC) -c $(CPPFLAGS) $(XALL_CFLAGS) -DDP $< pic/machar.o: $(srcdir)/machar.c ! $(XCC) -c $(CPPFLAGS) $(XALL_CFLAGS) -DDP $< -o $@ --- 54,57 ---- $(XCC) -c $(CPPFLAGS) $(XALL_CFLAGS) -DDP $< pic/machar.o: $(srcdir)/machar.c ! $(XCC) -c $(CPPFLAGS) $(CPICFLAG) $(XALL_CFLAGS) -DDP $< -o $@ diff -cNr octave-2.0.1/libcruft/misc/d1mach.f octave-2.0.2/libcruft/misc/d1mach.f *** octave-2.0.1/libcruft/misc/d1mach.f Thu Oct 24 20:22:01 1996 --- octave-2.0.2/libcruft/misc/d1mach.f Wed Jan 22 15:03:32 1997 *************** *** 2,9 **** integer i logical init double precision dmach(5) - data init /.false./ save init, dmach if (.not. init) then call machar (dmach(1), dmach(2), dmach(3), dmach(4), dmach(5)) init = .true. --- 2,9 ---- integer i logical init double precision dmach(5) save init, dmach + data init /.false./ if (.not. init) then call machar (dmach(1), dmach(2), dmach(3), dmach(4), dmach(5)) init = .true. diff -cNr octave-2.0.1/libcruft/misc/machar.c octave-2.0.2/libcruft/misc/machar.c *** octave-2.0.1/libcruft/misc/machar.c Thu Oct 24 20:09:15 1996 --- octave-2.0.2/libcruft/misc/machar.c Wed Jan 22 15:05:53 1997 *************** *** 19,25 **** #define PREC "Single " #define REALSIZE 1 #endif ! #ifdef DP #define REAL double #define ZERO 0.0e0 --- 19,25 ---- #define PREC "Single " #define REALSIZE 1 #endif ! #ifdef DP #define REAL double #define ZERO 0.0e0 *************** *** 27,33 **** #define PREC "Double " #define REALSIZE 2 #endif ! #include #include --- 27,33 ---- #define PREC "Double " #define REALSIZE 2 #endif ! #include #include *************** *** 54,62 **** translation of the Fortran 77 program in W. J. Cody, "MACHAR: A subroutine to dynamically determine machine parameters". TOMS (14), 1988. ! Parameter values reported are as follows: ! ibeta - the radix for the floating-point representation it - the number of base ibeta digits in the floating-point significand --- 54,62 ---- translation of the Fortran 77 program in W. J. Cody, "MACHAR: A subroutine to dynamically determine machine parameters". TOMS (14), 1988. ! Parameter values reported are as follows: ! ibeta - the radix for the floating-point representation it - the number of base ibeta digits in the floating-point significand *************** *** 112,123 **** second, or perhaps third, largest number, being too small by 1 or 2 units in the last digit of the significand. ! Latest revision - August 4, 1988 ! Author - W. J. Cody Argonne National Laboratory ! */ { --- 112,123 ---- second, or perhaps third, largest number, being too small by 1 or 2 units in the last digit of the significand. ! Latest revision - August 4, 1988 ! Author - W. J. Cody Argonne National Laboratory ! */ { *************** *** 189,199 **** (*negep) = (*it) + 3; betain = one / beta; a = one; ! for (i = 1; i<=(*negep); i++) { a = a * betain; } ! b = a; tmp = (one-a); tmp = tmp-one; --- 189,199 ---- (*negep) = (*it) + 3; betain = one / beta; a = one; ! for (i = 1; i<=(*negep); i++) { a = a * betain; } ! b = a; tmp = (one-a); tmp = tmp-one; *************** *** 223,229 **** } *eps = a; ! /* determine ngrd */ --- 223,229 ---- } *eps = a; ! /* determine ngrd */ *************** *** 286,292 **** } mx = iz + iz - 1; } ! /* loop to determine minexp, xmin. exit from loop is signaled by an underflow. --- 286,292 ---- } mx = iz + iz - 1; } ! /* loop to determine minexp, xmin. exit from loop is signaled by an underflow. *************** *** 352,365 **** (*xmax) = (*xmax) / (beta * beta * beta * (*xmin)); i = (*maxexp) + (*minexp) + 3; if (i > 0) { ! for (j = 1; j<=i; j++ ) { if ((*ibeta) == 2) (*xmax) = (*xmax) + (*xmax); if ((*ibeta) != 2) (*xmax) = (*xmax) * beta; } } ! return; } --- 352,365 ---- (*xmax) = (*xmax) / (beta * beta * beta * (*xmin)); i = (*maxexp) + (*minexp) + 3; if (i > 0) { ! for (j = 1; j<=i; j++ ) { if ((*ibeta) == 2) (*xmax) = (*xmax) + (*xmax); if ((*ibeta) != 2) (*xmax) = (*xmax) * beta; } } ! return; } diff -cNr octave-2.0.1/liboctave/ChangeLog octave-2.0.2/liboctave/ChangeLog *** octave-2.0.1/liboctave/ChangeLog Tue Jan 7 00:17:16 1997 --- octave-2.0.2/liboctave/ChangeLog Mon Jan 27 15:52:28 1997 *************** *** 1,3 **** --- 1,22 ---- + Mon Jan 27 15:52:27 1997 John W. Eaton + + * Version 2.0.2 released. + + Sat Jan 25 22:36:21 1997 John W. Eaton + + * Makefile.in (bin-dist): New target. + + Wed Jan 22 16:18:53 1997 John W. Eaton + + * dbleSVD.cc (SVD::init): Work around apparent dgesvd() bug. + * CmplxSVD.cc (ComplexSVD::init): Work around apparent zgesvd() bug. + + Mon Jan 20 18:44:11 1997 John W. Eaton + + * chMatrix.cc (charMatrix::charMatrix (const string&)): + If the number of columns is zero, also set the number of rows to zero. + (charMatrix::charMatrix (const char *)): Likewise. + Tue Jan 7 00:16:57 1997 John W. Eaton * Version 2.0.1 released. diff -cNr octave-2.0.1/liboctave/CmplxSVD.cc octave-2.0.2/liboctave/CmplxSVD.cc *** octave-2.0.1/liboctave/CmplxSVD.cc Sat Mar 2 19:16:15 1996 --- octave-2.0.2/liboctave/CmplxSVD.cc Wed Jan 22 16:11:09 1997 *************** *** 99,105 **** break; case SVD::sigma_only: ! jobu = jobv = 'N'; ncol_u = nrow_vt = 1; break; --- 99,113 ---- break; case SVD::sigma_only: ! ! // Note: for this case, both jobu and jobv should be 'N', but ! // there seems to be a bug in dgesvd from Lapack V2.0. To ! // demonstrate the bug, set both jobu and jobv to 'N' and find ! // the singular values of [eye(3), eye(3)]. The result is ! // [-sqrt(2), -sqrt(2), -sqrt(2)]. ! ! jobu = 'O'; ! jobv = 'N'; ncol_u = nrow_vt = 1; break; *************** *** 109,115 **** type_computed = svd_type; ! if (jobu != 'N') left_sm.resize (m, ncol_u); Complex *u = left_sm.fortran_vec (); --- 117,123 ---- type_computed = svd_type; ! if (! (jobu == 'N' || jobu == 'O')) left_sm.resize (m, ncol_u); Complex *u = left_sm.fortran_vec (); *************** *** 117,123 **** sigma.resize (nrow_s, ncol_s); double *s_vec = sigma.fortran_vec (); ! if (jobv != 'N') right_sm.resize (nrow_vt, n); Complex *vt = right_sm.fortran_vec (); --- 125,131 ---- sigma.resize (nrow_s, ncol_s); double *s_vec = sigma.fortran_vec (); ! if (! (jobv == 'N' || jobv == 'O')) right_sm.resize (nrow_vt, n); Complex *vt = right_sm.fortran_vec (); *************** *** 140,146 **** (*current_liboctave_error_handler) ("unrecoverable error in zgesvd"); else { ! if (jobv != 'N') right_sm = right_sm.hermitian (); } --- 148,154 ---- (*current_liboctave_error_handler) ("unrecoverable error in zgesvd"); else { ! if (! (jobv == 'N' || jobv == 'O')) right_sm = right_sm.hermitian (); } diff -cNr octave-2.0.1/liboctave/Makefile.in octave-2.0.2/liboctave/Makefile.in *** octave-2.0.1/liboctave/Makefile.in Thu Dec 12 02:23:12 1996 --- octave-2.0.2/liboctave/Makefile.in Fri Jan 24 23:25:34 1997 *************** *** 77,82 **** --- 77,87 ---- DISTFILES := Makefile.in ChangeLog safe-xstat.cin safe-xstat.hin \ $(SOURCES) $(INCLUDES) $(EXTRAS) + ifeq ($(SHARED_LIBS), true) + BINDISTFILES = liboctave.$(SHLEXT) + BINDISTLIBS = $(addprefix liboctave/, liboctave.$(SHLEXT)) + endif + MAKEDEPS_1 := $(patsubst %.cc, %.d, $(SOURCES)) MAKEDEPS := $(patsubst %.c, %.d, $(MAKEDEPS_1)) *************** *** 100,106 **** touch stamp-prereq stamp-picdir: ! if [ "$(SHARED_LIBS)" = true ]; then \ if [ -n "$(CPICFLAG)" ] || [ -n "$(CXXPICFLAG)" ]; then \ if [ -d pic ]; then \ true ; \ --- 105,111 ---- touch stamp-prereq stamp-picdir: ! if $(SHARED_LIBS); then \ if [ -n "$(CPICFLAG)" ] || [ -n "$(CXXPICFLAG)" ]; then \ if [ -d pic ]; then \ true ; \ *************** *** 221,226 **** --- 226,238 ---- dist: ln $(DISTFILES) ../`cat ../.fname`/liboctave .PHONY: dist + + bin-dist: + if [ -n "$(BINDISTFILES)" ]; then \ + ln $(BINDISTFILES) ../`cat ../.fname`/liboctave ; \ + fi + echo $(BINDISTLIBS) >> ../`cat ../.fname`/LIBRARIES + .PHONY: bin-dist # If missing, GNU make attempts to create them in the reverse of the # order in which they are listed here. We rely on that fact to ensure diff -cNr octave-2.0.1/liboctave/chMatrix.cc octave-2.0.2/liboctave/chMatrix.cc *** octave-2.0.1/liboctave/chMatrix.cc Sun Nov 10 19:02:18 1996 --- octave-2.0.2/liboctave/chMatrix.cc Mon Jan 20 18:58:48 1997 *************** *** 46,62 **** // charMatrix class. charMatrix::charMatrix (const char *s) ! : MArray2 ((s ? 1 : 0), (s ? strlen (s) : 0)) { ! int nc = cols (); for (int i = 0; i < nc; i++) elem (0, i) = s[i]; } charMatrix::charMatrix (const string& s) ! : MArray2 (1, s.length ()) { ! int nc = cols (); for (int i = 0; i < nc; i++) elem (0, i) = s[i]; } --- 46,70 ---- // charMatrix class. charMatrix::charMatrix (const char *s) ! : MArray2 () { ! int nc = s ? strlen (s) : 0; ! int nr = s && nc > 0 ? 1 : 0; ! ! resize (nr, nc); ! for (int i = 0; i < nc; i++) elem (0, i) = s[i]; } charMatrix::charMatrix (const string& s) ! : MArray2 () { ! int nc = s.length (); ! int nr = nc > 0 ? 1 : 0; ! ! resize (nr, nc); ! for (int i = 0; i < nc; i++) elem (0, i) = s[i]; } *************** *** 65,70 **** --- 73,79 ---- : MArray2 (s.length (), s.max_length (), 0) { int nr = rows (); + for (int i = 0; i < nr; i++) { int nc = s[i].length (); *************** *** 117,131 **** string charMatrix::row_as_string (int r, bool strip_ws = false) const { ! if (r < 0 || r >= rows ()) { (*current_liboctave_error_handler) ("range error for row_as_string"); ! return 0; } ! int nc = cols (); ! ! string retval (nc, '\0'); for (int i = 0; i < nc; i++) retval[i] = elem (r, i); --- 126,146 ---- string charMatrix::row_as_string (int r, bool strip_ws = false) const { ! string retval; ! ! int nr = rows (); ! int nc = cols (); ! ! if (r == 0 && nr == 0 && nc == 0) ! return retval; ! ! if (r < 0 || r >= nr) { (*current_liboctave_error_handler) ("range error for row_as_string"); ! return retval; } ! retval.resize (nc, '\0'); for (int i = 0; i < nc; i++) retval[i] = elem (r, i); diff -cNr octave-2.0.1/liboctave/dbleSVD.cc octave-2.0.2/liboctave/dbleSVD.cc *** octave-2.0.1/liboctave/dbleSVD.cc Sat Mar 2 19:16:15 1996 --- octave-2.0.2/liboctave/dbleSVD.cc Wed Jan 22 16:11:14 1997 *************** *** 99,105 **** break; case SVD::sigma_only: ! jobu = jobv = 'N'; ncol_u = nrow_vt = 1; break; --- 99,113 ---- break; case SVD::sigma_only: ! ! // Note: for this case, both jobu and jobv should be 'N', but ! // there seems to be a bug in dgesvd from Lapack V2.0. To ! // demonstrate the bug, set both jobu and jobv to 'N' and find ! // the singular values of [eye(3), eye(3)]. The result is ! // [-sqrt(2), -sqrt(2), -sqrt(2)]. ! ! jobu = 'O'; ! jobv = 'N'; ncol_u = nrow_vt = 1; break; *************** *** 109,115 **** type_computed = svd_type; ! if (jobu != 'N') left_sm.resize (m, ncol_u); double *u = left_sm.fortran_vec (); --- 117,123 ---- type_computed = svd_type; ! if (! (jobu == 'N' || jobu == 'O')) left_sm.resize (m, ncol_u); double *u = left_sm.fortran_vec (); *************** *** 117,123 **** sigma.resize (nrow_s, ncol_s); double *s_vec = sigma.fortran_vec (); ! if (jobv != 'N') right_sm.resize (nrow_vt, n); double *vt = right_sm.fortran_vec (); --- 125,131 ---- sigma.resize (nrow_s, ncol_s); double *s_vec = sigma.fortran_vec (); ! if (! (jobv == 'N' || jobv == 'O')) right_sm.resize (nrow_vt, n); double *vt = right_sm.fortran_vec (); *************** *** 137,143 **** (*current_liboctave_error_handler) ("unrecoverable error in dgesvd"); else { ! if (jobv != 'N') right_sm = right_sm.transpose (); } --- 145,151 ---- (*current_liboctave_error_handler) ("unrecoverable error in dgesvd"); else { ! if (! (jobv == 'N' || jobv == 'O')) right_sm = right_sm.transpose (); } diff -cNr octave-2.0.1/mkoctfile.in octave-2.0.2/mkoctfile.in *** octave-2.0.1/mkoctfile.in Mon May 13 05:35:04 1996 --- octave-2.0.2/mkoctfile.in Sat Jan 25 22:50:37 1997 *************** *** 29,35 **** LDFLAGS=%LDFLAGS% LIBFLAGS=%LIBFLAGS% - RLD_FLAG=%RLD_FLAG% FLIBS=%FLIBS% LIBS=%LIBS% LEXLIB=%LEXLIB% --- 29,34 ---- *************** *** 53,56 **** echo "making $octfile from $objfile" ! $CXX -shared -o $octfile $objfile $LIBFLAGS $RLD_FLAG $OCTAVE_LIBS $FLIBS $LEXLIB $TERMLIBS $LIBS -lg++ --- 52,55 ---- echo "making $octfile from $objfile" ! $CXX -shared -o $octfile $objfile $LIBFLAGS $OCTAVE_LIBS $FLIBS $LEXLIB $TERMLIBS $LIBS diff -cNr octave-2.0.1/octMakefile.in octave-2.0.2/octMakefile.in *** octave-2.0.1/octMakefile.in Sat Dec 14 09:46:29 1996 --- octave-2.0.2/octMakefile.in Mon Jan 27 16:19:21 1997 *************** *** 25,36 **** DISTFILES = $(CONF_DISTFILES) \ BUGS COPYING INSTALL INSTALL.OCTAVE NEWS NEWS.[0-9] PROJECTS \ README README.Linux README.NLP README.Windows ROADMAP \ ! SENDING-PATCHES THANKS move-if-change octave.sh octave-bug.in \ ! doinstall.sh mkinstalldirs mkoctfile.in texi2dvi INFO.PATCH \ MAKEINFO.PATCH ChangeLog ChangeLog.[0-9] # Complete directory trees to distribute. ! DISTDIRS = emacs glob kpathsea make # plplot # Subdirectories in which to run `make all'. SUBDIRS = @INFO_DIR@ @PLPLOT_DIR@ @READLINE_DIR@ @DLFCN_DIR@ glob \ --- 25,36 ---- DISTFILES = $(CONF_DISTFILES) \ BUGS COPYING INSTALL INSTALL.OCTAVE NEWS NEWS.[0-9] PROJECTS \ README README.Linux README.NLP README.Windows ROADMAP \ ! SENDING-PATCHES THANKS move-if-change octave-sh octave-bug.in \ ! install-octave mkinstalldirs mkoctfile.in texi2dvi INFO.PATCH \ MAKEINFO.PATCH ChangeLog ChangeLog.[0-9] # Complete directory trees to distribute. ! DISTDIRS = glob kpathsea make # plplot # Subdirectories in which to run `make all'. SUBDIRS = @INFO_DIR@ @PLPLOT_DIR@ @READLINE_DIR@ @DLFCN_DIR@ glob \ *************** *** 41,54 **** # Subdirectories in which to run `make dist'. DISTSUBDIRS = libcruft liboctave info readline dlfcn src scripts \ ! test doc examples ! BINDISTFILES = COPYING ChangeLog NEWS README THANKS INSTALL.OCTAVE \ ! BUGS PROJECTS octave-bug octave.sh doinstall.sh \ ! mkinstalldirs ! ! # Subdirectories in which to run `make dist'. ! BINDISTSUBDIRS = emacs scripts doc # Subdirectories in which to run clean targets. CLEANSUBDIRS = $(DISTSUBDIRS) glob kpathsea --- 41,59 ---- # Subdirectories in which to run `make dist'. DISTSUBDIRS = libcruft liboctave info readline dlfcn src scripts \ ! test doc emacs examples ! XBINDISTFILES = BUGS COPYING INSTALL INSTALL.OCTAVE NEWS NEWS.[0-9] \ ! PROJECTS README README.Linux README.NLP README.Windows \ ! SENDING-PATCHES THANKS octave-sh install-octave mkinstalldirs \ ! ChangeLog ChangeLog.[0-9] ! ! BINDISTFILES = $(addprefix $(srcdir)/, $(XBINDISTFILES)) \ ! octave-bug VERSION ARCH ! ! # Subdirectories in which to run `make bin-dist'. ! BINDISTSUBDIRS = libcruft liboctave src kpathsea readline info \ ! scripts doc emacs examples # Subdirectories in which to run clean targets. CLEANSUBDIRS = $(DISTSUBDIRS) glob kpathsea *************** *** 123,135 **** rm -f config.h config.log config.status Makerules.f77 rm -f mk-oct-links mkoctfile ! # Now that things are under RCS control, we need to do the recursive ! # chmod so that the distributed files end up with reasonable modes. ! # Shared rules for making clean tar files. ! clean-tar: echo octave-$(version) > .fname tar xf `cat .fname`.tar find `cat .fname` \( \( -name RCS -a -type d \) \ -o \( -name OLD -a -type d \) -o -name "=*" \ --- 128,152 ---- rm -f config.h config.log config.status Makerules.f77 rm -f mk-oct-links mkoctfile ! # Rules for making a source distribution. ! dist-info-files: INSTALL.OCTAVE BUGS ! .PHONY: dist-info-files ! dist: dist-info-files echo octave-$(version) > .fname + rm -rf `cat .fname` + mkdir `cat .fname` + ln $(DISTFILES) `cat .fname` + for dir in $(DISTDIRS); do ln -s ../$$dir `cat .fname`; done + for dir in $(DISTSUBDIRS); do \ + mkdir `cat .fname`/$$dir ; \ + cd $$dir ; \ + $(MAKE) dist ; \ + cd .. ; \ + done + tar chf `cat .fname`.tar `cat .fname` + rm -rf `cat .fname` tar xf `cat .fname`.tar find `cat .fname` \( \( -name RCS -a -type d \) \ -o \( -name OLD -a -type d \) -o -name "=*" \ *************** *** 141,219 **** rm -rf `cat .fname`/test/octave.test/qpsol chmod -R a+rwX `cat .fname` tar cf `cat .fname`.tar `cat .fname` ! rm -rf `cat .fname` .fname ! .PHONY: clean-tar ! ! dist-z: ! echo octave-$(version) > .fname ! rm -f `cat .fname`.tar.gz gzip --best `cat .fname`.tar rm -f .fname - .PHONY: dist-z - - # Rules for making a source distribution. - - dist-info-files: octave.info INSTALL.OCTAVE BUGS kpathsea.info - .PHONY: dist-info-files - - links-for-dist: dist-info-files - echo octave-$(version) > .fname - rm -rf `cat .fname` - mkdir `cat .fname` - ln $(DISTFILES) `cat .fname` - for dir in $(DISTDIRS); do ln -s ../$$dir `cat .fname`; done - for dir in $(DISTSUBDIRS); do mkdir `cat .fname`/$$dir; cd $$dir; $(MAKE) dist; cd ..; done - .PHONY: links-for-dist - - dist-tar: links-for-dist - tar chf `cat .fname`.tar `cat .fname` - rm -rf `cat .fname` - .PHONY: dist-tar - - clean-dist-tar: dist-tar - $(MAKE) clean-tar - .PHONY: clean-dist-tar - - dist: clean-dist-tar .PHONY: dist ! # Rules for making a binary distribution. ! ! links-for-bin-dist: dist-info-files ! echo octave-$(version) > .fname ! rm -rf `cat .fname` ! mkdir `cat .fname` ! ln $(BINDISTFILES) `cat .fname` ! for dir in $(BINDISTSUBDIRS); do mkdir `cat .fname`/$$dir; cd $$dir; $(MAKE) dist; cd ..; done ! .PHONY: links-for-dist ! ! bin-dist-tar: links-for-bin-dist ! -strip src/octave ! echo octave-$(version) > .fname ! ln src/octave `cat .fname`/octave ! tar chf `cat .fname`.tar `cat .fname` ! rm -rf `cat .fname` ! .PHONY: bin-dist-tar ! clean-bin-dist-tar: bin-dist-tar ! $(MAKE) clean-tar ! .PHONY: clean-bin-dist-tar ! # binary-dist: clean-bin-dist-tar ! binary-dist: ! @echo "" ! @echo "**********************************************************" ! @echo "* *" ! @echo "* The binary-dist target doesn't work for this version *" ! @echo "* of Octave. *" ! @echo "* *" ! @echo "* If you are interested in making a binary distribution *" ! @echo "* of this version of Octave, please contact *" ! @echo "* bug-octave@bevo.che.wisc.edu. *" ! @echo "* *" ! @echo "**********************************************************" ! @echo "" ! .PHONY: binary-dist # Rules for making a dist of just the stuff needed to run configure. --- 158,183 ---- rm -rf `cat .fname`/test/octave.test/qpsol chmod -R a+rwX `cat .fname` tar cf `cat .fname`.tar `cat .fname` ! rm -rf `cat .fname` gzip --best `cat .fname`.tar rm -f .fname .PHONY: dist ! # Rules for making a snapshot. ! snapshot-version: ! @echo "creating src/version.h" ! @gawk '/#define OCTAVE_VERSION[ \t]*/ { \ ! datestring = strftime("%y%m%d", systime()); \ ! printf("#define OCTAVE_VERSION \"ss-%s\"\n", datestring); \ ! next; \ ! } { print $$0 }' src/version.h > src/version.h.new ! @$(top_srcdir)/move-if-change src/version.h.new src/version.h ! .PHONY: snapshot-version ! snapshot: snapshot-version ! $(MAKE) dist ! .PHONY: snapshot # Rules for making a dist of just the stuff needed to run configure. *************** *** 222,250 **** rm -rf `cat .fname` mkdir `cat .fname` ln $(CONF_DISTFILES) `cat .fname` ! for dir in $(CONF_DISTSUBDIRS); do mkdir `cat .fname`/$$dir; cd $$dir; $(MAKE) conf-dist; cd ..; done tar chf `cat .fname`.tar `cat .fname` rm -rf `cat .fname` gzip --best `cat .fname`.tar rm -f .fname .PHONY: conf-dist ! # Rules for making a snapshot. ! ! snapshot-z: snapshot-version ! $(MAKE) dist ! $(MAKE) dist-z ! .PHONY: snapshot-z ! snapshot: snapshot-z ! .PHONY: snapshot ! snapshot-version: ! @echo "creating src/version.h" ! @gawk '/#define OCTAVE_VERSION[ \t]*/ { \ ! datestring = strftime("%y%m%d", systime()); \ ! printf("#define OCTAVE_VERSION \"ss-%s\"\n", datestring); \ ! next; \ ! } { print $$0 }' src/version.h > src/version.h.new ! @$(top_srcdir)/move-if-change src/version.h.new src/version.h ! .PHONY: snapshot-version --- 186,249 ---- rm -rf `cat .fname` mkdir `cat .fname` ln $(CONF_DISTFILES) `cat .fname` ! for dir in $(CONF_DISTSUBDIRS); do \ ! mkdir `cat .fname`/$$dir ; \ ! cd $$dir ; \ ! $(MAKE) conf-dist ; \ ! cd .. ; \ ! done tar chf `cat .fname`.tar `cat .fname` rm -rf `cat .fname` gzip --best `cat .fname`.tar rm -f .fname .PHONY: conf-dist ! # Rules for making a binary distribution. ! bin-dist-type: ! @if [ -z "$(DIST_TYPE)" ]; then \ ! echo "***" ; \ ! echo "*** Must specify a value for DIST_TYPE (static or dynamic)" ; \ ! echo "***" ; \ ! exit 1 ; \ ! else \ ! exit 0 ; \ ! fi ! .PHONY: bin-dist-type ! ! VERSION: ! echo $(version) > VERSION ! .PHONY: VERSION ! ! ARCH: ! echo $(target_host_type) > ARCH ! .PHONY: ARCH ! binary-dist: bin-dist-type VERSION ARCH octave-bug dist-info-files ! echo octave-$(version)-$(target_host_type)-$(DIST_TYPE) > .fname ! rm -rf `cat .fname` ! mkdir `cat .fname` ! ln $(BINDISTFILES) `cat .fname` ! for dir in $(BINDISTSUBDIRS); do \ ! mkdir `cat .fname`/$$dir ; \ ! cd $$dir ; \ ! $(MAKE) bin-dist ; \ ! cd .. ; \ ! done ! tar chf `cat .fname`.tar `cat .fname` ! rm -rf `cat .fname` ! tar xf `cat .fname`.tar ! find `cat .fname` \( \( -name RCS -a -type d \) \ ! -o \( -name OLD -a -type d \) -o -name "=*" \ ! -o -name '*~' -o -name '#*#' -o -name config.log \ ! -o -name config.status -o -name Makefile \ ! -o -name c-auto.h \) -print | xargs rm -rf ! rm -f `cat .fname`/test/octave.test/*.m ! rm -rf `cat .fname`/test/octave.test/npsol ! rm -rf `cat .fname`/test/octave.test/qpsol ! chmod -R a+rwX `cat .fname` ! tar cf `cat .fname`.tar `cat .fname` ! rm -rf `cat .fname` ! gzip --best `cat .fname`.tar ! rm -f .fname ! .PHONY: binary-dist diff -cNr octave-2.0.1/octave-bug.in octave-2.0.2/octave-bug.in *** octave-2.0.1/octave-bug.in Thu Dec 5 16:35:38 1996 --- octave-2.0.2/octave-bug.in Sat Jan 25 22:48:32 1997 *************** *** 34,40 **** CXXPICFLAG=%CXXPICFLAG% LDFLAGS=%LDFLAGS% LIBFLAGS=%LIBFLAGS% - RLD_FLAG=%RLD_FLAG% CXXLIBS=%CXXLIBS% TERMLIBS=%TERMLIBS% LIBS=%LIBS% --- 34,39 ---- *************** *** 168,174 **** CXXPICFLAG: $CXXPICFLAG LDFLAGS: $LDFLAGS LIBFLAGS: $LIBFLAGS - RLD_FLAG: $RLD_FLAG CXXLIBS: $CXXLIBS TERMLIBS: $TERMLIBS LIBS: $LIBS --- 167,172 ---- diff -cNr octave-2.0.1/octave-sh octave-2.0.2/octave-sh *** octave-2.0.1/octave-sh Wed Dec 31 18:00:00 1969 --- octave-2.0.2/octave-sh Sat Jan 25 01:33:50 1997 *************** *** 0 **** --- 1,19 ---- + #!/bin/sh + # + # Wrapper for octave for binary installations that can't install + # octave in /usr/local/bin. + # + # The real binary should be installed in as octave.bin, and this file + # should be installed in the same directory as octave. + + if test -n "$LD_LIBRARY_PATH"; then + LD_LIBRARY_PATH="@LD_LIBRARY_PATH@:$LD_LIBRARY_PATH" + else + LD_LIBRARY_PATH="@LD_LIBRARY_PATH@" + fi + export LD_LIBRARY_PATH + + OCTAVE_HOME=@OCTAVE_HOME@ + export OCTAVE_HOME + + exec $OCTAVE_HOME/bin/octave.bin $* diff -cNr octave-2.0.1/readline/Makefile.in octave-2.0.2/readline/Makefile.in *** octave-2.0.1/readline/Makefile.in Thu Dec 12 02:23:06 1996 --- octave-2.0.2/readline/Makefile.in Fri Jan 24 23:23:24 1997 *************** *** 112,117 **** --- 112,122 ---- DISTFILES = $(CSOURCES) $(HSOURCES) Makefile.in configure.in \ configure README STANDALONE COPYING config.h.in + ifeq ($(SHARED_LIBS), true) + BINDISTFILES = $(SH_LIBS_TO_INSTALL) + BINDISTLIBS = $(addprefix readline/, $(SH_LIBS_TO_INSTALL)) + endif + SUBDIRS = doc examples # The texinfo files which document this library. *************** *** 148,155 **** stamp-readline: $(PICOBJ) if $(SHARED_LIBS); then \ ! $(CC) -shared -o libreadline.$(SHLEXT) $(PICOBJ) \ ! $(SH_TERMLIBS); \ fi touch stamp-readline --- 153,159 ---- stamp-readline: $(PICOBJ) if $(SHARED_LIBS); then \ ! $(CC) -shared -o libreadline.$(SHLEXT) $(PICOBJ) $(SH_TERMLIBS); \ fi touch stamp-readline *************** *** 223,228 **** --- 227,240 ---- for dir in $(SUBDIRS); do mkdir ../`cat ../.fname`/readline/$$dir; cd $$dir; $(MAKE) $@; cd ..; done ln $(DISTFILES) ../`cat ../.fname`/readline .PHONY: dist + + + bin-dist: + if [ -n "$(BINDISTFILES)" ]; then \ + ln $(BINDISTFILES) ../`cat ../.fname`/readline ; \ + fi + echo $(BINDISTLIBS) >> ../`cat ../.fname`/LIBRARIES + .PHONY: bin-dist # Dependencies readline.o: readline.c readline.h rldefs.h rlconf.h chardefs.h diff -cNr octave-2.0.1/readline/examples/Makefile.in octave-2.0.2/readline/examples/Makefile.in *** octave-2.0.1/readline/examples/Makefile.in Thu Dec 12 02:23:02 1996 --- octave-2.0.2/readline/examples/Makefile.in Tue Jan 7 00:53:05 1997 *************** *** 21,24 **** distclean mostlyclean maintainer-clean: rm -f Makefile ! .PHONY: distclean mostlyclean maintainer-clean --- 21,24 ---- distclean mostlyclean maintainer-clean: rm -f Makefile ! .PHONY: distclean mostlyclean maintainer-clean diff -cNr octave-2.0.1/scripts/ChangeLog octave-2.0.2/scripts/ChangeLog *** octave-2.0.1/scripts/ChangeLog Tue Jan 7 00:16:56 1997 --- octave-2.0.2/scripts/ChangeLog Mon Jan 27 15:52:26 1997 *************** *** 1,3 **** --- 1,33 ---- + Mon Jan 27 13:48:31 1997 John W. Eaton + + * Version 2.0.2 released. + + * plot/__plt__.m: Use usleep() instead of replot to try to avoid + weird missing-lines bug without creating extra plots unecessarily. + + Sat Jan 25 22:37:07 1997 John W. Eaton + + * Makefile.in, audio/Makefile.in, control/Makefile.in, + elfun/Makefile.in, general/Makefile.in, image/Makefile.in, + io/Makefile.in, linear-algebra/Makefile.in, + miscellaneous/Makefile.in, plot/Makefile.in, + polynomial/Makefile.in, set/Makefile.in, signal/Makefile.in, + specfun/Makefile.in, special-matrix/Makefile.in, + startup/Makefile.in, statistics/Makefile.in, strings/Makefile.in, + time/Makefile.in (bin-dist): New target. + + Wed Jan 22 11:28:30 1997 John W. Eaton + + * specfun/erfinv.m: Avoid A([]) = X, X != [] error. + + Tue Jan 21 11:16:40 1997 John W. Eaton + + * miscellaneous/xor.m: Make it work. + + Mon Jan 20 12:28:34 1997 John W. Eaton + + * plot/sombrero.m: Doc fix. + Tue Jan 7 00:16:52 1997 John W. Eaton * Version 2.0.1 released. diff -cNr octave-2.0.1/scripts/Makefile.in octave-2.0.2/scripts/Makefile.in *** octave-2.0.1/scripts/Makefile.in Mon Dec 16 15:21:31 1996 --- octave-2.0.2/scripts/Makefile.in Mon Jan 27 16:03:33 1997 *************** *** 31,36 **** --- 31,38 ---- DISTSUBDIRS = $(SUBDIRS) + BINDISTSUBDIRS = $(SUBDIRS) + FCN_FILES = # $(wildcard $(srcdir)/*.m) FCN_FILES_NO_DIR = # $(notdir $(FCN_FILES)) *************** *** 71,73 **** --- 73,79 ---- ln $(DISTFILES) ../`cat ../.fname`/scripts for dir in $(DISTSUBDIRS); do mkdir ../`cat ../.fname`/scripts/$$dir; cd $$dir; $(MAKE) $@; cd ..; done .PHONY: dist + + bin-dist: + for dir in $(BINDISTSUBDIRS); do mkdir ../`cat ../.fname`/scripts/$$dir; cd $$dir; $(MAKE) $@; cd ..; done + .PHONY: bin-dist diff -cNr octave-2.0.1/scripts/audio/Makefile.in octave-2.0.2/scripts/audio/Makefile.in *** octave-2.0.1/scripts/audio/Makefile.in Thu Dec 12 02:22:58 1996 --- octave-2.0.2/scripts/audio/Makefile.in Fri Jan 24 22:36:53 1997 *************** *** 27,32 **** --- 27,34 ---- FCN_FILES = $(wildcard $(srcdir)/*.m) FCN_FILES_NO_DIR = $(notdir $(FCN_FILES)) + BINDISTFILES = $(FCN_FILES) + all: .PHONY: all *************** *** 67,69 **** --- 69,75 ---- dist: ln $(DISTFILES) ../../`cat ../../.fname`/scripts/audio .PHONY: dist + + bin-dist: + ln $(BINDISTFILES) ../../`cat ../../.fname`/scripts/audio + .PHONY: bin-dist diff -cNr octave-2.0.1/scripts/control/Makefile.in octave-2.0.2/scripts/control/Makefile.in *** octave-2.0.1/scripts/control/Makefile.in Thu Dec 12 02:22:48 1996 --- octave-2.0.2/scripts/control/Makefile.in Fri Jan 24 22:36:47 1997 *************** *** 27,32 **** --- 27,34 ---- FCN_FILES = $(wildcard $(srcdir)/*.m) FCN_FILES_NO_DIR = $(notdir $(FCN_FILES)) + BINDISTFILES = $(FCN_FILES) + all: .PHONY: all *************** *** 67,69 **** --- 69,75 ---- dist: ln $(DISTFILES) ../../`cat ../../.fname`/scripts/control .PHONY: dist + + bin-dist: + ln $(BINDISTFILES) ../../`cat ../../.fname`/scripts/control + .PHONY: bin-dist diff -cNr octave-2.0.1/scripts/elfun/Makefile.in octave-2.0.2/scripts/elfun/Makefile.in *** octave-2.0.1/scripts/elfun/Makefile.in Thu Dec 12 02:22:45 1996 --- octave-2.0.2/scripts/elfun/Makefile.in Fri Jan 24 22:36:38 1997 *************** *** 1,4 **** ! # # Makefile for octave's scripts/elfun directory # # John W. Eaton --- 1,4 ---- ! # Makefile for octave's scripts/elfun directory # # John W. Eaton *************** *** 27,32 **** --- 27,34 ---- FCN_FILES = $(wildcard $(srcdir)/*.m) FCN_FILES_NO_DIR = $(notdir $(FCN_FILES)) + BINDISTFILES = $(FCN_FILES) + all: .PHONY: all *************** *** 67,69 **** --- 69,75 ---- dist: ln $(DISTFILES) ../../`cat ../../.fname`/scripts/elfun .PHONY: dist + + bin-dist: + ln $(BINDISTFILES) ../../`cat ../../.fname`/scripts/elfun + .PHONY: bin-dist diff -cNr octave-2.0.1/scripts/general/Makefile.in octave-2.0.2/scripts/general/Makefile.in *** octave-2.0.1/scripts/general/Makefile.in Thu Dec 12 02:22:42 1996 --- octave-2.0.2/scripts/general/Makefile.in Fri Jan 24 22:36:28 1997 *************** *** 27,32 **** --- 27,34 ---- FCN_FILES = $(wildcard $(srcdir)/*.m) FCN_FILES_NO_DIR = $(notdir $(FCN_FILES)) + BINDISTFILES = $(FCN_FILES) + all: .PHONY: all *************** *** 67,69 **** --- 69,75 ---- dist: ln $(DISTFILES) ../../`cat ../../.fname`/scripts/general .PHONY: dist + + bin-dist: + ln $(BINDISTFILES) ../../`cat ../../.fname`/scripts/general + .PHONY: bin-dist diff -cNr octave-2.0.1/scripts/image/Makefile.in octave-2.0.2/scripts/image/Makefile.in *** octave-2.0.1/scripts/image/Makefile.in Thu Dec 12 02:22:39 1996 --- octave-2.0.2/scripts/image/Makefile.in Fri Jan 24 22:36:26 1997 *************** *** 31,36 **** --- 31,38 ---- IMAGE_FILES = $(wildcard $(srcdir)/*.img) IMAGE_FILES_NO_DIR = $(notdir $(IMAGE_FILES)) + BINDISTFILES = $(FCN_FILES) $(IMAGE_FILES) + all: .PHONY: all *************** *** 80,82 **** --- 82,88 ---- dist: ln $(DISTFILES) ../../`cat ../../.fname`/scripts/image .PHONY: dist + + bin-dist: + ln $(BINDISTFILES) ../../`cat ../../.fname`/scripts/image + .PHONY: bin-dist diff -cNr octave-2.0.1/scripts/io/Makefile.in octave-2.0.2/scripts/io/Makefile.in *** octave-2.0.1/scripts/io/Makefile.in Thu Dec 12 02:22:36 1996 --- octave-2.0.2/scripts/io/Makefile.in Fri Jan 24 22:36:25 1997 *************** *** 27,32 **** --- 27,34 ---- FCN_FILES = $(wildcard $(srcdir)/*.m) FCN_FILES_NO_DIR = $(notdir $(FCN_FILES)) + BINDISTFILES = $(FCN_FILES) + all: .PHONY: all *************** *** 67,69 **** --- 69,75 ---- dist: ln $(DISTFILES) ../../`cat ../../.fname`/scripts/io .PHONY: dist + + bin-dist: + ln $(BINDISTFILES) ../../`cat ../../.fname`/scripts/io + .PHONY: bin-dist diff -cNr octave-2.0.1/scripts/linear-algebra/Makefile.in octave-2.0.2/scripts/linear-algebra/Makefile.in *** octave-2.0.1/scripts/linear-algebra/Makefile.in Thu Dec 12 02:22:33 1996 --- octave-2.0.2/scripts/linear-algebra/Makefile.in Fri Jan 24 22:36:23 1997 *************** *** 27,32 **** --- 27,34 ---- FCN_FILES = $(wildcard $(srcdir)/*.m) FCN_FILES_NO_DIR = $(notdir $(FCN_FILES)) + BINDISTFILES = $(FCN_FILES) + all: .PHONY: all *************** *** 67,69 **** --- 69,75 ---- dist: ln $(DISTFILES) ../../`cat ../../.fname`/scripts/linear-algebra .PHONY: dist + + bin-dist: + ln $(BINDISTFILES) ../../`cat ../../.fname`/scripts/linear-algebra + .PHONY: bin-dist diff -cNr octave-2.0.1/scripts/miscellaneous/Makefile.in octave-2.0.2/scripts/miscellaneous/Makefile.in *** octave-2.0.1/scripts/miscellaneous/Makefile.in Thu Dec 12 02:22:30 1996 --- octave-2.0.2/scripts/miscellaneous/Makefile.in Fri Jan 24 22:36:22 1997 *************** *** 27,32 **** --- 27,34 ---- FCN_FILES = $(wildcard $(srcdir)/*.m) FCN_FILES_NO_DIR = $(notdir $(FCN_FILES)) + BINDISTFILES = $(FCN_FILES) + all: .PHONY: all *************** *** 67,69 **** --- 69,75 ---- dist: ln $(DISTFILES) ../../`cat ../../.fname`/scripts/miscellaneous .PHONY: dist + + bin-dist: + ln $(BINDISTFILES) ../../`cat ../../.fname`/scripts/miscellaneous + .PHONY: bin-dist diff -cNr octave-2.0.1/scripts/miscellaneous/xor.m octave-2.0.2/scripts/miscellaneous/xor.m *** octave-2.0.1/scripts/miscellaneous/xor.m Tue Nov 19 15:36:26 1996 --- octave-2.0.2/scripts/miscellaneous/xor.m Tue Jan 21 11:17:58 1997 *************** *** 26,39 **** function z = xor (x, y) ! if (nargin != 2) usage ("xor (x, y)"); endif - if (is_scalar (x) || is_scalar (y) || size (x) == size (y)) - error ("xor: x and y must be of common size or scalars"); - endif - - z = (x | y) - (x & y); - endfunction --- 26,39 ---- function z = xor (x, y) ! if (nargin == 2) ! if (is_scalar (x) || is_scalar (y) || size (x) == size (y)) ! z = (x | y) - (x & y); ! else ! error ("xor: x and y must be of common size or scalars"); ! endif ! else usage ("xor (x, y)"); endif endfunction diff -cNr octave-2.0.1/scripts/plot/Makefile.in octave-2.0.2/scripts/plot/Makefile.in *** octave-2.0.1/scripts/plot/Makefile.in Thu Dec 12 02:22:27 1996 --- octave-2.0.2/scripts/plot/Makefile.in Fri Jan 24 22:36:20 1997 *************** *** 27,32 **** --- 27,34 ---- FCN_FILES = $(wildcard $(srcdir)/*.m) FCN_FILES_NO_DIR = $(notdir $(FCN_FILES)) + BINDISTFILES = $(FCN_FILES) + all: .PHONY: all *************** *** 67,69 **** --- 69,75 ---- dist: ln $(DISTFILES) ../../`cat ../../.fname`/scripts/plot .PHONY: dist + + bin-dist: + ln $(BINDISTFILES) ../../`cat ../../.fname`/scripts/plot + .PHONY: bin-dist diff -cNr octave-2.0.1/scripts/plot/__plt__.m octave-2.0.2/scripts/plot/__plt__.m *** octave-2.0.1/scripts/plot/__plt__.m Fri Nov 15 18:14:28 1996 --- octave-2.0.2/scripts/plot/__plt__.m Mon Jan 27 13:45:02 1997 *************** *** 72,77 **** --- 72,84 ---- x_set = 1; endif + ## Something fishy is going on. I don't think this should be + ## necessary, but without it, sometimes not all the lines from a + ## given plot command appear on the screen. Even with it, the + ## delay might not be long enough for some systems... + + usleep (1e5); + endwhile ## Handle last plot. *************** *** 83,94 **** __plt1__ (x, fmt); endif endif - - ## Something fishy is going on. I don't think this should be - ## necessary, but without it, sometimes not all the lines from a - ## given plot command appear on the screen. - - replot; unwind_protect_cleanup --- 90,95 ---- diff -cNr octave-2.0.1/scripts/plot/sombrero.m octave-2.0.2/scripts/plot/sombrero.m *** octave-2.0.1/scripts/plot/sombrero.m Thu Jul 11 22:58:02 1996 --- octave-2.0.2/scripts/plot/sombrero.m Mon Jan 20 12:28:33 1997 *************** *** 22,28 **** ## Draw a `sombrero' in three dimensions using n grid lines. The ## function plotted is ## ! ## z = sin (x^2 + y^2) / (x^2 + y^2); ## Author: jwe --- 22,28 ---- ## Draw a `sombrero' in three dimensions using n grid lines. The ## function plotted is ## ! ## z = sin (sqrt (x^2 + y^2)) / (sqrt (x^2 + y^2)) ## Author: jwe diff -cNr octave-2.0.1/scripts/polynomial/Makefile.in octave-2.0.2/scripts/polynomial/Makefile.in *** octave-2.0.1/scripts/polynomial/Makefile.in Thu Dec 12 02:22:19 1996 --- octave-2.0.2/scripts/polynomial/Makefile.in Fri Jan 24 22:36:18 1997 *************** *** 27,32 **** --- 27,34 ---- FCN_FILES = $(wildcard $(srcdir)/*.m) FCN_FILES_NO_DIR = $(notdir $(FCN_FILES)) + BINDISTFILES = $(FCN_FILES) + all: .PHONY: all *************** *** 67,69 **** --- 69,75 ---- dist: ln $(DISTFILES) ../../`cat ../../.fname`/scripts/polynomial .PHONY: dist + + bin-dist: + ln $(BINDISTFILES) ../../`cat ../../.fname`/scripts/polynomial + .PHONY: bin-dist diff -cNr octave-2.0.1/scripts/set/Makefile.in octave-2.0.2/scripts/set/Makefile.in *** octave-2.0.1/scripts/set/Makefile.in Thu Dec 12 02:22:16 1996 --- octave-2.0.2/scripts/set/Makefile.in Fri Jan 24 22:36:17 1997 *************** *** 27,32 **** --- 27,34 ---- FCN_FILES = $(wildcard $(srcdir)/*.m) FCN_FILES_NO_DIR = $(notdir $(FCN_FILES)) + BINDISTFILES = $(FCN_FILES) + all: .PHONY: all *************** *** 67,69 **** --- 69,75 ---- dist: ln $(DISTFILES) ../../`cat ../../.fname`/scripts/set .PHONY: dist + + bin-dist: + ln $(BINDISTFILES) ../../`cat ../../.fname`/scripts/set + .PHONY: bin-dist diff -cNr octave-2.0.1/scripts/signal/Makefile.in octave-2.0.2/scripts/signal/Makefile.in *** octave-2.0.1/scripts/signal/Makefile.in Thu Dec 12 02:22:13 1996 --- octave-2.0.2/scripts/signal/Makefile.in Fri Jan 24 22:36:15 1997 *************** *** 27,32 **** --- 27,34 ---- FCN_FILES = $(wildcard $(srcdir)/*.m) FCN_FILES_NO_DIR = $(notdir $(FCN_FILES)) + BINDISTFILES = $(FCN_FILES) + all: .PHONY: all *************** *** 67,69 **** --- 69,75 ---- dist: ln $(DISTFILES) ../../`cat ../../.fname`/scripts/signal .PHONY: dist + + bin-dist: + ln $(BINDISTFILES) ../../`cat ../../.fname`/scripts/signal + .PHONY: bin-dist diff -cNr octave-2.0.1/scripts/specfun/Makefile.in octave-2.0.2/scripts/specfun/Makefile.in *** octave-2.0.1/scripts/specfun/Makefile.in Thu Dec 12 02:22:10 1996 --- octave-2.0.2/scripts/specfun/Makefile.in Fri Jan 24 22:36:13 1997 *************** *** 27,32 **** --- 27,34 ---- FCN_FILES = $(wildcard $(srcdir)/*.m) FCN_FILES_NO_DIR = $(notdir $(FCN_FILES)) + BINDISTFILES = $(FCN_FILES) + all: .PHONY: all *************** *** 67,69 **** --- 69,75 ---- dist: ln $(DISTFILES) ../../`cat ../../.fname`/scripts/specfun .PHONY: dist + + bin-dist: + ln $(BINDISTFILES) ../../`cat ../../.fname`/scripts/specfun + .PHONY: bin-dist diff -cNr octave-2.0.1/scripts/specfun/erfinv.m octave-2.0.2/scripts/specfun/erfinv.m *** octave-2.0.1/scripts/specfun/erfinv.m Tue Nov 19 14:59:59 1996 --- octave-2.0.2/scripts/specfun/erfinv.m Wed Jan 22 11:28:30 1997 *************** *** 37,44 **** y(i) = NaN * ones (length (i), 1); endif ! y (find (x == -1)) = (-Inf) * ones (sum (x == -1), 1); ! y (find (x == 1)) = Inf * ones (sum (x == 1), 1); i = find ((x > -1) & (x < 1)); if any (i) --- 37,47 ---- y(i) = NaN * ones (length (i), 1); endif ! t = find (x == -1); ! y (tmp) = (-Inf) * ones (size (t)); ! ! t = find (x == 1); ! y (t) = Inf * ones (size (t)); i = find ((x > -1) & (x < 1)); if any (i) diff -cNr octave-2.0.1/scripts/special-matrix/Makefile.in octave-2.0.2/scripts/special-matrix/Makefile.in *** octave-2.0.1/scripts/special-matrix/Makefile.in Thu Dec 12 02:22:07 1996 --- octave-2.0.2/scripts/special-matrix/Makefile.in Fri Jan 24 22:36:11 1997 *************** *** 27,32 **** --- 27,34 ---- FCN_FILES = $(wildcard $(srcdir)/*.m) FCN_FILES_NO_DIR = $(notdir $(FCN_FILES)) + BINDISTFILES = $(FCN_FILES) + all: .PHONY: all *************** *** 67,69 **** --- 69,75 ---- dist: ln $(DISTFILES) ../../`cat ../../.fname`/scripts/special-matrix .PHONY: dist + + bin-dist: + ln $(BINDISTFILES) ../../`cat ../../.fname`/scripts/special-matrix + .PHONY: bin-dist diff -cNr octave-2.0.1/scripts/startup/Makefile.in octave-2.0.2/scripts/startup/Makefile.in *** octave-2.0.1/scripts/startup/Makefile.in Thu Dec 12 02:22:04 1996 --- octave-2.0.2/scripts/startup/Makefile.in Fri Jan 24 22:36:08 1997 *************** *** 27,32 **** --- 27,34 ---- FCN_FILES = # $(wildcard $(srcdir)/*.m) FCN_FILES_NO_DIR = # $(notdir $(FCN_FILES)) + BINDISTFILES = $(srcdir)/octaverc + all: .PHONY: all *************** *** 79,81 **** --- 81,87 ---- dist: ln $(DISTFILES) ../../`cat ../../.fname`/scripts/startup .PHONY: dist + + bin-dist: + ln $(BINDISTFILES) ../../`cat ../../.fname`/scripts/startup + .PHONY: bin-dist diff -cNr octave-2.0.1/scripts/statistics/Makefile.in octave-2.0.2/scripts/statistics/Makefile.in *** octave-2.0.1/scripts/statistics/Makefile.in Thu Dec 12 02:22:02 1996 --- octave-2.0.2/scripts/statistics/Makefile.in Fri Jan 24 22:36:00 1997 *************** *** 27,32 **** --- 27,34 ---- FCN_FILES = $(wildcard $(srcdir)/*.m) FCN_FILES_NO_DIR = $(notdir $(FCN_FILES)) + BINDISTFILES = $(FCN_FILES) + all: .PHONY: all *************** *** 67,69 **** --- 69,75 ---- dist: ln $(DISTFILES) ../../`cat ../../.fname`/scripts/statistics .PHONY: dist + + bin-dist: + ln $(BINDISTFILES) ../../`cat ../../.fname`/scripts/statistics + .PHONY: bin-dist diff -cNr octave-2.0.1/scripts/strings/Makefile.in octave-2.0.2/scripts/strings/Makefile.in *** octave-2.0.1/scripts/strings/Makefile.in Thu Dec 12 02:21:59 1996 --- octave-2.0.2/scripts/strings/Makefile.in Fri Jan 24 22:35:57 1997 *************** *** 27,32 **** --- 27,34 ---- FCN_FILES = $(wildcard $(srcdir)/*.m) FCN_FILES_NO_DIR = $(notdir $(FCN_FILES)) + BINDISTFILES = $(FCN_FILES) + all: .PHONY: all *************** *** 67,69 **** --- 69,75 ---- dist: ln $(DISTFILES) ../../`cat ../../.fname`/scripts/strings .PHONY: dist + + bin-dist: + ln $(BINDISTFILES) ../../`cat ../../.fname`/scripts/strings + .PHONY: bin-dist diff -cNr octave-2.0.1/scripts/time/Makefile.in octave-2.0.2/scripts/time/Makefile.in *** octave-2.0.1/scripts/time/Makefile.in Thu Dec 12 02:21:56 1996 --- octave-2.0.2/scripts/time/Makefile.in Fri Jan 24 22:35:52 1997 *************** *** 27,32 **** --- 27,34 ---- FCN_FILES = $(wildcard $(srcdir)/*.m) FCN_FILES_NO_DIR = $(notdir $(FCN_FILES)) + BINDISTFILES = $(FCN_FILES) + all: .PHONY: all *************** *** 67,69 **** --- 69,75 ---- dist: ln $(DISTFILES) ../../`cat ../../.fname`/scripts/time .PHONY: dist + + bin-dist: + ln $(BINDISTFILES) ../../`cat ../../.fname`/scripts/time + .PHONY: bin-dist diff -cNr octave-2.0.1/src/ChangeLog octave-2.0.2/src/ChangeLog *** octave-2.0.1/src/ChangeLog Tue Jan 7 00:16:42 1997 --- octave-2.0.2/src/ChangeLog Mon Jan 27 15:52:23 1997 *************** *** 1,3 **** --- 1,100 ---- + Mon Jan 27 12:12:03 1997 John W. Eaton + + * Version 2.0.2 released. + + * Makefile.in (CXXFLAGS_NO_PT_FLAGS): Rename from XALL_CXXFLAGS. + Substitute bsd_gcc_kluge_targets_frag. + + * sysdep.cc (Fsleep): New function. + (Fusleep): New function. + + * toplev.cc (octave_config_info): Don't include RLD_FLAG. + * oct-conf.h.in: Don't define RLD_FLAG + + Sun Jan 26 19:41:48 1997 John W. Eaton + + * sighandlers.cc (sigchld_handler): Block SIGCHLD while + sigchld_hander is running. + + Sat Jan 25 22:36:39 1997 John W. Eaton + + * Makefile.in (bin-dist): Update for 2.x. + + Fri Jan 24 10:05:00 1997 John W. Eaton + + * mk-oct-links.in: New arg, -p, to just print list of files to link. + + * lex.l (handle_number): Convert `D' or `d' exponents to `e' + before scanning. + + Thu Jan 23 10:00:00 1997 John W. Eaton + + * pt-pr-code.h, pt-pr-code.cc (tree_print_code::visit_no_op_command): + New function. + * pt-cmd.h, pt-cmd.cc (tree_no_op_command): New class. + * parse.y (make_break_command, make_continue_command, + make_return_command): Where they don't really make sense, turn + these commands into no-ops. Accept return and break if reading a + script file. + * toplev.cc (parse_and_execute): Handle return and break in script + files. Quit executing commands if an error occurs when reading a + script file. Set global_command to 0 after deleting it. + (main_loop): If not interactive or forced_interactive, handle + break and return, and quit executing commands if an error occurs. + Set global_command to 0 after deleting it. + * error.cc (Ferror): Doc fix. + * pt-walk.h (tree_walker): Add declaration for visit_no_op_command. + + Wed Jan 22 20:54:12 1997 John W. Eaton + + * input.cc (gnu_readline): If not using readline, flush + rl_outstream after printing prompt. + (octave_gets): Also call flush_octave_stdout() if + forced_interactive, not just if interactive. + (do_input_echo): If forced_interactive, only echo prompt and + command line if also reading a script file. + + Tue Jan 21 23:02:34 1997 John W. Eaton + + * SLList.h: Include "BaseSLList.h", not . + + Mon Jan 20 11:11:12 1997 John W. Eaton + + * lex.l (token_stack): Don't declare static. + * pt-plot.cc (tmp_files): Likewise. + * toplev.cc (octave_atexit_functions): Likewise. + * unwind-prot.cc (unwind_protect_list): Likewise. + + * ops.h (MX_MX_BOOL_OP): Correctly handle case of one or both + arguments being empty. Change all callers. + + * oct-stream.cc (printf_value_cache::looking_at_string): + Handle empty strings correctly now that they are 0x0. + + * file-io.cc: Don't include "syswait.h" here. + + Sun Jan 19 22:38:45 1997 John W. Eaton + + * oct-stream.h (octave_base_stream::seek): Declare offset arg as + streamoff, not streampos. + (octave_stream::seek): Likewise. + * oct-strstrm.h (octave_base_strstream::seek): Likewise. + * oct-stdstrm.h (octave_base_stdiostream::seek): Likewise. + * oct-iostrm.h (octave_base_iostream::seek): Likewise. + * oct-fstrm.h (octave_fstream::seek): Likewise. + + Fri Jan 17 18:13:10 1997 John W. Eaton + + * file-io.cc (Ffflush): Handle stdout as a special case. + + * oct-stream.cc (octave_stream_list::do_get_file_number): + Do the work for octave_stream::get_file_number. + (octave_stream_list::get_file_number): Convert to static function. + + Wed Jan 8 11:42:44 1997 John W. Eaton + + * log.cc (sqrtm): For complex arg case, compute sqrt, not log. + Tue Jan 7 00:16:41 1997 John W. Eaton * Version 2.0.1 released. diff -cNr octave-2.0.1/src/Makefile.in octave-2.0.2/src/Makefile.in *** octave-2.0.1/src/Makefile.in Tue Jan 7 03:04:56 1997 --- octave-2.0.2/src/Makefile.in Mon Jan 27 14:51:42 1997 *************** *** 18,29 **** INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ ! XALL_CXXFLAGS_1 = $(subst -fexternal-templates, , $(ALL_CXXFLAGS)) ! XALL_CXXFLAGS = $(subst -fno-implicit-templates, , $(XALL_CXXFLAGS_1)) %.df : %.cc @echo making $@ from $< ! @$(CXXCPP) -c $(CPPFLAGS) $(XALL_CXXFLAGS) -DMAKE_BUILTINS $< \ | $(srcdir)/mkdefs > $@.t @mv $@.t $@ --- 18,29 ---- INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ ! PT_FLAGS = -fexternal-templates -fno-implicit-templates ! CXXFLAGS_NO_PT_FLAGS = $(filter-out $(PT_FLAGS), $(ALL_CXXFLAGS)) %.df : %.cc @echo making $@ from $< ! @$(CXXCPP) -c $(CPPFLAGS) $(CXXFLAGS_NO_PT_FLAGS) -DMAKE_BUILTINS $< \ | $(srcdir)/mkdefs > $@.t @mv $@.t $@ *************** *** 35,47 **** $(CXX) -shared -o $@ $< \ $(OCTAVE_LFLAGS) \ $(OCTAVE_LIBS) \ ! $(FLIBS) $(LEXLIB) $(TERMLIBS) $(LIBS) -lg++ else %.oct : %.o $(CXX) -shared -o $@ $< \ $(OCTAVE_LFLAGS) \ $(OCTAVE_LIBS) \ ! $(FLIBS) $(LEXLIB) $(TERMLIBS) $(LIBS) -lg++ endif endif --- 35,47 ---- $(CXX) -shared -o $@ $< \ $(OCTAVE_LFLAGS) \ $(OCTAVE_LIBS) \ ! $(FLIBS) $(LEXLIB) $(TERMLIBS) $(LIBS) else %.oct : %.o $(CXX) -shared -o $@ $< \ $(OCTAVE_LFLAGS) \ $(OCTAVE_LIBS) \ ! $(FLIBS) $(LEXLIB) $(TERMLIBS) $(LIBS) endif endif *************** *** 170,177 **** octave.cc parse.cc lex.cc y.tab.h \ $(INCLUDES) $(DLD_SRC) $(SOURCES) $(TI_SRC) ! all: stamp-prereq stamp-picdir libraries \ ! $(OCT_FILES) octave .PHONY: all stamp-prereq: defaults.h oct-conf.h --- 170,183 ---- octave.cc parse.cc lex.cc y.tab.h \ $(INCLUDES) $(DLD_SRC) $(SOURCES) $(TI_SRC) ! ifeq ($(SHARED_LIBS), true) ! BINDISTFILES = octave $(OCT_FILES) $(SH_LIBS_TO_INSTALL) ! BINDISTLIBS = $(addprefix src/, $(SH_LIBS_TO_INSTALL)) ! else ! BINDISTFILES = octave $(OCT_FILES) ! endif ! ! all: stamp-prereq stamp-picdir libraries $(OCT_FILES) octave .PHONY: all stamp-prereq: defaults.h oct-conf.h *************** *** 182,188 **** octave.o builtins.o $(DLD_STATIC_OBJ) \ $(OCTAVE_LFLAGS) \ $(OCTAVE_LIBS) \ ! $(FLIBS) $(LEXLIB) $(TERMLIBS) $(LIBS) -lg++ stamp-picdir: if [ "$(SHARED_LIBS)" = true ] || [ "$(OCTAVE_LITE)" = true ]; then \ --- 188,194 ---- octave.o builtins.o $(DLD_STATIC_OBJ) \ $(OCTAVE_LFLAGS) \ $(OCTAVE_LIBS) \ ! $(FLIBS) $(LEXLIB) $(TERMLIBS) $(LIBS) stamp-picdir: if [ "$(SHARED_LIBS)" = true ] || [ "$(OCTAVE_LITE)" = true ]; then \ *************** *** 213,219 **** $(CXX) -shared -o liboctinterp.$(SHLEXT) $(PICOBJ) \ $(OCTAVE_LFLAGS) \ -loctave -lcruft -ltinst -lreadline -lkpathsea \ ! $(SH_TERMLIBS) $(SH_LIBS) -lg++ ; \ else \ true ; \ fi --- 219,225 ---- $(CXX) -shared -o liboctinterp.$(SHLEXT) $(PICOBJ) \ $(OCTAVE_LFLAGS) \ -loctave -lcruft -ltinst -lreadline -lkpathsea \ ! $(SH_TERMLIBS) $(SH_LIBS) ; \ else \ true ; \ fi *************** *** 224,230 **** $(CXX) -shared -o libtinst.$(SHLEXT) $(TI_PICOBJ) \ $(OCTAVE_LFLAGS) \ -loctinterp -loctave -lcruft -lreadline -lkpathsea \ ! $(SH_TERMLIBS) $(SH_LIBS) -lg++ ; \ else \ true ; \ fi --- 230,236 ---- $(CXX) -shared -o libtinst.$(SHLEXT) $(TI_PICOBJ) \ $(OCTAVE_LFLAGS) \ -loctinterp -loctave -lcruft -lreadline -lkpathsea \ ! $(SH_TERMLIBS) $(SH_LIBS) ; \ else \ true ; \ fi *************** *** 239,244 **** --- 245,252 ---- $(MAKEDEPS): defaults.h oct-gperf.h oct-conf.h + @bsd_gcc_kluge_targets_frag@ + check: all .PHONY: check *************** *** 249,254 **** --- 257,263 ---- sed < $< > $@.tmp \ -e "s;%LN_S%;${LN_S};" $(top_srcdir)/move-if-change $@.tmp $@ + chmod a+rx mk-oct-links install-bin: $(top_srcdir)/mkinstalldirs $(bindir) *************** *** 260,266 **** install-oct: mk-oct-links if [ -n "$(OCT_FILES)" ]; then \ $(top_srcdir)/mkinstalldirs $(octfiledir) ; \ - chmod a+rx mk-oct-links ; \ xfiles="$(OCT_FILES)" ; \ for f in $$xfiles ; do \ $(INSTALL_PROGRAM) $$f $(octfiledir)/$$f; \ --- 269,274 ---- *************** *** 342,347 **** --- 350,367 ---- conf-dist: ln octave.cc Makefile.in ../`cat ../.fname`/src .PHONY: conf-dist + + bin-dist: mk-oct-links + if [ -n "$(BINDISTFILES)" ]; then \ + ln $(BINDISTFILES) ../`cat ../.fname`/src ; \ + fi + if [ -n "$(OCT_FILES)" ]; then \ + ./mk-oct-links -p $(octfiledir) \ + $(addprefix $(srcdir)/, $(DLD_SRC)) \ + > ../`cat ../.fname`/src/links-to-make ; \ + fi + echo $(BINDISTLIBS) >> ../`cat ../.fname`/LIBRARIES + .PHONY: bin-dist # Special rules -- these files need special things to be defined. diff -cNr octave-2.0.1/src/SLList.h octave-2.0.2/src/SLList.h *** octave-2.0.1/src/SLList.h Mon Dec 9 23:26:34 1996 --- octave-2.0.2/src/SLList.h Tue Jan 21 23:02:33 1997 *************** *** 24,30 **** #endif #include ! #include template class SLNode : public BaseSLNode --- 24,31 ---- #endif #include ! ! #include "BaseSLList.h" template class SLNode : public BaseSLNode diff -cNr octave-2.0.1/src/error.cc octave-2.0.2/src/error.cc *** octave-2.0.1/src/error.cc Fri Oct 11 18:51:15 1996 --- octave-2.0.2/src/error.cc Thu Jan 23 00:39:00 1997 *************** *** 252,259 **** This should eventually take us up to the top level, possibly\n\ printing traceback messages as we go.\n\ \n\ ! If MESSAGE ends in a newline character, traceback messages are not\n\ ! printed.\n\ \n\ See also: printf") { --- 252,259 ---- This should eventually take us up to the top level, possibly\n\ printing traceback messages as we go.\n\ \n\ ! If the resulting error message ends in a newline character, traceback ! messages are not printed.\n\ \n\ See also: printf") { diff -cNr octave-2.0.1/src/file-io.cc octave-2.0.2/src/file-io.cc *** octave-2.0.1/src/file-io.cc Wed Dec 18 22:46:58 1996 --- octave-2.0.2/src/file-io.cc Mon Jan 20 11:11:26 1997 *************** *** 63,69 **** #include "oct-strstrm.h" #include "pager.h" #include "sysdep.h" - #include "syswait.h" #include "utils.h" #include "variables.h" --- 63,68 ---- *************** *** 168,179 **** if (nargin == 1) { ! octave_stream *os = octave_stream_list::lookup (args(0)); ! if (os) ! retval = (double) os->flush (); else ! gripe_invalid_file_id ("fflush"); } else print_usage ("fflush"); --- 167,191 ---- if (nargin == 1) { ! // XXX FIXME XXX -- any way to avoid special case for stdout? ! int fid = octave_stream_list::get_file_number (args (0)); ! ! if (fid == 1) ! { ! flush_octave_stdout (); ! ! retval = 0.0; ! } else ! { ! octave_stream *os = octave_stream_list::lookup (fid); ! ! if (os) ! retval = (double) os->flush (); ! else ! gripe_invalid_file_id ("fflush"); ! } } else print_usage ("fflush"); diff -cNr octave-2.0.1/src/input.cc octave-2.0.2/src/input.cc *** octave-2.0.1/src/input.cc Tue Nov 5 15:25:38 1996 --- octave-2.0.2/src/input.cc Wed Jan 22 21:09:43 1997 *************** *** 387,393 **** { int do_echo = reading_script_file ? (Vecho_executing_commands & ECHO_SCRIPTS) ! : (Vecho_executing_commands & ECHO_CMD_LINE); if (do_echo) { --- 387,393 ---- { int do_echo = reading_script_file ? (Vecho_executing_commands & ECHO_SCRIPTS) ! : (Vecho_executing_commands & ECHO_CMD_LINE) && ! forced_interactive; if (do_echo) { *************** *** 430,436 **** else { if (s && *s && (interactive || forced_interactive)) ! fprintf (rl_outstream, s); FILE *curr_stream = rl_instream; if (reading_fcn_file || reading_script_file) --- 430,439 ---- else { if (s && *s && (interactive || forced_interactive)) ! { ! fprintf (rl_outstream, s); ! fflush (rl_outstream); ! } FILE *curr_stream = rl_instream; if (reading_fcn_file || reading_script_file) *************** *** 493,503 **** string prompt = decode_prompt_string (ps); ! if (interactive) ! { ! pipe_handler_error_count = 0; ! flush_octave_stdout (); ! } octave_diary << prompt; --- 496,504 ---- string prompt = decode_prompt_string (ps); ! pipe_handler_error_count = 0; ! ! flush_octave_stdout (); octave_diary << prompt; diff -cNr octave-2.0.1/src/lex.l octave-2.0.2/src/lex.l *** octave-2.0.1/src/lex.l Tue Nov 19 20:02:01 1996 --- octave-2.0.2/src/lex.l Fri Jan 24 10:02:30 1997 *************** *** 70,76 **** // reset and avoid growing forever just because we are stashing some // information. This has to appear before lex.h is included, because // one of the macros defined there uses token_stack. ! static SLStack token_stack; // Did eat_whitespace() eat a space or tab, or a newline, or both? --- 70,79 ---- // reset and avoid growing forever just because we are stashing some // information. This has to appear before lex.h is included, because // one of the macros defined there uses token_stack. ! // ! // XXX FIXME XXX -- this should really be static, but that causes ! // problems on some systems. ! SLStack token_stack; // Did eat_whitespace() eat a space or tab, or a newline, or both? *************** *** 1338,1345 **** static void handle_number (char *yytext) { double value; ! int nread = sscanf (yytext, "%lf", &value); // If yytext doesn't contain a valid number, we are in deep doo doo. --- 1341,1357 ---- static void handle_number (char *yytext) { + char *tmp = strsave (yytext); + + char *idx = strpbrk (tmp, "Dd"); + + if (idx) + *idx = 'e'; + double value; ! int nread = sscanf (tmp, "%lf", &value); ! ! delete [] tmp; // If yytext doesn't contain a valid number, we are in deep doo doo. diff -cNr octave-2.0.1/src/log.cc octave-2.0.2/src/log.cc *** octave-2.0.1/src/log.cc Sun Nov 3 02:22:48 1996 --- octave-2.0.2/src/log.cc Wed Jan 8 11:43:25 1997 *************** *** 184,190 **** else if (arg.is_complex_scalar ()) { Complex c = arg.complex_value (); ! retval(0) = log (c); } else if (arg.is_real_type ()) { --- 184,190 ---- else if (arg.is_complex_scalar ()) { Complex c = arg.complex_value (); ! retval(0) = sqrt (c); } else if (arg.is_real_type ()) { diff -cNr octave-2.0.1/src/mk-oct-links.in octave-2.0.2/src/mk-oct-links.in *** octave-2.0.1/src/mk-oct-links.in Thu Nov 14 12:44:04 1996 --- octave-2.0.2/src/mk-oct-links.in Thu Jan 23 17:20:58 1997 *************** *** 3,11 **** # Create additional links to .oct files that define more than one # function. ! # The first arg is taken as the directory where the .oct files are ! # installed. The remaining arguments should be the list of source ! # files that were used to create the .oct files. LN_S="%LN_S%" --- 3,19 ---- # Create additional links to .oct files that define more than one # function. ! # If the first arg is -p, only print the links we need to make. ! ! # The first non-option arg is taken as the directory where the .oct ! # files are installed. The remaining arguments should be the list of ! # source files that were used to create the .oct files. ! ! print_only=false ! if [ $1 = "-p" ]; then ! print_only=true ! shift ! fi LN_S="%LN_S%" *************** *** 22,29 **** if [ "$n" = "$base" ]; then true else ! echo "creating link $n.oct -> $base.oct" ! ( cd $links_dir; rm -f $n.oct; $LN_S $base.oct $n.oct ) fi done fi --- 30,41 ---- if [ "$n" = "$base" ]; then true else ! if $print_only; then ! echo $base.oct $n.oct ! else ! echo "creating link $n.oct -> $base.oct" ! ( cd $links_dir; rm -f $n.oct; $LN_S $base.oct $n.oct ) ! fi fi done fi diff -cNr octave-2.0.1/src/oct-conf.h.in octave-2.0.2/src/oct-conf.h.in *** octave-2.0.1/src/oct-conf.h.in Mon May 13 05:35:29 1996 --- octave-2.0.2/src/oct-conf.h.in Mon Jan 27 12:12:14 1997 *************** *** 104,113 **** #define LIBFLAGS %LIBFLAGS% #endif - #ifndef RLD_FLAG - #define RLD_FLAG %RLD_FLAG% - #endif - #ifndef CXXLIBS #define CXXLIBS %CXXLIBS% #endif --- 104,109 ---- diff -cNr octave-2.0.1/src/oct-fstrm.h octave-2.0.2/src/oct-fstrm.h *** octave-2.0.1/src/oct-fstrm.h Sun Jul 14 17:33:59 1996 --- octave-2.0.2/src/oct-fstrm.h Sun Jan 19 22:40:56 1997 *************** *** 41,47 **** // Position a stream at OFFSET relative to ORIGIN. ! int seek (streampos offset, ios::seek_dir origin); // Return current stream position. --- 41,47 ---- // Position a stream at OFFSET relative to ORIGIN. ! int seek (streamoff offset, ios::seek_dir origin); // Return current stream position. diff -cNr octave-2.0.1/src/oct-iostrm.h octave-2.0.2/src/oct-iostrm.h *** octave-2.0.1/src/oct-iostrm.h Sun Jul 14 17:33:59 1996 --- octave-2.0.2/src/oct-iostrm.h Sun Jan 19 22:40:29 1997 *************** *** 43,49 **** // Position a stream at OFFSET relative to ORIGIN. ! int seek (streampos offset, ios::seek_dir origin); // Return current stream position. --- 43,49 ---- // Position a stream at OFFSET relative to ORIGIN. ! int seek (streamoff offset, ios::seek_dir origin); // Return current stream position. diff -cNr octave-2.0.1/src/oct-stdstrm.cc octave-2.0.2/src/oct-stdstrm.cc *** octave-2.0.1/src/oct-stdstrm.cc Sun Jul 14 17:36:56 1996 --- octave-2.0.2/src/oct-stdstrm.cc Sun Jan 19 22:41:08 1997 *************** *** 40,46 **** // Position a stream at OFFSET relative to ORIGIN. int ! octave_base_stdiostream::seek (streampos offset, ios::seek_dir origin) { int retval = -1; --- 40,46 ---- // Position a stream at OFFSET relative to ORIGIN. int ! octave_base_stdiostream::seek (streamoff offset, ios::seek_dir origin) { int retval = -1; diff -cNr octave-2.0.1/src/oct-stdstrm.h octave-2.0.2/src/oct-stdstrm.h *** octave-2.0.1/src/oct-stdstrm.h Sun Jul 14 17:33:59 1996 --- octave-2.0.2/src/oct-stdstrm.h Sun Jan 19 22:40:06 1997 *************** *** 42,48 **** // Position a stream at OFFSET relative to ORIGIN. ! int seek (streampos offset, ios::seek_dir origin); // Return current stream position. --- 42,48 ---- // Position a stream at OFFSET relative to ORIGIN. ! int seek (streamoff offset, ios::seek_dir origin); // Return current stream position. diff -cNr octave-2.0.1/src/oct-stream.cc octave-2.0.2/src/oct-stream.cc *** octave-2.0.1/src/oct-stream.cc Sun Jan 5 12:47:14 1997 --- octave-2.0.2/src/oct-stream.cc Mon Jan 20 20:38:19 1997 *************** *** 1584,1590 **** { octave_value tmp_val = values (idx); ! retval = tmp_val.is_string () && tmp_val.rows () == 1; } return retval; --- 1584,1597 ---- { octave_value tmp_val = values (idx); ! // An empty string has zero rows and zero columns. ! ! if (tmp_val.is_string ()) ! { ! int nr = tmp_val.rows (); ! ! retval = (nr == 1 || (nr == 0 && tmp_val.columns () == 0)); ! } } return retval; *************** *** 2050,2056 **** } int ! octave_stream::seek (streampos offset, ios::seek_dir origin) { int retval = -1; --- 2057,2063 ---- } int ! octave_stream::seek (streamoff offset, ios::seek_dir origin) { int retval = -1; *************** *** 2685,2691 **** } int ! octave_stream_list::get_file_number (const octave_value& fid) const { int retval = -1; --- 2692,2698 ---- } int ! octave_stream_list::do_get_file_number (const octave_value& fid) const { int retval = -1; *************** *** 2717,2722 **** --- 2724,2740 ---- else retval = int_fid; } + + return retval; + } + + int + octave_stream_list::get_file_number (const octave_value& fid) + { + int retval = -1; + + if (instance) + retval = instance->do_get_file_number (fid); return retval; } diff -cNr octave-2.0.1/src/oct-stream.h octave-2.0.2/src/oct-stream.h *** octave-2.0.1/src/oct-stream.h Sun Oct 27 14:06:43 1996 --- octave-2.0.2/src/oct-stream.h Sun Jan 19 22:39:28 1997 *************** *** 228,234 **** // Position a stream at OFFSET relative to ORIGIN. ! virtual int seek (streampos offset, ios::seek_dir origin) = 0; // Return current stream position. --- 228,234 ---- // Position a stream at OFFSET relative to ORIGIN. ! virtual int seek (streamoff offset, ios::seek_dir origin) = 0; // Return current stream position. *************** *** 374,380 **** string gets (int max_len, bool& err); string gets (const octave_value& max_len, bool& err); ! int seek (streampos offset, ios::seek_dir origin); int seek (const octave_value& offset, const octave_value& origin); long tell (void) const; --- 374,380 ---- string gets (int max_len, bool& err); string gets (const octave_value& max_len, bool& err); ! int seek (streamoff offset, ios::seek_dir origin); int seek (const octave_value& offset, const octave_value& origin); long tell (void) const; *************** *** 492,497 **** --- 492,499 ---- static octave_value open_file_numbers (void); + static int get_file_number (const octave_value& fid); + private: Array list; *************** *** 517,523 **** octave_value do_open_file_numbers (void) const; ! int get_file_number (const octave_value& fid) const; }; #endif --- 519,525 ---- octave_value do_open_file_numbers (void) const; ! int do_get_file_number (const octave_value& fid) const; }; #endif diff -cNr octave-2.0.1/src/oct-strstrm.cc octave-2.0.2/src/oct-strstrm.cc *** octave-2.0.1/src/oct-strstrm.cc Wed Apr 24 22:17:36 1996 --- octave-2.0.2/src/oct-strstrm.cc Sun Jan 19 22:41:00 1997 *************** *** 29,35 **** // Position a stream at OFFSET relative to ORIGIN. int ! octave_base_strstream::seek (streampos offset, ios::seek_dir origin) { int retval = -1; --- 29,35 ---- // Position a stream at OFFSET relative to ORIGIN. int ! octave_base_strstream::seek (streamoff offset, ios::seek_dir origin) { int retval = -1; diff -cNr octave-2.0.1/src/oct-strstrm.h octave-2.0.2/src/oct-strstrm.h *** octave-2.0.1/src/oct-strstrm.h Wed Oct 30 13:00:19 1996 --- octave-2.0.2/src/oct-strstrm.h Sun Jan 19 22:39:42 1997 *************** *** 43,49 **** // Position a stream at OFFSET relative to ORIGIN. ! int seek (streampos offset, ios::seek_dir origin); // Return current stream position. --- 43,49 ---- // Position a stream at OFFSET relative to ORIGIN. ! int seek (streamoff offset, ios::seek_dir origin); // Return current stream position. diff -cNr octave-2.0.1/src/op-cm-cm.cc octave-2.0.2/src/op-cm-cm.cc *** octave-2.0.1/src/op-cm-cm.cc Sun Jan 5 23:14:26 1997 --- octave-2.0.2/src/op-cm-cm.cc Mon Jan 20 20:51:17 1997 *************** *** 89,105 **** return xleftdiv (v1.complex_matrix_value (), v2.complex_matrix_value ()); } ! #define BOOL_OP(OP, EMPTY_RESULT) \ MX_MX_BOOL_OP (ComplexMatrix, m1, v1.complex_matrix_value (), \ ComplexMatrix, m2, v2.complex_matrix_value (), \ ! real (m1 (i, j)) OP real (m2 (i, j)), #OP, EMPTY_RESULT) static octave_value lt (const octave_value& a1, const octave_value& a2) { CAST_BINOP_ARGS (const octave_complex_matrix&, const octave_complex_matrix&); ! BOOL_OP (<, Matrix ()); } static octave_value --- 89,106 ---- return xleftdiv (v1.complex_matrix_value (), v2.complex_matrix_value ()); } ! #define BOOL_OP(OP, ONE_EMPTY_RESULT, TWO_EMPTY_RESULT) \ MX_MX_BOOL_OP (ComplexMatrix, m1, v1.complex_matrix_value (), \ ComplexMatrix, m2, v2.complex_matrix_value (), \ ! real (m1 (i, j)) OP real (m2 (i, j)), #OP, \ ! ONE_EMPTY_RESULT, TWO_EMPTY_RESULT) static octave_value lt (const octave_value& a1, const octave_value& a2) { CAST_BINOP_ARGS (const octave_complex_matrix&, const octave_complex_matrix&); ! BOOL_OP (<, Matrix (), Matrix ()); } static octave_value *************** *** 107,113 **** { CAST_BINOP_ARGS (const octave_complex_matrix&, const octave_complex_matrix&); ! BOOL_OP (<=, Matrix ()); } static octave_value --- 108,114 ---- { CAST_BINOP_ARGS (const octave_complex_matrix&, const octave_complex_matrix&); ! BOOL_OP (<=, Matrix (), Matrix ()); } static octave_value *************** *** 115,123 **** { CAST_BINOP_ARGS (const octave_complex_matrix&, const octave_complex_matrix&); ! MX_MX_BOOL_OP (ComplexMatrix, m1, v1.complex_matrix_value (), \ ! ComplexMatrix, m2, v2.complex_matrix_value (), \ ! m1 (i, j) == m2 (i, j), "==", 0.0); } static octave_value --- 116,125 ---- { CAST_BINOP_ARGS (const octave_complex_matrix&, const octave_complex_matrix&); ! MX_MX_BOOL_OP (ComplexMatrix, m1, v1.complex_matrix_value (), ! ComplexMatrix, m2, v2.complex_matrix_value (), ! m1 (i, j) == m2 (i, j), "==", ! 0.0, 1.0); } static octave_value *************** *** 125,131 **** { CAST_BINOP_ARGS (const octave_complex_matrix&, const octave_complex_matrix&); ! BOOL_OP (>=, Matrix ()); } static octave_value --- 127,133 ---- { CAST_BINOP_ARGS (const octave_complex_matrix&, const octave_complex_matrix&); ! BOOL_OP (>=, Matrix (), Matrix ()); } static octave_value *************** *** 133,139 **** { CAST_BINOP_ARGS (const octave_complex_matrix&, const octave_complex_matrix&); ! BOOL_OP (>, Matrix ()); } static octave_value --- 135,141 ---- { CAST_BINOP_ARGS (const octave_complex_matrix&, const octave_complex_matrix&); ! BOOL_OP (>, Matrix (), Matrix ()); } static octave_value *************** *** 141,149 **** { CAST_BINOP_ARGS (const octave_complex_matrix&, const octave_complex_matrix&); ! MX_MX_BOOL_OP (ComplexMatrix, m1, v1.complex_matrix_value (), \ ! ComplexMatrix, m2, v2.complex_matrix_value (), \ ! m1 (i, j) != m2 (i, j), "!=", 1.0); } static octave_value --- 143,152 ---- { CAST_BINOP_ARGS (const octave_complex_matrix&, const octave_complex_matrix&); ! MX_MX_BOOL_OP (ComplexMatrix, m1, v1.complex_matrix_value (), ! ComplexMatrix, m2, v2.complex_matrix_value (), ! m1 (i, j) != m2 (i, j), "!=", ! 1.0, 0.0); } static octave_value *************** *** 186,194 **** { CAST_BINOP_ARGS (const octave_complex_matrix&, const octave_complex_matrix&); ! MX_MX_BOOL_OP (ComplexMatrix, m1, v1.complex_matrix_value (), \ ! ComplexMatrix, m2, v2.complex_matrix_value (), \ ! m1 (i, j) != 0.0 && m2 (i, j) != 0.0, "&", Matrix ()); } static octave_value --- 189,198 ---- { CAST_BINOP_ARGS (const octave_complex_matrix&, const octave_complex_matrix&); ! MX_MX_BOOL_OP (ComplexMatrix, m1, v1.complex_matrix_value (), ! ComplexMatrix, m2, v2.complex_matrix_value (), ! m1 (i, j) != 0.0 && m2 (i, j) != 0.0, "&", ! Matrix (), Matrix ()); } static octave_value *************** *** 196,204 **** { CAST_BINOP_ARGS (const octave_complex_matrix&, const octave_complex_matrix&); ! MX_MX_BOOL_OP (ComplexMatrix, m1, v1.complex_matrix_value (), \ ! ComplexMatrix, m2, v2.complex_matrix_value (), \ ! m1 (i, j) != 0.0 || m2 (i, j) != 0.0, "|", Matrix ()); } static octave_value --- 200,209 ---- { CAST_BINOP_ARGS (const octave_complex_matrix&, const octave_complex_matrix&); ! MX_MX_BOOL_OP (ComplexMatrix, m1, v1.complex_matrix_value (), ! ComplexMatrix, m2, v2.complex_matrix_value (), ! m1 (i, j) != 0.0 || m2 (i, j) != 0.0, "|", ! Matrix (), Matrix ()); } static octave_value diff -cNr octave-2.0.1/src/op-cm-cs.cc octave-2.0.2/src/op-cm-cs.cc *** octave-2.0.1/src/op-cm-cs.cc Sun Jan 5 23:13:40 1997 --- octave-2.0.2/src/op-cm-cs.cc Mon Jan 20 21:13:04 1997 *************** *** 118,125 **** { CAST_BINOP_ARGS (const octave_complex_matrix&, const octave_complex&); ! MX_SC_BOOL_OP (ComplexMatrix, m, v1.complex_matrix_value (), \ ! Complex, s, v2.complex_value (), \ m (i, j) == s, 0.0); } --- 118,125 ---- { CAST_BINOP_ARGS (const octave_complex_matrix&, const octave_complex&); ! MX_SC_BOOL_OP (ComplexMatrix, m, v1.complex_matrix_value (), ! Complex, s, v2.complex_value (), m (i, j) == s, 0.0); } *************** *** 144,151 **** { CAST_BINOP_ARGS (const octave_complex_matrix&, const octave_complex&); ! MX_SC_BOOL_OP (ComplexMatrix, m, v1.complex_matrix_value (), \ ! Complex, s, v2.complex_value (), \ m (i, j) != s, 1.0); } --- 144,151 ---- { CAST_BINOP_ARGS (const octave_complex_matrix&, const octave_complex&); ! MX_SC_BOOL_OP (ComplexMatrix, m, v1.complex_matrix_value (), ! Complex, s, v2.complex_value (), m (i, j) != s, 1.0); } *************** *** 191,198 **** { CAST_BINOP_ARGS (const octave_complex_matrix&, const octave_complex&); ! MX_SC_BOOL_OP (ComplexMatrix, m, v1.complex_matrix_value (), \ ! Complex, s, v2.complex_value (), \ m (i, j) != 0.0 && s != 0.0, Matrix ()); } --- 191,198 ---- { CAST_BINOP_ARGS (const octave_complex_matrix&, const octave_complex&); ! MX_SC_BOOL_OP (ComplexMatrix, m, v1.complex_matrix_value (), ! Complex, s, v2.complex_value (), m (i, j) != 0.0 && s != 0.0, Matrix ()); } *************** *** 201,208 **** { CAST_BINOP_ARGS (const octave_complex_matrix&, const octave_complex&); ! MX_SC_BOOL_OP (ComplexMatrix, m, v1.complex_matrix_value (), \ ! Complex, s, v2.complex_value (), \ m (i, j) != 0.0 || s != 0.0, Matrix ()); } --- 201,208 ---- { CAST_BINOP_ARGS (const octave_complex_matrix&, const octave_complex&); ! MX_SC_BOOL_OP (ComplexMatrix, m, v1.complex_matrix_value (), ! Complex, s, v2.complex_value (), m (i, j) != 0.0 || s != 0.0, Matrix ()); } diff -cNr octave-2.0.1/src/op-cm-m.cc octave-2.0.2/src/op-cm-m.cc *** octave-2.0.1/src/op-cm-m.cc Sun Jan 5 23:13:14 1997 --- octave-2.0.2/src/op-cm-m.cc Mon Jan 20 20:49:55 1997 *************** *** 87,103 **** return xleftdiv (v1.complex_matrix_value (), v2.matrix_value ()); } ! #define BOOL_OP(OP, EMPTY_RESULT) \ MX_MX_BOOL_OP (ComplexMatrix, m1, v1.complex_matrix_value (), \ Matrix, m2, v2.matrix_value (), \ ! real (m1 (i, j)) OP m2 (i, j), #OP, EMPTY_RESULT) static octave_value lt (const octave_value& a1, const octave_value& a2) { CAST_BINOP_ARGS (const octave_complex_matrix&, const octave_matrix&); ! BOOL_OP (<, Matrix ()); } static octave_value --- 87,104 ---- return xleftdiv (v1.complex_matrix_value (), v2.matrix_value ()); } ! #define BOOL_OP(OP, ONE_EMPTY_RESULT, TWO_EMPTY_RESULT) \ MX_MX_BOOL_OP (ComplexMatrix, m1, v1.complex_matrix_value (), \ Matrix, m2, v2.matrix_value (), \ ! real (m1 (i, j)) OP m2 (i, j), #OP, \ ! ONE_EMPTY_RESULT, TWO_EMPTY_RESULT) static octave_value lt (const octave_value& a1, const octave_value& a2) { CAST_BINOP_ARGS (const octave_complex_matrix&, const octave_matrix&); ! BOOL_OP (<, Matrix (), Matrix ()); } static octave_value *************** *** 105,111 **** { CAST_BINOP_ARGS (const octave_complex_matrix&, const octave_matrix&); ! BOOL_OP (<=, Matrix ()); } static octave_value --- 106,112 ---- { CAST_BINOP_ARGS (const octave_complex_matrix&, const octave_matrix&); ! BOOL_OP (<=, Matrix (), Matrix ()); } static octave_value *************** *** 113,121 **** { CAST_BINOP_ARGS (const octave_complex_matrix&, const octave_matrix&); ! MX_MX_BOOL_OP (ComplexMatrix, m1, v1.complex_matrix_value (), \ ! Matrix, m2, v2.matrix_value (), \ ! m1 (i, j) == m2 (i, j), "==", 0.0); } static octave_value --- 114,123 ---- { CAST_BINOP_ARGS (const octave_complex_matrix&, const octave_matrix&); ! MX_MX_BOOL_OP (ComplexMatrix, m1, v1.complex_matrix_value (), ! Matrix, m2, v2.matrix_value (), ! m1 (i, j) == m2 (i, j), "==", ! 0.0, 1.0); } static octave_value *************** *** 123,129 **** { CAST_BINOP_ARGS (const octave_complex_matrix&, const octave_matrix&); ! BOOL_OP (>=, Matrix ()); } static octave_value --- 125,131 ---- { CAST_BINOP_ARGS (const octave_complex_matrix&, const octave_matrix&); ! BOOL_OP (>=, Matrix (), Matrix ()); } static octave_value *************** *** 131,137 **** { CAST_BINOP_ARGS (const octave_complex_matrix&, const octave_matrix&); ! BOOL_OP (>, Matrix ()); } static octave_value --- 133,139 ---- { CAST_BINOP_ARGS (const octave_complex_matrix&, const octave_matrix&); ! BOOL_OP (>, Matrix (), Matrix ()); } static octave_value *************** *** 139,147 **** { CAST_BINOP_ARGS (const octave_complex_matrix&, const octave_matrix&); ! MX_MX_BOOL_OP (ComplexMatrix, m1, v1.complex_matrix_value (), \ ! Matrix, m2, v2.matrix_value (), \ ! m1 (i, j) != m2 (i, j), "!=", 0.0); } static octave_value --- 141,150 ---- { CAST_BINOP_ARGS (const octave_complex_matrix&, const octave_matrix&); ! MX_MX_BOOL_OP (ComplexMatrix, m1, v1.complex_matrix_value (), ! Matrix, m2, v2.matrix_value (), ! m1 (i, j) != m2 (i, j), "!=", ! 1.0, 0.0); } static octave_value *************** *** 181,189 **** { CAST_BINOP_ARGS (const octave_complex_matrix&, const octave_matrix&); ! MX_MX_BOOL_OP (ComplexMatrix, m1, v1.complex_matrix_value (), \ ! Matrix, m2, v2.matrix_value (), \ ! m1 (i, j) != 0.0 && m2 (i, j), "&", Matrix ()); } static octave_value --- 184,193 ---- { CAST_BINOP_ARGS (const octave_complex_matrix&, const octave_matrix&); ! MX_MX_BOOL_OP (ComplexMatrix, m1, v1.complex_matrix_value (), ! Matrix, m2, v2.matrix_value (), ! m1 (i, j) != 0.0 && m2 (i, j), "&", ! Matrix (), Matrix ()); } static octave_value *************** *** 191,199 **** { CAST_BINOP_ARGS (const octave_complex_matrix&, const octave_matrix&); ! MX_MX_BOOL_OP (ComplexMatrix, m1, v1.complex_matrix_value (), \ ! Matrix, m2, v2.matrix_value (), \ ! m1 (i, j) != 0.0 || m2 (i, j), "|", Matrix ()); } static octave_value --- 195,204 ---- { CAST_BINOP_ARGS (const octave_complex_matrix&, const octave_matrix&); ! MX_MX_BOOL_OP (ComplexMatrix, m1, v1.complex_matrix_value (), ! Matrix, m2, v2.matrix_value (), ! m1 (i, j) != 0.0 || m2 (i, j), "|", ! Matrix (), Matrix ()); } static octave_value diff -cNr octave-2.0.1/src/op-cm-s.cc octave-2.0.2/src/op-cm-s.cc *** octave-2.0.1/src/op-cm-s.cc Sun Jan 5 23:12:35 1997 --- octave-2.0.2/src/op-cm-s.cc Mon Jan 20 21:12:42 1997 *************** *** 118,125 **** { CAST_BINOP_ARGS (const octave_complex_matrix&, const octave_scalar&); ! MX_SC_BOOL_OP (ComplexMatrix, m, v1.complex_matrix_value (), \ ! double, s, v2.double_value (), \ m (i, j) == s, 0.0); } --- 118,125 ---- { CAST_BINOP_ARGS (const octave_complex_matrix&, const octave_scalar&); ! MX_SC_BOOL_OP (ComplexMatrix, m, v1.complex_matrix_value (), ! double, s, v2.double_value (), m (i, j) == s, 0.0); } *************** *** 144,151 **** { CAST_BINOP_ARGS (const octave_complex_matrix&, const octave_scalar&); ! MX_SC_BOOL_OP (ComplexMatrix, m, v1.complex_matrix_value (), \ ! double, s, v2.double_value (), \ m (i, j) != s, 1.0); } --- 144,151 ---- { CAST_BINOP_ARGS (const octave_complex_matrix&, const octave_scalar&); ! MX_SC_BOOL_OP (ComplexMatrix, m, v1.complex_matrix_value (), ! double, s, v2.double_value (), m (i, j) != s, 1.0); } *************** *** 191,198 **** { CAST_BINOP_ARGS (const octave_complex_matrix&, const octave_scalar&); ! MX_SC_BOOL_OP (ComplexMatrix, m, v1.complex_matrix_value (), \ ! double, s, v2.double_value (), \ m (i, j) != 0.0 && s, Matrix ()); } --- 191,198 ---- { CAST_BINOP_ARGS (const octave_complex_matrix&, const octave_scalar&); ! MX_SC_BOOL_OP (ComplexMatrix, m, v1.complex_matrix_value (), ! double, s, v2.double_value (), m (i, j) != 0.0 && s, Matrix ()); } *************** *** 201,208 **** { CAST_BINOP_ARGS (const octave_complex_matrix&, const octave_scalar&); ! MX_SC_BOOL_OP (ComplexMatrix, m, v1.complex_matrix_value (), \ ! double, s, v2.double_value (), \ m (i, j) != 0.0 || s, Matrix ()); } --- 201,208 ---- { CAST_BINOP_ARGS (const octave_complex_matrix&, const octave_scalar&); ! MX_SC_BOOL_OP (ComplexMatrix, m, v1.complex_matrix_value (), ! double, s, v2.double_value (), m (i, j) != 0.0 || s, Matrix ()); } diff -cNr octave-2.0.1/src/op-cs-cm.cc octave-2.0.2/src/op-cs-cm.cc *** octave-2.0.1/src/op-cs-cm.cc Sun Jan 5 23:12:07 1997 --- octave-2.0.2/src/op-cs-cm.cc Mon Jan 20 21:12:29 1997 *************** *** 118,125 **** { CAST_BINOP_ARGS (const octave_complex&, const octave_complex_matrix&); ! SC_MX_BOOL_OP (Complex, s, v1.complex_value (), \ ! ComplexMatrix, m, v2.complex_matrix_value (), \ s == m (i, j), 0.0); } --- 118,125 ---- { CAST_BINOP_ARGS (const octave_complex&, const octave_complex_matrix&); ! SC_MX_BOOL_OP (Complex, s, v1.complex_value (), ! ComplexMatrix, m, v2.complex_matrix_value (), s == m (i, j), 0.0); } *************** *** 144,151 **** { CAST_BINOP_ARGS (const octave_complex&, const octave_complex_matrix&); ! SC_MX_BOOL_OP (Complex, s, v1.complex_value (), \ ! ComplexMatrix, m, v2.complex_matrix_value (), \ s != m (i, j), 1.0); } --- 144,151 ---- { CAST_BINOP_ARGS (const octave_complex&, const octave_complex_matrix&); ! SC_MX_BOOL_OP (Complex, s, v1.complex_value (), ! ComplexMatrix, m, v2.complex_matrix_value (), s != m (i, j), 1.0); } *************** *** 191,198 **** { CAST_BINOP_ARGS (const octave_complex&, const octave_complex_matrix&); ! SC_MX_BOOL_OP (Complex, s, v1.complex_value (), \ ! ComplexMatrix, m, v2.complex_matrix_value (), \ s != 0.0 && m (i, j) != 0.0, Matrix ()); } --- 191,198 ---- { CAST_BINOP_ARGS (const octave_complex&, const octave_complex_matrix&); ! SC_MX_BOOL_OP (Complex, s, v1.complex_value (), ! ComplexMatrix, m, v2.complex_matrix_value (), s != 0.0 && m (i, j) != 0.0, Matrix ()); } *************** *** 201,208 **** { CAST_BINOP_ARGS (const octave_complex&, const octave_complex_matrix&); ! SC_MX_BOOL_OP (Complex, s, v1.complex_value (), \ ! ComplexMatrix, m, v2.complex_matrix_value (), \ s != 0.0 || m (i, j) != 0.0, Matrix ()); } --- 201,208 ---- { CAST_BINOP_ARGS (const octave_complex&, const octave_complex_matrix&); ! SC_MX_BOOL_OP (Complex, s, v1.complex_value (), ! ComplexMatrix, m, v2.complex_matrix_value (), s != 0.0 || m (i, j) != 0.0, Matrix ()); } diff -cNr octave-2.0.1/src/op-cs-m.cc octave-2.0.2/src/op-cs-m.cc *** octave-2.0.1/src/op-cs-m.cc Sun Jan 5 23:11:33 1997 --- octave-2.0.2/src/op-cs-m.cc Mon Jan 20 21:12:16 1997 *************** *** 119,126 **** { CAST_BINOP_ARGS (const octave_complex&, const octave_matrix&); ! SC_MX_BOOL_OP (Complex, s, v1.complex_value (), \ ! Matrix, m, v2.matrix_value (), \ s == m (i, j), 0.0); } --- 119,126 ---- { CAST_BINOP_ARGS (const octave_complex&, const octave_matrix&); ! SC_MX_BOOL_OP (Complex, s, v1.complex_value (), ! Matrix, m, v2.matrix_value (), s == m (i, j), 0.0); } *************** *** 145,152 **** { CAST_BINOP_ARGS (const octave_complex&, const octave_matrix&); ! SC_MX_BOOL_OP (Complex, s, v1.complex_value (), \ ! Matrix, m, v2.matrix_value (), \ s != m (i, j), 1.0); } --- 145,152 ---- { CAST_BINOP_ARGS (const octave_complex&, const octave_matrix&); ! SC_MX_BOOL_OP (Complex, s, v1.complex_value (), ! Matrix, m, v2.matrix_value (), s != m (i, j), 1.0); } diff -cNr octave-2.0.1/src/op-m-cm.cc octave-2.0.2/src/op-m-cm.cc *** octave-2.0.1/src/op-m-cm.cc Sun Jan 5 23:11:00 1997 --- octave-2.0.2/src/op-m-cm.cc Mon Jan 20 21:12:05 1997 *************** *** 87,103 **** return xleftdiv (v1.matrix_value (), v2.complex_matrix_value ()); } ! #define BOOL_OP(OP, EMPTY_RESULT) \ MX_MX_BOOL_OP (Matrix, m1, v1.matrix_value (), \ ComplexMatrix, m2, v2.complex_matrix_value (), \ ! m1 (i, j) OP real (m2 (i, j)), #OP, EMPTY_RESULT) static octave_value lt (const octave_value& a1, const octave_value& a2) { CAST_BINOP_ARGS (const octave_matrix&, const octave_complex_matrix&); ! BOOL_OP (<, Matrix ()); } static octave_value --- 87,104 ---- return xleftdiv (v1.matrix_value (), v2.complex_matrix_value ()); } ! #define BOOL_OP(OP, ONE_EMPTY_RESULT, TWO_EMPTY_RESULT) \ MX_MX_BOOL_OP (Matrix, m1, v1.matrix_value (), \ ComplexMatrix, m2, v2.complex_matrix_value (), \ ! m1 (i, j) OP real (m2 (i, j)), #OP, \ ! ONE_EMPTY_RESULT, TWO_EMPTY_RESULT) static octave_value lt (const octave_value& a1, const octave_value& a2) { CAST_BINOP_ARGS (const octave_matrix&, const octave_complex_matrix&); ! BOOL_OP (<, Matrix (), Matrix ()); } static octave_value *************** *** 105,111 **** { CAST_BINOP_ARGS (const octave_matrix&, const octave_complex_matrix&); ! BOOL_OP (<=, Matrix ()); } static octave_value --- 106,112 ---- { CAST_BINOP_ARGS (const octave_matrix&, const octave_complex_matrix&); ! BOOL_OP (<=, Matrix (), Matrix ()); } static octave_value *************** *** 113,121 **** { CAST_BINOP_ARGS (const octave_matrix&, const octave_complex_matrix&); ! MX_MX_BOOL_OP (Matrix, m1, v1.matrix_value (), \ ! ComplexMatrix, m2, v2.complex_matrix_value (), \ ! m1 (i, j) == m2 (i, j), "==", 0.0); } static octave_value --- 114,123 ---- { CAST_BINOP_ARGS (const octave_matrix&, const octave_complex_matrix&); ! MX_MX_BOOL_OP (Matrix, m1, v1.matrix_value (), ! ComplexMatrix, m2, v2.complex_matrix_value (), ! m1 (i, j) == m2 (i, j), "==", ! 0.0, 1.0); } static octave_value *************** *** 123,129 **** { CAST_BINOP_ARGS (const octave_matrix&, const octave_complex_matrix&); ! BOOL_OP (>=, Matrix ()); } static octave_value --- 125,131 ---- { CAST_BINOP_ARGS (const octave_matrix&, const octave_complex_matrix&); ! BOOL_OP (>=, Matrix (), Matrix ()); } static octave_value *************** *** 131,137 **** { CAST_BINOP_ARGS (const octave_matrix&, const octave_complex_matrix&); ! BOOL_OP (>, Matrix ()); } static octave_value --- 133,139 ---- { CAST_BINOP_ARGS (const octave_matrix&, const octave_complex_matrix&); ! BOOL_OP (>, Matrix (), Matrix ()); } static octave_value *************** *** 139,147 **** { CAST_BINOP_ARGS (const octave_matrix&, const octave_complex_matrix&); ! MX_MX_BOOL_OP (Matrix, m1, v1.matrix_value (), \ ! ComplexMatrix, m2, v2.complex_matrix_value (), \ ! m1 (i, j) != m2 (i, j), "!=", 1.0); } static octave_value --- 141,150 ---- { CAST_BINOP_ARGS (const octave_matrix&, const octave_complex_matrix&); ! MX_MX_BOOL_OP (Matrix, m1, v1.matrix_value (), ! ComplexMatrix, m2, v2.complex_matrix_value (), ! m1 (i, j) != m2 (i, j), "!=", ! 1.0, 0.0); } static octave_value *************** *** 181,189 **** { CAST_BINOP_ARGS (const octave_matrix&, const octave_complex_matrix&); ! MX_MX_BOOL_OP (Matrix, m1, v1.matrix_value (), \ ! ComplexMatrix, m2, v2.complex_matrix_value (), \ ! m1 (i, j) && m2 (i, j) != 0.0, "&", Matrix ()); } static octave_value --- 184,193 ---- { CAST_BINOP_ARGS (const octave_matrix&, const octave_complex_matrix&); ! MX_MX_BOOL_OP (Matrix, m1, v1.matrix_value (), ! ComplexMatrix, m2, v2.complex_matrix_value (), ! m1 (i, j) && m2 (i, j) != 0.0, "&", ! Matrix (), Matrix ()); } static octave_value *************** *** 191,199 **** { CAST_BINOP_ARGS (const octave_matrix&, const octave_complex_matrix&); ! MX_MX_BOOL_OP (Matrix, m1, v1.matrix_value (), \ ! ComplexMatrix, m2, v2.complex_matrix_value (), \ ! m1 (i, j) || m2 (i, j) != 0.0, "|", Matrix ()); } static octave_value * --- 195,204 ---- { CAST_BINOP_ARGS (const octave_matrix&, const octave_complex_matrix&); ! MX_MX_BOOL_OP (Matrix, m1, v1.matrix_value (), ! ComplexMatrix, m2, v2.complex_matrix_value (), ! m1 (i, j) || m2 (i, j) != 0.0, "|", ! Matrix (), Matrix ()); } static octave_value * diff -cNr octave-2.0.1/src/op-m-cs.cc octave-2.0.2/src/op-m-cs.cc *** octave-2.0.1/src/op-m-cs.cc Sun Jan 5 23:10:11 1997 --- octave-2.0.2/src/op-m-cs.cc Mon Jan 20 21:11:40 1997 *************** *** 119,126 **** { CAST_BINOP_ARGS (const octave_matrix&, const octave_complex&); ! MX_SC_BOOL_OP (Matrix, m, v1.matrix_value (), \ ! Complex, s, v2.complex_value (), \ m (i, j) == s, 0.0); } --- 119,126 ---- { CAST_BINOP_ARGS (const octave_matrix&, const octave_complex&); ! MX_SC_BOOL_OP (Matrix, m, v1.matrix_value (), ! Complex, s, v2.complex_value (), m (i, j) == s, 0.0); } *************** *** 145,152 **** { CAST_BINOP_ARGS (const octave_matrix&, const octave_complex&); ! MX_SC_BOOL_OP (Matrix, m, v1.matrix_value (), \ ! Complex, s, v2.complex_value (), \ m (i, j) != s, 1.0); } --- 145,152 ---- { CAST_BINOP_ARGS (const octave_matrix&, const octave_complex&); ! MX_SC_BOOL_OP (Matrix, m, v1.matrix_value (), ! Complex, s, v2.complex_value (), m (i, j) != s, 1.0); } *************** *** 192,199 **** { CAST_BINOP_ARGS (const octave_matrix&, const octave_complex&); ! MX_SC_BOOL_OP (Matrix, m, v1.matrix_value (), \ ! Complex, s, v2.complex_value (), \ m (i, j) && s != 0.0, Matrix ()); } --- 192,199 ---- { CAST_BINOP_ARGS (const octave_matrix&, const octave_complex&); ! MX_SC_BOOL_OP (Matrix, m, v1.matrix_value (), ! Complex, s, v2.complex_value (), m (i, j) && s != 0.0, Matrix ()); } *************** *** 202,209 **** { CAST_BINOP_ARGS (const octave_matrix&, const octave_complex&); ! MX_SC_BOOL_OP (Matrix, m, v1.matrix_value (), \ ! Complex, s, v2.complex_value (), \ m (i, j) || s != 0.0, Matrix ()); } --- 202,209 ---- { CAST_BINOP_ARGS (const octave_matrix&, const octave_complex&); ! MX_SC_BOOL_OP (Matrix, m, v1.matrix_value (), ! Complex, s, v2.complex_value (), m (i, j) || s != 0.0, Matrix ()); } diff -cNr octave-2.0.1/src/op-m-m.cc octave-2.0.2/src/op-m-m.cc *** octave-2.0.1/src/op-m-m.cc Sun Jan 5 23:09:25 1997 --- octave-2.0.2/src/op-m-m.cc Mon Jan 20 21:11:27 1997 *************** *** 86,102 **** return xleftdiv (v1.matrix_value (), v2.matrix_value ()); } ! #define BOOL_OP(OP, EMPTY_RESULT) \ MX_MX_BOOL_OP (Matrix, m1, v1.matrix_value (), \ Matrix, m2, v2.matrix_value (), \ ! m1 (i, j) OP m2 (i, j), #OP, EMPTY_RESULT) static octave_value lt (const octave_value& a1, const octave_value& a2) { CAST_BINOP_ARGS (const octave_matrix&, const octave_matrix&); ! BOOL_OP (<, Matrix ()); } static octave_value --- 86,103 ---- return xleftdiv (v1.matrix_value (), v2.matrix_value ()); } ! #define BOOL_OP(OP, ONE_EMPTY_RESULT, TWO_EMPTY_RESULT) \ MX_MX_BOOL_OP (Matrix, m1, v1.matrix_value (), \ Matrix, m2, v2.matrix_value (), \ ! m1 (i, j) OP m2 (i, j), #OP, \ ! ONE_EMPTY_RESULT, TWO_EMPTY_RESULT) static octave_value lt (const octave_value& a1, const octave_value& a2) { CAST_BINOP_ARGS (const octave_matrix&, const octave_matrix&); ! BOOL_OP (<, Matrix (), Matrix ()); } static octave_value *************** *** 104,110 **** { CAST_BINOP_ARGS (const octave_matrix&, const octave_matrix&); ! BOOL_OP (<=, Matrix ()); } static octave_value --- 105,111 ---- { CAST_BINOP_ARGS (const octave_matrix&, const octave_matrix&); ! BOOL_OP (<=, Matrix (), Matrix ()); } static octave_value *************** *** 112,118 **** { CAST_BINOP_ARGS (const octave_matrix&, const octave_matrix&); ! BOOL_OP (==, 1.0); } static octave_value --- 113,119 ---- { CAST_BINOP_ARGS (const octave_matrix&, const octave_matrix&); ! BOOL_OP (==, 0.0, 1.0); } static octave_value *************** *** 120,126 **** { CAST_BINOP_ARGS (const octave_matrix&, const octave_matrix&); ! BOOL_OP (>=, Matrix ()); } static octave_value --- 121,127 ---- { CAST_BINOP_ARGS (const octave_matrix&, const octave_matrix&); ! BOOL_OP (>=, Matrix (), Matrix ()); } static octave_value *************** *** 128,134 **** { CAST_BINOP_ARGS (const octave_matrix&, const octave_matrix&); ! BOOL_OP (>, Matrix ()); } static octave_value --- 129,135 ---- { CAST_BINOP_ARGS (const octave_matrix&, const octave_matrix&); ! BOOL_OP (>, Matrix (), Matrix ()); } static octave_value *************** *** 136,142 **** { CAST_BINOP_ARGS (const octave_matrix&, const octave_matrix&); ! BOOL_OP (!=, 0.0); } static octave_value --- 137,143 ---- { CAST_BINOP_ARGS (const octave_matrix&, const octave_matrix&); ! BOOL_OP (!=, 1.0, 0.0); } static octave_value *************** *** 176,184 **** { CAST_BINOP_ARGS (const octave_matrix&, const octave_matrix&); ! MX_MX_BOOL_OP (Matrix, m1, v1.matrix_value (), \ ! Matrix, m2, v2.matrix_value (), \ ! m1 (i, j) && m2 (i, j), "&", Matrix ()); } static octave_value --- 177,186 ---- { CAST_BINOP_ARGS (const octave_matrix&, const octave_matrix&); ! MX_MX_BOOL_OP (Matrix, m1, v1.matrix_value (), ! Matrix, m2, v2.matrix_value (), ! m1 (i, j) && m2 (i, j), "&", ! Matrix (), Matrix ()); } static octave_value *************** *** 186,194 **** { CAST_BINOP_ARGS (const octave_matrix&, const octave_matrix&); ! MX_MX_BOOL_OP (Matrix, m1, v1.matrix_value (), \ ! Matrix, m2, v2.matrix_value (), \ ! m1 (i, j) || m2 (i, j), "|", Matrix ()); } static octave_value --- 188,197 ---- { CAST_BINOP_ARGS (const octave_matrix&, const octave_matrix&); ! MX_MX_BOOL_OP (Matrix, m1, v1.matrix_value (), ! Matrix, m2, v2.matrix_value (), ! m1 (i, j) || m2 (i, j), "|", ! Matrix (), Matrix ()); } static octave_value diff -cNr octave-2.0.1/src/op-m-s.cc octave-2.0.2/src/op-m-s.cc *** octave-2.0.1/src/op-m-s.cc Sun Jan 5 23:08:36 1997 --- octave-2.0.2/src/op-m-s.cc Mon Jan 20 21:11:14 1997 *************** *** 187,194 **** { CAST_BINOP_ARGS (const octave_matrix&, const octave_scalar&); ! MX_SC_BOOL_OP (Matrix, m, v1.matrix_value (), \ ! double, s, v2.double_value (), \ m (i, j) && s, Matrix ()); } --- 187,194 ---- { CAST_BINOP_ARGS (const octave_matrix&, const octave_scalar&); ! MX_SC_BOOL_OP (Matrix, m, v1.matrix_value (), ! double, s, v2.double_value (), m (i, j) && s, Matrix ()); } *************** *** 197,204 **** { CAST_BINOP_ARGS (const octave_matrix&, const octave_scalar&); ! MX_SC_BOOL_OP (Matrix, m, v1.matrix_value (), \ ! double, s, v2.double_value (), \ m (i, j) || s, Matrix ()); } --- 197,204 ---- { CAST_BINOP_ARGS (const octave_matrix&, const octave_scalar&); ! MX_SC_BOOL_OP (Matrix, m, v1.matrix_value (), ! double, s, v2.double_value (), m (i, j) || s, Matrix ()); } diff -cNr octave-2.0.1/src/op-s-cm.cc octave-2.0.2/src/op-s-cm.cc *** octave-2.0.1/src/op-s-cm.cc Sun Jan 5 23:07:27 1997 --- octave-2.0.2/src/op-s-cm.cc Mon Jan 20 21:11:08 1997 *************** *** 118,125 **** { CAST_BINOP_ARGS (const octave_scalar&, const octave_complex_matrix&); ! SC_MX_BOOL_OP (double, s, v1.double_value (), \ ! ComplexMatrix, m, v2.complex_matrix_value (), \ s == m (i, j), 0.0); } --- 118,125 ---- { CAST_BINOP_ARGS (const octave_scalar&, const octave_complex_matrix&); ! SC_MX_BOOL_OP (double, s, v1.double_value (), ! ComplexMatrix, m, v2.complex_matrix_value (), s == m (i, j), 0.0); } *************** *** 144,151 **** { CAST_BINOP_ARGS (const octave_scalar&, const octave_complex_matrix&); ! SC_MX_BOOL_OP (double, s, v1.double_value (), \ ! ComplexMatrix, m, v2.complex_matrix_value (), \ s != m (i, j), 1.0); } --- 144,151 ---- { CAST_BINOP_ARGS (const octave_scalar&, const octave_complex_matrix&); ! SC_MX_BOOL_OP (double, s, v1.double_value (), ! ComplexMatrix, m, v2.complex_matrix_value (), s != m (i, j), 1.0); } *************** *** 191,198 **** { CAST_BINOP_ARGS (const octave_scalar&, const octave_complex_matrix&); ! SC_MX_BOOL_OP (double, s, v1.double_value (), \ ! ComplexMatrix, m, v2.complex_matrix_value (), \ s && m (i, j) != 0.0, Matrix ()); } --- 191,198 ---- { CAST_BINOP_ARGS (const octave_scalar&, const octave_complex_matrix&); ! SC_MX_BOOL_OP (double, s, v1.double_value (), ! ComplexMatrix, m, v2.complex_matrix_value (), s && m (i, j) != 0.0, Matrix ()); } *************** *** 201,208 **** { CAST_BINOP_ARGS (const octave_scalar&, const octave_complex_matrix&); ! SC_MX_BOOL_OP (double, s, v1.double_value (), \ ! ComplexMatrix, m, v2.complex_matrix_value (), \ s || m (i, j) != 0.0, Matrix ()); } --- 201,208 ---- { CAST_BINOP_ARGS (const octave_scalar&, const octave_complex_matrix&); ! SC_MX_BOOL_OP (double, s, v1.double_value (), ! ComplexMatrix, m, v2.complex_matrix_value (), s || m (i, j) != 0.0, Matrix ()); } diff -cNr octave-2.0.1/src/op-s-m.cc octave-2.0.2/src/op-s-m.cc *** octave-2.0.1/src/op-s-m.cc Sun Jan 5 23:08:05 1997 --- octave-2.0.2/src/op-s-m.cc Mon Jan 20 21:10:47 1997 *************** *** 187,194 **** { CAST_BINOP_ARGS (const octave_scalar&, const octave_matrix&); ! SC_MX_BOOL_OP (double, s, v1.double_value (), \ ! Matrix, m, v2.matrix_value (), \ s && m (i, j), Matrix ()); } --- 187,194 ---- { CAST_BINOP_ARGS (const octave_scalar&, const octave_matrix&); ! SC_MX_BOOL_OP (double, s, v1.double_value (), ! Matrix, m, v2.matrix_value (), s && m (i, j), Matrix ()); } *************** *** 197,204 **** { CAST_BINOP_ARGS (const octave_scalar&, const octave_matrix&); ! SC_MX_BOOL_OP (double, s, v1.double_value (), \ ! Matrix, m, v2.matrix_value (), \ s || m (i, j), Matrix ()); } --- 197,204 ---- { CAST_BINOP_ARGS (const octave_scalar&, const octave_matrix&); ! SC_MX_BOOL_OP (double, s, v1.double_value (), ! Matrix, m, v2.matrix_value (), s || m (i, j), Matrix ()); } diff -cNr octave-2.0.1/src/op-str-str.cc octave-2.0.2/src/op-str-str.cc *** octave-2.0.1/src/op-str-str.cc Sun Jan 5 23:02:07 1997 --- octave-2.0.2/src/op-str-str.cc Mon Jan 20 20:52:05 1997 *************** *** 50,70 **** if (cm2.rows () == 1 && cm2.columns () == 1) return octave_value (cm1 (0, 0) == cm2 (0, 0)); else ! SC_MX_BOOL_OP (char, c, cm1 (0, 0), \ ! charMatrix, m, cm2, \ c == m (i, j), 0.0); } else { ! if (cm2.rows () == 1 && cm2.columns () == 1) ! MX_SC_BOOL_OP (charMatrix, m, cm1, \ ! char, c, cm2 (0, 0), \ c == m (i, j), 0.0); else ! MX_MX_BOOL_OP (charMatrix, m1, cm1, \ ! charMatrix, m2, cm2, \ ! m1 (i, j) == m2 (i, j), \ ! "==", 0.0); } } --- 50,69 ---- if (cm2.rows () == 1 && cm2.columns () == 1) return octave_value (cm1 (0, 0) == cm2 (0, 0)); else ! SC_MX_BOOL_OP (char, c, cm1 (0, 0), charMatrix, m, cm2, c == m (i, j), 0.0); } else { ! int cm2_nr = cm2.rows (); ! int cm2_nc = cm2.cols (); ! ! if (cm2_nr == 1 && cm2_nc == 1) ! MX_SC_BOOL_OP (charMatrix, m, cm1, char, c, cm2 (0, 0), c == m (i, j), 0.0); else ! MX_MX_BOOL_OP (charMatrix, m1, cm1, charMatrix, m2, cm2, ! m1 (i, j) == m2 (i, j), "==", 0.0, 1.0); } } *************** *** 82,102 **** if (cm2.rows () == 1 && cm2.columns () == 1) return octave_value (cm1 (0, 0) != cm2 (0, 0)); else ! SC_MX_BOOL_OP (char, c, cm1 (0, 0), \ ! charMatrix, m, cm2, \ c != m (i, j), 1.0); } else { if (cm2.rows () == 1 && cm2.columns () == 1) ! MX_SC_BOOL_OP (charMatrix, m, cm1, \ ! char, c, cm2 (0, 0), \ c != m (i, j), 1.0); else ! MX_MX_BOOL_OP (charMatrix, m1, cm1, \ ! charMatrix, m2, cm2, \ ! m1 (i, j) != m2 (i, j), \ ! "!=", 1.0); } } --- 81,97 ---- if (cm2.rows () == 1 && cm2.columns () == 1) return octave_value (cm1 (0, 0) != cm2 (0, 0)); else ! SC_MX_BOOL_OP (char, c, cm1 (0, 0), charMatrix, m, cm2, c != m (i, j), 1.0); } else { if (cm2.rows () == 1 && cm2.columns () == 1) ! MX_SC_BOOL_OP (charMatrix, m, cm1, char, c, cm2 (0, 0), c != m (i, j), 1.0); else ! MX_MX_BOOL_OP (charMatrix, m1, cm1, charMatrix, m2, cm2, ! m1 (i, j) != m2 (i, j), "!=", 1.0, 0.0); } } diff -cNr octave-2.0.1/src/ops.h octave-2.0.2/src/ops.h *** octave-2.0.1/src/ops.h Sun Jan 5 22:58:18 1997 --- octave-2.0.2/src/ops.h Mon Jan 20 21:10:14 1997 *************** *** 65,71 **** { \ BOOL_OP1 (st, sn, get_s, mt, mn, get_m) \ BOOL_OP2 (mn) \ ! if (nr == 0|| nc == 0) \ return empty_result; \ BOOL_OP3 (test) \ } \ --- 65,71 ---- { \ BOOL_OP1 (st, sn, get_s, mt, mn, get_m) \ BOOL_OP2 (mn) \ ! if (nr == 0 || nc == 0) \ return empty_result; \ BOOL_OP3 (test) \ } \ *************** *** 76,89 **** { \ BOOL_OP1 (mt, mn, get_m, st, sn, get_s) \ BOOL_OP2 (mn) \ ! if (nr == 0|| nc == 0) \ return empty_result; \ BOOL_OP3 (test) \ } \ while (0) #define MX_MX_BOOL_OP(m1t, m1n, get_m1, m2t, m2n, get_m2, test, op, \ ! empty_result) \ do \ { \ BOOL_OP1 (m1t, m1n, get_m1, m2t, m2n, get_m2) \ --- 76,89 ---- { \ BOOL_OP1 (mt, mn, get_m, st, sn, get_s) \ BOOL_OP2 (mn) \ ! if (nr == 0 || nc == 0) \ return empty_result; \ BOOL_OP3 (test) \ } \ while (0) #define MX_MX_BOOL_OP(m1t, m1n, get_m1, m2t, m2n, get_m2, test, op, \ ! one_empty_result, two_empty_result) \ do \ { \ BOOL_OP1 (m1t, m1n, get_m1, m2t, m2n, get_m2) \ *************** *** 91,105 **** int m1_nc = m1n.cols (); \ int m2_nr = m2n.rows (); \ int m2_nc = m2n.cols (); \ ! if (m1_nr != m2_nr || m1_nc != m2_nc) \ { \ ! gripe_nonconformant ("operator " op, m1_nr, m1_nc, m2_nr, m2_nc); \ ! return Matrix (); \ } \ - if (m1_nr == 0 || m1_nc == 0) \ - return empty_result; \ - BOOL_OP2 (m1n) \ - BOOL_OP3 (test) \ } \ while (0) --- 91,117 ---- int m1_nc = m1n.cols (); \ int m2_nr = m2n.rows (); \ int m2_nc = m2n.cols (); \ ! if (m1_nr == m2_nr && m1_nc == m2_nc) \ { \ ! if (m1_nr == 0 && m1_nc == 0) \ ! return two_empty_result; \ ! else \ ! { \ ! BOOL_OP2 (m1n) \ ! BOOL_OP3 (test) \ ! } \ ! } \ ! else \ ! { \ ! if ((m1_nr == 0 && m1_nc == 0) || (m2_nr == 0 && m2_nc == 0)) \ ! return one_empty_result; \ ! else \ ! { \ ! gripe_nonconformant ("operator " op, m1_nr, m1_nc, \ ! m2_nr, m2_nc); \ ! return Matrix (); \ ! } \ } \ } \ while (0) diff -cNr octave-2.0.1/src/parse.y octave-2.0.2/src/parse.y *** octave-2.0.1/src/parse.y Tue Nov 19 20:12:28 1996 --- octave-2.0.2/src/parse.y Thu Jan 23 09:48:49 1997 *************** *** 1869,1883 **** { tree_command *retval = 0; ! if (! (lexer_flags.looping || lexer_flags.defining_func)) ! yyerror ("break: only meaningful within a loop or function body"); ! else ! { ! int l = break_tok->line (); ! int c = break_tok->column (); ! retval = new tree_break_command (l, c); ! } return retval; } --- 1869,1881 ---- { tree_command *retval = 0; ! int l = break_tok->line (); ! int c = break_tok->column (); ! if (lexer_flags.looping || lexer_flags.defining_func || reading_script_file) ! retval = new tree_break_command (l, c); ! else ! retval = new tree_no_op_command ("break", l, c); return retval; } *************** *** 1889,1903 **** { tree_command *retval = 0; ! if (! lexer_flags.looping) ! yyerror ("continue: only meaningful within a `for' or `while' loop"); ! else ! { ! int l = continue_tok->line (); ! int c = continue_tok->column (); ! retval = new tree_continue_command (l, c); ! } return retval; } --- 1887,1899 ---- { tree_command *retval = 0; ! int l = continue_tok->line (); ! int c = continue_tok->column (); ! if (lexer_flags.looping) ! retval = new tree_continue_command (l, c); ! else ! retval = new tree_no_op_command ("continue", l, c); return retval; } *************** *** 1909,1923 **** { tree_command *retval = 0; ! if (! lexer_flags.defining_func) ! yyerror ("return: only meaningful within a function"); ! else ! { ! int l = return_tok->line (); ! int c = return_tok->column (); ! retval = new tree_return_command (l, c); ! } return retval; } --- 1905,1917 ---- { tree_command *retval = 0; ! int l = return_tok->line (); ! int c = return_tok->column (); ! if (lexer_flags.defining_func || reading_script_file) ! retval = new tree_return_command (l, c); ! else ! retval = new tree_no_op_command ("return", l, c); return retval; } diff -cNr octave-2.0.1/src/pt-cmd.cc octave-2.0.2/src/pt-cmd.cc *** octave-2.0.1/src/pt-cmd.cc Wed Oct 30 13:36:09 1996 --- octave-2.0.2/src/pt-cmd.cc Thu Jan 23 09:52:10 1997 *************** *** 686,691 **** --- 686,699 ---- tw.visit_unwind_protect_command (*this); } + // No-op. + + void + tree_no_op_command::accept (tree_walker& tw) + { + tw.visit_no_op_command (*this); + } + // Break. void diff -cNr octave-2.0.1/src/pt-cmd.h octave-2.0.2/src/pt-cmd.h *** octave-2.0.1/src/pt-cmd.h Sun May 12 02:16:36 1996 --- octave-2.0.2/src/pt-cmd.h Thu Jan 23 09:53:37 1997 *************** *** 48,59 **** --- 48,62 ---- class tree_if_command; class tree_try_catch_command; class tree_unwind_protect_command; + class tree_no_op_command; class tree_break_command; class tree_continue_command; class tree_return_command; class tree_walker; + #include + #include "pt-base.h" // A base class for commands. *************** *** 288,293 **** --- 291,319 ---- // The code to execute if an error occurs in the first block. tree_statement_list *catch_code; + }; + + // No-op. + + class + tree_no_op_command : public tree_command + { + public: + + tree_no_op_command (const string& cmd = "no_op", int l = -1, int c = -1) + : tree_command (l, c), orig_cmd (cmd) { } + + ~tree_no_op_command (void) { } + + void eval (void) { } + + void accept (tree_walker& tw); + + string original_command (void) { return orig_cmd; } + + private: + + string orig_cmd; }; // Break. diff -cNr octave-2.0.1/src/pt-fcn.cc octave-2.0.2/src/pt-fcn.cc *** octave-2.0.1/src/pt-fcn.cc Sun Jan 5 23:30:14 1997 --- octave-2.0.2/src/pt-fcn.cc Thu Jan 23 10:23:11 1997 *************** *** 61,71 **** // semicolon has been appended to each statement). static bool Vsilent_functions; - // Nonzero means we're returning from a function. - extern int returning; - // Nonzero means we're breaking out of a loop or function body. extern int breaking; // User defined functions. --- 61,71 ---- // semicolon has been appended to each statement). static bool Vsilent_functions; // Nonzero means we're breaking out of a loop or function body. extern int breaking; + + // Nonzero means we're returning from a function. + extern int returning; // User defined functions. diff -cNr octave-2.0.1/src/pt-plot.cc octave-2.0.2/src/pt-plot.cc *** octave-2.0.1/src/pt-plot.cc Wed Dec 11 12:29:12 1996 --- octave-2.0.2/src/pt-plot.cc Mon Jan 20 14:51:45 1997 *************** *** 91,97 **** static bool clear_before_plotting = true; // List of files to delete when we exit or crash. ! static SLStack tmp_files; // Pipe to gnuplot. static oprocstream *plot_stream = 0; --- 91,100 ---- static bool clear_before_plotting = true; // List of files to delete when we exit or crash. ! // ! // XXX FIXME XXX -- this should really be static, but that causes ! // problems on some systems. ! SLStack tmp_files; // Pipe to gnuplot. static oprocstream *plot_stream = 0; diff -cNr octave-2.0.1/src/pt-pr-code.cc octave-2.0.2/src/pt-pr-code.cc *** octave-2.0.1/src/pt-pr-code.cc Mon Nov 18 23:46:05 1996 --- octave-2.0.2/src/pt-pr-code.cc Thu Jan 23 09:40:29 1997 *************** *** 553,558 **** --- 553,566 ---- } void + tree_print_code::visit_no_op_command (tree_no_op_command& cmd) + { + indent (); + + os << cmd.original_command (); + } + + void tree_print_code::visit_oct_obj (tree_oct_obj&) { ::error ("visit_oct_obj: internal error"); diff -cNr octave-2.0.1/src/pt-pr-code.h octave-2.0.2/src/pt-pr-code.h *** octave-2.0.1/src/pt-pr-code.h Mon Nov 18 23:45:37 1996 --- octave-2.0.2/src/pt-pr-code.h Thu Jan 23 09:57:10 1997 *************** *** 88,93 **** --- 88,95 ---- void visit_multi_assignment_expression (tree_multi_assignment_expression&); + void visit_no_op_command (tree_no_op_command&); + void visit_oct_obj (tree_oct_obj&); void visit_constant (tree_constant&); diff -cNr octave-2.0.1/src/pt-walk.h octave-2.0.2/src/pt-walk.h *** octave-2.0.1/src/pt-walk.h Fri Oct 11 19:15:08 1996 --- octave-2.0.2/src/pt-walk.h Thu Jan 23 09:38:18 1997 *************** *** 99,104 **** --- 99,107 ---- visit_multi_assignment_expression (tree_multi_assignment_expression&) = 0; virtual void + visit_no_op_command (tree_no_op_command&) = 0; + + virtual void visit_oct_obj (tree_oct_obj&) = 0; virtual void diff -cNr octave-2.0.1/src/sighandlers.cc octave-2.0.2/src/sighandlers.cc *** octave-2.0.1/src/sighandlers.cc Thu Dec 19 12:13:38 1996 --- octave-2.0.2/src/sighandlers.cc Sat Jan 25 23:27:17 1997 *************** *** 80,92 **** #endif #if defined (__EMX__) ! #define MAYBE_UNBLOCK_SIGNAL(sig) \ octave_set_signal_handler (sig, SIG_ACK) #else ! #define MAYBE_UNBLOCK_SIGNAL(sig) \ do { } while (0) #endif void octave_save_signal_mask (void) { --- 80,112 ---- #endif #if defined (__EMX__) ! #define MAYBE_ACK_SIGNAL(sig) \ octave_set_signal_handler (sig, SIG_ACK) #else ! #define MAYBE_ACK_SIGNAL(sig) \ do { } while (0) #endif + // The following signal blocking stuff is stolen from bash: + + #define BLOCK_SIGNAL(sig, nvar, ovar) \ + do \ + { \ + sigemptyset (&nvar); \ + sigaddset (&nvar, sig); \ + sigemptyset (&ovar); \ + sigprocmask (SIG_BLOCK, &nvar, &ovar); \ + } \ + while (0) + + #if defined (HAVE_POSIX_SIGNALS) + #define BLOCK_CHILD(nvar, ovar) BLOCK_SIGNAL (SIGCHLD, nvar, ovar) + #define UNBLOCK_CHILD(ovar) sigprocmask (SIG_SETMASK, &ovar, 0) + #else + #define BLOCK_CHILD(nvar, ovar) ovar = sigblock (sigmask (SIGCHLD)) + #define UNBLOCK_CHILD(ovar) sigsetmask (ovar) + #endif + void octave_save_signal_mask (void) { *************** *** 189,202 **** static RETSIGTYPE sigchld_handler (int /* sig */) { - #if defined (__EMX__) volatile octave_interrupt_handler *saved_interrupt_handler = octave_ignore_interrupts (); volatile sig_handler *saved_sigchld_handler ! = octave_set_signal_hanlder (SIGCHLD, SIG_IGN); #endif int n = octave_child_list::length (); if (n == 0) --- 209,230 ---- static RETSIGTYPE sigchld_handler (int /* sig */) { volatile octave_interrupt_handler *saved_interrupt_handler = octave_ignore_interrupts (); + // I wonder if this is really right, or if SIGCHLD should just be + // blocked on OS/2 systems the same as for systems with POSIX signal + // functions. + + #if defined (__EMX__) volatile sig_handler *saved_sigchld_handler ! = octave_set_signal_handler (SIGCHLD, SIG_IGN); #endif + sigset_t set, oset; + + BLOCK_CHILD (set, oset); + int n = octave_child_list::length (); if (n == 0) *************** *** 230,242 **** } } - #if defined (__EMX__) octave_set_interrupt_handler (saved_interrupt_handler); octave_set_signal_handler (SIGCHLD, saved_sigchld_handler); #endif ! MAYBE_UNBLOCK_SIGNAL (SIGCHLD); MAYBE_REINSTALL_SIGHANDLER (SIGCHLD, sigchld_handler); --- 258,272 ---- } } octave_set_interrupt_handler (saved_interrupt_handler); + UNBLOCK_CHILD (oset); + + #ifdef __EMX__ octave_set_signal_handler (SIGCHLD, saved_sigchld_handler); #endif ! MAYBE_ACK_SIGNAL (SIGCHLD); MAYBE_REINSTALL_SIGHANDLER (SIGCHLD, sigchld_handler); *************** *** 247,253 **** static RETSIGTYPE sigfpe_handler (int /* sig */) { ! MAYBE_UNBLOCK_SIGNAL (SIGFPE); MAYBE_REINSTALL_SIGHANDLER (SIGFPE, sigfpe_handler); --- 277,283 ---- static RETSIGTYPE sigfpe_handler (int /* sig */) { ! MAYBE_ACK_SIGNAL (SIGFPE); MAYBE_REINSTALL_SIGHANDLER (SIGFPE, sigfpe_handler); *************** *** 272,278 **** static RETSIGTYPE sigint_handler (int sig) { ! MAYBE_UNBLOCK_SIGNAL (sig); MAYBE_REINSTALL_SIGHANDLER (sig, sigint_handler); --- 302,308 ---- static RETSIGTYPE sigint_handler (int sig) { ! MAYBE_ACK_SIGNAL (sig); MAYBE_REINSTALL_SIGHANDLER (sig, sigint_handler); *************** *** 288,294 **** static RETSIGTYPE sigpipe_handler (int /* sig */) { ! MAYBE_UNBLOCK_SIGNAL (SIGPIPE); MAYBE_REINSTALL_SIGHANDLER (SIGPIPE, sigpipe_handler); --- 318,324 ---- static RETSIGTYPE sigpipe_handler (int /* sig */) { ! MAYBE_ACK_SIGNAL (SIGPIPE); MAYBE_REINSTALL_SIGHANDLER (SIGPIPE, sigpipe_handler); diff -cNr octave-2.0.1/src/sysdep.cc octave-2.0.2/src/sysdep.cc *** octave-2.0.1/src/sysdep.cc Wed Nov 20 12:40:43 1996 --- octave-2.0.2/src/sysdep.cc Mon Jan 27 13:20:52 1997 *************** *** 109,115 **** } #endif ! #if defined NeXT extern "C" { typedef void (*_cplus_fcn_int) (int); --- 109,115 ---- } #endif ! #if defined (NeXT) extern "C" { typedef void (*_cplus_fcn_int) (int); *************** *** 184,192 **** { #if defined (__386BSD__) || defined (__FreeBSD__) BSD_init (); ! #elif defined NeXT NeXT_init (); ! #elif defined __EMX__ OS2_init (); #elif defined (SCO) SCO_init (); --- 184,192 ---- { #if defined (__386BSD__) || defined (__FreeBSD__) BSD_init (); ! #elif defined (NeXT) NeXT_init (); ! #elif defined (__EMX__) OS2_init (); #elif defined (SCO) SCO_init (); *************** *** 521,526 **** --- 521,528 ---- { if (xisnan (dval)) warning ("pause: NaN is an invalid delay"); + else if (xisinf (dval)) + kbhit (); else { int delay = NINT (dval); *************** *** 530,539 **** } } else { ! if (kbhit () == EOF) ! clean_up_and_exit (0); } return retval; } --- 532,600 ---- } } else + kbhit (); + + return retval; + } + + DEFUN (sleep, args, , + "sleep (seconds): suspend program execution") + { + octave_value_list retval; + + if (args.length () == 1) { ! double dval = args(0).double_value (); ! ! if (! error_state) ! { ! if (xisnan (dval)) ! warning ("sleep: NaN is an invalid delay"); ! else ! { ! int delay = NINT (dval); ! if (delay > 0) ! sleep (delay); ! } ! } } + else + print_usage ("sleep"); + + return retval; + } + + DEFUN (usleep, args, , + "usleep (microseconds): suspend program execution") + { + octave_value_list retval; + + if (args.length () == 1) + { + double dval = args(0).double_value (); + + if (! error_state) + { + if (xisnan (dval)) + warning ("usleep: NaN is an invalid delay"); + else + { + #if defined (HAVE_USLEEP) + int delay = NINT (dval); + + if (delay > 0) + usleep (delay); + #else + int delay = NINT (dval / 1e6); + + if (delay > 0) + sleep (delay); + #endif + } + } + } + else + print_usage ("usleep"); return retval; } diff -cNr octave-2.0.1/src/syswait.h octave-2.0.2/src/syswait.h *** octave-2.0.1/src/syswait.h Sun Nov 3 01:18:48 1996 --- octave-2.0.2/src/syswait.h Mon Jan 20 11:22:39 1997 *************** *** 33,38 **** --- 33,47 ---- #include #endif + // NeXT has sys/wait.h, but it is not compatible with POSIX.1, so we + // try to define waitpid in terms of wait4. + + #if defined (NeXT) + #include + #define waitpid(a, b, c) \ + wait4 ((a) == -1 ? 0 : (a), (union wait *)(b), c, 0) + #endif + #ifndef WIFEXITED #define WIFEXITED(stat_val) (((stat_val) & 255) == 0) #endif diff -cNr octave-2.0.1/src/toplev.cc octave-2.0.2/src/toplev.cc *** octave-2.0.1/src/toplev.cc Wed Nov 20 18:34:24 1996 --- octave-2.0.2/src/toplev.cc Mon Jan 27 12:12:41 1997 *************** *** 91,96 **** --- 91,102 ---- // User's home directory. string Vhome_directory; + // Nonzero means we're breaking out of a loop or function body. + extern int breaking; + + // Nonzero means we're returning from a function. + extern int returning; + // Nonzero means we are using readline. // (--no-line-editing) #if defined (USE_READLINE) *************** *** 160,166 **** --- 166,194 ---- if (retval == 0 && global_command) { global_command->eval (print); + delete global_command; + + global_command = 0; + + bool quit = (returning || breaking); + + if (returning) + returning = 0; + + if (breaking) + breaking--; + + if (error_state) + { + error ("near line %d of file `%s'", input_line_number, + curr_fcn_file_full_name.c_str ()); + + break; + } + + if (quit) + break; } } while (retval == 0); *************** *** 254,263 **** delete global_command; ! if (octave_completion_matches_called) ! octave_completion_matches_called = false; else ! current_command_number++; } } while (retval == 0); --- 282,315 ---- delete global_command; ! global_command = 0; ! ! if (! (interactive || forced_interactive)) ! { ! bool quit = (returning || breaking); ! ! if (returning) ! returning = 0; ! ! if (breaking) ! breaking--; ! ! if (quit) ! break; ! } ! ! if (error_state) ! { ! if (! (interactive || forced_interactive)) ! break; ! } else ! { ! if (octave_completion_matches_called) ! octave_completion_matches_called = false; ! else ! current_command_number++; ! } } } while (retval == 0); *************** *** 750,756 **** DEFALIAS (shell_cmd, system); ! static SLStack octave_atexit_functions; void do_octave_atexit (void) --- 802,810 ---- DEFALIAS (shell_cmd, system); ! // XXX FIXME XXX -- this should really be static, but that causes ! // problems on some systems. ! SLStack octave_atexit_functions; void do_octave_atexit (void) *************** *** 833,839 **** m ["CXXPICFLAG"] = CXXPICFLAG; m ["LDFLAGS"] = LDFLAGS; m ["LIBFLAGS"] = LIBFLAGS; - m ["RLD_FLAG"] = RLD_FLAG; m ["CXXLIBS"] = CXXLIBS; m ["TERMLIBS"] = TERMLIBS; m ["LIBS"] = LIBS; --- 887,892 ---- diff -cNr octave-2.0.1/src/unwind-prot.cc octave-2.0.2/src/unwind-prot.cc *** octave-2.0.1/src/unwind-prot.cc Sat Mar 2 19:45:43 1996 --- octave-2.0.2/src/unwind-prot.cc Mon Jan 20 14:51:00 1997 *************** *** 40,46 **** #include "unwind-prot.h" #include "utils.h" ! static SLStack unwind_protect_list; void add_unwind_protect (cleanup_func fptr, void *ptr) --- 40,48 ---- #include "unwind-prot.h" #include "utils.h" ! // XXX FIXME XXX -- this should really be static, but that causes ! // problems on some systems. ! SLStack unwind_protect_list; void add_unwind_protect (cleanup_func fptr, void *ptr) diff -cNr octave-2.0.1/src/version.h octave-2.0.2/src/version.h *** octave-2.0.1/src/version.h Tue Jan 7 00:30:50 1997 --- octave-2.0.2/src/version.h Mon Jan 27 00:12:19 1997 *************** *** 20,26 **** */ ! #define OCTAVE_VERSION "2.0.1" #define OCTAVE_COPYRIGHT \ "Copyright (C) 1996 John W. Eaton." --- 20,26 ---- */ ! #define OCTAVE_VERSION "2.0.2" #define OCTAVE_COPYRIGHT \ "Copyright (C) 1996 John W. Eaton." diff -cNr octave-2.0.1/test/ChangeLog octave-2.0.2/test/ChangeLog *** octave-2.0.1/test/ChangeLog Tue Jan 7 00:16:34 1997 --- octave-2.0.2/test/ChangeLog Mon Jan 27 15:52:08 1997 *************** *** 1,3 **** --- 1,15 ---- + Mon Jan 27 15:51:58 1997 John W. Eaton + + * Version 2.0.2 released. + + Thu Jan 23 13:48:19 1997 John W. Eaton + + * octave.test/unwind/unwind-2.m: Scripts now stop executing when + errors are encountered. + + * octave.test/return/return.exp: Return at top level is no longer + an error. + Tue Jan 7 00:16:23 1997 John W. Eaton * Version 2.0.1 released. diff -cNr octave-2.0.1/test/octave.test/return/CVS/Entries octave-2.0.2/test/octave.test/return/CVS/Entries *** octave-2.0.1/test/octave.test/return/CVS/Entries Sat Oct 12 17:06:21 1996 --- octave-2.0.2/test/octave.test/return/CVS/Entries Fri Jan 24 15:53:12 1997 *************** *** 1,3 **** /return-1.m/1.1/Fri Jul 19 02:14:42 1996// /return-2.m/1.1/Fri Jul 19 02:14:42 1996// ! /return.exp/1.1/Fri Jul 19 02:15:59 1996// --- 1,3 ---- /return-1.m/1.1/Fri Jul 19 02:14:42 1996// /return-2.m/1.1/Fri Jul 19 02:14:42 1996// ! /return.exp/1.2/Thu Jan 23 19:48:16 1997// diff -cNr octave-2.0.1/test/octave.test/return/return.exp octave-2.0.2/test/octave.test/return/return.exp *** octave-2.0.1/test/octave.test/return/return.exp Thu Jul 18 21:15:59 1996 --- octave-2.0.2/test/octave.test/return/return.exp Thu Jan 23 13:48:16 1997 *************** *** 3,7 **** do_test return-1.m set test return-2 ! set prog_output "parse error.*" do_test return-2.m --- 3,7 ---- do_test return-1.m set test return-2 ! set prog_output "" do_test return-2.m diff -cNr octave-2.0.1/test/octave.test/unwind/CVS/Entries octave-2.0.2/test/octave.test/unwind/CVS/Entries *** octave-2.0.1/test/octave.test/unwind/CVS/Entries Sat Oct 12 17:06:21 1996 --- octave-2.0.2/test/octave.test/unwind/CVS/Entries Fri Jan 24 15:53:12 1997 *************** *** 1,3 **** /unwind-1.m/1.1/Fri Jul 19 02:14:42 1996// ! /unwind-2.m/1.1/Fri Jul 19 02:14:42 1996// ! /unwind.exp/1.1/Fri Jul 19 02:15:59 1996// --- 1,3 ---- /unwind-1.m/1.1/Fri Jul 19 02:14:42 1996// ! /unwind.exp/1.1/Thu Jan 23 19:52:33 1997// ! /unwind-2.m/1.2/Thu Jan 23 19:52:42 1997// diff -cNr octave-2.0.1/test/octave.test/unwind/unwind-2.m octave-2.0.2/test/octave.test/unwind/unwind-2.m *** octave-2.0.1/test/octave.test/unwind/unwind-2.m Thu Jul 18 21:14:42 1996 --- octave-2.0.2/test/octave.test/unwind/unwind-2.m Thu Jan 23 13:52:42 1997 *************** *** 7,14 **** [1,2;x]; g = 1 unwind_protect_cleanup ! g = save_g; end_unwind_protect endfunction f (3) - g --- 7,13 ---- [1,2;x]; g = 1 unwind_protect_cleanup ! g = save_g end_unwind_protect endfunction f (3) PATCH_EOF