Mercurial > hg > octave-terminal
changeset 3162:7c96e85c76db
[project @ 1998-04-08 18:19:35 by jwe]
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,16 @@ +Fri Mar 27 02:54:59 1998 John W. Eaton <jwe@bevo.che.wisc.edu> + + * aclocal.m4 (OCTAVE_F2C_F77_COMPAT): Use a Fortran subroutine + instead of a function. + +Tue Mar 10 17:28:20 1998 John W. Eaton <jwe@bevo.che.wisc.edu> + + * configure.in (RLD_FLAG): Use $(octlibdir), not $(libdir). + Mon Mar 2 00:02:26 1998 John W. Eaton <jwe@bevo.che.wisc.edu> + * install-octave.in: Explicitly set permissions on ls-R files. + * configure.in: Don't disable GNU Info on cygwin32 systems. * install-octave.in: New file.
--- a/PROJECTS +++ b/PROJECTS @@ -1,3 +1,5 @@ +<html> +<pre> Octave PROJECTS -*- text -*- =============== @@ -249,6 +251,17 @@ Interpreter: ----------- + * Allow customization of the debug prompt. + + * For the keyboard function, parse return (or quit) more + intelligently so that something like + + debug> x = 1; return + + will work as expected. + + * Warn about M-files with timestamps in the future. + * Fix the parser so that function foo () @@ -356,6 +369,9 @@ * Input stream class for parser files -- must manage buffers for flex and context for global variable settings. + * make parser do more semantic checking, continue after errors when + compiling functions, etc. + * Make LEXICAL_ERROR have a value that is the error message for parse_error() to print? @@ -752,3 +768,5 @@ * Squash bugs. --30-- +</pre> +</html>
--- a/aclocal.m4 +++ b/aclocal.m4 @@ -360,13 +360,13 @@ [trap 'rm -f ftest* ctest* core; exit 1' 1 3 15 octave_cv_f2c_f77_compat=no cat > ftest.f <<EOF - INTEGER FUNCTION FORSUB (C, D) + SUBROUTINE FORSUB (C, I, D) CHARACTER *(*) C - INTEGER L + INTEGER L, I DOUBLE PRECISION D L = LEN (C) WRITE (*, '(A,1X,I2)') C(1:L), INT (D) - FORSUB = 1 + I = 0 RETURN END EOF @@ -374,18 +374,24 @@ changequote(, ) cat > ctest.c <<EOF #include "confdefs.h" +#ifdef F77_APPEND_UNDERSCORE +extern int forsub_ (const char*, int*, double*, long int); +#else +extern int forsub (const char*, int*, double*, long int); +#endif static char s[14]; int main () { double d = 10.0; - int len; + int len, i = 1; strcpy (s, "FOO-I-HITHERE"); len = strlen (s); #ifdef F77_APPEND_UNDERSCORE - return (! forsub_ (s, &d, len)); + forsub_ (s, &i, &d, len); #else - return (! forsub (s, &d, len)); + forsub (s, &i, &d, len); #endif + return i; } #if defined (sun) int MAIN_ () { return 0; }
--- a/configure.in +++ b/configure.in @@ -21,7 +21,7 @@ ### Software Foundation, 59 Temple Place - Suite 330, Boston, MA ### 02111-1307, USA. -AC_REVISION($Revision: 1.301 $) +AC_REVISION($Revision: 1.302 $) AC_PREREQ(2.9) AC_INIT(src/octave.cc) AC_CONFIG_HEADER(config.h) @@ -550,13 +550,13 @@ FPICFLAG= SH_LDFLAGS="-shared -Xlinker -expect_unresolved -Xlinker '*'" SONAME_FLAGS='-Xlinker -soname -Xlinker $@' - RLD_FLAG='-Xlinker -rpath -Xlinker $(libdir)' + RLD_FLAG='-Xlinker -rpath -Xlinker $(octlibdir)' ;; changequote(,)dnl i[3456789]86-*-linux*) changequote([,])dnl SONAME_FLAGS='-Xlinker -soname -Xlinker $@' - RLD_FLAG='-Xlinker -rpath -Xlinker $(libdir)' + RLD_FLAG='-Xlinker -rpath -Xlinker $(octlibdir)' ;; changequote(,)dnl i[3456]86-*-sco3.2v5*) @@ -577,13 +577,13 @@ fi SHLEXT=sl SH_LDFLAGS="-shared -fPIC" - RLD_FLAG='-Xlinker +b -Xlinker $(libdir)' + RLD_FLAG='-Xlinker +b -Xlinker $(octlibdir)' ;; *-sgi-*) CPICFLAG= CXXPICFLAG= FPICFLAG= - RLD_FLAG='-L$(libdir)' + RLD_FLAG='-L$(octlibdir)' ;; sparc-sun-sunos4*) if test "$octave_cv_f77_is_g77" = yes; then @@ -593,7 +593,7 @@ fi SH_LD=ld SH_LDFLAGS="-assert nodefinitions" - RLD_FLAG='-L$(libdir)' + RLD_FLAG='-L$(octlibdir)' ;; sparc-sun-solaris2*) if test "$octave_cv_f77_is_g77" = yes; then @@ -601,7 +601,7 @@ else FPICFLAG=-PIC fi - RLD_FLAG='-Xlinker -R -Xlinker $(libdir)' + RLD_FLAG='-Xlinker -R -Xlinker $(octlibdir)' ;; esac
--- a/doc/interpreter/basics.texi +++ b/doc/interpreter/basics.texi @@ -112,7 +112,7 @@ @item --no-line-editing @cindex @code{--no-line-editing} -Disable command-line editing and history. +Disable command-line editing. @item --no-site-file @cindex @code{--no-site-file} @@ -942,7 +942,7 @@ context. It marked the error at the @code{y} because the first name by itself was accepted as valid input. -Another class of error message occurs occurs at evaluation time. These +Another class of error message occurs at evaluation time. These errors are called @dfn{run-time errors}, or sometimes @dfn{evaluation errors} because they occur when your program is being @dfn{run}, or @dfn{evaluated}. For example, if after correcting the
--- a/doc/interpreter/expr.texi +++ b/doc/interpreter/expr.texi @@ -181,7 +181,7 @@ @noindent (for @code{a} previously undefined) produce column vectors. Otherwise, row -vectors are preferred. The default value is 0. +vectors are preferred. The default value is 1. If a variable is already defined to be a vector (a matrix with a single row or column), the original orientation is respected, regardless of the
--- a/doc/interpreter/var.texi +++ b/doc/interpreter/var.texi @@ -469,7 +469,7 @@ @item prefer_column_vectors @xref{Index Expressions}. -Default value: 0. +Default value: 1. @item print_answer_id_name @xref{Terminal Output}.
--- a/examples/oregonator.cc +++ b/examples/oregonator.cc @@ -1,9 +1,14 @@ #include <octave/oct.h> -#include <iostream.h> - DEFUN_DLD (oregonator, args, , - "The `oregonator'.") + "The `oregonator'.\n\ +\n\ +Reference:\n\ +\n\ + Oscillations in chemical systems. IV. Limit cycle behavior in a\n\ + model of a real chemical reaction. Richard J. Field and Richard\n\ + M. Noyes, The Journal of Chemical Physics, Volume 60 Number 5,\n\ + March 1974.") { ColumnVector dx (3);
--- a/examples/oregonator.m +++ b/examples/oregonator.m @@ -1,4 +1,11 @@ ## The `oregonator'. +## +## Reference: +## +## Oscillations in chemical systems. IV. Limit cycle behavior in a +## model of a real chemical reaction. Richard J. Field and Richard +## M. Noyes, The Journal of Chemical Physics, Volume 60 Number 5, +## March 1974. function dx = oregonator (x, t)
--- a/install-octave.in +++ b/install-octave.in @@ -279,9 +279,11 @@ echo "creating ls-R file in $datadir/octave" ls -LR $datadir/octave > $datadir/octave/ls-R +chmod 644 $datadir/octave/ls-R echo "creating ls-R file in $libexecdir/octave" ls -LR $libexecdir/octave > $libexecdir/octave/ls-R +chmod 644 $libexecdir/octave/ls-R echo "installing info files in $infodir" for f in doc/interpreter/octave.info*
--- a/libcruft/ChangeLog +++ b/libcruft/ChangeLog @@ -1,3 +1,7 @@ +Mon Apr 6 00:26:35 1998 John W. Eaton <jwe@bevo.che.wisc.edu> + + * slatec-fn/xdgami.f (xdgami): Reorder args to match dgami. + Thu Feb 19 21:00:00 1998 John W. Eaton <jwe@bevo.che.wisc.edu> * specfun/ribesl.f, specfun/rjbesl.f: Compute NSIG correctly.
--- a/libcruft/slatec-fn/xdgami.f +++ b/libcruft/slatec-fn/xdgami.f @@ -1,5 +1,5 @@ - subroutine xdgami (x, a, result) - double precision x, a, result, dgami - result = dgami (x, a) + subroutine xdgami (a, x, result) + double precision a, x, result, dgami + result = dgami (a, x) return end
--- a/liboctave/ChangeLog +++ b/liboctave/ChangeLog @@ -1,3 +1,7 @@ +Mon Apr 6 00:27:06 1998 John W. Eaton <jwe@bevo.che.wisc.edu> + + * lo-specfun.cc (gammainc): Reorder args in call to xdgami. + Thu Feb 19 01:16:38 1998 John W. Eaton <jwe@bevo.che.wisc.edu> * lo-specfun.cc (xgamma, xlgamma): Define here.
--- a/liboctave/lo-specfun.cc +++ b/liboctave/lo-specfun.cc @@ -476,7 +476,7 @@ gammainc (double x, double a) { double retval; - F77_XFCN (xdgami, XDGAMI, (x, a, retval)); + F77_XFCN (xdgami, XDGAMI, (a, x, retval)); return retval; }
--- a/readline/ChangeLog +++ b/readline/ChangeLog @@ -1,3 +1,8 @@ +Wed Mar 4 14:59:11 1998 John W. Eaton <jwe@bevo.che.wisc.edu> + + * parens.c (rl_insert_close): Make time delay for showing matching + parentheses 0.5 seconds. + Sun Jan 25 02:19:15 1998 John W. Eaton <jwe@bevo.che.wisc.edu> * aclocal.m4 (BASH_REINSTALL_SIGHANDLERS, BASH_FUNC_STRCOLL):
--- a/readline/parens.c +++ b/readline/parens.c @@ -101,8 +101,8 @@ FD_ZERO (&readfds); FD_SET (fileno (rl_instream), &readfds); - timer.tv_sec = 1; - timer.tv_usec = 500; + timer.tv_sec = 0; + timer.tv_usec = 500000; orig_point = rl_point; rl_point = match_point;
--- a/scripts/ChangeLog +++ b/scripts/ChangeLog @@ -1,3 +1,25 @@ +Wed Apr 8 13:17:58 1998 John W. Eaton <jwe@bevo.che.wisc.edu> + + * plot/__pltopt1.m__: New file. + * plot/__pltopt.m__: Handle opt as a string array by calling + __pltopt1__ multiple times and returning a string array with rows + corresponding to the rows of opt. + * plot/__plt2ss__.m, plot/__plt2vv__.m, plot/__plt2vm__.m, + plot/__plt2mv__.m, plot/__plt2mm__.m: Handle fmt as a string + array. + +Fri Mar 27 03:00:40 1998 John W. Eaton <jwe@bevo.che.wisc.edu> + + * plot/mplot.m: Fix misspellings of global variables. + Don't call clearplot. + +Tue Mar 17 17:45:25 1998 John W. Eaton <jwe@bevo.che.wisc.edu> + + * plot/subplot.m, plot/multiplot.m: Set gnuplot_command_replot to + "cle;rep" when going in ot multiplot mode. + * plot/oneplot.m: Reset gnuplot_command_replot to "rep" when + switching out of multiplot mode. + Fri Feb 20 01:31:32 1998 John W. Eaton <jwe@bevo.che.wisc.edu> * plot/mplot.m, plot/subplot.m, plot/oneplot.m, plot/multiplot.m,
--- a/scripts/plot/__plt2mm__.m +++ b/scripts/plot/__plt2mm__.m @@ -25,19 +25,29 @@ msg = sprintf ("__plt2mm__ (x, y)\n"); msg = sprintf ("%s __plt2mm__ (x, y, fmt)", msg); usage (msg); - elseif (nargin == 2) - fmt = ""; + elseif (nargin == 2 || fmt == "") + fmt = " "; ## Yes, this is intentionally not an empty string! endif [x_nr, x_nc] = size (x); [y_nr, y_nc] = size (y); + k = 1; + fmt_nr = rows (fmt); if (x_nr == y_nr && x_nc == y_nc) if (x_nc > 0) tmp = [x, y]; - cmd = sprintf ("gplot tmp(:,%d:%d:%d) %s", 1, x_nc, x_nc+1, fmt); + cmd = sprintf ("gplot tmp(:,%d:%d:%d) %s", 1, x_nc, x_nc+1, + deblank (fmt (k, :))); + if (k < fmt_nr) + k++; + endif for i = 2:x_nc - cmd = sprintf ("%s, tmp(:,%d:%d:%d) %s", cmd, i, x_nc, x_nc+i, fmt); + cmd = sprintf ("%s, tmp(:,%d:%d:%d) %s", cmd, i, x_nc, x_nc+i, + deblank (fmt (k, :))); + if (k < fmt_nr) + k++; + endif endfor eval (cmd); else
--- a/scripts/plot/__plt2mv__.m +++ b/scripts/plot/__plt2mv__.m @@ -21,12 +21,13 @@ function __plt2mv__ (x, y, fmt) + keyboard if (nargin < 2 || nargin > 3) msg = sprintf ("__plt2mv__ (x, y)\n"); msg = sprintf ("%s __plt2mv__ (x, y, fmt)", msg); usage (msg); - elseif (nargin == 2) - fmt = ""; + elseif (nargin == 2 || fmt == "") + fmt = " "; ## Yes, this is intentionally not an empty string! endif [x_nr, x_nc] = size (x); @@ -50,11 +51,22 @@ error ("__plt2mv__: matrix dimensions must match"); endif + k = 1; + fmt_nr = rows (fmt); if (x_nc > 0) tmp = [x, y]; - cmd = sprintf ("gplot tmp(:,%d:%d:%d) %s", 1, x_nc, x_nc+1, fmt); + keyboard + cmd = sprintf ("gplot tmp(:,%d:%d:%d) %s", 1, x_nc, x_nc+1, + deblank (fmt (k, :))); + if (k < fmt_nr) + k++; + endif for i = 2:x_nc - cmd = sprintf ("%s, tmp(:,%d:%d:%d) %s", cmd, i, x_nc-i+1, x_nc+1, fmt); + cmd = sprintf ("%s, tmp(:,%d:%d:%d) %s", cmd, i, x_nc-i+1, x_nc+1, + deblank (fmt (k, :))); + if (k < fmt_nr) + k++; + endif endfor eval (cmd); else
--- a/scripts/plot/__plt2ss__.m +++ b/scripts/plot/__plt2ss__.m @@ -27,6 +27,8 @@ usage (msg); elseif (nargin == 2) fmt = ""; + elseif (rows (fmt) > 1) + fmt = fmt (1, :); endif [x_nr, x_nc] = size (x);
--- a/scripts/plot/__plt2vm__.m +++ b/scripts/plot/__plt2vm__.m @@ -25,8 +25,8 @@ msg = sprintf ("__plt2vm__ (x, y)\n"); msg = sprintf ("%s __plt2vm__ (x, y, fmt)", msg); usage (msg); - elseif (nargin == 2) - fmt = ""; + elseif (nargin == 2 || fmt == "") + fmt = " "; ## Yes, this is intentionally not an empty string! endif [x_nr, x_nc] = size (x); @@ -50,11 +50,21 @@ error ("__plt2vm__: matrix dimensions must match"); endif + k = 1; + fmt_nr = rows (fmt); if (y_nc > 0) tmp = [x, y]; - cmd = sprintf ("gplot tmp(:,%d:%d:%d) %s", 1, x_nc, x_nc+1, fmt); + cmd = sprintf ("gplot tmp(:,%d:%d:%d) %s", 1, x_nc, x_nc+1, + deblank (fmt (k, :))); + if (k < fmt_nr) + k++; + endif for i = 2:y_nc - cmd = sprintf ("%s, tmp(:,%d:%d:%d) %s", cmd, 1, i, i+1, fmt); + cmd = sprintf ("%s, tmp(:,%d:%d:%d) %s", cmd, 1, i, i+1, + deblank (fmt (k, :))); + if (k < fmt_nr) + k++; + endif endfor eval (cmd); else
--- a/scripts/plot/__plt2vv__.m +++ b/scripts/plot/__plt2vv__.m @@ -27,6 +27,8 @@ usage (msg); elseif (nargin == 2) fmt = ""; + elseif (rows (fmt) > 1) + fmt = fmt (1, :); endif [x_nr, x_nc] = size (x);
new file mode 100644 --- /dev/null +++ b/scripts/plot/__pltopt1__.m @@ -0,0 +1,217 @@ +## Copyright (C) 1996, 1997 John W. Eaton +## +## This file is part of Octave. +## +## Octave is free software; you can redistribute it and/or modify it +## under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 2, or (at your option) +## any later version. +## +## Octave is distributed in the hope that it will be useful, but +## WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with Octave; see the file COPYING. If not, write to the Free +## Software Foundation, 59 Temple Place - Suite 330, Boston, MA +## 02111-1307, USA. + +## usage: fmt = __pltopt1__ (caller, opt) +## +## Really decode plot option strings. +## +## See also: __pltopt__ + +## Author: Rick Niles <niles@axp745.gsfc.nasa.gov> +## Adapted-By: jwe +## Maintainer: jwe + +function fmt = __pltopt1__ (caller, opt) + + set_color = 0; + set_symbol = 0; + set_lines = 0; + set_dots = 0; + set_points = 0; + set_impulses = 0; + set_steps = 0; + set_boxes = 0; + set_errbars = 0; + set_key = 0; + more_opts = 1; + + WITH = "w"; + LINES = "l"; + LINESPOINTS = "linesp"; + BOXERRORBARS = "boxer"; + BOXES = "boxes"; + POINTS = "p"; + DOTS = "d"; + IMPULSES = "i"; + STEPS = "s"; + ERRORBARS = "e"; + TITLE = "title"; + + if (nargin != 2) + usage ("__pltopt1__ (opt)"); + endif + + if (! isstr (opt)) + error ("__pltopt1__: argument must be a string"); + endif + + while (more_opts) + + ## First get next char. + + if (max (size (opt)) > 1) +# [char, opt] = sscanf (opt, "%c %s", "C"); + char = opt(1); + opt = opt(2:length(opt)); + else + char = opt; + more_opts = 0; + endif + + ## Now set flags based on char. + + if (strcmp (char, "-")) + set_lines = 1; + elseif (strcmp (char, ".")) + set_dots = 1; + elseif (strcmp (char, "@")) + set_points = 1; + elseif (strcmp (char, "^")) + set_impulses = 1; + elseif (strcmp (char, "L")) + set_steps = 1; + elseif (strcmp (char, "~")) + set_errbars = 1; + elseif (strcmp (char, "#")) + set_boxes = 1; + elseif (strcmp (char, "0") || strcmp (char, "1") ... + || strcmp (char, "2") || strcmp (char, "3") ... + || strcmp (char, "4") || strcmp (char, "5") ... + || strcmp (char, "6") || strcmp (char, "7") ... + || strcmp (char, "8") || strcmp (char, "9")) + if (set_color) + set_points = 1; + symbol = char; + set_symbol = 1; + else + color = char; + set_color = 1; + endif + elseif (strcmp (char, "r")) + set_color = 1; + color = "1"; + elseif (strcmp (char, "g")) + set_color = 1; + color = "2"; + elseif (strcmp (char, "b")) + set_color = 1; + color = "3"; + elseif (strcmp (char, "m")) + set_color = 1; + color = "4"; + elseif (strcmp (char, "c")) + set_color = 1; + color = "5"; + elseif (strcmp (char, "w")) + set_color = 1; + color = "6"; + elseif (strcmp (char, "*")) + set_points = 1; + set_symbol = 1; + symbol = "6"; + elseif (strcmp (char, "+")) + set_points = 1; + set_symbol = 1; + symbol = "2"; + elseif (strcmp (char, "o")) + set_points = 1; + set_symbol = 1; + symbol = "1"; + elseif (strcmp (char, "x")) + set_points = 1; + set_symbol = 1; + symbol = "4"; + elseif (strcmp (char, ";")) # title mode. + set_key = 1; + working = 1; + key_title = ""; + while (working) + if (max (size (opt)) > 1) + char = opt(1); + opt = opt(2:length(opt)); + else + char = opt; + if (! strcmp (char, ";")) + error ("%s: unfinished key label", caller); + end + more_opts = 0; + working = 0; + endif + if strcmp (char, ";") + working = 0; + else + if (isempty (key_title)) # needs this to avoid empty matrix warning. + key_title = char; + else + key_title = strcat (key_title, char); + endif + endif + endwhile + elseif (strcmp (char, " ")) + ## whitespace -- do nothing. + else + error ("%s: unrecognized format character: '%s'", caller, char); + endif + endwhile + + ## Now create format string. + + fmt = WITH; + + if (set_lines) + if (set_points) + fmt = strcat (fmt, " ", LINESPOINTS); + else + fmt = strcat (fmt, " ", LINES); + endif + elseif (set_boxes) + if (set_errbars) + fmt = strcat (fmt, " ", BOXERRORBARS); + else + fmt = strcat (fmt, " ", BOXES); + endif + elseif (set_points) + fmt = strcat (fmt, " ", POINTS); + elseif (set_dots) + fmt = strcat (fmt, " ", DOTS); + elseif (set_impulses) + fmt = strcat (fmt, " ", IMPULSES); + elseif (set_steps) + fmt = strcat (fmt, " ", STEPS); + elseif (set_errbars) + fmt = strcat (fmt, " ", ERRORBARS); + endif + + if (strcmp (fmt, WITH)) + fmt = strcat (fmt, " ", LINES); + endif + + if (set_color) + fmt = strcat (fmt, " ", color); + if (set_symbol) + fmt = strcat (fmt, " ", symbol); + endif + elseif (set_symbol) + fmt = strcat (fmt, " 1 ", symbol); + endif + + if (set_key) + fmt = sprintf ("%s %s \"%s\" ", fmt, TITLE, key_title); + endif +endfunction
--- a/scripts/plot/__pltopt__.m +++ b/scripts/plot/__pltopt__.m @@ -60,196 +60,24 @@ ## 4 magenta magenta dotted "x" open square ## 5 cyan cyan dot long dash triangle filled square ## 6 brown yellow dot short dash "*" "o" +## +## See also: __pltopt1__ -## Author: Rick Niles <niles@axp745.gsfc.nasa.gov> +## Author: jwe ## Adapted-By: jwe ## Maintainer: jwe function fmt = __pltopt__ (caller, opt) - set_color = 0; - set_symbol = 0; - set_lines = 0; - set_dots = 0; - set_points = 0; - set_impulses = 0; - set_steps = 0; - set_boxes = 0; - set_errbars = 0; - set_key = 0; - more_opts = 1; - - WITH = "w"; - LINES = "l"; - LINESPOINTS = "linesp"; - BOXERRORBARS = "boxer"; - BOXES = "boxes"; - POINTS = "p"; - DOTS = "d"; - IMPULSES = "i"; - STEPS = "s"; - ERRORBARS = "e"; - TITLE = "title"; - - if (nargin != 2) - usage ("__pltopt__ (opt)"); - endif - if (! isstr (opt)) - error ("__pltopt__: argument must be a string"); + usage ("__pltopt__ (caller, opt)"); endif - while (more_opts) - - ## First get next char. - - if (max (size (opt)) > 1) -# [char, opt] = sscanf (opt, "%c %s", "C"); - char = opt(1); - opt = opt(2:length(opt)); - else - char = opt; - more_opts = 0; - endif - - ## Now set flags based on char. + nr = rows (opt); + fmt = ""; + for i = 1:nr + t = __pltopt1__ (caller, deblank (opt(i,:))); + fmt(i,1:length(t)) = t; + endfor - if (strcmp (char, "-")) - set_lines = 1; - elseif (strcmp (char, ".")) - set_dots = 1; - elseif (strcmp (char, "@")) - set_points = 1; - elseif (strcmp (char, "^")) - set_impulses = 1; - elseif (strcmp (char, "L")) - set_steps = 1; - elseif (strcmp (char, "~")) - set_errbars = 1; - elseif (strcmp (char, "#")) - set_boxes = 1; - elseif (strcmp (char, "0") || strcmp (char, "1") ... - || strcmp (char, "2") || strcmp (char, "3") ... - || strcmp (char, "4") || strcmp (char, "5") ... - || strcmp (char, "6") || strcmp (char, "7") ... - || strcmp (char, "8") || strcmp (char, "9")) - if (set_color) - set_points = 1; - symbol = char; - set_symbol = 1; - else - color = char; - set_color = 1; - endif - elseif (strcmp (char, "r")) - set_color = 1; - color = "1"; - elseif (strcmp (char, "g")) - set_color = 1; - color = "2"; - elseif (strcmp (char, "b")) - set_color = 1; - color = "3"; - elseif (strcmp (char, "m")) - set_color = 1; - color = "4"; - elseif (strcmp (char, "c")) - set_color = 1; - color = "5"; - elseif (strcmp (char, "w")) - set_color = 1; - color = "6"; - elseif (strcmp (char, "*")) - set_points = 1; - set_symbol = 1; - symbol = "6"; - elseif (strcmp (char, "+")) - set_points = 1; - set_symbol = 1; - symbol = "2"; - elseif (strcmp (char, "o")) - set_points = 1; - set_symbol = 1; - symbol = "1"; - elseif (strcmp (char, "x")) - set_points = 1; - set_symbol = 1; - symbol = "4"; - elseif (strcmp (char, ";")) # title mode. - set_key = 1; - working = 1; - key_title = ""; - while (working) - if (max (size (opt)) > 1) - char = opt(1); - opt = opt(2:length(opt)); - else - char = opt; - if (! strcmp (char, ";")) - error ("%s: unfinished key label", caller); - end - more_opts = 0; - working = 0; - endif - if strcmp (char, ";") - working = 0; - else - if (isempty (key_title)) # needs this to avoid empty matrix warning. - key_title = char; - else - key_title = strcat (key_title, char); - endif - endif - endwhile - elseif (strcmp (char, " ")) - ## whitespace -- do nothing. - else - error ("%s: unrecognized format character: '%s'", caller, char); - endif - endwhile - - ## Now create format string. - - fmt = WITH; - - if (set_lines) - if (set_points) - fmt = strcat (fmt, " ", LINESPOINTS); - else - fmt = strcat (fmt, " ", LINES); - endif - elseif (set_boxes) - if (set_errbars) - fmt = strcat (fmt, " ", BOXERRORBARS); - else - fmt = strcat (fmt, " ", BOXES); - endif - elseif (set_points) - fmt = strcat (fmt, " ", POINTS); - elseif (set_dots) - fmt = strcat (fmt, " ", DOTS); - elseif (set_impulses) - fmt = strcat (fmt, " ", IMPULSES); - elseif (set_steps) - fmt = strcat (fmt, " ", STEPS); - elseif (set_errbars) - fmt = strcat (fmt, " ", ERRORBARS); - endif - - if (strcmp (fmt, WITH)) - fmt = strcat (fmt, " ", LINES); - endif - - if (set_color) - fmt = strcat (fmt, " ", color); - if (set_symbol) - fmt = strcat (fmt, " ", symbol); - endif - elseif (set_symbol) - fmt = strcat (fmt, " 1 ", symbol); - endif - - if (set_key) - fmt = sprintf ("%s %s \"%s\" ", fmt, TITLE, key_title); - endif endfunction
--- a/scripts/plot/mplot.m +++ b/scripts/plot/mplot.m @@ -62,7 +62,7 @@ __multiplot_xi__++; else __multiplot_xi__ = 1; - if (__multiplot_yi__ < multiplot_xn__) + if (__multiplot_yi__ < __multiplot_yn__) __multiplot_yi__++; else __multiplot_yi__ = 1; @@ -70,12 +70,10 @@ endif xo = (__multiplot_xi__ - 1.0) * __multiplot_xsize__; - yo = (__multiplot_yn__ - __multiplot_yi) * __multiplot_ysize__; + yo = (__multiplot_yn__ - __multiplot_yi__) * __multiplot_ysize__; eval (sprintf ("gset origin %g, %g", xo, yo)); - clearplot; - endif endfunction
--- a/scripts/plot/multiplot.m +++ b/scripts/plot/multiplot.m @@ -98,6 +98,8 @@ __multiplot_xi__ = 1; __multiplot_yi__ = 1; + gnuplot_command_replot = "cle;rep"; + clearplot; endif
--- a/scripts/plot/oneplot.m +++ b/scripts/plot/oneplot.m @@ -40,6 +40,7 @@ gset size 1, 1; gset origin 0, 0; __multiplot_mode__ = 0; + gnuplot_command_replot "rep"; clearplot; endif
--- a/scripts/plot/subplot.m +++ b/scripts/plot/subplot.m @@ -130,6 +130,8 @@ __multiplot_xsize__ = 1.0 ./ columns; __multiplot_ysize__ = 1.0 ./ rows; + gnuplot_command_replot = "cle;rep"; + gset multiplot; eval (sprintf ("gset size %g, %g", __multiplot_xsize__,
--- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,54 @@ +Wed Apr 8 01:00:58 1998 John W. Eaton <jwe@bevo.che.wisc.edu> + + * parse.y (Vwarn_future_time_stamp): New variable. + (symbols_of_parse): Add DEFVAR for it. + (warn_future_time_stamp): New function. + (frob_function_def): Maybe warn about files with future time stamps. + +Thu Apr 2 20:43:45 1998 John W. Eaton <jwe@bevo.che.wisc.edu> + + * pt-arg-list.cc (tree_argument_list::convert_to_const_vector): In + error messages, print element numbers starting with 1, not 0. + +Sat Mar 28 15:25:44 1998 John W. Eaton <jwe@bevo.che.wisc.edu> + + * toplev.cc (clean_up_for_exit): New function. + (clean_up_and_exit): Use it. + * sighandlers.cc (my_friendly_exit): Call it instead of + clean_up_and_exit, then do default action for signal. + + * sighandlers.cc (octave_new_handler): Call my_friendly_exit with + signal set to SIGABRT if it is defined, or -1 otherwise. + + * error.cc (verror): Fix thinko in attempt to skip `error: ' tag + when buffering error messages. + * pt-except.cc (tree_try_catch::eval): Reset buffer_error_messages + here if just discarding unwind_protect frame. + +Wed Mar 18 12:35:18 1998 John W. Eaton <jwe@bevo.che.wisc.edu> + + * xpow.cc (elem_xpow): For real-scalar .^ matrix case, result is + complex only if real-scalar is negative and matrix has some + non-integer values. + +Tue Mar 17 17:47:50 1998 John W. Eaton <jwe@bevo.che.wisc.edu> + + * pt-plot.cc (Vgnuplot_command_plot, Vgnuplot_command_replot, + Vgnuplot_command_splot, Vgnuplot_command_using, + Vgnuplot_command_with, Vgnuplot_command_title, + Vgnuplot_command_end): New static variables. + (symbols_of_pt_plot): DEFVAR them. + (gnuplot_command_plot, gnuplot_command_replot, + gnuplot_command_splot, gnuplot_command_using, + gnuplot_command_with, gnuplot_command_title, + gnuplot_command_end): New functions. + (open_plot_stream, send_to_plot_stream, tree_plot_command::eval, + subplot_using::print, subplot_style::print, subplot::print, + do_external_plotter_cd, Fgset, Fgshow): Use them instead of the + GPLOT_CMD_PLOT, GPLOT_CMD_REPLOT, GPLOT_CMD_SPLOT, + GPLOT_CMD_USING, GPLOT_CMD_WITH, GPLOT_CMD_TITLE, and + GPLOT_CMD_END macros. + Fri Feb 27 12:25:27 1998 John W. Eaton <jwe@bevo.che.wisc.edu> * help.cc (additional_help_message): Fix www address.
--- a/src/error.cc +++ b/src/error.cc @@ -87,8 +87,15 @@ // from printing `error: ' twice. Assumes that the NAME we // have been given doesn't contain `:'. - ptr = strchr (msg, ':') + 2; - ptr = ptr ? ptr : msg; + ptr = strchr (msg, ':'); + + if (ptr) + { + if (*++ptr != '\0') + ++ptr; + } + else + ptr = msg; } *error_message_buffer << ptr;
--- a/src/file-io.cc +++ b/src/file-io.cc @@ -413,8 +413,9 @@ } else { - int errno = 0; - retval(1) = os->error (false, errno); + int error_number = 0; + + retval(1) = os->error (false, error_number); retval(0) = -1.0; } }
--- a/src/parse.h +++ b/src/parse.h @@ -69,6 +69,9 @@ // the command line. extern bool input_from_command_line_file; +// TRUE means warn about function files that have time stamps in the future. +extern bool Vwarn_future_time_stamp; + extern void parse_and_execute (FILE *f);
--- a/src/parse.y +++ b/src/parse.y @@ -82,6 +82,9 @@ // the name of the file in which it is defined. static bool Vwarn_function_name_clash; +// TRUE means warn about function files that have time stamps in the future. +bool Vwarn_future_time_stamp; + // If TRUE, generate warning if a statement in a function is not // terminated with a semicolon. Useful for checking functions that // should only produce output using explicit printing statements. @@ -2201,10 +2204,22 @@ id_name = id->name (); } + time_t now = time (0); + fcn->stash_function_name (id_name); fcn->stash_fcn_file_name (); - fcn->stash_fcn_file_time (time (0)); + fcn->stash_fcn_file_time (now); fcn->mark_as_system_fcn_file (); + + if (Vwarn_future_time_stamp) + { + string nm = fcn->fcn_file_name (); + + file_stat fs (nm); + + if (fs && fs.is_newer (now)) + warning ("time stamp for `%s' is in the future", nm.c_str ()); + } } else if (! (input_from_tmp_history_file || input_from_startup_file) && reading_script_file @@ -3128,6 +3143,14 @@ } static int +warn_future_time_stamp (void) +{ + Vwarn_future_time_stamp = check_preference ("warn_future_time_stamp"); + + return 0; +} + +static int warn_missing_semicolon (void) { Vwarn_missing_semicolon = check_preference ("warn_missing_semicolon"); @@ -3157,6 +3180,9 @@ DEFVAR (warn_function_name_clash, 1.0, 0, warn_function_name_clash, "produce warning if function name conflicts with file name"); + DEFVAR (warn_future_time_stamp, 1.0, 0, warn_future_time_stamp, + "warn if a function file has a time stamp that is in the future"); + DEFVAR (warn_missing_semicolon, 0.0, 0, warn_missing_semicolon, "produce a warning if a statement in a function file is not\n\ terminated with a semicolon");
--- a/src/pt-arg-list.cc +++ b/src/pt-arg-list.cc @@ -94,7 +94,7 @@ if (error_state) { - ::error ("evaluating argument list element number %d", k); + ::error ("evaluating argument list element number %d", k+1); args = octave_value_list (); break; }
--- a/src/pt-except.cc +++ b/src/pt-except.cc @@ -102,6 +102,8 @@ unwind_protect::add (do_catch_code, catch_code); + bool old_buffer_error_messages = buffer_error_messages; + if (catch_code) { unwind_protect_bool (buffer_error_messages); @@ -119,6 +121,7 @@ else { error_state = 0; + buffer_error_messages = old_buffer_error_messages; unwind_protect::discard_frame ("tree_try_catch::eval"); } }
--- a/src/pt-plot.cc +++ b/src/pt-plot.cc @@ -101,36 +101,14 @@ // ID of the plotter process. static pid_t plot_stream_pid = 0; -// Use shortest possible abbreviations to minimize trouble caused by -// gnuplot's fixed-length command line buffer. - -#ifndef GPLOT_CMD_PLOT -#define GPLOT_CMD_PLOT "pl" -#endif - -#ifndef GPLOT_CMD_REPLOT -#define GPLOT_CMD_REPLOT "cle;rep" -#endif - -#ifndef GPLOT_CMD_SPLOT -#define GPLOT_CMD_SPLOT "sp" -#endif - -#ifndef GPLOT_CMD_USING -#define GPLOT_CMD_USING "u" -#endif - -#ifndef GPLOT_CMD_WITH -#define GPLOT_CMD_WITH "w" -#endif - -#ifndef GPLOT_CMD_TITLE -#define GPLOT_CMD_TITLE "t" -#endif - -#ifndef GPLOT_CMD_END -#define GPLOT_CMD_END "\n" -#endif +// Gnuplot command strings that we use. +static string Vgnuplot_command_plot; +static string Vgnuplot_command_replot; +static string Vgnuplot_command_splot; +static string Vgnuplot_command_using; +static string Vgnuplot_command_with; +static string Vgnuplot_command_title; +static string Vgnuplot_command_end; static void plot_stream_death_handler (pid_t pid, int) @@ -210,7 +188,8 @@ *plot_stream << "set data style lines\n"; if (gnuplot_terminal_type) - *plot_stream << "set term " << gnuplot_terminal_type << GPLOT_CMD_END; + *plot_stream << "set term " << gnuplot_terminal_type + << Vgnuplot_command_end; } } @@ -225,13 +204,13 @@ return -1; } - int replot_len = strlen (GPLOT_CMD_REPLOT); - int splot_len = strlen (GPLOT_CMD_SPLOT); - int plot_len = strlen (GPLOT_CMD_PLOT); + int replot_len = Vgnuplot_command_replot.length (); + int splot_len = Vgnuplot_command_splot.length (); + int plot_len = Vgnuplot_command_plot.length (); - bool is_replot = (strncmp (cmd, GPLOT_CMD_REPLOT, replot_len) == 0); - bool is_splot = (strncmp (cmd, GPLOT_CMD_SPLOT, splot_len) == 0); - bool is_plot = (strncmp (cmd, GPLOT_CMD_PLOT, plot_len) == 0); + bool is_replot = (Vgnuplot_command_replot.compare (cmd, 0, replot_len) == 0); + bool is_splot = (Vgnuplot_command_splot.compare (cmd, 0, splot_len) == 0); + bool is_plot = (Vgnuplot_command_plot.compare (cmd, 0, plot_len) == 0); if (plot_line_count == 0 && is_replot) error ("replot: no previous plot"); @@ -242,7 +221,7 @@ if (! (is_replot || is_splot || is_plot) && plot_line_count > 0 && Vautomatic_replot) - *plot_stream << GPLOT_CMD_REPLOT << GPLOT_CMD_END; + *plot_stream << Vgnuplot_command_replot << Vgnuplot_command_end; plot_stream->flush (); } @@ -274,7 +253,7 @@ if (plot_line_count == 0) { if (plot_list) - plot_buf << GPLOT_CMD_PLOT; + plot_buf << Vgnuplot_command_plot; else { ::error ("replot: must have something to plot"); @@ -282,27 +261,27 @@ } } else - plot_buf << GPLOT_CMD_REPLOT; + plot_buf << Vgnuplot_command_replot; break; case 2: if (clear_before_plotting || plot_line_count == 0) { plot_line_count = 0; - plot_buf << GPLOT_CMD_PLOT; + plot_buf << Vgnuplot_command_plot; } else - plot_buf << GPLOT_CMD_REPLOT; + plot_buf << Vgnuplot_command_replot; break; case 3: if (clear_before_plotting || plot_line_count == 0) { plot_line_count = 0; - plot_buf << GPLOT_CMD_SPLOT; + plot_buf << Vgnuplot_command_splot; } else - plot_buf << GPLOT_CMD_REPLOT; + plot_buf << Vgnuplot_command_replot; break; default: @@ -330,7 +309,7 @@ return; } - plot_buf << GPLOT_CMD_END << ends; + plot_buf << Vgnuplot_command_end << ends; // Just testing... // char *message = plot_buf.str (); @@ -532,7 +511,7 @@ for (int i = 0; i < qual_count; i++) { if (i == 0) - plot_buf << " " << GPLOT_CMD_USING << " "; + plot_buf << " " << Vgnuplot_command_using << " "; else plot_buf << ":"; @@ -559,7 +538,7 @@ { if (! sp_style.empty ()) { - plot_buf << " " << GPLOT_CMD_WITH << " " << sp_style; + plot_buf << " " << Vgnuplot_command_with << " " << sp_style; if (sp_linetype) { @@ -786,17 +765,17 @@ octave_value tmp = sp_title_clause->rvalue (); if (! error_state && tmp.is_string ()) - plot_buf << " " << GPLOT_CMD_TITLE << " " + plot_buf << " " << Vgnuplot_command_title << " " << '"' << tmp.string_value () << '"'; else { warning ("line title must be a string"); - plot_buf << " " << GPLOT_CMD_TITLE << " " + plot_buf << " " << Vgnuplot_command_title << " " << '"' << "line " << plot_line_count << '"'; } } else - plot_buf << " " << GPLOT_CMD_TITLE << " " + plot_buf << " " << Vgnuplot_command_title << " " << '"' << "line " << plot_line_count << '"'; if (sp_style_clause) @@ -925,7 +904,7 @@ if (plot_stream && *plot_stream) { ostrstream plot_buf; - plot_buf << "cd \"" << newdir << "\"" GPLOT_CMD_END << ends; + plot_buf << "cd \"" << newdir << "\"" << Vgnuplot_command_end << ends; char *message = plot_buf.str (); send_to_plot_stream (message); delete [] message; @@ -1048,7 +1027,7 @@ ostrstream buf; for (int i = 2; i < argc; i++) buf << argv[i] << " "; - buf << GPLOT_CMD_END << ends; + buf << Vgnuplot_command_end << ends; gnuplot_terminal_type = buf.str (); } } @@ -1056,7 +1035,7 @@ for (int i = 0; i < argc; i++) plot_buf << argv[i] << " "; - plot_buf << GPLOT_CMD_END << ends; + plot_buf << Vgnuplot_command_end << ends; char *plot_command = plot_buf.str (); send_to_plot_stream (plot_command); @@ -1092,7 +1071,7 @@ for (int i = 0; i < argc; i++) plot_buf << argv[i] << " "; - plot_buf << GPLOT_CMD_END << ends; + plot_buf << Vgnuplot_command_end << ends; char *plot_command = plot_buf.str (); send_to_plot_stream (plot_command); @@ -1117,22 +1096,70 @@ return 0; } -int -gnuplot_binary (void) +static int +set_string_var (string& var, const char *nm) { - int status = 0; + int retval = 0; - string s = builtin_string_variable ("gnuplot_binary"); + string s = builtin_string_variable (nm); if (s.empty ()) { - gripe_invalid_value_specified ("gnuplot_binary"); - status = -1; + gripe_invalid_value_specified (nm); + retval = -1; } else - Vgnuplot_binary = s; + var = s; + + return retval; +} + +static int +gnuplot_binary (void) +{ + return set_string_var (Vgnuplot_binary, "gnuplot_binary"); +} + +static int +gnuplot_command_plot (void) +{ + return set_string_var (Vgnuplot_command_plot, "gnuplot_command_plot"); +} + +static int +gnuplot_command_replot (void) +{ + return set_string_var (Vgnuplot_command_replot, "gnuplot_command_replot"); +} - return status; +static int +gnuplot_command_splot (void) +{ + return set_string_var (Vgnuplot_command_splot, "gnuplot_command_splot"); +} + +static int +gnuplot_command_using (void) +{ + return set_string_var (Vgnuplot_command_using, "gnuplot_command_using"); +} + +static int +gnuplot_command_with (void) +{ + return set_string_var (Vgnuplot_command_with, "gnuplot_command_with"); +} + +static int +gnuplot_command_title (void) +{ + return set_string_var (Vgnuplot_command_title, "gnuplot_command_title"); +} + +static int +gnuplot_command_end (void) +{ + return set_string_var (Vgnuplot_command_end, "gnuplot_command_end"); } static int @@ -1160,6 +1187,27 @@ DEFVAR (gnuplot_binary, "gnuplot", 0, gnuplot_binary, "path to gnuplot binary"); + DEFVAR (gnuplot_command_plot, "pl", 0, gnuplot_command_plot, + ""); + + DEFVAR (gnuplot_command_replot, "rep", 0, gnuplot_command_replot, + ""); + + DEFVAR (gnuplot_command_splot, "sp", 0, gnuplot_command_splot, + ""); + + DEFVAR (gnuplot_command_using, "u", 0, gnuplot_command_using, + ""); + + DEFVAR (gnuplot_command_with, "w", 0, gnuplot_command_with, + ""); + + DEFVAR (gnuplot_command_title, "t", 0, gnuplot_command_title, + ""); + + DEFVAR (gnuplot_command_end, "\n", 0, gnuplot_command_end, + ""); + #ifdef GNUPLOT_HAS_FRAMES double with_frames = 1.0; #else
--- a/src/sighandlers.cc +++ b/src/sighandlers.cc @@ -89,6 +89,12 @@ do { } while (0) #endif +#if defined (SIGABRT) +#define OCTAVE_MEMORY_EXHAUSTED_ERROR SIGABRT +#else +#define OCTAVE_MEMORY_EXHAUSTED_ERROR (-1) +#endif + void octave_save_signal_mask (void) { @@ -128,7 +134,14 @@ save_user_variables (); - clean_up_and_exit (sig_number); + if (sig_number < 0) + exit (1); + else + { + octave_set_signal_handler (sig_number, SIG_DFL); + + kill (getpid (), sig_number); + } } } @@ -145,7 +158,7 @@ panic_impossible (); } else - my_friendly_exit ("operator new", 1); + my_friendly_exit ("operator new", OCTAVE_MEMORY_EXHAUSTED_ERROR); } sig_handler *
--- a/src/toplev.cc +++ b/src/toplev.cc @@ -167,7 +167,7 @@ // Fix up things before exiting. void -clean_up_and_exit (int retval) +clean_up_for_exit (void) { command_editor::restore_terminal_state (); @@ -184,16 +184,14 @@ if (!quitting_gracefully && (interactive || forced_interactive)) cout << "\n"; - - if (retval == EOF) - retval = 0; +} - exit (retval); +void +clean_up_and_exit (int retval) +{ + clean_up_for_exit (); - // This is bogus but should prevent g++ from giving a warning saying - // that this volatile function does return. - - panic_impossible (); + exit (retval == EOF ? 0 : retval); } DEFUN_TEXT (casesen, args, ,
--- a/src/toplev.h +++ b/src/toplev.h @@ -34,6 +34,9 @@ #include <string> extern void +clean_up_and_exit (void); + +extern void clean_up_and_exit (int) GCC_ATTR_NORETURN; extern int
--- a/src/variables.cc +++ b/src/variables.cc @@ -26,6 +26,7 @@ #include <cstdio> #include <cstring> +#include <ctime> #include <string> @@ -513,9 +514,9 @@ string fname = fcn_file_in_path (ff); - int status = file_stat::is_newer (fname, tp); + file_stat fs (fname); - if (status > 0) + if (fs && fs.is_newer (tp)) retval = true; } }
--- a/src/xpow.cc +++ b/src/xpow.cc @@ -446,6 +446,20 @@ // // * -> not needed. +// XXX FIXME XXX -- these functions need to be fixed so that things +// like +// +// a = -1; b = [ 0, 0.5, 1 ]; r = a .^ b +// +// and +// +// a = -1; b = [ 0, 0.5, 1 ]; for i = 1:3, r(i) = a .^ b(i), end +// +// produce identical results. Also, it would be nice if -1^0.5 +// produced a pure imaginary result instead of a complex number with a +// small real part. But perhaps that's really a problem with the math +// library... + // -*- 1 -*- octave_value elem_xpow (double a, const Matrix& b) @@ -455,9 +469,9 @@ int nr = b.rows (); int nc = b.cols (); - // For now, assume the worst. + double d1, d2; - if (a < 0.0) + if (a < 0.0 && ! b.all_integers (d1, d2)) { Complex atmp (a); ComplexMatrix result (nr, nc);
--- a/test/ChangeLog +++ b/test/ChangeLog @@ -1,3 +1,12 @@ +Thu Mar 5 20:35:26 1998 John W. Eaton <jwe@bevo.che.wisc.edu> + + * octave.test/system/gmtime-1.m, octave.test/system/localtime-1.m: + Not all systems have time zone info in the struct. + +Mon Mar 2 14:36:50 1998 John W. Eaton <jwe@bevo.che.wisc.edu> + + * octave.test/io/binary-io-1.m (id): Use binary flag in fopen call. + Wed Apr 2 21:59:15 1997 John W. Eaton <jwe@bevo.che.wisc.edu> * octave.test/prefer/prefer.exp: Delete prefer-36 and prefer-37.
--- a/test/octave.test/io/binary-io-1.m +++ b/test/octave.test/io/binary-io-1.m @@ -9,7 +9,7 @@ nm = tmpnam (); -id = fopen (nm, "w"); +id = fopen (nm, "wb"); if (id > 0) @@ -19,7 +19,7 @@ fclose (id); - id = fopen (nm, "r"); + id = fopen (nm, "rb"); if (id > 0)
--- a/test/octave.test/system/gmtime-1.m +++ b/test/octave.test/system/gmtime-1.m @@ -5,7 +5,6 @@ && struct_contains (ts, "mon") && struct_contains (ts, "mday") && struct_contains (ts, "sec") - && struct_contains (ts, "zone") && struct_contains (ts, "min") && struct_contains (ts, "wday") && struct_contains (ts, "hour")
--- a/test/octave.test/system/localtime-1.m +++ b/test/octave.test/system/localtime-1.m @@ -5,7 +5,6 @@ && struct_contains (ts, "mon") && struct_contains (ts, "mday") && struct_contains (ts, "sec") - && struct_contains (ts, "zone") && struct_contains (ts, "min") && struct_contains (ts, "wday") && struct_contains (ts, "hour")