2004-09-21  John W. Eaton  <jwe@octave.org>

	* version.h (OCTAVE_VERSION): Now 2.1.59.

	* oct-fstrm.h (octave_fstream::octave_fstream,
	octave_fstream::create): Set default float format to actual native
	format, not flt_fmt_native.
	* oct-iostrm.h (octave_base_iostream::octave_base_iostream,
	octave_istream::octave_istream, octave_ostream::octave_ostream):
	Likewise.
	* oct-prcstrm.h (octave_iprocstream::octave_iprocstream,
	octave_oprocstream::octave_oprocstream,
	octave_iprocstream::create, octave_oprocstream::create):
	Likewise.
	* oct-stdstrm.h (octave_stdiostream::octave_stdiostream,
	octave_stdiostream::create):
	Likewise.
	* oct-stream.h (octave_base_stream::octave_base_stream):
	Likewise.
	* oct-strstrm.h (octave_base_strstream::octave_base_strstream,
	octave_istrstream::octave_istrstream, octave_istrstream::create):
	Likewise.

2004-09-21  David Bateman  <dbateman@free.fr>

	* data.cc (Freshape): Allow a single empty dimension argument
	to flag unknown dimension and calculate its value from the
	other dimensions.

2004-09-21  John W. Eaton  <jwe@octave.org>

	* symtab.h (symbol_record::~symbol_record): Delete definition if
	count goes to zero.
	* symtab.cc (symbol_table::~symbol_table): Move here from symtab.h.
	Call delete on each symbol record in the table instead of just
	clearing them.

2004-09-17 David Bateman <dbateman@free.fr>

	* DLD-FUNCTIONS/sort.cc (ascending_compare, descending_compare):
	Now templates (avoids g++ 3.4.x compile problems).
	Fix other uses of these functions to also treat them as templates.
	(mx_sort): For unsigned EIGHT_BYTE_INT versions correct the test 
	for the position of NaN.  Problems when mode was DESCENDING or
	UNDEFINED.  Use static_cast<unsigned int> (dim) rather than 
	(unsigned int) dim.
	(IFloatFlip): Now static.

2004-09-17  David Bateman  <dbateman@free.fr>

	* DLD-FUNCTIONS/det.cc (Fdet): Only compute estimate of the
	condition number if requested as output.

	* DLD-FUNCTIONS/schur.cc (Fschur): Only compute unitary matrix if
	requested as output.

2004-09-17  John W. Eaton  <jwe@octave.org>

	* ov-fcn-inline.cc (octave_fcn_inline::octave_fcn_inline):
	Call eval_string instead of feval ("eval", ...).
	Construct anonymous function handle to avoid going through the
	symbol table.

	* ov-fcn-handle.h (octave_fcn_handle::fcn_val): New function.
	(octave_fcn_handle::octave_fcn_handle (const std:string&)):
	New constructor.

2004-09-16  John W. Eaton  <jwe@octave.org>

	* parse.y (frob_function): Clear id_name from curr_sym_tab, not
	top_level_sym_tab.

	* symtab.cc (maybe_list): Count sizes using size_t, not int.

	* variables.cc (symbol_out_of_date): Always look in LOADPATH.

2004-09-15  John W. Eaton  <jwe@octave.org>

	* OPERATORS/op-int-conv.cc: Define and install bool to int
	conversions.
	* OPERATORS/op-double-conv.cc: Define and install bool to double
	conversions.

	* ov.cc (octave_value::assign): Handle subsref for containers.
	* oct-lvalue.cc (octave_lvale::value): Likewise.

	* DLD-FUNCTIONS/sort.cc (mx_sort): Return octave_value, not
	octave_value list.

2004-09-15  David Bateman  <dbateman@free.fr>

	* ov.cc (octave_value::octave_value (const ArrayN<char>&, bool)):
	New Constructor .
	* ov.h: Provide decl.

	* DLD-FUNCTIONS/sort.cc (sortmode): New enum to define sort direction.
	(template <class T> class vec_index): New class to contain values and
	index for indexed sorts, replacing all previous struct versions. 
	Instantiate for double, Complex, char and octave_value.
	(template <class T> static octave_value_list mx_sort (ArrayN<T> &, int,
	sortmode)): New templated version of mx_sort replacing all previous
	versions, but specific to non indexed sorts. Instantiate for char
	and double if not IEEE754.
	(template <> static octave_value_list mx_sort (ArrayN<double> &, 
	int, sortmode)): Specialized function of mx_sort of IEEE754.
	(template <class T> static octave_value_list mx_sort_indexed 
	(ArrayN<T> &, int, sortmode)): New templated version of mx_sort 
	for indexed sorts. Instantiate for double, Complex, char and 
	octave_value.
	(ascending_compare, descending_compare): Comparison functions
	for double, char, vec_index<double> *, vec_index<Complex> *,
	vec_index<char> *, vec_index<octave_value>. Fix Complex comparison
	operator to sort by arg of values if absolute values are equal.
	(Fsort): Update docs for new mode argument and for sorting of 
	strings and cell arrays of strings. Implement mode argument to
	define ascending and descending sorts. Include sorting of cell
	arrays of strings. Adapt for new templated versions of the mx_sort
	function.

2004-09-15  John W. Eaton  <jwe@octave.org>

	* ov-cell.cc (octave_cell::subsref): Pass nargout to next_subsref.
	* ov-builtin.cc (octave_builtin::subsref): Likewise.
	* ov-fcn-handle.cc (octave_fcn_handle::subsref): Likewise.
	* ov-list.cc (octave_list::subsref): Likewise.
	* ov-mapper.cc (octave_mapper::subsref): Likewise.
	* ov-struct.cc (octave_struct::subsref): Likewise.
	* ov-usr-fcn.cc (octave_user_function::subsref): Likewise.

	* ov-struct.cc, ov-struct.h (octave_struct::subsref (const
	std::string&, const std::list<octave_value_list>&, int)):
	Define this version.
	(octave_struct::subsref (const std::string&, const
	std::list<octave_value_list>&)): Panic in this version.
	* ov-list.cc, ov-list.h: Likewise.
	* ov-cell.cc, ov-cell.h: Likewise.

	* ov.cc (octave_value::subsref (int, const std::string&, const
	std::list<octave_value_list>&, size_t)): New function.
	* ov.h: Provide decl.	

	* ov-cell.h (octave_cell::is_constant): Return false.
	* ov-struct.h (octave_struct::is_constant): Delete.
	* ov-list.h (octave_list::is_constant): Delete.

2004-09-14  David Bateman  <dbateman@free.fr>

	* DLD-FUNCTIONS/sort.cc (mx_sort (charNDArray&, bool, int)):
	New function to sort character strings.
	(Fsort): Handle character strings.

2004-09-11  John W. Eaton  <jwe@octave.org>

	* ov-fcn-handle.cc (octave_fcn_handle::save_ascii):
	Write directly to OS.
	(octave_fcn_handle::load_ascii,	octave_fcn_handle::load_binary,
	octave_fcn_handle::load_hdf5): Check parse status after calling
	eval_string.  Don't dereference fh unless it is valid.

2004-09-11  David Bateman  <dbateman@free.fr>

	* ov-fcn-handle.cc (octave_fcn_handle::save_ascii,
	octave_fcn_handle::load_ascii, octave_fcn_handle::save_binary,
	octave_fcn_handle::load_binary, octave_fcn_handle::save_hdf5,
	octave_fcn_handle::load_hdf5): New functions. 
	* ov-fcn-handle.h: Provide decls.

	* ov-fcn-inline.cc (octave_fcn_inline::load_ascii):
	Allow spaces in saved function.
 	(octave_fcn_inline::save_hdf5): Properly close all HDF5 objects.

	* ls-oct-ascii.cc (read_ascii_data): Check return type of 
	<octave_value>.load_ascii for errors reading the variables

	* variables.cc (lookup_function_handle, clear_variable,
	clear_symbol): New functions.
	* variables.h: Provide decls.

2004-09-10  John W. Eaton  <jwe@octave.org>

	* ov-builtin.cc (octave_builtin::do_multi_index_op): Use unwind
	protect frame instead of a single unwind_protect::run.
	* ov-mapper.cc (octave_mapper::do_multi_index_op): Likewise.

	* data.cc (fill_matrix, identity_matrix):
	Also allow logical data type.

2004-09-10  David Bateman  <dbateman@free.fr>

	* ov-intx.h (OCTAVE_VALUE_INT_MATRIX_T::double_value,
	OCTAVE_VALUE_INT_MATRIX_T::scalar_value,
	OCTAVE_VALUE_INT_SCALAR_T::double_value,
	OCTAVE_VALUE_INT_SCALAR_T::scalar_value): New functions.

2004-09-10  John W. Eaton  <jwe@octave.org>

	* ov-base-scalar.h (octave_base_scalar::clone,
	octave_base_scalar::empty_clone): New functions.

2004-09-09  John W. Eaton  <jwe@octave.org>

	* pt-pr-code.h (tree_print_code::newline): New optional arg, alt_nl.
	* pt-pr-code.cc (tree_print_code::newline): Use it if not printing
	newlines.
	(tree_print_code::visit_statement): If we printed ";", call
	newline with optional arg set to "".
	(tree_print_code::printing_newlines): New data member.
	(tree_print_code::tree_print_code): Initialize it.
	(tree_print_code::suspend_newline, tree_print_code::resume_newline):
	New functions.
	(tree_print_code::newline, tree_print_code::indent): Use it

	* ov-fcn-handle.cc (octave_fcn_handle::print_raw):
	Print code for anonymous function handles.

2004-09-08  John W. Eaton  <jwe@octave.org>

	* ov-fcn-handle.cc (Ffunc2str, Ffunctions): Don't call substr(1)
	on fh_nm, since we no longer need to skip "@" in the name.

	* error.cc (pr_where): Do a better job of printing location info.

	* input.cc (get_user_input): Print location info before the debug
	prompt.  From Keith Goodman <kwgoodman@gmail.com>.

	* ov-usr-fcn.cc (octave_user_function::do_multi_index_op):
	Save and set curr_caller_function and curr_caller_statement here.
	* ov-mapper.cc (octave_mapper::do_multi_index_op): Likewise.
	* ov-builtin.cc (octave_builtin::do_multi_index_op): Likewise.

	* pt-stmt.cc (curr_caller_statement): New variable.
	* pt-stmt.h: Provide decl.	

	* toplev.cc (curr_caller_function): New variable.
	* toplev.h: Provide decl.

	* pt-arg-list.cc (convert_to_const_vector):
	Unwind-protect index_position before modifying it.
	Don't protect and set index_position unless stash_object is true.

2004-09-08  David Bateman  <dbateman@free.fr>

	* ov-fcn-inline.cc (octave_fcn_inline::save_ascii,
	octave_fcn_inline::load_ascii, octave_fcn_inline::save_binary,
	octave_fcn_inline::load_binary, octave_fcn_inline::save_hdf5,
	octave_fcn_inline::load_hdf5): New functions. 
	* ov-fcn-inline.h: Provide decls.

2004-09-08  John W. Eaton  <jwe@octave.org>

	* ov.h: Add octave_array_type_traits specialization for
	boolNDArray element type.

2004-09-07  John W. Eaton  <jwe@octave.org>

	* oct-stream.cc: Instantiate octave_stream::write for Array<bool>.
	(octave_stream::read): Expand read_fptr_table to include dt_logical.

	* ov-bool.h (octave_bool::write): New function.
	* ov-bool-mat.h (octave_bool_matrix::write): New function.

	* ov-fcn-inline.h (octave_fcn_inline::octave_fcn_inline): New copy
	constructor.
	(octave_fcn_inline::clone, octave_fcn_inline::empty_clone):
	New functions.

	* ov-fcn-handle.h (octave_fcn_handle::octave_fcn_handle): New copy
	constructor.
	(octave_fcn_handle::clone, octave_fcn_handle::empty_clone):
	New functions.

2004-09-06  John W. Eaton  <jwe@octave.org>

	* ov.cc (install_types): Call octave_fcn_inline::register_type.

	* version.h (OCTAVE_API_VERSION): Now api-v10.

	* OPERATORS/op-b-b.cc, OPERATORS/op-bm-bm.cc: Define and install
	unary plus and unary minus operators.

	* OPERATORS/op-int.h, OPERATORS/op-cm-cm.cc,
	OPERATORS/op-cs-cs.cc, OPERATORS/op-m-m.cc, OPERATORS/op-range.cc:
	Define and install unary plus operator.

	* ov.cc (unary_op_as_string): Handle op_uplus too.

	* parse.y (prefix_expr): Build unary plus op here instead of
	converting to no-op.
	(make_prefix_op): Accept op_uplus.

2004-09-03  John W. Eaton  <jwe@octave.org>

	* OPERATORS/op-b-bm.cc (DEFCONV): Define bool scalar to bool
	matrix conversion.
	(install_b_bm_ops): Install it.
	Install conversion for assignment of bool matrix to indexed bool.
	* OPERATORS/op-b-b.cc (install_b_b_ops): Install conversion for
	assignment of bool to indexed bool.

2004-09-03  David Bateman  <dbateman@free.fr>

	* OPERATORS/op-b-b.cc, OPERATORS/op-b-bm.cc, OPERATORS/op-bm-b.cc,
	OPERATORS/op-bm-bm.cc: Modify concatenation between boolean types
	so that it returns a boolean.

	* ov-bool.cc (octave_bool::do_index_op): Return boolean matrix.

	* ov-intx.h (do_index_op (const octave_value_list&, int)):
	New function for indexed subsref of int types.

2004-09-03  John W. Eaton  <jwe@octave.org>

	* OPERATORS/op-int.h (OCTAVE_SM_INT_OPS): Define int by double
	mixed comparison and bool ops.
	(OCTAVE_INSTALL_SM_INT_OPS): Install them.
	(OCTAVE_MS_INT_OPS): Define double by int mixed comparison and
	bool ops.
	(OCTAVE_INSTALL_MS_INT_OPS): Install them

	* OPERATORS/op-i8-i8.cc, OPERATORS/op-i16-i16.cc,
	OPERATORS/op-i32-i32.cc, OPERATORS/op-i64-i64.cc,
	OPERATORS/op-ui8-ui8.cc, OPERATORS/op-ui16-ui16.cc,
	OPERATORS/op-ui32-ui32.cc, OPERATORS/op-ui64-ui64.cc:
	Define and install various mixed-type operators.

	* OPERATORS/op-int.h (OCTAVE_MM_INT_OPS): Also define mixed int
	and double matrix comparison and bool ops.
	(OCTAVE_INSTALL_MM_INT_OPS): Install them.
	(OCTAVE_SS_INT_BOOL_OPS, OCTAVE_SM_INT_BOOL_OPS,
	OCTAVE_MS_INT_BOOL_OPS, OCTAVE_MM_INT_BOOL_OPS):
	Define logical AND and OR ops.
	(OCTAVE_INSTALL_SS_INT_BOOL_OPS, OCTAVE_INSTALL_SM_INT_BOOL_OPS,
	OCTAVE_INSTALL_MS_INT_BOOL_OPS, OCTAVE_INSTALL_MM_INT_BOOL_OPS):
	Install them.
	(OCTAVE_MM_INT_CMP_OPS, OCTAVE_MM_INT_BOOL_OPS): Accept prefix arg.
	(OCTAVE_MM_CONV): New macro.
	(OCTAVE_MM_INT_OPS): Use it to define complex matrix conversion.
	(OCTAVE_MIXED_INT_CMP_OPS, OCTAVE_MIXED_INT_BOOL_OPS): New macros.

	* OPERATORS/op-int.h (OCTAVE_MS_INT_OPS): Don't define indexed int
	matrix = complex scalar assignment ops.
	(OCTAVE_MS_INT_OPS): Don't define indexed int matrix = complex
	matrix assignment ops.
	(OCTAVE_SM_CONV): New macro.
	(OCTAVE_SM_INT_OPS): Use it to define int scalar -> (int|complex)
	matrix widening ops.
	(OCTAVE_RE_INT_ASSIGN_OPS, OCTAVE_CX_INT_ASSIGN_OPS): New macros.
	(OCTAVE_INT_OPS): Use them here.
	(OCTAVE_INSTALL_SS_INT_OPS): Install indexed int scalar = scalar
	and indexed int scalar = complex scalar assignment conversions.
	(OCTAVE_INSTALL_SM_INT_OPS): Install int scalar -> (int|complex)
	matrix widening ops.  Install indexed int scalar =
	(int|real|complex) matrix assignment conversions.
	(OCTAVE_INSTALL_MS_INT_OPS): Install indexed int matrix = complex
	scalar assignment conversion.
	(OCTAVE_INSTALL_MM_INT_OPS): Install int matrix -> complex matrix
	widening op.  Install indexed int matrix = complex matrix
	assignment conversion.
	(OCTAVE_INSTALL_RE_INT_ASSIGN_OPS, OCTAVE_INSTALL_CX_INT_ASSIGN_OPS):
	New macros.
	(OCTAVE_INSTALL_INT_OPS): Use them.

	* op-int.h: (OCTAVE_INSTALL_SM_INT_ASSIGNCONV): New macro.
	* OPERATORS/op-i8-i8.cc, OPERATORS/op-i16-i16.cc,
	OPERATORS/op-i32-i32.cc, OPERATORS/op-i64-i64.cc,
	OPERATORS/op-ui8-ui8.cc, OPERATORS/op-ui16-ui16.cc,
	OPERATORS/op-ui32-ui32.cc, OPERATORS/op-ui64-ui64.cc:
	Use it to define mixed size integer scalar/integer matrix
	assignment conversions.

	* ov-intx.h (OCTAVE_VALUE_INT_MATRIX_T::complex_array_value,
	OCTAVE_VALUE_INT_SCALAR_T::complex_array_vale):
	New functions.

2004-09-02  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/quad.cc (Fquad): Pass "__quad_fcn_" instead of
	"__quad_fcn__" to unique_symbol_name.

	* ov-fcn-inline.cc (octave_fcn_inline): Pass "__inline_" instead
	of "__inline__" to unique_symbol_name.

	* variables.cc (unique_symbol_name): Make better random symbol name.

2004-09-01  John W. Eaton  <jwe@octave.org>

	* version.h (OCTAVE_VERSION): Now 2.1.58.

	* Makefile.in (OP_INCLUDES): New variable.
	Include OPERATORS/op-int.h here.
	* Makefile.in (dist): Also link $(OP_INCLUDES).

	* Makefile.in (DISTFILES): Include $(EXTRAS) in the list.

2004-09-01  David Bateman  <dbateman@free.fr>

	* DLD-FUNCTION/quad.cc: Allow function handle and inline functions.
	Use a unique function name and delete it on exit.

	* ov.h (is_inline_function): New virtual function.
	* ov-fcn-inline.h (is_inline_function): New function.
	* ov-base.h (is_inline_function): New function.

	* ov-fcn-inline.cc (octave_fcn_handle::octave_fcn_handle):
	Use unique_symbol_name and clear_function instead of manipulating
	symbol table directly.

	* variables.cc (unique_symbol_name): New function.
	(clear_function): New function.
	* variables.h: Provide decls.

	* dynamic-ld.cc (do_clear_function): Rename from clear_function.

2004-09-01  John W. Eaton  <jwe@octave.org>

	* OPERATORS/op-i8-i8.cc, OPERATORS/op-i16-i16.cc,
	OPERATORS/op-i32-i32.cc, OPERATORS/op-i64-i64.cc,
	OPERATORS/op-ui8-ui8.cc, OPERATORS/op-ui16-ui16.cc,
	OPERATORS/op-ui32-ui32.cc, OPERATORS/op-ui64-ui64.cc:
	Define and install mixed assignment ops.
	* op-int.h: Define mixed integer/double ops.
	Define simple division ops.

	* ov-complex.h (octave_complex_scalar): New typedef to simplify
	various macros where naming consistency matters.

2004-08-31  David Bateman  <dbateman@free.fr>

	* OPERATORS/op-int.h (ss_pow, ms_el_pow, mm_el_pow): New power 
	functions.
	(sm_el_pow): Return correct type.
	(OCTAVE_SS_POW_OPS, OCTAVE_SM_POW_OPS, OCTAVE_MS_POW_OPS,
	OCTAVE_MM_POW_OPS): New macros to define the power operator over
	integer types.
	(OCTAVE_SS_INT_OPS, OCTAVE_SM_INT_OPS, OCTAVE_MS_INT_OPS,
	OCTAVE_MM_INT_OPS): Use the new macros for the power operators.
	(OCTAVE_INSTALL_SS_INT_OPS, OCTAVE_INSTALL_MS_INT_OPS,
	OCTAVE_INSTALL_MM_INT_OPS): Install new power functions.

	* OPERATORS/op-int-conv.cc (INT_CONV_FUNCTIONS): Correct return
	types for unsigned integer scalars and signed integer matrices.

	* ov-type-conv.h (OCTAVE_TYPE_CONV_BODY3): Conversion betwen same
	types returns the original value.

	* bitfcns.cc (BITOP): Fix for mixed scalar/matrix ops. Allow 
	octave_range as an argument, by using class_name rather than
	type_id to test.

2004-08-31  John W. Eaton  <jwe@octave.org>

	* pr-output.cc (pr_int): Also handle bank_format.
	(octave_print_internal (std::ostream& os, const intNDArray<T>&,
	bool, int)): Likewise.

2004-08-31  David Bateman  <dbateman@free.fr>

	* pr-output.cc (pr_int(std::ostream, const T&, int)):
	New template function to print formatted integer types.
	Instantiate it for all of the integer types.
	(octave_print_internal (std::ostream, const intNDArray<T>&, bool,
	int)): Use pr_int.  Align output up in columns, and check for
	free_format or plus_format.
	(octave_print_internal (std::ostream, const octave_int<T>&, bool)):
	Use pr_int.  Check for free_format and plus_format.

	* ls-hdf5.cc (hdf5_read_next_data): When importing hdf5 files,
	allow structures and lists (for backward compatibility).  Also
	allow importation of integer types into octave int and uint types.

2004-08-31  John W. Eaton  <jwe@octave.org>

	* data.cc (fill_matrix, identity_matrix): Convert class name to
	oct_data_conv::data_type and switch on that.
	(identity_matrix (int, int)): New template.
	(identity_matrix (int, int, const std::string&)): Use it.

	* ov.h (octave_type_traits, octave_array_type_traits): Move here.
	* oct-stream.cc: From here.

2004-08-31  David Bateman  <dbateman@free.fr>

	* data.cc (Fzeros, Fones, Feye): Update help text for optional
	class argument.
	(static octave_value identity_matrix (int, int, const std::string&)):
	New function to create identity matrices with an arbitrary type.
	(Feye): Call new version of identity matrix function, even for scalars.
	(static octave_value fill_matrix (const octave_value_list&, double,
	const char *)): Update to allow arbitrary classes of matrices to be
	created.

2004-08-31  John W. Eaton  <jwe@octave.org>

	* ls-mat5.cc (read_int): New function.

	* oct-stream.cc (octave_base_stream::do_read,
	octave_base_stream::read, octave_base_stream::write): Delete.
	* oct-stream.h: Delete decls.

	* oct-stream.cc (octave_stream::read): Handle block_size and
	separate input/output types.
	(octave_stream::write): Handle block_size and various input types.
	(octave_type_traits, octave_array_type_traits):	New traits classes.
	(do_read): New templates to read data and perform type conversion.
	(octave_stream::write (const Array<T>&, int,
	oct_data_conv::data_type, int, oct_mach_info::float_format),
	do_write, write_int):
	New templates to write ints and perform type conversion.
	Instantiate for various Octave types.

	* ov.cc (octave_value::write): New function.
	* ov.h: Provide decl.
	* ov-base.cc (octave_base_value::write): New function.
	* ov-base.h: Provide decl.
	* ov-complex.h (octave_complex::write): New function.
	* ov-cx-mat.h (octave_complex_matrix::write): New function.
	* ov-intx.h (OCTAVE_VALUE_INT_MATRIX_T::write): New function.
	(OCTAVE_VALUE_INT_SCALAR_T::write): New function.
	* ov-re-mat.h (octave_matrix::write): New function.
	* ov-scalar.h (octave_scalar::write): New function.
	* ov-str-mat.h (octave_char_matrix_str::write): New function.

	* file-io.cc (Ffread): Handle block size, to/from format in
	precision argument.
	(Ffwrite): Handle block size in precision argument.

2004-08-25  David Bateman  <dbateman@free.fr>

	* ov-cell.cc (octave_cell::subsasgn): Delete elements of cell array
	when type is "(" and rhs is empty.

2004-08-09  John W. Eaton  <jwe@octave.org>

	* ov-intx.h (OCTAVE_VALUE_INT_MATRIX_T::index_vector,
	OCTAVE_VALUE_INT_SCALAR_T::index_vector): New functions.

2004-08-06  David Bateman  <dbateman@free.fr>

	* OPERATORS/op-struct.cc: New file.
	* ov-struct.h (octave_struct::resize (const dim_vector&)):
	New function.
	* oct-map.h (Octave_map::resize (const dim_vector&)): New function.
	* ov-map.cc (Octave_map::reshape):
	Correct return for same sized reshape.
	(Octave_map::resize (const dim_vector&)): New function.
	(concat (const Octave_map&, const Octave_map&, const Array<int>&)):
	Complete concatenation function.
	* Makefile.in (OP_XSRC): Include op-struct.cc in the list.

2004-08-05  John W. Eaton  <jwe@octave.org>

	* pt-stmt.h (tree_statement::set_command,
	(tree_statement::set_expression): New functions.

	* parse.y (param_list_beg): Handle pushing new symbol table
	context for anonymous function handle parameter lists here.
	(anon_fcn_handle): New non-terminal.
	(expression): Include anon_fcn_handle here.
	(make_anon_fcn_handle): New static function.

2004-08-05  David Bateman  <dbateman@free.fr>

	* ov.cc (octave_value::fcn_inline_value): New virtual function.
	* ov.h (octave_value::fcn_inline_value): Provide decl.
	* ov-base.cc (octave_base_value::fcn_inline_value): New function
	* ov-base.h (octave_base_value::fcn_inline_value): Provide decl.
	* ov-fcn-handle.cc (octave_fcn_handle::octave_fcn_handle 
	(const std::string&, const string_vector&, const std::string&),
	octave_fcn_handle::convert_to_str_internal, Finline, Fargnames,
	Fformula, Fvectorize): Delete.
	(octave_fcn_handle::print_raw): Remove inline case.
	* ov-fcn-handle.h (octave_fcn_handle::fcn_type,
	octave_fcn_handle::octave_fcn_handle (const std::string&, const
	string_vector&, const std::string&),
	octave_fcn_handle::inline_fcn_name,
	octave_fcn_handle::inline_fcn_text,
	octave_fcn_handle::inline_fcn_arg_names,
	octave_fcn_handle::is_inline,
	octave_fcn_handle::convert_to_str_internal,
	octave_fcn_handle::typ, octave_fcn_handle::iftext,
	octave_fcn_handle::ifargs): Delete constructors,
	functions, and data members (moved to ov-fcn-inline.h).
	* Makefile.in: Include ov-fcn-inline.h and ov-fcn-inline.cc where
	appropriate.
	* ov-fcn-inline.h, ov-fcn-inline.cc: New class.

2004-08-05  John W. Eaton  <jwe@octave.org>

	* ov-base-int.cc (octave_base_int_matrix<T>::save_ascii,
	octave_base_int_matrix<T>::load_ascii,
	octave_base_int_matrix<T>::save_binary,
	octave_base_int_matrix<T>::load_binary,
	octave_base_int_matrix<T>::save_hdf5,
	octave_base_int_matrix<T>::load_hdf5,
	octave_base_int_matrix<T>::try_narrowing_conversion,
	octave_base_int_scalar<T>::print_raw,
	octave_base_int_scalar<T>::save_ascii,
	octave_base_int_scalar<T>::load_ascii,
	octave_base_int_scalar<T>::save_binary,
	octave_base_int_scalar<T>::load_binary,
	octave_base_int_scalar<T>::save_hdf5,
	octave_base_int_scalar<T>::load_hdf5):
	Sprinkle with this-> as needed.

	* Makefile.in (EXTRAS): New macro.  Move ov-base-int.cc here from
	OV_INTTYPE_SRC.
	(INCLUDES_FOR_INSTALL): New macro.
	(install-inc, uninstall): Use it instead of INCLUDES.

	* variables.h (symbol_exist): Default for type is now "any".

2004-08-05  David Bateman  <dbateman@free.fr>

	* ov-fcn-handle.cc (octave_fcn_handle (const std::string&, 
	const string_vector&, const std::string&)): New constructor for inline
	function handles.
	(octave_fcn_handle::print_raw): Allow inline functions to be printed.
	(octave_fcn_handle::convert_to_str_internal): New function to allow
	Fchar to work on inlined function handles.
	(Finline, Fformula, Fargnames, Fvectorize): New functions.
	* ov-fcn-handle.h (octave_fcn_handle (const std::string&, 
	const string_vector&, const std::string&)): Provide decl.
	(octave_fcn_handle::convert_to_str_internal): Provide decl.
	(fcn_type): New enum for the type of function handle.
	(octave_fcn_handle::inline_fcn_text, octave_fcn_handle::is_inline,
	octave_fcn_handle::inline_fcn_arg_names): New functions.
	(octave_fcn_handle::typ, octave_fcn_handle::iftext,
	octave_fcn_handle::ifargs): New private variables for inline functions.

2004-08-04  John W. Eaton  <jwe@octave.org>

	* parse.y (fcn_handle):
	Recognize '@' FCN_HANDLE rather than just FCN_HANDLE.
	Decrement lexer_flags.looking_at_function_handle here.
	* lex.h (lexical_feedback::looking_at_function_handle):
	New data member.
	(lexical_feedback::init): Initialize it.
	* lex.l (handle_identifier): Only reject keywords if we are
	looking at a function handle.
	("@"): Recognize this separately from what follows.
	Increment lexer_flags.looking_at_function_handle here.

	* ov-fcn-handle.h (octave_fcn_handle::octave_fcn_handle
	(octave_function*, const std::string)): Delete.
	* ov.h, ov.cc (octave_value::octave_value (octave_function *)): Delete.
	(octave_value::octave_value (octave_function *, const std::string)):
	Delete.

	* ov-fcn-handle.h (octave_fcn_handle::fcn): Now octave_value, not
	pointer to octave_function.
	(octave_fcn_handle::octave_fcn_handle (const octave_value&, const
	std::string)): New constructor.
	* variables.cc (lookup_function): Return octave_value, not pointer
	to octave_function.  Change all uses.
	(lookup_user_function): Return octave_value, not pointer
	to octave_user_function.  Change all uses.

2004-08-03  John W. Eaton  <jwe@octave.org>

	* ov-usr-fcn.cc (octave_user_fcn::do_multi_index_op): Call
	install_automatic_vars here.
	(octave_user_fcn::octave_user_fcn): Not here.
	(install_automatic_vars): Don't mark argn_sr, nargin_sr,
	nargout_sr, or varargin_sr as static.

	* oct-stream.cc (octave_scan): Avoid need for pushing two
	characters back on the input stream.

2004-08-02  John W. Eaton  <jwe@octave.org>

	* oct-stream.cc (octave_scan): For %i format, recognize numbers
	with leading 0x or 0X as hex and leading 0 as octal.

	* OPERATORS/op-fcn-handle.cc: Delete.
	* Makefile.in (OP_XSRC): Delete it from the list.
	* pr-output.cc (octave_print_internal (std::ostream&, const
	std::string&, bool, int): New function.
	* ov-fcn-handle.cc (octave_value::subsref): New function.
	* ov-fcn-handle.h (class fcn_handle_elt, class fcn_handle_array):
	Delete.
	(class octave_fcn_handle): Derive from octave_base_value, not
	octave_base_matrix<fcn_handle_array>.

	* ov-cx-mat.cc (try_narrowing_conversion): Also allow complex to
	real conversion for N-d arrays.

2004-07-30  John W. Eaton  <jwe@octave.org>

	* lex.l (<COMMAND_START>[^#% \t\r\n\;\,\"\'][^ \t\r\n\;\,]*{S}*):
	Also recognize \r as a word list separator.

2004-07-27  John W. Eaton  <jwe@octave.org>

	* bitfcns.cc (DO_BITSHIFT): Pass mask to bitshift.
	(bitshift (double, int, EIGHT_BYTE_INT): New arg, mask.
	(DO_UBITSHIFT, DO_SBITSHIFT): Use bitshfit, not operator >>.
	Use nbits function from octave_int type to set bits_in_type.

	* ov-struct.cc (Fisfield): Only print usage message if number of
	arguments is incorrect.  Return false for invalid arguments.
	From Andy Adler <adler@site.uottawa.ca>.

2004-07-27  David Bateman  <dbateman@free.fr>

	* Cell.cc (Cell::index): Quit early if an error occurs when
	creating index vector object.

	* ov-int8.cc, ov-int16.cc, ov-int32.cc, ov-int64.cc, ov-uint8.cc, 
	ov-uint16.cc, ov-uint32.cc, ov-uint64.cc (HDF5_SAVE_TYPE): Define
	for HDF5 native format for the type.

	* ov-base-int.h (save_ascii, save_binary, load_binary, save_hdf5):
	Delete unused arguments.

	* ov-base-int.cc (octave_base_int_matrix::save_ascii,
	octave_base_int_matrix::save_binary,
	octave_base_int_scalar::save_ascii,
	octave_base_int_scalar::save_binary,
	octave_base_int_scalar::save_hdf5): Delete unused argument.

	* ov-base-int.cc (octave_base_int_matrix::save_binary,
	octave_base_int_matrix::load_binary,
	octave_base_int_matrix::save_hdf5,
	octave_base_int_matrix::load_hdf5,
	octave_base_int_scalar::save_ascii,
	octave_base_int_scalar::load_ascii,
	octave_base_int_scalar::save_binary,
	octave_base_int_scalar::load_binary,
	octave_base_int_scalar::save_hdf5,
	octave_base_int_scalar::load_hdf5): Implement missing functions.

2004-07-23  David Bateman  <dbateman@free.fr>

	* ov-intx.h (OCTAVE_VALUE_INT_MATRIX_T::array_value,
	OCTAVE_VALUE_INT_SCALAR_T::array_value): new methods to extract array
	value from integer types.

	* bitfcns.cc (BITOPX): New Macro renamed from BITOP.
	(BITOP): Alter to allow different types and call BITOP appropriately.
	(DO_SBITSHIFT, DO_UBITSHIFT): New macros for signed, unsigned
	bitshifts.

	(DO_BITSHIFT): Test for shift of more bits than in type, which is
	undefined.  Generalize to allow double args as well.
	(Fbitshift): Add int and double types.
	(Fbitmax): Return 53 bit value which conforms to IEEE754 double
	mantissa.
	(Fintmax, Fintmin): New functions.
	(Fbitget, Fbitset, Fbitcmp): Delete.

	* OPERATORS/op-int.h: Add sm_el_pow function

	* ops.h (CATOPDECL, DEFCATOPX, DEFCATOP, DEFCATOP_FB, DEFNDCATOP_FN, 
	CATOP_NONCONFORMANT, INSTALL_CATOP): New macros.
	
	* OPERATORS/op-b-b.cc, OPERATORS/op-b-bm.cc, OPERATORS/op-bm-b.cc, 
	OPERATORS/op-bm-bm.cc, OPERATORS/op-cell.cc, OPERATORS/op-chm.cc, 
	OPERATORS/op-cm-cm.cc, OPERATORS/op-cm-cs.cc, OPERATORS/op-cm-m.cc, 
	OPERATORS/op-cm-s.cc, OPERATORS/op-cs-cm.cc, OPERATORS/op-cs-cs.cc, 
	OPERATORS/op-cs-m.cc, OPERATORS/op-cs-s.cc, OPERATORS/op-m-cm.cc, 
	OPERATORS/op-m-cs.cc, OPERATORS/op-m-m.cc, OPERATORS/op-m-s.cc, 
	OPERATORS/op-range.cc, OPERATORS/op-s-cm.cc, OPERATORS/op-s-cs.cc, 
	OPERATORS/op-s-m.cc, OPERATORS/op-s-s.cc, OPERATORS/op-str-str.cc,
	OPERATORS/op-str-m.cc, OPERATORS/op-str-s.cc (CATOPDECL, DEFCATOPX,
	DEFCATOP, DEFCATOP_FB, DEFNDCATOP_FN, CATOP_NONCONFORMANT,
	INSTALL_CATOP): Use them to define concatenation functions.

	* OPERATORS/op-int.h (OCTAVE_CONCAT_FN, OCTAVE_INSTALL_CONCAT_FN):
	New macros to define and install concatentaion functions for int/uint
	types.
	
	* TEMPLATE-INST/Array-tc.cc (INSTANTIATE_ARRAY_CAT): Delete.

	* pt-mat.cc (tm_row_const::tm_row_const_rep::do_init_element):
	Also append empty elements to the list of elements to be parsed.
	(tree_matrix::rvalue): Use new concatenation binary operators.

	* data.cc (cat_add_dims): Delete (now dim_vector::concat).
	(do_cat): Use new concatenation binary operators.

	* ov-typeinfo.cc (cat_op_fcn): Instantiate the array of cat functions.
	(register_cat_op, do_register_cat_op, do_lookup_cat_op): New functions.
	(cat_ops): Lookup table of binary concatentaion operators.

	* ov-typeinfo.h (lookup_cat_op): New function.

	* ov.cc (gripe_cat_op, gripe_cat_op_conv, do_cat_op): New functions.

	* ov.h (cat_op_fcn): Definition.
	(resize, do_cat_op): New functions.

	* ov-intx.h (resize): New_function

	* version.h (OCTAVE_API_VERSION): Bump version to api-v9.

	* Cell.cc, Cell.h, oct-map.cc, oct-map.h (cat): Delete.
	(concat): New function.

	* Cell.cc, Cell.h (insert): New function

	* ov-base.cc, ov-base.h, ov-scalar.h, ov-complex.h, ov-bool.h, 
	ov-range.h, ov-base-mat.h, (resize): New function.


2004-07-23  John W. Eaton  <jwe@octave.org>

	* symtab.cc (whos_parameter): Move decl here, from symtab.h.

2004-07-23  Oyvind Kristiansen  <oyvinkri@stud.ntnu.no>

	* symtab.cc (symbol_record::subsymbols_list): New method.
	(symbol_record::maybe_list): Call to subsymbols_list and merge
	result with the original list of symbols.

	* symtab.cc (symbol_record::make_dimensions_string): New method.
	(symbol_record::print_symbol_info_line): Print N-d info.  Output
	for long format now under control of format string.
	(symbol_table::maybe_list): Headers to whos listing updated.
	Also print footer info.
	(symbol_table::print_descriptor): Method printing the 
	header of whos listings.
	(symbol_table::parse_whos_line_format): New method.
	(whos_line_format, Vwhos_line_format): New built-in variables.
	(symbols_of_symtab): DEFVAR them.
	(symbol_record::nelem, symbol_record::symbol_def::nelem,
	symbol_record::byte_size, symbol_record::symbol_def::byte_size):
	New methods.
	(symbol_record::dimensions_string_req_first_space): New	method.
	(symbol_record::dimensions_string_req_total_space): New	method.
	* symtab.h (whos_parameter): New struct.  Container for one
	parameter in whos_line_format.

2004-07-22  Paul Kienzle  <pkienzle@users.sf.net>

	* DLD-FUNCTIONS/dassl.cc (Fdassl): Fix doc string.
	* ov-struct.cc (Fstruct): Likewise.
	* symtab.cc (Fdebug_symtab_lookups): Likewise.

2004-07-22  David Bateman  <dbateman@free.fr>

	* data.cc (Fsize): Return 1 for dimensions exceeding ndim.

	* ov.cc (octave_value::octave_value (const ArrayN<double>)):
	New constructor.
	* ov.h: Provide decl.
	* ov-cx-mat.h (octave_complex_matrix (const ArrayN<Complex>&)):
	New constructor.
	* ov-re-mat.h (octave_complex_matrix (const ArrayN<double>&)):
	New constructor.

	* ov-re-mat.h (octave_matrix(const ArrayN<double>&)): New constructor
	* pt-loop.cc (DO_ND_LOOP): New macro for use of NDArray in for loop.
	(tree_simple_for_command::eval): Use it, and allow iteration over
	cell arrays.

2004-07-12  John W. Eaton  <jwe@octave.org>

	* ov-intx.h: N-d array and scalar extractor functions take no args.

	* ov.h (octave_value::int8_scalar_value,
	octave_value::int16_scalar_value, octave_value::int32_scalar_value,
	octave_value::int64_scalar_value, octave_value::uint8_scalar_value,
	octave_value::uint16_scalar_value, octave_value::uint32_scalar_value,
	octave_value::uint64_scalar_value): New functions.
	* ov-base.cc (octave_base_value::int8_scalar_value,
	octave_base_value::int16_scalar_value,
	octave_base_value::int32_scalar_value,
	octave_base_value::int64_scalar_value,
	octave_base_value::uint8_scalar_value,
	octave_base_value::uint16_scalar_value,
	octave_base_value::uint32_scalar_value,
	octave_base_value::uint64_scalar_value): New functions.
	* ov-base.h: Provide decls.

	* lex.l: (Vtoken_count): New static variable.
	(COUNT_TOK_AND_RETURN): New macro.  Use it everywhere a token is
	returned to the parser.
	(F__token_count__): New function.

2004-06-25  John W. Eaton  <jwe@octave.org>

	* OPERATORS/op-int-conv.cc: Add conversions for range type.

2004-06-17  John W. Eaton  <jwe@octave.org>

	* bitfcns.cc (bitfcns): New file.
	* Makefile.in (DIST_SRC): Add it to the list.

2004-06-16  John W. Eaton  <jwe@octave.org>

	* OPERATORS/op-int.h: New file.
	* OPERATORS/op-i16-i16.cc, OPERATORS/op-i8-i8.cc,
	OPERATORS/op-ui32-ui32.cc, OPERATORS/op-i32-i32.cc,
	OPERATORS/op-int-conv.cc, OPERATORS/op-ui64-ui64.cc,
	OPERATORS/op-i64-i64.cc, OPERATORS/op-ui16-ui16.cc,
	OPERATORS/op-ui8-ui8.cc: Use new macros from op-int.h.

2004-06-14  John W. Eaton  <jwe@octave.org>

	* pr-output.h, pr-output.cc (octave_print_conv): New traits class.
	(template <class T> void octave_print_internal (std::ostream&,
	const intNDArray<T>&, bool, int),
	(template <class T> void octave_print_internal (std::ostream&,
	const octave_int<T>&, bool)): New template functions.
	Instantiate versions for new int types.

	* ov-typeinfo.h (octave_value_typeinfo::type_conv_ops):
	New data member.
	(octave_value_typeinfo::register_type_conv_op,
	octave_value_typeinfo::lookup_type_conv_op,
	octave_value_typeinfo::do_register_type_conv_op,
	octave_value_typeinfo::do_lookup_type_conv_op): New functions.

	* ov-re-mat.cc (Fdouble): New function.

	* ov-range.h (octave_range::reshape): Reshape array_value, not
	matrix_value.

	* ov-base-scalar.h (octave_base_scalar<ST>::all,
	octave_base_scalar<ST>::any, octave_base_scalar<ST>::is_true): Use
	ST() instead of 0.0.

	* ov-base-mat.h (octave_base_matrix<MT>::byte_size): New function.
	
	* ops.h (INSTALL_COLNVOP, DEFCONVFNX, DEFDBLCONVFN, DEFCONVFN,
	DEFCONVFN2): New macros.

	* DLD-FUNCTIONS/filter.cc (Ffilter): Kluge type conversions.

	* ov.cc (install_types): Register new integer types.

	* ov.h, ov.cc (octave_value::octave_value (const octave_int8&),
	octave_value::octave_value (const octave_uint8&),
	octave_value::octave_value (const octave_int16&),
	octave_value::octave_value (const octave_uint16&),
	octave_value::octave_value (const octave_int32&),
	octave_value::octave_value (const octave_uint32&),
	octave_value::octave_value (const octave_int64&),
	octave_value::octave_value (const octave_uint64&),
	octave_value::octave_value (const int8NDArray&),
	octave_value::octave_value (const uint8NDArray&),
	octave_value::octave_value (const int16NDArray&),
	octave_value::octave_value (const uint16NDArray&),
	octave_value::octave_value (const int32NDArray&),
	octave_value::octave_value (const uint32NDArray&),
	octave_value::octave_value (const int64NDArray&),
	octave_value::octave_value (const uint64NDArray&)):
	New constructors.

	* ov.h (octave_value::internal_rep): New function.
	(DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA): Also define
	static_type_id, static_type_name, and static_class_name
	functions.

	* Cell.h (Cell::reshape (const dim_vector&)): New forwarding
	function for return type conversion.

	* ov-int16.cc, ov-int16.h, ov-int32.cc, ov-int32.h, ov-int64.cc,
	ov-int64.h, ov-int8.cc, ov-int8.h, ov-uint16.cc, ov-uint16.h,
	ov-uint32.cc, ov-uint32.h, ov-uint64.cc, ov-uint64.h, ov-uint8.cc,
	ov-uint8.h, ov-type-conv.h, ov-int-traits.h,
	OPERATORS/op-int-conv.cc, OPERATORS/op-double-conv.cc,
	OPERATORS/op-i16-i16.cc, OPERATORS/op-i32-i32.cc,
	OPERATORS/op-i64-i64.cc, OPERATORS/op-i8-i8.cc,
	OPERATORS/op-ui16-ui16.cc, OPERATORS/op-ui32-ui32.cc,
	OPERATORS/op-ui64-ui64.cc, OPERATORS/op-ui8-ui8.cc: New files.
	Makefile.in: Add them to the appropriate lists.

2004-06-03  John W. Eaton  <jwe@octave.org>

	* ov-fcn-handle.h (octave_function_handle::is_matrix_type,
	octave_function_handle::is_numeric_type,
	octave_function_handle::is_constant,
	octave_function_handle::is_true): New functions.
	(octave_function_handle::is_defined): Delete (inherited version is
	OK).

2004-06-03  David Bateman  <dbateman@free.fr>

	* DLD-FUNCTIONS/filter.cc: Fix for length(a)=1 && length(b)=2 case.

2004-05-07  John W. Eaton  <jwe@octave.org>

	* ov.cc (octave_value::print_with_name): Only print name tag if
	Vprint_answer_id_name is true.

	* octave.cc (intern_argv): Insert __nargin__ in top_level_sym_tab
	instead of making it a builtin variable.  Mark it static.
	* ov-usr-fcn.cc (octave_user_function::install_automatic_vars):
	Mark local automatic variables static.

2004-04-30  John W. Eaton  <jwe@octave.org>

	* oct-stream.cc (octave_base_stream::clearerr): New function.
	(octave_stream::clearerr): New function.
	(seek (long, int)): Call clearerr here.
	* oct-stdstrm.h (octave_stdiostream::clear): New function.
	* c-file-ptr-stream.h (c_file_ptr_buf::clear,
	i_c_file_ptr_stream::clear, o_c_file_ptr_stream::clear,
	io_c_file_ptr_stream::clear): New functions.

2004-04-29  David Bateman  <dbateman@free.fr>

	* load-save.cc (Fload, Fsave): Accept -mat as well as -mat-binary.

2004-04-27  David Bateman  <dbateman@free.fr>

	* DLD-FUNCTIONS/sort.cc: Add missing "class" keywords to template
	instantiations.

2004-04-22  John W. Eaton  <jwe@octave.org>

	* pt-plot.cc (Fclearplot): Temporarily turn off automatic_replot.
	Clear display after resetting title, labels, etc.

2004-04-22  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-colon.cc (tree_colon_expression::rvalue): Also check for
	error_state after evaluating each subexpression.

2004-04-22  David Bateman  <dbateman@free.fr>

	* ov-base-scalar.h (octave_base_scalar<ST>::permute): New function.

	* ov-base-mat.cc (octave_base_matrix<MT>::is_true): Make N-d aware.

2004-04-22  John W. Eaton  <jwe@octave.org>

	* oct-stream.cc (printf_value_cache::curr_value): Now NDArray.
	(printf_value_cache::double_value): Extract N-d array, not Matrix.

2004-04-21  John W. Eaton  <jwe@octave.org>

	* parse.y (function2): Pass id name to frob_function.  Delete id.
	(frob_function): Accept function name instead of identifier.
	Don't try to rename symbol table entry.  Lookup symbol record for
	function name here.  Insert name in symbol table if needed.
	Operate on symbol record instead of identifier.

2004-04-21  David Bateman  <dbateman@free.fr>

	* DLD_FUNCTIONS/fft.cc(do_fft): Correctly initialize the variable dim
	for scalar arguments.

	* DLD-FUNCTIONS/minmax.cc: Handle single vector arg correctly.

2004-04-20  John W. Eaton  <jwe@octave.org>

	* ls-mat-ascii.cc (read_mat_ascii_data): Prepend "X" to keywords.
	Only drop text after last "." in name.

	* lex.l (is_keyword): New function.
	(Fiskeyword): Use it.
	* lex.h: Provide decl.

	* lex.l (is_keyword_token): Rename from is_keyword.

2004-04-16  John W. Eaton  <jwe@octave.org>

	* file-io.cc (maybe_warn_interface_change): New function.
	(fopen_mode_to_ios_mode): Use it.

2004-04-16  Paul Kienzle  <pkienzle@users.sf.net>

	* file-io.cc (fopen_mode_to_ios_mode):  Default to binary mode.
	(Ffopen): Document 't' and 'b' mode flags.

2004-04-16  John W. Eaton  <jwe@octave.org>

	* Makefile.in (DLD_XSRC): Add gcd.cc to the list.

2004-04-16  David Bateman  <dbateman@free.fr>

	* DLD-FUNCTIONS/gcd.cc: New file.

2004-04-15  David Bateman  <dbateman@free.fr>

	* src/ov-ch-mat.h: convert_to_str_interal returns charNDArray.

2004-04-12  John W. Eaton  <jwe@octave.org>

	* version.h (OCTAVE_BUGS_STATEMENT): Bug list is now bug@octave.org.

2004-04-08  John W. Eaton  <jwe@octave.org>

	* ov-base-mat.cc (octave_base_matrix<MT>::do_index_op): Quit early
	if an error occurs when creating index vector object.

	* ov.cc (octave_value::numeric_assign): Always call maybe_mutate
	on return value.

2004-04-06  David Bateman  <dbateman@free.fr>

  	* DLD_FUNCTIONS/sort.cc: Use the new template sort class, adapt for
	N-d arrays, and allow optional dim argument.

	* DLD_FUNCTIONS/fftn.cc: Save result of transpose operation.
	Check for failure of transpose.

2004-04-02  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-bool.h (octave_bool::bool_array_value): New function.

	* ov-base-mat.cc (octave_base_matrix<MT>::subsasgn): Don't allow
	expressions like x(i)(j) or x(i){j} when x is empty.

	* load-save.cc (get_file_format): Error if file does not exist.
	(Fload): Also complain here if specific file type is specified and
	file does not exist.

2004-04-02  Quentin Spencer  <qspencer@ieee.org>

	* parse.y: Use persistent instead of static in warnings messages.

2004-04-02  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-decl.cc (tree_static_command::do_init): Initialize to empty
	matrix by default.

2004-04-02  David Bateman  <dbateman@free.fr>

	* ov-re-mat.cc (octave_matrix::convert_to_str_internal):
	Return charNDArray.
	* ov-bool-mat.cc (octave_bool_matrix::convert_to_str_internal):
	Call array_value.
	
	* DLD-FUNCTIONS/besselj.cc, DLD-FUNCTIONS/betainc.cc,
	DLD-FUNCTIONS/gammainc.cc, DLD-FUNCTIONS/minmax.cc,
	DLD-FUNCTIONS/filter.cc:
	Convert for N-d array, better Matlab compatibility.

	* load-save.cc (Fload): Better handling of non existent files.
	
2004-03-19  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-list.cc (octave_list::subsref): Correctly create return value.
	Return comma-separate list if {-style indexing extracts more than
	one value.

2004-03-12  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* version.h (OCTAVE_VERSION): Now 2.1.57.
	(OCTAVE_API_VERSION): Now api-v8.

	* ov-cell.cc (octave_cell::save_hdf5): Handle empty cells.
	(octave_cell::load_hdf5): Likewise.

2004-03-11  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-base-mat.cc (octave_base_matrix<MT>::subsasgn): If empty,
	allow type conversion when indexing with "{" and ".".

2004-03-10  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pr-output.cc (init_format_state): Also set compact_format.
	(pr_col_num_header): Print one newline character before column
	headers for compact format.

2004-03-09  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* version.h (OCTAVE_WWW_STATEMENT): New macro.
	(OCTAVE_STARTUP_MESSAGE): Include it here.
	(OCTAVE_NAME_VERSION_COPYRIGHT_COPYING_WARRANTY_AND_BUGS): And here.

	* octave.cc (verbose_usage): Use OCTAVE_WWW_STATEMENT here.

	* DLD-FUNCTIONS/find.cc (find_nonzero_elem_idx): If there are no
	nonzero elements, return [](0x1) or [](1x0), not [](0x0).
	Correctly preserve orientation for row vectors.

2004-03-08  Petter Risholm  <risholm@idi.ntnu.no>

	* data.cc (do_cat): Check for length of args before getting dimension.
	New arg, fname.  Print usage message corresponding to fname.
	(Fcat): Pass "cat" as fname arg to do_cat.
	(Fhorzcat): Pass "horzcat" as fname arg to do_cat.
	(Fvertcat): Pass "vertcat" as fname arg to do_cat.

2004-03-05  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* version.h (OCTAVE_VERSION): Now 2.1.56.
	(OCTAVE_API_VERSION): Now api-v7.

2004-03-04  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-struct.cc (Frmfield): New function

	* oct-map.h (Octave_map::contains): Return bool, not int.

	* ov-cell.cc (Fiscellstr): No error if arg is not a cell array.
	(Fcellstr): Return arg if it is already a cell array of character
	strings.

2004-03-03  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-bool.cc (octave_bool::load_hdf5, octave_bool::save_hdf5):
	Avoid unnecessary casts.
	* ov-bool-mat.cc (octave_bool_matrix::load_hdf5,
	octave_bool_matrix::save_hdf5): Likewise.
	* ov-cell.cc (octave_cell::load_hdf5, octave_cell::save_hdf5):
	Likewise.
	* ov-complex.cc (octave_complex::load_hdf5,
	octave_complex::save_hdf5): Likewise.
	* ov-cx-mat.cc (octave_complex_matrix::load_hdf5,
	octave_complex_matrix::save_hdf5): Likewise.
	* ov-range.cc (octave_range::load_hdf5, octave_range::save_hdf5):
	Likewise.
	* ov-re-mat.cc (octave_matrix::load_hdf5, octave_matrix::save_hdf5):
	Likewise.
	* ov-scalar.cc (octave_scalar::load_hdf5, octave_scalar::save_hdf5):
	Likewise.
	* ov-str-mat.cc (octave_char_matrix_str::load_hdf5,
	octave_char_matrix_str::save_hdf5): Likewise.

2004-03-03 David Bateman <dbateman@free.fr>

	* ov-cell.cc (octave_cell::save_hdf5, octave_cell::load_hdf5):
	Make N-d aware.

2004-03-03  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* parse.y: Delete spaces surrounding = in %name-prefix directive.

2004-03-01  Petter Risholm  <risholm@idi.ntnu.no>

        * Cell.cc (Cell::cat): New function.
        * Cell.h: Provide decl.

        * oct-map.cc (Octave_map::cat): New function.
        * oct-map.h: Provide decl.

        * data.cc (Fcat): Speedup implementation.

        * data.cc (Fhorzcat, Fvertcat): New functions.

        * Array-tc.cc: Instantiate cat function.

2004-03-01  David Bateman  <dbateman@free.fr>

	* ls-hdf5.cc (save_hdf5_empty, load_hdf5_empty): New functions
	to save/load empty matrices keeping their dimensions.
	* ls-hdf5.h (save_hdf5_empty, load_hdf5_empty): Provide decls.

	* ov-re-mat.cc (save_hdf5, load_hdf5): Cleanup, check empty matrix.
	* ov-cx-mat.cc (save_hdf5, load_hdf5): Ditto.
	* ov-bool-mat.cc (save_hdf5, load_hdf5): Ditto.

	* ov-str-mat.cc (save_ascoo, load_ascii, save_binary,
	load_binary, save_hdf5, load_hdf5): Cleanup, check empty matrix,
	and save/load N-d arrays.
 
2004-02-27  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* octave.cc (execute_startup_files): Don't find current directory
	for absolute name of local_rc until after executing home_rc.

2004-02-24  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* input.cc (input_event_hook): Return type is now int.  Return 0.

	* file-io.cc (do_stream_open): Don't call ::error if stream can't
	be created.  Don't call ::fopen if arch is invalid.  Set error
	state for stream if fopen fails.
	* oct-stream.h (octave_stream::error (const char *)): New function.
	(octave_stream::error (const std::string&)): Now public.

2004-02-23  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* file-io.cc (Fftell): Return long integer instead of streamoff_array.
	(do_stream_open): Create octave_stdiostream instead of octave_fstream.

	* oct-fstrm.cc (octave_fstream::seek, octave_fstream::tell):
	Always fail.  Signatures now match C library functionsb.
	* oct-iostrm.cc (octave_base_iostream::seek,
	octave_base_iostream::tell): Likewise.
	* oct-strstrm.cc (octave_base_strstream::seek,
	octave_base_strstream::tell): Likewise.

	* oct-stream.cc (octave_stream::seek, octave_stream::tell):
	Signatures now match C-library functions.

	* oct-stdstrm.cc (octave_stdiostream::seek, octave_stdiostream::tell):
	Call io_c_file_ptr_stream::seek and tell.  Signatures now match
	C-library functions.

	* c-file-ptr-stream.h (c_file_ptr_buf::seek, c_file_ptr_buf::tell): 
	New functions.
	(i_c_file_ptr_stream::seek, i_c_file_ptr_stream::tell): Likewise.
	(o_c_file_ptr_stream::seek, o_c_file_ptr_stream::tell): Likewise.
	(io_c_file_ptr_stream::seek, io_c_file_ptr_stream::tell): Likewise.

2004-02-20  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* version.h (OCTAVE_VERSION): Now 2.1.55.
	(OCTAVE_API_VERSION): Now api-v6.

	* sighandlers.cc (sigfpe_handler, sigpipe_handler):
	Don't increment	octave_interrupt_state if it is less than 0.
	(sigint_handler): If octave_interrupt_state is less than zero,
	reset it.

	* pt-except.cc (do_catch_code): Call OCTAVE_QUIT here so the catch
	code won't run if an interrupt is pending.  Don't run catch code
	if octave_interrupt_state is less than zero.

2004-02-20  Per Persson  <persquare@mac.com>

	* Makefile.in (OCT_LINK_DEPS, OCTINTERP_LINK_DEPS):
	Include	$(LIBS) in the list before $(FLIBS).

2004-02-20  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pr-output.cc (octave_print_internal (std::ostream&, const
	Range&, bool, int)): Don't print values beyond the limits of the
	range.

	* sighandlers.cc (sigint_handler): Print message after two
	consecutive interrupts, dump core after three or more.

	* load-save.cc (dump_octave_core): Handle core size limit.
	Rename from save_user_variables.  Change all callers.
	(Fload, dump_octave_core, Fsave): Open HDF5 fils in binary mode.
	(do_save): Extract switch over file types to separate function.

	* load-save.cc (Voctave_core_file_limit): New variable.
	(octave_core_file_limit): New function.
	(symbols_of_load_save): Add DEFVAR for octave_core_file_limit.

	* load-save.cc (Voctave_core_file_name): New variable.
	(octave_core_file_name): New function.
	(symbols_of_load_save): Add DEFVAR for octave_core_file_name.

	* load-save.cc (Voctave_core_file_format):
	Rename from Voctave_core_format.
	(octave_core_file_format): Rename from octave_core_format.
	(symbols_of_load_save): Fix DEFVAR to match.

2004-02-19  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov.cc (Fsizeof): New function.

	* ov.h (octave_value::byte_size): New function.
	* ov-base.h (octave_base_value::byte_size): New function.
	* ov-base-scalar.h (octave_base_scalar::byte_size): New function.
	* ov-bool-mat.h (octave_bool_matrix::byte_size): New function.
	* ov-ch-mat.h (octave_char_matrix::byte_size): New function.
	* ov-cx-mat.h (octave_complex_matrix::byte_size): New function.
	* ov-re-mat.h (octave_matrix::byte_size): New function.
	* ov-range.h (octave_range::byte_size): New function.
	* ov-cell.cc (octave_cell::byte_size): New function.
	* ov-cell.h: Provide decl.
	* ov-struct.cc (octave_struct::byte_size): New function.
	* ov-struct.h: Provide decl.
	* ov-streamoff.h (octave_streamoff::byte_size): New function.
	* ov-list.cc (octave_list::byte_size): New function.
	* ov-list.h: Provide decl.

	* xpow.cc (elem_xpow (const Matrix&, double)):
	Convert both operands to Complex if any element of A is negative.
	(elem_xpow (const NDArray&, double)): Likewise.

2004-02-18  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* load-save.cc (Voctave_core_format): New static_variable.
	(octave_core_format): New function.
	(symbols_of_load_save): Add DEFVAR for octave_core_format.
	(get_save_format): Rename from get_default_save_format.
	Pass name of format as arg.  New optional arg, fallback_format.
	Change all uses.
	(save_user_variables): Use pass Voctave_core_format to
	get_save_format here.  Pass LS_BINARY as fallback_format.

	* sighandlers.cc (my_friendly_exit): New optional arg, save_vars.
	Only call save_user_variables if save_vars is true.
	(sigint_handler): If interactive, offer to abort and save
	workspace after three consecutive interrupts.
	(sigint_handler, sigpipe_handler, sigfpe_handler):
	Increment octave_interrupt_handler instead of setting it to 1.

2004-02-16  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* version.h (OCTAVE_VERSION): Now 2.1.54.
	(OCTAVE_API_VERSION): Now api-v5.

	* Makefile.in (DLD_XSRC): Always include fftw_wisdom.cc.

	* DLD-FUNCTIONS/fftw_wisdom.cc:
	Rename from DLD-FUNCTIONS/fft_wisdom.cc.
	(Vfftw_wisdom_prog): Delete extern decl.
	(Ffftw_wisdom): Rename from Ffft_wisdom.
	Use Vfftw_wisdom_prog instead of Vwisdom_prog.
	Always define function.  Signal error if not configured to use FFTW3.

	* defaults.cc (symbols_of_defaults): Rename WISDOM_PROGRAM to be
	FFTW_WISDOM_PROGRAM.
	(Vfftw_wisdom_prog): Rename from Vwisdom_prog.
	(fftw_wisdom_program): Rename from wisdom_program.
	For simplicity, always define FFTW_WISDOM_PROGRAM even when not
	using fftw3.
	(set_default_wisdom_prog): Look for OCTAVE_FFTW_WISDOM_PROGRAM in
	the environment instead of OCTAVE_WISDOM_PROGRAM.
	(set_default_fftw_wisdom_prog): Rename from set_default_wisdom_prog.
	* defaults.h.in (Vfftw_wisdom_prog): Provide extern decl.

2004-02-16 David Bateman <dbateman@free.fr>

	* DLD-FUNCTIONS/fft.cc: Adapt for Nd arrays, combine with ifft.cc.
	* DLD-FUNCTIONS/ifft.cc: Delete.
	* DLD-FUNCTIONS/fft2.cc: Adapt for Nd arrays, combine with ifft.cc.
	* DLD-FUNCTIONS/ifft2.cc: Delete.
	* DLD-FUNCTIONS/fftn.cc: New function for Nd FFT and inverse FFT.
	* DLD-FUNCTIONS/fft_wisdom.cc: New function to manipulate FFTW 
	wisdom.

	* Makefile.in: Remove ifft.cc and ifft2.cc.  Add fftn.cc and 
	ifftn.cc.  Make building of fft-wisdom.cc conditional on the 
	value of FFTW_LIBS.
	* defaults.cc (Vwisdom_prog): New variable
	(set_default_wisdom_prog, wisdom_prog): New functions.
	(symbols_of_defaults): Add DEFVAR for wisdom_prog.
	
2004-02-16  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-list.cc (octave_list::subsasgn): Call assign for Cell objects
	here, not the base octave_value::assign.

2004-02-15  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* lex.l (yywrap): Don't #undef this symbol.

2004-02-15  Petter Risholm  <risholm@stud.ntnu.no>

	* pt-mat.cc: Make [,] concatenation work for N-d arrays.

2004-02-15  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* data.cc (do_cat): Merge with Fcat.

2004-02-15  Petter Risholm  <risholm@stud.ntnu.no>

	* ov-cell.cc (Fstruct2cell): New function.

2004-02-14  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (OCTINTERP_LINK_DEPS, OCT_LINK_DEPS): Always define.

	* oct-conf.h.in: Add OCTAVE_CONF_DL_LD, OCTAVE_CONF_DL_LDFLAGS,
	and OCTAVE_CONF_MKOCTFILE_DL_LDFLAGS.
	Delete OCTAVE_CONF_MKOCTFILE_SH_LDFLAGS.

	* toplev.cc (octave_config_info): Delete MKOCTFILE_SH_LDFLAGS.
	Add DL_LD, DL_LDFLAGS, and MKOCTFILE_DL_LDFLAGS to the struct.

2004-02-14  Per Persson  <persquare@mac.com>

	* Makefile.in (%.oct): Use DL_LD instead of SH_LD to build .oct files.

2004-02-14  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-base-scalar.h (octave_base_scalar::squeeze): New function.

2004-02-13  Petter Risholm  <risholm@stud.ntnu.no>

	* data.cc (Fcat): New function.
	* data.cc (do_cat): New function.
	* data.cc (cat_add_dims): New function.

2004-02-13  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* toplev.cc (main_loop): Call octave_parse, not yyparse.
	* octave.cc (octave_main): Increment octave_debug, not yydebug.
	* parse.y (%name-prefix): New directive, set to "octave_".
	* parse.h: Provide declarations for octave_lex and octave_parse
	instead of yylex and yyparse.
	* lex.l (%option prefix): New directive, set to "_octave".
	Define yylval to be octave_lval.
	Move definitions of YY_INPUT, YY_FATAL_ERROR, TOK_RETURN,
	TOK_PUSH_AND_RETURN, BIN_OP_RETURN, XBIN_OP_RETURN here.
	* lex.h: From here.

2004-02-07  Petter Risholm  <risholm@stud.ntnu.no>

	* ov-struct.cc (Fcell2struct): New function.
	(cell2struct_check_args, cell2struct_construct_idx): Likewise.

2004-02-07  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-scalar.h (octave_scalar::empty_clone):
	Return empty octave_matrix, not an octave_scalar object.
	* ov-complex.h (octave_complex::empty_clone):
	Return empty octave_complex_matrix, not an octave_complex object.

2004-02-06  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-usr-fcn.h (octave_user_function::function_name): Delete.
	(octave_user_function::fcn_name): Delete unused data member.
	(octave_user_function::stash_function_name): Save name in
	tree_function::my_name instead of fcn_name.
	Change all uses of fcn_name to be my_name instead.

	* pt.h, pt.cc (tree::break_function): Now pointer to
	octave_function rather than octave_user_function object.

	* pt-bp.h (MAYBE_DO_BREAKPOINT): Use name instead of function_name
	to get name from curr_function.
	* pt-pr-code.cc (tree_print_code::visit_octave_user_function_header):
	likewise.
	* debug.cc (Fdbwhere, Fdbtype, ): Likewise
	* error.cc (pr_where): Likewise.
	* variables.cc (Fmlock, Fmunlock, Fmislocked): Likewise.
	(lookup_function, lookup_user_function,	link_to_builtin_or_function):
	Likewise, for curr_parent_function.

	* debug.cc (get_user_function, Fdbwhere):
	Cast curr_function to pointer to octave_user_function.

	* ov-mapper.cc (octave_mapper::do_multi_index_op):
	Save and restore curr_function here.
	* ov-builtin.cc (octave_builtin::do_multi_index_op): Likewise.

	* toplev.h, toplev.cc (curr_function, curr_parent_function): Now
	pointers to octave_function rather than octave_user_function objects.

	* ov-usr-fcn.h (octave_user_function::is_user_function): New function.
	* ov-fcn.h (octave_function::takes_varargs,
	octave_function::octave_va_start, octave_function::octave_va_arg,
	octave_function::octave_all_va_args,
	octave_function::takes_var_return, octave_function::octave_vr_val, 
	octave_function::is_user_function): New virtual functions.

2004-02-05  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-struct.cc (Fstruct): Use new Octave_map constructor to create
	structures with specified sizes but no keys.

	* ov-struct.cc (Fstruct): New function, from Paul Kienzle
	<pkienzle@users.sf.net> and Petter Risholm  <risholm@stud.ntnu.no>.

	* oct-map.h (Octave_map::Octave_map): Allow dimension to be
	specified for map with no keys.

	* ov-struct.cc (fieldnames): Return 0x1 cell array if no fieldnames.

2004-02-05  Petter Risholm  <risholm@stud.ntnu.no>

	* ov-base-mat.cc (octave_base_matrix<MT>::do_index_op):
	Don't fail if number of indices is greater than 2.

2004-02-05  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* data.cc (Fsize): Update for N-d objects.

	* ls-mat5.cc (read_mat5_binary_element): Force conversion.

	* ov-base.cc (octave_base_value::char_matrix_value):
	Pass force arg to convert_to_str.

	* data.cc (Freshape): Chop trailing singletons from new dimensions.

2004-02-03  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* error.cc (defun_usage_message): Only accept one arg, a const
	std::string& object.  Change all uses.  Pass nul-terminated string
	to defun_message_1.
	(defun_usage_message_1): New function, equivalent to old
	defun_usage_message.

	* ov-base.cc (nint_value): Use fix, not NINT.
	(INT_CONV_METHOD): Likewise, use fix instead of just casting.

	* data.cc (make_diag): Use int_value instead of nint_value to
	extract k for Matlab compatibility.
	(Flinspace): Likewise, for npoints.
	(fill_matrix): Likewise, for extracting dims.
	(Fsize): Likewise, for extracting dim argument.  Require int value.
	* utils.cc (get_dimensions): Likewise.  Use fix, not NINT.

2004-02-02  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* error.cc (verror, error_1): New arg, os.  Use this instead
	of always printing to std:cerr.  Change all callers.

	* error.cc (defun_usage_message): New function.
	* error.h: Provide decl.
	* defun.cc (print_usage): Use it to display error message.

	* error.cc (verror): New arg, save_last_error.  Change all callers.
	(usage): Set error_state after calling verror.

	* oct-map.cc (Octave_map::assign (const std::string, const Cell&)):
	Set dimensions to RHS dimensions, not 1x1.

2004-01-23  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-bool.cc, ov-cx-mat.cc, ov-re-mat.cc, ov-str-mat.cc:
	Include <vector>.
	* file-io.cc, ls-hdf5.cc, ls-mat4.cc, ls-mat5.cc, ls-oct-binary.cc:
	Include <vector>, not <memory> for new defn of OCTAVE_LOCAL_BUFFER.
	* load-save.cc, ls-mat-ascii.cc, ls-oct-ascii.cc
	No need to include <memory> now.

	* DLD-FUNCTIONS/eig.cc (Feig): Use new optional arg for EIG to
	avoid computing eigenvectors if not requested.
	Based on a patch from David Bateman  <dbateman@free.fr>.

2004-01-23  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-cell.cc (all_strings): Always compute total required length
	of retval.

2004-01-22  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* version.h (OCTAVE_VERSION): Now 2.1.53.
	(OCTAVE_API_VERSION): Now api-v4.

	* error.cc (pr_where): New arg, print_code with default value true.
	(warning): Call pr_where with second arg false.

	* file-io.cc (Ffrewind): Only return value if nargout > 0.
	(Ffprintf): Likewise.
	(Fprintf): Likewise.

	* file-io.cc (Ffrewind): Return 0 for success, -1 for failure.
	Make docs match.

	* Makefile.in (distclean): Remove DOCSTRINGS.
	(maintainer-clean): Remove $(OPT_HANDLERS).

2004-01-21  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-cell.cc (octave_cell::subsref): Make '{' case N-d aware.

	* ov-scalar.cc (streamoff_array_value): New function.
	* ov-scalar.h: Provide decl.

	* OPERATORS/op-streamoff.cc (STREAMOFF_COMP_OP): New maco.
	Use it to define streamoff by matrix, streamoff by scalar, scalar
	by streamoff, and matrix by streamoff comparison operators.
	(install_streamoff_ops): Install them.

	* Cell.h (Cell::operator ()): Delete (we inherit them from Array<T>).
	(maybe_resize, elem_internal): Delete unused functions.

	* ls-mat5.cc (write_mat5_cell_array): Cell& arg is now const.

2004-01-20  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* variables.cc (is_valid_function): If warn, also print error
	message if arg is not a string.

	* ov-usr-fcn.cc (Fnargin, Fnargout): New functions.

	* octave.cc (intern_argv): Lookup __nargin__ instead of nargin.
	* ov-usr-fcn.cc (octave_user_function::install_automatic_vars):
	Lookup __nargin__ and __nargout__ instead of nargin and nargout.

	* variables.h (at_top_level): Now extern.
	(lookup_user_function): New function.
	* variables.cc: Provide decls.

	* ov.h, ov.cc (octave_value::user_function_value):
	New virtual function.
	* ov-base.h, ov-base.cc (octave_base_value::user_function_value):
	Provide default version.
	* ov-usr-fcn.h (octave_user_function::user_function_value):
	New function.

	* ov-re-mat.cc (complex_array_value): New function.
	* ov-re-mat.h: Provide decl.

	* ov-cell.cc (Fiscellstr): Don't return value on usage error.

	* error.cc: (symbols_of_error): Delete DEFVAR for error_text.
	Define __error_text__ and error_text as aliases for lasterr.

	* error.cc (bind_global_error_variable,	clear_global_error_variable):
	Delete.
	* variables.h: Delete decls.

	* parse.y (Feval, Fevalin): Don't call bind_global_error_variable.
	Don't add clear_global_error_variable to the unwind_protect stack.
	Increment buffer_error_messages before evaluating "eval" code,
	decrement it before evaluating "catch" code.	

	* pt-except.cc (do_catch_code): Don't call bind_global_error_variable.
	Don't add clear_global_error_variable to the unwind_protect stack.
	Decrement buffer_error_messages here.
	(tree_try_catch_command::eval): Increment buffer_error_messages here.

	* error.cc, error.h (buffer_error_messages): Now an int.

2004-01-16  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* toplev.cc (octave_config_info): Add float_format,
	words_big_endian, and words_little_endian to the struct.

2004-01-14  David Bateman  <dbateman@free.fr>
	
	* ov-cell.cc (octave_cell::load_hdf5): Fix for HDF5 version 1.6
	handling of number of objects in a group.
	* ov-struct.cc (octave_struct::load_hdf5): Likewise.
	* ov-list.cc (octave_list::load_hdf5): Likewise.
	* ls-hdf5.cc (read_hdf5_data): Likewise.

2004-01-13  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ls-hdf5.h: Surround contents with #if defined (HAVE_HDF5).

2004-01-10  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* oct-stream.cc (convert_to_valid_int, get_size):
	Use lo_ieee_is_NaN_or_NA instead of xisnan.
	(octave_base_stream::do_printf): Correct special case check for
	NA, NaN, Inf, or out of range integers.

	* dirfns.cc (Fglob): Always return list of files as a cell array.
	(Freaddir): Likewise.

	* dirfns.cc (Fls): If nargout > 0, return ls output.

2004-01-09  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* load-save.cc (Fload): Assume -force by default.

	* oct-stream.cc (octave_base_stream::write):
	Allow fwrite (fid, "some string") to work.

	* toplev.cc (Fcomputer): Delete.
	(octave_config_info): Add unix and windows fields to the struct.

2004-01-06  David Bateman  <dbateman@free.fr>

	* ls-hdf5.cc: Fix handle of old versus new format files.

 	* ls-oct-binary.cc: Split the load/save functionality into the types
 	themselves.  Backward compatibility maintained.
	
 	* ov-struct.cc (save_binary, load_binary):
 	* ov-str-mat.cc (save_binary, load_binary):
 	* ov-scalar.cc (save_binary, load_binary):
 	* ov-re-mat.cc (save_binary, load_binary):
 	* ov-range.cc (save_binary, load_binary):
 	* ov-list.cc (save_binary, load_binary):
 	* ov-cx-mat.cc (save_binary, load_binary):
 	* ov-complex.cc (save_binary, load_binary):
 	* ov-cell.cc (save_binary, load_binary):
 	* ov-bool.cc (save_binary, load_binary):
 	* ov-bool-mat.cc (save_binary, load_binary):
	New functions for loading and saving structures in octave binary
	format.

 	* ov-str-mat.h (save_binary, load_binary):
 	* ov-scalar.h (save_binary, load_binary):
 	* ov-re-mat.h (save_binary, load_binary):
 	* ov-range.h (save_binary, load_binary):
 	* ov-list.h (save_binary, load_binary):
 	* ov-cx-mat.h (save_binary, load_binary):
 	* ov-complex.h (save_binary, load_binary):
 	* ov-cell.h (save_binary, load_binary):
 	* ov-bool.h (save_binary, load_binary):
 	* ov-bool-mat.h (save_binary, load_binary):
 	* ov-struct.h (save_binary, load_binary):
	Provide decls.

 	* ov.h (save_binary, load_binary): New virtual functions.

 	* ov-base.cc (save_binary, load_binary): New functions, for fallbacks
 	with error message.
 	* ov-base.h: Provide decls.

 	* load-save.cc: Remove "-import" flag and make it the default.
 	* load-save.h: Likewise.

 	* ls-oct-ascii.cc: Split the load/save functionality into the types
 	themselves. Save "string" variables with the name "string" rather than
 	string array. Backward compatiability maintained in ov-cs-mat.cc.
 	Include new version of extract_keyword that halts if the next value is
 	invalid rather that searching for the next valid value.
 
 	* ls-oct-ascii.h: Extract_keyword header updated.
	Include definition of OCT_RBV and CELL_ELT_TAG, since they are now
	used elsewhere.
 
 	* ls-hdf5.cc: Split load/save functionality into the types themselves.
 	The hdf5 format is changed so that each object is a group with a
 	dataset "type" being a string with the octave_value type and the
 	dataset or group "value" containing the value of the data, struct, etc.
 	This allows extensibility. Backward compatibility is maintained. The
 	"import" flag is now assumed to always be true and has been removed.
  
 	* ov-struct.cc (save_ascii, load_ascii, save_hdf5, load_hdf5): 
 	* ov-str-mat.cc (save_ascii, load_ascii, save_hdf5, load_hdf5): 
 	* ov-scalar.cc (save_ascii, load_ascii, save_hdf5, load_hdf5):
	* ov-re-mat.cc (save_ascii, load_ascii, save_hdf5, load_hdf5):
 	* ov-range.cc (save_ascii, load_ascii, save_hdf5, load_hdf5):
 	* ov-list.cc (save_ascii, load_ascii, save_hdf5, load_hdf5):
 	* ov-cx-mat.cc (save_ascii, load_ascii, save_hdf5, load_hdf5):
 	* ov-complex.cc (save_ascii, load_ascii, save_hdf5, load_hdf5):
 	* ov-cell.cc (save_ascii, load_ascii, save_hdf5, load_hdf5):
 	* ov-bool.cc (save_ascii, load_ascii, save_hdf5, load_hdf5):
 	* ov-bool-mat.cc (save_ascii, load_ascii, save_hdf5, load_hdf5):
 	New functions for loading and saving structures in octave ascii
	and hdf5 formatted files.

 	* ov-struct.h (save_ascii, load_ascii, save_hdf5, load_hdf5): 
 	* ov-str-mat.h (save_ascii, load_ascii, save_hdf5, load_hdf5): 
 	* ov-scalar.h (save_ascii, load_ascii, save_hdf5, load_hdf5):
 	* ov-re-mat.h (save_ascii, load_ascii, save_hdf5, load_hdf5):
 	* ov-range.h (save_ascii, load_ascii, save_hdf5, load_hdf5):
 	* ov-list.h (save_ascii, load_ascii, save_hdf5, load_hdf5):
 	* ov-cx-mat.h (save_ascii, load_ascii, save_hdf5, load_hdf5):
 	* ov-complex.h (save_ascii, load_ascii, save_hdf5, load_hdf5):
 	* ov-cell.h (save_ascii, load_ascii, save_hdf5, load_hdf5):
 	* ov-bool.h (save_ascii, load_ascii, save_hdf5, load_hdf5):
 	* ov-bool-mat.h (save_ascii, load_ascii, save_hdf5, load_hdf5):
 	Provide decls.
 
 	* ov-typeinfo.cc (octave_value_typeinfo::do_lookup_type): Include
 	make_unique so that the stored type value is not used for all loaded
 	variables.
 
 	* ov.h: (save_ascii, load_ascii, save_hdf5 and load_hdf5):
	New virtual functions.
 	
  	* ov-base.cc (save_ascii, load_ascii, save_hdf5, load_hdf5):
	New functions, for fallbacks with error message.
	* ov-base.h: Provide decls.

2003-12-22  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-cx-mat.cc (octave_complex_matrix::assign): RHS arg is N-d.
	* ov-cx-mat.h: Fix decl.

	* ops.h (DEFNDASSIGNOP_FN): New macro.
	* OPERATORS/op-bm-b.cc, OPERATORS/op-bm-bm.cc,
	OPERATORS/op-cm-cm.cc, OPERATORS/op-cm-cs.cc,
	OPERATORS/op-cm-m.cc, OPERATORS/op-cm-s.cc, OPERATORS/op-m-m.cc,
	OPERATORS/op-m-s.cc: Use it instead of DEFASSIGNOP_FN.

2003-12-19  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* xpow.cc (xpow (double, double)): Avoid apparent GNU libm bug.

2003-12-17  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* symtab.cc (symbol_record::print_symbol_info_line):
	Also check is_static to see if a symbol can be cleared.

2003-12-16  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* lex.l (is_keyword): Also allow varargout_kw if
	lexer_flags.looking_at_return_list is false provided that we are
	defining a function and we haven't seen the function name yet.
	* parse.y (return_list): Don't require [] around varargout.

	* DLD-FUNCTIONS/find.cc (DO_FIND_OP): Delete macro.
	(find_to_fortran_idx): Delete.  Move guts of function to
	find_nonzero_elem_idx.
	(find_nonzero_elem_idx): Now a template function.  Handle overall
	array index here too.  Make it N-d aware.

	* pt-pr-code.cc (tree_print_code::visit_complex_for_command, 
	tree_print_code::visit_octave_user_function_header,
	tree_print_code::visit_matrix, tree_print_code::visit_cell,
	tree_print_code::visit_multi_assignment): Keep track of nearest
	[, {, or ( nesting level.
	(tree_print_code::visit_index_expression): Likewise.  Check nesting
	level to decide how to print index.
	(tree_print_code::reset): Also reset nesting level stack.

	* pt-pr-code.h (tree_print_code::nesting): New data member.
	(tree_print_code::tree_print_code): Initialize it.

	* ov-base-mat.h (octave_base_matrix::octave_base_matrix (const MT&)):
	If arg has no dimensions, resize to be 0x0.

2003-12-15  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* oct-map.cc (Octave_map::assign): Use Octave_map::contents member
	function instead of operator [].
	* ov-struct.cc (octave_struct::subsasgn): Likewise.
	* DLD-FUNCTIONS/time.cc (extract_tm): Likewise.

	* DLD-FUNCTIONS/time.cc	(mk_tm_map): Use Octave_map::assign member
	function instead of operator [].
	* DLD-FUNCTIONS/getrusage.cc (Fgetrusage): Likewise.
	* DLD-FUNCTIONS/getgrent.cc (mk_gr_map): Likewise.
	* DLD-FUNCTIONS/getpwent.cc (mk_pw_map): Likewise.
	* load-save.cc (do_load): Likewise.
	* ls-hdf5.cc (hdf5_read_next_data): Likewise.
	* ls-mat5.cc (read_mat5_binary_element): Likewise.
	* oct-map.cc (Octave_map::reshape): Likewise.
	* oct-map.cc (Octave_map::index): Likewise.
	* ov-fcn-handle.cc (Ffunctions): Likewise.
	* pt-idx.cc (make_arg_struct): Likewise.
	* sighandlers.cc (make_sig_struct): Likewise.
	* syscalls.cc (mk_stat_map): Likewise.
	* toplev.cc (Foctave_config_info): Likewise.

	* ls-hdf5.cc (add_hdf5_data): Temporary Octave_map is now const.
	* ls-mat5.cc (save_mat5_binary_element): Likewise.

	* oct-map.cc (Octave_map::assign (const std::string&, const
	octave_value&)): New function.
	* oct-map.h: Provide decl.
	(Octave_map::contents (const std::string&)): New function.
	(Octave_map::operator [] (const std::string&) const): Delete.
	(Octave_map::operator [] (const std::string&)): Delete.

2003-12-09  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* OPERATORS/op-cell.cc: Allow transpose for cell arrays.
	* OPERATORS/op-m-m.cc, OPERATORS/op-cm-cm.cc,
	OPERATORS/op-bm-bm.cc, OPERATORS/op-streamoff.cc,
	OPERATORS/op-str-str.cc: Improve error message for attempt to
	transpose N-d object.

2003-11-27  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-arg-list.cc (F__end__): Handle N-d objects.

2003-11-25  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* OPERATORS/op-b-bm.cc: New file.

	* OPERATORS/op-bm-b.cc (op_el_and, op_el_or): Define and install.
	* OPERATORS/op-bm-bm.cc (op_el_and, op_el_or, assign): Likewise.

	* ov-str-mat.cc (CHAR_MATRIX_CONV): New macro.
	* ov-str-mat.h (octave_char_matrix_str::double_value,
	octave_char_matrix_str::matrix_value,
	octave_char_matrix_str::array_value,
	octave_char_matrix_str::complex_value,
	octave_char_matrix_str::complex_matrix_value,
	(octave_char_matrix_str::complex_array_value): Use it.

	* ov-bool-mat.cc (default_numeric_conversion_function):
	Convert to NDArray, not Matrix.
	* ov-str-mat.cc (default_numeric_conversion_function): Likewise.

	* ov-range.h (octave_range::array_value): New function.
	(octave_range::complex_array_value): Likewise.
	* ov-ch-mat.h (charNDArray::array_value): New function.
	(charNDArray::complex_array_value): Likewise.
	* ov-str-mat.h (octave_char_matrix_str::array_value): Likewise.
	(octave_char_matrix_str::complex_value): Likewise.
	(octave_char_matrix_str::complex_matrix_value): Likewise.
	(octave_char_matrix_str::complex_array_value): Likewise.

	* mappers.cc (acosh, log, log10, sqrt):
	Use octave_Inf instead of DBL_MAX for range limit.

2003-11-24  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* version.h (OCTAVE_VERSION): Now 2.1.52.
	(OCTAVE_API_VERSION): Now api-v3.

	* DLD-FUNCTIONS/rand.cc (do_rand): Pass function name from arg
	list in calls to error.

	* ov-cs-list.cc, ov-cs-list.h (octave_cs_list::octave_cs_list):
	Explicitly initialize base class in constructors.

	* ov.h (octave_value::all_strings): Pass second arg to rep function.

	* ov.h (octave_value::string_value): Pass arg to rep function.

	* DLD-FUNCTIONS/dasrt.cc (dasrt_user_f): Delete unused arg names.
	* DLD-FUNCTIONS/rand.cc (Frand, Frandn): Likewise.
	* ls-hdf5.h (hdf5_streambase::hdf5_streambase): Likewise.
	* ls-hdf5.cc (read_hdf5_data): Likewise.
	* ls-utils.cc (get_save_type): Likewise.
	* parse.y (Fassignin): Likewise.
	* utils.cc (empty_arg): Likewise.
	* ov-usr-fcn.h (octave_user_function::subsref): Likewise.
	* ov-base-mat.h (octave_base_matrix::subsref): Likewise.
	* ov-mapper.h (octave_mapper::subsref): Likewise.
	* ov-builtin.h (octave_builtin::subsref): Likewise.
	* ov-complex.cc (octave_complex::complex_array_value): Likewise.
	* ov-cell.h (octave_cell::subsref): Likewise.
	* ov-base-scalar.h (octave_base_scalar::subsref): Likewise.
	* ov-struct.h (octave_struct::subsref): Likewise.
	* ov-range.h (octave_range::subsref): Likewise.
	* ov-list.h (octave_list::subsref): Likewise.
	* ov-base.cc (octave_base_value::print_info): Likewise.
	* pt-check.cc (tree_checker::visit_subplot_axes): Likewise.
	* pr-output.cc (octave_print_internal (std::ostream&, double, bool),
	octave_print_internal (std::ostream&, const Complex&, bool),
	octave_print_internal (std::ostream&, const ArrayN<std::string>&,
	bool, int): Likewise.
	* oct-stream.cc (octave_scan<> (std::istream&, const
	scanf_format_elt&, char*): Likewise
	* TEMPLATE-INST/Array-tc.cc (resize_fill_value<octave_value>):
	Likewise.
	* pt-bp.cc (tree_breakpoint::visit_octave_user_function,
	tree_breakpoint::visit_octave_user_function_header,
	tree_breakpoint::visit_octave_user_function_trailer,
	tree_breakpoint::visit_plot_limits,
	tree_breakpoint::visit_plot_range,
	tree_breakpoint::visit_subplot,
	tree_breakpoint::visit_subplot_axes,
	tree_breakpoint::visit_subplot_list,
	tree_breakpoint::visit_subplot_style,
	tree_breakpoint::visit_subplot_using): Likewise.
	* ov.cc (octave_value::column_vector_value,
	(octave_value::complex_column_vector_value,
	(octave_value::row_vector_value,
	octave_value::complex_row_vector_value,
	octave_value::do_non_const_unary_op): Likewise.

	* load-save.cc: Only include ls-hdf5.h if HAVE_HDF5 is defined.
	From Melqart <melqart@free.fr>.

	* pr-output.h (octave_fcn_handle::print_as_scalar): Delete.

	* pr-output.cc (octave_print_internal): New version for
	ArrayN<std::string> objects.
	* pr-output.h: Provide decl.
	* ov-fcn-handle.cc (octave_fcn_handle::print_raw): Use it.

	* OPERATORS/op-fcn-handle.cc: New file.
	* Makefile.in (OP_XSRC): Add it to the list.

	* ov-fcn-handle.h, ov-fcn-handle.cc (octave_fcn_handle):
	Now an array of function handle objects.

	* ov.h, ov.cc (octave_value::octave_value (const fcn_handle_array&),
	(octave_value::octave_value (octave_function *f, const std::string&)):
	New constructors.
	(octave_value::octave_value (const octave_fcn_handle&)): Delete.

	* ov-base-mat.cc (octave_base_matrix<T>::print_as_scalar):
	Check dims instead of rows and columns.

	* ov.h (octave_value::is_function_handle): New function.
	* ov-base.h (octave_base_value::is_function_handle): New function.

2003-11-23  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-bool-mat.h (octave_bool_matrix::array_value): Construct return
	value directly from matrix data member, not matrix.matrix_value ().

	* ov-re-mat.h (octave_matrix::index_vector): Construct idx_vector
	from NDArray, not Matrix.

	* ov-bool-mat.h (octave_bool_matrix::index_vector): Construct
	idx_vector from boolNDArray, not boolMatrix.

	* ov.cc (install_types): Also register dld function type.

	* OPERATORS/op-streamoff.cc: Install increment and decrement operators.
	* ov-streamoff.h (octave_streamoff::increment,
	octave_streamoff::decrement): New functions.

	* ov-streamoff.h, ov-streamoff.cc: Move streamoff_array class to
	liboctave/so-array.h and liboctave/so-array.cc.

	* oct-stream.cc (octave_stream::seek): Extract std::streamoff from
	tc_offset instead of int.

	* ov-re-mat.cc (octave_matrix::double_value): Use numel, not length.

	* ov-re-mat.cc (octave_matrix::streamoff_array_value): New function.
	* ov-re-mat.h: Provide decl.

	* ov-scalar.cc (octave_scalar::streamoff_value): New function.
	* ov-scalar.h: Provide decl.

	* ov.cc (octave_value::streamoff_array_value,
	octave_value::streamoff_value): New functions.
	* ov.h: Provide decls.

	* ov-base.cc (octave_base_value::streamoff_array_value,
	octave_base_value::streamoff_value): New functions.
	* ov-base.h: Provide decls.

	* ov-usr-fcn.cc (install_automatic_vars): Don't do anything unless
	sym_tab is defined.

	* ov-streamoff.h, ov-streamoff.cc, OPERATORS/op-streamoff.cc:
	New files.

	* ov-cell.h (octave_value_cell::is_matrix_type): New function.

	* ov-mapper.h (octave_mapper::octave_mapper): No copying.
	* ov-fcn.h (octave_function::octave_function): Likewise.
	* ov-usr-fcn.h (octave_function::octave_function): Likewise.
	* ov-builtin.h (octave_builtin::octave_builtin): Likewise.
	* ov-dld-fcn.h (octave_dld_function::octave_dld_function): Likewise.

2003-11-22  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-mapper.h (octave_mapper::octave_mapper): Make public.
	Provide copy constructor and assignment operator.
	* ov-fcn.h (octave_function::octave_function): Likewise.
	* ov-builtin.h (octave_builtin::octave_builtin): Likewise.
	* ov-dld-fcn.h (octave_dld_function::octave_dld_function): Likewise.

	* ov-typeinfo.cc (octave_value_typeinfo::register_type,
	octave_value_typeinfo::do_register_type): New arg, val.
	Save it	in vals array.
	(octave_value_typeinfo::lookup_type,
	octave_value_typeinfo::do_lookup_type): New functions.
	* ov-typeinfo.h: Provide decl.
	(octave_value_typeinfo::vals): New data member.
	(octave_value_typeinfo::octave_value_typeinfo): Initialize it.

	* ov.h (DEFINE_OV_TYPEID_FUNCTIONS_AND_DATA): Pass

	* ov.h (DEFINE_OV_TYPEID_FUNCTIONS_AND_DATA): Define register_type
	here.  Also pass an empty object of the to-be-registered type to
	register_type.
	(DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA): Declare register_type
	here, but don't define it.

2003-11-21  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-fcn-handle.h (octave_fcn_handle::octave_fcn_handle (void)):
	New constructor.

	* ov-usr-fcn.h (octave_user_function::octave_user_function):
	Delete decl for private constructor.

	* ov-str-mat.cc (octave_char_matrix_str::matrix_value):
	Conversion to matrix is an error unless explicitly forced.

	* ov-str-mat.cc (octave_char_matrix_str::double_value): New function.
	* ov-str-mat.h: Provide decl.

	* ov-file.cc (print_raw): Use parens around ?: conditional used on
	RHS of << output operator.

	* c-file-ptr-stream.cc (c_file_ptr_buf::seekoff,
	c_file_ptr_buf::seekpos): Can't use fseek here, so just fail (by
	returning -1) until we have a better solution.

	* oct-stream.cc (octave_stream::tell): Return std::streamoff, not long.
	* oct-iostrm.cc (octave_base_iostream::tell): Likewise.
	* oct-stdstrm.cc (octave_stdiostream::tell): Likewise.
	* oct-strstrm.cc (octave_base_strstream::tell): Likewise.
	* oct-stream.h, oct-iostrm.h, oct-stdstrm.h, oct-strstrm.h:
	Fix decls to match.

2003-11-20  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ls-mat-ascii.cc (get_lines_and_columns): Delete second arg in
	call to istream::seekg.

	* ov-mapper.cc (MAPPER_LOOP_2, any_element_less_than,
	any_element_greater_than, octave_mapper::apply):
	Handle N-d arrays.

2003-11-19  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ls-mat5.cc (read_mat5_binary_element, save_mat5_binary_element):
	Handle N-d arrays.

	* lex.l (next_token_is_index_op): New function.
	(handle_close_bracket): Use it.

	* ls-hdf5.cc, ls-mat-ascii.cc, ls-mat4.cc, ls-mat5.cc,
	ls-oct-ascii.cc, ls-oct-binary.cc, ls-utils.cc, ls-hdf5.h,
	ls-mat-ascii.h, ls-mat4.h, ls-mat5.h, ls-oct-ascii.h,
	ls-oct-binary.h, ls-utils.h: New files, extracted from load-save.cc.
	* Makefile.in: Add them to the appropriate lists.

2003-11-18  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pr-output.cc (octave_print_internal): Don't indent rows for
	plus_format.  Use pr_plus_format for Range type with plus_format.
	(plus_format_chars): New static variable.
	(set_format_style): Allow optional arg for plus format to set it.
	(pr_plus_format): Use it.

	* ov-bool.h (octave_bool::array_value,
	octave_bool::complex_array_value): New functions.

	* ov-base-mat.cc (octave_base_matrix<MT>::do_index_op):
	Ensure correct number of indices for Array indexing code.

2003-11-17  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* DLD-FUNCTIONS/qz.cc (qz): Use x.data()+offset instead of &a(i,j).
	First and third args for dlag2 are const.

	* DLD-FUNCTIONS/sort.cc (Fsort): Use const qualifier as appropriate.

	* DLD-FUNCTIONS/balance.cc (balance): Use data() instead of
	fortran_vec where appropriate in call to dggbak.

	* DLD-FUNCTIONS/dasrt.cc (dasrt_user_j): Simplify inserting x and
	xdot in arg vector.
	(dasrt_user_f): Likewise.
	(dasrt_user_cf): Likewise.
	* DLD-FUNCTIONS/dassl.cc (dassl_user_function): Likewise.
	(dassl_user_jacobian): Likewise.
	* DLD-FUNCTIONS/lsode.cc (lsode_user_function): Likewise.
	(lsode_user_jacobian): Likewise.
	* DLD-FUNCTIONS/daspk.cc (daspk_user_function): Likewise.
	(daspk_user_jacobian): Likewise.

2003-11-16  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-range.h (octave_range::reshape): New function.

2003-11-15  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* version.h (OCTAVE_VERSION): Now 2.1.51.
	(OCTAVE_API_VERSION): Now api-v2.

	* version.h (OCTAVE_BUGS_STATEMENT): Also tell people to look at
	http://www.octave.org/bugs.html.

	* oct-map.cc (Octave_map::assign): Use resize, not resize and fill.
	* ov-typeinfo.cc (octave_value_typeinfo::do_register_type): Likewise.

	* Cell.cc (Cell::Cell): Pass dim_vector to resize instead of two ints.

2003-11-14  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (stamp-liboctave-prereq): New target.
	($(DEF_FILES), $(MAKEDEPS)): Depend on it.	
	(distclean): Remove it.

	* parse.y (cancel_obj_idx): New rule.
	(postfix_expr, prefix_expr): Use begin_obj_idx after every
	postfix_expr on RHS.  Use cancel_obj_idx as soon as possible for
	cases where we are not working on an index expression.

	* lex.l (maybe_unput_comma, handle_close_bracket):
	Don't insert comma if we are looking at an object index and the
	closest nesting level is a brace.

	* parse.y (postfix_expr): Use begin_obj_idx between postfix_expr
	and the indexing delimiter rather than after it.

	* lex.h (lexical_feedback::braceflag): New member variable.
	* lex.l	(lexical_feedback::init): Initialize braceflag.
	(\{{S}*): Increment lexer_flags.braceflag, not
	lexer_flags.bracketflag.
	(handle_close_bracket): Handle lexer_flags.braceflag and
	lexer_flags.bracketflag separately based on bracket_type.
	Delete unnecesary yyinput/yyunput.

	* lex.l (next_token_is_postfix_unary_op): Also recognize ++ and --.

	* ov-typeinfo.cc (octave_value_typeinfo::register_type,
	octave_value_typeinfo::do_register_type):
	New arg, c_name for class name.
	* ov-base.cc, ov-bool-mat.cc, ov-bool.cc, ov-builtin.cc,
	ov-cell.cc, ov-ch-mat.cc, ov-colon.cc, ov-complex.cc,
	ov-cs-list.cc, ov-cx-mat.cc, ov-dld-fcn.cc, ov-fcn-handle.cc,
	ov-file.cc, ov-list.cc, ov-mapper.cc, ov-range.cc, ov-re-mat.cc,
	ov-scalar.cc, ov-str-mat.cc, ov-struct.cc, ov-usr-fcn.cc,
	ov-va-args.cc: Pass class name to DEFINE_OV_TYPEID_FUNCTIONS_AND_DATA.
	* ov.h (octave_value::class_name): New virtual function.
	(DEFINE_OV_TYPEID_FUNCTIONS_AND_DATA): Define c_name, for class name.
	Pass c_name to octave_value_typeinfo::register_type.
	(DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA): Declare static member
	c_name for class name.  Provide class_name member function.

	* ov-typeinfo.cc (Fclass): New function.

2003-11-13  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* utils.cc (Fisvarname): Pass correct name to make_argv.

	* ov-cell.cc (Fiscellstr): New function.

	* ov-file.h (octave_file::all, octave_file::any,
	octave_file::dims, octave_file::is_real_type,
	octave_file::ist_real_scalar): New functions.

	* lex.l (bracket_brace_paren_nesting_level::is_bracket_or_brace):
	New function.
	(handle_close_bracket): New arg, bracket_type.  Change all uses.
	First arg is now bool.
	(<MATRIX_START>{SNLCMT}*\}{S}*): New pattern.
	(maybe_unput_comma): Handle brace nesting level the same as brackets.
	(handle_close_brace): Likewise.
	(<MATRIX_START>{S}+): Likewise.
	(<MATRIX_START>{S}*{COMMENT}{SNLCMT}*): Likewise.
	(<MATRIX_START>{S}*{NL}{SNLCMT}*): Likewise.
	({NL}): Likewise.
	({CCHAR}): Likewise.
	(")"): Likewise.
	(\{{S}*): Handle the same as \[{S}*.
	("}"): Handle the same as \].

	* Makefile.in (stamp-prereq): Add oct-gperf.h, parse.cc, and
	lex.cc to the list.

2003-11-12  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-cell.cc (print_as_scalar): New function.
	* ov-cell.h: Provide decl.

	* ov-cell.cc (octave_cell::print_name_tag): Delete.
	* ov-cell.h: Delete decl.

	* ov-base-mat.cc (octave_base_matrix::print_name_tag): Delete.
	* ov-base-mat.h: Delete decl.

	* ov-base.cc (octave_base_value::print_name_tag):
	Use print_as_scalar here. 
	* ov.h (octave_base_value::print_as_scalar): New virtual function.
	* ov-base.h (octave_base_value::print_as_scalar):
	New default implementation.
	* ov-base-mat.h (octave_base_matrix::pirnt_as_scalar):
	Don't declare as virtual here.

	* ov-struct.cc (octave_struct::print_raw): If only printing keys,
	also print dimensions of fields and overall array.

	* sysdep.cc (Fnative_float_format): New function.

	* input.cc (generate_possible_completions): Also append all
	possible filename completions here.

2003-11-11  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* oct-stream.cc: Explicitly instantiate octave_scan functions.

	* TEMPLATE-INST/Array-c.cc, TEMPLATE-INST/Array-os.cc,
	TEMPLATE-INST/Array-sym.cc, ov-typeinfo.cc:
	Use new INSTANTIATE_ARRAY macro.

	* data.cc (do_permute): New function.
	(Fpermute, Fipermute): Use it.

	* ov-base.cc (octave_base_value::permute): New function.
	* ov-base.h: Provide decl.

	* ov.h (octave_value::ipermute): New function.

2003-11-11  Petter Risholm  <risholm@stud.ntnu.no>

	* data.cc (Fpermute, Fipermute): New functions.
	* ov.h (octave_value::permute): New function.
	* ov-base-mat.h (octave_base_matrix::permute): New function.

2003-11-10  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* oct-obj.h (octave_value_list): Internal representation is now
	std::vector instead of Array.

	* ov-list.h, ov-list.cc: Internal representation is now Cell, not
	octave_value_list.
	(Flist): Print one-time warning.

	* ov.cc (octave_value::octave_value (const octave_value_list&, bool)):
	Cope with octave_cs_list not being derived from octave_list.

	* ov-cs-list.cc (octave_cs_list): Handle conversion of Cell array
	to octave_value_list here.

	* ov-cs-list.h (class octave_cs_list): Derive from
	octave_base_value, not octave_list.

	* ov-cs-list.h, ov-cs-list.cc: Remove commented-out code.

	* TEMPLATE-INST/Array-tc.cc (resize_fill_value): Use modern
	specialization syntax.

	* ov-cell.cc (octave_cell::print_raw): Use dim_vector::str.

	* Cell.cc, Cell.h, debug.cc, file-io.cc, load-save.cc,
	oct-fstrm.cc, oct-iostrm.cc, oct-iostrm.h, oct-map.cc, oct-map.h,
	oct-prcstrm.cc, oct-stdstrm.h, oct-stream.cc, oct-strstrm.h,
	octave.cc, ov-base.h, ov-cell.cc, ov.cc, ov.h, pt-cell.h,
	pt-mat.cc, pt-mat.h, pt-plot.cc, pt-stmt.cc, variables.cc,
	DLD-FUNCTIONS/rand.cc: Avoid -Wshadow warnings.

2003-11-01  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov.h (octave_base_value::is_bool_matrix): New virtual function.
	* ov-base.h (octave_base_value::is_bool_matrix): New function.

2003-10-31  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov.cc (octave_value::length): If any dim is zero, return 0.

	* ov-cell.cc (octave_cell::subsref): When indexing with '{', quit
	early if an error occurs in do_index_op.

	* ov.cc (octave_value::next_subsref): Don't do anything if
	error_state is true.

	* cutils.c (octave_usleep) [HAVE_SELECT]: Introduce new local
	scope for declaration of delay.
	[HAVE_POLL]: Likewise, for delay and pfd.

	* ov-base.cc (octave_base_value::bool_array_value):
	Function takes no args.
	* ov-base.h: Likewise, for decl.
	* ov-bool-mat.h (boolNDArray::bool_array_value): Likewise.

	* ov-fcn.cc, ov-fcn.h (octave_value::clone,
	octave_value::empty_clone): Return type is octave_value*, not
	octave_function*.

2003-10-29  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-str-mat.h (octave_char_matrix_str::reshape): New function.
	Force result to be a string.

2003-10-29  Petter Risholm  <risholm@stud.ntnu.no>

	* data.cc (DATA_REDUCTION): Work on NDArray and ComplexNDArray
	objects instead of Matrix and ComplexMatrix objects.

2003-10-29  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-bool-mat.h (octave_bool_matrix::NDArray,
	octave_bool_matrix::ComplexNDArray): New functions.

	* ov-complex.cc (octave_complex::array_value,
	octave_complex::complex_array_value): New functions.
	* ov-complex.h: Provide decls.

	* ov-scalar.cc (octave_scalar::array_value,
	octave_scalar::complex_array_value): New functions.
	* ov-scalar.h: Provide decls.

	* oct-map.cc (Octave_map::reshape): New function.
	* oct-map.h: Provide decl.

	* ov-struct.h (octave_struct::reshape): New function.

	* Cell.h (Cell:Cell (const Array<octave_value>&): New constructor.

	* data.cc (Freshape): New function.
	* ov.h (octave_value::reshape): New function.
	* ov-base-mat.h (octave_base_matrix::reshape): New function.
	* ov-base.cc (octave_base_value::reshape): New function.
	* ov-base.h: Provide decl.

	* DLD-FUNCTIONS/balance.cc: lscale and rscale args for dggbak are
	const.  Use data() instead of fortran_vec where possible.
	* DLD-FUNCTIONS/qz.cc: Likewise.

	* data.cc (fill_matrix): Remove trailing singletons before
	allocating the result matrix.

	* input.cc (get_user_input): Don't forget about the diary here.

2003-10-28  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-list.h (octave_list::nelem): Delete.
	(octave_list::dims): New function.
	* ov-range.h (octave_list::dims): New function.
	* ov-struct.h (octave_struct::dims): New function.
	* ov-base-scalar.h (octave_base_scalar::dims): New function.

	* ov.h (octave_value::rows): No longer virtual.
	* ov.cc (octave_value::rows): Provide common implementation.
	* ov-base.h (octave_base_value::rows): Delete.
	* ov-base-mat.h (octave_base_matrix<T>::rows): Delete.
	* ov-base-scalar.h (octave_base_scalar<T>::rows): Delete.
	* ov-struct.h (octave_struct::rows): Delete.
	* ov-range.h (octave_range::rows): Delete.

	* ov.h (octave_value::columns): No longer virtual.
	* ov.cc (octave_value::columns): Provide common implementation.
	* ov-base.h (octave_base_value::columns): Delete.
	* ov-base-mat.h (octave_base_matrix<T>::columns): Delete.
	* ov-base-scalar.h (octave_base_scalar<T>::columns): Delete.
	* ov-struct.h (octave_struct::columns): Delete.
	* ov-range.h (octave_range::columns): Delete.

	* ov.h (octave_value::numel): No longer virtual.
	* ov.cc (octave_value::numel): Provide common implementation.
	* ov-base.h (octave_base_value::numel): Delete.
	* ov-base-mat.h (octave_base_matrix<T>::numel): Delete.
	* ov-base-scalar.h (octave_base_scalar<T>::numel): Delete.
	* ov-struct.h (octave_struct::numel): Delete.

	* ov-cs-list.h (octave_cs_list::dims): New function.
	(octave_cs_list::length): Delete.

	* ov.h (octave_value::ndims): No longer virtual.
	* ov.cc (octave_value::ndims): Provide common implementation.
	* ov-base.h (octave_base_value::ndims): Delete.
	* ov-base-mat.h (octave_base_matrix<T>::ndims): Delete.
	* ov-base-scalar.h (octave_base_scalar<T>::ndims): Delete.
	* ov-struct.h (octave_struct::ndims): Delete.

	* ov-cell.cc (Fcell): Make it work for N-d cells.

	* Cell.h (Cell::Cell  (const dim_vector&, const octave_value&)):
	New constructor.

	* ov.h (octave_value::length): No longer virtual.
	* ov.cc (octave_value::length): Provide common implementation.
	* ov-base.h (octave_base_value::length): Delete.
	* ov-base-mat.h (octave_base_matrix<T>::length): Delete.
	* ov-base-scalar.h (octave_base_scalar<T>::length): Delete.
	* ov-struct.h (octave_struct::length): Delete.
	* ov-cs-list.h (octave_cs_list::length): Delete.
	* ov-list.h (octave_list::length): Delete.
	* ov-range.h (octave_range::length): Delete.

	* load-save.cc (save_mat5_binary_element): Use numel instead of
	array_length.
	* ov-struct.cc (octave_struct::print_raw): Likewise.
	* pt-loop.cc (tree_complex_for_command::eval): Likewise.
	* oct-map.cc (Octave_map::numel): New function.
	* oct-map.h: Provide decl.

	* oct-map.cc, oct-map.h (Octave_map::array_length): Delete.
	(common_size): New static function.
	(Octave_map::assign): Make resizing work for N-d cell objects.

	* oct-map.cc (Octave_map::dims): New function.
	* oct-map.h: Provide decl.

	* pr-output.cc 	(print_empty_nd_array): New static function.
	(PRINT_ND_ARRAY): Use it.

	* ov.h (octave_value::is_empty): No longer virtual.  Return value
	based on numel.
	* data.cc (Fisempty): Use it.
	(Fnumel): New function.

	* ov.h (octave_value::numel): New function.
	* ov-base.h (octave_base_value::numel): Likewise.
	* ov-base-mat.h (octave_base_matrix<T>::numel): Likewise.
	* ov-base-scalar.h  (octave_base_scalar<T>::numel): Likewise.

2003-10-27  Petter Risholm  <risholm@stud.ntnu.no>

	* ov-base-mat.cc (octave_base_matrix<MT>::is_true):
	Only work for 2-dimensional objects.
	* data.cc (ANY_ALL (FCN)): Allow dim to take values large than 2.

	* ov.h (octave_value::ndims): New function.
	* ov-base.h (octave_base_value::ndims): Likewise.
	* ov-base-scalar.h (octave_base_scalar<T>::ndims): Likewise.
	* ov-base-mat.cc (octave_base_matrix<MT>::ndims): New function.
	(octave_base_matrix<MT>::length): Move here from ov-base-mat.h.
	Make it work for N-d arrays.
	* ov-base-mat.h (octave_base_matrix<MT>::ndims): Provide decl.
	* data.cc (Fndims): New built-in function.

2003-10-27  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* DLD-FUNCTIONS/balance.cc, DLD-FUNCTIONS/qz.cc:
	Use new F77 arg macros in declarations of external Fortran
	subroutines and for calling them.

	* ops.h (DEFNDUNOP_OP, DEFNDUNOP_FN): New arg e, to name value
	extractor function prefix.
	* OPERATORS/op-bm-bm.cc, OPERATORS/op-cm-cm.cc,	OPERATORS/op-m-m.cc:
	Change all uses.

	* ov-cx-mat.h (octave_complex_matrix::complex_array_value,
	octave_char_matrix::char_array_value,
	octave_bool_matrix::bool_array_value): Rename from array_value.
	* OPERATORS/op-bm-bm.cc, OPERATORS/op-cm-cm.cc,
	OPERATORS/op-cm-cs.cc, OPERATORS/op-cm-m.cc,
	OPERATORS/op-cm-s.cc, OPERATORS/op-cs-cm.cc,
	OPERATORS/op-m-cm.cc, OPERATORS/op-m-m.cc,
	OPERATORS/op-s-cm.cc: Use complex_array, char_array, and
	bool_array as appropriate (instead of just array).

	* ov-base.cc (octave_base_value::array_value,
	octave_base_value::bool_array_value,
	octave_base_value::complex_array_value,
	octave_base_value::char_array_value): Provide default implementations.
	* ov-base.h: Provide decls.

	* ov.h (octave_value::array_value, octave_value::bool_array_value,
	octave_value::complex_array_value, octave_value::char_array_value):
	New virtual functions.

2003-10-25  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-idx.cc (make_subs_cell): Pass dim_vector object to resize.

	* ov-typeinfo.cc (octave_value_typeinfo::do_register_type):
	Use resize_and_fill for types.

	* oct-obj.h (octave_value_list::maybe_resize): Use resize_and_fill.
	(octave_value_list::resize (int, const octave_value&)): Likewise.

	* oct-map.cc (Octave_map::assign): Use resize_and_fill as needed.

	* Cell.h (Cell (void)): Default size is now 0x0.

2003-10-23  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* OPERATORS/op-cm-m.cc, OPERATORS/op-cm-s.cc,
	OPERATORS/op-cs-m.cc, OPERATORS/op-m-cm.cc, OPERATORS/op-s-cm.cc:
	Include headers for N-d operators.

2003-10-17  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ops.h (DEFNDUNOP_OP, DEFNDUNOP_FN, DEFNDBINOP_OP,
	DEFNDBINOP_FN): New N-dimensional macros.
	* src/OPERATORS/op-bm-bm.cc, src/OPERATORS/op-cm-cm.cc,
	src/OPERATORS/op-cm-cs.cc, src/OPERATORS/op-cm-m.cc,
	src/OPERATORS/op-cm-s.cc, src/OPERATORS/op-cs-cm.cc,
	src/OPERATORS/op-cs-m.cc, src/OPERATORS/op-m-cm.cc,
	src/OPERATORS/op-m-cs.cc, src/OPERATORS/op-m-m.cc,
	src/OPERATORS/op-m-s.cc, src/OPERATORS/op-s-cm.cc,
	src/OPERATORS/op-s-m.cc: Use N-dimensional macros as appropriate.

	* DLD-FUNCTIONS/rand.cc (do_rand, Frand, Frandn):
	Handle N-dimensions.

	* xpow.cc (elem_xpow (double, const NDArray&),
	elem_xpow (double, const ComplexNDArray&),
	elem_xpow (const NDArray&, double),
	elem_xpow (const NDArray&, const NDArray&),
	elem_xpow (const NDArray&, const Complex&),
	elem_xpow (const NDArray&, const ComplexNDArray&),
	elem_xpow (const Complex&, const NDArray&),
	elem_xpow (const Complex&, const ComplexNDArray&),
	elem_xpow (const ComplexNDArray&, double),
	elem_xpow (const ComplexNDArray&, const NDArray&),
	elem_xpow (const ComplexNDArray&, const Complex&),
	elem_xpow (const ComplexNDArray&, const ComplexNDArray&):
	New functions.
	* xpow.h: Provide decls.

	* xdiv.cc (x_el_div (double, const NDArray&),
	x_el_div (double, const ComplexNDArray&),
	x_el_div (const Complex, const NDArray&),
	x_el_div (const Complex, const ComplexNDArray&)): New functions.
	* xdiv.h: Provide decls.

	* ov-bool-mat.h (boolNDArray::array_value): New function.
	* ov-ch-mat.h (charNDArray::array_value): New function.
	* ov-cx-mat.h (ComplexNDArray::array_value): New function.
	* ov-re-mat.h (NDArray::array_value): New function.
	(NDArray::double_nd_array_value): Delete.

2003-10-16  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* parse.y (text_getc): New static function.
	(gobble_leading_white_space): Use it to simplify EOL processing.

2003-10-15  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* file-io.cc (fopen_mode_to_ios_mode): Ignore "t" in mode string.

	* strfns.cc (Fischar): rename from Fisstr.

2003-10-09  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pr-output.cc (PRINT_ND_ARRAY): New macro.
	(octave_print_internal): Use it.

2003-10-08  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov.cc	(octave_value::octave_value (const ArrayN<octave_value>&,
	bool)):	New constructor.
	* ov.h: Provide decl.

	* ov.h (octave_value::squeeze): New virtual function.
	* ov-base.cc (squeeze): Provide default implementation.
	* ov-base-mat.h (octave_base_matrix::squeeze): New function.
	* data.cc (Fsqueeze): New function.

2003-10-03  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* load-save.cc (make_valid_identifier): Return new string.
	Arg is now string, not char *.
	(ident_is_all_digits): New function.
	(hdf5_read_next_data): Use it.

2003-10-02  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* input.cc (input_event_hook): Clear the event hook if hook_fcn
	does not name a valid function.

2003-10-01  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* mappers.cc (xabs): New function.
	(install_mapper_functions): Use it instead of abs for complex args
	in Octave's abs mapper function.

2003-09-27  Joseph P. Skudlarek  <Jskud@Jskud.com>
 
 	* DLD-FUNCTIONS/minmax.cc (min, max): Use @deftypefn machinery,
 	doc missing semantics, and add more examples to texinfo strings.

2003-09-26  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* load-save.cc (read_mat5_binary_element): Return early if the
	miMATRIX element has length zero.

2003-09-24  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-cell.cc (octave_cell::subsasgn): Also attempt empty
	conversion after extracting single element from cell array to
	allow things like x{i}.elt = rhs to work.

2003-09-19  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov.h (octave_value::dim_vector): New function.

	* ov.h, ov.cc (octave_value::octave_value (const Cell&)):
	New arg, is_cs_list.
	(octave_value::octave_value (const NDArray&)):
	Create octave_matrix object, not octave_double_nd_array object.
	(octave_value::octave_value (const ComplexNDArray&),
	octave_value::octave_value (const boolNDArray&),
	octave_value (const charNDArray&, bool)): New constructors.

	* ov.h, ov.cc (octave_value::nil_rep): New function.
	(octave_value::octave_value (void)): Use it to initialize empty
	octave_value objects.

	* ov-list.h, ov-list.cc (octave_list::octave_list (const Cell&)):
	New constructor.
	* ov-cs-list.h (octave_cs_list::octave_cs_list (const Cell&)):
	Likewise.

	* data.cc (Fsize): Handle N-d objects.

	* pr-output.cc (octave_print_internal): New versions for NDArray,
	ComplexNDArray, boolNDArray, and charNDArray objects.
	* pr-output.h: Provide decls.

	* ov-re-nd-array.h, ov-re-nd-array.cc: Delete.

	* Cell.h, Cell.cc, ov-base-mat.h, ov-base-mat.cc, ov-bool-mat.h,
	ov-bool-mat.cc, ov-ch-mat.h, ov-ch-mat.cc, ov-cx-mat.h,
	ov-cx-mat.cc, ov-re-mat.h, ov-re-mat.cc, ov-str-mat.h,
	ov-str-mat.cc: Now N-dimensional.

	* oct-map.h, oct-map.cc: Now based on Cell ojects instead of
	octave_value_list objects.  Change all uses.

	* TEMPLATE-INST/Array-tc.cc: Also instantiate ArrayN objects.
	Don't instantiate assign funcitons for Array2 objects.

2003-09-11  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-plot.cc (symbols_of_pt_plot): Default for automatic replot is
	now true.

	* pr-output.cc (Fformat): Doc fix.
	(current_output_max_field_width, current_output_precision):
	New functions.
	(float_format::float_format (int, int, int)): Use them to provide
	default values for field width and precision.
	(print_g): New static variable.
	(set_real_format, set_real_matrix_format, set_complex_format) 
	(set_complex_matrix_format, set_range_format): Handle print_g.
	(pr_float, pr_complex): Don't scale if using print_g.
	(set_format_style): Accept new "g" and "G" modifiers for short and
	long formats and set print_g.
	Set default precision and width for short to 5, 10.
	Set default precision and width for long to 15, 20.

2003-09-10  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* OPERATORS/op-m-cs.cc (complex_matrix_conv): Delete function.
	(install_m_cs_ops): Don't install complex_matrix_conv here.

	* OPERATORS/op-s-cs.cc (complex_matrix_conv): Delete function.
	(install_s_cs_ops): Don't install complex_matrix_conv here.

	* OPERATORS/op-s-s.cc (matrix_conv): Delete function.
	(install_s_s_ops): Don't install matrix_conv here.

	* OPERATORS/op-cs-s.cc (complex_matrix_conv): Delete function.
	(install_cs_s_ops): Don't install complex_matrix_conv here.

	* OPERATORS/op-cs-m.cc (complex_matrix_conv): Delete function.
	(install_cs_m_ops): Don't install complex_matrix_conv here.

	* OPERATORS/op-cs-cs.cc (complex_matrix_conv): Delete function.
	(install_cs_cs_ops): Don't install complex_matrix_conv here.

	* ov-typeinfo.cc (do_register_unary_op,
	do_register_non_const_unary_op, do_register_binary_op,
	do_register_assign_op, do_register_assignany_op,
	do_register_pref_assign_conv, do_register_widening_op):
	Print warning if installing a duplicate function.

2003-09-10  Petter Risholm  <risholm@stud.ntnu.no>

	* data.cc, ov-base.cc, ov-base.h, ov.h, ov.cc, ov-re-mat.h,
	ov-scalar.h, ov-re-nd-array.h, ov-re-nd-array.cc: Use NDArray, not
	ArrayN<double>.

2003-09-09  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov.h (octave_value::double_nd_array_value): New function.
	(octave_value::is_real_nd_array): New function.

	* ov-base.cc (octave_base_value::double_nd_array_value): New function.
	* ov-base.h: Provide decl.
	(octave_base_value::is_real_nd_array): New function.

2003-09-09  Petter Risholm  <risholm@stud.ntnu.no>

	* ov-re-mat.h (octave_matrix::double_nd_array_value): New function.
	* ov-scalar.h (octave_scalar::double_nd_array_value): New function.

	* ov-re-nd-array.cc (octave_double_nd_array::assign): New function.
	(octave_double_nd_array::try_narrowing_conversion): Likewise.
	(octave_double_nd_array::valid_as_scalar_index): Likewise.
	(octave_double_nd_array::double_value): Likewise.
	(octave_double_nd_array::matrix_value): Likewise.
	(octave_double_nd_array::complex_value): Likewise.
	(octave_double_nd_array::convert_slice_to_matrix): Likewise.
	* ov-re-nd-array.h: Provide decls.
	(octave_double_nd_array::is_real_nd_array): New function.
	(octave_double_nd_array::double_nd_array_value): New function.
	(octave_double_nd_array::double_nd_array_value): New function.

	* OPERATORS/op-m-nd.cc, OPERATORS/op-nd-m.cc,
	OPERATORS/op-nd-nd.cc, OPERATORS/op-nd-s.cc, OPERATORS/op-s-nd.cc:
	New files.
	* Makefile.in (OP_XSRC): Add them to the list.

2003-09-09  David Bateman <dbateman@free.fr>

	* OPERATORS/op-cs-s.cc (DEFBINOP): First arg is complex, second is
	double.

2003-09-05  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-cell.cc (tree_cell::rvalue): Don't assume that the number of
	elements in a tree_argument_list is the same as the number of
	objects it contains (cs-list objects expand to more than one).

	* pt-mat.cc (tm_row_const::tm_row_const_rep::do_init_element):
	New function, extracted from tm_row_const::tm_row_const_rep::init.
	(tm_row_const::tm_row_const_rep::init): Use it.
	Also handle cs-list objects.

	* ov-cs-list.cc (octave_cs_list::print_raw): New function.
	* ov-cs-list.h (octave_cs_list::print_raw): Provide decl.
	* ov-list.h (octave_list::lst): Now protected instead of private.

2003-09-04  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-plot.cc (subplot_style::columns_ok): Allow boxes style to
	have 2 columns as well.

2003-08-28  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* dirfns.cc (Fls): Check EAGAIN to avoid losing output.
	* toplev.cc (run_command_and_return_output): Likewise.

2003-08-25  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* OPERATORS/op-str-s.cc, OPERATORS/op-str-m.cc: New files.
	* Makefile.in (OP_XSRC): Add them to the list.

2003-08-22  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* defaults.cc (maybe_add_or_del_packages): Use source_file instead
	of parse_and_execute.
	* parse.y (source_file): New function.
	(Fsource): Use it.
	* parse.h (source_file): Provide decl.

2003-08-21  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* utils.cc (octave_vsnprintf): Copy va_list to avoid using more
	than once.

2003-08-07  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* utils.cc (octave_vsnprintf): Call octave_raw_vsnprintf instead
	of calling vsnprintf directly.
	(octave_vsnprintf) [HAVE_C99_VSNPRINTF]: Declare nchars to be size_t.

2003-08-06  Heine Kolltveit  <kolltvei@idi.ntnu.no>

	* utils.cc (check_dimensions(Array<int>&, char),
	get_dimensions(octave_value&, char, Array<int>&): New functions.
	* utils.h (check_dimensions (Array<int>&, char), 
	get_dimensions (octave_value&, char, Array<int>&)): Provide decl.

	* data.cc (fill_matrix): Also create N-d arrays.
 	(Fones, Fzeros): Handle more than 2 args to create N-d arrays.

2003-07-30  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* data.cc (make_diag): Use std::abs instead of our own ABS macro.

	* utils.cc (identity_matrix): Move here from data.cc.
	(identity_matrix): Use std::min instead of our own MIN macro.

	* utils.h (identity_matrix): Provide decl.

	* DLD-FUNCTIONS/svd.cc (Fsvd): Improve handling of empty matrix arg.

	* ov.cc (octave_value(const ArrayN<Complex>&)): New constructor.
	* ov.h (octave_value(const ArrayN<Complex>&)): Provide decl.

2003-07-30  Heine Kolltveit <kolltvei@idi.ntnu.no>

	* ov.cc (octave_value(const ArrayN<double>&)): New constructor.
	* ov.h (octave_value(const ArrayN<double>&)): Provide decl.

2003-07-30  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov.h (Vpropagate_empty_matrices): Delete decl.
	* ov.cc: (Vpropagate_empty_matrices): Delete.
	(propagate_empty_matrices): Delete.
	(symbols_of_ov): Delete DEFVAR for propagate_empty_matrices.

	* utils.cc (empty_arg): Behave as though propagate_empty_matrices
	is always 1.
	* ov-range.cc (octave_range::is_true): Likewise.
	* ov-base-mat.cc (octave_base_matrix<MT>::is_true): Likewise.

	* octave.cc (maximum_braindamage): Also set
	warn_matlab_incompatible to TRUE.

	* lex.l (Vwhitespace_in_literal_matrix): Delete.
	(whitespace_in_literal_matrix): Delete.
	(symbols_of_lex): Delete DEFVAR for whitespace_in_literal_matrix.
	(<MATRIX_START>{S}*\,{S}*, <MATRIX_START>{S}+,
	(<MATRIX_START>{S}*{COMMENT}{SNLCMT}*,
	<MATRIX_START>{S}*{NL}{SNLCMT}*, maybe_unput_comma): Behave as though
	old Vwhitespace_in_literal_matrix varaible is always 1.

	* octave.cc (maximum_braindamage): Don't set
	whitespace_in_literal_matrix.

2003-07-29  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (install-lib): Use $(INSTALL), not
	$(INSTALL_PROGRAM) for $(SHLLIB) files.

2003-07-29  Paul Kienzle <pkienzle@users.sf.net>

	* Makefile.in: Don't need special system.c for Cygwin.
	* oct-procbuf.cc: Use popen rather than fork/exec for Windows.

2003-07-28  Paul Kienzle <pkienzle@users.sf.net>

	* sysdep.cc (CYGWIN_init): Convert TMPDIR to system agnostic path.

2003-07-25  Paul Kienzle <pkienzle@users.sf.net>

	* help.cc (try_info, display_help_text):
	Protect spaces in filenames with quotes.
	* oct-hist.cc (do_edit_history): Likewise.
	* pt-plot.cc (open_plot_stream): Likewise.

2003-07-15  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* oct-stream.cc (get_size, octave_base_stream::error,
	octave_base_stream::do_gets, octave_base_stream::getl,
	octave_base_stream::gets, octave_base_stream::do_scanf,
	octave_base_stream::scanf, octave_base_stream::do_oscanf,
	octave_base_stream::oscanf, do_printf_conv,
	octave_base_stream::do_printf, octave_base_stream::printf,
	octave_base_stream::puts, octave_base_stream::invalid_operation,
	octave_stream::getl, octave_stream::gets, octave_stream::scanf,
	octave_stream::oscanf, octave_stream::printf, octave_stream::puts,
	octave_stream::invalid_stream_error): Handle name of calling
	function for error messages as a std::string object.  Change all
	callers.

	* file-io.cc (Fprintf, Fputs): New functions, so we can get
	function prefixes on error messages right.
	(Ffgetl, Ffgets, Ffprintf, Fsprintf, Fputs, Ffscanf, Fsscanf):
	Pass name of calling function to octave_stream method.

	* oct-stream.h (octave_base_stream::do_char_scanf,
	octave_base_stream::do_real_scanf): Delete unused decls.

	* load-save.cc (read_mat5_binary_element): Correctly read struct
	arrays.

	* pt-misc.cc (tree_parameter_list::initialize_undefined_elements):
	New args, warnfor and nargout.  Change all callers.
	(symbols_of_pt_misc): New function.
	(warn_undefined_return_values): New function.

	* octave.cc (maximum_braindamage): Don't set
	define_all_return_values.

	* ov-usr-fcn.cc (ov_user_function::do_multi_index_op): Always
	intiialize undefined elements in ret_list to [].
	Never return last computed value.
	(Vreturn_last_computed_value, Vdefine_all_return_values): Delete.
	(return_last_computed_value, define_all_return_values): Delete.
	(symbols_of_ov_usr_fcn): Delete DEFVARs for
	return_last_computed_value, define_all_return_values, and
	default_return_value.

2003-07-14  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-misc.cc (tree_parameter_list::convert_to_const_vector):
	Don't skip undefined elements.

2003-07-13  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* octave.cc (maximum_braindamage): Don't set
	default_global_variable_value or initialize_global_variables.

	* pt-decl.cc (Vinitialize_global_variables): Delete.
	(initialize_global_variables): Delete.
	(symbols_of_pt_decl): Delete.
	(tree_global_command::do_init): Default initial value is now
	always [].

2003-07-11  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* octave.cc (maximum_braindamage): Don't set default_eval_print_flag.

	* parse.y (Vdefault_eval_print_flag): Delete: 
	(default_eval_print_flag): Delete.
	(symbols_of_parse): Delete DEFVAR for default_eval_print_flag.
	(Feval, Fevalin): Return empty octave_value_list and turn printing
	on in eval_string if nargout is zero.

	* ov-list.cc (octave_list::assign): Check
	Vwarn_resize_on_range_error, not Vresize_on_range_error.

	* ov.cc (Vwarn_resize_on_range_error): New variable.
	(warn_resize_on_range_error): New function.
	(symbols_of_ov): Add DEFVAR for warn_resize_on_range_error.

	* ov.cc (Vresize_on_range_error): Delete.
	(resize_on_range_error): Delete.
	(symbols_of_ov): Delete DEFVAR for resize_on_range_error.

	* pt-mat.cc (Vwarn_empty_list_elements): New variable.
	(warn_empty_list_elements): New function.
	(symbols_of_pt_mat): Add DEFVAR for warn_empty_list_elements.
	(tm_row_const::tm_row_const_rep::init, tm_const::init): 
	Check Vwarn_empty_list_elements, not Vempty_list_elements_ok.

	* pt-mat.cc (Vempty_list_elements_ok): Delete.
	(empty_list_elements_ok): Delete.
	(symbols_of_pt_mat): Delete DEFVAR for empty_list_elements_ok.

2003-07-11  Russell Standish <R.Standish@unsw.edu.au>

	* TEMPLATE-INST/Array-tc.cc (resize_fill_value): Provide
	specialization.

2003-07-10  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* strfns.cc (Fchar): Force string conversions without warnings.

	* ov.h (octave_value::convert_to_str, octave_value::all_strings,
	octave_value::string_value, octave_value:convert_to_str_internal):
	New arg, force.  Fix all derived classes to match.

	* strfns.cc (Fchar): Temporarily reset Vwarn_num_to_str to avoid
	warnings.

	* ov.cc (convert_to_str): New arg, force.

	* octave.cc (maximum_braindamage): Don't set treat_neg_dim_as_zero.

	* utils.cc (Vwarn_neg_dim_as_zero): New variable.
	(warn_neg_dim_as_zero): New function.
	(symbols_of_utils): Add DEFVAR for warn_neg_dim_as_zero.
	(check_dimensions): Check Vwarn_neg_dim_as_zero, not
	Vtreat_neg_dim_as_zero.

	* utils.cc (Vtreat_neg_dim_as_zero): Delete.
	(treat_neg_dim_as_zero): Delete.
	(symbols_of_utils): Delete DEFVAR for treat_neg_dim_as_zero.

2003-07-09  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* octave.cc (maximum_braindamage): Don't set prefer_column_vectors.

	* ov.cc (Vprefer_column_vectors): Delete.
	(prefer_column_vectors): Delete.
	(symbols_of_ov): Delete DEFVAR for prefer_column_vectors.

	* octave.cc (maximum_braindamage): Don't set do_fortran_indexing.

	* ov-re-mat.cc (octave_matrix::double_value,
	octave_matrix::complex_value): Use Vwarn_fortran_indexing, not
	Vdo_fortran_indexing.
	* ov-range.cc (octave_range::double_value,
	octave_range::complex_value): Likewise.
	* ov-cx-mat.cc (octave_complex_matrix::double_value,
	octave_complex_matrix::complex_value): Likewise.
	* ov-ch-mat.cc (octave_char_matrix::double_value,
	octave_char_matrix::complex_value): Likewise.
	* ov-bool-mat.cc (octave_bool_matrix::double_value,
	octave_bool_matrix::complex_value): Likewise.

	* ov.cc (Vwarn_fortran_indexing): New variable.
	(warn_fortran_indexing): New function.
	(symbols_of_ov): Add DEFVAR for warn_fortran_indexing.
	(octave_value::vector_value, octave_value::int_vector_value,
	(octave_value::complex_vector_value): Check
	Vwarn_fortran_indexing, not Vdo_fortran_indexing.

	* ov.h (Vwarn_fortran_indexing): Provide decl.

	* ov.cc (Vdo_fortran_indexing): Delete unused variable.
	(do_fortran_indexing): Delete unused function.
	(symbols_of_ov): Delete DEFVAR for do_fortran_indexing.
	* ov.h (Vdo_fortran_indexing): Delete decl.

	* ov.cc (octave_value::convert_to_str): Call convert_to_str_internal.
	(octave_value::convert_to_str_internal): New virtual function.
	Rename all derived class convert_to_str functions to match.	

	* variables.cc (generate_struct_completions): Set
	discard_warning_messages, not Vwarning_option.  Also protect
	warning_state.

	* parse.y (fold): Temporarily discard warning messages.
	Also protect warning_state.

	* error.cc (discard_warning_messages): New variable.
	(vwarning): Use it.
	(warning): Don't print backtrace if discard_warning_messages is true.

	* ov.cc (octave_value::convert_to_str):
	Handle type conversion warning here.

	* gripes.cc (gripe_implicit_conversion):
	New function accepting std::string args.

	* octave.cc (maximum_braindamage): Don't set
	implicit_num_to_str_ok or implicit_str_to_num_ok.

	* ov-base.cc (octave_base_value::char_matrix_value):
	Vimplicit_num_to_str_ok no longer exists.
	(octave_base_value::all_strings): Likewise.
	(octave_base_value::string_value): Likewise.

	* ov-str-mat.cc (octave_char_matrix_str::matrix_value): Warn based
	on Vwarn_str_to_num instead of Vimplicit_str_to_num_ok.

	* ov.cc (Vwarn_num_to_str, Vwarn_str_to_num): New variables.
	(warn_num_to_str, warn_str_to_num): New functions.
	(symbols_of_ov): Add DEFVARs for warn_num_to_str and Vwarn_str_to_num.
	* ov.h (Vwarn_num_to_str, Vwarn_str_to_num): Provide decl.

	* ov.cc (Vimplicit_num_to_str_ok, Vimplicit_str_to_num_ok):
	Delete unused variables.
	(implicit_num_to_str_ok, implicit_str_to_num_ok):
	Delete unused functions.
	(symbols_of_ov): Delete DEFVARs for implicit_num_to_str_ok and
	implicit_str_to_num_ok.
	* ov.h (Vimplicit_num_to_str_ok, Vimplicit_str_to_num_ok):
	Delete decls.

	* pt-mat.cc (tree_matrix::rvalue): Vimplicit_num_to_str_ok no
	longer exists.

	* ov.cc (Vwarn_imag_to_real): New variable.
	(warn_imag_to_real): New function.
	(symbols_of_ov): Add DEFVAR for warn_imag_to_real.
	* ov.h (Vwarn_imag_to_real): Provide decl.

	* ov.cc (Vok_to_lose_imaginary_part): Delete unused variable.
	(ok_to_lose_imaginary_part): Delete unused function.
	(symbols_of_ov): Delete DEFVAR for ok_to_lose_imaginary_part.
	* ov.h (Vok_to_lose_imaginary_part): Delete decl.

	* ov-complex.cc (octave_complex::double_value): Warn based on
	Vwarn_imag_to_real instead of Vok_to_lose_imaginary_part.
	(octave_complex::matrix_value): Likewise.
	* ov-cx-mat.cc (octave_complex_matrix::double_value): Likewise.
	(octave_complex_matrix::matrix_value): Likewise.

	* octave.cc (maximum_braindamage): Don't set ok_to_lose_imaginary_part.

2003-07-08  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* sighandlers.cc (sig_hup_or_term_handler): New function.
	(install_signal_handlers): Install sig_hup_or_term_handler for
	SIGHUP and SIGTERM instead of generic_sig_handler.
	(Vsighup_dumps_octave_core, Vsigterm_dumps_octave_core):
	New static variables.
	(sighup_dumps_octave_core, sigterm_dumps_octave_core):
	New static functions.
	(symbols_of_sighandlers): Add DEFVARs for sighup_dumps_octave_core
	and sigterm_dumps_octave_core.

	* defaults.h.in (OCTAVE_LOCALAPIFCNFILEDIR, OCTAVE_LOCALAPIOCTFILEDIR):
	Subsitute new variables. 

	* defun.cc (check_version): Compare version to OCTAVE_API_VERSION,
	not OCTAVE_VERSION.  Mismatch is now fatal.
	* defun-int.h (DEFINE_FUN_INSTALLER_FUN3): Pass
	OCTAVE_API_VERSION instead of OCTAVE_VERSION to check_version.
	* version.h (OCTAVE_API_VERSION): New macro, initial value api-v1.

	* defaults.cc (Vdefault_exec_path): New static variable.
	(set_default_default_exec_path): New function.
	(install_defaults): Call it.
	(exec_path): Use it.
	(default_exec_path): New function.
	(symbols_of_defaults): Add DEFVAR for DEFAULT_EXEC_PATH.

2003-07-07  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* defaults.h.in (OCTAVE_LOCALSTARTUPFILEDIR, OCTAVE_STARTUPFILEDIR):
	Set values directly instead of constructing them.

2003-06-28  Arno J. Klaassen  <arno@heho.snv.jussieu.fr>

	* toplev.cc (octave_config_info): Key for OCTAVE_CONF_DEFS should
	be DEFS, not UGLY_DEFS.

2003-06-27  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* version.h (OCTAVE_VERSION): Now 2.1.50.

2003-06-26  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* variables.cc (symbol_exist): Distinguish between user and dld
	functions loaded in memory.

2003-06-24  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-mat.cc (tm_row_const::init, tm_const::init): Don't ignore
	empty matrices that have one non-zero dimension.

	* variables.cc (symbol_exist): Use dir_path::find_first_of to
	search for .oct and .m files.

	* ov-base.cc (octave_base_value::subsasgn): Also allow type
	conversion for empty numeric objects with more than one index.
	* ov-base-mat.cc (octave_base_matrix<T>::subsasgn): Likewise.

2003-06-23  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* variables.cc (do_who): New arg, return_list.  If return_list is
	true, return values in cell or struct arrays instead of printing.
	(Fwho, Fwhos): If nargout is 1, ask do_who to return lists of values.
	* oct-map.h (Octave_map (const std::string&, const octave_value_list&):
	New constructor.

2003-06-19  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-idx.cc (tree_index_expression::rvalue):
	Correctly handle index expressions like x(end).f(end).
	(tree_index_expression::lvalue): Likewise.

	* pt-arg-list.cc (F__end__): Add nr, nc info to error messages.

2003-06-18  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pr-output.cc (set_format (const Matrix&, int&, double&)): Ask
	any_element_is_negative to return true for negative zero as well.
	(set_format (const ComplexMatrix&, int&, int&, double&)): Likewise.

2003-06-16  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* toplev.cc (main_loop): Set octave_interrupt_hook and
	octave_bad_alloc_hook to unwind_protect::run_all here.
	(recover_from_exception): Don't call unwind_protect::run_all here.

	* pt-except.cc (do_catch_code): Return immediately if
	octave_interrupt_immediately is nonzero.

	* sighandlers.cc (sigint_handler): If jumping, don't set
	octave_interrupt_state.

2003-06-14  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* load-save.cc (get_save_type): Avoid all save types other than
	LS_DOUBLE to avoid apparent Matlab bugs.

2003-06-13  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* parse.y (frob_function, parse_fcn_file): Handle help_buf as
	stack of strings.
	* lex.l ({CCHAR}): Handle help_buf as stack of strings.
	Store text returned from grab_help_text in help_buf here.
	(reset_parser): Handle help_buf as stack of strings.
	(prep_for_nested_function): Push empty string onto help_buf stack.
	(grab_help_text): Return help text instead of storing it in help_buf.
	* parse.h, parse.y (help_buf): Now a stack of strings.

	* oct-stream.cc (printf_value_cache::string_value): Don't attempt
	to extract values when none are available.

2003-06-04  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-plot.cc (Vgnuplot_has_multiplot): Delete variable.
	(gnuplot_has_multiplot): Delete.
	(symbols_of_pt_plot): Delete DEFVAR for gnuplot_has_multiplot.

2003-05-28  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* version.h (OCTAVE_VERSION): Now 2.1.49.

2003-05-28  Teemu Ikonen <tpikonen@pcu.helsinki.fi>

	* load-save.cc (save_mat5_binary_element, save_mat_binary_data):
	Allow saving of non-7-bit ASCII characters.

2003-05-28  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* oct-stream.cc (FINISH_CHARACTER_CONVERSION,
	octave_base_stream::do_scanf): Do a better job of resizing for
	charachter conversions.

2003-05-25  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-cx-mat.cc (octave_complex_matrix::assign): Move definition here.
	* ov-cx-mat.h: From here.

2003-05-24  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-range.cc (octave_range::try_narrowing_conversion): Convert to
	[](1x0) instead of [](0x0) if range is empty.

2003-05-14  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in: Handle DESTDIR.

2003-05-13  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* lex.l: Use yyunput (X, yytext) instead of unput (X) for newer
	versions of flex.

2003-05-06  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* version.h (OCTAVE_VERSION): Now 2.1.48.

2003-05-02  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* version.h (OCTAVE_VERSION): Now 2.1.47.

2003-05-01  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* load-save.cc (save_ascii_data): If saving a range with
	non-integer base, limit, or increment, save as matrix instead.
	(get_save_type): Avoid unsigned types.

2003-04-30  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* octave.cc (initialize_pathsearch): Don't save old and set new
	value of TEXMFDBS.

	* toplev.cc (restore_texmfdbs_envvar): Delete function.
	(Fsystem): Don't set and reset TEXMFDBS.

	* toplev.h, toplev.cc (octave_original_texmfdbs): Delete variable.

2003-04-25  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* DLD-FUNCTIONS/getpwent.cc (Fgetpwnam): Delete unnecessary
	c_str() method.

2003-04-22  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* file-io.cc: Include <memory> for auto_ptr.

2003-04-18  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* toplev.cc (octave_config_info): Delete LIBKPATHSEA from struct.
	* oct-conf.h.in: Don't substitute LIBKPATHSEA.

	* octave.cc (octave_main): Don't call dir_path::set_program_name.

2003-04-17  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-file.h (octave_file::empty_clone): Create an octave_scalar
	object, not an octave_file object.

2003-04-01  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* load-save.cc (hdf5_read_next_data): Extract list before
	assigning to map element.
	(add_hdf5_data): Prefix faked names with '_' so they are valid
	identifiers.

2003-03-24  Mats Jansson  <mats.e.jansson@home.se>

	* syscalls.cc (Fkill): Fixed docstring typo.

2003-03-18  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-cell.h (octave_cell::is_matrix_type): New function.

2003-03-09  Duncan Temple Lang <duncan@research.bell-labs.com>

	* octave.cc (octave_main): New arg, embedded.
	* octave.h: Fix decl.
	* main.c: Pass 0 for embedded here.

2003-03-03  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* version.h (OCTAVE_VERSION): Now 2.1.46.

	* oct-conf.h.in: Undo previous change.

	* load-save.cc (read_mat5_binary_element): Handle structure arrays.
	(save_mat5_binary_element): Likewise.

2003-03-01  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-cell.cc (octave_cell::subsasgn): Use make_unique in
	appropriate places to preserve copy on write semantics.

	* oct-conf.h.in: Substitute OCTAVE_CONF_KPATHSEA_INCFLAGS.

	* oct-stdstrm.h (octave_stdiostream::output_stream): Return stream
	if mode is out, not in.

2003-02-22  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* strfns.cc (Fchar): New function.

	* ov-cell.cc (octave_cell::all_strings): Allow elements to be
	string arrays.
	* ov.cc (octave_value::all_strings, octave_value::convert_to_str):
	New optional arg, pad.  Change all derived classes.

	* ov-struct.cc (Ffieldnames, Fisfield): Move here from data.cc.

	* data.cc (Ffieldnames): Rename from Fstruct_elements.  Return
	cell array instead of a string array.
	(Fisfield): Rename from struct_contains.

2003-02-22  Paul Kienzle <pkienzle@users.sf.net>

	* toplev.cc: Put config info in array of strings, then convert to map.

2003-02-22  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* variables.cc (symbol_exist): For names like foo.bar, don't omit
	the part after the dot.

2003-02-21  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* octave.cc (fun_to_call): New static variable.
	(octave_main): Pass it to main_loop.
	(long_opts): Accept --funcall.
	(usage_string, verbose_usage): Add --funcall.

	* toplev.cc (main_loop): New arg, fun_to_call.  If non-empty,
	evaluate this function before continuing.

2003-02-21  Paul Kienzle <pkienzle@users.sf.net>

	* file-io.cc (Fmkstemp): Use OCTAVE_LOCAL_BUFFER instead of using
	std::auto_ptr directly.

2003-02-21  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov.h, ov.cc (octave_value (long long int)): New constructor.
	(octave_value (unsigned long long int)): Likewise.

	* oct-obj.h (octave_value_list::operator delete): Handle systems
	with or without placement delete.

2003-02-21  Paul Kienzle <pkienzle@users.sf.net>

	* utils.cc (octave_vsnprintf): Return value of vsnprintf is int,
	not size_t.  Make sure there is some space left in the buffer for
	vsnprintf versions which return the number of characters written
	even when the buffer is too short.

2003-02-20  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* debug.cc (get_user_function): Use dynamic_cast, not static_cast.

	* ov-usr-fcn.cc (octave_user_function::traceback_error): Now const.

	* ov.cc (octave_value (const octave_fcn_handle&)): New constructor.
	(octave_value::fcn_handle_value): New virtual function.
	* ov-base.cc (octave_value::fcn_handle_value): Provide default.
	* ov-usr-fcn.cc (octave_user_function::stash_fcn_file_name): New
	arg, nm.  Change all callers.
	* ov-fcn.h (octave_function::is_nested_function): New virtual function.
	* parse.y (get_feval_args): New function.
	(feval (octave_function *, const octave_value_list&, int)): Likewise.
	(feval (const octave_value_list&, int)): Allow the first arg to be
	a function handle as well as a string.
	* variables.cc (load_function): New function.
	* pt-walk.h, pt-pr-code.h, pt-pr-code.cc, pt-check.h, pt-check.cc,
	pt-bp.h, pt-bp.cc: Handle new tree_fcn_handle class.
	* pt-all.h: Include pt-fcn-handle.h.
	* pt-fcn-handle.h, pt-fcn-handle.cc, ov-fcn-handle.h,
	ov-fcn-handle.cc: New files.

2003-02-19  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* parse.y (FCN_HANDLE): New token type.
	(fcn_handle): New non-terminal.
	(primary_expr): Also accept fcn_handle.
	(tree_fcn_handle_type): New %type.
	(union): New field, tree_fcn_handle_type.
	(make_fcn_handle): New function.

	* lex.l (@{IDENT}): Recognize function handle syntax.
	(@): Don't recognize "@" as a single token.

	* load-save.cc (struct hdf5_callback_data): Provide constructor.
	(hdf5_callback_data::name, hdf5_callback_data::doc): Now
	std::string instead of char*.  Change all uses.

2003-02-18  Roger Banks <rbanks@colsa.com>

	* load-save.cc (read_ascii_data, read_ascii_data,
	read_mat5_binary_element, save_mat5_binary_element,
	save_ascii_data): Handle cell arrays.
	(write_mat5_cell_array): New function.

2003-02-18  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (DLD_XSRC): Delete log.cc from the list.
	Add sqrtm.cc to the list.

	* DLD-FUNCTIONS/log.cc: Delete.

2003-02-18  Paul Kienzle <pkienzle@users.sf.net>

	* DLD-FUNCTIONS/sqrtm.cc: New file.

2003-02-18  David Bateman <dbateman@free.fr>

	* DLD-FUNCTIONS/lu.cc (Flu): Allow non-square matrices.

2003-02-17  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* load-save.cc (read_binary_file_header, do_load, do_save,
	write_header): No longer static.
	(load_save_format): Move enum decl to load-save.h.

2003-02-15  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* oct-stdstrm.h, oct-stdstrm.cc (octave_base_stdiostream,
	octave_iostdiostream, octave_istdiostram, octave_ostdiostream):
	Combine all functionality into one class, octave_stdiostream.
	Change all uses.	

	* file-io.cc (Ftmpfile, Fmkstemp): New functions.
	* oct-stdstrm.h (octave_iostdiostream): New class.
	(octave_istdiostream::octave_istdiostream,
	octave_istdiostream::create,
	octave_ostdiostream::octave_ostdiostream, octave_ostdiostream::create, 
	octave_iostdiostream::octave_iostdiostream,
	octave_iostdiostream::create): Make close function the last arg.
	Change all uses.

	* c-file-ptr-stream.h (io_c_file_ptr_stream): New class.

2003-02-14  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* octave.cc (maximum_braindamage): Set boolean built-in variables
	to true and false instead of 1.0 and 0.0.
	(octave_main): Likewise.
	* error.cc (Fwarning): Likewise.

	* pager.cc (Fmore): Make the no-arg case work too.

	* ov-str-mat.h (octave_char_matrix_str::is_real_type, 
	octave_char_matrix_str::is_matrix_type,
	octave_char_matrix_str::is_numeric_type): Always return false.

2003-02-13  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* lex.l (<CCHAR>): If we are parsing a command, reset start state.
	Use BEGIN (INITIAL) instead of BEGIN 0.  Use parens around start
	state in BEGIN statements.

2003-02-13  Paul Kienzle <pkienzle@users.sf.net>

	* variables.cc (Fmlock, Fmunlock, Fmislocked): New functions.

	* variables.cc (mlock, munlock, mislocked): New functions.
	* variables.h: Provide decls.

	* symtab.h (symbol_record::unmark_static): New function.

2003-02-12  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* error.cc (reset_error_handler): New function.
	* toplev.cc (main_loop): Use it here.
	* lex.l (reset_parser): Don't set error_state and warning_state here.
	* parse.y (eval_string): Reset parser before calling yyparse.

2003-01-29  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* data.cc (Ffmod): New function.

	* c-file-ptr-stream.cc (c_file_ptr_buf::underflow_common): New
	function.
	* c-file-ptr-stream.h (c_file_ptr_buf::underflow,
	c_file_ptr_buf::uflow): Use it.
	(c_file_ptr_buf): Derive from std::streambuf, not OCTAVE_STD_FILEBUF.
	Don't cache file descriptor.

2003-01-28  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* DLD-FUNCTIONS/minmax.cc: Move min and max functions from here to
	liboctave/dMatrix.cc and liboctave/CMatrix.cc.

2003-01-24  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* DLD-FUNCTIONS/rand.cc: Rewrite to use new octave_rand functions.

2003-01-23  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* oct-stream.cc (octave_base_stream::do_printf): Handle values
	outside the range of integers in int conversions for
	compatibilitiy wtih Matlab.

2003-01-22  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* load-save.cc (get_mat_data_input_line): Handle lines with CR
	only as separator.

	* oct-stream.cc (octave_base_stream::do_printf): Handle Inf and
	NaN in int conversions for compatibility with Matlab.

	* data.cc (symbols_of_data): Doc fix for realmin.

	* cutils.c (octave_raw_vsnprintf): New function.
	* utils.cc (octave_snprintf): Move here from cutils.c.
	(octave_Vsnprintf): Likewise.  Allow octave_raw_vsnprintf to be
	interrupted.
	* utils.h (octave_vsnprintf, octave_snprintf): No longer extern "C".

2003-01-21  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-loop.cc (tree_complex_for_command::eval): Fix typo.

2003-01-16  Mumit Khan  <khan@nanotech.wisc.edu>

	* mk-oct-links: Use $SED if set.
	* mkbuiltins: Likewise.
	* mkdefs: Likewise.
	* mkdocs: Likewise.
	* mkgendoc: Likewise.
	* mkops: Likewise.

2003-01-11  Paul Kienzle <pkienzle@users.sf.net>

	* Makefile.in (gendoc$(BUILD_EXEEXT)): Pass $(BUILD_CXXFLAGS) and
	$(BUILD_LDFLAGS) to compiler.

2003-01-11  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* parse.y (Fassignin): New function.

2003-01-10  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* sighandlers.cc (make_sig_struct): New function.
	(symbols_of_sighandlers): Add DEFCONST for SIG struct.

	* syscalls.cc (Fkill): New function.

2003-01-06  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* oct-stream.cc (get_size): If only one dimension is specified and
	it is zero, also set the other dimension to zero instead of one.

2003-01-04  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* sysdep.cc [__DECCXX]: Add a kluge for some missing template
	functions.

2003-01-03  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-usr-fcn.cc (octave_vr_val): Assert vr_list != 0, not vr_list.
	* variables.cc (builtin_string_variable, builtin_any_variable,
	builtin_real_scalar_variable, bind_builtin_variable): Likewise.

	* TEMPLATE-INST/Array-tc.cc: Provide specialization of
	Array<octave_value>::resize_fill_value before instantiation of
	Array<octave_value>.

	* oct-obj.h (octave_value_list::operator delete): Define version
	of delete operator to correspond to placement new operator.

	* mkgendoc: In generated code, define __USE_STD_IOSTREAM if using
	Compaq C++.

	* Makefile.in (distclean): Also remove doc-files and gendoc.cc.

	* input.cc (initialize_command_input): Use const for
	initialization of char * from literal string.

	* pt-plot.cc (subplot::extract_plot_data): Call single_subsref,
	not subsref.
	* ov.h, ov.cc (single_subsref (const std::string&, const
	octave_value_list&)): Rename from subsref.

	* symtab.cc (symbol_table::rename): Explicitly convert C string to
	std::string so type of second arg of ?: matches third.
	(symbol_table::lookup): Likewise.

	* mappers.cc: Remove std:: qualifiers from C library names.

2003-01-03  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-exp.h (tree_expression::has_magic_end): New pure virtual function.
	* pt-id.h (tree_identifier::has_magic_end): New function.
	* pt-colon.h (tree_colon_expression::has_magic_end): Likewise.
	* pt-idx.h (tree_index_expression::has_magic_end): Likewise.
	* pt-const.h (tree_constant::has_magic_end): Likewise.
	* pt-unop.h (tree_unary_expression::has_magic_end): Likewise.
	* pt-binop.h (tree_binary_expression::has_magic_end): Likewise.
	* pt-assign.h (tree_multi_assignment::has_magic_end): Likewise.
	(tree_simple_assignment::has_magic_end): Likewise.
	* pt-mat.cc (tree_matrix::has_magic_end): Likewise.
	* pt-arg-list.cc (tree_argument_list::has_magic_end): Likewise.

	* pt-arg-list.cc (tree_argument_list::append): Check all
	expression types for magic end token..

	* file-io.cc (Ftmpnam): Improve error checking.
	(symbols_of_file_io): Move definition of P_tmpdir here from dirfns.cc.

	* dirfns.cc (symbols_of_dirfns): Install new built-in constant
	P_tmpdir.

2003-01-02  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* dirfns.cc (symbols_of_dirfns): New function.
	Install new built-in constant filesep.

	* utils.cc (Fisvaranme): New function.
	(valid_identifier): Identifiers can't start with digits!  Doh!

	* lex.l (Fiskeyword): New function.

	* Makefile.in (INCLUDES): Don't forget base-list.h.

	* symtab.cc (symbol_record::define): If definition already exists,
	redefine it instead of replacing it.

	* variables.cc (symbol_exist): Don't use reference when handling
	sr->def ().

	* pt-plot.cc (save_in_tmp_file): octave_value arg is now const.
	* pt-misc.cc (tree_parameter_list::initialize_undefined_elements):
	Likewise.

	* symtab.cc (symbol_record::clear): Don't do anything if the
	symbol record is already undefined.

2003-01-01  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-arg-list.cc (tree_argument_list::append): New function.
	(tree_argument_list::convert_to_const_vector): Don't save and
	set pointer to indexed object if list_includes_magic_end is false.
	* pt-arg-list.h (tree_argument_list::append): Provide decl.
	(tree_argument_list::list_includes_magic_end): New data member.
	(tree_argument_list::tree_argument_list): Initialize it.

	* ov-base.cc (octave_base_value::char_matrix_value,
	octave_base_value::all_strings,	octave_base_value::string_value):
	Attempt conversions here if Vimplicit_num_to_num_ok is true.

	* ov.cc (Vimplicit_num_to_str_ok): Move here from pt-mat.cc and
	make extern.
	* ov.h: Provide decl.

	* oct-stream.cc (printf_value_cache::looking_at_string): Delete.
	(printf_value_cache::string_value): Just attempt conversion.
	(octave_base_stream::do_printf): When doing '%s' format,
	just attempt converstion.

	* file-io.cc (Ffread): Allow size to be omitted even when
	additional arguments are given.

2002-12-31  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-arg-list.cc (F__end__): Fail if rows or columns is negative.
	(tree_argument_list::convert_to_const_vector): Only protect and
	save pointer to the indexed object if it is a constant.

	* syscalls.cc (Fmkfifo): Use long_value instead of cast.

	* ov.h (octave_value::short_value, octave_value::ushort_value,
	octave_value::uint_value, octave_value::long_value,
	octave_value::ulong_value): New functions.

	* syscalls.cc (mk_stat_map, Fgetegid, getgid, geteuid): Likewise.
	Delete unnecessary casts.
	* file-io.cc (Ffgetl, Ffgets, Fftell, Fsscanf): Likewise.
	* toplev.cc (Fsystem): Likewise.

	* ov-file.h (octave_file::double_value,	octave_file::scalar_value):
	Delete unnecessry cast.

	* ov.cc (octave_value::octave_value): Add constructors for
	octave_time, short int, unsigned short int, unsigned int, long
	int, unsigned long int, 

	* ov.h (octave_value::do_subsref (const std::string&, const
	octave_value_list&)): Rename from subsref.  Change all derived classes.

	* input.cc (generate_completion): Delete unused variable prefix_len.

	* ov.h (DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA): Delete volatile
	qualifier for decls of static_type_id and t_id.
	(DEFINE_OV_TYPEID_FUNCTIONS_AND_DATA): Likewise, for def of t_id.

2002-12-30  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* utils.cc (Ffile_in_path): Index args correctly.

	* utils.cc (Ffile_in_path): Call error, not print_usage, for
	invalid option error.
	(Ffile_in_loadpath): Likewise.

	* load-save.cc: Use OCTAVE_LOCAL_BUFFER instead of local automatic
	arrays or using new/delete.

	* lex.l (.): Try another approach to handling EOF here.

	* load-save.cc (read_mat_ascii_data): Use isalpha and isalnum, not
	::isalpha and ::isalnum.

	* defaults.cc (maybe_add_or_del_packages): SCRIPT_FILE arg is now
	a const reference type.

	* ov.h (octave_value::subsref, octave_value::subsasgn,
	octave_value::assign, octave_value::do_non_const_unary_op,
	octave_value::numeric_assign): TYPE arg is now a const reference
	type.  Change all derived classes.

	* ov.cc (octave_value::subsref (const std::string&, const
	octave_value_list&)): Move body here, from ov.h.

	* octave.cc (octave_main): Return 0 at end of function to avoid
	compiler warnings.

2002-12-30  Paul Kienzle <pkienzle@users.sf.net>

	* parse.y: Fix typo in doc string.

2002-12-29  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* DLD-FUNCTIONS/lpsolve.cc (Flpsolve): Rename from Flp_solve.
	(Flpsolve_options): Rename ffrom Flp_solve_options.

2002-12-27  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* parse.y (Fevalin): New function.

	* variables.cc (curr_caller_sym_tab): New global variable.
	* variables.h: Provide decl.
	(initialize_symbol_tables): Initialize it.
	* ov-usr-fcn.cc (octave_user_function::do_multi_index_op):
	Protect	and set it here.

2002-12-26  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* utils.cc (search_path_for_file): Second arg now string_vector.
	Use find_first_of, not find.
	(search_path_for_all_files): Second arg now string_vector.
	Use find_all_first_of, not find_all.
	(Ffile_in_path): Accept cell array of strings as first argument.
	(Ffile_in_loadpath): Likewise.

	* dynamic-ld.cc (octave_dynamic_loader::load): New arg, file_name.
	(octave_dynamic_loader::do_load): Likewise.  If file_name is not
	empty, use it instead of searching in path.

	* parse.y (load_fcn_from_file): Use find_first_of to perform search.

	* ov-cell.cc (octave_cell::all_strings): New function.
	* ov-cell.h: Provide decl.

2002-12-25  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* parse.y (function_end): If parsing a nested function, set
	lexer_flags.parsing_nested_function to -1.
	(frob_function): If lexer_flags.parsing_nested_function is
	negative, set it to zero.
	* lex.h (lexical_feedback::parsing_nested_function): Now int.
	Change uses as needed.

	* lex.l (NESTED_FUNCTION_BEGIN): Rename from NESTED_FUNCTION_START.
	Now an exclusive start state.
	(NESTED_FUNCTION_END): New exclusive start state.
	(is_keyword): When matching a new function keyword in a nested
	function context, explicitly return END and set start state to
	NESTED_FUNCTION_END.
	(.): Accept EOF here too.

	* variables.cc (link_to_builtin_or_function): Maybe prepend parent
	function name symbol name.

	* parse.y (parent_function_name): New variable.
	(fcn_name): New non-terminal.
	(function2): Use it.
	(parsed_fcn_name): Fold into fcn_name.
	(function_end): Don't call check_for_garbage_after_fcn_def.
	Set lexer_flags.parsing_nested_function on EOF.
	* parse.h: Provide decl for parent_function_name.

	* ov-usr-fcn.h (octave_user_function::mark_as_nested_function,
	(octave_user_funciton::is_nested_function): New functions.
	(octave_user_function::nested_function): New data member.
	(octave_user_function::do_multi_index_op): Maybe protect and set
	curr_parent_function pointer.
	* parse.y (frob_function): Maybe mark as nested function.

	* toplev.cc (curr_parent_function): New global variable.
	* toplev.h: Provide decl.

	* lex.l (check_for_garbage_after_fcn_def): Delete.
	* lex.h: Delete decl.

	* lex.l (prep_for_nested_function): New function.
	(<NESTED_FUNCTION_START>): Use it here.
	(is_keyword): And here.
	(lookup_identifier): Maybe prepend parent function name.

	* variables.cc (initialize_symbol_tables): Give names to the three
	main symbol tables.
	* symtab.cc (symbol_table::lookup, symbol_table::rename): Print
	debugging info if Vdebug_symtab_lookups is nonzero.
	(debug_symtab_lookups): New function.
	(Vdebug_symtab_lookups): New static varaible.
	(symbols_of_symtab): DEFVAR it.
	* symtab.h (symbol_table::table_name): New member variable.
	(symtab_count): New static member variable.
	(symbol_table::symbol_table): Handle table name.

2002-12-24  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* parse.y (frob_function): Don't give nested functions the same
	name as the function file.

	* lex.h (lexical_feedback::parsing_nested_function): New data member.
	* lex.l (lexical_feedback::init): Initialize it to false.
	(<NESTED_FUNCTION_START>): Set lexer_flags.parsing_nested_function
	to true.

	* parse.y (symtab_context): Now a stack.  Change all uses.

	* lex.l (NESTED_FUNCTION_START): New start state to handle
	"function" keyword in a nested function context.
	(prep_for_function): New function.
	(is_keyword): Allow functions to be nested in function files.

	* lex.l (is_keyword): Maybe ignore END tokens.
	Increment and decrement end_tokens_expected as appropriate.
	(handle_identifier): If is_keyword returns -1, return immediately.
	({IDENT}{S}*): Do nothing if handle_identifier returns -1.

	* parse.y (end_tokens_expected): New variable.
	(parse_fcn_file): Protect and set it.

	* parse.y (begin_obj_idx): Increment
	lexer_flags.looking_at_object_index.
	(postfix_expr): Decrement it as appropriate here.

	* lex.h (lexical_feedback::looking_at_object_index): Now int.

	* parse.y (postfix_expr): Reset	lexer_flags.looking_at_object_index
	in () and {} cases too.

2002-12-21  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-arg-list.cc (indexed_object, indexed_position):
	New file-scope static variables.
	(tree_argument_list::convert_to_const_vector): New arg, object.
	Protect and set indexed_object and indexed_position.
	(F__end__): New function.

	* octave-lvalue.h (octave_lvalue::object): New member function.
	* pt-idx.cc (make_value_list): New arg, object.  Change all
	callers.  Pass object to convert_to_const_vector.

	* lex.h (lexical_feedback.looking_at_object_index): New data member.
	* lex.l (lexical_feedback::init): Initialize it.
	(is_keyword): If looking at object index, end is not a keyword.
	(handle_identifier): If end is not a keyword, transform it to __end__.
	* parse.y (begin_obj_idx): New non-terminal.
	(postfix_expr): Use it.

	* defun.cc (install_builtin_function): New arg, can_hide_function.
	* defun-int.h: Fix decl.
	(DEFCONSTFUN_INTERNAL): New macro.
	* defun.h (DEFCONSTFUN): New macro.
	* mkbuiltins (XDEFCONSTFUN_INTERNAL): New macro.
	* mkgendoc: Likewise.
	* Makefile.in (DEFUN_PATTERN): Make it work for DEFCONSTFUN too.
	* symtab.h (symbol_record::can_hide_function): New data member.
	(symbol_record::symbol_record): Initialize it.
	* symtab.cc (symbol_record::variable_reference): Also check
	can_hide_function flag.

2002-12-20  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* DLD-FUNCTIONS/time.cc (extract_tm): Use int_value() instead of
	casting double_value() to int.

	* ov.cc (octave_value::next_subsref): Arg "skip" is now size_t.

	* oct-obj.h (octave_value_list::octave_value_list (double),
	octave_value_list::octave_value_list (const Matrix&),
	octave_value_list::octave_value_list (const DiagMatrix&),
	octave_value_list::octave_value_list (const RowVector&),
	octave_value_list::octave_value_list (const ColumnVector&),
	octave_value_list::octave_value_list (const Complex&),
	octave_value_list::octave_value_list (const ComplexMatrix&),
	octave_value_list::octave_value_list (const ComplexDiagMatrix&),
	octave_value_list::octave_value_list (const ComplexRowVector&),
	octave_value_list::octave_value_list (const ComplexColumnVector&),
	octave_value_list::octave_value_list (const char *),
	octave_value_list::octave_value_list (const std::string&),
	octave_value_list::octave_value_list (const string_vector&),
	octave_value_list::octave_value_list (double, double, double),
	octave_value_list::octave_value_list (const Range&): Delete.
	Adjust uses of octave_value/octave_value_list to handle this change.

	* ov.cc (octave_value::octave_value (int)): New constructor.
	* ov.h: Provide decl.
	In files that construct integer-valued octave_value objects, use
	ints instead of casing to double.

2002-12-19  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* load-save.cc (read_mat_ascii_data): Allow commas to separate values.
	Try harder to convert filenames to valid identifiers in a
	Matlab-compatible way.

2002-12-18  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in: No need to add $(LIBKPATHSEA) to LINK_DEPS, since
	it is not included in liboctave.

2002-12-18  JD Cole <jdcole@san.rr.com>

	* pt-check.cc (tree_checker::visit_subplot_axes,
	tree_checker::visit_do_until_command): New functions.
	* pt-check.h: Provide decl.

2002-12-17  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* variables.cc (Fclear): Fix off-by-one error.

	* oct-stream.cc (octave_base_stream::do_gets): Correctly read
	last line of file even if it does not end with new line
	character.

	* pt-select.cc (equal): Don't look up == op, just try it and see
	whether it works.

	* oct-stream.cc (printf_format_list::printf_format_list):
	Handle empty format string.

2002-12-06  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-mat.cc (class tm_row_const::tm_row_const_rep): Derive from
	octave_base_list instead of SLList.  Fix tm_row_const member
	functions as needed, change all uses.
	(class tm_const): Derive from octave_base_list, not SLList.  Fix
	member functions as needed, change all uses.
	* pt-mat.h (class tree_matrix): Derive from octave_base_list
	instead of including SLList object as data member.  Fix member
	functions as needed, change all uses.

	* pt-idx.h (tree_index_expression::args,
	tree_index_expression::arg_nm, tree_index_expression::dyn_field):
	Now std::list, not SLList.  Fix member functions as needed, change
	all uses.

	* oct-map.h (Octave_map::map): Now std::map instead of CHMap.
	Fix member functions as needed, change all uses.

	* oct-lvalue.h (octave_lvalue::idx): Now std::list instead of
	SLList object.  Fix member functions as needed, change all uses.

	* dynamic-ld.cc (octave_shlib_list::lib_list): Now std::list
	instead of DLList object.  Fix member functions as needed, change
	all uses.

	* ov.h (octave_value::subsref, octave_value::subsasgn):
	Index arg is not std::list, not SLList.  Change all derived
	classes, all uses.

	* pt-stmt.h (tree_statement_list): Derive from base_octave_list
	object instead of including SLList object as data member.  Fix
	member functions as needed, change all uses.
	* pt-select.h (tree_switch_case_list): Likewise.
	(tree_if_command_list): Likewise.
	* pt-misc.h (tree_parameter_list, tree_return_list,
	tree_va_return_list): Likewise.
	* pt-plot.h (subplot_list): Likewise.
	* pt-mat.h (tree_matrix): Likewise.
	* pt-decl.h (tree_decl_init_list): Likewise.
	* pt-arg-list.h (tree_argument_list): Likewise.
	* comment-list.h (octave_comment_list): Likewise.

	* BaseSLList.cc, DLList.cc, Map.cc, SLList.cc, SLStack.cc,
	Stack.cc: Delete.
	* Makefile.in (DIST_SRC): Delete them from the list.

	* BaseSLList.h, DLList.h, Map.h, Pix.h, SLList.h, SLStack.h,
	Stack.h: Delete
	* Makefile.in (INCLUDES): Delete them from the list.

	* Map-oct-obj.cc, SLList-expr.cc, SLList-misc.cc, SLList-plot.cc,
	SLList-tc.cc, SLList-tm.cc: Delete.
	* Makefile.in (TI_XSRC): Delete them from the list.

	* ov-base-mat.cc (octave_base_matrix::assign): Pass
	MT::resize_fill_value () as third arg for ::assign.	

	* Cell.h (Cell::resize_fill_value): Use empty Matrix object, not
	undefined octave_value object.
	(Cell::Cell (int, int, const octave_value&)): Use
	resize_fill_value () as default value, not undefined octave_value
	object.

2002-12-05  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (DEFUN_PATTERN): Make it work for DEFCMD too.

	* base-list.h: New file.

2002-12-04  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* toplev.cc (octave_interpreter_ready): New global variable.
	* toplev.h: Provide decl.

	* octave.cc (octave_main): Call execute_default_pkg_add_files just
	before executing startup files.  Set octave_interpreter_ready to
	true before calling execute_default_pkg_add_files.

	* defaults.cc (maybe_add_or_del_packages, default_load_path,
	update_load_path_dir_path): New static functions. 
	(set_default_path, loadpath): Call update_load_path_dir_path.
	(symbols_of_defaults): Use DEFVAR, not DEFCONST for DEFAULT_LOADPATH.
	(execute_default_pkg_add_files): New function.
	* defaults.h.in: Provide decl.

	* utils.cc (search_path_for_all_files): New function.
	(Ffile_in_loadpath, Ffile_in_path): Allow search to return all
	files in the path.

	* Cell.cc (Cell (const string_vector&)): New constructor.

	* oct-obj.cc (octave_value_list::assign): Allow optional fill
	value for resizing.
	* oct-map.cc (Octave_map::assign): Pass fill_value in initial
	assignment too.

2002-12-03  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* TEMPLATE-INST/Map-tc.cc, TEMPLATE-INST/Map-fnc.cc: Delete.
	* Makefile.in (TI_XSRC): Delete them from the list.

	* fn-cache.h (octave_fcn_file_name_cache::cache): Now std::map,
	not CHMap.

	* TEMPLATE-INST/SLStack-i.cc, TEMPLATE-INST/SLStack-ovl.cc,
	TEMPLATE-INST/SLStack-pc.cc, TEMPLATE-INST/SLStack-str.cc,
	TEMPLATE-INST/SLStack-sym.cc, TEMPLATE-INST/SLStack-tok.cc,
	TEMPLATE-INST/SLStack-ue.cc, TEMPLATE-INST/SLStack-ui.cc:
	Delete unnecessary files.
	* Makefile.in (TI_XSRC): Delete them from the list.

	* toplev.cc (octave_atexit_functions): Now std::stack, not SLStack.
	* pt-plot.cc (tmp_files): Likewise. 
	* lex.l (token_stack): Likewise.
	(class bracket_brace_paren_nesting_level): Make context a data
	member instead of deriving from SLStack object.
	Use std::stack instead of SLStack.
	* ov-usr-fcn.h (octave_user_function::saved_args): Likewise.
	* symtab.h (symbol_record::context): Likewise.
	(symbol_record::global_link_context): Likewise.

	* unwind-prot.h (unwind_protect::elt_list): Rename from list.
	Now std::stack, not SLStack.

	* pt-stmt.h (tree_statement_list): Make list member data instead
	of deriving from SLList object.
	* pt-select.h (tree_switch_case_list): Likewise.
	(tree_if_command_list): Likewise.
	* pt-plot.h (subplot_list): Likewise.
	* pt-mat.h (tree_matrix): Likewise.
	* pt-decl.h (tree_decl_init_list): Likewise.
	* pt-arg-list.h (tree_argument_list): Likewise.
	* comment-list.h (octave_comment_list): Likewise.

	* defun.h (DEFCMD): Rename from DEFUN_TEXT.  Provide DEFUN_TEXT as
	an alias for DEFCMD.  Change all uses.

	* variables.cc (at_top_level): New function.
	(do_who, Fmark_as_command, Funmark_command): Use it.

	* lex.l (COMMAND_START): Rename from TEXT_FCN.  Change all uses.
	(MATRIX_START): Rename from MATRIX.  Change all uses.
	* variables.cc (command_function_set): Rename from
	text_function_set.
	(mark_as_command): Rename from mark_as_text_function.
	(is_marked_as_command): Rename from is_marked_as_text_function.
	(Fmark_as_command): Rename from Fmark_as_text_function.
	(Funmark_command): Rename from Funmark_text_function.
	(is_command_name): Rename from is_text_function_name.
	* symtab.h (symbol_record::COMMAND): Rename from TEXT_FUNCTION.
	(symbol_record::mark_as_command): Rename from mark_as_text_function.
	(symbol_record::unmark_command): Rename from
	symbol_record::unmark_text_function.
	(symbol_record::is_command): Rename from
	symbol_record::is_text_function.
	(symbol_record::symbol_def::mark_as_command): Rename from
	symbol_record::symbol_def::mark_as_text_function.
	(symbol_record::symbol_def::unmark_command): Rename from
	symbol_record::symbol_def::unmark_text_function.
	(symbol_record::symbol_def::is_command): Rename from
	symbol_record::symbol_def::is_text_function.

	* pt-jump.h, pt-jump.cc: Undo previous changes.
	* parse.y: Undo previous changes for brea, continue, and return.

2002-11-25  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-stmt.cc (tree_statement::eval): Allow the lookup to execute
	script files.  If script file has been executed, don't bother to
	call expr->rvalue ().

2002-11-22  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (OCTINTERP_LINK_DEPS): Include $(FLIBS) in
	OCTINTERP_LINK_DEPS.

	* variables.cc (text_function_set): New static data.
	(mark_as_text_function, unmark_text_function,
	is_marked_as_text_function, Fmark_as_text_function,
	Funmark_text_function): New functions.
	(is_text_function_name): Handle functions marked as text functions
	in special list, not just those marked in the symbol record.
	* symtab.h (symbol_record::mark_as_text_function,
	symbol_record::unmark_text_function,
	symbol_record::symbol_def::mark_as_text_function,
	symbol_record::symbol_def::unmark_text_function): New functions.

	* oct-map.h (Octave_map::rows, Octave_map::columns): New functions.
	* ov-struct.h (octave_struct::rows, octave_struct::columns,
	octave_struct::length): New functions.

2002-11-21  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* oct-conf.h.in (OCTAVE_CONF_MKOCTFILE_SH_LDFLAGS): New macro.
	* toplev.cc (octave_config_info): Add it to the struct.

	* lex.l (<TEXT_FCN>): If yytext begins with # or %, don't
	recognize it as a string.

	* oct-map.h (Octave_map::operator[]): New const version.
	* oct-map.cc (equiv_keys): New function.
	(assign (const idx_vector&, const Octave_map&)): New function.
	* ov-struct.cc (octave_struct::subsasgn): Use it.

2002-11-20  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* version.h (OCTAVE_VERSION): Now 2.1.40.

	* p-b-b.cc, op-bm-bm.cc, op-chm.cc, op-cm-cm.cc, op-cm-cs.cc,
	op-cm-m.cc, op-cm-s.cc, op-cs-cm.cc, op-cs-cs.cc, op-cs-m.cc,
	op-cs-s.cc, op-fil-b.cc, op-fil-bm.cc, op-fil-cm.cc, op-fil-cs.cc,
	op-fil-lis.cc, op-fil-m.cc, op-fil-rec.cc, op-fil-s.cc,
	op-fil-str.cc, op-list.cc, op-m-cm.cc, op-m-cs.cc, op-m-m.cc,
	op-m-s.cc, op-range.cc, op-s-cm.cc, op-s-cs.cc, op-s-m.cc,
	op-s-s.cc, op-str-str.cc, op-bm-b.cc, op-cell.cc, BaseSLList.cc,
	BaseSLList.h, ChangeLog, Map.cc, Map.h, SLList.cc, SLList.h,
	SLStack.cc, SLStack.h, Stack.cc, Stack.h, oct-map.cc, oct-map.h,
	oct-obj.cc, oct-obj.h, c-file-ptr-stream.cc, c-file-ptr-stream.h,
	ov-base-mat.cc, ov-base-scalar.cc, ov-base-scalar.h, ov-base.cc,
	ov-base.h, ov-bool-mat.cc, ov-bool-mat.h, ov-bool.cc, ov-bool.h,
	ov-builtin.cc, ov-builtin.h, ov-ch-mat.cc, ov-ch-mat.h,
	ov-colon.cc, ov-complex.cc, ov-complex.h, ov.h, ov-cx-mat.cc,
	ov-cx-mat.h, ov-fcn.cc, ov-fcn.h, ov-file.cc, ov-file.h,
	ov-list.cc, ov-list.h, ov-mapper.cc, ov-mapper.h, ov-range.cc,
	ov-range.h, ov-re-mat.cc, ov-re-mat.h, ov-scalar.cc, ov-scalar.h,
	ov-str-mat.cc, ov-str-mat.h, ov-struct.cc, ov-struct.h,
	ov-typeinfo.cc, ov-typeinfo.h, ov-usr-fcn.cc, ov-usr-fcn.h,
	ov-va-args.cc, ov.cc, ov-base-mat.h, procstream.cc, procstream.h,
	pt-arg-list.cc, pt-arg-list.h, pt-binop.cc, pt-binop.h,
	pt-check.cc, pt-check.h, pt-cmd.cc, pt-cmd.h, pt-colon.cc,
	pt-colon.h, pt-const.cc, pt-const.h, pt-decl.cc, pt-decl.h,
	pt-except.cc, pt-except.h, pt-exp.cc, pt-exp.h, pt-id.cc, pt-id.h,
	pt-idx.cc, pt-idx.h, pt-jump.cc, pt-jump.h, pt-loop.cc, pt-loop.h,
	pt-mat.cc, pt-mat.h, pt-misc.cc, pt-misc.h, pt-pr-code.cc,
	pt-pr-code.h, pt-select.cc, pt-select.h, pt-stmt.cc, pt-stmt.h,
	pt-unop.cc, pt-unop.h, pt.cc, pt.h, symtab.h, token.cc, token.h,
	unwind-prot.cc, unwind-prot.h, ov-base-nd-array.cc,
	ov-re-nd-array.h, ov-re-nd-array.cc, ov-base-nd-array.h,
	comment-list.h, comment-list.cc, DLList.cc, DLList.h,
	ov-dld-fcn.h, ov-dld-fcn.cc, Cell.cc, Cell.h, pt-cell.h,
	pt-cell.cc, ov-cell.h, ov-cell.cc, pt-plot.cc, pt-plot.h,
	pt-assign.cc, pt-assign.h, pt-bp.cc, pt-bp.h, symtab.cc,
	ov-cs-list.h, ov-cs-list.cc:
	Use "defined (USE_PRAGMA_INTERFACE_IMPLEMENTATION)" instead of 
	"! defined (NO_PRAGMA_INTERFACE_IMPLEMENTATION)".

2002-11-19  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* oct-obj.h (octave_value_list::~octave_value_list): New function.

2002-11-19  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* DLD-FUNCTIONS/odessa.cc (odessa_user_j): Put T in args(1), not
	args(0).

2002-11-18  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* parse.y (symtab_context): Now extern.
	* parse.h: Provide decl.
	* lex.l (reset_parser): Set it to 0.

2002-11-15  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-bp.cc (octave_debug_on_interrupt_state): New global variable.
	* pt-bp.h: Provide decl.
	(MAYBE_DO_BREAKPOINT): Check it.

	* sighandlers.cc (sigint_handler): Handle debug_on_interrupt.
	(Vdebug_on_interrupt): New static variable.
	(symbols_of_sighandlers): New function.  DEFVAR Vdebug_on_interrupt.
	(debug_on_interrupt): New function.

	* lex.h (YY_FATAL_ERROR): Use OCTAVE_QUIT here.

	* utils.cc (toplevel): Delete variable.

	* sighandlers.cc (OCTAVE_MEMORY_EXHAUSTED_ERROR): Delete.

2002-11-14  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* sighandlers.cc (octave_new_handler): Delete.
	(install_signal_handlers): Don't call set_new_handler.
	* toplev.cc (main_loop): Handle bad_alloc exception here.

	* sighandlers.cc (octave_new_handler): Allow return after
	OCTAVE_JUMP_TO_TOP_LEVEL.
	(sigfpe_handler): Likewise.

2002-11-13  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* variables.cc (is_variable): New static function.
	(generate_struct_completions): Only evaluate objects that look
	like variables.

2002-11-12  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-jump.h, pt-jump.cc (tree_break_expression,
	tree_continue_expression, tree_return_expression): Rename from
	tree_break_command, tree_continue_command, tree_return_command.
	Implement as expressions that return TRUE instead of commands.
	Change all uses.
	* parse.y (make_break_expression, make_continue_expression,
	make_return_expression): Rename from make_break_command,
	make_continue_command, make_return_command.  Change all uses.
	(jump_expr): Rename from jump_command, type is now expression.
	Use in simple_expr, not command.	

	* toplev.cc (octave_initialized): New global variable.
	(main_loop): Set it to true here.
	* sighandlers.cc (sigint_handler): Exit immediately if we have not
	finished init process.

	* load-save.cc (extract_keyword): Return std::string, not char *.
	Change all uses.
	(read_ascii_data): Likewise.
	(read_binary_data): Likewise.
	(read_hdf5_data): Likewise.
	(read_mat_ascii_data): Likewise.
	(read_mat_binary_data): Likewise.
	(do_load): Name and doc are now std::string objects, not char *.
	(install_loaded_variable): Likewise.
	(read_hdf5_data): Doc is now std::string object, not char *&.
	(read_mat_ascii_data): Call OCTAVE_QUIT in strategic locations.
	(get_lines_and_columns): Likewise.

	* toplev.cc (main_loop): Call OCTAVE_QUIT after executing command.
	* parse.y (parse_and_execute (FILE *)): Likewise.

2002-11-12  Joseph P. Skudlarek  <jskud@jskud.com>

	* input.cc (match_sans_spaces_semi): Rename from match_sans_spaces.
	Ignore trailing semicolons too.  Change all callers.

2002-11-11  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* octave.gperf: Allow "persistent" as a synonym for static.

	* defun-int.h (DEFUN_MAPPER_INTERNAL): Don't forget doc string
	when creating octave_mapper object.

	* sysdep.cc (BSD_init): Avoid failure if FP_X_DNML is not defined.

2002-11-08  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* cutils.c: Be sure to always return buf.

	Undo previous vnprintf changes.  The portable snprintf I found
	does not handle floating point conversions...
	
2002-11-07  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (liboctinterp.$(LIBEXT)): Include $(XERBLA) here.
	(octave.$(EXEEXT)): Not here.
	(liboctinterp.$(SHLEXT)): Include $(PIC_XERBLA) here.

	* main.c: Move decl for xerbla here from octave.cc.

	* cutils.c (octave_vsnprintf): Use portable_snprintf to avoid
	having to cope with all kinds of buggy implementations.

	* snprintf.c: New file.
	* Makefile.in (DISTFILES): Add it to the list.

	* oct-snprintf.h: New file.
	* Makefile.in (INCLUDES): Add it to the list.

	* oct-snprintf.c: New file.
	* Makefile.in (DIST_SRC): Add it to the list.

	* toplev.cc (main_loop): Use SET_OCTAVE_INTERRUPT_IMMEDIATELY
	instead of assigning octave_interrupt_immediately.

2002-11-06  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* utils.cc (jump_to_top_level): Delete.

	* toplev.cc (toplevel): Delete.
	(main_loop): Adapt to new signal/exception handling scheme.

	* sighandlers.cc (octave_signal_mask, octave_save_signal_mask,
	octave_restore_signal_mask): Move to libcruft/misc/quit.cc.
	(sigint_handler) [USE_EXCEPTIONS_FOR_INTERRUPTS]: set
	octave_interrupt_state.  Only jump if octave_interrupt_immediately
	is true, and then only to enclosing context.

	* lex.h (YY_FATAL_ERROR): Use OCTAVE_JUMP_TO_TOP_LEVEL, not
	jump_to_top_level.
	* sighandlers.cc (octave_new_handler, sigfpe_handler, endif,
	sigpipe_handler): Likewise.

	* input.cc (gnu_readline): Surround call to
	command_editor::readline with
	BEGIN_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE and 
	END_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE.

	* data.cc, oct-stream.cc, ov-cell.cc, ov-mapper.cc, ov-re-mat.cc,
	ov.cc, pr-output.cc, pt-loop.cc, pt-stmt.cc, xdiv.cc, xpow.cc,
	DLD-FUNCTIONS/balance.cc, DLD-FUNCTIONS/besselj.cc,
	DLD-FUNCTIONS/filter.cc, DLD-FUNCTIONS/find.cc,
	DLD-FUNCTIONS/kron.cc, DLD-FUNCTIONS/log.cc,
	DLD-FUNCTIONS/minmax.cc, DLD-FUNCTIONS/qz.cc,
	DLD-FUNCTIONS/rand.cc, DLD-FUNCTIONS/sort.cc: Sprinkle with
	OCTAVE_QUIT.

	* DLD-FUNCTIONS/odessa.cc (Fodessa): Correctly extract bsub from
	function arg.

2002-11-04  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* cutils.c (octave_vsnprintf): Handle C99 snprintf semantics.

	* oct-obj.h (octave_value_list::operator =): Copy names too.
	(octave_value_list::octave_value_list (const octave_value_list&)):
	Likewise.

2002-11-01  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* version.h (OCTAVE_VERSION): Now 2.1.39.

	* variables.cc (generate_struct_completions): Temporarily reset
	discard_error_messages and error_state
	(looks_like_struct): Temporarily reset Vwarning option,
	error_state, and discard_error_messages.

	* pt-idx.cc (tree_index_expression::eval_error): Now const.
	(tree_index_expression::get_struct_index): Require valid identifier.
	(tree_index_expression::make_arg_struct,
	tree_index_expression::rvalue, tree_index_expression::lvalue):
	Handle possible error from get_struct_index.

	* utils.cc (valid_identifier): Move here from load-save.cc.
	* utils.h: Provide decl.

	* input.cc (generate_possible_completions): Call
	command_editor::filename_completion_desired here.
	(generate_possible_completions): Don't generate struct completions
	if text contains directory separator or "..".

2002-10-31  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* DLD-FUNCTIONS/odessa.cc (odessa_user_f, odessa_user_j,
	odessa_user_b): Reorder args for consistency with other solvers.
	(Fodessa): Use extract_function to set args.
	(odessa_user_j): Rename from odessa_user_mf.

	* DLD-FUNCTIONS/fsolve.cc (fsolve_user_function, fsolve_user_jacobian):
	Print warning if user returns complex value.
	* DLD-FUNCTIONS/quad.cc (quad_user_function): Likewise.
	* DLD-FUNCTIONS/lsode.cc (lsode_user_function, lsode_user_jacobian):
	Likewise.
	* DLD-FUNCTIONS/dassl.cc (dassl_user_function, dassl_user_jacobian):
	Likewise.
	* DLD-FUNCTIONS/dasrt.cc (dasrt_user_f, dasrt_user_cf, dasrt_user_j):
	Likewise. 
	* DLD-FUNCTIONS/daspk.cc (daspk_user_function, daspk_user_jacobian):
	Likewise.

	* DLD-FUNCTIONS/daspk.cc (daspk_user_jacobian): New function.
	(Fdaspk): Handle extracting Jacobian from function argument.

	* DLD-FUNCTIONS/fsolve.cc (fsolve_user_function): New function.
	(Ffsolve): Handle extracting Jacobian from function argument.

	* Makefile.in (%.oct): Depend on octave$(EXEEXT) so that octave
	will be built before any .oct files.
	(all): Depend on stamp-oct-links.
	(octave$(EXEEXT)): Don't depend on stamp-oct-links.

	* ov-base.cc (octave_base_value::subsasgn): Handle default numeric
	case here.
	* ov-base-mat.cc (octave_base_matrix<MT>::subsasgn): Delete.

2002-10-30  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (OCT_LINK_DEPS): Add $(BLAS_LIBS), $(FFTW_LIBS), and
	$(FLIBS).

2002-10-29  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* version.h (OCTAVE_VERSION): Now 2.1.38.

	* utils.cc (octave_vformat): Get return value from
	streambuf::vform.

	* DLD-FUNCTIONS/fsolve.cc (Ffsolve): Always return solution.
	Don't barf on nargout == 3.

	* pt-idx.h (tree_index_expression::dyn_field): New data member.
	* pt-idx.cc (tree_index_expression::tree_index_expression
	(tree_expression*, tree_expression*, int, int)): New constructor.
	(tree_index_expression::append (tree_expression*)): New function.
	(tree_index_expression::get_struct_index): New function.
	(tree_index_expression::make_arg_struct): Handle dynamic fields.
	(tree_index_expression::rvalue): Likewise.
	(tree_index_expression::lvalue): Likewise.

	* parse.y (make_indirect_ref (tree_expression*, tree_expression*)):
	New function.
	(indirect_ref_op): New non-terminal.
	(postfix_expr): Use it.
	Recognize dynamic struct field references.
	(parsing_indir): Delete unused non-terminal.

	* lex.l ("("): Set lexer_flags.looking_at_indirect_ref to false here.

	* pt-idx.cc (tree_index_expression::name): Simplify.

2002-10-28  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* oct-conf.h.in (OCTAVE_CONF_HAVE_DLOPEN_API,
	OCTAVE_CONF_HAVE_LOADLIBRARY_API, OCTAVE_CONF_HAVE_SHL_LOAD_API):
	Delete.
	* toplev.cc (octave_config_info): Delete them from the struct

	* load-save.cc (read_ascii_data): Use octave_read_double and
	octave_read_complex so that we handle Inf, NaN, and NA.
	(read_mat_ascii_data): Likewise.
	(save_ascii_data): Use octave_write_double andoctave_write_complex.

2002-10-25  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* toplev.cc (octave_config_info): Rename WITH_DYNAMIC_LINKING to
	ENABLE_DYNAMIC_LINKING.
	* oct-conf.h.in: Likewise.
	* mkbuiltins: Likewise.
	* fn-cache.cc (file_name_cache_elt::update): Likewise.
	* Makefile.in: Likewise.

2002-10-24  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* cutils.c (octave_vsnprintf): Buffer and buffer size now static.
	* utils.cc (octave_vformat): Don't free buffer returned from
	octave_vsnprintf here.

	* ov-usr-fcn.cc (va_arg, va_start, vr_val): Only print warning
	once per session.

	* ov-mapper.cc (octave_mapper::apply): Don't try real_type case if
	arg is a string and we have a ch_map_fcn.

	* Makefile.in: Add $(LIBKPATHSEA) to $(OCTAVE_LIBS) if
	$(INCLUDE_LINK_DEPS) is false, not if $(SHARED_LIBS) is false.

2002-10-23  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* DLD-FUNCTIONS/daspk.cc (daspk): Use set_options, not copy. 
	* DLD-FUNCTIONS/dasrt.cc (dasrt): Likewise.
	* DLD-FUNCTIONS/dassl.cc (dassl): Likewise.
	* DLD-FUNCTIONS/fsolve.cc (fsolve): Likewise.
	* DLD-FUNCTIONS/lsode.cc (lsode): Likewise.
	* DLD-FUNCTIONS/odessa.cc (Fodessa): Likewise.
	* DLD-FUNCTIONS/quad.cc (Fquad): Likewise.

2002-10-22  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* oct-map.cc (Octave_map::assign): Fix typo in resizing.

	* pt-loop.cc (tree_complex_for_command::eval): Only return list
	for val if struct array has more than one element.
	(tree_simple_for_command::eval): Likewise.

	* ov-struct.cc (octave_struct::print_raw): Don't create
	octave_list directly, use octave_value (const octave_value_list&)
	constructor instead.
	Call print_with_name for tmp, not val(0).

	* version.h (OCTAVE_VERSION): Now 2.1.37.
	(OCTAVE_CONTRIB_STATEMENT): New macro.
	(OCTAVE_STARTUP_MESSAGE): Use it.

2002-10-17  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* data.cc (fill_matrix): If nargin is zero, use val, not 0.0.

	* main.c: New file.
	* octave.h: New file.
	* octave.cc (octave_main): Rename from main.
	Include octave.h.
	* Makefile.in (OBJECTS): Add octave.o, builtins.o, and ops.o to
	the list.
	(octave): Depend on and link main.o, not octave.o, builtins.o, and
	ops.o (they are now in liboctinterp).
	(DEP_5): Add main.c here.

	* oct-conf.h.in: No need to substitute OCTAVE_CONF_OCTAVE_LITE.
	* toplev.cc (octave_config_info): Likewise, don't include it in
	struct.

	* mkbuiltins: Remove check for OCTAVE_LITE, since it is now
	implied by WITH_DYNAMIC_LINKING.
	* Makefile.in: Likewise, replace tests for OCTAVE_LITE with tests
	for WITH_DYNAMIC_LINKING instead.

	* oct-conf.h.in: Use OCTAVE_CONF_HAVE_DLOPEN_API,
	OCTAVE_CONF_HAVE_LOADLIBRARY_API, and
	OCTAVE_CONF_HAVE_SHL_LOAD_API instead of OCTAVE_CONF_WITH_DL and
	OCTAVE_CONF_WITH_SHL.
	* toplev.cc (octave_config_info): Likewise.

2002-10-16  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* help.cc (display_help_text): Quote output file name for Cygwin.

	* Makefile.in (install-lib): Don't bother with versions for
	$(SHLBIN) files.

	* help.cc (display_help_text): Match zero or more comment
	characters instead of one or more.

	* Makefile.in (install-oct): Process files from $(DLD_DEF_FILES),
	not $(DLD_SRC).  Look for them in current directory, not $(srcdir).

2002-10-15  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-mapper.cc (octave_mapper::apply): Handle real and complex
	types first.  If the arg is something else, try ch_map_fcn if it
	is defined.

2002-10-15  Paul Kienzle <pkienzle@users.sf.net>

	* Makefile.in: If building shared but not static libs, only set
	XERBLA to the location of the pic object file if FPICFLAG is
	defined.

2002-10-14  John W. Eaton  <jwe@bevo.che.wisc.edu>

	*  DLD-FUNCTIONS/minmax.cc, DLD-FUNCTIONS/getrusage.cc, data.cc,
	file-io.cc, ov-base.cc, ov-bool-mat.cc, ov-ch-mat.cc,
	ov-complex.cc, ov-cx-mat.cc, ov-range.cc, ov-re-mat.cc,
	ov-re-nd-array.cc: Change all uses of octave_Inf, octave_NA, and
	octave_NaN to be calls to lo_ieee_Inf_value, lo_ieee_NA_value, and
	lo_ieee_NaN_value instead of using the constants directly to avoid
	linking problem with Cygwin.

	* Makefile.in (install): No need to use cd to create links.

2002-10-14  Paul Kienzle <pkienzle@users.sf.net>

	* Makefile.in: Merge liboctave with liboct-readline and
	liboct-pathsearch.
	Use link dependencies for shared libs if INCLUDE_LINK_DEPS.
	(LIBRARIES): If doing shared libs, include versioned library in	list.
	(liboctinterp.$(SHLEXT), liboctinterp.$(SHLEXT_VER)): Reverse
	actions -- build unversioned library, symbolic link adds version
	info.
	(install, uninstall): Handle link and load forms of the library
	separately.

	* toplev.cc (octave_config_info): Remove LIBOCT_READLINE and
	LIBOCT_PATHSEARCH, add LIBREADLINE.
	* oct-conf.h.in: Likewise.

2002-10-11  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* lex.l (handle_identifier): Don't enter token in local symbol
	table if the following token is a dot and it looks like a binary
	operator.
	(force_local_variable): If name is not a variable, clear it before
	defining.

	* oct-procbuf.cc (Vkluge_procbuf_delay): Make default 0 for all
	systems.

	* octave.cc (execute_startup_files, initialize_pathsearch):
	Use file_ops::dir_sep_str instead of OCTAVE_DIR_SEP_STR.
	(main): Use file_ops::dir_sep_chars instead of OCTAVE_DIR_SEP_CHARS.

	* ov-re-mat.cc (octave_matrix::convert_to_str): Warn for out of
	range conversions.  For negative values, set to 0.
	* ov-scalar.cc (octave_scalar:convert_to_str): Likewise.

	* mappers.cc (xabs): New static function.
	(install_mapper_functions): Use it for abs for character matrices.
	Handle ch_map_flag separately from can_ret_cmplx_for_real in
	all uses of DEFUN_MAPPER.
	* defun.h (DEFUN_MAPPER): Handle ch_map_flag separately from
	can_ret_cmplx_for_real.
	* defun-int.h (DEFUN_MAPPER_INTERNAL): Likewise.
	* mkbuiltins: Likewise.
	* mkgendoc: Likewise.
	* ov-mapper.cc (octave_mapper::apply): Use ch_map_flag and
	can_ret_cmplx_for_real instead of flag.
	* ov-mapper.h (octave_mapper::ch_map_flag): Rename from flag.
	(octave_mapper::can_ret_cmplx_for_real): New data member.
	(octave_mapper::octave_mapper): Handle it here.

2002-10-10  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* octave.cc (execute_startup_files): Don't forget directory
	separator for local initfile.

	* move-if-change: Delete.
	* Makefile.in (DISTFILES): Delete it from the list.

2002-10-09  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in: Use $(EXEEXT) and $(BUILD_EXEEXT) as appropriate.

	* pt-plot.cc (Vgnuplot_binary): Use GNUPLOT_BINARY as default.

	* octave.cc (execute_startup_files): 
	Use octave_env::getcwd instead of "./".
	Use OCTAVE_DIR_SEP_STR instead of "/".
	(initialize_pathsearch): Use OCTAVE_DIR_SEP_STR instead of /.
	(main): Look for OCTAVE_DIR_SEP_CHARS, not '/'.

2002-10-08  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (gendoc): Use $(BUILD_CXX), not $(CXX).

2002-10-07  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* utils.cc (octave_sleep): Cast result of modf to unsigned int.

2002-10-07  Paul Kienzle <pkienzle@users.sf.net>

	* sighandlers.cc (my_friendly_exit): If kill is unavailable, use
	raise.

2002-10-06  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* sysdep.cc (CYGWIN_init): New function.
	(sysdep_init) [__CYGWIN__]: Call it.

	* pt-plot.cc (subplot::handle_plot_data): Surround file names in
	single quotes, not double (for Windows).
	(do_external_plotter_cd): Likewise.

2002-10-03  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* cutils.c (octave_usleep): Call octave_sleep, not sleep.

	* utils.cc (octave_sleep (double)): New function.
	* utils.h: Provide decl.
	* sysdep.cc (Fpause, Fsleep): Use it.

	* cutils.c (do_octave_usleep): Merge with octave_usleep.
	(octave_usleep): Make it work for Windows systems.  From Paul
	Kienzle <pkienzle@users.sf.net>.

2002-10-03  Paul Kienzle <pkienzle@users.sf.net>

	* cutils.c (octave_usleep): Make it work for Windows systems.

	* toplev.cc (Fsystem): Error message if fork is not available.

2002-10-02  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* cutils.c (octave_sleep): Handle Windows, which may not have
	sleep, but should have Sleep.

	* oct-conf.h.in (OCTAVE_CONF_SED): Add an entry for SED.
	* toplev.cc (octave_config_info): Likewise.
	* Makefile.in (oct-gperf.h): Use $(SED), not sed.

2002-09-27  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* file-io.cc (fopen_mode_to_ios_mode): Set ios::ate instead of
	ios::app for "a+" mode.
	* oct-stream.cc (octave_stream::mode_as_string): Recognize
	ios::ate, not ios::app as "a+" mode.
	(octave_stream::mode_as_string): Use parens since | has lower
	precedence than ==.

2002-09-26  Paul Kienzle <pkienzle@users.sf.net>

	* sysdep.cc: Include conio.h if it exists.
	(octave_kbhit): Rename from kbhit.  Implement with _kbhit if it
	exists. Change all callers.
	* cutils.c (octave_sleep): New function.
	Change all callers of sleep to use octave_sleep instead.

2002-09-26  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* BaseSLList.cc, BaseSLList.h, Cell.cc, Cell.h, DLList.cc,
	DLList.h, Map.cc, Map.h, OPERATORS/op-b-b.cc,
	OPERATORS/op-bm-b.cc, OPERATORS/op-bm-bm.cc, OPERATORS/op-cell.cc,
	OPERATORS/op-chm.cc, OPERATORS/op-cm-cm.cc, OPERATORS/op-cm-cs.cc,
	OPERATORS/op-cm-m.cc, OPERATORS/op-cm-s.cc, OPERATORS/op-cs-cm.cc,
	OPERATORS/op-cs-cs.cc, OPERATORS/op-cs-m.cc, OPERATORS/op-cs-s.cc,
	OPERATORS/op-fil-b.cc, OPERATORS/op-fil-bm.cc,
	OPERATORS/op-fil-cm.cc, OPERATORS/op-fil-cs.cc,
	OPERATORS/op-fil-lis.cc, OPERATORS/op-fil-m.cc,
	OPERATORS/op-fil-rec.cc, OPERATORS/op-fil-s.cc,
	OPERATORS/op-fil-str.cc, OPERATORS/op-list.cc,
	OPERATORS/op-m-cm.cc, OPERATORS/op-m-cs.cc, OPERATORS/op-m-m.cc,
	OPERATORS/op-m-s.cc, OPERATORS/op-range.cc, OPERATORS/op-s-cm.cc,
	OPERATORS/op-s-cs.cc, OPERATORS/op-s-m.cc, OPERATORS/op-s-s.cc,
	OPERATORS/op-str-str.cc, SLList.cc, SLList.h, SLStack.cc,
	SLStack.h, Stack.cc, Stack.h, c-file-ptr-stream.cc,
	c-file-ptr-stream.h, comment-list.cc, comment-list.h, oct-map.cc,
	oct-map.h, oct-obj.cc, oct-obj.h, ov-base-mat.cc, ov-base-mat.h,
	ov-base-nd-array.cc, ov-base-nd-array.h, ov-base-scalar.cc,
	ov-base-scalar.h, ov-base.cc, ov-base.h, ov-bool-mat.cc,
	ov-bool-mat.h, ov-bool.cc, ov-bool.h, ov-builtin.cc, ov-builtin.h,
	ov-cell.cc, ov-cell.h, ov-ch-mat.cc, ov-ch-mat.h, ov-colon.cc,
	ov-complex.cc, ov-complex.h, ov-cs-list.cc ov-cs-list.h,
	ov-cx-mat.cc, ov-cx-mat.h, ov-dld-fcn.cc, ov-dld-fcn.h, ov-fcn.cc,
	ov-fcn.h, ov-file.cc, ov-file.h, ov-list.cc, ov-list.h,
	ov-mapper.cc, ov-mapper.h, ov-range.cc, ov-range.h, ov-re-mat.cc,
	ov-re-mat.h, ov-re-nd-array.cc, ov-re-nd-array.h, ov-scalar.cc,
	ov-scalar.h, ov-str-mat.cc, ov-str-mat.h, ov-struct.cc,
	ov-struct.h, ov-typeinfo.cc, ov-typeinfo.h, ov-usr-fcn.cc,
	ov-usr-fcn.h, ov-va-args.cc, ov.cc, ov.h, procstream.cc,
	procstream.h, pt-arg-list.cc, pt-arg-list.h, pt-assign.cc,
	pt-assign.h, pt-binop.cc, pt-binop.h, pt-bp.cc, pt-bp.h,
	pt-cell.cc, pt-cell.h, pt-check.cc, pt-check.h, pt-cmd.cc,
	pt-cmd.h, pt-colon.cc, pt-colon.h, pt-const.cc, pt-const.h,
	pt-decl.cc, pt-decl.h, pt-except.cc, pt-except.h, pt-exp.cc,
	pt-exp.h, pt-id.cc, pt-id.h, pt-idx.cc, pt-idx.h, pt-jump.cc,
	pt-jump.h, pt-loop.cc, pt-loop.h, pt-mat.cc, pt-mat.h, pt-misc.cc,
	pt-misc.h, pt-plot.cc, pt-plot.h, pt-pr-code.cc, pt-pr-code.h,
	pt-select.cc, pt-select.h, pt-stmt.cc, pt-stmt.h, pt-unop.cc,
	pt-unop.h, pt.cc, pt.h, symtab.cc, symtab.h, token.cc, token.h,
	unwind-prot.cc, unwind-prot.h:
	If __GNUG__, use pragma interface/implementation.  Allow this to
	be turned off by defining NO_PRAGMA_INTERFACE_IMPLEMENTATION.

2002-09-26  Paul Kienzle <pkienzle@users.sf.net>

	* mappers.cc (install_mapper_functions): Install erf, not xerf.
	Install erfc, not xerfc.

	* pt-bp.cc (tree_breakpoint::visit_unwind_protect_command):
	Rename lst1 and lst2 to avoid dlgs.h conflict.

	* parse.y: Replace TEXT with STRING to avoid winnt.h conflict.
	* lex.l: Ditto.

	* sysdep.cc (raw_mode): Non-fatal warning if raw_mode is not
	supported.

	* sighandlers.cc: Don't define handlers for non-existent signals.

	* utils.cc: Don't include unneeded termio headers.

2002-09-19  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* BaseSLList.cc, BaseSLList.h, Cell.cc, Cell.h, DLList.cc,
	DLList.h, Map.cc, Map.h, OPERATORS/op-b-b.cc,
	OPERATORS/op-bm-b.cc, OPERATORS/op-bm-bm.cc, OPERATORS/op-cell.cc,
	OPERATORS/op-chm.cc, OPERATORS/op-cm-cm.cc, OPERATORS/op-cm-cs.cc,
	OPERATORS/op-cm-m.cc, OPERATORS/op-cm-s.cc, OPERATORS/op-cs-cm.cc,
	OPERATORS/op-cs-cs.cc, OPERATORS/op-cs-m.cc, OPERATORS/op-cs-s.cc,
	OPERATORS/op-fil-b.cc, OPERATORS/op-fil-bm.cc,
	OPERATORS/op-fil-cm.cc, OPERATORS/op-fil-cs.cc,
	OPERATORS/op-fil-lis.cc, OPERATORS/op-fil-m.cc,
	OPERATORS/op-fil-rec.cc, OPERATORS/op-fil-s.cc,
	OPERATORS/op-fil-str.cc, OPERATORS/op-list.cc,
	OPERATORS/op-m-cm.cc, OPERATORS/op-m-cs.cc, OPERATORS/op-m-m.cc,
	OPERATORS/op-m-s.cc, OPERATORS/op-range.cc, OPERATORS/op-s-cm.cc,
	OPERATORS/op-s-cs.cc, OPERATORS/op-s-m.cc, OPERATORS/op-s-s.cc,
	OPERATORS/op-str-str.cc, SLList.cc, SLList.h, SLStack.cc,
	SLStack.h, Stack.cc, Stack.h, c-file-ptr-stream.cc,
	c-file-ptr-stream.h, comment-list.cc, comment-list.h, oct-map.cc,
	oct-map.h, oct-obj.cc, oct-obj.h, ov-base-mat.cc, ov-base-mat.h,
	ov-base-nd-array.cc, ov-base-nd-array.h, ov-base-scalar.cc,
	ov-base-scalar.h, ov-base.cc, ov-base.h, ov-bool-mat.cc,
	ov-bool-mat.h, ov-bool.cc, ov-bool.h, ov-builtin.cc, ov-builtin.h,
	ov-cell.cc, ov-cell.h, ov-ch-mat.cc, ov-ch-mat.h, ov-colon.cc,
	ov-complex.cc, ov-complex.h, ov-cs-list.cc ov-cs-list.h,
	ov-cx-mat.cc, ov-cx-mat.h, ov-dld-fcn.cc, ov-dld-fcn.h, ov-fcn.cc,
	ov-fcn.h, ov-file.cc, ov-file.h, ov-list.cc, ov-list.h,
	ov-mapper.cc, ov-mapper.h, ov-range.cc, ov-range.h, ov-re-mat.cc,
	ov-re-mat.h, ov-re-nd-array.cc, ov-re-nd-array.h, ov-scalar.cc,
	ov-scalar.h, ov-str-mat.cc, ov-str-mat.h, ov-struct.cc,
	ov-struct.h, ov-typeinfo.cc, ov-typeinfo.h, ov-usr-fcn.cc,
	ov-usr-fcn.h, ov-va-args.cc, ov.cc, ov.h, procstream.cc,
	procstream.h, pt-arg-list.cc, pt-arg-list.h, pt-assign.cc,
	pt-assign.h, pt-binop.cc, pt-binop.h, pt-bp.cc, pt-bp.h,
	pt-cell.cc, pt-cell.h, pt-check.cc, pt-check.h, pt-cmd.cc,
	pt-cmd.h, pt-colon.cc, pt-colon.h, pt-const.cc, pt-const.h,
	pt-decl.cc, pt-decl.h, pt-except.cc, pt-except.h, pt-exp.cc,
	pt-exp.h, pt-id.cc, pt-id.h, pt-idx.cc, pt-idx.h, pt-jump.cc,
	pt-jump.h, pt-loop.cc, pt-loop.h, pt-mat.cc, pt-mat.h, pt-misc.cc,
	pt-misc.h, pt-plot.cc, pt-plot.h, pt-pr-code.cc, pt-pr-code.h,
	pt-select.cc, pt-select.h, pt-stmt.cc, pt-stmt.h, pt-unop.cc,
	pt-unop.h, pt.cc, pt.h, symtab.cc, symtab.h, token.cc, token.h,
	unwind-prot.cc, unwind-prot.h:
	Use USE_PRAGMA_INTERFACE_IMPLEMENTATION instead of __GNUG__ to
	decide whether to use the interface/implementation pragmas.

2002-09-18  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* load-save.cc: Undo previous change.

	* ov-struct.cc (octave_struct::subsasgn): Ensure that indexed
	object is not shared before calling subsasgn.

2002-09-04  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* load-save.cc: Use % instead of # as comment character in ascii
	data files.

2002-08-17  Mumit Khan  <khan@nanotech.wisc.edu>

	* c-file-ptr-stream.h (c_file_ptr_buf::c_file_ptr_buf): Add Intel
	C++ runtime support.

	* Cell.h, gripes.cc, ov-base-scalar.cc, ov-colon.cc, ov-fcn.cc,
	ov-file.cc, ov-mapper.h, ov-va-args.cc, token.cc, xpow.cc,
	OPERATORS/op-b-b.cc, OPERATORS/op-bm-b.cc, OPERATORS/op-bm-bm.cc,
	OPERATORS/op-cell.cc, OPERATORS/op-chm.cc, OPERATORS/op-cm-cm.cc,
	OPERATORS/op-cm-cs.cc, OPERATORS/op-cm-m.cc, OPERATORS/op-cm-s.cc,
	OPERATORS/op-cs-cm.cc, OPERATORS/op-cs-cs.cc, OPERATORS/op-cs-m.cc,
	OPERATORS/op-cs-s.cc, OPERATORS/op-fil-b.cc, OPERATORS/op-fil-bm.cc,
	OPERATORS/op-fil-cm.cc, OPERATORS/op-fil-cs.cc,
	OPERATORS/op-fil-lis.cc, OPERATORS/op-fil-m.cc,
	OPERATORS/op-fil-rec.cc, OPERATORS/op-fil-s.cc,
	OPERATORS/op-fil-str.cc, OPERATORS/op-list.cc, OPERATORS/op-m-cm.cc,
	OPERATORS/op-m-cs.cc, OPERATORS/op-m-m.cc, OPERATORS/op-m-s.cc,
	OPERATORS/op-range.cc, OPERATORS/op-s-cm.cc, OPERATORS/op-s-cs.cc,
	OPERATORS/op-s-m.cc, OPERATORS/op-s-s.cc, OPERATORS/op-str-str.cc,
	TEMPLATE-INST/Array-sym.cc, TEMPLATE-INST/Array-tc.cc,
	TEMPLATE-INST/Map-tc.cc, TEMPLATE-INST/SLList-expr.cc,
	TEMPLATE-INST/SLList-tc.cc, TEMPLATE-INST/SLList-tm.cc,
	TEMPLATE-INST/SLStack-sym.cc: Make the implementation of
	octave_value_list visibile for template instantiation.

2002-08-17  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* DLD-FUNCTIONS/dasrt.cc: Include <iostream> not <iostream.h>.

	* pager.h: Include lo-sstream.h and use macros instead of using
	strstreambuf class directly.

	* load-save.cc (read_mat_ascii_data): Handle istrstream here too.

	* procstream.h (procstream::procstream): Also accept std::string arg.
	(iprocstream::iprocstream, iprocstream::open): Likewise.
	(oprocstream::oprocstream, oprocstream::open): Likewise.
	(procstreambase::procstreambase, procstreambase::open): Likewise.

	* pt-plot.cc (gnuplot_terminal_type): Now std::string&, not char*.
	(send_to_plot_stream): Likewise, for cmd arg.

	* pt-plot.h, pt-plot.cc: Include lo-sstream.h and use macros
	instead of using strstream classes directly.
	* oct-strstrm.h: Likewise.
	* error.h, error.cc: Likewise.
	* oct-stream.h, oct-stream.cc: Likewise.
	* lex.l: Likewise.
	* toplev.cc: Likewise.
	* utils.cc: Likewise.
	* pt.cc: Likewise.
	* pr-output.cc: Likewise.
	* ov-list.cc: Likewise.
	* ov-cs-list.cc: Likewise.
	* ov-cell.cc: Likewise.
	* load-save.cc: Likewise.
	* help.cc: Likewise.
	* dirfns.cc: Likewise.

2002-08-15  Paul Kienzle <pkienzle@jazz.ncnr.nist.gov>

	* input.cc (octave_read): Do a better job of buffering.

2002-08-15  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (DLD_DEF_FILES): New macro.
	(DEF_5): Delete.
	(DEF_4): Now only includes $(SOURCES).
	(DEF_FILES): Append $(DLD_DEF_FILES) here.
	(stamp-oct-links): Pass $(DLD_DEF_FILES) to mk-oct-links instead
	of a list of source files.
	* mk-oct-links: Work on .df files instead of .cc files.

	* parse.y (case_list): Allow it to be empty.

	* ov.cc, ov.h (octave_value::int_vector_value): New function.

2002-08-14  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (OCTAVE_LIBS): Only include $(LIBKPATHSEA) if not
	using shared libraries.

	* ov.cc (octave_value::octave_value (const octave_value_list&, bool)):
	Don't forget to assign rep.

2002-08-12  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* lex.l: Warn for various Matlab-incompatibilities.
	No longer accept <> for NOTEQ.
	(gripe_matlab_incompatible): New function.
	(maybe_gripe_matlab_incompatible_comment): Likewise.
	(gripe_matlab_incompatible_continuation): Likewise.
	(gripe_matlab_incompatible_operator): Likewise.
	(warn_matlab_incompatible): New function.
	(Vwarn_matlab_incompatible): New static variable.
	(symbols_of_lex): Add a DEFVAR for it.
	

	* file-io.cc (fopen_mode_to_ios_mode): Default value is std::ios::in.
	Return std::ios::openmode instead of int.

2002-08-10  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* DLD-FUNCTIONS/dasrt.cc (DASRT_ABORT1, DASRT_ABORT2):
	"##" pastes tokens, not strings.

	* DLD-FUNCTIONS/odessa.cc: Add std:: qualifiers as needed.

2002-08-09  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* variables.cc (Fisglobal): Rename from Fis_global.
	* file-io.cc (Fisstream): Rename from Fis_stream.
	* data.cc (Fisbool): Rename from Fis_bool.
	(Fiscomplex): Rename from Fis_complex.
	(Fislist): Rename from Fis_list.
	(Fismatrix): Rename from Fis_matrix.
	(Fisstruct): Rename from Fis_struct.

	* parse.y (switch_case): Make list of command optional.

2002-08-08  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pr-output.cc (pr_max_internal): Use octave_is_NaN_or_NA instead
	of xisnan.
	(pr_min_internal): Likewise.
	(output_max_field_width): Likewise.
	(output_precision): Likewise.
	(pr_any_float): Handle NA.
	* mappers.cc (Fisna, F_is_nan_or_na): New functions.
	* data.cc (symbols_of_data): New constant, NA.

2002-08-07  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-binop.h (tree_binary_expression::is_binary_expression):
	New function, return true.
	(tree_boolean_expression::is_boolean_expression): New function,
	return true.
	* pt-exp.h (tree_expression::is_binary_expression): New function.
	(tree_expression::is_boolean_expression): Likewise.
	* parse.y (EXPR_OR_OR): Now lower precedence than EXPR_AND_AND.
	(EXPR_OR): Now lower precedence than EXPR_AND.
	(make_boolean_op): Maybe warn about change in precedence.
	(make_binary_op): Likewise.
	(Vwarn_precedence_change): New static variable.
	(warn_precedence_change): New function.
	(Vwarn_precedence_change): New DEFVAR.

2002-08-05  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* data.cc (ANY_ALL): Improve arg checks.

2002-08-04  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov.h (octave_value::assign_op): New enum values, op_pow_eq and
	op_el_pow_eq.
	* ov.cc (octave_value::assign_op_as_string): Handle them here.
	(ocatave_value::op_eq_to_binary_op): And here.
	* parse.y (POW_EQ, EPOW_EQ): New tokens.
	(assign_expr): Handle them here too.
	(make_assign_op): And here.

	* lex.l: Recognize {POW}= and {EPOW}=.

2002-08-02  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-base-scalar.h (octave_base_scalar::all): New int arg.
	(octave_base_scalar::any): Likewise.
	* ov-range.h (octave_range::all): Likewise.
	(octave_range::any): Likewise.

	* Makefile.in (doc-files): Use mv, not move-if-change here.

	* variables.cc (symbol_exist): New function.
	(Fexist): Use it.  Handle optional type arg.  Make return codes
	more compatible with Matlab.

	* data.cc (ANY_ALL): New macro.
	(Fany, Fall): Replace guts with ANY_ALL.

2002-08-01  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* data.cc (Fall, Fany): Handle optional DIM argument.

	* ov.h (octave_value::any): New arg, dim.
	(octave_value::all): Likewise.
	* ov-base.h (octave_base_value::any): Likewise.
	(octave_base_value::all): Likewise.
	* ov-base-mat.h (octave_base_matrix::any): Likewise.
	(octave_base_matrix::all): Likewise.

	* Makefile.in: Use $@-t instead of $@.t.
	(doc-files): Use move-if-change when creating doc-files.

	* error.cc (warning): Don't print warning backtrace at top level.

	* ov-cell.cc (octave_cell::print_raw): Print empty dimensions too.
	(octave_cell::print_name_tag): Don't print new line if cell is empty.

	* octave.cc (intern_argv): Don't install __argv__.

	* defun-int.h (UNDERSCORIFY): Delete.
	(DEFCONST_INTERNAL): Don't install double underscore versions of
	constants since they aren't really needed.
	(DEFCONSTX_INTERNAL): Likewise.

2002-07-31  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* symtab.cc (symbol_table::clear (void)): Clear all records.
	(symbol_table::clear (const std::string&)): Delete second arg.
	Clear any symbol that matches, regardless of type.

	* symtab.h (symbol_table::variable_name_list): New function.
	(symbol_table::global_variable_name_list): Likewise.
	(symbol_table::user_function_name_list): Likewise.

	* symtab.h, symtab.cc (symbol_table::clear_variables): New function.
	(symbol_table::clear_functions): Likewise.
	(symbol_table::clear_globals): Likewise.
	(symbol_table::clear_variable): New function.
	(symbol_table::clear_function): Likewise.
	(symbol_table::clear_global): Likewise.
	(symbol_table::clear_variable_pattern): New function.
	(symbol_table::clear_function_pattern): Likewise.
	(symbol_table::clear_global_pattern): Likewise.

	* variables.cc (name_matches_any_pattern): Rename from
	var_matches_any_pattern.
	(is_local_variable): New static inline function.
	(maybe_warn_exclusive): Likewise.
	(do_clear_all): Likewise.
	(do_clear_functions): Likewise.
	(do_clear_globals): Likewise.
	(do_clear_variables): Likewise.
	(do_clear_function): Likewise.
	(do_clear_global): Likewise.
	(do_clear_variable): Likewise.
	(do_clear_symbol): Likewise.
	(do_clear_function_pattern): Likewise.
	(do_clear_global_pattern): Likewise.
	(do_clear_variable_pattern): Likewise.
	(do_clear_symbol_pattern): Likewise.
	(do_clear_functions): Likewise.
	(do_clear_functions): Likewise.
	(do_clear_globals): Likewise.
	(do_clear_variables): Likewise.
	(do_clear_symbols): Likewise.
	(do_matlab_compatible_clear): Likewise.
	(CLEAR_OPTION_ERROR): New macro.
	(Fclear): Rewrite for Matlab compatibility and to cope with new
	symbol table semantics.

2002-07-30  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* symtab.cc (symbol_table::clear): Simply clear everything.
	(symbol_table::clear_functions, symbol_table::clear_globals,
	symbol_table::clear_all): New functions.

	* symtab.h (symbol_record::symbol_def::next_elem): Delete.
	(symbol_record::symbol_def::symbol_def): Delete intializer.

	* symtab.h, symtab.cc (symbol_record::push_def): Delete.
	(symbol_record::remove_top_def): Delete.
	(symbol_record::replace_all_defs): Delete.
	(symbol_record::hides_fcn): Delete.
	(symbol_record::hides_builtin): Delete.

	* symtab.h (symbol_table::~symbol_table): Call clear before
	deleting the table.

	* variables.cc (initialize_symbol_tables): Create fbi_sym_tab too.
	(Fexist): Look in fbi_sym_tab, not global_sym_tab.

	* parse.y (function_symtab): Rename from global_symtab.
	Set curr_sym_tab to fbi_sym_tab, not global_sym_tab.
	Change all uses of global_symtab to be function_symtab instead.
	(frob_function): Rename and look for function name in fbi_sym_tab,
	not global_sym_tab.
	(parse_fcn_file): Clear function name from fbi_sym_tab, not
	global_sym_tab.

	* load-save.cc (save_vars): Look for built-in vars in fbi_sym_tab.
	* symtab.cc (symbol_record::link_to_builtin_variable): Likewise.
	* variables.cc (is_builtin_variable): Likewise.
	(bind_ans): Likewise.
	(bind_builtin_constant): Likewise.
	(bind_builtin_variable): Likewise.
	(builtin_string_variable): Likewise.
	(builtin_real_scalar_variable): Likewise.
	(builtin_any_variable): Likewise.
	(is_text_function_name): Likewise, for functions.
	(force_link_to_function): Likewise.
	(is_builtin_function_name): Likewise.
	(is_mapper_function_name): Likewise.
	(is_valid_function): Likewise.
	(Fclear): Likewise.
	(F__print_symtab_info__): Likewise.
	* defun.cc (print_usage): Likewise.
	(install_builtin_mapper): Likewise.
	(install_builtin_function): Likewise.
	(install_dld_function): Likewise.
	(Falias): Likewise.
	* dynamic-ld.cc (clear_function): Likewise.
	* variables.cc (do_who): Likewise, for built-ins and functions.
	(link_to_builtin_or_function): Likewise.
	* help.cc (LIST_SYMBOLS): Likewise.
	(make_name_list): Handle fbi_sym_tab too.

	* variables.cc (fbi_sym_tab): New symbol table.
	* variables.h (fbi_sym_tab): Provide decl.

2002-07-29  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* symtab.h (symbol_record::alias): Delete unused arg force.
	Change all callers.

	* variables.cc (link_to_global_variable): Give local variable
	global value.

	* pt-id.cc (tree_identifier::link_to_global): Warn about global
	variables that have been defined before being declared global.
	for a global variable to be used before it is declared global.
	* pt-decl.cc (tree_global_command::do_init): Handle possible error
	from tree_identifier::link_to_global.

2002-07-25  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov.cc (silent_functions, Vsilent_functions): Move here.
	(octave_value::print_with_name): Don't print anything if we are
	evaluating a function and Vsilent_functions is true.

	* pt-stmt.cc: From here.
	(symbols_of_pt_stmt): Delete.
	(tree_statement_list::eval): Don't bother with Vsilent_functions here.

2002-07-24  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (OPT_HANDLERS): New targets.
	(doc-files): New target.
	(gendoc.cc): Depend on doc-files, not $(DOC_FILES).

	* DLD-FUNCTIONS/daspk.cc, DLD-FUNCTIONS/dasrt.cc,
	DLD-FUNCTIONS/dassl.cc, DLD-FUNCTIONS/fsolve.cc,
	DLD-FUNCTIONS/lsode.cc, DLD-FUNCTIONS/odessa.cc
	DLD-FUNCTIONS/quad.cc: Replace option handling code with include
	directive.

2002-07-22  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-loop.cc (tree_simple_for_command::eval): Once we know the RHS
	is a matrix type check for real_type, not real_matrix.

2002-07-19  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* DLD-FUNCTIONS/quad.cc (quad): Cope with changes to Quad constructors.

2002-07-17  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* DLD-FUNCTIONS/daspk.cc (Fdaspk): Also return istate and error
	message.  Only generate error if user is not at least requesting
	the istate output.
	* DLD-FUNCTIONS/dasrt.cc (Fdasrt): Likewise.
	* DLD-FUNCTIONS/dassl.cc (Fdassl): Likewise.
	* DLD-FUNCTIONS/lsode.cc (Fodessa): Likewise.

2002-07-16  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* DLD-FUNCTIONS/dasrt.cc (Fdasrt): No need to find ng here.
	(dasrt_user_j): New function.
	(Fdasrt): Handle Jacobian function.

	* DLD-FUNCTIONS/dassl.cc (dassl_user_jacobian): New function.
	(Fdassl): Handle Jacobian function.

	* DLD-FUNCTIONS/dasrt.cc: New file.
	* Makefile.in (DLD_XSRC): Add it to the list.

2002-07-12  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* lex.l (@): Handle new token.
	* parse.y (constant): Accept function handle syntax.
	(make_constant): Create function handles here.

2002-07-11  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* defun.cc (check_version): Improve error message.
	* error.cc (warning): Only print backtrace once per warning series.
	Print backtrace before warning messages.

2002-07-10  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* lex.l (maybe_unput_comma): Also handle '{' as an indexing op.

	* DLD-FUNCTIONS/odessa.cc: New file.
	* Makefile.in (DLD_XSRC): Add it to the list.

2002-07-05  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-assign.cc (tree_multi_assignment::rvalue): Call
	lhs->nargout_count, not lhs->length.

	* pt-arg-list.cc (tree_argument_list::convert_to_const_vector):
	Handle cs-list objects here.
	(tree_argument_list::nargout_count): New function.
	* pt-arg-list.h: Provide decl.

	* ov-cs-list.h, ov-cs-list.cc: New files.
	* Makefile.in: Add them to the appropriate lists.

	* ov.cc: Include ov-cs-list.h.
	New arg, is_cs_list for constructor taking octave_value_list arg.
	(install_types): Register ov_cs_list.
	* ov.h (octave_value::is_cs_list): New function.
	* ov-base.h (octave_base_value::is_cs_list): Likewise.
	* ov-cell.cc (octave_cell::subsref): Return cs-list for "{" indexing.

2002-07-04  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-mat.cc (Vempty_list_elements_ok): Default value is now 1.
	* octave.cc (maximum_braindamage): No longer need to set value here.

	* ov-usr-fcn.cc (Fva_arg, Fva_start, Fvr_val): Warn that these
	functions are deprecated.
	* lex.l (EL): Warn that `...' is deprecated.
	* ov-usr-fcn.cc (octave_user_function::varargout_to_vr_val,
	octave_user_function::has_varargout): New functions.
	(Fvr_val): Ensure varargout is not defined.
	(octave_user_function::do_multi_index_op): Copy values from
	varargout here.

2002-07-03  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-usr-fcn.h (octave_user_function::varargin_sr): New data member.
	* ov-usr-fcn.cc (octave_user_function::octave_user_function):
	Initialize it.
	(bind_automatic_vars): Handle varargin.  Change	all callers.

	* octave.gperf: Handle varargin and varargout as keywords.
	* lex.l (is_keyword): Likewise.
	(IDENT): Move all actions into handle_identifier.
	(handle_identifier): Now takes no args.

	* lex.l (EL): Return VARARGIN or VARARGOUT, not ELLIPSIS.
	* parse.y (param_list): Use VARARGIN instead of ELLIPSIS.
	(return_list): Use VARARGOUT instead of ELLIPSIS.

	* data.cc (make_diag const octave_value&, const octave_value&):
	Allow first arg to be 1x0 or 0x1.

2002-07-02  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* defaults.cc (loadpath): Comment out previous change.

	* DLD-FUNCTIONS/fsolve.cc (Ffsolve): Return message too.  Only
	generate error if user is not at least requesting the info output.

	* DLD-FUNCTIONS/lsode.cc (Flsode): Fix typos in setting return value.

2002-07-01  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* oct-stream.cc (printf_value_cache::double_value): If the current
	element is empty and there are no more elements in the value list,
	set curr_state to conversion_error.

	* input.cc (initialize_command_input): Include (, ), {, and } as
	word break characters.

	* variables.cc (looks_like_struct): Don't evaluate text if it is a
	function.  From Ben Sapp <bsapp@lanl.gov>.

	* symtab.h (symbol_record::is_function): Also return true if
	symbol is a text function or a mapper function.

2002-06-28  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* defaults.cc (loadpath): Warn if loadpath doesn't contain
	leading, trailing, or doubled colon.

	* pt-decl.cc (tree_static_command::eval, tree_global_command::eval):
	Call error for any non-zero value of error_state.
	* pt-select.cc (tree_if_command::eval): Likewise.
	* pt-loop.cc (tree_while_command::eval_error): Don't check error_state.
	(tree_do_until_command::eval_error): Likewise.
	(tree_simple_for_command::eval_error): Likewise.
	(tree_complex_for_command::eval_error): Likewise.
	* pt-assign.cc (tree_multi_assignment::eval_error): Likewise.
	(tree_simple_assignment::eval_error): Likewise.
	* pt-idx.cc (tree_index_expression::eval_error): Likewise.
	* pt-colon.cc (tree_colon_expression::eval_error): Likewise.
	(tree_colon_expression::rvalue): Delete rendundant error_state check.

2002-06-26  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-mapper.cc (MAPPER_LOOP, MAPPER_LOOP_1, MAPPER_LOOP_2): New	macros.
	(octave_mapper::apply): Use them to inline the mapper loops.

	* pt-unop.cc (tree_prefix_expression::rvalue): Ensure that the
	operand is defined for op_incr and op_decr.
	(tree_postfix_expression::rvalue): Likewise.
	From Ben Sapp <bsapp@lanl.gov>.

2002-06-25  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-mapper.cc (octave_mapper::apply): Exit loops on error.

2002-06-03  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-struct.cc (octave_struct::print_raw): Print field names with
	data types if Vstruct_levels_to_print is 0.
	(octave_struct::print_name_tag): Don't emit newline if
	Vstruct_levels_to_print is negative.
	* ov.cc (struct_levels_to_print): Allow negative values too.

2002-05-24  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* DLD-FUNCTIONS/lsode.cc (Flsode): Also return istate and error
	message.  Only generate error if user is not at least requesting
	the istate output.

	* load-save.cc (hdf5_import_multidim, hdf5_check_attr,
	hdf5_callback_data, hdf5_read_next_data, read_hdf5_data,
	add_hdf5_data): Use 0, not NULL in calls to HDF routines.

	* oct-procbuf.cc (octave_procbuf::open): Use NULL, not 0 as last
	arg in call to execl.xo

	* debug.cc (get_user_function): Initialise dbg_fcn to 0, not NULL.

2002-05-23  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* DLD-FUNCTIONS/lsode.cc (LSODE_options::da_set_opt_mf,
	LSODE_options::da_get_opt_mf): New typedefs.
	(LSODE_OPTIONS::da_set_fcn, LSODE_OPTIONS::da_get_fcn): New fields.
	(lsode_option_table): Fill them in.
	(set_lsode_option (const Array<double>&)): New function.
	(print_lsode_option_list): Handle vector options.
	(show_lsode_option_list): Likewise.
	(Flsode_options): Likewise.

	* DLD-FUNCTIONS/lsode.cc (LSODE_options::s_set_opt_mf,
	LSODE_options::s_get_opt_mf): New typedefs.
	(LSODE_OPTIONS::s_set_fcn, LSODE_OPTIONS::s_get_fcn): New fields.
	(lsode_option_table): Fill them in.
	(set_lsode_option (const std::string&)): New function.
	(print_lsode_option_list): Handle string options.
	(show_lsode_option_list): Likewise.
	(Flsode_options): Likewise.

2002-05-22  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* c-file-ptr-stream.h (c_file_ptr_buf::fclose): New function.
	(c_file_ptr_buf::c_file_ptr_buf): Use it as default argument
	instead of extern "C" fclose function.
	(i_c_file_ptr_stream::i_c_file_ptr_stream): Likewise.
	(o_c_file_ptr_stream::o_c_file_ptr_stream): Likewise.
	* oct-stdstrm.h (octave_istdiostream::octave_istdiostream): Likewise.
	(octave_istdiostream::create): Likewise.
	* oct-stdstrm.h (octave_ostdiostream::octave_ostdiostream): Likewise.
	(octave_ostdiostream::create): Likewise.

	* oct-prcstrm.cc (cxx_pclose): New static function.
	(octave_iprocstream::octave_iprocstream): Pass it to
	octave_istdiostream constructor instead of extern "C" pclose function.
	(octave_oprocstream::octave_oprocstream): Pass it to
	octave_ostdiostream constructor instead of extern "C" pclose function.

	* debug.cc (Fdbtype): Use C++ strings, not C strings.

2002-05-22  Mumit Khan <khan@nanotech.wisc.edu>

	* debug.cc: Include cstdlib instead of stdlib.h. Include cstring.
	(dbtype): Use strchr instead of index.
	* TEMPLATE-INST/Array-tc.cc (Array<octave_value>::resize_fill_value):
	Fix template specialization syntax.

2002-05-17  Mumit Khan <khan@nanotech.wisc.edu>

	* c-file-ptr-stream.h (OCTAVE_STD_FILEBUF): New macro to handle
	various forms of extensions to std::filebuf.
	(c_file_ptr_buf::c_file_ptr_buf): Use.
	* pt-idx.cc (tree_index_expression::tree_index_expression): Remove
	default arguments are from definition.
	* symtab.cc (SYMBOL_DEF::print_info): Add std::.
	(symbol_record::print_info): Likewise.
	(symbol_table::print_info): Likewise.

2002-05-16  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* oct-map.cc (Octave_map::assign): Resize RHS if it is shorter
	than existing struct array.

	* ov-cell.cc (octave_cell::subsasgn): If an error has occurred,
	skip final assignment step.
	* ov-list.cc (octave_list::subsasgn): Likewise.
	* oct-lvalue.cc (octave_lvalue::assign): Add parens to clarify intent.
	(octave_lvalue::do_unary_op): Likewise.

	* parse.y (function_end): Also accept end of input as end of
	function if input is coming from an eval string.

	* pr-output.cc (pr_any_float): Don't convert -0 to 0.

2002-05-15  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* input.cc (generate_completion): If it looks like we are
	completing a struct, set completion append char to '\0'.

	* variables.cc (generate_struct_completions): Temporarily set
	warnings off here.

	* error.cc (warning): Don't do anything if Vdebug_option == "off".
	Only print backtrace if Vdebug_option == "backtrace".
	(handle_message): Now returns a string containing the text of the
	formatted message.  Change all callers.
	(Fwarning): Now a text-style function.  Handle Matlab-compatible
	warning options.
	(Flasterr, Flastwarn, set_warning_option): New functions.
	(Vlast_error_message, Vlast_warning_message, Vwarning_frequency,
	Vwarning_option): New static variables.
	(vwarning): Set Vlast_warning_message here too.
	(verror): Set Vlast_error_message here too.

2002-05-14  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov.h (octave_value::get_count): Now const.

	* ov.h, ov.cc (octave_value::do_non_const_unary_op,
	octave_value::assign): Idx is now a list of octave_value_list
	objects.

	* ov-base.cc, ov-base.h	(octave_base_value::do_struct_elt_index_op,
	octave_base_value::struct_elt_ref): Delete.
	* ov-struct.cc, ov-struct.h (octave_sruct::do_struct_elt_index_op,
	octave_struct::struct_elt_ref): Delete.
	* ov.cc, ov.h (octave_value::do_struct_elt_index_op,
	octave_value::struct_elt_ref, octave_value::assign_struct_elt,
	octave_value::convert_and_assign, octave_value::try_assignment,
	octave_value::try_assignment_with_conversion,
	octave_value::simple_assign): Delete.

	* parse.y (make_index_expression): Type is now a single
	character.  Change all callers.  If expr is already an index
	expression, append index to it.
	(make_indirect_ref): Likewise.

	* pt-pr-code.cc (octave_print_internal (std::ostream&, const
	Cell&, bool, int)): Now just a dummy function, panic if called.

	* pt-idx.cc (tree_index_expression::make_arg_struct): New function.
	(tree_index_expression::type): Delete enum, rename from itype, now
	a string.
	(tree_index_expression::arg_nm): Now a list of string_vector objects.
	(tree_index_expression::idx): Now a list of tree_argument_list*
	objects.
	(tree_index_expression::is_index_expression): Always return true.
	(tree_index_expression::apend, make_value_list, make_subs_cell):
	New functions.
	
	* pt-pr-code.cc (visit_index_expression): Handle new definition of
	tree_index_expression object.
	* pt-check.cc (visit_index_expression): Likewise.
	* pt-bp.cc (visit_index_expression): Likewise.

	* ov-usr-fcn.h (octave_user_function::restore_args_passed):
	Clear args_passed even if nothing was saved.

	* ov-base.cc (octave_base_value::subsasgn,
	octave_base_value::map_keys, octave_base_value::print_info):
	New functions.

	* ov.h, ov.cc (octave_value::map_keys, octave_value::print_info,
	octave_value::subsref, octave_value::subsasgn,
	octave_value::numeric_assign, octave_value::next_subsref):
	New functions.
	(octave_value::empty_conv): New static function.
	(octave_value (octave_value *, int)): New arg, count.

	* ov-base-mat.cc (octave_base_matrix<MT>::subsref,
	octave_base_matrix<MT>::subsasgn): New functions.
	* ov-base-mat.h: Provide decls.

	* ov-builtin.cc (octave_builtin::subsref): New function.
	* ov-builtin.h: Provide decl.

	* ov-range.cc (octave_range::subsref): New function.
	* ov-range.h: Provide decl.

	* ov-cell.cc (octave_cell::subsref, octave_cell::subsasgn,
	octave_cell::list_value, octave_cell::print,
	octave_cell::print_raw, octave_cell::print_name_tag): New functions.
	* ov-cell.h: Provide decls.

	* ov-struct.cc (octave_struct::dotref, octave_struct::subsref,
	octave_struct::subsasgn, gripe_invalid_index,
	gripe_invalid_index_for_assignment, grip_invalid_index_type,
	gripe_failed_assignment): New functions.
	(octave_struct::numeric_conv): New static function.
	* ov-struct.h: Provide decls.
	(octave_struct::is_constant): Return true.
	(octave_struct::map_keys): New function.

	* ov-list.cc (octave_list::subsref, octave_list::subsasgn):
	New functions.
	* ov-list.h: Provide decls.

	* ov-usr-fcn.cc (octave_user_function::subsref,
	octave_user_function::print_symtab_info): New functions.
	* ov-usr-fcn.h: Provide decl.

	* ov-mapper.cc (octave_mapper::subsref): New function.
	* ov-mapper.h: Provide decl.

	* ov-base.cc (octave_base_value::subsref,
	octave_base_value::subsasgn): New functions.
	* ov-base.h: Provide decls.

	* ov-base.cc (octave_base_value::do_index_op): New arg, resize_ok.
	* ov-base-mat.cc (octave_base_matrix<MT>::do_index_op): Likewise.
	* ov-base-nd-array.cc (octave_base_nd_array<AT>::do_index_op): Ditto.
	* ov-bool-mat.cc (octave_bool::do_index_op): Ditto.
	* ov-str-mat.cc (octave_char_matrix_str::do_index_op): Ditto.
	* ov-range.cc (octave_range::do_index_op): Ditto.
	* ov-list.cc (octave_list::do_index_op): Ditto.
	* ov.cc (octave_value::do_index_op): Ditto.
	
	* ov-base-mat.cc (octave_base_matrix<MT>::print_info): New function.

	* ov-base-mat.h (octave_base_matrix<MT>::empty_clone): New function.
	* ov-base-nd-array.h (octave_base_nd_array<AT>::empty_clone): Ditto.
	* ov-base.h (octave_base_value::empty_clone): Ditto.
	* ov-bool-mat.h (octave_bool::empty_clone): Ditto.
	* ov-ch-mat.h (octave_char_matrix::empty_clone): Likewise.
	* ov-colon.h (octave_magic_colon::empty_clone): Likewise.
	* ov-complex.h (octave_complex::empty_clone): Likewise.
	* ov-cx-mat.h (octave_complex_matrix::empty_clone): Likewise.
	* ov-fcn.cc (octave_function::empty_clone): Likewise.
	* ov-file.h (octave_file::empty_clone): Likewise.
	* ov-range.h (octave_range::empty_clone): Likewise.
	* ov-list.h (octave_list::empty_clone): Likewise.
	* ov-re-mat.h (octave_matrix::empty_clone): Likewise.
	* ov-re-nd-array.h (octave_double_nd_array::empty_clone): Likewise.
	* ov-str-mat.h (octave_char_matrix_str::empty_clone): Likewise.
	* ov-struct.h (octave_struct::empty_clone): Likewise.
	* ov-va_args.h (octave_all_va_args::empty_clone): Likewise.
	* ov.h (octave_value::empty_clone): Likewise.

	* ov-base-mat.h (octave_base_matrix<MT>::clone): Now const.
	* ov-base-nd-array.h (octave_base_nd_array<AT>::clone): Likewise.
	* ov-base.h (octave_base_value::clone): Likewise.
	* ov-bool-mat.h (octave_bool::clone): Likewise.
	* ov-ch-mat.h (octave_char_matrix::clone): Likewise.
	* ov-colon.h (octave_magic_colon::clone): Likewise.
	* ov-complex.h (octave_complex::clone): Likewise.
	* ov-cx-mat.h (octave_complex_matrix::clone): Likewise.
	* ov-fcn.h (octave_function::clone): Likewise.
	* ov-file.h (octave_file::clone): Likewise.
	* ov-range.h (octave_range::clone): Likewise.
	* ov-list.h (octave_list::clone): Likewise.
	* ov-re-mat.h (octave_matrix::clone): Likewise.
	* ov-re-nd-array.h (octave_double_nd_array::clone): Likewise.
	* ov-str-mat.h (octave_char_matrix_str::clone): Likewise.
	* ov-struct.h (octave_struct::clone): Likewise.
	* ov-va_args.h (octave_all_va_args::clone): Likewise.
	* ov.h (octave_value::clone): Likewise.

	* oct-lvalue.cc (octave_lvalue::assign, octave_lvalue::set_index,
	octave_lvalue::do_unary_op): Idx is now a list of indices.  Simplify.
	* oct-lvalue.h (octave_lvalue::value): Simplify.
	(octave_lvalue::struct_elt_names): Delete data member.
	(octave_lvalue::type): Now string
	Update decls.

	* pt-exp.h (tree_expression::is_indirect_ref):
	Delete virtual function.

	* pt-plot.cc (subplot::extract_plot_data): Use subsref, instead of
	do_index_op.

	* pt-stmt.cc (tree_statement::eval): Don't try to avoid binding
	ans for structure references.

	* symtab.cc (symbol_record::symbol_def::print_info): Rename from
	symbol_record::symbol_def::dump_symbol_info.
	(symbol_record::print_info): Rename from
	symbol_record::dump_symbol_info.  Now const..
	(symbol_record::print_symbol_info_line): Now const.
	(symbol_table::print_info): Rename from print_stats.  Accept
	ostream arg.  Now const.  Print more info.
	* symtab.h: Update decls.

	* toplev.cc (octave_config_info): Indexing a map now returns a
	list, but we only want to return the first element.

	* variables.cc (generate_struct_completions, looks_like_struct):
	Simplify using eval_string.
	(F__print_symtab_info__): Rename from F__dump_symtab_info__.
	Handle "top-level" and individual function names in addition to
	"global".
	(F__print_symbol_info__): Rename from F___dump_symbol_info__.

	* octave.cc (intern_argv): Built-in variable argv is now a cell array.

	* ov-complex.cc (valid_scalar_indices): Delete.
	* ov-scalar.cc (valid_scalar_indices): Delete.

	* oct-obj.cc (octave_value_list::valid_scalar_indices): New function.
	(octave_value_list::index): New arg, resize_ok.
	* oct-obj.h: Provide decls.

	* oct-map.cc (Octave_map::keys): Rename from make_name_list.
	Change all uses.
	(Octave_map::assign, Octave_map::index): New functions.
	* oct-map.h: Provide decls.

	* data.cc (Fstruct_contains): Use map_value instead of
	do_struct_elt_index_op.

	* Cell.h (Cell (const Array2<octave_value>&, int, int)):
	New constructor.
	(Cell::resize_fill_value): New static function.

	* input.cc (initialize_command_input): Set basic and completer
	word break characters.

2002-05-07  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov.h (octave_value::subsref): New function.
	* ov-base.cc (octave_base_value::subsref): Likewise.

	* ov-struct.cc (octave_struct::print_raw): Print scalar struct
	arrays more compactly.

	* DLD-FUNCTIONS/time.cc (extract_tm): Handle new struct array def.

	* oct-map.cc (Octave_map::array_len): New data member.
	(Octave_map::operator[], Octave_map::contsnts): Return
	octave_value_list, not Octave_value.  Change callers as necessary.
	(Octave_map::assign): New function.
	(Octave_map::array_length): New fucntion.
	* oct-obj.cc (octave_value_list::assign): New function.
	
2002-05-06  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* TEMPLATE-INST/Map-oct-obj.cc: New file.
	* Makefile.in (TI_XSRC): Add it to the list.

	* oct-map.h (Octave_map): Make CHMap<octave_value_list> a data
	member instead of deriving from CHMap<octave_value>, in
	preparation for structure arrays.

	* pt-indir.h, pt-indir.cc: Delete.

	* pt-all.h: Don't include pt-indir.h.

	* Makefile.in (PT_SRC): Delete pt-indir.cc from the list.
	(PT_INCLUDES): Delete pt-indir.h from the list.

	* pt-walk.h (tree_walker::visit_indirect_ref): Delete.
	* pt-pr-code.h, pt-pr-code.cc (tree_print_code::visit_indirect_ref):
	Likewise.
	* pt-check.h, pt-check.cc (tree_checker::visit_indirect_ref): Likewise.
	* pt-bp.h, pt-bp.cc (tree_breakpoint::visit_indirect_ref): Likewise.

	* pt-walk.h: Delete forward decl for tree_indirect_ref.
	* variables.h: Likewise.

	* parse.y (make_indirect_ref): Return tree_index_expression, not
	tree_indirect_ref.

	* pt-idx.h (tree_index_expression::struct_elt_name): New function.

	* pt-idx.cc (tree_index_expression::lvalue): Handle dot case too.
	(tree_index_expression::name): Likewise.
	(tree_index_expression rvalue (int)): Likewise.
	(tree_index_expression::eval_error): Likewise.
	* pt-pr-code.cc (visit_index_expression): Likewise.
	* pt-bp.cc (tree_breakpoint::visit_index_expression): Likewise.

	* pt-idx.h (tree_index_expression::dot): New type enum element.
	(tree_index_expression::expr_type): New function.
	(tree_index_expression::tree_index_expression (tree_expression*,
	const std::string&, int, int)): New constructor.
	(tree_index_expression::is_index_expression): Return value is now
	conditional on itype.
	(tree_index_expression::is_indirect_ref): New function.
	(tree_index_expression::lvalue_ok): Also return true if itype is dot.

2002-05-03  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* parse.y (ABORT_PARSE): Maybe restore symbol table context too.

	* pt-idx.h (tree_index_expression::type): New enum.
	(tree_index_expression::etype): New data member.
	* pt-idx.h (tree_index_expression::tree_index_expression):
	New arg, t, to set type of index.
	* parse.y (make_index_expression): Likewise.
	Change all callers.

	* ov-base.cc (cell_conv): New conversion function.
	(install_base_type_conversions): Install it.
	Install conversion for indexed assignment of octave_cells to
	undefined values.

	* TEMPLATE-INST/Array-tc.cc: Instantiate assign functions too.
	(Array<octave_value>::resize_fill_value (void)):
	Provide specialization for octave_value.

	* ov-cell.cc (octave_cell::assign (const octave_value_list&,
	const octave_value&)): New function.
	* Cell.h (Cell::Cell (const octave_value&)): New function.

	* OPERATORS/op-cell.cc (install_list_ops): Use DEFASSIGNANYOP_FN
	and INSTALL_ASSIGNANYOP, not DEFASSIGNOP_FN and INSTALL_ASSIGNOP.

2002-05-03  Cai Jianming <caijianming@yahoo.co.uk>

	* OPERATORS/op-cell.cc: New file.
	* src/Makefile.in (OP_XSRC): Include it in the list.

	* parse.y (cell): Return a cell type instead of Matrix type.

	* ov.cc (install_types): Install octave_cell type.

	* pr-output.cc (octave_print_internal): Handle Cells.
	* pr-output.h (octave_print_internal): Provide decl.

	* ov-cell.h (octave_cell): Derive from octave_base_matrix<Cell>.
	* ov-cell.cc (do_index_op, assign, print, print_raw,
	print_name_tag): Delete.

	* Cell.cc (allocator, index): Delete.
	* Cell.h (Cell): Derive from Array2<octave_value>.
	Most functions removed since we can use those from Array2 instead.

2002-05-02  Cai Jianming <caijianming@yahoo.co.uk>

	* ov-base-mat.cc (octave_base_matrix<MT>::assign):
	New function.
	* ov-base-mat.h (octave_base_matrix<MT>::assign): Provide decl.
	* ov-bool-mat.cc (octave_bool_matrix::assign): Delete.
	* ov-bool-mat.h (octave_bool_matrix:assign): Delete decl
	* ov-cx-mat.cc (octave_complex_matrix::assign (const
	octave_value_list& idx, const ComplexMatrix&)): Delete.
	* ov-cx-mat.h (octave_complex_matrix:assign (const
	octave_value_list& idx, const ComplexMatrix&)): Replace decl with
	function.
	* ov-re-mat.cc (octave_bool_matrix::assign): Delete.
	* ov-re-mat.h (octave_bool_matrix:assign): Delete decl.
	
2002-05-02  Cai Jianming <caijianming@yahoo.co.uk>

	* OPERATORS/op-bm-b.cc: New file.x
	* Makefile.in (OP_XSRC): Add it to the list.

2002-04-30  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* octave.cc (print_version_and_exit): Use
	OCTAVE_NAME_VERSION_COPYRIGHT_COPYING_AND_WARRANTY, not
	OCTAVE_NAME_AND_VERSION.

	* octave.cc (verbose_usage): 
	Use OCTAVE_NAME_VERSION_COPYRIGHT_COPYING_AND_WARRANTY, not
	OCTAVE_NAME_VERSION_AND_COPYRIGHT.

	* version.h (OCTAVE_COPYING_STATEMENT, OCTAVE_WARRANTY_STATEMENT,
	OCTAVE_NAME_VERSION_COPYRIGHT_COPYING_AND_WARRANTY,
	X_OCTAVE_NAME_VERSION_COPYRIGHT_COPYING_WARRANTY_AND_BUGS,
	OCTAVE_NAME_VERSION_COPYRIGHT_COPYING_WARRANTY_AND_BUGS,
	OCTAVE_BUGS_STATEMENT): New macros.
	(OCTAVE_STARTUP_MESSAGE): Define in terms of
	X_OCTAVE_NAME_VERSION_COPYRIGHT_COPYING_WARRANTY_AND_BUGS
	to include bugs address and amplified warranty information.

	* DLD-FUNCTIONS/lsode.cc (Flsode): Delete unused variable nsteps.

2002-04-29  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* help.cc (additional_help_message): Use www.octave.org, not
	www.che.wisc.edu/octave/octave.html.
	* octave.cc (verbose_usage): Likewise.

2002-04-27  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* DLD-FUNCTIONS/daspk.cc: New file.
	* Makefile.in (DLD_XSRC): Add it to the list.

2002-04-25  Paul Kienzle <pkienzle@users.sf.net>

	* DLD-FUNCTIONS/kron.cc: New file.
	* Makefile.in (DLD_SRC): Add it to the list.

2002-04-22  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* parse.y (save_symtab): New non-terminal.  Save current symbol
	table context here.
	(function_beg): Use it.
	(symtab_context): New file-scope variable.
	(recover_from_parsing_function): Restore symbol table context here.

2002-04-17  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* load-save.cc (get_lines_and_columns): Handle CRLF as line
	separator in addition to LF.

2002-04-11  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* load-save.cc (hdf5_ofstream::hdf5_ofstream):
	Explicitly List std::ostream(0) in constructor.
	(hdf5_ifstream::hdf5_ifstream):
	Explicitly List std::istream(0) in constructor.
	(hdf5_fstreambase::hdf5_fstreambase): Use std::ios::setstate, not set.
	(hdf5_fstreambase::close): Likewise.
	(hdf5_fstreambase::open): Likewise.

2002-04-10  Ben Sapp <bsapp@lanl.gov>

	* pt-stmt.cc (delete_breakpoint): List breakpoints if line < 0.
	* debug.cc (get_user_function): Check symbol by name first.
	(Fdbstop): Rename from Fdbg_set.
	(Fdbclear): Rename from Fdbg_delete.
	(Fdbstatus): Rename from Fdbg_list.
	(Fdbg_where): Rename from Fdbwhere.
	(do_dbtype, Fdbtype): New functions.

2002-04-10  Peter Van Wieren <peter.vanwiere@avlna.com>

	* load-save.cc (save_mat5_binary_element): Save elements of 2d
	character matrices in proper order.

2002-04-09  Paul Kienzle <pkienzle@users.sf.net>

	* utils.cc (do_string_escapes): Handle \0 too.
	(undo_string_escape): Likewise.

2002-04-04  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* toplev.cc (octave_config_info): Define struct member EXEEXT, not EXE.
	* Makefile.in (install-bin): Use $(EXEEXT), not $(EXE).
	* oct-conf.h.in (OCTAVE_CONF_EXEEXT): Define and substitute
	OCTAVE_CONF_EXEEXT, not OCTAVE_CONF_EXE.

2002-04-03  Steven G. Johnson <stevenj@alum.mit.edu>

	* DLD-FUNCTIONS/balance.cc: Use F77_FUNC instead of F77_FCN.
	* DLD-FUNCTIONS/qz.cc: Likewise.
	* DLD-FUNCTIONS/rand.cc: Likewise.
	* octave.cc: Likewise.
	* toplev.cc (Foctave_config_info): Delete use of FORTRAN_MAIN_FLAG.
	* oct-conf.h.in: Delete use of OCTAVE_CONF_FORTRAN_MAIN_FLAG.
	* syscalls.cc (mk_stat_map):
	Use HAVE_STRUCT_STAT_ST_RDEV instead of HAVE_ST_RDEV.
	Use HAVE_STRUCT_STAT_ST_BLKSIZE instead of HAVE_ST_BLKSIZE.
	Use HAVE_STRUCT_STAT_ST_BLOCKS instead of HAVE_ST_BLOCKS.

2002-04-02  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* lex.l, lex.h (parser_end_of_input): New global variable.
	(reset_parser): Reset it here.
	* parse.y (input): Set it to TRUE on EOF.
	(parse_and_executed): Save and restore it, check it to correctly
	break out of parse-execute loop.
	(parse_fcn_file): Likewise.
	(eval_string): Likewise.
	* toplev.cc (main_loop): Likewise.	

	* parse.y (input): Call YYACCEPT for END_OF_INPUT.
	Return no-op command for bare newline.
	(parse_and_execute): Handle change in yyparse return value semantics.

	* toplev.cc (main_loop): Likewise.

2002-03-25  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* parse.y (parse_fcn_file): Call error if there is no input file.
	(parse_and_execute (FILE *): Protect get_input_from_eval_string.
	Set get_input_from_eval_string to false before calling yyparse.
	* lex.l (reset_parser): Also skip yyrestart (stdin) if
	reading_script_file is true.

2002-03-07  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-loop.cc (evaluating_looping_command): New global.
	(tree_while_command::eval): Protect evaluating_looping_command.
	Set it to true while evaluating loop.
	(tree_do_until_command::eval): Ditto.
	(tree_simple_for_command::eval): Ditto.
	(tree_complex_for_command::eval): Ditto.
	* pt-loop.h (evaluating_looping_command): Provide decl.
	* parse.y (parse_fcn_file): Protect get_input_from_eval_string.
	Set get_input_from_eval_string to false before calling yyparse.
	(make_break_command): Also check evaluating_looping_command.
	(make_continue_command): Also check evaluating_looping_command.
	(eval_string (const std::string&, bool, int&, int)): Loop over
	yyparse to handle multi-line strings.
	Move call to unwind_protect::run_frame to end of function.
	Don't reset parser before calling yyparse.
	Correctly handle return, break, and continue.

	* input.cc (input_from_eval_string_pending): New global variable.
	(get_usr_input): Use it.
	* input.h (input_from_eval_string_pending): Provide decl.

2002-03-06  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-usr-fcn.cc (octave_user_function::do_multi_index_op):
	Don't unwind_protect num_named_args (it doesn't change on
	recursive calls).
	Do re-initialize curr_va_arg_number to num_named_args after
	unwind_protecting.

	* ov-usr-fcn.h (octave_user_function::clear_args_passed): Delete.
	(octave_user_function::saved_args): New data member.
	(octave_user_function::save_args_passed): New function.
	(octave_user_function::restore_args_passed): Ditto.
	* ov-usr-fcn.cc (clear_args_passed): Delete.
	(restore_args_passed): New function.
	(octave_user_function::do_multi_index_op): Correctly save and
	restore args passed for recursive calls.

	* TEMPLATE-INST/SLStack-ovl.cc: New file.
	* Makefile.in: Add it to the list.

2002-02-22  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-usr-fcn.cc (octave_user_function::do_multi_index_op):
	Handle define_all_return_values after function is evaluated.
	From Paul Kienzle <pkienzle@jazz.ncnr.nist.gov>.

	* ov-scalar.cc (convert_to_str): Use octave_value (std::string)
	constructor instead of octave_value (char *) constructor so that
	setstr (0) will work.

	* pager.cc (octave_pager_buf::sync): Set pointer to beginning
	of buffer after calling flush_currnt_contents_to_diary.
	(octave_diary_buf::sync): Call eback only once.

2002-01-03  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* lex.l (.): Remove test for EOF since it is already handled
	separately.

2001-12-05  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* load-save.cc (save_mat5_binary_element):
	Extract dimensions directly from tc.
	Handle ranges the same as real matrices.

2001-11-16  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* data.cc (DATA_REDUCTION): If no DIM arg, pass -1 to FCN.

2001-11-09  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* oct-conf.h.in (FFTW_LIBS, LD_CXX, LIBOCT_PATHSEARCH,
	LIBOCT_READLINE, MKOCTFILE_LFLAGS): Substitute.
	* toplev.cc (octave_config_info): Add them to the map.

2001-11-08  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* DLD-FUNCTIONS/lsode.cc (Flsode): Don't bother to give OUTPUT
	matrix a size before calling integration function.

2001-11-06  John W. Eaton  <jwe@bevo.che.wisc.edu>

	Makefile.in (OCTAVE_LIBS): Add $(LIBOCT_READLINE) and
	$(LIBOCT_PATHSEARCH) to the list.

2001-10-08  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* DLD-FUNCTIONS/dassl.cc (dassl_user_function): Allow user
	supplied RES function to return IDID as second value.

2001-07-23  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* parse.y: Clear help_buf after documenting function.

2001-06-29  Mumit Khan  <khan@nanotech.wisc.edu>

	* defun-int.h (DEFINE_FUN_INSTALLER_FUN{2,3}): New macros.
	(DEFINE_FUN_INSTALLER_FUN): Use.
	* dynamic-ld.cc ({STRINGIFY, STRINGIFY1}): New macros.
	(octave_dynamic_loader::mangle_name): Support dynamic linking
	for GNU v3 and Sun C++ ABI.

2001-06-26  Mumit Khan  <khan@nanotech.wisc.edu>

	* c-file-ptr-stream.h (c_file_ptr_buf::c_file_ptr_buf): Add GCC3
	libstdc++-v3 support.
	* load-save.cc (save_mat5_binary_element): Cast arguments to the
	correct type.
	(save_ascii_data): Eliminate compiler warning.
	* toplev.cc (system): Prefix std::.

2001-05-31  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-cx-mat.cc: Deleve unnecessary instantiation of assign function.
	* ov-re-mat.cc: Likewise.
	* ov-re-nd-array.cc: Likewise.
	* ov-str-mat.cc: Likewise.
	* ov-bool-mat.cc: Likewise.

	* load-save.cc (save_ascii_data): When saving string data, get raw
	string value for matrix row since there may be embedded nuls.

	* pt-mat.cc (Vstring_fill_char): No longer static.
	* pt-mat.h: Provide declaration.

2001-05-17  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* octave.cc (initialize_pathsearch): Save initial value of the
	TEXMFDBS environment variable here.
	* toplev.cc (restore_texmfdbs_envvar): New function.
	(Fsystem): Set TEXMFDBS back to original value before running
	subprocesses.

2001-05-02  Mumit Khan  <khan@nanotech.wisc.edu>

	* Makefile.in (octave): Add $(FFTW_LIBS).

2001-04-27  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* DLD-FUNCTIONS/sort.cc (mx_sort): Check for NaNs in comparisons.

2001-04-26  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (OCTAVE_LIBS): Delete $(LIBREADLINE) from the list.
	(octave): Delete TERMLIBS from link command.
	* oct-conf.h.in: Delete references to LIBREADLINE, TERMLIBS.
	* toplev.cc (octave_config_info): Delete entries for LIBREADLINE,
	TERMLIBS.

2001-04-25  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (install-lib): Don't use mk-libdir-link.
	(install-inc): Don't use mk-includedir-link.

2001-04-19  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* parse.y (fold (tree_binary_expression *)):
	Set discard_error_messages here instead of buffer_error_messages.
	Don't add clear_global_error_variable to the unwind_protect stack.
	(fold (tree_unary_expression *)): Likewise.
	(finish_colon_expression): Likewise.
	(finish_matrix): Likewise.

	* error.cc (panic): Set discard_error_messages to false here.
	(verror): Return immediately if discard_error_messages is true.

	* error.cc (discard_error_messages): New global variable.
	* error.h: Provide declaration.

2001-04-18  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* lex.l: If unexpected character is EOF, report EOF error instead
	of invalid character error.

2001-04-18  Mumit Khan  <khan@nanotech.wisc.edu>

	* load-save.cc (read_mat5_binary_element): Cast arguments to the
	correct type when adding stream positions.
	* DLD-FUNCTIONS/det.cc (det): Explicity create a Complex value to
	work around a Sun C++ type conversion bug.

2001-04-17  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* symtab.cc (define_builtin_const): Don't call replace_all_defs
	here.

	* error.cc (error_message_buffer): Now static.
	* error.h (error_message_buffer): Delete extern declaration.

2001-03-29  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* DLD-FUNCTIONS/besselj.cc (besselh): Use K arg.
	From: Thomas Stuart <tstuart@ing.sun.ac.za>.

	* oct-stream.cc (get_size): Don't allow [Inf, N] as a size
	specification for the read and scanf functions.
	(get_size): SIZE is now an Array<double> instead of a Matrix object.
	(read): Likewise.  Change all callers.
	(scanf): Likewise.  Change all callers.

2001-03-26  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* DLD-FUNCTIONS/det.cc (Fdet): Only return rcond if nargout > 1.
	* DLD-FUNCTIONS/inv.cc (Finv): Only return rcond if nargout > 1.

2001-03-26  Paul Kienzle  <pkienzle@kienzle.powernet.co.uk>

	* DLD-FUNCTIONS/det.cc (Fdet): Suppress warning, but return rcond.
	* DLD_FUNCTIONS/inv.cc (Finv): Return rcond if requested.

2001-02-28  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt.h (tree::break_statement): New static member.
	(tree::break_function): Make const.
	* pt.cc (tree::break_statement): Initialize here.
	(tree::break_function): Make const.
	* pb-bp.h (break_statement): Delete global varaible declaration.
	* pt-bp.cc (break_statement): Delete global variable definition.

	* pt-bp.h (tree_breakpoint::bp_list): Rename from lst.

	* pt.h: Don't inlcude ov-usr-fcn.h.
	Provide forward declaration of octave_user_function class.

2001-02-28  Ben Sapp  <bsapp@lanl.gov>

	* debug.cc (get_user_function): Simplify by using curr_function.
	(Fdbg_where): New function.
	(Fdbg_list): Now DLD_TEXT instead of DLD_FCN.
	(Fdbg_set): Likewise.
	(Fdbg_delete): Likewise. 

	* pt-bp.h (break_statement): New global variable.
	(MAYBE_DO_BREAKPOINT): Check for dbg_next and dbg_step.
	Print line, column, and current statement.
	* pt-bp.cc (break_statement): New global variable
	(tree_breakpoint::visit_do_until_command): Return immediately if
	we've already found the line.
	(tree_breakpoint::visit_colon_expression): Set breakpoint info here.
	(tree_breakpoint::visit_binary_expression): Recurse here when
	checking for breakpoints.

	* debug.cc: Move here from DLD-FUNCTIONS/debug.cc.
	* Makefile.in (DIST_SRC): Add it to the list.
	(DLD_XSRC): Delete it from the list.

	* pt.h (tree::last_line, tree::break_function): New static members.
	* pt.cc(tree::last_line, tree::break_function): Initialize them.

	* pt-cell.h (tree_cell::tree_cell): Accept line and column info.
	* pt-mat.h (tree_matrix::tree_matrix): Likewise.

	* ov-usr-fcn.h (octave_user_function::sym_tab): Delete.

	* input.cc (get_user_input): Handle dbg_next.
	Set tree:break_function and tree::last_line when doing dbg_step.

2001-02-28  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* lex.l (handle_string): Save line and column information in token.
	(is_keyword): Save line and column information for plot style and
	axes tokens.

	* toplev.cc (main_loop): Set retval to non-zero value if error
	occurs when not interactive.

2001-02-26  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* parse.y (gobble_leading_white_space): Handle CRLF here too.
	* lex.l (check_for_garbage_after_fcn_def): Likewise.

	* lex.l: Add numeric value of character to error message for
	unrecognized characters.

2001-02-22  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* DLD-FUNCTIONS/minmax.cc (EMPTY_RETURN_CHECK): For empty matrix
	args, make Octave's min	and max behave like Matlab.

2001-02-18  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* OPERATORS/op-s-s.cc (el_or, el_and): Return bool value.

2001-02-14  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-binop.cc (tree_boolean_expression::rvalue):
	Don't cast result to double.

	* OPERATORS/op-b-b.cc: Allow & and | operators to return bool values.

2001-02-09  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* data.cc (DATA_REDUCTION): Undo previous change.

2001-02-13  Matthew W. Roberts  <matt@nephi.tamu.edu>

	* load-save.cc (Fload): Accept -4 as an alias for -v4 and -mat4-binary.
	(Fsave): Likewise.

2001-02-13  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* lex.l (lexical_feedbac::init):
	Initialize looking_at_matrix_or_assign_lhs too.

2001-02-09  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* data.cc (DATA_REDUCTION): Allow FCN(x,0) to be equivalent to FCN(x).

2001-02-06  Mumit Khan  <khan@nanotech.wisc.edu>

	* oct-stream.cc (octave_scan): Partially implement and specialize
	for char*.  Delete the old template instantiations.
	(BEGIN_S_CONVERSION): Use strings instead of ostrstreambuf.
	(octave_base_stream::do_scanf): Pass correct parameter to
	do_scan_conv.

2001-02-05  Mumit Khan  <khan@nanotech.wisc.edu>

	* pr-output.cc (set_format): Add std:: namespace qualifier as
	needed.

	* oct-stream.cc (octave_scan): Implement, and specialize for
	char*. Delete the old template instantiations.
	(BEGIN_S_CONVERSION): Use strings instead of ostrstreambuf.
	(octave_base_stream::do_scanf): Pass correct parameter to
	do_scan_conv.

	* Makefile.in (TEMPLATE_AR, TEMPLATE_ARFLAGS): Use to create
	archive libraries containing templates.

	* c-file-ptr-stream.h: Include <fstream>. Use <cstdio> instead of
	<stdio.h>
	(c_file_ptr_buf::int_type): Compat typedef for non-ISO libstdc++.
	(c_file_ptr_buf::{overflow, underflow, uflow, pbackfail): Use.
	(c_file_ptr_buf::c_file_ptr_buf): Handle various compilers.
	(c_file_ptr_buf::file_number): New member function.
	(c_file_ptr_buf::fd): New private data.
	(i_c_file_ptr_stream::i_c_file_ptr_stream): Initialize stream
	correctly.
	(o_c_file_ptr_stream::o_c_file_ptr_stream): Likewise.
	* c-file-ptr-stream.cc 
	(c_file_ptr_buf::{overflow, underflow, uflow, pbackfail): Add
	ISO-compliant EOF handling.
	* oct-stream.cc (octave_base_stream::file_number): Use 
	c_file_ptr_buf::file_number to get underlying file descriptor.

	* comment-list.cc: Add missing class qualifier.

	* file-io.cc, load-save.cc, mappers.cc, oct-fstrm.cc, oct-fstrm.h,
	oct-iostrm.cc, oct-iostrm.h, oct-stdstrm.cc, oct-stdstrm.h,
	oct-stream.cc, oct-stream.h, oct-strstrm.cc, oct-strstrm.h,
	ov-base-nd-array.cc, ov-base-scalar.h, ov-complex.cc, ov-cx-mat.cc,
	pager.cc, pr-output.cc, procstream.h, pt-bp.h, utils.cc:
	Add std:: namespace qualifier as needed, and replace
	deprecated or invalid libstdc++-v2 names with standard ones
	where appropriate.

	* DLD-FUNCTIONS/minmax.cc: Fix docstring.

	* oct-fstrm.cc (octave_fstream::octave_fstream): Maintain fix for
	libstdc++-v2.

	* oct-stdstrm.cc (octave_ostdiostream::create): Remove default
	parameter value in definition.

	* oct-stream.cc (octave_stream::mode_as_string): Don't assume 
	std::iso::openmode is an integral quantity.

	* pager.cc, procstream.h: Initialize streams correctly.

	* utils.cc: Use CXX_ISO_COMPLIANT_LIBRARY guard.

	* ov-base-nd-array.cc (idx_list_to_idx_array): Inline. 

	* ov-base-scalar.h (octave_base_scalar::octave_base_scalar): Use
	``const ST& s'' instead of ST to workaround gcc3 complex bug.

2001-02-05  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* lex.l (next_token_is_bin_op): Remove Checks for spacing except
	for ops that begin with +, - but are not ++, --, +=, or -=.

2001-02-02  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* input.cc (get_user_input): Handle dbg_cont and dbg_step here.
	* debug.cc (Fdbg_cont): Delete.
	* pt-bp.h (MAYBE_DO_BREAKPOINT): Check tree::break_next here.
	* pt.h (tree::break_next): New static member.
	* pt.cc: Initialize it.

	* parse.h (feval (const octave_value_list&, int)):
	Set default value for nargout.
	(feval (const std::string&, const octave_value_list&, int)):
	Set default values for args and nargout.

2001-02-01  Ben Sapp  <bsapp@lanl.gov>

        * DLD-FUNCTIONS/debug.cc: New file.
        * pt-bp.h, pt-bp.cc: New files, for breakpoints.
	* Makefile.in: Add them to the appropriate lists.

        * pt-stmt.cc (tree_statement_list::set_breakpoint,
	tree_statement_list::delete_breakpoint,
	tree_statement_list::list_breakpoints): New functions.

	* pt.h (tree::break_point): New data member.
	(tree::set_breakpoint, tree::delete_breakpoint, tree::is_breakpoint):
	New virtual functions.

	* pt-mat.cc (tree_matrix::rvalue): Check for breakpoint here.
	* pt-unop.cc (tree_prefix_expression::rvalue): Likewise.
	(tree_postfix_expression::rvalue): Likewise.
	* pt-loop.cc (tree_do_until_command::eval): Likewise.
	(DO_LOOP): Likewise.
	(tree_simple_for_command::eval): Likewise.
	(tree_complex_for_command::eval): Likewise.
	* pt-assign.cc (tree_simple_assignment::rvalue): Likewise.
	* pt-binop.cc (tree_binary_expression::rvalue): Likewise.
	(tree_boolean_expression::rvalue): Likewise.
	* pt-cell.cc (tree_cell::rvalue): Likewise.
	* pt-colon.cc (tree_colon_expression::rvalue): Likewise.
	* pt-except.cc (tree_try_catch_command::eval): Likewise.
	(tree_unwind_protect_command::eval): Likewise.
	* pt-id.cc (tree_identifier::rvalue): Likewise.
	(tree_identifier::lvalue): Likewise.
	* pt-indir.cc (tree_indirect_ref::rvalue): Likewise.
	* pt-jump.cc (tree_break_command::eval): Likewise.
	(tree_continue_command::eval): Likewise.
	(tree_return_command::eval): Likewise.

2001-01-29  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Map.h, Map.cc (CHMap<C>::operator = (const CHMap&)): New function.
	(Map<C>::operator = (const Map&)): Likewise.
	(Map<C> (const Map&)): Likewise.

	* OPERATORS/op-cm-cs.cc, OPERATORS/op-cm-s.cc,
	OPERATORS/op-m-cs.cc, OPERATORS/op-m-s.cc:
	Make ldiv operator work for row vector by scalar ops.

	* OPERATORS/op-cs-cm.cc, OPERATORS/op-cs-m.cc,
	OPERATORS/op-s-cm.cc, OPERATORS/op-s-m.cc:
	Make div operator work for scalar by column vector ops.

2001-01-17  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* parse.y (safe_fclose): Discard comments at the end of a file.

2001-01-16  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* error.cc (pr_where): Call pr_where_1 with two args, not one, to
	avoid processing format escapes that might appear in formatted code.

2001-01-05  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* error.cc (vwarning): Write to output_buf, then send formatted
	message to diary and error streams.

2001-01-02  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-cx-mat.cc (octave_complex_matrix::try_narrowing_conversion): 
	Handle empty matrix dimensions correctly.

2000-12-14  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pager.h (octave_pager_buf::diary_skip): New data member.
	(octave_pager_buf::octave_pager_buf): Initialize it.
	* pager.cc (octave_pager_buf::set_diary_skip): New function.
	(octave_pager_stream::set_diary_skip): New function.
	(octave_pager_buf::sync): Call flush_current_contents_to_diary
	instead of octave_diary.write.
	(octave_pager_buf::flush_current_contents_to_diary): Use
	diary_skip, reset when done.
	(open_diary_file): Call octave_stdout.set_diary_skip here.

2000-12-06  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* DLD-FUNCTIONS/minmax.cc (EMPTY_RETURN_CHECK): New macro.
	(min, max): Use it.

	* DLD-FUNCTIONS/minmax.cc (MINMAX_BODY): New macro.  If single arg
	is empty, return empty matrix result and empty matrix for index.
	(Fmin, Fmax): Use MINMAX_BODY, so we have consistent definition
	for min and max functions.

2000-11-30  Joerg Specht  <joerg.specht@ins.uni-stuttgart.de>

	* help.cc (display_help_text): Append new line at end of doc string.

2000-11-30  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* DLD-FUNCTIONS/lsode.cc (LSODE_ABORT1, LSODE_ABORT2): Omit `##'
	in macro definition since they are not needed to paste strings
	together and picky compilers choke on them.
	* DLD-FUNCTIONS/quad.cc (QUAD_ABORT1, QUAD_ABORT2): Likewise.
	* DLD-FUNCTIONS/fsolve.cc (FSOLVE_ABORT1, FSOLVE_ABORT2): Likewise.
	* DLD-FUNCTIONS/dassl.cc (DASSL_ABORT1, DASSL_ABORT2): Likewise.

2000-11-29  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* mkbuiltins (XDEFUNX_INTERNAL): New macro.
	* mkgendoc (XDEFUNX_INTERNAL): Likewise.
	* defun-int.h (DEFUNX_INTERNAL): Use it.

	* defun.h (DEFUNX): New macro.
	* defun-int.h (DEFUNX_INTERNAL, DECLARE_FUNX): New macro.
	(DECLARE_FUN): Define in terms of DECLARE_FUNX.

	* mkdefs: Read and print one line at a time, so we can force
	patterns to match only at the beginning of a line.

	* defun-int.h (UNDERSCORIFY): Omit `##' in macro definition since
	they are not needed to paste strings together and picky compilers
	choke on them.

2000-11-17  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* load-save.cc (save_ascii_data_for_plotting): New function.
	* pt-plot.cc (save_in_tmp_file): Use it instead of save_ascii_data.

	* load-save.cc (save_ascii_data): Warn if saving Inf or NaN values.
	New arg, infnan_warned.  Use it to warn just once per set.
	Now static.
	(do_save): New arg, infnan_warned.  Pass to save_ascii_data.
	(save_vars): Initialize infnan_warned here, pass to do_save.

2000-11-16  Paul Kienzle  <pkienzle@kienzle.powernet.co.uk>

	* file-io.cc (Ffprintf): If no file id parameter, don't return
	count of characters if nargout is 0 (for compatibility with
	Matlab).

2000-11-16  Ben Sapp  <bsapp@lanl.gov>

	* DLD-FUNCTIONS/rand.cc (do_rand): Declare loop counter as
	volatile int, not just volatile.

2000-10-31  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* load-save.cc (skip_comments): Allow % as comment character too.
	(extract_keyword): Likewise.

	* Makefile.in (oct-gperf.h): Remove -a, -g, and -p flags for gperf.

2000-10-30  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* load-save.cc (do_load): Allow result to be returned instead of
	inserting variables in the symbol table.  Change patterned after
	patch by Kian Ming Adam Chai <caijianming@yahoo.co.uk>.

2000-10-27  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (ops.cc): Don't substitute BLAS_LIBS and LIBS here.

	* oct-conf.h.in (OCTAVE_CONF_SPECIAL_MATH_LIB): Delete.
	(OCTAVE_CONF_BLAS_LIBS): Add.
	* toplev.cc (octave_config_info): Likewise, add BLAS_LIBS and
	remove SPECIAL_MATH_LIB from the struct.

	* parse.y (feval (const octave_value_list&, int)): Don't panic
	while processing arg names if arg.length() and arg_names.length()
	differ.

2000-10-12  Paul Kienzle  <pkienzle@kienzle.powernet.co.uk>

	* ov-cell.h (octave_cell::is_cell): New function.

	* pt-select.cc (equal): New static function.
	(tree_switch_case::label_matches): Use it to compare case label
	against arg.  Handle cell arrays as case labels.

2000-10-12  John W. Eaton  <jwe@bevo.che.wisc.edu>

	Change patterned after patch by Cai Jianming
	<caijianming@yahoo.co.uk> to support for DIM arg in 2.0.x sources.

	* data.cc (DATA_REDUCTION): New macro.  Handle second DIM arg here.
	(Fcumprod): Replace function body with DATA_REDUCTION.
	(Fcumsum): Likewise.
	(Fprod): Likewise.
	(Fsum): Likewise.
	(Fsumsq): Likewise.

2000-10-10  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* error.cc (pr_where_2): New function.
	(pr_where_1): Use it instead of error_1 to avoid setting error_state.

2000-10-02  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* xdiv.cc (xdiv): Warn if execution falls through to lssolve.

2000-09-06  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* utils.cc (FERRNO): New function (currently commented out).

	* c-file-ptr-stream.cc (c_file_ptr_buf::close): Call flush here.
	(c_file_ptr_buf::~c_file_ptr_buf): Not here.
	* c-file-ptr-stream.h (c_fie_ptr_buf::close_fcn): New typedef.
	(c_file_ptr_buf::cf): New data member.  Add default constructor arg.
	(class c_file_ptr_buf): Derive from filebuf, not streambuf.
	(i_c_file_ptr_stream, o_c_file_ptr_stream): Handle close function here.
	* oct-procstrm.cc (octave_iprocstream, octave_oprocstream): Likewise.
	(octave_iprocstream::do_close, octave_oprocstream::do_close): Delete.
	* oct-stdstrm.cc (octave_base_stdiostream::~octave_base_stdiostream):
	Don't do anything.
	(octave_istdiostream::create): Handle close function here.
	(octave_istdiostream::octave_istdiostream): Likewise.
	(octave_ostdiostream::create): Likewise.
	(octave_ostdiostream::octave_ostdiostream): Likewise.
	(class octave_base_stdiostream): Don't cache FILE pointer here.

2000-09-01  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* syscalls.cc (Ffcntl): Don't assume that the file id passed in is
	the same as the underlying system file id.

2000-08-22  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* parse.y: Use octave_time, not time.

2000-08-03  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* oct-stream.cc (printf_value_cache::double_value): Also set
	curr_stat to conversion_error if there are no values at all.

2000-08-02  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* dirfns.cc (Flink, Fsymlink, Freadlink): New functions.

2000-08-01  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* load-save.cc (Vsave_header_format_string): New variable.
	(symbols_of_load_save): DEFVAR it.
	(save_header_format, default_save_header_format): New functions.
	(write_header): Use Vsave_header_format_string here.

2000-07-28  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-pr-code.h (tree_print_code::curr_print_indent_level,
	(tree_print_code::beginning_of_line): No longer static.
	(tree_print_code::tree_print_code): Initialize them here.
	* pt-pr-code.cc: Not here.

	* pt-stmt.cc (tree_statement::eval): Set curr_statement here.
	(tree_statement_list::eval): Not here.

	Debug-on-error stuff based on a patch submitted by Paul Kienzle
	<pkienzle@kienzle.powernet.co.uk> for 2.0.x.

	* error.cc (Vdebug_on_warning): New static flag variable.
	(debug_on_warning): New function.
	(symbols_of_warning): DEFVAR debug_on_warning.
	(warning): Handle debug_on_warning here.

	* input.cc (do_keyboard): New function.
	(Fkeyboard): Use it to do the real work.
	* pt-stmt.cc (curr_statement): New static variable.
	(tree_statement::eval): Save and restore it here.
	* error.cc (Vdebug_on_error): New static flag variable.
	(debug_on_error): New function.
	(symbols_of_error): DEFVAR debug_on_error.
	(pr_where, pr_where_1): New functions.
	(error): Handle debug_on_error here.

2000-07-20  Joao Cardoso  <jcardoso@inescporto.pt>

	* Makefile.in (octave): Link with $(LD_CXX) instead of $(CXX)

2000-07-20  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* oct-stream.cc (octave_base_stream::oscanf): Advance to next
	format element before attempting to pick up any trailing stuff.

2000-07-17  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* lex.l (next_token_is_bin_op): Don't recognize `..' as a binary op.

	* load-save.cc (get_file_format): Call read_mat5_binary_file_header 
	with third arg true instead of false, so we don't barf if the file
	is not a matlab v5 binary file.

2000-07-14  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (octave): Link to ../libcruft/blas-xtra/xerbla.o here.

	* octave.cc (main): Remove kluge to attempt linking our version of
	xerbla.

2000-07-07  Steven G. Johnson  <stevenj@alum.mit.edu>

	* load-save.cc (have_h5giterate_bug): New file-scope variable.
	(hdf5_read_next_data): Only increment current_item if
	have_h5giterate_bug is true.
	(read_hdf5_data): Set have_h5giterate_bug here.
	Only increment hs.current_item if have_h5giterate_bug is true.

2000-07-05  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* c-file-ptr-stream.cc (c_file_ptr_buf::close):
	Return -1 if file pointer is NULL.
	Set file pointer to 0 after closing.
	(c_file_ptr_buf::~c_file_ptr_buf): Call close after flushing.

2000-07-05  Steven G. Johnson  <stevenj@alum.mit.edu>

	* Makefile.in (BLAS_LIBS): Substitute here.
	(octave): Use $(BLAS_LIBS) in the final link command.

2000-06-30  Steven G. Johnson  <stevenj@alum.mit.edu>

	* Makefile.in (octave): Link $(FLIBS) last.
	* octave.cc (main): Force our own xerbla to be linked instead of
	some system version.

2000-06-29  James R. Van Zandt  <jrv@vanzandt.mv.com>

	* load-save.cc (load_save_format): New value, LS_MAT5_BINARY.
	(arrayclasstype, mat5_data_type): New enums.
	(read_mat5_binary_data): New function.
	(read_mat5_tag): New function.
	(read_mat5_binary_element): New function.
	(read_mat5_binary_file_header): New function.
	(get_file_format): Check for mat5 binary format too.
	(do_load): Handle mat5 binary format.
	(write_mat5_tag): New function.
	(write_mat5_array): New function.
	(class mat5_callback): New class.
	(save_mat5_binary_element): New functnon.
	(do_save): Handle mat5 binary format.
	(write_header): Handle LS_MAT5_BINARY case too.
	(save_user_variables): Handle LS_MAT5_BINARY case too.
	(Fsave): Handle LS_MAT5_BINARY case too.
	(Fload): Handle LS_MAT5_BINARY case too.

2000-06-29  Steven G. Johnson  <stevenj@alum.mit.edu>

	All of the following changes are protected by #ifdef HAVE_HDF5.

	* load-save.cc (load_save_format): New value, LS_HDF5.
	(make_valid_identifier): New function.
	(class hdf5_fstreambase, class hdf5_ifstream, class hdf5_ofstream):
	New classes for reading and writing hdf5 data.
	(hdf5_types_compatible): New function.
	(hdf5_import_multidim): New function.
	(hdf5_check_attr): New function.
	(hdf5_read_next_data): New function.
	(hdf5_make_complex_type): New function.
	(hdf5_make_range_type): New function.
	(read_hdf5_data): New function.
	(get_file_format): Handle HDF5 format.
	(do_load): Handle LS_HDF5 case.
	(Fload): Handle HDF5 format.
	(hdf5_add_attr): New function.
	(save_type_to_hdf5): New function.
	(add_hdf5_data): New function.
	(do_save): Handle HDF5 format.
	(get_default_save_format): Handle LS_HDF5 case.
	(write_header): Handle LS_HDF5 case.
	(save_user_variables): Handle HDF5 format.
	(Fsave): Handle HDF5 format.

2000-06-28  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* help.cc (display_help_text): If writing to filter fails, send
	unformatted text to output stream.

2000-06-27  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* OPERATORS/op-bm-bm.cc (eq): Define using mx_el_eq, not operator ==.
	(ne): Likewise, use mx_el_ne, not operator !=.

	* pr-output.cc (Fdisp): Delete.

2000-06-26  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pr-output.cc (float_format::float_format): Set default values
	for width and precision to -1.
	(operator << (ostream&, pr_formatted_float&): Set width and
	precision if values are >= 0.
	(set_real_format, set_real_matrix_format, set_range_format,
	set_complex_format, set_complex_matrix_format): If we have all
	integers, infinities, or nans, set precision equal to field width.

	* load-save.cc (read_ascii_data): Allow empty strings and string
	vectors to be restored.

	* variables.cc (var_matches_any_pattern): New function.
	(Fclear): Use it to make exclusive clear work correctly.

2000-06-08  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-range.h (octave_range::is_numeric_type): New function.

	* sysdep.cc (Fkbhit): Also ask for input if forced_interactive.

2000-06-07  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (oct-gperf.h): Use $(GPERF) instead of gperf.

2000-05-31  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* DLD-FUNCTIONS/qz.cc (Fqz): When computing finite generalized
	eigenvalues, don't write past the end of the array.

2000-05-11  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-base-nd-array.h, ov-base-nd-array.cc, ov-re-nd-array.h,
	ov-re-nd-array.h: New files.
	* Makefile.in: Add them to the appropriate lists.

	* pt-stmt.h, pt-stmt.cc (class tree_statement):
	Store comments associated with this parse tree element.
	* pt-select.h, pt-select.cc (class tree_if_clause,
	class tree_if_command, class tree_switch_case
	class tree_switch_command): Likewise.
	* pt-loop.h, pt-loop.cc (class tree_while_command,
	class tree_do_until_command, class tree_simple_for_command,
	class tree_complex_for_command): Likewise.
	* pt-except.h, pt-except.cc (class tree_try_catch_command,
	class tree_unwind_protect_command): Likewise.
	* ov-usr-fcn.h, ov-usr-fcn.cc (class octave_user_function): Likewise.
	* pt-pr-code.h, pt-pr-code.cc (tree_print_code::print_comment_elt,
	tree_print_code::print_comment_list,
	tree_print_code::print_indented_comment): New functions.
	(tree_print_code::visit_simple_for_command,
	tree_print_code::visit_complex_for_command,
	tree_print_code::visit_octave_user_function_header,
	tree_print_code::visit_octave_user_function_trailer,
	tree_print_code::visit_if_command, tree_print_code::visit_statement,
	tree_print_code::visit_switch_case,
	tree_print_code::visit_switch_command,
	tree_print_code::visit_try_catch_command,
	tree_print_code::visit_unwind_protect_command
	tree_print_code::visit_while_command,
	tree_print_code::visit_do_until_command): Handle comments.
	* lex.l, parse.y: Handle comments in parse trees.
	* comment-list.h, comment-list.cc: New files.
	* Makefile.in: Add them to the appropriate lists.

2000-04-23  etienne grossmann <etienne@anonimo.isr.ist.utl.pt>

	* pt-mat.cc (tm_row_const::tm_row_const_rep::eval_error):
	New args x and y, for dimension mismatch info.
	Change callers where appropriate.
	(tm_const::init): Report mismatched column dimensions.

2000-04-11  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* sysdep.cc (kbhit): Also clear cin if at EOF.

2000-04-11  Joao Cardoso <jcardoso@inescn.pt>

	* sysdep.cc (kbhit): New arg, wait.
	(raw_mode): Ditto.
	(Fkbhit): If given an arg, call kbhit with wait = false.

	* DLD-FUNCTIONS/minmax.cc (Fmax, Fmin): Fix doc string.

2000-04-04  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* dynamic-ld.cc (octave_dynamic_loader::do_load): Undo previous change.

2000-04-03  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* dynamic-ld.cc (octave_dynamic_loader::do_load): Also fail with
	error message if we don't find the mangled function name in the
	file.

2000-03-31  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* oct-stream.cc (printf_value_cache::string_value): Return string
	matrices in a Matlab-compatible way.
	(printf_value_cache): Redesign the way list_exhausted works.

	* oct-fstrm.cc (octave_fstream::do_close): New function.
	* oct-stdstrm.cc (octave_istdiostream::do_close): Ditto.
	(octave_ostdiostream::do_close): Ditto.
	* c-file-ptr-stream.cc (c_file_ptr_buf::close): Ditto.
	(i_c_file_ptr_stream::close): Ditto.
	(o_c_file_ptr_stream::close): Ditto.
	* oct-prcstrm.cc (octave_iprocstream::do_close): Ditto.
	(octave_oprocstream::do_close): Ditto.
	(octave_iprocstram::~octave_iprocstram): Call do_close here.
	(octave_iprocstram::~octave_oprocstram): Likewise.

	* oct-stream.h (octave_base_stream::do_close): New virtual function.
	(octave_base_stream::close): If stream is open, call do_close.

	* c-file-ptr-stream.cc (c_file_ptr_buf::flush): New function.
	(c_file_ptr_buf::~c_file_ptr_buf): Use it.
	(c_file_ptr_buf::overflow): Ditto.
	(c_file_ptr_buf::sync): Ditto.

2000-03-30  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* oct-procbuf.cc (octave_procbuf::open): Make output streams line
	buffered.

2000-03-24  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* sighandlers.cc (my_friendly_exit): Prefix failure messages with
	panic instead of error.

	* c-file-ptr-stream.cc (c_file_ptr_buf::~c_file_ptr_buf):
	Avoid dereferencing NULL pointer.

	* oct-stream.cc (printf_format_list::add_elt_to_list,
	printf_format_list::process_conversion,
	printf_format_list::finish_conversion): New args, flags, fw, and prec.
	(printf_format_list::printf_format_list): Save more complete info.
	(printf_format_list::printme): Print flags, fw, and prec.
	(octave_base_stream::printf): Simplify.
	(do_printf_conv): Delete have_arg arg, since it is always true now.
	(octave_base_stream::do_printf): Handle case of no args and %
	directly instead of using do_printf_conv.
	(printf_value_cache::exhausted): Rename from no_more_values.
	(DO_PCT_CONVERSION): New macro
	(octave_base_streain::do_scanf, octave_base_streain::do_oscanf):
	Use it.
	(scanf_format_list::finish_conversion): `%' counts as a conversion too.
	Also don't forget to set type for it.
	(OCTAVE_SCAN_0): Delete.
	(OCTAVE_SCAN): Rename from OCTAVE_SCAN_1.
	(octave_base_stream::scanf, octave_base_stream::oscanf): Don't
	special-case number of conversions here.
	(octave_base_stream::oscanf, octave_base_stream::do_oscanf): Only
	cycle through fmt elements if the number of conversions is greater
	than 0.

	* oct-stream.h (scanf_format_list::next): New arg, `cycle'.
	(printf_format_list::next): New arg, `cycle'.
	(printf_format_list::last_elt_p): New function.
	(printf_format_elt): New fields fw, prec, and flags.
	Define copy constructor and assignment operator.
	(scanf_format_elt): Define copy constructor and assignment operator.

2000-03-23  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* oct-stream.cc (OCTAVE_SCAN_0, OCTAVE_SCAN_1): New macros.
	(do_scanf_conv, BEGIN_S_CONVERSION, BEGIN_CHAR_CLASS_CONVERSION,
	do_scanf, scanf, do_oscanf, do_oscanf, oscanf): Use them instead
	of calling istream::scan directly.
	(octave_scan): New function.
	(do_scanf_conv): Second arg is now scanf_format_elt instead of char*.
	Change all callers.

	* oct-procbuf.h, oct-procbuf.cc (octave_procbuf):
	Derive from c_file_ptr_buf instead of filebuf.

	* oct-stream.cc (octave_base_stream::printf): Use octave_format
	instead of ostream::form.  Return number of characters written.

2000-03-22  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* oct-stream.cc (do_printf_conv): Use octave_format instead of
	ostream::form.  Return number of characters written.
	(octave_base_stream::do_printf): Return number of characters written.

	* error.cc (verror, vwarning): Use octave_format instead of
	ostream::vform.

	* utils.cc (octave_format, octave_vformat): New functions.
	* cutils.c (octave_snprintf, octave_vsnprintf): New functions.

	* oct-lvalue.h (dummy_val): New static variable.
	(octave_lvalue::octave_lvalue): Use it to initialize val.

	* variables.cc (is_valid_function): Look in the global symbol
	table for functions.

2000-03-21  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (LIBRARIES): Conditionally define.
	(libraries): Depend on $(LIBRARIES).
	(octave): Depend on $(LIBRARIES), not libraries.  Also depend on
	stamp-prereq and stamp-oct-links.
	(all): Don't depend on stamp-prereq or stamp-oct-links.
	(liboctinterp.$(LIBEXT), liboctinterp.$(SHELXT)): Delete target
	before rebuilding.

2000-03-21  Ben Sapp <bsapp@nua.lampf.lanl.gov>:

	* Makefile.in (libraries): Depend only on library targets, not
	archive members.

2000-03-17  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (objects): New target

	* c_file_ptr_stream.h, c_file_ptr_stream.cc: New files.
	* oct-stdstrm.h, oct-stdstrm.cc, oct-prcstrm.cc:
	Use c_file_ptr_buf, i_c_file_ptr_stream, and o_c_fie_ptr_stream
	instead of stdiobuf, istdiostream, and ostdiostream.

	* pr-output.cc (set_real_format, set_real_matrix_format,
	set_complex_format, set_complex_matrix_format, set_range_format):
	Do the right thing again for int, NaN, and Inf values.

2000-03-14  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pr-output.cc (pr_plus_format): Rename from do_plus_format.
	Change all callers.
	(pr_float, pr_complex): New arg, scale.  Handle scaling here.
	(float_format): New class for managing details of formatting
	floats.  Use it instead of character string formats and the
	nonstandard form() function from the GNU iostream library.

2000-02-23  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (clean): Also delete gendoc.

2000-02-18  James R. Van Zandt <jrv@vanzandt.mv.com>

	* load-save.cc (Vcrash_dumps_octave_core): Fix comment for this var.

2000-02-18  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* lex.l (handle_number): Don't transorm `[Dd]' to `e' if reading
	hex.

2000-02-11  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (install-inc): Install files in
	$(octincludedir)/octave.
	(uninstall): Remove them from the correct directory too.

	* defaults.h, defaults.cc (Vlocal_ver_arch_lib_dir): New variable.
	* defaults.cc (set_default_local_ver_arch_lib_dir): New function.
	(install_defaults): Call it.
	(exec_path): Prepend the versioned form of the local arch lib
	directory to the standard path.
	* defaults.h.in (OCTAVE_LOCALVERARCHLIBDIR,
	OCTAVE_LOCALVERFCNFILEDIR, OCTAVE_LOCALVEROCTFILEDIR):
	Substitute these too.
	* toplev.cc (Foctave_config_info): Add them to the struct.

2000-02-08  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* toplev.cc (Foctave_config_info): Add MKOCTFILE_INCFLAGS to the
	struct.
	* oct-conf.h.in (OCTAVE_CONF_MKOCTFILE_INCFLAGS): Define.

2000-02-07  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* DLD-FUNCTIONS/balance.cc (Fbalance): Explicitly request
	conversion from Matrix to ComplexMatrix.
	* DLD-FUNCTIONS/qz.cc (Fqz): Likewise.

	* ov-re-mat.h (octave_matrix::complex_matrix_value): Explicitly
	request conversion from Matrix type.

	* ov-ch-mat.h (octave_char_matrix::matrix_value): Explicitly
	request conversion from charMatrix type.
	(octave_char_matrix::complex_matrix_value): Likewise.
	* ov-bool-mat.h (octave_bool_matrix::matrix_value): Likewise.
	(octave_bool_matrix::complex_matrix_value): Likewise.

	* ov-range.h (octave_range::complex_matrix_value): Explicitly
	request conversion from Matrix type.

	* ov-cx-mat.h, ov-re-mat.h: Explicitly request conversions from
	diagonal matrix types in constructors.

	* mappers.cc (ximag, xreal): Return double, not Complex.

	* error.cc (panic): Turn off buffering of error messages.
	Don't call flush_octave_stdout here, verror will do it for us.	
	(verror): Don't call flush_octave_stdout if buffering error messages.

	* pt-except.cc (tree_try_catch_command::eval): Only restore
	buffer_error_message value (by running the unwind_protect element
	for it) if it has been saved.

	* help.cc (Ftype): Return value if nargout is NOT equal to zero.
	Delete unnecessary unwind_protect::begin_frame().

	* toplev.cc (octave_config_info): Stuff lots of new config info in
	the struct.

	* oct-conf.h.in: Delete TARGET_HOST_TYPE.

2000-02-04  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* siglist.c: Include <signal.h>.

	* lex.l (is_plot_keyword): Add minimum match length in call to
	almost_match.

	* Makefile.in (%.df : %.cc): Don't pass -c to compiler.

2000-02-03  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-base-mat.cc: Include pr-output.h here.

	* DLD-FUNCTIONS/rand.cc (curr_rand_dist): Return const char *
	instead of char *.

	* oct-fstrm.cc (octave_fstream::seek, octave_fstream::tell): 
	Call pubseekoff instead of seekoff.

	* DLD-FUNCTIONS/dassl.cc (print_dassl_option_list): Use stream
	manipulators instead of GNU iostream-specific form function.
	* DLD-FUNCTIONS/fsolve.cc (print_fsolve_option_list): Ditto.
	* DLD-FUNCTIONS/lsode.cc (print_lsode_option_list): Ditto.
	* DLD-FUNCTIONS/quad.cc (print_quad_option_list): Ditto.
	* pr-output.cc (pr_scale_header): Ditto.

	* sighandlers.h: Include signal.h here.
	* sighandlers.cc: Not here.

	* utils.cc: Include setjmp.h, not csetjmp.
	* toplev.cc: Ditto.

	* sighandlers.cc: Include signal.h, not csignal.

	* pt-plot.h: Don't include csignal.
	* toplev.cc: Ditto.
	* oct-hist.cc: Ditto.
	* octave.cc: Ditto.
	* pager.cc: Ditto.
	* input.cc: Ditto.
	* help.cc: Ditto.

	* pt-plot.cc (send_to_plot_stream): Use operator== and substr
	method to do limited-length string comparison.
	* input.cc (generate_completion): Likewise.
	* ov-dld-fcn.cc (octave_dld_function::octave_dld_function): Likewise.
	* ov-usr-fcn.cc (octave_user_function::mark_as_system_fcn_file):
	Likewise.

	* utils.cc (check_preference): Expect exact string matches.
	* variables.cc (ignore_function_time_stamp): Likewise.
	* lex.l (whitespace_in_literal_matrix): Likewise.

	* mappers.cc (xconj, ximag, xreal): New functions.  Use them in
	DEFUN_MAPPER calls.

	* defun-int.h (DEFUN_MAPPER_INTERNAL): Cast function pointer args
	to octave_mapper constructor.

2000-02-02  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* procstream.cc (procstreambase::procstreambase,
	procstreambase::open, procstreambase::close):
	Call std::ios::setstate, not set.

	* lex.l (plot_axes_token): Declare plot_axes as const char *.
	Declare tmp const char **.

	* oct-procbuf.h: Include fstream, not streambuf.h.

	* load-save.cc (Fsave): Call pubseekoff instead of seekoff.
	* oct-strstrm.cc (octave_base_strstream::tell): Likewise.
	(octave_base_strstream::seek): Likewise.

	* oct-stream.cc (octave_base_stream::read): Rename count to char_count.
	(octave_base_stream::do_gets): Likewise.

	* octave-stream.cc (octave_base_stream::write): Rename flt_fmt to ffmt.
	(octave_base_stream::read): Likewise.

	* TEMPLATE-INST/SLStack-sym.cc: Delete meaningless `extern
	template' declarations.
	* TEMPLATE-INST/Array-tc.cc: Ditto.

	* TEMPLATE-INST/Map-fnc.cc: Don't try to instantiate goodCHptr or
	CHptr_to_index here.
	* TEMPLATE-INST/Map-tc.cc: Likewise.
	* Map.h (CHNode::goodCHptr, CHNode::CHptr_to_index): Now member
	functions.  Change all callers.

	* load-save.cc (read_binary_file_header): Declare magic_len `const'.

	* token.h (token::token (const token&), token::operator=):
	Delete unnecessary definitions.

	* oct-stream.cc (octave_stream::mode_as_string): Use
	std::ios::binary, not std::ios::bin.
	* load-save.cc (Fsave, Fload, save_user_variables): Likewise.

	* DLD-FUNCTIONS/qz.cc (Fqz): Use Array<int> class instead of
	trying to create automatic int array with variable size.

	* variables.cc (F__dump_symbol_info__): Fix continuation char.
	* mappers.cc (Ftoupper): Likewise.
	* DLD-FUNCTIONS/besselj.cc (Fairy, Fbesselj): Likewise.
	* DLD-FUNCTIONS/chol.cc (Fchol): Likewise.
	* DLD-FUNCTIONS/det.cc (Fdet): Likewise.
	* DLD-FUNCTIONS/eig.cc (Feig): Likewise.
	* DLD-FUNCTIONS/gammainc.cc (gammainc): Likewise.
	* DLD-FUNCTIONS/givens.cc (givens): Likewise.
	* DLD-FUNCTIONS/hess.cc (hess): Likewise.
	* DLD-FUNCTIONS/inv.cc (inv): Likewise.
	* DLD-FUNCTIONS/log.cc (logm): Likewise.
	* DLD-FUNCTIONS/lu.cc (lu): Likewise.
	* DLD-FUNCTIONS/qr.cc (qr): Likewise.
	* DLD-FUNCTIONS/schur.cc (schur): Likewise.
	* DLD-FUNCTIONS/balance.cc (balance): Likewise.
	* DLD-FUNCTIONS/svd.cc (svd): Likewise.
	* DLD-FUNCTIONS/syl.cc (syl): Likewise.
	* DLD-FUNCTIONS/expm.cc (Fexpm): Likewise.

	* token.h (token::token_type, token::end_tok_type,
	token::plot_tok_type): Delete extraneous comma from enum decls.
	* load-save.cc (load_save_format): Likewise.

	* pt-idx.cc (tree_index_expression::tree_index_expression):
	Delete default arg values.
	* oct-fstrm.cc (octave_fstream::octave_fstream): Likewise.
	* oct-stream.cc (octave_stream::octave_stream): Likewise.

	* siglist.h, siglist.c: New files.
	* Makefile.in: Add them to the appropriate lists.
	* siglist.c (sys_siglist): Move definition here from sighandlers.cc.
	* siglist.h (sys_siglist): Move declaration here from sighandlers.h.

	* ov.h, ov-bool.h, ov-bool-mat.h (bool_matrix_value):
	Delete unnecessary arg.

	* ov.h (octave_value::do_multi_index_op): Rename from do_index_op.

	* ov-fcn.h (octave_function::is_system_fcn_file): Now const.

	* Map.cc (index_to_CHptr): Now a macro.
	(CHMap<C>::hash): Now a member function.

	* defun-int.h (UNDERSCORIFY): New macro.
	(DEFCONST_INTERNAL, DEFCONSTX_INTERNAL): Use it.

	* data.cc (Fis_list): Fix continuation char.
	* defaults.cc (IMAGEPATH): Likewise.

	* Map.cc (CHptr_to_index, goodCHptr): Delete static decl.

	* ov.h (unary_op, binary_op, assign_op): Prepend `op_' to elts.
	Change all usses

	* All source files: Sprinkle with std:: qualifier as needed.

2000-01-31  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* sighandlers.cc (install_signal_handlers): Add std:: qualifier
	for set_net_handler.

	* All source files: Include iostream, fstream, strstream,
	etc. as needed instead of using forward declarations for these
	classes.

2000-01-30  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* input.cc (input_event_hook, Finput_event_hook): New functions.
	(hook_fcn, user_data): New static variables.

2000-01-28  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-except.cc (do_catch_code): Don't do anything special for
	tree_return_command::returning, or tree_break_command::breaking.

	* error.cc (vwarning): New function.
	(warning): Use it instead of calling verror.

	* oct-stream.cc (octave_base_stream::oscanf):
	Result is now always nconv+1 elements.  Return count of successful
	conversions in last element.
	* file-io.cc (Ffscanf, Fsscanf, Fscanf): Fix doc string.

	* pt-except.cc (do_catch_code): Unwind-protect buffer_error_messages.
	Be sure to run all unwind-protects before returning.
	(tree_try_catch_command::eval): Add do_catch_code cleanup function
	to unwind-protect stack before resetting buffer_error_messages.
	Use unwind-protect to save and restore buffer_error_messages.
	If there is no catch code, discard the cleanup function and run
	the unwind-protect for buffer_error_messages.

	* error.cc (bind_global_error_variable): Avoid dereferencing
	error_message_buffer if it is NULL.

	* parse.y (evaluating_function_body): New global flag.
	* ov-usr-fcn.cc (octave_user_function::do_index_op):
	Protect and set it here.
	* parse.y (make_break_command, make_return_command): Check it here.

	* error.cc (warning_state): New global flag.
	(warning): Set it here.
	* lex.l (reset_parser): Clear it here.
	* parse.y (fold): Check it here.

2000-01-27  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-walk.h (tree_walker::visit_do_until_command): New pure virtual.
	* pt-pr-code.cc (tree_print_code::visit_do_until_command):
	New function.
	* pt-loop.h (tree_do_until_command): New class.
	(tree_while_command::expr, tree_while_command::list):
	Now protected instead of private.
	* parse.y (make_do_until_command): New function.
	(loop_command): Recognize do-until statement.
	(DO, UNTIL): New tokens.

	* input.cc (match_sans_spaces): Require non-blank part of test
	string to match standard string exactly.

2000-01-26  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* oct-stream.h (scanf_format_elt::char_class): New struct elt.
	Add arg to constructor.
	(scanf_format_elt::special_conversion): New enum.
	* oct-stream.cc (scanf_format_list::add_elt_to_list): New arg,
	char_class.  Pass it to scanf_format_elt constructor.
	(scanf_format_list::scanf_format_list): Create separate list
	elements for whitespace and literal conversions.
	(expand_char_class): New function.
	(scanf_format_list::finish_conversion): Extract character class
	(not including the delimiting brackets) and expand the list of
	characters.  Pass the result to add_elt_to_list.
	(scanf_format_list::all_character_conversions): Also accept '^',
	scanf_format_elt::literal_conversion, and
	scanf_format_elt::whitespace_conversion types too.
	(DO_WHITESPACE_CONVERSION, BEGIN_CHAR_CLASS_CONVERSION,
	BEGIN_C_CONVERSION, BEGIN_S_CONVERSION, DO_LITERAL_CONVERSION):
	New macros.
	(octave_base_stream::do_scanf, octave_base_stream::do_oscanf):
	Use them to avoid code duplication.
	Handle whitespace, literal text, and character class conversions.
	(octave_base_stream::oscanf): Loop over all format list elements,
	not just the first nconv elements.  Clear status flags on is for
	all streams.

2000-01-25  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* xdiv.cc (result_ok): Just check value of info.
	(solve_singularity_warning): New function.
	(xleftdiv, xdiv): Pass pointer to solve_singularity_warning to
	solve function.	

	* lex.l (handle_identifier): Set next_tok_is_eq if we are looking
	at `=', but not if we are looking at `=='.

	* pt-pr-code.cc (tree_print_code::visit_unwind_protect_command): 
	Print `unwind_protect_cleanup', not `cleanup_code'.

	* pager.cc (octave_pager_buf::flush_current_contents_to_diary):
	New function.
	(octave_pager_stream::flush_current_contents_to_diary):
	Ditto.
	(close_diary_file): Use the new octave_pager_stream function to
	try to flush the current buffer to the diary when it is closed.

	* variables.cc (Fexist): Return 6 for built-in constants.

	* pt-plot.cc (Fgshow): Don't append " " after last arg.
	(Fgset): Likewise.

2000-01-23  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-base-mat.h (octave_base_matrix::length): Return 0 for empty
	arrays.

2000-01-20  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* DLD-FUNCTIONS/time.cc (Fstrptime): New function.

	* load-save.cc (Fsave): Add missing else.

2000-01-17  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* DLD-FUNCTIONS/gammainc.cc (Fgammainc): Texinfoize doc string.
	* ov-typeinfo.cc (Ftypeinfo): Ditto.
	* parse.y (Vwarn_future_time_stamp): Ditto.
	* DLD-FUNCTIONS/minmax.cc (Fmax, Fmin): Ditto.
	* ov-usr-fcn.cc (Fva_arg, Fva_start, Fvr_val): Ditto.
	* defaults.cc (VOCTAVE_HOME, Frehash): Ditto.
	* toplev.cc (Fwarranty, Fcasesen): Ditto.
	* utils.cc (Fdo_string_escapes, Ffile_in_loadpath): Ditto.
	* variables.cc (F__dump_symtab_info__, F__dump_symbol_info__): Ditto.
	* ov-list.cc (Flist, Fappend, Fnth, Freverse, Fsplice): Ditto.
	* input.cc (Fread_readline_init_file): Ditto.
	* file-io.cc (Fis_stream): Ditto.
	* ov-cell.cc (Fiscell, Fcell): Ditto.
	* pt-assign.cc (Vprint_rhs_assign_val): Ditto.
	* pt-decl.cc (Vinitialize_global_variables): Ditto.
	* symtab.cc (Vvariables_can_hide_functions): Ditto.

	* pt-plot.cc (Fgraw, Fgset, Fgshow, Vgnuplot_command_plot, 
	Vgnuplot_command_replot, Vgnuplot_command_splot,
	Vgnuplot_command_using, Vgnuplot_command_with,
	Vgnuplot_command_axes, Vgnuplot_command_title,
	Vgnuplot_command_end): Texinfoize doc strings.

	* oct-procbuf.cc (__kluge_procbuf_delay__): Rename from
	kluge_procbuf_delay.  Texinfoize doc string.

2000-01-13  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* parse.y (gobble_leading_whitespace): Discard first space character
	after consecutive comment characters.
	* lex.l (grab_help_text): Ditto.

	* lex.l (Vwhitespace_in_literal_matrix, Vwarn_separator_insert,
	Vwarn_single_quote_string): Texinfoize doc string.

2000-01-11  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov.h, ov.cc (octave_value::column_vector_value,
	octave_value::row_vector_value,
	octave_value::complex_column_vector_value,
	octave_value::complex_row_vector_value): New functions.
	(octave_value::vector_value): Now returns Array<double>.
	(octave_value::complex_vector_value): Now returns Array<Complex>.
	Sprinkle conversions where necessary.

	* ov.cc (Vprefer_column_vectors): Now static.
	* ov.h (octave_value (const ComplexRowVector&),
	octave_value (const ComplexColumnVector&),
	octave_value (const RowVector&), octave_value (const ColumnVector&)):
	Delete second arg.  Change all callers.

	* oct-obj.h (octave_value_list (const RowVector&),
	octave_value_list (const ColumnVector&),
	octave_value_list (const ComplexRowVector&),
	octave_value_list (const ComplexColumnVector&)): Likewise.
	* ov-cx-mat.h, ov-cx-mat.cc
	(octave_complex_matrix (const ComplexRowVector&),
	(octave_complex_matrix (const ComplexColumnVector&)):
	Delete second arg, simply create object with orientation
	corresponding to vector arg.  Move constructors to class decl.
	* ov-re-mat.h, ov-re-mat.cc (octave_matrix (const RowVector&),
	(octave_matrix (const ColumnVector&)):
	Delete second arg, simply create object with orientation
	corresponding to vector arg.  Move constructors to class decl.

2000-01-07  Ben Sapp <bsapp@nua.lampf.lanl.gov>

	* mappers.cc (Fconj, Ferf, Ferfc, Fgamma, Fimag, Flgamma, Flog10,
	Freal, Fround): Add @seealso{...} to doc strings.

2000-01-06  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* oct-stream.cc (do_scanf): Do the right thing again for character
	conversions.

	* help.cc (display_help_text): Also strip out leading spaces
	before Texinfo @-commands before sending doc string to makeinfo.
	(display_help_text): Improve format of `See also' string.

2000-01-05  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* help.cc (display_help_text): Pass a definition for @seealso
	through the filter.

1999-12-22  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* lex.l (Vwarn_single_quote_string): New variable.
	(syms_of_lex): DEFVAR it.
	(warn_single_quote_string): New function.
	(gripe_single_quote_string): New function.
	Use new stuff to allow warnings for code that uses single quote
	characters to introduce string constants.

1999-12-20  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* mkbuiltins: Add #undef quad to generated file.

1999-12-15  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* lex.l (Vwarn_separator_insert): New variable.
	(syms_of_lex): DEFVAR it.
	(warn_separator_insert): New function.
	(maybe_warn_separator_insert): New function.
	Use new stuff to allow warnings for code that might result in
	auto-insertion of commas or semicolons, depending on the value of
	whitespace_in_literal_matrix.

	* parse.y (Fsource): Record function file name here too.

1999-12-13  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* variables.cc (link_to_global_variable): If the local symbol is
	not a variable, don't bother to clear it.  Instead, just redefine
	it by aliasing to the global symbol.

1999-11-23  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* DLD-FUNCTIONS/balance.cc (Fbalance): Texinfoize doc string.
	* DLD-FUNCTIONS/det.cc (Fdet): Ditto.
	* DLD-FUNCTIONS/eig.cc (Feig): Ditto.
	* DLD-FUNCTIONS/givens.cc (Fgivens): Ditto.
	* DLD-FUNCTIONS/inv.cc (Finv): Ditto.
	* DLD-FUNCTIONS/chol.cc (Fchol): Ditto.
	* DLD-FUNCTIONS/hess.cc (Fhess): Ditto.
	* DLD-FUNCTIONS/lu.cc (Flu): Ditto.
	* DLD-FUNCTIONS/qr.cc (Fqr): Ditto.
	* DLD-FUNCTIONS/schur.cc (Fschur): Ditto.
	* DLD-FUNCTIONS/svd.cc (Fsvd): Ditto.
	* DLD-FUNCTIONS/expm.cc (Fexpm): Ditto.
	* DLD-FUNCTIONS/log.cc (Flogm, Fsqrtm): Ditto.
	* DLD-FUNCTIONS/syl.cc (Fsyl): Ditto.
	* DLD-FUNCTIONS/pinv.cc (Fpinv): Ditto.
	* DLD-FUNCTIONS/qz.cc (Fqz): Ditto.
	* DLD-FUNCTIONS/dassl.cc (Fdassl, Fdassl_options): Ditto.
	* DLD-FUNCTIONS/lsode.cc (Flsode, Flsode_options): Ditto.
	* data.cc (Flength, Fsize, Fisempty): Ditto.
	* sysdep.cc (Fkbhit): Ditto.
	* input.cc (Fkeyboard, Finput): Ditto.
	* variables.cc (ans): Ditto.
	* pr-output.cc (Fdisp, Fformat): Ditto.
	* ov.cc (Vprint_answer_id_name): Ditto.
	* defaults.cc (IMAGEPATH): Ditto.
	* error.cc (Ferror, Fwarning, Fusage, error_text, beep_on_error):
	Ditto.
	* load-save.cc (Fload, Fsave, Vdefault_save_format,
	Vsave_precision): Ditto.
	* file-io.cc (Ffflush, Ffopen, Ffclose, Ffputs, Ffgetl, Ffgets,
	Ffprintf, Fsprintf, Fscanf, Ffscanf, Fsscanf, Ffread, Ffwrite,
	Ffseek, Fftell, Ffeof, Fferror, Ffreport, Ftmpnam, Vstdin_file,
	Vstdout_file, Vstderr_file, SEEK_SET, SEEK_CUR, SEEK_END): Ditto.
	* pager.cc (Vpager_binary, Vpage_output_immediately,
	Vpage_screen_output, Fmore): Ditto.

1999-11-21  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* utils.cc (Vtreat_neg_dim_as_zero): Texinfoize doc string.
	* DLD-FUNCTIONS/find.cc (Ffind): Ditto.
	* DLD-FUNCTIONS/rand.cc (Frand, Frandn): Ditto.
	* DLD-FUNCTIONS/sort.cc (Fsort): Ditto.
	* mappers.cc (Fisinf, Fisnan, Ffinite): Ditto.
	* data.cc (Fall, Fany, Fdiag, Fones, Fzeros, Feye, Flinspace): Ditto.
	* defaults.cc (Vloadpath, Vdefault_loadpath): Ditto.
	* parse.y (Feval, Ffeval, Vdefault_eval_print_flag,
	Vwarn_missing_semicolon, Vwarn_function_name_clash, Fsource): Ditto.
	* ov-usr-fcn.cc (Vmax_recursion_depth, Vdefault_return_value,
	Vdefine_all_return_values, Vreturn_last_computed_value): Ditto.
	* ov.cc (Vok_to_lose_imaginary_part, Vdo_fortran_indexing,
	Vprefer_column_vectors, Vresize_on_range_error,
	Vwarn_divide_by_zero): Ditto.
	* pt-stmt.cc (Vsilent_functions): Ditto.
	* variables.cc (Vignore_function_time_stamp): Ditto.
	* dynamic-ld.cc (Vwarn_reload_forces_clear): Ditto.

1999-11-20  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* DLD-FUNCTIONS/fft.cc (Ffft): Texinfoize doc string.
	* DLD-FUNCTIONS/ifft.cc (Fifft): Ditto.
	* DLD-FUNCTIONS/fft2.cc (Ffft2): Ditto.
	* DLD-FUNCTIONS/ifft2.cc (Fifft2): Ditto.
	* DLD-FUNCTIONS/filter.cc (Ffilter): Ditto.
	* DLD-FUNCTIONS/quad.cc (Fquad, Fquad_options): Ditto.
	* DLD-FUNCTIONS/colloc.cc (Fcolloc): Ditto.
	* DLD-FUNCTIONS/fsolve.cc (Ffsolve, Ffsolve_options): Ditto.
	* defaults.cc (Veditor): Ditto.
	* pt-plot.cc (Vautomatic_replot, Vgnuplot_binary,
	Vgnuplot_has_frames, Vgnuplot_has_multiplot, Fclearplot,
	Fcloseplot, Fpurge_tmp_files, Fishold, Fhold): 

	* Makefile.in (parse.cc): Expect 11 shift/reduce conflicts now.

1999-11-19  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* parse.y (Vwarn_assign_as_truth_value,	Vwarn_variable_switch_label):
	Texinfoize doc strings.

	* DLD-FUNCTIONS/pinv.cc (Fpinv): Texinfoize doc string.

	* defun-int.h (DEFUN_DLD_INTERNAL): New macro.
	* defun-dld.h [MAKE_BUILTINS] (DEFUN_DLD): Simply expand to
	DEFUN_DLD_INTERNAL.
	* mkbuiltins: Generate code to define DEFUN_DLD_INTERNAL.
	* mkgendoc: Likewise.

	* Makefile.in (gendoc.o): Don't optimize when creating gendoc.
	(%.dc : %.cc): Delete rule.

	* pt-decl.cc (Vdefault_global_variable_value): Texinofize doc string.
	* variables.cc (Fclear, Fdocument, Fexist, Fis_global, Fwho): Ditto.
	* help.cc (Ftype, Fwhich): Ditto.
	* ov.cc (Vstruct_levels_to_print, Vimplicit_str_to_num_ok): Ditto.
	* data.cc (Fis_struct, Fstruct_elements, Fstruct_constains): Ditto.
	* strfns.cc (Fisstr, Fsetstr): Ditto.
	* pt-mat.cc: (Fimplicit_num_to_str_ok, Fstring_fill_char): Ditto.
	* utils.cc (Fundo_string_escapes): Ditto.
	* mappers.cc: (Fisalnum, Fisalpha, Fisascii, Fiscntrl, Fisdigit,
	Fisgraph, Fislower, Fisprint, Fispunct, Fisspace, Fisupper,
	Fisxdigit, Ftoascii, Ftolower, Ftoupper): Ditto.

1999-11-18  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* syscalls.cc (symbols_of_syscalls): Use DEFCONSTX to define
	Octave constants for C macros like O_WRONLY.

	* oct-lvalue.cc (octave_lvalue::set_index): Disallow expressions
	like x(i)(j) = rhs.

1999-11-17  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* symtab.cc (symbol_record::type_as_string): New function.

	* symtab.cc (symbol_record::which): New functions.
	* help.cc (do_which): New functions.
	(Fwhich): Use them.

	* help.cc (help_from_symbol_table, help_from_file): New functions.
	(builtin_help): Use them.

	* help.cc (do_type): New function.
	(symbol_record::type): New function.
	(Ftype): Use them.

	* help.cc (print_symbol_type): Delete.

	* symtab.cc (symbol_table::name_list): Delete count arg.
	(symbol_table::symbol_list): Likewise.
	(symbol_table::glob): Likewise.  Also return Array<symbol_record *>
	instead of symbol_record **.
	Change all callers.
	* help.cc (names, display_symtab_names): Delete count arg.

	* help.cc (print_symbol_type, Ftype): No longer need to look up
	fcn_file_name in the loadpath.

	* help.cc (print_symbol_type): Handle dld functions.
	(help_from_symbol_table, help_from_file): New functions.
	(builtin_help): Use them.

1999-11-16  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-cell.cc (Fiscell, Fcell): New Functions.
	(octave_cell::do_index_op): New function.

	* utils.cc (get_dimensions): Move here from data.cc and make extern.
	(Vtreat_neg_dim_as_zero, treat_neg_dim_as_zero): Likewise.
	(symbols_of_utils): New function.

	* data.cc (fill_matrix (const octave_value_list&, double,
	const char*)): New function.
	(Fones, Fzeros): Use it to avoid some code duplication.

1999-11-15  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-cell.h, pt-cell.cc, ov-cell.h, ov-cell.cc, Cell.h, Cell.cc:
	New files.
	* Makefile.in: Add them to the appropriate lists.
	* pt-walk.h (visit_cell (tree_cell&): New pure virtual.
	* pt-pr-code.cc (tree_print_code::visit_cell (tree_cell&)): New
	function.
	* TEMPLATE-INST/Array-tc.cc: Instantiate 2D arrays of octave_value
	objects.
	* pt-all.h: Include pt-cell.h.
	* ov.h, ov.cc (octave_value::is_cell, octave_value::cell_value):
	New functions.
	* ov-base.h, ov-base.cc (octave_value::is_cell,
	octave_value::cell_value): Provide defaults.
	* lex.h, lex.l: Handle `{' and `}' tokens (for cell arrays).
	(bracketflag): Rename from braceflag.
	(handle_close_bracket): Rename from handle_close_brace.
	(class bracket_brace_paren_nesting_level): Rename from
	brace_paren_nesting_level.
	(bracket_brace_paren_nesting_level::bracket, 
	bracket_brace_paren_nesting_level::is_bracket): New functions to
	keep count of nesting level for `[' and `]'.
	(bracket_brace_paren_nesting_level::brace, 
	bracket_brace_paren_nesting_level::is_brace): Now keeps count of
	nesting level for `{' and `}'.
	* parse.y (tree_cell_type): New type.
	Give '{' the same precedence and associativity as '(' and '.'
	(matrix_rows, matrix_rows1): Rename from rows, rows1.
	(cell, cell_rows, cell_rows1): New non-terminals.
	(cell_or_matrix_row): Rename from matrix_row.
	(primary_expr): Accept cell here.
	(postfix_expr): Allow indexing using '{' arg_list '}'.
	(finish_cell): New function.

1999-11-12  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* utils.cc (jump_to_top_level): No longer declared extern "C".

	* cutils.c (octave_strcasecmp, octave_strncasecmp): New functions.
	* utils.cc (almost_match): Call octave_strncasecmp instead of
	calling strncasecmp directly.

1999-11-10  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* parse.y: Don't define warn_reload_forces_clear here.

	* Makefile.in (DISTFILES): Include DOCSTRINGS.

1999-11-05  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* sighandlers.cc (install_signal_handlers): Don't install
	sigwinch_handler.

	* oct-iostrm.h (octave_istream::eof, octave_ostream::eof): Provide
	implementation for these.

	* oct-stream.cc (octave_base_stream::do_scanf):
	The stdin stream is only special if we are interactive.
	(octave_base_stream::scanf): Ditto.
	(octave_base_stream::do_oscanf): Ditto.
	(octave_base_stream::oscanf): Ditto.

	* ov.h (octave_value::is_stream): New predicate.
	* ov-file.h (octave_file::is_stream): Return true.
	* file-io.cc (Fis_stream): New function.

	* ov-file.h (class octave_file): stream is now an object instead
	of pointer.
	* ov-file.cc (octave_file::print_raw): Handle stream as object
	instead of pointer.  Also print stream status.

	* ov-base.cc (octave_base_value::stream_value): Return object
	instead of pointer.

	* ov.cc (octave_value::stream_value): Return object instead of pointer.
	(octave_value::octave_value (const octave_stream&)): Take const
	reference instead of pointer arg.

	* TEMPLATE-INST/Array-os.cc: Instantiate Arrays of octave_stream
	objects, not pointers to them.

	* OPERATORS/op-fil-b.cc: Cope with octave_stream class changes.
	* OPERATORS/op-fil-bm.cc: Likewise.
	* OPERATORS/op-fil-cm.cc: Likewise.
	* OPERATORS/op-fil-cs.cc: Likewise.
	* OPERATORS/op-fil-lis.cc: Likewise.
	* OPERATORS/op-fil-m.cc: Likewise.
	* OPERATORS/op-fil-rec.cc: Likewise.
	* OPERATORS/op-fil-s.cc: Likewise.
	* OPERATORS/op-fil-str.cc: Likewise.
	* file-io.cc: Likewise.
	* syscalls.cc (Fdup): Likewise.

	* oct-fstrm.cc, oct-fstrm.h, oct-iostrm.cc, oct-iostrm.h,
	oct-prcstrm.cc, oct-prcstrm.h, oct-stdstrm.cc, oct-stdstrm.h,
	oct-stream.cc, oct-stream.h, oct-strstrm.cc, oct-strstrm.h:
	Rewrite to allow octave_stream objects to be used like values
	instead of having to use pointers.

1999-11-03  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* oct-stream.cc (octave_base_stream::do_scanf): If it looks like
	we have a matching failure, then reset the failbit in the stream
	state.
	(octave_base_stream::do_oscanf): Likewise.

1999-11-02  Ben Sapp <bsapp@nua.lampf.lanl.gov>

	* help.cc (Fhelp): Texinfoize doc string.
	* input.cc (Fecho, Fcompletion_matches): Ditto.
	* oct-hist.cc (Fedit_history, Fhistory, Frun_history): Ditto.
	* pager.cc (Fdiary): Ditto.
	* sysdep.cc (Fclc): Ditto.
	* toplev.cc (Fquit, Fatexit): Ditto.
	
1999-11-02  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* lex.l (yywrap): No longer static.
	(have_continuation): Declare input character as int, not char, so
	comparison to EOF will work.

1999-11-01  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* defun.cc (print_usage): Use display_help_text instead of sending
	help message directly to octave_stdout.

1999-10-29  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* defun-dld.h (INSTALL_DLD_FCNS, INSTALL_DLD_FCN): Delete definitions.
	* DLD-FUNCTIONS/dassl.cc: Don't use INSTALL_DLD_FCN or
	INSTALL_DLD_FCNS macros.  They are not necessary with the new code
	in dynamic-ld.cc.
	* DLD-FUNCTIONS/lsode.cc: Ditto.
	* DLD-FUNCTIONS/fsolve.cc: Ditto.
	* DLD-FUNCTIONS/quad.cc: Ditto.
	* DLD-FUNCTIONS/time.cc: Ditto.
	* DLD-FUNCTIONS/besselj.cc: Ditto.
	* DLD-FUNCTIONS/getgrent.cc: Ditto.
	* DLD-FUNCTIONS/getpwent.cc: Ditto.
	* DLD-FUNCTIONS/inv.cc: Ditto.
	* DLD-FUNCTIONS/log.cc: Ditto.
	* DLD-FUNCTIONS/minmax.cc: Ditto.
	* DLD-FUNCTIONS/rand.cc: Ditto.

	* dynamic-ld.cc, dynamic-ld.h: Major rewrite to allow reloading of
	dynamically linked functions.

	* symtab.cc (symbol_record::replace_all_defs): Don't allow top
	definition to be NULL.
	(symbol_table::clear): Allow dynamically linked functions to be
	cleared.

	* symtab.h (TYPE): New enum value, DLD_FUCTION.
	(symbol_type): Now 8 bits wide.
	(SYMTAB_ALL_TYPES): Include DLD_FUNCTION.
	(symbol_record::symbol_def::is_function): Also recognize dld functions.
	(symbol_record::symbol_def::is_dld_function): New function.
	(symbol_record::is_dld_function): Ditto.

	* defun.cc (install_dld_function): New function.
	* defun-int.h: Provide declaration here.
	(octave_dld_fcn_installer): New typedef.
	(DEFINE_FUN_INSTALLER_FUN): Installer function now takes an
	oct_shlib object as an arg.  Allow installation of a function to
	happen more than once.

	* octave.cc (initialize_error_handlers): Call
	set_liboctave_warning_handler here too.

	* ov-builtin.h (is_builtin_function): Return true.
	Data member is now protected, not private.

	* ov-fcn.h (is_dynamically_loaded_function): New predicate.
	(unload): New function.
	Data members are now protected, not private.

	* ov.h (is_builtin_function, is_dld_function): New predicates.
	* ov-base.h (is_builtin_function, is_dld_function): Ditto.

	* parse.y (Vwarn_reload_forces_clear): New static flag.
	(warn_reload_forces_clear): New function.
	(symbols_of_parse): DEFVAR warn_reload_forces_clear.

	* variables.cc (Fclear): Look for dld functions too.

	* ov-dld-fcn.cc, ov-dld-fcn.h: New files.
	* Makefile.in (OV_INCLUDES, OV_SRC): Add them to the lists.

	* Makefile.in (DEFVAR_PATTERN): Also match DEFCONSTX.

1999-10-26  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* DLList.h, DLList.cc: New files.
	* Makefile.in (INCLUDES, DIST_SRC): Add them to the lists.

	* DLD-FUNCTIONS/lsode.cc (Flsode): Be sure to call
	unwind_protect::run_frame before returning.
	* DLD-FUNCTIONS/quad.cc (Fquad): Likewise.
	* DLD-FUNCTIONS/fsolve.cc (Ffsolve): Likewise.
	* DLD-FUNCTIONS/dassl.cc (Fdassl): Likewise.

	* load-save.cc (read_mat_ascii_data): When reading from
	tmp_stream, check its state, not the state of is.

	* defun-dld.h (INSTALL_DLD_FCN, INSTALL_DLD_FCNS): New macros.
	* DLD-FUNCTIONS/dassl.cc: Use them.
	* DLD-FUNCTIONS/lsode.cc: Ditto.
	* DLD-FUNCTIONS/fsolve.cc: Ditto.
	* DLD-FUNCTIONS/quad.cc: Ditto.
	* DLD-FUNCTIONS/time.cc: Ditto.
	* DLD-FUNCTIONS/besselj.cc: Ditto.
	* DLD-FUNCTIONS/getgrent.cc: Ditto.
	* DLD-FUNCTIONS/getpwent.cc: Ditto.
	* DLD-FUNCTIONS/inv.cc: Ditto.
	* DLD-FUNCTIONS/log.cc: Ditto.
	* DLD-FUNCTIONS/minmax.cc: Ditto.
	* DLD-FUNCTIONS/rand.cc: Ditto.

	* data.cc (Flinspace): Let linspace functions handle errors.

	* mkgendoc (print_doc_string): Handle quoted names.

	* file-io.cc (symbols_of_file_io): Use DEFCONSTX for SEEK_SET,
	SEEK_CUR, and SEEK_END.

	* defun.h (DEFCONST): Just pass name, defn, and doc to
	DEFCONST_INTERNAL.
	(DEFCONSTX): Likewise, pass name, defn, and doc to DEFCONSTX_INTERNAL.
	* defun-int.h [MKBUILTINS] (DEFCONST_INTERNAL): Likewise, pass
	name, defn, and doc to XDEFCONST_INTERNAL.
	[MKBUILTINS] (DEFCONSTX_INTERNAL): New macro.
	(INSTALL_CONST): New macro.
	[! MKBUILTINS] (DEFCONST_INTERNAL): Use it to handle details here.
	[! MKBUILTINS] (DEFCONSTX_INTERNAL): Ditto.
	* mkgendoc: Fix definition of XDEFCONST_INTERNAL to match.
	* mkbuiltins: Ditto.

	* mkdefs: Match spaces before BEGIN_INSTALL_BUILTIN.

	* Makefile.in (DEFUN_PATTERN): Also match DEFUN_MAPPER.

1999-10-26  Ben Sapp <bsapp@nua.lampf.lanl.gov>

	* data.cc (VI, VInf, VJ, VNaN, Ve, Veps, Vfalse, Vi, Vinf, Vj,
	Vnan, Vpi, Vrealmax, Vrealmin): Texinfoize doc strings.
	* mappers.cc (Fabs, Facos, Facosh, Fangle, Farg, Fasin, Fasinh,
	Fatan, Fatanh, Fceil, Fconj, Fcos, Fcosh, Ferf, Ferfc, Fexp,
	Ffinite, Ffix, Ffloor, Fgamma, Fimag, Flgamma, Flog, Flog10,
	Freal, Fround, Fsign, Fsin, Fsinh, Fsqrt, Ftan, Ftanh): Ditto.

1999-10-23  Ben Sapp <bsapp@nua.lampf.lanl.gov>

	* data.cc (Fis_matrix): Texinfoize doc string.
	* ov.cc	(Vpropagate_empty_matrices): Ditto.
	* pt-mat.cc: (Vempty_list_elements_ok): Ditto.
	* pr-output.cc (Vfixed_point_format, Voutput_max_field_width,
	Voutput_precision, Vprint_empty_dimensions, Vsplit_long_rows):
	Ditto.

1999-10-22  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-usr-fcn.cc (octave_user_function::do_index_op): If
	Vmax_recursion_depth is exceeded, call unwind_protect::run_frame
	before returning.

1999-10-21  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* cutils.c (do_octave_usleep): Handle useconds > 1e6.

	* variables.h (is_valid_function): Provide default values for the
	string argument.

	* symtab.cc (variable_reference): Maybe print warning (or error)
	about variables that hide functions of the same name.
	(symbol_record::define (const octave_value&, unsigned int)): Ditto.
	(Vvariables_can_hide_functions): New static variable.
	(variables_can_hide_functions, symbols_of_symtab): New functions.

	* cutils.c: New file.
	* Makefile.in (SOURCES): Add it to the list.
	* utils.h: Declare octave_usleep here.
	* dirfns.cc (Fls): Simply all octave_usleep.
	* oct-procbuf.cc (octave_procbuf::open): Ditto.
	* sysdep.cc (Fusleep): Ditto.
	* toplev.cc (run_command_and_return_output): Ditto.

1999-10-20  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* data.cc (make_diag (const octave_value&, const octave_value&)):
	Delete special cases for scalars and simply attempt conversion of
	first arg to a matrix value.  If that fails, we will still see an
	error message.

	* Makefile.in (DISTFILES): Add mkgendoc to the list.

1999-10-19  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (stmp-pic): New target.
	($(PICOBJS)): Depend on stmp-pic, not pic.

	* ov.h (get_rep): New function.

	* help.cc (display_help_text): Pass definitions for VERSION,
	OCTAVE_HOME, and TARGETHOSTTYPE to makeinfo.

	* DLD-FUNCTIONS/getgrent.cc: Texinfoize all doc strings.
	* DLD-FUNCTIONS/getpwent.cc: Ditto.
	* DLD-FUNCTIONS/getrusage.cc: Ditto.
	* DLD-FUNCTIONS/time.cc: Ditto.

	* defaults.cc (EXEC_PATH, OCTAVE_VERSION): Texinfoize doc strings.
	* dirfns.cc (Fcd, Fls, Fpwd, Freaddir, Fmkdir, Frmdir, Frename,
	Fglob, Ffnmatch): Ditto.
	* file-io.cc (Fpopen, Fpclose, Fumask): Ditto.
	* sysdep.cc (Fgetenv, Fputenv, Fpause, Fsleep, Fusleep, Fisieee,
	Ftilde_expand): Ditto.
	* toplev.cc (Fcomputer, Fsystem, Foctave_config_info): Ditto.
	* utils.cc (Ffile_in_path): Ditto.
	* syscalls.cc (Fdup2, Fexec, Ffcntl, Ffork, Fgetpgrp, Fgetpid,
	Fgetppid, Fgetegid, Fgetgid, Fgeteuid, Fgetuid, Fmkfifo, Fpipe,
	Fstat, Funlink, Fwaitpid, F): Ditto.
	(Flstat): Refer to stat for doc.


	* help.cc (looks_like_texinfo): New function.
	(display_help_text): Use it to see if the doc string looks like
	Texinfo source.  If so, use makeinfo to format the text before
	displaying it.

	* mkgendoc: New script.
	* Makefile.in: Use it to create gendoc.cc, which is compiled and
	run to create DOCSTRINGS file from sources.

1999-10-18  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* help.cc (help_from_info): Print `unable to find info' message if
	try_info returns 127; otherwise, print `not indexed' message.
	Don't sleep after printing `not indexed' message.

1999-10-14  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* parse.y (fold (tree_unary_expression *)): New function.
	(make_prefix_op, make_postfix_op): Use it.

1999-10-13  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (oct-gperf.h): Ask for ANSI-C output from gperf
	(requires gperf-2.7 or later).

	* sighandlers.cc (sigwinch_handler): New function.
	(install_signal_handlers): Install it.

Thu Sep 23 19:49:36 1999  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* toplev.cc (Fsystem): For async case, use execl instead of
	system, avoiding the need to exit after executing the subprocess.

Thu Sep  9 17:09:23 1999  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* oct-stream.cc (get_size): Allow zero values.
	(get_size): New arg, one_elt_size_spec.
	(do_scanf_conv): New arg, `conv_count'.  Change instantiation
	requests and all callers.
	(octave_base_stream::do_scanf): Improve scanning of strings.
	(octave_base_stream::do_oscanf): Remove size limit on %s conversions.

	* oct-stream.cc (scanf_format_list::all_character_conversions):
	Don't count %p as a character conversion.

Tue Sep  7 08:31:04 1999  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pr-output.cc (set_real_matrix_format, set_complex_matrix_format): 
	Move check for fixed_point_format ahead of check for
	int_or_inf_or_nan.

Thu Sep  2 11:54:51 1999  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* oct-obj.cc (make_argv): Correctly handle empty strings as args.

Fri Aug 20 08:17:52 1999  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* DLD-FUNCTIONS/quad.cc (quad): Delete unused label.

	* unwind-prot.cc (saved_variable::~saved_variable): Don't try to
	delete gen_ptr_value here.

Mon Aug 16 21:34:33 1999  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* lex.l (next_token_is_sep_op): New function.
	(handle_close_brace, maybe_unput_comma): Use it.
	(have_continuation): Also handle CRLF here.

Wed Aug 11 16:06:57 1999  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* file-io.cc (Ffopen): Make fopen ("filename") work and imply that
	MODE = "r".

Wed Jul 21 15:38:52 1999  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* help.cc (display_names_from_help_list): Sort names before
	listing them.
	(print_symbol_type, Ftype): Also handle built-in constants.
	(LIST_SYMBOLS): Correct call to symbol_table::name_list.
	(simple_help): List constants here too.  List constants and
	variables before functions, not after.  Sort names before listing
	them.

	* variables.cc (do_who): Display built-in constants in a separate
	section.

	* error.cc (bind_global_error_variable, clear_global_error_variable): 
	Call bind_builtin_constant, not bind_builtin_variable to set
	__error_text__.
	* octave.cc (intern_argv): Likewise, for argv and __argv__.

	* defun.cc (install_builtin_constant): Move function guts to
	bind_builtin_constant in variables.cc.
	* variables.cc (bind_builtin_constant): New function.

	* symtab.cc (symbol_record::define, symbol_record::variable_reference):
	Handle constants the same as functions.
	(symbol_record::link_to_builtin_variable): New function.
	(symbol_record::define_builtin_const): New function.
	(symbol_record::define_as_fcn): Delete unused function.
	(symbol_record::read_only_error):
	Handle constants the same as variables.
	* symtab.h (symbol_record::BUILTIN_CONSTANT): New enum value.
	(symbol_record::symbol_type): Increase width to 7 bits.
	(symbol_record::symbol_def::is_constant): New function.
	(symbol_record::symbol_def::is_builtin_constant): New function.
	(symbol_record::is_constant): New function.
	(symbol_record::is_builtin_constant): New function.
	(SYMTAB_ALL_TYPES): Add symbol_record::BUILTIN_CONSTANT.
	* variables.cc (link_to_builtin_variable): Delete unused function.
	(link_to_builtin_or_function): Handle built-in constants here too.

	* defun.cc (install_builtin_variable): Delete inst_as_fcn arg.
	(install_builtin_constant): New function.
	(install_builtin_variable_as_function): Delete unused function.
	* defun.h (DEFVAR_INTERNAL): Delete inst_as_fcn arg.
	(DEFCONST_INTERNAL): New macro.
	* defun.h (DEFVAR): Delete inst_as_fcn arg.
	(DEFCONST, DEFCONSTX): Define using DEFCONST_INTERNAL instead of
	DEFVAR_INTERNAL.
	* data.cc, defaults.cc, error.cc, help.cc, input.cc, lex.l,
	load-save.cc, oct-hist.cc, oct-procbuf.cc, ov-fcn.h,
	ov-usr-fcn.cc, ov.cc, pager.cc, parse.y, pr-output.cc,
	pt-assign.cc, pt-decl.cc, pt-mat.cc, pt-plot.cc, pt-stmt.cc,
	toplev.cc, variables.cc:
	Change all invocations of DEFVAR to match new definition.

	* data.cc (symbols_of_data): Add DEFCONSTs for true and false.

Thu Jul 15 10:59:42 1999  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* data.cc (Fis_bool, Fis_complex, Fisempty, Fisnumeric, Fis_list,
	Fis_map, Fis_struct): Return bool object.
	(Fisreal): New function.

	* ov-str-mat.h (octave_char_matrix_str): Only return true if
	Vimplicit_str_to_num_ok is also true.

	* DLD-FUNCTIONS/time.cc (Ftime): Print usage message if	any
	arguments are supplied.

	* variables.cc (symbol_out_of_date): Call octave_time for time stamps.

	* fn-cache.h (octave_fcn_file_name_cache::timestamp):
	Now octave_time object.

	* strftime.c: Move to liboctave directory.
	* Makefile.in (DIST_SRC): Delete from list.

	* ov-usr-fcn.h (octave_user_function::t_parsed,
	octave_user_function::t_checked): Now octave_time objects.
	(octave_user_function::time_parsed,
	(octave_user_function::time_checked):
	Return value is now octave_time object.
	(octave_user_function::mark_fcn_file_up_to_date)):
	Arg is now octave_time object.
	
	* ov-fcn.h (octave_function::mark_fcn_file_up_to_date)):
	Arg is now octave_time object.
	(octave_function::time_parsed, octave_function::time_checked):
	Return value is now octave_time object.

	* input.cc (Vlast_prompt_time): Now an octave_time object.
	(octave_gets): Call octave_time::stamp() to set Vlast_prompt_time.

	* DLD-FUNCTIONS/time.cc (mk_tm_map, extract_tm, Ftime, Fgmtime,
	Flocaltime, Fmktime, Fstrftime): Use new classes defined in
	liboctave/oct-time.cc instead of accessing C functions directly.

Wed Jul 14 17:38:46 1999  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* systime.h: Move to liboctave directory.
	* Makefile.in (INCLUDES): Delete it from the list

Tue Jul 13 14:34:57 1999  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* sighandlers.cc (sigchld_handler): Only wait for processes in
	octave_child_list.
	* toplev.cc (cmd_status): Delete unused static variable.
	(cmd_death_handler): Delete unused function.
	(run_command_and_return_output): Don't add cmd_death_handler to
	octave_child_list.  Simply extract command exit status from
	calling close() on the procstream object.

Mon Jul 12 22:38:50 1999  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* defun.h (DEFUN_MAPPER): Handle new args, d_b_map and c_b_map.
	* defun-int.h (DEFUN_MAPPER_INTERNAL): Likewise.
	* mappers.cc (install_mapper_functions): Supply new args to
	all uses of DEFUN_MAPPER.
	* ov-mapper.cc (octave_mapper::apply): Handle mapper functions
	that return bool objects.
	* ov-mapper.h (octave_mapper::d_b_mapper, octave_mapper::c_b_mapper):
	New typedefs.
	(octave_mapper::octave_mapper): Handle new mapper function types.

	* DLD-FUNCTIONS/minmax.cc: Do a better job of handling NaNs.

Sun Jul 11 13:15:17 1999  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pr-output.cc (do_plus_format (ostream&, double)): New function.
	(octave_print_internal (ostream&, double, bool)): Use it.
	(octave_print_internal (ostream&, const Matrix&, bool, int)): Ditto.

	* pr-output.cc (do_plus_format (ostream&, const Complex&)):
	New function.
	(octave_print_internal (ostream&, const Complex&, bool)): Use it.
	(octave_print_internal (ostream&, const ComplexMatrix&, bool, int)):
	Ditto. 

Sun Jun 20 23:04:00 1999  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* sysdep.cc: Include sys/ioctl.h if available.

Sat Jun 19 12:07:16 1999  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* variables.cc (do_who): Make pattern and multiple non-option
	arguments work.

Mon Jun  7 09:54:51 1999  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* lex.l (next_token_is_bin_op, next_token_is_postfix_unary_op,
	handle_number): Delete yytext arg.  Change all callers.
	(next_token_is_postfix_unary_op): Check the first character
	obtained from yyinput before calling it again.
	(next_token_is_bin_op): Do a more thorough check.
	(handle_identifier): Also enter token in local symbol table if the
	following token is a dot and it looks like a binary operator.
	(whitespace_in_literal_matrix): Now static.

	* lex.l: Always use unput, not yyunput.

Fri May 28 11:02:37 1999  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* DLD-FUNCTIONS/chol.cc (Fchol): If two output arguments, never
	produce error message.

Thu May 27 18:28:35 1999  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* DLD-FUNCTIONS/chol.cc (Fchol): Also return info as second output.

	* DLD-FUNCTIONS/minmax.cc (max (const ComplexMatrix&, const
	ComplexMatrix&)): Correct test for real columns only.  
	(min (const ComplexMatrix&, const ComplexMatrix&)): Likewise.

Wed Apr 14 12:54:25 1999  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* DLD-FUNCTIONS/dassl.cc (Fdassl): Prevent recursive calls.
	* DLD-FUNCTIONS/fsolve.cc (Ffsolve): Likewise.
	* DLD-FUNCTIONS/lsode.cc (Flsode): Likewise.
	* DLD-FUNCTIONS/quad.cc (Fquad): Likewise.

	* file-io.cc (Fsscanf, Ffscanf): Doc fix.

Sat Mar 27 11:07:51 1999  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov.h (octave_value::count): New function.
	* symtab.cc (symbol_record::dump_symbol_info): New function.
	* symtab.cc (symbol_record::symbol_def::dump_symbol_info): Ditto.
	* variables.cc (F__dump_symbol_info__): Ditto.

	* pt-misc.cc (tree_parameter_list::clear): New function.
	* ov-usr-fcn.h (octave_user_function::clear_args_passed): Ditto.
	* ov-usr-fcn.cc (clear_param_list): New function.
	(clear_args_passed): New function.
	(octave_user_function::do_index_op): Use them to decrement
	reference counts on local variables.

Fri Mar 26 00:51:53 1999  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (libraries): Use the libfoo.a(objects) method of
	creating static libs.

	* defaults.cc (symbols_of_defaults): Initialize LOADPATH to
	Vload_path, not ":".

Thu Mar 18 12:09:23 1999  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* data.cc (Fisnumeric): Fix typo.

Thu Mar  4 02:17:04 1999  James Macnicol <jamesm@evans.ee.adfa.oz.au>

	* file-io.cc (Ffread, Ffwrite): Add uint16 and uint32 data types
	to doc string.

Wed Mar  3 11:55:17 1999  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* lex.l (handle_string): Allow "" to pass through unchanged if
	working on a gset command.

Tue Mar  2 01:36:29 1999  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* variables.cc (Fexist): If a variable isn't defined, only go on
	to look for a global by the same name if we are at the top level.

Fri Jan 29 02:18:36 1999  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* version.h (OCTAVE_NAME_AND_VERSION): Say `GNU Octave', not just
	Octave.

Thu Jan 28 21:29:16 1999  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* toplev.cc (Fcomputer): Use CANONICAL_HOST_TYPE, not TARGET_HOST_TYPE.
	(octave_config_info): Likewise.
	* version.h: Ditto.

	* sysdep.cc (Fpause): Flush output before getting user input.

Wed Jan 27 14:18:29 1999  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (DEFFUN_PATTERN, DEFVAR_PATTERN): Use egrep again.
	Make the patterns work with stupid egreps that don't like empty
	elements in alternation patterns.

Fri Jan 22 04:41:48 1999  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* load-save.cc (save_ascii_data): Check for string type first,
	then range, then the rest.
	(save_binary_data): Ditto.

	* pager.cc (more_than_a_screenful): Accept length as second arg.
	Handle long lines properly, assuming the terminal wraps long lines.
	(octave_pager_buf::do_sync): Accept length of data as second arg.
	Use write instead of << to put characters on output stream.
	(octave_pager_buf::sync): Don't assume data ends at first NUL.
	(octave_diary_buf::sync): Ditto.

Thu Jan 21 22:15:23 1999  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* load-save.cc (save_mat_binary_data): Check for string type
	first, then range, then the rest.

Wed Jan 20 12:01:14 1999  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* oct-stream.cc (octave_base_stream::do_scanf): Handle short and
	long ints correctly.

Fri Jan 15 13:04:58 1999  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* parse.y (end_error): Handle case of endswitch too.

	* Makefile.in: Use basic regular expressions and grep instead of
	egrep to find files that contain DEFVAR, DEFCONST, or DEFUN.

Wed Dec  9 14:14:11 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (octave): Add $(RDYNAMIC_FLAG) to link command.

Fri Dec  4 20:26:33 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* DLD-FUNCTIONS/time.cc (Fstrftime): Make it work even when not
	using the GNU version of strftime, which allows passing NULL for
	the buffer to determine the required size of the buffer.

Wed Dec  2 22:38:40 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* utils.cc (file_in_loadpath): Expect argc == 2, not 3.

Tue Nov 24 23:38:19 1998  Eric Norum <eric@skatter.USask.Ca>

	* mkbuiltins: Also strip off leading `./' from file names.
	* mkops: Ditto.

Tue Nov 24 23:24:26 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* strftime.c: Surround everything with #ifdef HAVE_STRFTIME / #endif.

	* lex.h (YY_FATAL_ERROR): Call yy_falta_error after
	jump_to_top_level to avoid gcc warning.

Fri Nov 20 13:34:47 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-bool.h, ov-bool.cc (class octave_bool): Derive from
	octave_base_scalar and get common functions via derivation.
	* ov-scalar.h, ov-scalar.cc (class octave_scalar): Ditto.
	* ov-complex.h, ov-complex.cc (class octave_complex): Ditto.

	* ov-base-scalar.h, ov-base-scalar.cc (class octave_base_scalar):
	New files for new class definition.  Put common scalar data type
	stuff here.
	* Makefile.in (OV_INCLUDES, OV_SRC): Add them to the lists.

Thu Nov 19 14:30:25 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>
	
	* dynamic-ld.cc (octave_dynamic_loader::mangle_name):
	Prepend underscore here.
	(octave_dynamic_loader::load_fcn_from_dot_oct_file): Not here.

	* ov-re-mat.h (octave_matrix_value): Delete experimental code for
	handling structure references for things like .rows, .cols, etc.

Wed Nov 18 01:18:46 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (VAR_FILES): Be more careful about matching.
	(DEF_FILES): Likewise.

	* ov-base-mat.h, ov-base-mat.cc, ov-bool-mat.h, ov-bool-mat.cc,
	ov-ch-mat.h, ov-ch-mat.cc, ov-cx-mat.h, ov-cx-mat.cc,
	ov-re-mat.h, ov-re-mat.cc: Move default definition of all, any,
	is_matrix_type, is_numeric_type, valid_as_zero_index, and
	do_index_op to base class.
	Provide definitions that override the defaults where necessary.

	* mappers.cc: Don't include lo-specfun.h.

Tue Nov 17 14:35:56 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* besselj.cc (Fbesselh, Fairy); New functions.
	(Fbesselj, Fbessely, Fbesselk, Fbesseli): Update doc strings.
	(do_bessel): Handle additional args.

Fri Nov 13 14:47:11 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* lex.l (NUMBER): Allow hexadecimal constants.
	(looks_like_hex): New function.
	(handle_number): Check for hexadecimal constants and convert them
	to unsigned integer values.

Thu Nov 12 11:13:24 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* input.cc (gnu_readline): Check for EOF from command_editor::readline.

	* ov-str-mat.h, ov-str-mat.cc (class octave_char_matrix_str):
	Get common functions via new derivation scheme.
	
	* ov-bool-mat.h, ov-bool-mat.cc (class octave_bool_matrix):
	Derive from octave_base_matrix and get common functions via derivation.
	* ov-ch-mat.h, ov-ch-mat.cc (class octave_char_matrix): Ditto.
	* ov-cx-mat.h, ov-cx-mat.cc (class octave_complex_matrix): Ditto.
	* ov-re-mat.h, ov-re-mat.cc (class octave_real_matrix): Ditto.

	* ov-base-mat.h, ov-base-mat.cc (class octave_base_matrix): New
	files  for new class definition.  Put common matrix data type
	stuff here.

	* ov-list.cc (Fnth): New function.

	* ov-list.cc (octave_list::do_index_op): Allow more complex indexing.

	* oct-obj.cc (octave_value_list::index): New function.
	(octave_value_list::octve_value_list (Array<octave_value>)):
	New private constructor.

	* ov-list.cc (Fsplice): Fix docstring to match.
	* oct-obj.cc (octave_value_list::splice): Allow special case
	splice (x, length(x)+1, 0, y) to be equivalent to append (x, y).

	* ov-list.cc (Fappend): If an arg is a list, concatenate the lists
	instead of appending arg as a single element.

Wed Nov 11 14:07:27 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* load-save.cc (get_mat_data_input_line): New function.
	(get_lines_and_columns): Use it here.
	(read_mat_ascii_data): And here and do our own reading instead of
	using Matrix::operator<<.

Tue Nov 10 16:12:25 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* parse.y (make_constant): Initialize retval to 0.

	* toplev.h (clean_up_and_exit (void)): Delete declaration.
	* toplev.cc (do_octave_atexit): Move guts of clean_up_for_exit
	here, but ensure that the actions are only executed once.
	* octave.cc (main): Don't register cleanup_tmp_files with atexit.

	* ov.h, ov.cc (class octave_value): Use DECLARE_OCTAVE_ALLOCATOR
	and DEFINE_OCTAVE_ALLOCATOR for uniform declaration and definition
	of allocator functions.  Use DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA
	and DEFINE_OV_TYPEID_FUNCTIONS_AND_DATA for uniform declaration
	and definition of type id functions and data.
	* ov-usr-fcn.h, ov-usr-fcn.cc (class octave_user_function): Ditto.
	* ov-scalar.h, ov-scalar.cc (class octave_scalar): Ditto.
	* ov-re-mat.h ov-re-mat.cc (class octave_matrix): Ditto.
	* ov-range.h, ov-range.cc (class octave_range): Ditto.
	* ov-mapper.h, ov-mapper.cc (class octave_mapper): Ditto.
	* ov-list.h, ov-list.cc (class octave_list): Ditto.
	* ov-file.h, ov-file.cc (class octave_file): Ditto.
	* ov-fcn.h, ov-fcn.cc (class octave_function): Ditto.
	* ov-cx-mat.h, ov-cx-mat.cc (class octave_complex_matrix): Ditto.
	* ov-complex.h, ov-complex.cc (class octave_complex): Ditto.
	* ov-ch-mat.h, ov-ch-mat.cc (octave_char_matrix): Ditto.
	* ov-builtin.h, ov-builtin.cc (class octave_builtin): Ditto.
	* ov-bool.h, ov-bool.cc (class octave_bool): Ditto.
	* ov-bool-mat.h, ov-bool-mat.cc (octave_bool_matrix): Ditto.

	* ov.h (DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA): New macro.
	(DEFINE_OV_TYPEID_FUNCTIONS_AND_DATA): Ditto.

Mon Nov  9 16:12:37 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pr-output.cc (octave_print_internal): Reorder default args for
	charMatrix version.
	(octave_print_internal): New function for boolMatrix.

	* version.h (OCTAVE_STARTUP_MESSAGE): Note that this is a
	development release.

	* toplev.cc (do_octave_atexit): Call flush_octave_stdout here.
	(clean_up_for_exit): And here.

Mon Nov  9 15:20:53 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* input.cc (get_user_input): Check retval.length(), not	retval.length.

Sun Nov  8 19:30:33 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-assign.cc (tree_simple_assignment::rvalue): If etype is
	asn_eq, don't evaluate ult again because retval is just rhs value.
	(tree_multi_assignment::rvalue): Likewise.

Fri Nov  6 12:14:29 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-loop.cc (tree_for_command::eval): Move code for string RHS
	outside if clause for matrix types.

	* pt-idx.cc: Don't forget to define arg_nm.
	Move contstructor here.
	* pt-idx.h: From here.

	* data.cc (Fisempty): Also return true for empty strings.

Wed Nov  4 17:21:41 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-base.cc (octave_base_value::rows, octave_base_value::columns,
 	octave_base_value::length): Delete.
	* ov-base.h (octave_base_value::rows, octave_base_value::columns,
 	octave_base_value::length): Define here.  All return -1 if not
	defined in a derived class.

	* data.cc (Fis_matrix): Also return true if the arg is a range.

Tue Nov  3 09:40:24 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* data.cc (Fis_bool): New function.
	Also add alias for islogical.

	* ov.h (octave_value::is_bool_type): New function.
	* ov-base.h (octave_base_value::is_bool_type): Likewise.
	* ov-bool.h (octave_bool::is_bool_type): Likewise.
	* ov-bool-mat.h (octave_bool_matrix::is_bool_type): Likewise.

Mon Nov  2 13:36:04 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* lex.l (handle_close_brace): Also handle case of ']' followed by
	other assignment ops (+=, -=, ...).

	* pt-assign.cc (tree_simple_assignment::rvalue): Correctly handle
	return value and printing for operators other than `='.
	(tree_multi_assignment::rvalue): Likewise.

	* pt-assign.h (tree_multi_assignment::etype): New data member.
	* pt-assign.cc 	(tree_multi_assignment::rvalue): Use it instead of
	assuming `='.
	(tree_multi_assignment::oper): New function.
	* pt-pr-code.cc (tree_print_code::visit_multi_assignment): Use
	it instead of always printing `='. 
	* parse.y (make_assign_op): Pass expression type to
	tree_multi_assignment constructor.	

	* Makefile.in (stmp-pic): New target.
	($(PICOBJ)): Depend on stmp-pic, not pic.
	(clean): Delete stmp-pic.

Sun Nov  1 23:24:55 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* mappers.cc (install_mapper_functions): Add alias for isfinite.

Sat Oct 31 08:46:55 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* data.cc (Fisnumeric): New function.

Fri Oct 30 08:39:30 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* oct-lvalue.cc (octave_lvalue::do_unary_op): Make it work for
	indexed ops too.
	* ov.cc (octave_value::unary_op_to_assign_op): New function.
	(octave_value::do_non_const_unary_op): New function for	indexed ops.

	* parse.y (LEFTDIV_EQ, ELEFTDIV_EQ): New tokens.
	(assign_expr): Add rules for them.
	(make_assign_op): Handle them here too.
	* lex.l: Recognize them.
	* ov.h (octave_value::assign_op): Add ldiv_eq and el_ldiv_eq.
	* ov.cc (octave_value::assign_op_as_string): Ditto.
	(octave_value::op_eq_to_binary_op): Ditto.
	(octave_value::assign): Handle OP= style operators with brute force.
	(octave_value::simple_assign): New function.

	* parse.y (matrix): Dont' forget to reset
	lexer_flags.looking_at_matrix_or_assign_lhs.

	* oct-lvalue.cc (octave_lvalue::assign): Don't call change
	function if error occurs.
	(octave_lvalue::do_unary_op): If we have an index, fail with message.

Thu Oct 29 09:27:04 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov.cc (do_binary_op): Protect against invalid type conversions.
	(try_assignment_with_conversion): Likewise.
	(do_unary_op): Likewise.

	* ov.h (OV_UNOP_FN, OV_UNOP_OP, OV_UNOP_FN_OP): New macros.
	Use them to define not, uminus, transpose, hermitian functions
	and operators ! and -.
	(OV_BINOP_FN, OV_BINOP_OP, OV_BINOP_FN_OP): New macros.
	Use them to define add, sub, mul, div, pow, ldiv, lshift, rshift,
	lt, le, eq, ge, gt, ne, el_mul, el_div, el_pow, el_ldiv, el_and,
	el_or, struct_ref, functions and operators <, <=, ==, >=, >, !=,
	+, -, *, and /.

	* ops.h (CONVDECLX): New macro.
	* ov-base.cc (matrix_conv, complex_matrix_conv, string_conv):
	Use it to declare these functions.

	* ops.h (CONVDECL, INSTALL_WIDENOP):
	Prefix function name with `oct_conv_'.
	(INSTALL_BINOP, BINOPDECL): Prefix function name with `oct_binop_'.
	(INSTALL_ASSIGNOP, INSTALL_ASSIGNANYOP, ASSIGNOPDECL):
	Prefix function name with `oct_assignop_'.
	(UNOPDECL, DEFNCUNOP_METHOD, INSTALL_UNOP, INSTALL_NCUNOP):
	Prefix function name with `oct_unop_'.

	* ov-str-mat.cc (default_numeric_conversion_function):
	Return 0 if conversion fails.

	* parse.y (make_prefix_op, make_postfix_op): Use
	octave_value::unary_op enum.
	
	* pt-unop.cc (tree_prefix_expression::rvalue): Use new unary_op
	functions from octave_value and octave_lvalue classes.
	(tree_prefix_expression::rvalue): Likewise.

	* pt-unop.cc (tree_unary_expression::oper): Move here.
	(tree_prefix_expression::oper, tree_postfix_expression): From here.

	* pt-unop.h (tree_prefix_expression, tree_postfix_expression):
	Delete enums.
	(tree_unary_expression): Use octave_value::unary_op enum.
	* parse.y (make_prefix_op, make_postfix_op): Likewise.
	
	* oct-lvalue.h (octave_lvalue::do_unary_op): New function.
	(octave_lvalue::increment, octave_lvalue::decrement): Delete.

	* ov-typeinfo.h (octave_value_typeinfo::non_const_unary_ops):
	New data member.
	* ov-typeinfo.h (octave_value_typeinfo::lookup_non_const_unary_op):
	New function.
	* ov-typeinfo.cc (octave_value_typeinfo::register_non_const_unary_op):
	New function.
	(octave_value_typeinfo::do_register_non_const_unary_op): Ditto.
	(octave_value_typeinfo::do_lookup_non_const_unary_op): Ditto.

	* ov.cc (octave_value::do_non_const_unary_op): New function.

	* Makefile.in (OP_XSRC): Add op-chm.cc and op-range.cc to the list.

	* OPERATORS/op-str-str.cc: Define string matrix unary operators here.
	(install_str_str_ops): Install them here.
	* ov-bool-mat.h (octave_bool_matrix::transpose,
	octave_bool_matrix_value::hermitian): Delete.

	* OPERATORS/op-chm.cc: New file.  Define char matrix unary operators.
	(install_chm_ops): Install them here.
	* ov-ch-mat.h (octave_char_matrix::transpose,
	octave_char_matrix_value::hermitian): Delete.
	* ops.cc (install_ops): Call install_chm_ops.

	* OPERATORS/op-bm-bm.cc: Define bool matrix unary operators here.
	(install_bm_bm_ops): Install them here.
	* ov-bool-mat.h (octave_bool_matrix::transpose,
	octave_bool_matrix_value::hermitian): Delete.

	* ov-bool.h (octave_bool::not, octave_bool::uminus,
	octave_bool::transpose, octave_bool::hermitian): Delete.

	* OPERATORS/op-cs-cs.cc: Define complex scalar unary operators here.
	(install_cs_cs_ops): Install them here.
	* ov-complex.h (octave_complex::not, octave_complex::uminus,
	octave_complex::transpose, octave_complex::hermitian): Delete.

	* OPERATORS/op-cm-cm.cc: Define complex matrix unary operators here.
	(install_cm_cm_ops): Install them here.
	* ov-cx-mat.h (octave_complex_matrix::not,
	octave_complex_matrix::uminus, octave_complex_matrix::transpose,
 	octave_complex_matrix::hermitian): Delete.

	* OPERATORS/op-m-m.cc: Define matrix unary operators here.
	(install_m_m_ops): Install them here.
	* ov-re-mat.h (octave_matrix::not, octave_matrix::uminus,
	octave_matrix::transpose, octave_matrix::hermitian): Delete.

	* OPERATORS/op-range.cc: New file.  Define range unary operators.
	(install_range_ops): Install them here.
	* ov-range.h (octave_range::not, octave_range::uminus,
	octave_range::transpose, octave_range::hermitian): Delete.
	* ops.cc (install_ops): Call install_range_ops.

	* OPERATORS/op-s-s.cc: Define scalar unary operators here.
	(install_s_s_ops): Install them here.
	* ov-scalar.h (octave_scalar::not, octave_scalar::uminus,
	octave_scalar::transpose, octave_scalar::hermitian): Delete.

	* ops.h (INSTALL_UNOP, CAST_UNOP_ARG, UNOPDECL, DEFUNOPX, DEFUNOP,
	DEFUNOP_OP, DEFUNOP_FN): New macros.

	* ov.h (unary_op_fcn): New typedef.
	(octave_value::unary_op): New enum.
	* ov.cc (octave_value::octave_value): New function.

	* ov.h (octave_value::not, octave_value::uminus,
	octave_value::transpose, octave_value::hermitian,
	octave_value::increment, octave_value::decrement): Delete.

	* ov-base.cc (octave_base_value::not, octave_base_value::uminus,
	octave_base_value::transpose, octave_base_value::hermitian,
	octave_base_value::increment, octave_base_value::decrement): Delete.
	
	* ov.cc (gripe_unary_op): New function.
	(do_unary_op): New function.
	* ov-typeinfo.h (octave_value_typeinfo::unary_ops):
	New data member.
	* ov-typeinfo.cc (octave_value_info::register_unary_op,
	octave_value_info::do_register_unary_op,
	octave_value_info::lookup_unary_op,
	octave_value_info::do_lookup_unary_op):
	New functions.

	* ov-list.cc (Fsplice): Use new octave_value::int_value function here.
	(octave_list::do_index_op): Likewise.
	(octave_list::assign): Likewise.
	* toplev.cc (Fquit): Likewise.
	* syscalls.cc (Fwaitpid): Likewise.
	(Ffcntl): Likewise.
	* file-io.cc (do_fread): Likewise.
	(do_fwrite): Likewise.
	* data.cc (make_diag): Likewise.
	(Fsize): Likewise.
	(get_dimensions): Likewise.
	(Flinspace): 

	* ov-base.cc (octave_base_value::int_value): New function.
	(octave_base_value::nint_value): Ditto.
	* ov.h (octave_value::int_value): Ditto.
	(octave_value::nint_value): Ditto.

	* ov-list.cc (octave_list::assign): Fix off-by-one error.

Wed Oct 28 11:01:37 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* load-save.cc (read_mat_ascii_data): Try harder to convert file
	name to valid variable name.

	* data.cc (Fisempty, Fis_matrix): New functions.

	* ov-str-mat.h (octave_char_matrix_str::is_matrix_type): New function.

	* OPERATORS/op-list.cc: New file.
	* Makefile.in (OP_XSRC): Add it to the list.

	* ov-list.cc (octave_list::assign): New function.

	* ov-typeinfo.h (octave_value_typeinfo::assignany_ops):
	New data member.
	* ov-typeinfo.cc (octave_value_info::register_assignany_op,
	octave_value_info::do_register_assignany_op,
	octave_value_info::lookup_assignany_op,
	octave_value_info::do_lookup_assignany_op):
	New functions.
	* ov.cc (octave_value::try_assignment (octave_value::assign_op,
	const octave_value_list&, const octave_value&)): If no assignment
	operator for particular RHS type exists, try finding one for
	generic octave_value as RHS type.
	* ops.h (DEFASSIGNANYOP_FN): New macro.

	* ov-list.cc (Fsplice): New function.
	* oct-obj.cc (octave_value_list::splice): New function.

	* ov.cc (Vresize_on_range_error): No longer static.
	* ov.h (Vresize_on_range_error): Provide extern declaration.

	* oct-procbuf.cc (symbols_of_oct_procbuf): Don't declare static.

	* data.cc (Flength): New function.
	* ov.h (octave_value::length): New virtual function.
	* ov-base.cc (octave_base_value::length): New function.
	(octave_base_value::rows, octave_base_value::columns): Move
	definitions here, from ov-base.h.  Don't return -1.  Instead,
	gripe about wrong argument type.
	* ov-bool-mat.h (octave_bool_matrix::length): New function.
	* ov-bool.h (octave_bool::length): Ditto.
	* ov-ch-mat.h (octave_char_matrix::length): Ditto.
	* ov-complex.h (octave_complex::length): Ditto.
	* ov-cx-mat.h (octave_complex_matrix::length): Ditto.
	* ov-list.h (octave_list::length): Ditto.
	* ov-range.h (octave_range::length): Ditto.
	* ov-re-mat.h (octave_matrix::length): Ditto.
	* ov-scalar.h (octave_scalar::length): Ditto.

Tue Oct 27 22:19:24 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-list.cc (octave_list::print_raw): Handle case of empty list.
	(octave_list::print_name_tag): Likewise.	

	* octave.cc (intern_argv): Built-in variable argv is now a list of
	strings instead of a string vector.
	Always bind argv, making it an empty list if there are no args.

Mon Oct 26 08:41:46 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* xdiv.cc (mx_leftdiv_conform): Explicitly declare args to be
	passed as references to const objects.  Fix explicit instantiation
	requests to match.
	(mx_div_conform): Likewise.

	* pt-unop.h (tree_prefix_expression): Reorder constructor args to
	put those with default values last.
	(tree_postfix_expression): Likewise.
	* parse.y: Change all callers.	

Fri Oct 23 12:07:32 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* utils.cc (Ffile_in_loadpath): New function.

	* defaults.cc (Vload_path, Vdefault_load_path): Now static.

	* help.cc (simple_help): Use Vload_path_dir_path here instead of
	trying to reconstruct it from Vload_path.
	* fn-cache.cc (octave_fcn_file_name_cache::do_list): Likewise.
	(octave_fcn_file_name_cache::update): Likewise.

	* defaults.cc (octave_loadpath): Construct Vload_path_dir_path
	using Vdefault_load_path.
	(set_default_path): Likewise.

	* defaults.h, defaults.cc (maybe_add_default_load_path): Delete.

	* defaults.cc (Vdefault_load_path): New static variable.
	(set_default_path): Set it.
	(maybe_add_default_load_path): Use it.
	(symbols_of_defaults): Add DEFCONST for DEFAULT_LOADPATH.
	Thanks to Rafael Laboissiere <rafael@icp.inpg.fr>.

	* defaults.cc (set_default_path): If OCTAVE_PATH is set in the
	environment, call maybe_add_default_load_path on it.

Tue Oct 20 20:58:04 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* defaults.cc (maybe_add_default_load_path): If LOADPATH contains
	an embedded "::", insert the default path there too.

Fri Oct 16 00:52:15 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* parse.y (in_matrix_or_assign_lhs): New subroutine for lexical
	feedback.
	(matrix): Use it.
	(assign_lhs): Ditto.
	* lex.h (lexical_feedback::looking_at_matrix_or_assign_lhs): New
	data member.
	* lex.l (handle_identifier): Use it to handle keywords like `cd'
	as variables in contexts like [ab, cd] = foo ().

	* ov-str-mat.h
	(octave_char_matrix_str::octave_char_matrix_str (char c)): 
	New constructor.
	* ov-ch-mat.h (octave_char_matrix::octave_char_matrix (char c)):
 	New constructor.
	* ov.cc (octave_value::octave_value (char c): New constructor.

	* pt-loop.cc (tree_simple_for_command::eval): Handle case of RHS
	as string.

Thu Oct 15 00:56:47 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* DLD-FUNCTIONS/rand.cc: Declare Fortran subroutines as returning
	int, not int*.

Wed Oct 14 23:51:31 1998  Georg Thimm <thimm@idiap.ch>

	* load-save.cc (Vcrash_dumps_octave_core): New static variable.
	(save_user_variables): Only save variables if
	Vcrash_dumps_octave_core is true.
	(symbols_of_load_save): Add DEFVAR for it here.
	(crash_dumps_octave_core): New function.
	* octave.cc (maximum_braindamage): Bind crash_dumps_octave_core to
	0.0 here.

Tue Oct 13 22:05:55 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* input.cc (read_readline_init_file): New function.

Thu Oct  8 13:47:55 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* oct-procbuf.h (octave_procbuf::wstatus): New data member.
	Initialize in constructors.
	(octave_procbuf::wait_status): New member function.
	* oct-procbuf.cc (octave_procbuf::sys_close): Use class data
	member wstatus, not local variable.
	* procstream.cc (procstreambase::close): Don't call sys_close directly.
	Get subprocess exit status by calling wait_status for our procbuf.
	* pt-plot.cc (close_plot_stream): Send "quit" command to gnuplot
	before deleting plot_stream.


Thu Oct  1 22:39:44 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* data.cc (Fis_complex): New function.

Fri Sep 25 11:50:44 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* load-save.cc (write_header): Rename from write_binary_header.
	Also write header for Octave ASCII files.

	* load-save.cc (Fsave): Implement -append option.

	* defaults.cc (Frehash): New function.

Fri Sep 25 11:50:44 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* help.cc (help_from_info): Improve error message in case that
	info doesn't work.

Thu Sep 24 10:48:12 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (DLD_XSRC): Replace qzval.cc with qz.cc

	* DLD-FUNCTIONS/balance.cc: Update from A. S. Hodel
	<scotte@eng.auburn.edu>.

	* DLD-FUNCTIONS/qz.cc: New file.

	* DLD-FUNCTIONS/qzval.cc: Delete.

	* parse.y (plot_command1): Don't allow it to be empty.
	(plot_command): Handle simple `PLOT' and `PLOT ranges' as special
	cases here.

Wed Sep 23 21:10:08 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* lex.l: Change <MATRIX>{SNLCMT}*\n{SNLCMT}* pattern
	to <MATRIX>{S}*{COMMENT}{SNLCMT}* | <MATRIX>{S}*{NL}{SNLCMT}*.

Fri Sep  4 10:50:00 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* file-io.cc (Ffwrite): Fix doc string.

Wed Sep  2 16:22:23 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* input.cc (match_sans_spaces): Make it work.

	* toplev.cc (quit): Require nargout == 0.

	* input.cc (get_user_input): Only try matching "exit", "quit", and
	"return" if debugging.

Tue Sep  1 12:50:24 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* octave.cc: Use -H as single character equivalent of --no-history.

Sat Aug 29 12:23:12 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* oct-obj.cc (octave_value_list::make_argv): If some values are
	string vectors, insert all the elements, not just the first.

Tue Aug 18 16:39:50 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* oct-stream.cc (octave_base_stream::do_gets): Accept last line of
	file even if it doesn't end in a newline character.

Tue Aug 18 16:25:49 1998  Mumit Khan  <khan@xraylith.wisc.edu>

	* xdiv.cc (mx_leftdiv_conform, mx_div_conform): Instantiate correct
	templates.

Thu Jul 30 00:37:43 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-loop.cc (tree_for_command::eval): Check for range first.
	If error occurs when extracting matrix value, return early.
	Don't bother to check for string type.

	* ov-ch-mat.h (octave_char_matrix::is_real_matrix): New function.

Tue Jun 23 15:09:54 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* parse.y (clear_current_script_file_name): New function.
	(parse_fcn_file): Bind current_script_file_name while script is
	executing.  Use unwind_protect to clear it once the script is
	finished.

	* pt-plot.cc (Fgraw): New function.

Mon Jun 22 22:13:38 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* variables.cc (is_valid_function): Provide version that takes
	function name as string.

	* parse.y (binary_expr): Fix thinko that resulted in incorrect
	evaluation of -x^y.  Thanks to Richard Allan Holcombe
	<raholcom@unity.ncsu.edu>.
	(feval): Don't attempt to copy nonexistent arg names.

Mon Jun 22 21:35:50 1998  Richard Allan Holcombe <raholcom@unity.ncsu.edu>

	* xpow.cc (xpow): Improve efficiency for matrix^(scalar int) case.

Thu Jun  4 12:42:46 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-usr-fcn.cc (octave_user_function::octave_all_va_args): 
	If num_args_passed < num_named_args, create zero length list.

Thu May 14 16:23:15 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* DLD-FUNCTIONS/getrusage.cc: Include sys/types.h too.

Mon May 11 00:38:45 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pager.cc (Fdiary): Don't forget to set write_to_diary file if
	just given a file name.

	* input.cc (octave_gets): Only send new line character to
	octave_diary if current_input_line is empty or doesn't already end
	with a new line character..
	Don't send input from function files or	scripts to octave_diary.

Sun May  3 19:54:38 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* lex.l (reset_parser): Also call yyrestart if forced_interactive
	is true, but not if input_from_startup_file is true.

Tue Apr 28 14:06:20 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* oct-procbuf.cc (Vkluge_procbuf_delay): New static variable.
	(kluge_procbuf_delay): New function.
	(symbols_of_oct_procbuf): New function.
	(octave_procbuf::open): Delay Vkluge_procbuf_delay microseconds
	after forking.

Thu Apr 23 15:41:08 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* defaults.cc (Vload_path_dir_path): New variable.
	* utils.cc (file_in_path): Use it.

	* utils.cc (search_path_for_file): Undo previous change.
	(file_in_path): Undo previous change.
	* defaults.cc (loadpath): Undo previous change.  Tilde expansion
	is once again handled correctly by the code in
	liboctave/pathsearch.cc.

Mon Apr 20 21:50:34 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* data.cc (get_dimensions): Allow zeros ([], 3) to work, for
	compatibility with Matlab.

	* dynamic-ld.cc [WITH_DL && ! HAVE_DLFCN_H]: Add declarations for
	dlopen, dlerror, dlsym, and dlclose.

	* octave.gperf: Handle __FILE__ and __LINE__.
	* lex.l (is_keyword): Likewise.
	* Makefile.in (oct-gperf.h): Pass -D option to gperf.
	Postprocess output of gperf to convert name of static variable
	from lookup to gperf_lookup, to avoid conflict with our	function
	of the same name defined in variables.cc.

Sat Apr 18 20:17:10 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* help.cc (USE_GNU_INFO): Delete uses of this macro.

Thu Apr 16 01:00:12 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* dynamic-ld.cc: Only include dlfcn.h if HAVE_DLFCN_H.

Wed Apr 15 01:03:05 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* input.cc (Vlast_prompt_time): New global variable.
	(octave_gets): Set it.
	* ov-fcn.h (octave_function::time_checked): New virtual function
	(octave_function::mark_fcn_file_up_to_date): Ditto.
	* ov-usr-fcn.h (octave_user_function::time_checked): New function.
	(octave_user_function::mark_fcn_file_up_to_date): Ditto.
	(octave_user_function::t_checked): New data member.
	* variables.cc (symbol_out_of_date): Only check file time stamp if
	a prompt has been printed since the last time check.

	* pt-plot.h, pt-plot.cc (subplot_axes): New class.
	(subplot): Handle axes.
	(Vgnuplot_command_axes): New static variable.
	(gnuplot_command_axes): New function.
	(symbols_of_pt_plot): DEFVAR gnuplot_command_axes.
	* pt-walk.h (tree_walker::visit_subplot_axes): New virtual function.
	* parse.y (plot_options): Handle axes.
	* lex.l (plot_axes_token): New function.
	(is_keyword): Use it.
	(is_plot_keyword): Recognize "axes" and "axis".
	* lex.h (class lexical_feedback): New field, in_plot_axes.
	(lexical_feedback::init): Reset it.

Tue Apr 14 23:32:27 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* parse.y (parse_fcn_file): New arg, force_script.  Change callers.

Fri Apr 10 11:01:27 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* help.cc (type): Also print values of variables.

Wed Apr  8 01:00:58 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pr-output.cc (set_format): Set scale to 1.0 if all elements are
	int or inf or nan.

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

Tue Feb 24 00:42:59 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* help.cc (simple_help): Put additional help message first.
  	(additional_help_message): Add information about web site and
	mailing list.

Fri Feb 20 00:41:06 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-plot.cc (GPLOT_CMD_REPLOT): Clear before replot.

	* Makefile.in: Better handling of lib flags for linking.

Thu Feb 19 21:14:30 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-decl.cc (Vinitialize_global_values): New static variable.
	(initialize_global_variables): New function.
	(symbols_of_pt_decl): New function.
	DEFVAR Vinitialize_global_values and initialize_global_variables.
	(tree_global_command::do_init): If initialize_global_variables is
	not true and the variable doesn't have an explicit initializer, don't
	initialize it.  If we are giving it a default value, use the value
	of the variable defualt_global_variable_value.
	* octave.cc (maximum_braindamage): Set default_global_variable_value
	and initialize_global_variables to Matlab-compatible values.

Wed Feb 18 04:35:31 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* DLD-FUNCTIONS/besselj.cc: Rename from bessel.cc.
	* Makefile.in (DLD_XSRC): Likewise.

	* syscalls.cc (Fvfork): Delete.

	* oct-procbuf.cc: Just use fork.

	* parse.y (feval): Provide version that takes function name
	separate from other args.
	* parse.h: Declare it.

	* oct-procbuf.cc (octave_procbuf::open): Move declaration of
	child_std_end outside of child scope and declare volatile.

Mon Feb 16 15:04:28 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* parse.y: Include cstdio, for SEEK_SET.

Thu Feb 12 22:07:00 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* system.c: New file.
	* Makefile.in (SOURCES): Add it to the list.

Fri Feb  6 01:23:18 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* oct-stream.cc (octave_base_stream::file_number): Rename from fileno.
	Change all uses.

	* fsolve.cc (fsolve_option_table): Add missing & to function names.

Thu Feb  5 02:27:18 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* dirfns.cc (Fls): If first attempt at reading process output
	fails, sleep once and try again.
	* toplev.cc (run_command_and_return_output): Likewise.

	* oct-procbuf.cc (octave_procbuf::open): Use vfork if it is available.

	* syscalls.cc (Fvfork): New function.

	* ov-bool-mat.cc: Only declare assign function if
	CXX_NEW_FRIEND_TEMPLATE_DECL is not defined.

	* ov-base.h, ov-bool-mat.h, ov-bool.h, ov-ch-mat.h, ov-complex.h,
	ov-cx-mat.h, ov-range.h, ov-re-mat.h, ov-scalar.h: Handle default
	args for *_value functions consistently.

	* symtab.cc (maybe_list_cmp_fcn): Declare args as void*, not
	void**, then use X_CAST.

	* OPERATORS/op-s-cm.cc: Include mx-cm-s.h.

	* defun-int.h: Include ov-builtin.h, ov-mapper.h, and symtab.h.
	(install_builtin_mapper, install_builtin_function,
	install_builtin_variable) Use specific types rather than void * in
	declaration.
	* defun.cc (install_builtin_mapper, install_builtin_function,
	install_builtin_variable): Likewise.  Eliminate casts.

	* load-save.cc (read_binary_data, read_mat_file_header,
	save_binary_data): Use X_CAST, not static_cast.
	* unwind-prot.h (unwind_protect::save_ptr): Likewise.
	* Map.cc (goodCHptr, index_to_CHptr, CHptr_to_index): Likewise.
	* dynamic-ld.cc (octave_dlopen_dynamic_loder::resolve_reference):
	Likewise.

	* pt-mat.cc (tm_const::operator bool ()): 
	(tm_row_const::operator bool ()): Likewise.
	* oct-stream.cc (printf_value_cache::operator bool ()): Likewise.
	(scanf_format_list::operator bool ()): Likewise.
	(printf_format_list::operator bool ()): Likewise.
	(octave_stream::operator bool ()): Likewise.

Wed Feb  4 13:08:29 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* DLD-FUNCTIONS/minmax.cc: Include cmath, not oct-math.h.

	* syscalls.cc (Fdup2): Convert stream to actual system file id.

	* oct-stream.cc (octave_base_stream::fileno, octave_stream::fileno): 
	New functions.

Tue Feb  3 00:24:44 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* defaults.cc (exec_path): Append Vbin_dir to std_path.

	* octave.cc (initialize_pathsearch): Set TEXMFDBS, not TEXMF.
	Look for OCTAVE_DB_PATH in environment.
	Simplify using Vdata_dir and Vlibexec_dir.

	* defaults.h.in (Vdata_dir, Vlibexecdir): Declare new vars.
	defaults.cc: Define them.
	(set_default_data_dir, set_default_libexecdir): New functions.
	(install_defaults): Call them.

	* defaults.h.in (OCTAVE_LIBEXECDIR): Define.

Mon Feb  2 02:43:16 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (install, uninstall): Use $(octlibdir), not $(libdir).
	Use mk-libdir-link.

	* defaults.h.in (OCTAVE_OCTLIBDIR): Substitute value.
	(Vlib_dir): Delete declaration.
	* defaults.cc (Vlib_dir): Delete.
	(set_default_lib_dir): Delete.
	(install_defaults): Don't call set_default_lib_dir.
	(set_default_info_prog): If oct_info_prog is empty, set default to
	"info" -- we expect it to be somewhere in the user's path.

	* defun.h (DEFCONST, DEFCONSTX): Eliminate inst_as_fcn and chg_fcn
	args.  Always pass true for inst_as_fcn and 0 for chg_fcn to
	DEFVAR when creating built-in values like `e' or `stderr' that can
	be redefined.  Change all uses.

	* help.cc (Ftype): Handle script files too.
	(Fwhich): Likewise.

Sat Jan 31 00:00:26 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-ch-mat.cc (octave_char_matrix::is_true): Make it work.
	* ov-str-mat.h, ov-str-mat.cc (octave_char_matrix_str::is_true):
	Delete.

	* load-save.cc (read_ascii_data): Allow strings of length 0.
	If we don't find data on the first call, fail with error message.
	(do_load): Pass count of items read to read_ascii_data.
	Allow `load foo xyz' to work when foo contains only numbers.

Fri Jan 30 23:46:42 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-str-mat.h (octave_char_matrix_str::all): Delete.
	(octave_char_matrix_str::any): Delete.
	* ov-ch-mat.h (octave_char_matrix::all, octave_char_matrix::any):
	Call charMatrix::all, charMatrix::any.

Thu Jan 29 16:25:46 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* load-save.cc (read_mat_binary_data): Handle third digit of MOPT
	as flag indicating row or column major ordering.

Wed Jan 28 00:18:17 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* DLD-FUNCTIONS/dassl.cc (lsode_option_table):
	Add missing & to function names.
	* DLD-FUNCTIONS/lsode.cc (lsode_option_table): Likewise.
	* DLD-FUNCTIONS/quad.cc (quad_option_table): Likewise.

	* Makefile.in (oct-gperf.h): Add -G option to gperf.

	* load-save.cc (get_save_type): Add `UL' and `L' suffixes to large
	constant values.  For LS_INT, use <= and >= for comparison.

Mon Jan 26 13:17:59 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-usr-fcn.cc (Vmax_recursion_depth): New static variable.
	(max_recursion_depth): New fucnction
	(symbols_of_ov_usr_fcn): DEFVAR max_recursion_depth.
	(octave_user_function::do_index_op): Check Vmax_recursion_depth.

Thu Jan 22 13:45:26 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* dynamic-ld.cc (make_dynamic_loader): Fix typo.

Tue Jan 20 17:02:19 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* variables.cc (Fexist): If local symbol is undefined, check
	global table.

	* pr-output.cc (pr_max_internal): Initial value for result is
	-DBL_MAX, not DBL_MIN.

Thu Jan  8 11:54:33 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* xpow.cc (elem_xpow): If second arg of pow is complex, make sure
	first arg is also complex.

	* symtab.cc (symbol_table::rename): Properly insert new item at
	the front of the list to avoid losing the rest of the items.

Thu Dec 11 23:30:03 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* variables.cc (Fclear): Increment index to skip -x arg.

Tue Dec  9 02:45:35 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (INCLUDES): Don't forget Pix.h.

	* BaseSLList.cc: Don't include nonstandard libg++ header files.

Sun Nov 30 14:58:56 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pr-output.cc: Include cmath, not oct-math.
	* sysdep.cc: Likewise.

	* DLD-FUNCTIONS/bessel.cc: New file.
	* Makefile.in (DLD_XSRC): Add it to the list.

Thu Nov 27 23:28:59 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* lex.l (handle_string): Constructor for string class takes
	(size_t, char) args, not (char, size_t).

Wed Nov 26 00:39:34 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (OCTAVE_LIBS): Include $(SPECIAL_MATH_LIB) just
	ahead of -lcruft.

Thu Nov 20 15:16:22 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* octave.cc (maximum_braindamage): Bind implicit_num_to_str_ok to 1.
	* pt-mat.cc (Vimplicit_num_to_str_ok): New static variable.
	(implicit_num_to_str_ok): New function.
	(symbols_of_pt_mat): DEFVAR implicit_num_to_str_ok.
	(tm_row_const::some_str): New data member.
	(tm_row_const::some_strings_p): New function.
	(tm_row_const::init): Set some_str.
	(tm_const::some_str): New data member.
	(tm_const::some_strings_p): New function.
	(tm_const::init): Set some_str.
	(tree_matrix::eval): If Vimplicit_num_to_str_ok is true and some
	of the elements are strings, force a string conversion before
	returning.

	* parse.y (fold, finish_colon_expression, finish_matrix):
	If an error occurs, return the original expression.
	Use unwind_protect to restore error_state.

	* ov-ch-mat.h (octave_char_matrix::convert_to_str): Result is
	char_matrix_str, not just char_matrix.

Wed Nov 19 02:05:40 1997  Mumit Khan <khan@dhaka.xraylith.wisc.edu>

	* DLD-FUNCTIONS/filter.cc: Don't include extern template decls if
	CXX_NEW_FRIEND_TEMPLATE_DECL is defined.
	* ov-cx-mat.cc: Likewise.
	* ov-re-mat.cc: Likewise.
	* ov-str-mat.cc: Likewise.

	* ov-cx-mat.h (octave_complex_matrix::decrement,
	octave_complex_matrix):	Use explicit Complex constructor.

Wed Nov 19 00:08:13 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-decl.cc (tree_global_command::do_init): Initialize global
	values to `[]'.  Only perform explicit initialization once.

Tue Nov 18 04:27:55 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pr-output.cc (Vfixed_point_format): New variable.
	(fixed_point_format): New fucntion.
	(symbols_of_pr_output): Add DEFVAR for fixed_point_format.
	(set_real_matrix_format): Handle fixed point format
	(set_complex_matrix_format): Handle fixed point format
	(set_format): New arg, scale in Matrix, ComplexMatrix, Range versions.
	(pr_scale_header): New function.
	(octave_print_internal): Handle fixed point format in Matrix,
	ComplexMatrix, and Range versions.
	* octave.cc (maximum_braindamage): Set fixed_point_format to 1.0.

	* utils.cc (do_string_escapes): Move here, from lex.l.
	Arg is now const string& instead of char*.
	Return new string object instead of modifying arg in place.
	(Fdo_string_escapes): New function.
	* lex.l (handle_string): Use new version of do_string_escapes.

	* lex.l (Vbackslash_escapes): Delete.
	(backslash_escapes): Delete.
	(do_string_escapes): Undo previous change.
	(eat_whitespace, eat_continuation): Undo previous change.
	(handle_string): Undo previous change.
	(symbols_of_lex): Undo previous change.
	* octave.cc (maximum_braindamage): Undo previous change.

Fri Nov 14 01:53:13 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* parse.y (eval_string (const string&, bool, int&, int)): No
	longer static.
	* parse.h: Provide declaration.
	* input.cc (get_user_input (const octave_value_list&, bool, int)):
	New arg, nargout.  Pass it to eval_string.
	(keyboard): Pass nargout = 0 to get_user_input.
	(input): Pass nargout to get_user_input.

	* input.cc (get_user_input (const octave_value_list&, bool)):
	Return octave_value_list() if user enters `quit', `exit', or `return'.
	If debugging, let eval_string handle the printing chores and
	reset error_state before asking for more input.

	* input.cc (Fkeyboard): Unconditionally turn on history here.

	* lex.l (have_continuation, have_ellipsis_continuation): Declare
	arg as bool, not int.  Change callers.

	* lex.l (Vbackslash_escapes): New static variable.
	(backslash_escapes): New function.
	(do_string_escapes): Return immediately if ! Vbackslash_escapes.
	(eat_whitespace, eat_continuation): Only call have_continuation if
	Vbackslash_escapes.
	(handle_string): Backslash is only special if Vbackslash_escapes.
	(symbols_of_lex): Add DEFVAR for backslash_escapes.
	* octave.cc (maximum_braindamage): Set backslash_escapes to 0.

Thu Nov 13 16:20:40 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* variables.cc (Fexist): Also return 2 if NAME is a regular file
	somewhere in the LOADPATH.

	* data.cc (sumsq): Fix doc string.

	* parse.y (Fsource): Call parse_fcn_file, not parse_and_execute.

Tue Oct  7 16:51:01 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* defun-int.h (DEFINE_FUN_INSTALLER_FUN): Set installed to true
	after installing the function.

Thu Sep 25 10:17:26 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* DLD-FUNCTIONS/filter.cc (Ffilter): Return second output value
	even when called with only 3 arguments.

Mon Sep 22 16:44:27 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* DLD-FUNCTIONS/rand.cc (do_rand): Print error if first of two
	args is a string but doesn't match "seed".
	(Frand, Frandn): Fix doc string.

Mon Aug 25 10:42:07 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* input.cc (get_user_input): Return an empty string if the user
	just types RET.

Thu Jul 31 22:59:04 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* lex.l <TEXT_FCN>: Ensure that we handle words that begin with
	single or double quotes as strings.

Thu Jul 17 13:06:48 1997  Klaus Gebhardt <gebhardt@crunch.ikp.physik.th-darmstadt.de>

	* DLD-FUNCTIONS/rand.cc (Frand): Use F77_XFCN to call getsd,
	setsd, setall, setcgn, dgenunf, and dgennor since they can call
	XSTOPX.

Mon Jul 14 12:54:23 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* dynamic-ld.cc (octave_dynamic_loader::load_fcn_from_dot_oct_file):
	If first attempt to load function fails, prepend and underscore
	and try again.

	* Makefile.in (install-inc): If defaults.h, oct-conf.h, or
	oct-gperf.h don't exist in the current directory, look in $(srcdir).

Mon Jul  7 21:14:07 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* DLD-FUNCTIONS/qr.cc (Fqr): Correctly handle nargout == 0. 

Wed Jul  2 16:47:09 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* matherr.c: New file.  Move matherr function here.
	* sysdep.cc: From here.
	* Makefile.in (DIST_SRC): Add matherr.c to the list.

	* error.cc (handle_message): Avoid bug in g++ snapshot.

Thu Jun 26 22:04:09 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* utils.cc (file_in_path): Add default load path to PATH arg if
	it begins or ends with a colon.

Wed Jun 25 13:31:06 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* oct-lvalue.h (octave_lvalue::struct_elt_ref): Ensure val is unique.

Fri Jun 20 12:33:35 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* toplev.cc (cmd_death_handler): New function.
	(run_command_and_return_output): Insert pid of command in
	octave_child_list along with pointer to cmd_death_handler so we
	can get the exit status without having to block SIGCHLD.
	(cleanup_iprocstream): Remove pid of command from octave_child_list.

Sun Jun 15 16:11:13 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* OPERATORS/op-cs-s.cc (ldiv): Doh, v1 is complex, v2 is real.

	* Makefile.in (DISTFILES): Add mkops to the list.
	(dist): Correctly link files in DLD-FUNCTIONS, OPERATORS, and
	TEMPLATE-INST subdirectories.

Fri Jun  6 04:30:57 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* DLD-FUNCTIONS/npsol.cc, DLD-FUNCTIONS/qpsol.cc,
	DLD-FUNCTIONS/fsqp.cc: Delete.
	* Makefile.in (DLD_XSRC): Remove them from the list.

	* utils.cc (search_path_for_file): New arg, do_tilde_expansion.
	If TRUE, perform tilde expansion on path before searching.
	(file_in_path): Call search_path_for_file with do_tilde_expansion
	set to false, since we've already performed tilde expansion on the
	load path.

	* defaults.cc (loadpath): Perform tilde expansion here.

Thu Jun  5 01:42:39 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in: Make building of static library optional.
	(liboctave.$(SHLEXT_VER)): Add $(SONAME_FLAGS) to command.

	* dynamic-ld.cc (octave_shl_load_dynamic_loader::resolve_reference): 
	Call shl_findsym with type set to TYPE_UNDEFINED.

	* Makefile.in (stamp-picdir): Delete.
	(pic): New target.  Don't worry so much about creating pic
	directory only when it is really needed.
	(stamp-interp): Delete.
	(libraries): New target.  Depend on shared library directly.

Wed Jun  4 00:09:42 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* octave.cc (main): Call dir_path::set_program_name here.

Tue Jun  3 16:47:34 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* variables.cc (symbol_out_of_date): Make it work again.

	* parse.y (parse_and_execute): Move here from toplev.cc
	(default_eval_print_flag): Likewise.
	(safe_fclose): Likewise.
	(eval_string): Likewise.
	(Fsource): Likewise.
	(Ffeval): Likewise.
	(feval): Likewise.
	(Feval): Likewise.
	(symbols_of_parse): Define default_eval_print_flag here instead of
	in varaibles.cc.
	(looks_like_octave_copyright): Move here from variables.cc
	(gobble_leading_whitespace): Likeiwse.
	(is_function_file): Likewise.
	(restore_input_stream): Likewise.
	(parse_fcn_file): Likewise.
	(load_fcn_from_file): Likewise.
	(get_help_from_file): Likewise.

	* toplev.cc (syms_of_toplev): Define argv, program_name, and
	program_invocation_name here instead of in variables.cc.

	* parse.h (line_editing): Move here from toplev.h.  Now bool, not int.
	(reading_startup_message_printed) Likewise.
	(input_from_startup_file): Likewise.
	(input_from_command_line_file): Likewise.

	* load-save.cc: Use bool instead of int where appropriate.

	* input.h (enum echo_state): Move here from variables.h.
	(Vecho_executing_commands): Likewise.  Now bool, not int.
	* input.cc (echo_executing_commands): Move here from variables.cc.
	(symbols_of_input): Define echo_executing_commands here instead of
	in variables.cc.

	* octave.cc (program_invocation_name): Don't define.
	(intern_argv): Don't set program_invocation_name here.
	(main): Call octave_env::set_program_name here, not in intern_argv.

	* toplev.cc (quitting_gracefully): Move here from octave.h and
	make static bool instead of extern int.

	* error.cc (bind_global_error_variable, clear_global_error_variable):
	Move here from variables.cc.
	(symbols_of_error): Define error_text here instead of in variables.cc.

	* pager.cc (write_to_diary_file): Now bool, not int.
	(really_flush_to_pager): Likewise.
 	(flushing_to_pager): Likewise.
	* sighandlers.h (can_interrupt): Likewise.
	* error.h (buffer_error_messages): Likewise.
	* oct-hist.h (input_from_tmp_history_file, Vsaving_history): Likewise.
	* input.h (forced_interactive): Likewise.
	(get_input_from_eval_string): Likeiwse.
	(reading_script_file): Likeiwse.
	(reading_fcn_file): Likeiwse.
	(interactive): Likewise.

	* unwind-prot.cc (saved_variable::saved_variable (bool *, bool)):
	Set type_tag to boolean, not int. 

Mon Jun  2 00:40:10 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* variables.h (Octave_builtin_fcn): Delete typedef.

	* help.cc (make_name_list): Move here from variables.cc.
	(keyword_help, names): Now static.
	(struct help_list): Move declaration here from help.h.

	* oct-hist.cc (Vhistory_file, Vhistory_size, Vsaving_history):
	Move here from variables.cc.
	(symbols_of_oct_hist): New function.

	* version.h: Protect against multiple inclusion.

	* defun.cc (check_version): New function.
	* defun-int.h (DEFINE_FUN_INSTALLER_FUN): Use it.

	* help.h, help.cc (additional_help_message): Now extern.
	(operator_help): Now static. 

	* defun.cc (print_usage): Move here from help.cc
	* DLD-FUNCTIONS/*.cc, data.cc, dirfns.cc, file-io.cc, input.cc,
	load-save.cc, octave.cc, ov-list.cc, ov-typeinfo.cc,
	ov-usr-fcn.cc, pager.cc, pr-output.cc, pt-plot.cc, strfns.cc,
	syscalls.cc, sysdep.cc, utils.cc, toplev.cc:
	Don't include help.h.

	* TEMPLATE-INST/Array-sym.cc: New file.

	* load-save.cc (do_load): Don't use ostream::form.
	* pr-output.cc: Likewise, at least where it is easy to do so.
	* oct-stream.cc: Ditto.

	* symtab.h (symbol_record::symbol_def::rows): New function.
	(symbol_record::symbol_def::columns): Ditto.
	(symbol_record::symbol_def::type_name): Ditto.
	(symbol_record::rows): Ditto
	(symbol_record::columns): Ditto
	(symbol_record::type_name): Ditto

	* symtab.h, symtab.cc (symbol_record::hides_fcn): New function.
	(symbol_record::hides_builtin): Ditto.
	(symbol_record::print_symbol_info_line): Ditto.
	(symbol_table::long_list): Delete.
	(symbol_table::symbol_list): New function.
	(symbol_table::maybe_list): Delete argc arg.
	(symbol_table::name_list): Rename from symbol_table::list.
	Change all callers.

	* symtab.h, symtab.cc (class symbol_record_info): Delete.

	* symtab.cc (matches_patterns): Use vector form of glob_match.

Sun Jun  1 14:04:26 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-check.h, pt-check.cc: New files, for semantic checking of
	parse trees.

	* symtab.h (class symbol_def): Now nested in symbol_record class.
	(enum TYPE): Move from symbol_def to symbol record class.  Change
	all uses.

	* symtab.h, symtab.cc (symbol_table::maybe_list): New function,
	from variables.cc.  Change all uses.

	* pt-idx.h (tree_identifier::lvalue_ok): New function.
	* pt-id.h (tree_index_expression::lvalue_ok): Likewise.
	* pt-indir.h (tree_indirect_ref::lvalue_ok): Likewise.

	* pt-pr-code.h, pt-pr-code.cc (tree_print_code::visit_oct_obj): Delete.
	* pt-walk.h (tree_walker::visit_oct_obj): Delete declaration.

	* lex.h (class lexical_feedback): Delete maybe_screwed_again.
	* lex.l (lexical_feedback::init): Don't set it.

Fri May 30 16:07:22 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* mappers.cc: Include <cfloat> here.

Tue May 27 10:08:43 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* toplev.cc (eval_string): Don't index tmp if it is empty.

Sat May 24 00:18:41 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* load-save.cc (valid_identifier): Move here and make static.
	* symtab.h, symtab.cc (valid_identifier): Delete declaration and
	definition.

Fri May 23 22:54:28 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* symtab.h (symbol_def::symbol_def): Use initializer list instead
	of calling init_state.
	(symbol_def::init_state): Delete.

	* symtab.cc (symbol_table::print_stats): New function.
	* variables.cc (F__dump_symtab_info__): New function.

	* symtab.h, symtab.cc (symbol_table::hash): Return masked value.
	(symbol_table::table_size): New data member.
	(symbol_table::symbol_table): Set size of table in constructor.
	(HASH_TABLE_SIZE): Replace uses with table_size.
	(HASH_MASK): Delete.
	* variables.cc (initialize_symbol_tables): Set top-level and
	global symbol table sizes here.

Thu May 22 13:32:55 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* dynamic-ld.cc (octave_shl_load_dynamic_loader::resolve_reference): 
	Call shl_findsym with type set to TYPE_PROCEDURE.  Pass the
	address of the pointer we want to define.

Wed May 21 16:30:25 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* DLD-FUNCTIONS/time.cc (extract_tm): Avoid memory leak in dealing
	with time zone.

	* Makefile.in (install-in): Use new mk-includedir-link macro.
	(install-lib): Install in $octlibdir.  Use new mk-libdir-link macro.

Tue May 20 01:24:11 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-list.cc (Flist): Rename from Fmake_list.

Mon May 19 14:45:58 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* octave.cc (maximum_braindamage): Set default_eval_print_flag to 0.

Sat May 17 16:32:23 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* defaults.cc (set_default_editor): Default is now Emacs, not vi.

Fri May 16 00:07:11 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-idx.cc (tree_index_expression::name): New function.

	* pt.cc	(tree::str_print_code): New file, new convenience function.
	* pt-arg-list.cc (tree_argument_list::get_arg_names): Use it.
	* pt-assign.cc (tree_simple_assignment::rvalue): Likewise.
	(tree_multi_assignment::rvalue): Likewise.

	* pt-colon.h (tree_colon_expression::save_base): New data memmber.
	(tree_colon_expression::preserve_base): New function.
	* parse.y (finish_colon_expression): When converting to a simple
	expression, be sure to delete the original colon expression but
	not the base value.

	* pt-mat.cc (tree_matrix::~tree_matrix): Actually do something.

	* pt-all.h: New file.
	* parse.y, lex.l, pt-pr-code.cc: Use it.

	* pt.h: Rename from pt-base.h.

	* All parse tree classes: Add private copy constructors and
	assignment operators to prevent copying.

	* pt-base.cc: Delete.

	* unwind-prot.h, unwind-prot.cc: Make a bit more object-oriented.
	Change all uses of unwind_protect stuff to match.

	* pt-jump.h, pt-jump.cc (breaking, continuing, returning):
	Make these flags static members of the corresponding class.
	Change all uses.

	* pt-assign.cc (tree_simple_assignment_expression::eval,
	tree_multi_assignment_expression::eval): Clear lvalue index here.

	* oct-lvalue.cc (octave_lvalue::assign): Don't clear index here.
	* oct-lvalue.h (octave_lvalue::clear_index): New function.
	(octave_lvalue::set_index): Rename from octave_lvalue::index.
	Change all callers.

Thu May 15 11:48:10 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-select.h, pt-select.cc (class tree_if_command_list,
	class tree_if_clause, class tree_switch_case_list,
	class tree_switch_case): Move here from pt-misc.h, pt-misc.cc.
	* pt-decl.h, pt-decl.cc (class tree_decl_init_list,
	class tree_decl_elt): Move here from pt-mist.h, pt-misc.cc

	* pt-arg-list.h, pt-stmt.h: New files, extracted from pt-misc.h.
	* pt-arg-list.cc, pt-stmt.cc: New files, extracted from pt-misc.cc.

	* pt-decl.h, pt-except.h, pt-jump.h, pt-loop.h, pt-select.h:
	New files, extraced from pt-cmd.h.
	* pt-decl.cc, pt-except.cc, pt-jump.cc, pt-loop.cc, pt-select.cc:
	New files, extraced from pt-cmd.cc.

	* pt-unop.h, pt-binop.h, pt-colon.h, pt-idx.h, pt-assign.h:
	New files, extracted from pt-exp.h
	* pt-unop.cc, pt-binop.cc, pt-colon.cc, pt-idx.cc, pt-assign.cc:
	New files, extracted from pt-exp.cc
	* pt-exp.h, pt-exp.cc: Rename from pt-exp-base.h, pt-exp-base.cc.

	* oct-lvalue.h: Rename from oct-var-ref.h.  Rename class from
	octave_variable_reference to octave_lvalue.  Change all uses.
	* oct-lvalue.cc: Rename from oct-var-ref.cc.

	* variables.cc (bind_ans): Only bind ans and print result if value
	is defined.

	* defun.cc: New file.  Move functions for installing objects in
	the symbol table here from variables.cc.

	* oct-obj.h, oct-obj.cc: Add custom allocator, fwiw.

	* toplev.cc (main_loop): Correctly increment command number.

	* TEMPLATE-INST/SLList-tm.cc: Don't instantiate lists of pointers
	to tree_matrix_row objects.
	* TEMPLATE-INST/SLList-misc.cc: Do instantiate lists of pointers
	to tree_argument_list objects.

	* DLD-FUNCTIONS/dassl.cc: Update to use new octave_function
	interface to user-supplied functions.
	* DLD-FUNCTIONS/fsolve.cc: Likewise.
	* DLD-FUNCTIONS/lsode.cc: Likewise.
	* DLD-FUNCTIONS/npsol.cc: Likewise.
	* DLD-FUNCTIONS/quad.cc: Likewise.

	* dynamic-ld.h, dynamic-ld.cc (builtin_fcn_installer typedef):
	Rename from builtin_fcn.
	(octave_dynamic_loader::load_fcn_from_dot_oct_file):
	Simplify by using new installer function defined by DEFUN_DLD.

	* defun-dld.h (DEFUN_DLD): Use DEFINE_FUN_INSTALLER_FUN instead of
	DEFINE_FUN_STRUCT_FUN.
	* defun.h (DEFUN_MAPPER): Use DEFUN_MAPPER_INTERNAL.
	* defun-int.h (DEFVAR_INTERNAL): Rename from DEFVAR_INT and move
	here from defun.h.  Change all uses.
	(DEFUN_MAPPER_INTERNAL): New macro.
	(DEFINE_FUN_INSTALLER_FUN): New macro to define function that the
	dynamic loader calls to do all the work of installing a new function.
	(DEFINE_FUN_STRUCT_FUN): Delete.

	* parse.y: Rewrite to handle more general expressions.
	* lex.l: Corresponding changes.

	* pt-walk.h, pt-pr-code.h, pt-pr-code.cc: Cope with new parse tree
	object structure.

	* pt-misc.cc (class tree_for_command): Split into
	tree_simple_for_command and tree_complex_for_command classes.

	* pt-misc.h, pt-misc.cc (tree_statement::eval): Handle identifier
	lookup and printing and binding ans here.
	(tree_statement_list::eval): Simplify.
	(tree_argument_list::all_elements_are_constant): New function.
	(class tree_decl_elt): Now contains id and expr, not an assignment
	expression.

	* pt-exp-base.h pt-exp.h pt-id.h pt-indir.h pt-mat.h pt-const.h,
	pt-exp-base.cc pt-exp.cc pt-id.cc pt-indir.cc pt-mat.cc pt-const.cc:
	Replace eval functions with rvalue and lvalue functions.
	Change all uses.
	(lvalue_ok, rvalue_ok): New functions, for future compile-time
	semantic checks.

	* oct-var-ref.h (is_defined, is_map): New functions.

	* pt-exp.h (class tree_oct_obj): Delete.

	* variables.cc (extract_function, is_valid_function): Return
	pointer to octave_function, not octave_symbol.
	(link_to_global_variable): Rewrite.  Handle errors in
	symbol_record::mark_as_linked_to_global.

	* symtab.h, symtab.cc (class symbol_def, class symbol_record):
	Symbols are now stored as octave_value objects only.

	* ov.cc (install_types): Register function types here.
	* ov-fcn.h, ov-fcn.cc, ov-builtin.h, ov-builtin.cc, ov-mapper.h,
	ov-mapper.cc, ov-usr-fcn.h, ov-usr-fcn.cc: New classes for
	functions as values.
	* ov.h (class octave_value): Don't derive from octave_symbol.
	* oct-fcn.h, oct-fcn.cc, oct-builtin.h, oct-builtin.cc,
	oct-mapper.h, oct-mapper.cc, oct-usr-fcn.h, oct-usr-fcn.cc,
	oct-sym.h, oct-sym.cc: Delete.

Sun May 11 17:51:22 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* help.cc (Ftype): Make it work again for functions.

	* pt-pr-code.cc (tree_print_code::print_parens): New function.
	Use it in other tree_print_code functions to handle printing all
	the parens that we found when parsing the expression, not just one
	pair.
	* pt-exp-base.h (tree_expression::paren_count): Rename from
	is_in_parens.
	* parse.y (maybe_warn_assign_as_truth_value): Use new name.

	* parse.y (constant): New non-terminal.
	(simple_expr1): Use it.

	* parse.y (make_unary_op): Delete.
	(simple_expr1): Where appropriate, use make_prefix_op and
	make_postfix_op instead of make_unary_op.  Allow increment and
	decrement ops to work on expressions, not just identifiers.
	(make_prefix_op, make_postfix_op): Arg is expression, not identifier.
	Handle old unary_op cases too.
	(fold (tree_unary_expression *)): Delete.
	* pt-exp.h, pt-exp.cc (tree_prefix_expression::eval): Handle unary
	minus and not here.
	(tree_postfix_expression::eval): Likewise, for transpose and hermitian.
	(class tree_prefix_expression, class tree_postfix_expression):
	Derive from tree_unary_expression.  Delete identifier member.
	Delete ident member function.
	(tree_unary_expression): Don't handle evaluation here.
	* pt-exp-base.h (mark_in_parens): No longer virtual. Return this.
	(reference): New virtual function.
	(class tree_expression): Don't handle expression type here.
	* pt-mvr-base.h (tree_multi_val_ret::tree_multi_val_ret): Likewise.
	* pt-mvr.h, pt-mvr.cc (tree_multi_assignment_expression): Likewise.
	* pt-walk.h (visit_unary_expression): Delete declaration.
	* pt-pr-code.h, pt-pr-code.cc (visit_unary_expression): Delete.
	(visit_prefix_expression): Use operand(), not ident().
	new, visit_postfix_expression):
	* pt-id.h, pt-id.cc (increment, decrement): Delete.

	* pt-misc.cc (tree_parameter_list::define_from_arg_vector): Get a
	reference to each element and use the assignment operator instead
	of tree_identifier::define.
	* pt-id.h, pt-id.cc (tree_identifier::define): Delete versions
	that take octave_value and octave_symbol args.

Sat May 10 23:32:13 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-indir.h, pt-indir.cc (tree_indirect_reference::value): Delete.

	* oct-var-ref.cc (octave_variable_ref::assign): Clear idx after
	assignment.

	* octave_value classes: Add is_constant, is_function, and
	function_value functions.

	* ov.h, ov.cc (assign): Return void, not reference to octave_value.
	(do_index_op): Rename, from index.
	(do_struct_elt_index_op): Rename, from struct_elt_val.
	Add version that accepts index arg.
	Change all uses and derived classes to match.
	* pt-const.h (index): Delete.
	* oct-var-ref.h, oct-var-ref.cc (value): Handle indexed structure
	ops here too.

Fri May  9 07:40:59 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-exp.cc (print_rhs_assign_val, symbols_of_pt_exp): New functions.
	(Vprint_rhs_assign_val): New static variable.
	(tree_simple_assignment_expression::eval): Use it to optionally
	allow the rhs (which is the result) of an assignment to be printed
	instead of the left.

	* pt-exp.cc (tree_simple_assignment_expression::eval): Use new
	octave_variabl_reference::index function to handle indexing.

	* oct-var-ref.h, oct-var-ref.cc (idx): New data member.
	(octave_variable_reference::index): Set it.
	(octave_variable_reference::assign): Handle indexing here.
	Delete version of this function htat takes index arg.	

	* variables.h (struct builtin_varaible): Delete.
	* variables.cc (install_builtin_variable): Take all elts of
	builtin_variable struct directly.
	* defun.h (DEFVAR_INT): Call install_builtin_variable directly.

	* symtab.h, defun-int.h: Don't include variables.h.

	* symtab.h (symbol_record::sv_function): Move typedef here.
	* variables.h: From here.

	* oct-var-ref.h, oct-var-ref.cc: New files for
	octave_variable_reference class, extracted from variables.h and
	variables.cc
	* Makefile.in: Add them to the appropriate lists.

	* oct-obj.h (octave_value_list::empty): New function.

	* variables.h (class octave_variable_reference):  Rewrite to work
	as a proxy class to store a pointer to octave_value and,
	optionally, the change function to call and the name of the
	structure element we are referencing.  Handle assignment,
	increment, decrement, and value operations.

Thu May  8 23:40:59 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-re-mat.h, ov-re-mat.cc (struct_elt_ref, struct_elt_val,
	assign_struct_elt): Provide functions for looking up and setting
	matrix dimensions.

	* symtab.cc (symbol_record::define): Don't call sv_fcn here.
	Don't save and restore value here.
	(symbol_record::define_builtin_var): Do call sv_fcn here.
	(symbol_record::variable_reference): Don't make value unique here.
	Return pointer to sv_fcn in octave_variable_reference.

	* pt-misc.cc (tree_parameter_list::initialize_undefined_elements): 
	Simplify.

	* pt-id.h, pt-id.cc (tree_identifier::reference): Return
	octave_variable_reference, not octave_value&.
	* symtab.h, symtab.cc (symbol_record::variable_reference): Ditto.
	* pt-indir.h, pt-indir.cc (tree_indirect_ref::reference): Ditto.
	Simplify too.

	* pt-const.h (tree_constant::reference, tree_constant::value,
	tree_constant::assign):  Delete unnecessary functions.
	* pt-id.h, pt-id.cc (tree_identifier::assign): Ditto.

	* pt-cmd.cc (tree_for_command::do_for_loop_once): Simplify.

	* ov.h, ov.cc, ov-base.h, ov-base.cc, ov-struct.h, ov-struct.cc
	(struct_elt_ref): New arg, octave_value* parent.
	Allow deferred lookup.  Return octave_variable_reference, not
	octave_value&.

	* ov.h, ov.cc, ov-re-mat.h, ov-re-mat.cc (assign_struct_elt):
	New virtual functions.

	* ov.h, ov.cc (Vresize_on_range_error): Now static.

	* pt-mvr.cc (tree_index_expression::eval): Delete redundant check
	of error_state.

Wed May  7 21:17:00 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* input.cc (generate_completion): Rename from command_generator.
	Use string objects instead of char*.
	(generate_possible_completions): Let qsort also make matches unique.
	(initialize_command_input): Register generate_completion with the
	command_editor class.
	(completion_matches): Simplify using generate_completion.

	* pt-pr-code.cc (tree_print_code::visit_constant): For val, call
	print_raw, not print.

	* oct-usr-fcn.h (octave_user_function::argn_sr): New data member.
	(octave_user_function::install_automatic_vars): Rename from
	install_nargin_and_nargout.
	(octave_user_function::bind_automatic_vars): Rename from
	bind_nargin_and_nargout.
	* oct-usr-fcn.cc (octave_user_function::eval): Extract arg names
	from args vector and bind them to argn.
	* oct-obj.h (octave_value_list::names): New data member.
	* oct-obj.cc (octave_value_list::stash_name_tags): New function.
	(octave_value_list::name_tags): Ditto.
	* pt-const.h, pt-const.cc (tree_constant::print_raw): New function.
	* pt-misc.h, pt-misc.cc (tree_argument_list::get_arg_names):
	New function.
	* pt-mvr.h, pt-mvr.cc (class index_expression): Cache arg names.
	* toplev.cc (feval): Now static.  Handle arg names.

	* mkops: Cope with moving files defining operators to OPERATORS
	subdirectory.

Tue May  6 00:48:59 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* DLD-FUNCTIONS/getgrent.cc: Use new octave_group class.
	* DLD-FUNCTIONS/getpwent.cc: Use new octave_passwd class.

	* syscalls.cc: Simplify by using new functions defined in
	liboctave/oct-syscalls.cc.

	* file-io.cc (Ftmpnam): Accept DIR and PREFIX args.

Mon May  5 00:54:03 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-str-mat.cc (octave_char_matrix_str::print_name_tag): Print
	empty strings on one line.

	* DLD-FUNCTIONS, OPERATORS, and	TEMPLATE-INST: New subdirectories.
	Move appropriate files to new directories.
	* Makefile.in: Add DLD-FUNCTIONS, OPERATORS, and TEMPLATE-INST
	directories to VPATH.  Fix rules to work with new directory
	structure.

Sun May  4 22:40:45 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	*  input.cc (initialize_command_input): Rename from
	initialize_readline.
	(gnu_readline, octave_gets, get_user_input): Simplify, return
	string, not char *.

	* Many of other files: Miscellaneous changes to go along with the
	changes described in the liboctave/ChangeLog for May 4.  More code
	moved from here to liboctave.
	
Fri May  2 19:50:33 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pathlen.h: Move to ../liboctave.

Thu May  1 21:50:44 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* variables.cc (get_struct_elts): New fucntion.
	(looks_like_struct, generate_struct_completions): Move here from
	input.cc, rewrite, and make work again.

Wed Apr 30 00:24:05 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-base.h, ov-bool-mat.cc, ov-bool-mat.h, ov-bool.cc, ov-bool.h,
	ov-ch-mat.cc, ov-ch-mat.h, ov-complex.cc, ov-complex.h,
	ov-cx-mat.cc, ov-cx-mat.h, ov-file.cc, ov-file.h, ov-list.cc,
	ov-range.cc, ov-range.h, ov-re-mat.cc, ov-re-mat.h, ov-scalar.cc,
	ov-scalar.h, ov-str-mat.cc, ov-struct.cc, ov.h (scalar_value):
	New function.  Same as double_value, but name is consistent with
	octave_scalar class.

	* op-fil-b.cc, op-fil-cm.cc, op-fil-lis.cc, op-fil-rec.cc,
	op-fil-str.cc, op-fil-bm.cc, op-fil-cs.cc, op-fil-m.cc,
	op-fil-s.cc: New files.

	* ops.h (ASSIGNOPDECL, DEFASSIGNOP, DEFASSIGNOP_FN, CONVDECL,
	DEFCONV, BINOPDECL, DEFBINOPX, DEFBINOP, DEFBINOP_OP, DEFBINOP_FN,
	BINOP_NONCONFORMANT): New macros.
	* op-b-b.cc, op-bm-bm.cc, op-cm-cm.cc, op-cm-cs.cc, op-cm-m.cc,
	op-cm-s.cc, op-cs-cm.cc, op-cs-cs.cc, op-cs-m.cc, op-cs-s.cc,
	op-m-cm.cc, op-m-cs.cc, op-m-m.cc, op-m-s.cc, op-s-cm.cc,
	op-s-cs.cc, op-s-m.cc, op-s-s.cc, op-str-str.cc: Use them.

	* Makefile.in (octave): Also depend on ops.o.

	* builtins.h: Delete.
	* octave.cc: Add extern declaration here.

	* mappers.h: Delete.
	* Makefile.in (INCLUDES): Delete from list.
	* mkbuiltins: Add extern declaration in builtins.cc.

	* mkops: New file.
	* ops.cc: Delete.
	* Makefile.in (SOURCES): Delete from the list.
	(ops.cc): New target.
	(OP_SOURCES): New list.  Move all op-*.cc files here from SOURCES.
	Add $(OP_SOURCES) to SOURCES list.

	* variables.cc (symbols_of_variables): No longer static.
	* ov.cc (symbols_of_ov): Rename from symbols_of_value.

	* ov-base.h: Delete declaration for install_base_type_conversions.
	* op-b-b.h, op-bm-bm.h, op-cm-cm.h, op-cm-cs.h, op-cm-m.h,
	op-cm-s.h, op-cs-cm.h, op-cs-cs.h, op-cs-m.h, op-cs-s.h,
	op-m-cm.h, op-m-cs.h, op-m-m.h, op-m-s.h, op-s-cm.h, op-s-cs.h,
	op-s-m.h, op-s-s.h, op-str-str.h: Delete.
	* Makefile.in (INCLUDES): Delete them from the list.

Tue Apr 29 22:27:49 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* variables.h, variables.cc (install_builtin_variables): Delete.
	* mkbuiltins: Also generate install_builtin_variables function.
	* Makefile.in: Fix rule to call mkbuiltins with correct args.
	(clean): Also delete def-files and var-files.
	* defaults.h.in, dirfns.h, error.h, file-io.h, help.h, input.h,
	lex.h, load-save.h, oct-usr-fcn.h, pager.h, parse.h, pr-output.cc,
	pr-output.h, pt-mat.h, pt-misc.h, pt-plot.h, toplev.h:
	Delete declarations of symbols_of_* functions.
	* data.h, syscalls.h: Delete.

	* pr-output.cc (octave_print_internal): Leave printing of final
	new line up to the caller.

	* ov.h, ov.cc (reset_indent_level, increment_indent_level,
	decrement_indent_level, newline, indent, reset,
	curr_print_indent_level, beginning_of_line):
	New functions and static data to manage indent level for printing.
	(print_as_scalar): Delete.
	(print, print_with_name): Always require stream arg.
	Change all callers.

	* oct-stream.h (octave_stream::input_stream): Make publicly available.
	(octave_stream::output_stream): Likewise.

	* ov-base.h, ov-base.cc, ov.h, ov.cc, ov-file.h ov-base.h
	(is_file, stream_value, stream_number): New functions.
	* ov-file.h, ov-file.cc: New files for value class to manage files.
	* file-io.cc (symbols_of_file_io): Define stdin, stdout, and
	stderr as octve_file objects, not just integers.
	(Ffopen, Fpopen): Return octave_file objects, not integer file ids. 
	* syscalls.cc (Fpipe): Likewise.
	* oct-stream.h, oct-stream.cc (octave_stream_list::insert):
	Return octave_file object, not integer file id.

	* ov-base.cc, ov-bool-mat.cc, ov-bool.cc, ov-ch-mat.cc,
	ov-complex.cc, ov-cx-mat.cc, ov-file.cc, ov-list.cc, ov-range.cc,
	ov-re-mat.cc, ov-scalar.cc, ov-str-mat.cc, ov-struct.cc, ov.cc
	(print_name_tag, print_raw): New functions.

	* help.cc (Ftype): Don't cast symbol definition to tree_constant *.

	* variables.cc (link_to_global_variable): Don't try to define
	symbol with tree_constant objects.
	(bind_ans): Call symbol_record::define directly and then
	octave_value::print_with_name instead of creating a temporary
	assignment expression.

	* pt-pr-code.cc (tree_print_code::indent): Don't use ostream::form.

	* pt-exp-base.h, pt-exp.h, pt-exp.cc (oper): Return string, not
	char *.  Change all where necessary.

Mon Apr 28 16:33:49 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov.h (octave_value binary_op enum): Add lshift and rshift.
	(octave_value assign_op enum): Add lshift_eq and rshift_eq.
	* ov.cc (assign_op_as_string, binary_op_as_string): Include them.
	* parse.y (LSHIFT_EQ RSHIFT_EQ LSHIFT RSHIFT): New tokens.
	Add them to the precedence list.
	(simple_expr): Add new operators.
	(make_assign_op, make_binary_op): Handle new operators.
	* lex.l: Recognize new operators.

	* lex.l: Recognize them.

Sun Apr 27 20:17:49 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-misc.cc (Vsilent_functions, silent_functions):
	Move here from oct-usr-fcn.cc.
	(symbols_of_pt_misc): New function.  DEFVAR silent_functions.
	(tree_statement_list::eval): Handle Vsilent_functions here instead
	of in octave_user_function::eval.
	(tree_statement::eval): New functions.
	(tree_statement_list::eval): Use them.
	Change print flag arg to silent flag.  Change all callers.
	* variables.cc (install_builtin_variables): Call symbols_of_pt_misc.
	* toplev.cc (parse_and_execute): Delete print arg.  Change all callers.
	(eval_string): Change print flag arg to silent flag.  Change callers.

	* dynamic-ld.h, dynamic-ld.cc: Rewrite to use singleton class.
	* variables.cc (load_fcn_from_file): Use new dynamic linking class.

	* dynamic-ld.h (Octave_builtin_fcn): Delete typedef.
	* dynamic-ld.cc: Simplify via the magic of function pointers.

	* pt-fcn.h pt-fcn.cc pt-fvc.h pt-fvc.cc pt-fvc-base.h pt-fvc-base.cc:
	Delete obsolete files.
	* Makefile.in: Remove them from various lists.

	* pt-walk.h (visit_octave_user_function): Rename from visit_function.
	(visit_builtin): Delete.
	* pt-pr-code.h, pt-pr-code.cc (visit_octave_user_function):
	Rename from visit_function.
	(visit_octave_user_function_header): Rename from visit_function_header.
	(visit_octave_user_function_trailer): Rename from
	visit_function_trailer.

	* ov.h, ov.cc (eval): New functions.

	* dassl.cc, fsolve.cc, lsode.cc, npsol.cc, qpsol.cc, quad.cc:
	Declare user-defined functions as a pointer to an octave_symbol
	object, not as a pointer to a tree_fvc object.

	* symtab.h, symtab.cc: Use new octave_symbol class.
	* variables.cc (install_builtin_function, install_builtin_mapper,
	install_builtin_variable, install_builtin_variable_as_function):
	Make work with new octave_symbol class and symbol table structure.

	* variables.h: Delete declaration of builtin_function struct.
	* defun-dld.h (DEFUN_DLD): Simplify.
	* defun-int.h (DEFINE_FUN_STRUCT): Delete.
	(DEFINE_FUN_STRUCT_FUN): Rewrite to not use static builtin_function
	object.

	* mappers.h: Delete declaration of builtin_mapper_function struct.
	* mappers.cc: Declare wrapper functions static.
	* defun.h (DEFUN_MAPPER): Simplify.

	* oct-sym.h: New file.  Declare base class for Octave symbols.
	* ov.h: Derive octave_value class from octave_symbol.
	* oct-fcn.h, oct-fcn.cc: New files to declare and define
	base class for functions.
	* oct-builtin.h, oct-builtin.cc: New files to declare and define
	class for built-in functions.
	* oct-mapper.h, oct-mapper.cc: New files to declare and define
	class for mapper functions.
	* oct-usr-fcn.h, oct-usr-fcn.cc: New files to declare and define
	base class for user-defined functions.
	* Makefile.in: Add new files to appropriate lists.

	* pt-id.h, pt-id.cc: Move tree_identifier class here.
	* pt-fvc.h, pt-fvc.cc: From here.

	* pt-indir.h, pt-indir.cc: Move tree_indirect_ref class here.
	* pt-fvc.h, pt-fvc.cc: From here.

Thu Apr 24 03:58:16 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* parse.y (magic_colon): New nonterminal.
	(arg_list): Simplify using magic_colon.

	* lex.h (class lexical_feedback): Delete maybe_screwed field.
	New field, parsed_function name.
	* lex.l (lexical_feedback::init): Initialize it.
	(handle_identifier): Don't return SCREW.  Handle switching
	symbol table context properly for `function f ()' vs `function x ='.
	(is_keyword): If looking at function keyword, don't set current
	symbol table to point to the local table.
	* parse.y (recover_from_parsing_function): New function.
	(finish_function_def): Use identifier, not token.
	Simplify parsing of functions.

	* ov-list.h, ov-list.cc: New files to implement generic list type.
	* ov.cc (list_indent): New global variable.
	(increment_list_indent, decrement_list_indent): New functions.
	(install_types): Register octave_list type.
	* ov-base.cc (octave_base_value::is_list): New function.

	* oct-sym.h: New file.
	* ov.h (class octave_value): Derive from octave_symbol class.

	* pt-const.h, pt-const.cc: Delete lots of old useless cruft.

	* pt-exp.h, pt-exp.cc (tree_binary_expression): Use type codes for
	operators from octave_value instead of repeating them here.

	* pt-fvc-base.cc (tree_fvc::increment, tree_fvc::decrement): Delete.
	* pt-fvc.cc (tree_identifier::increment): Get reference to value
	and increment that instead of using virutal tree_fvc::increment
	function.

	* lex.l: Handle +=, -=, *=, /=, .+=, .-=, .*=, ./=, &=, and |= ops.
	* parse.y (make_assign_op): Rename from make_simple_assignment and
	handle different op types.
	(simple_expr1): Do new ops.
	* pt-misc.cc (initialize_undefined_elements): Pass op to assign.
	* pt-cmd.cc (tree_for_command::do_for_command_once): Likewise.
	* pt-fvc.cc (tree_identifier::assign): Pass op.
	* pt-exp.cc (tree_simple_assignment_expression): Handle new ops.
	* variables.cc (octave_variable_reference::assign): Likewise.
	* ov.h (class octave_value): Likewise.
	* ov.cc (octave_value::assign_op_as_string): New function.
	(octave_value::assign, octave_value::convert_and_assign,
	octave_value::try_assignment_with_conversion,
	octave_value::try_assignment): Pass op.
	* pt-pr-code.cc (tree_print_code::visit_simple_assignment_expression):
	Use expr.oper() instead of printing "=".
	* op-cm-cm.cc, op-cm-cs.cc, op-cm-m.cc, op-cm-s.cc, op-m-m.cc,
	op-m-s.cc, op-str-str.cc: Pass op to INSTALL_ASSIGNOP.
	* ops.h (INSTALL_ASSIGNOP): Pass op.
	* ov-typeinfo.cc (do_register_assign_op): Include op type in table.
	(do_lookup_assign_op): Use op in lookup.

	* ops.h (INSTALL_UNOP): Delete.

	* input.cc (generate_struct_completions, looks_like_struct):
	Disable, since they don't work now anyway.

	* help.cc (Ftype): Work with octave_value instead of a pointer to
	tree_constant.
	* symtab.cc (symbol_record_info::symbol_record_info): Likewise.


Tue Apr 22 22:59:55 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* file-io.cc (Ffprintf): If first arg is a string, assume FID = 1.

Fri Apr 18 20:16:34 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* oct-obj.h, oct-obj.cc: Implement octave_value_list with
	Array<octave_value> as a data member, not as a class derived from
	Array<octave_value>.
	(octave_value_list::length, octave_value_list::resize,
	octave_value_list::prepend, octave_value_list::append,
	octave_value_list::reverse): New functions.

	* op-cm-cm.cc, op-cm-cs.cc, op-cm-m.cc, op-cm-s.cc, op-cs-cm.cc,
	op-cs-m.cc, op-m-cm.cc, op-m-cs.cc, op-m-m.cc, op-m-s.cc,
	op-s-cm.cc, op-s-m.cc: Use new bool ops from liboctave instead of
	the macros defined in ops.h.

Thu Apr 17 13:12:22 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* parse.y (ABORT_PARSE): Handle forced_interactive the same as
	interactive.

Mon Apr 14 01:46:50 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* input.cc (octave_read): Don't forget to free input buffer if it
	exists and has zero length.
	(gnu_readline): Free buf if fgets returns 0.

Wed Apr  9 00:03:57 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* time.cc (mk_tm_map): Only set zone field if HAVE_TM_ZONE or
	HAVE_TZNAME are defined.

Tue Apr  8 12:39:21 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* time.cc (extract_tm): Set tm.tm_zone if HAVE_TM_ZONE is defined,
	not if HAVE_TMZONE is defined.

	* Makefile.in (%.oct : %.o): Use $(SH_LD), not $(CXX).

Wed Apr  2 21:32:16 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* dynamic-ld.cc, dynamic-ld.h (init_dynamic_linker): Delete
	function and declaration.
	* octave.cc (main): Don't call it.

Mon Mar 31 00:37:48 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-base-exp.h (tree_expression::eval): Give arg a default value.
	* pt-const.h (tree_constant::eval): Likewise.
	* pt-exp.h (tree_prefix_expression::eval, tree_colon_expression::eval,
	tree_postfix_expression::eval, tree_unary_expression::eval,
	tree_binary_expression::eval, tree_boolean_expression::eval,
	tree_simple_assignment_expression::eval): Likewise.
	* pt-fcn.h (tree_function::eval): Likewise.
	* pt-fvc.h (tree_identifier::eval, tree_indirect_ref::eval,
	tree_builtin::eval): Likewise.
	* pt-mat.h (tree_matrix::eval): Likewise.
	* pt-misc.h (tree_statement_list::eval): Likewise.
	* pt-mvr-base.h (tree_multi_val_ret::eval): Likewise.
	* pt-mvr.h (tree_oct_obj::eval, tree_index_expression::eval,
	tree_multi_assignment_expression::eval): Likewise.
	* dassl.cc, fsolve.cc, load-save.cc, lsode.cc, npsol.cc, parse.y,
	pt-cmd.cc, pt-exp-base.cc, pt-exp.cc, pt-fvc.cc, pt-mat.cc,
	pt-misc.cc, pt-mvr.cc, pt-plot.cc, quad.cc, toplev.cc, variables.cc:
	Change callers of eval() to use bool instead of int and to make
	use of default argument value.

	* toplev.h, toplev.cc (parse_and_execute, eval_string): Flag args
	are now bool instead of int.

	* symtab.h, symtab.cc: Use bool instead of int in more places.
	* variables.h, variables.cc: Likewise.
	* lex.h, lex.l: Likewise.
	* parse.y: Likewise.
	* help.cc, input.cc, lex.l, load-save.cc, parse.y, pt-fcn.cc:
	Change callers of symbol_table::lookup to use bool instead of int,
	and to make use of default arguments.

Fri Mar 28 15:33:11 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* parse.y (Vwarn_comma_in_declaration): Delete.
	(symbols_of_parse): Delete DEFVAR for warn_comma_in_declaration.
	(decl1): Don't allow commas in declarations.

	* lsode.cc (struct LSODE_OPTIONS): Handle integer options.
	(print_lsode_option_list, set_lsode_option, show_lsode_option): Ditto.
	(lsode_option_table): Add element for step limit.
	(lsode_user_jacobian): New function.
	(Flsode): Allow function name arg to be a 2-element string array
	specifying the function and jacobian function.

	* variables.cc (get_global_value, set_global_value): New functions.

Wed Mar 26 17:08:27 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	Implement static variable declaration:

	* lex.l (is_keyword): Handle static.
	* octave.gperf: Likewise.
	* parse.y (Vwarn_comma_in_declaration): Rename from
	Vwarn_comma_in_global_decl.
	Handle new static command.
	* pt-cmd.h, pt-cmd.cc (class tree_decl_command): New base class
	for static and global declaration commands.
	(class tree_global_command): Derive from tree_decl_command.
	(class tree_static_command): New class, derived from tree_decl_command.
	* pt-fvc.cc, pt-fvc.h (tree_identifier::mark_as_static): New function.
	* pt-misc.h, pt-misc.h (class tree_decl_elt): Rename from tree_global.
	(class tree_decl_init_list): Rename from tree_global_init_list.
	* pt-pr-code.cc, pt-pr-code.h (tree_print_code::visit_decl_command):
	Rename from visit_global_command.
	(tree_print_code::visit_decl_elt): Rename from visit_global.
	(tree_print_code::visit_decl_init_list): Rename from
	visit_global_init_list.
	* pt-walk.h (tree_walker::visit_decl_command): Rename from
	visit_global_command.
	(tree_walker::visit_decl_elt): Rename from visit_tree_global.
	(tree_walker::visit_decl_init_list): Rename from
	visit_global_init_list.
	* variables.cc (link_to_global_variable): Trying to make a static
	variable global is an error.
	* SLList-misc.cc: Instantiate lists of pointers to tree_decl_elt
	objects, not tree_global objects.
	* symtab.h, symtab.cc (symbol_record::tagged_static): New field.
	(symbol_record::mark_as_static, symbol_record::is_static):
	New functions.
	* symtab.cc (symbol_record::init_state): Initialize tagged_static.
	(symbol_record::clear): Don't clear static variables.
	* symtab.cc (push_context): Don't do anything for static variables.

Tue Mar 25 17:17:17 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-bool-mat.cc, ov-bool-mat.h, ov-bool.cc, ov-bool.h: New files.

	* defaults.cc (symbols_of_defaults): DEFCONST OCTAVE_HOME.

	* toplev.cc (octave_config_info): Delete use of CXXLIBS.
	* oct-conf.h.in: Ditto.

	* octave.cc (maximum_braindamage): Don't bind prefer_zero_one_indexing.
	* ov.h: Don't declare Vprefer_zero_one_indexing.
	* ov.cc: Don't define Vprefer_zero_one_indexing.
	(prefer_zero_one_indexing): Delete.
	(symbols_of_value): Delete DEFVAR for prefer_zero_one_indexing.

	* ov.h, ov.cc, ov-base.h, ov-base.cc: Add constructors and
	extractors for bool and boolMatrix types. 
	
	* ov.cc (install_types): Register octave_bool and
	octave_bool_matrix types.

	* op-cm-cm.cc, op-cm-cs.cc, op-cm-m.cc, op-cm-s.cc, op-cs-cm.cc,
	op-cs-m.cc, op-m-cm.cc, op-m-cs.cc, op-m-m.cc, op-m-s.cc,
	op-s-cm.cc, op-s-m.cc, op-s-s.cc, ov-re-mat.cc:
	Return boolMatrix instead of Matrix object.
	* ops.h (BOOL_OP3, MX_MX_BOOL_OP): Likewise.

	* op-b-b.h, op-b-b.cc, op-bm-bm.h, op-bm-bm.cc: New files.
	* Makefile.in: Add them to the lists.
	* ops.cc: Include header files here.
	(install_ops): Call install_b_b_ops() and install_bm_bm_ops() here.

	* variables.cc (symbols_of_variables): Don't rely on default
	conversion from int to double for value returned from
	default_history_size().

	* pr-output.cc: Include cstdio.

	* parse.y (param_list_end): Fix typo in last change.

	* quad.cc (quad): Cast integer return values to double.
	* npsol.cc (show_npsol_option): Likewise.
	* qpsol.cc (show_qpsol_option): Likewise.
	* file-io.cc (Fsprintf, Ffwrite): Likewise.

Mon Mar 24 13:11:47 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-typeinfo.cc (typeinfo): If invoked with an argument, return
	the type of the argument as a string.  Fix doc string.

Thu Mar 20 14:47:49 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* mk-oct-links (links_dir): Don't use -h option for grep.  It's
	not needed since we are working on one file at a time anyway.

Mon Mar 17 10:53:29 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* lex.l (handle_identifier): When handling indirect_ref, set
	lexer_flags.quote_is_transpose to 1 so that a.b' to work as
	expected.

	* parse.y (param_list_beg, param_list_end): New nonterminals.
	(param_list, param_list1): Use them.

Wed Mar 12 16:57:28 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (install-strip): New target.

Mon Mar 10 22:38:16 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (clean): Delete .oct files too.

	* toplev.cc (Vdefault_eval_print_flag): New static variable.
	(eval_string): New arg, print.
	(Feval): Pass Vdefault_eval_print_flag to eval_string.
	(default_eval_print_flag): New function.
	(symbols_of_toplev): New function.

	* variables.cc (install_builtin_variables): Call it.

	* pt-exp.h, pt-exp.cc (class tree_boolean_expression): Rename enum
	fields `and' and `or' to `bool_and' and `bool_or'.
	(tree_unary_expression): Rename enum field `not' to `unot'.
	(class tree_binary_expression): Rename enum fields `and' and `or'
	to `el_and' and `el_or'.
	* parse.y: Change all uses.

	* time.cc (extract_tm): Truncate field values instead of rounding.
	(gmtime, localtime): Likewise, for timeval.

	* ov.h (class octave_value): Delete unused variable freeptr.

	* mappers.cc: Delete functions that are already in
	liboctave/lo-mappers.cc.

	* oct-strstrm.cc (octave_base_strstream::tell): Use const_cast,
	not static_cast.

	* help.cc (help_from_list): Add missing const qualifiers.
	* help.h (struct help_list): Likewise.
	* lex.l (match_any, plot_style_token): Likewise.
	* load-save.cc (extract_keyword, ascii_save_type): Likewise.
	* oct-hist.cc (mk_tmp_hist_file): Likewise.
	* octave.cc (execute_startup_files): Likewise.
	* octave.gperf (struct octave_kw): Likewise.
	* pr-output.cc (pr_any_float): Likewise.
	* pt-mvr.cc (tree_index_expression::eval_error): Likewise.
	* pt-exp-base.h, pt-exp.h, pt-exp.cc: Likewise.
	* parse.y: Likewise.

Sun Mar  9 03:46:45 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-exp-base.h (tree_expression): Delete extra comma at end of list.

	* dirfns.cc error.cc file-io.cc fsolve.cc input.cc load-save.cc
	npsol.cc pt-fcn.cc qpsol.cc quad.cc syscalls.cc toplev.cc
	variables.cc: Eliminate embedded newlines in string constants.

	* Map.cc, data.cc, dirfns.cc, dynamic-ld.cc, file-io.cc,
	fsolve.cc, getgrent.cc, getpwent.cc, getrusage.cc, help.cc,
	input.cc, load-save.cc, mappers.cc, minmax.cc, npsol.cc,
	oct-fstrm.cc, oct-procbuf.h, oct-stdstrm.cc, oct-stdstrm.h,
	oct-stream.cc, oct-stream.h, oct-strstrm.cc, octave.cc,
	ov-base.h, ov-range.cc, ov-typeinfo.cc, ov.cc, pr-output.cc,
	pt-cmd.cc, pt-exp.cc, pt-fcn.cc, pt-fvc.cc, pt-mat.cc,
	pt-misc.cc, pt-plot.cc, qpsol.cc, quad.cc, sort.cc, strfns.cc,
	symtab.cc, syscalls.cc, sysdep.cc, time.cc, toplev.cc,
	unwind-prot.cc, unwind-prot.h, variables.cc, xpow.cc:
	Use `static_cast<T> (val)' instead of old C-style `(T) val' casts.

Sat Mar  8 02:35:13 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* load-save.cc (save_ascii_data, save_three_d): Where appropriate,
	use bool instead of int.
	(save_binary_data, save_mat_binary_data, save_ascii_data):
	Print warning instead of error for wrong type arg.

	* gripes.cc (gripe_wrong_type_arg): New arg, is_error.

	* pt-plot.cc (save_in_tmp_file): Call save_ascii_data with bool
	arg, not int.

Fri Mar  7 00:56:16 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* dassl.cc (show_dassl_option): For values that are determined
	automatically, return a string instead of a magic value (-1.0).
	* fsolve.cc (show_fsolve_option): Likewise.
	* lsode.cc (show_lsode_option): Likewise.
	* npsol.cc (show_npsol_option): Likewise.
	* qpsol.cc (show_qpsol_option): Likewise.

	* variables.cc (extract_function): New function.
	* dassl.cc (Fdassl): Use it instead of is_valid_function.
	* fsolve.cc (Ffsolve): Likewise.
	* npsol.cc (Fnpsol): Likewise.
	* qpsol.cc (Fqpsol): Likewise.
	* quad.cc (Fquad): Likewise.

Thu Mar  6 20:07:24 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* sighandlers.cc (my_friendly_exit, octave_new_handler,
	sigfpe_handler, sigpipe_handler): Don't all error() or warning().

	* pager.cc (pager_death_handler): Don't try to clear pager, just
	print message to cerr.
	(do_sync): If the status of the pager is bad or it looks like it
	is dead, restore the interrupt handler.

	* load-save.cc (extract_keyword (istream&, char*, int&)):
	Move declaration of buf inside loop, to avoid deleting its guts
	and then trying to reuse it.
	(extract_keyword (istream&, char*)): Likewise.

Tue Mar  4 20:36:53 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-fcn.cc (tree_function::eval): Protect function from being
	redefined while it is being evaluated.
	(unprotect_function): New function, for use with unwind_protect stuff.
	* pt-fcn.h (tree_function::symtab_entry): New data member.
	(tree_function::init): Initialize it to 0.
	(tree_function::stash_symtab_ptr): New function.
	* parse.y (frob_function_def): Stash pointer to function's
	symbol_record in the function definition.

	* symtab.cc (symbol_record::read_only_error): New argument,
	action.  Change all callers.
	(symbol_record::rename): Don't allow read-only symbols to be renamed.

	* variables.cc (Fexist): Don't let files with `.' in their names
	confuse us.

	* symtab.cc (valid_identifier (const string&)): New function.

Sat Mar  1 15:23:14 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Version 2.0.5 released.

Sat Mar  1 01:34:08 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (stamp-oct-links): New target.  Make links in build
	directory too, so that the tests will work.

	* quad.cc: If quad is defined, undefine it.

	* octave.cc: If WITH_KPATHSEARCH is defined, don't define
	program_invocation_name or program_invocation_short_name.

	* strftime.c: Update to current version from FSF.
	* time.cc (Fstrftime): Call strftime with buf = 0 to get buffer
	size, then call again to actually format the time struct.

Fri Feb 28 01:49:48 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	Implement switch statement:

	* parse.y (Vwarn_variable_switch_label): New static variable.
	(warn_variable_switch_label): New function.
	(symbols_of_parse): Provide warn_variable_switch_label as Octave
	variable here.
	(make_switch_case, finish_switch_command): New functions.
	(maybe_warn_variable_switch_label): New function.
	(end_error): Handle endswitch.
	(switch_command, case_list, case_list1, switch_case, default_case):
	New nonterminals.
	(command): Add switch_command here.
	* lex.l	(is_keyword): Handle switch, case, otherwise, and endswitch.
	* octave_gperf: Recognize switch, case, otherwise, and endswitch.
	* token.h (end_tok_type): New item, switch_end.
	* pt-cmd.cc (tree_switch_command): New class.
	* pt-misc.cc (tree_switch_case, tree_switch_case_list): New classes.
	* pt-pr-code.cc (tree_print_code::visit_switch_case,
	tree_print_code::visit_switch_case_list,
	tree_print_code::visit_switch_command): New functions.
 	* pt-walk.h (tree_walker::visit_switch_case,
	tree_walker::visit_switch_case_list,
	tree_walker::visit_switch_command): New pure virtual declarations.
	Implement new switch statement.
	* SLList-misc.cc: Instantiate lists of pointers to
	tree_switch_case objects too.

	* lex.h, lex.l, parse.y: Delete all references to lexer_flags::iffing.

	* syswait.h: Include sys/wait.h on NeXT systems, but don't use the
	WIFEXTED, WEXITSTATUS, and WIFSIGNALLED macros defined there.
	Also define waitpid in terms of wait4.  From Rex A. Dieter
	<rdieter@math.unl.edu>.

Wed Feb 26 16:43:31 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* oct-stream.cc (octave_base_stream::do_scanf): Don't report an
	error if a conversion fails or we reach EOF.

Tue Feb 25 22:21:05 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* time.cc (strftime): increase initial buffer size.

Mon Feb 24 17:49:21 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-fvc.cc (tree_builtin::eval): Enable checking for max number
	of arguments.

	* error.cc (handle_message): Don't fail if args is empty.

Sun Feb 23 22:42:52 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* lex.h (lexical_feedback::looking_at_return_list): New field.
	(lexical_feedback::looking_at_parameter_list): Ditto.
	* lex.l (lexical_feedback::init): Initialize them.
	(handle_identifier): Use them.
	* parse.y: Likewise.

Fri Feb 21 15:35:18 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* lex.l: Require flex 2.5 or later (we really want 2.5.4 or later,
	but there seems to be no good way to check the patchlevel).

	* oct-stream.cc (octave_base_stream::oscanf): Instead of returning
	an error, just quit processing after a conversion fails.

Thu Feb 20 02:58:05 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Version 2.0.4 released.

Wed Feb 19 10:30:14 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* sighandlers.cc (octave_ignore_interrupts,
	octave_catch_interrupts, octave_set_interrupt_handler):
	Return old value, not pointer to static data.  Fix all uses.
	
	* sighandlers.h (octave_interrupt_handler): Move declaration here.
	* sighandlers.cc: From here.

	* toplev.cc: Undo previous change.

	* lex.l (handle_identifier): Allow commands like ls, save, etc. to
	also be used as simple variable names.  Also make it possible to
	use the normal function call syntax to invoke them.

Tue Feb 18 09:22:04 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (%.oct:%.o, %.oct:pic/%.o): Use $(SH_LDFLAGS) here.

	* Version 2.0.3 released.

Tue Feb 18 00:27:49 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* toplev.cc (run_command_and_return_output):
	Block SIGCHLD while running subprocess.
	(cleanup_iprocstream): Unblock it here.

	* sighandlers.h (BLOCK_SIGNAL, BLOCK_CHILD, UNBLOCK_CHILD): Move here.
	* sighandlers.cc: From here.

	* toplev.cc (system): Shift then mask exit status.

	* help.cc (try_info): Shift first, then mask exit status.

	* toplev.cc (octave_config_info): Handle option argument.

Fri Feb 14 16:23:30 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* oct-stream.cc (octave_base_stream::do_scanf): Don't forget to
	check to see if the result matrix needs resizing!

	* Makefile.in (bin-dist): Don't write empty strings to LIBRARIES.

Thu Feb 13 03:02:08 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (stamp-prereq): Depend on stamp-picdir.
	(all): Don't depend on stamp-prereq or stamp-picdir.
	(stamp-tinst, stamp-interp, libtinst.a, liboctinterp.a):
	Do depend on stamp-prereq.
	(stamp-picdir): Silence noise about making pic.
	(stamp-tinst, stamp-interp): Use $(SH_LD) $(SH_LDFLAGS) instead of
	$(CXX) -shared.

	* oct-conf.h.in: Reinstate RLD_FLAG.
	* toplev.cc (octave_config_info): Likewise.

	* data.cc (map_d_m, map_m_d, map_m_m): Rename from map.
	(Fatan2): Use new function names.

	* pt-fvc.cc (apply_mapper_fcn): Use member function map() instead
	of friend function.

	* gripes.cc (gripe_wrong_type_arg (const char*, const string&)):
	New function.

Wed Feb 12 17:27:53 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* syscalls.cc (symbols_of_syscalls): Add O_ASYNC and O_SYNC.

Mon Feb 10 01:22:27 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* dirfns.cc (Freaddir, Fmkdir, Frmdir, Frename):
	Also return status and error message.

	* syscalls.cc (Fdup2, Fexec, Ffork, Ffcntl, Funlink, Fmkfifo,
	Fpipe, Fwaitpid): Also return error message.

Sat Feb  8 17:16:09 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-exp.cc (tree_simple_assignment_expression::eval): Return
	value of RHS, but (if printing) print complete value of LHS.

	* pr-output.cc (octave_print_internal): Print a new line for empty
	string matrices.

Wed Feb  5 14:30:44 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* oct-stream.cc (scanf_format_list::process_conversion): Accept
	but don't actually use h, l, and L modifiers.  Always insert l
	modifier for floating point conversions.	

Fri Jan 31 13:55:10 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pager.cc (do_sync): Always flush the cout stream after writing.

Wed Jan 29 08:25:29 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* defaults.cc (exec_path): Don't include bin_dir in std_path.

	* pager.cc (do_sync): Flush the cout stream after writing if
	running in interactive or forced_interactive mode.

	* mk-oct-links: Rename from mk-oct-links.in.
	Don't use symbolic links.
	* Makefile.in: Distribute mk-oct-links, not mk-oct-links.in
	(mk-oct-links): Delete target.
	(install-oct, bin-dist): Don't depend on mk-oct-links.
	Run $(srcdir)/mk-oct-links, not ./mk-oct-links.

	* qr.cc (qr): Doc fix.

Tue Jan 28 10:48:28 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (install-inc): Create a relative symbolic link.
	(install-bin): Create a relative symbolic link.

Mon Jan 27 12:12:03 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* 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  <jwe@bevo.che.wisc.edu>

	* sighandlers.cc (sigchld_handler): Block SIGCHLD while
	sigchld_hander is running.

Sat Jan 25 22:36:39 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (bin-dist): Update for 2.x.

Fri Jan 24 10:05:00 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* 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  <jwe@bevo.che.wisc.edu>

	* 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  <jwe@bevo.che.wisc.edu>

	* 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  <jwe@bevo.che.wisc.edu>

	* SLList.h: Include "BaseSLList.h", not <BaseSLList.h>.

Mon Jan 20 11:11:12 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* 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  <jwe@bevo.che.wisc.edu>

	* 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  <jwe@bevo.che.wisc.edu>

	* 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  <jwe@bevo.che.wisc.edu>

	* log.cc (sqrtm): For complex arg case, compute sqrt, not log.

Tue Jan  7 00:16:41 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Version 2.0.1 released.

Mon Jan  6 00:00:07 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-mat.cc (tm_row_const_rep::all_mt): New variable.
	(tm_row_const::all_empty): New function.
	(tm_row_const::tm_row_const_rep::init): Set all_mt here.
	(tm_const::all_mt): New variable.
	(tm_const::all_emtpy): New function.
	(tm_const::init): Set all_mt here.
	(tree_matrix::eval): Return an empty matrix if the list contains
	only empty elements.  If it contains only empty strings, return an
	empty string.

Sun Jan  5 12:50:25 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ops.h (SC_MX_BOOL_OP, MX_SC_BOOL_OP): New arg, empty_result.
	* op-cm-cm.cc, op-cm-cs.cc, op-cm-m.cc, op-cm-s.cc, op-cs-cm.cc,
	op-cs-m.cc, op-m-cm.cc, op-m-cs.cc, op-m-m.cc, op-m-s.cc,
	op-s-cm.cc, op-s-m.cc, op-str-str.cc: Change all uses of
	SC_MX_BOOL_OP and MX_SC_BOOL_OP macros.  Return correct results
	for empty matrix cases.

	* pt-fcn.cc (tree_function::eval): If Vdefine_all_return_values is
	true, initialize return values before evaluating function, for
	compatibility with Matlab.

	* oct-stream.cc (get_size): Correctly set size when arg is scalar.

Thu Jan  2 12:40:10 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (install-oct): Quote $(OCT_FILES) in for loop to
	avoid syntax error from ksh.

	* pr-output.cc (octave_print_internal): Avoid unused parameter
	warning from gcc.

Thu Dec 19 12:13:42 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* oct-stream.cc (octave_base_stream::do_scanf):
	Don't treat %l{e,f,g} differently from %{e,f,g}.
	(octave_base_stream::do_oscanf): Likewise.

	* sighandlers.cc (sigchld_handler): Fix typos.

Wed Dec 18 20:17:23 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* file-io.cc (Ffgetl, Ffgets): Also return number of characters	read.

	* ov-range.cc (octave_range::not): New function.
	* ov-range.h (octave_range::uminus): New function.

	* BaseSLList.cc: Include error.h.
	(BaseSLList::error): Call ::error() to process error message.

Fri Dec 13 02:38:19 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov.cc (octave_value::convert_and_assign): Preserve lhs value if
	assignment fails.

Wed Dec 11 12:33:16 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-plot.cc (GPLOT_CMD_END): Don't put semicolons at the end of
	each plot command; it causes trouble with gnuplot 3.5.

Tue Dec 10 00:31:13 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Version 2.0 released.

	* pr-output.cc (set_format_style): Don't try to access argv unless
	argc > 1.

	* SLList-expr.cc SLList-misc.cc SLList-plot.cc SLList-str.cc
	SLList-tc.cc SLList-tm.cc SLList.h SLStack-i.cc SLStack-pc.cc
	SLStack-str.cc SLStack-sym.cc SLStack-tok.cc SLStack-ue.cc
	SLStack-ui.cc, pt-mat.cc: Include Stack.h, Stack.cc, SLStack.cc,
	and SLList.cc as necessary.

	* Stack.cc, SLStack.cc, SLList.cc: New files.
	* Makefile.in (SOURCES): Add them to the list.

Mon Dec  9 12:03:45 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (install-bin): Use $(EXE) suffix so install will
	find the right file on cygwin32 systems.

	* ov.h: Declare proper form of do_binary_op as friend to
	octave_value class.

Sat Dec  7 22:00:10 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* oct-stream.cc (do_printf_conv, do_scanf_conv,
	do_oscanf_num_conv, do_oscanf_str_conv): Convert to real
	functions instead of CPP macros, using templates where necessary.
	(do_oscanf_num_conv, do_oscanf_str_conv): Correctly handle
	discarded values.

Fri Dec  6 00:20:25 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Version 1.94.

	* Map-*.cc, SLList-*.cc, SLStack-*.cc: Include config.h.

	* ov.h: Don't include SLList.h.

	* SLStack.cc: Delete.  Move everything to SLStack.h.

	* BaseSLList.h, BaseSLList.cc: New files.  Split out the
	non-template base class parts of SLList.

	* Makefile.in (TEMPLATE_SRC): Delete.  Move files to SOURCES.
	* Map.h, Map.cc: Add #pragma interface/implementation.
	* SLStack.h, SLStack.cc: Add #pragma interface/implementation.

	* SLList.h, SLList.cc: New files, from libg++, but with #pragma
	interface/implementation.
	* Makefile.in (SOURCES): Add SLList.cc.
	(INCLUDES): Add SLList.h.

Thu Dec  5 18:36:44 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* octave.cc: Don't include sun-utils.h.

Tue Dec  3 23:47:09 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* op-str-str.cc (eq, ne): Handle operations with scalars.

Thu Nov 21 12:30:36 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-str-mat.h (octave_char_matrix_str): Provide transpose and
	hermitian operators.
	* ov-ch-mat.h (octave_char_matrix): Likewise.

Wed Nov 20 00:35:57 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* sighandlers.h (struct octave_interrupt_handler): Provide
	forward declaration here.
	* sighandlers.cc (octave_interrupt_handler): New struct.
	(octave_catch_interrupts): Rename from catch_interrupts.
	(octave_ignore_interrupts, octave_set_interrupt_handler):
	New functions.
	* help.cc, oct-hist.cc, pager.cc, toplev.cc: Use new functions for
	handling interrupts so that we can hide the details of whether or
	not we have to deal with SIGBREAK.

	* pt-plot.cc [! HAVE_POSIX_SIGNALS] (open_plot_stream):
	Simply ignore and restore the interrupt handler here.

	* sighandlers.cc (MAYBE_REINSTALL_SIGHANDLER): New macro.  Use it
	instead of always checking MUST_REINSTALL_SIGHANDLERS everywhere.
	(sigchld_handler): If octave_child_list is empty, wait for any
	child, but don't hang, and don't collect status info.
	[__EMX__] (sigchld_handler): Save and restore handlers for SIGINT,
	SIGBREAK, and SIGCHLD.  Ignore them while waiting on children.
	(install_signal_handlers): If SIGBREAK exists, handle it like SIGINT.

	* toplev.cc [USE_READLINE] (clean_up_and_exit):
	Call rl_deprep_terminal() to restore terminal settings.

	* sysdep.cc [__EMX__ && OS2] (Fextproc): New command.
	[__EMX__ && OS2] (FEXTPROC): Alias for Fextproc.

	* Version 1.93.

	* sysdep.cc (octave_chdir): [__EMX__]: Make copy of string before
	converting to upper case.

	* getgrent.cc (mk_gr_map): Only set the passwd field if
	HAVE_GR_PASSWD is defined.

Tue Nov 19 12:01:13 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* sysdep.cc (OS2_init): New function.
	[__EMX__] (sysdep_init): Call it.

	* lex.l (plot_style_token): Add new plot styles for gnuplot 3.6.
	* pt-plot.cc (subplot_style::columns_ok): Rename from
	subplot_style::errorbars. Recognize more styles and do a better
	job of diagnosing column number/style mismatches.

	* sighandlers.cc (my_friendly_exit): If we are called twice, try
	to remove the signal handler for SIGABRT and the call abort ().

	* help.cc (Ftype): If a function is defined from a file and
	transformed text has not been requested, just print the contents
	of the file.

	* parse.y (fold): New functions for constant folding for binary
	and unary expressions.  Keep track of original text even when
	transformations occur.
	(make_binary_op, make_boolean_op, make_unary_op): Use them.
	(finish_colon_expression, finish_matrix): Keep track of original
	text even when transformations occur.

	* help.cc (Ftype): Don't mess with Vps4.
	Handle new option `-transformed'.

	* pt-const.h, pt-const.cc (tree_constant::print):
	New arg, pr_orig_text.

	* pt-exp.h, pt-exp.cc (tree_colon_expression::is_range_constant):
	Delete.

	* pt-exp-base.h (tree_expression::original_text): New virtual function.
	pt-exp-base.cc (tree_expression::original_text): Default version.

	* pt-pr-code.h (tree_print_code::print_original_text,
	tree_print_code::prefix): New fields.
	* pt-pr-code.cc (tree_print_code::visit_constant): Pass
	print_original_text to tree_constant::print().
	(tree_print_code::indent): Use prefix instead of Vps4.
	* pt-fcn.cc (tree_function::print_function_header,
	tree_function::print_function_trailer): Pass Vps4 to
	tree_print_code_constructor for prefix.
	* pt-misc.cc (tree_statement::maybe_echo_code): Pass Vps4 to
	tree_print_code_constructor for prefix.

	* pt-mat.h, pt-mat.cc (tree_matrix::all_elements_are_constant):
	Rename from is_matrix_constant.
	(tree_matrix_row::all_elements_are_constant): Likewise.
	Change all callers.

Mon Nov 18 14:13:32 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (install-inc): Try harder to create the link from
	include/octave to include/octave-VERSION.

Sun Nov 17 14:14:48 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (parse.cc): Expect 13 shift/reduce conflicts.

	* parse.y (set_stmt_print_flag): New function.
	(sep_type): New member for bison %union declaration.
	Simplify rules for statement lists keeping track of the type of
	the first separator in the values associated with the
	nonterminals for the separators.

	* lex.l (handle_identifier): Set lexer_flags.doing_set if the
	token is "gset", not "set".

Sat Nov 16 21:41:26 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (parse.cc, lex.cc): Add special rules for these files.
	Delete pattern rules for .y and .l files.

Fri Nov 15 13:48:02 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-plot.cc: Put semicolons at the ends of all plot commands.

	* defaults.cc (subst_octave_home): Start subsequent searchs from
	the end of the replaced text.

	* pr-output.cc (pr_any_float): Kluge for SCO systems.

	* pr-output.cc (pr_any_float, pr_complex): Don't declare inline.

	* mappers.cc: Include lo-ieee.h, for isinf and isnan on SCO
	systems.

Thu Nov 14 00:06:19 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-plot.cc (Fgset, Fgshow): New commands.
	(Fshow): Print warning and call gshow.
	(Fset): Print warning and call gset.

	* variables.cc (parse_fcn_file): Add unwind-protect for file
	pointer, so the file is always closed.
	(get_help_from_file): Likewise.
	* toplev.cc (parse_and_execute): Likewise.

	* Makefile.in (install-oct): Depend on mk-oct-links.
	(mk-oct-links): New target.

	* Version 1.92.

Wed Nov 13 11:13:22 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* sighandlers.cc (sys_siglist): [__EMX__]: Add definitions.

	* octave.cc (execute_startup_files): Allow init file name ot be
	specified by an environment variable.

	* dirfns.cc (make_absolute): [__EMX__]: Path is already absolute
	if it begins with any character followed by a colon.

	* load-save.cc (read_mat_ascii_matrix, get_lines_and_columns,
	get_complete_line): New functions, for reading headless text files.
	(load_save_format): Add LS_MAT_ASCII, for headless text files.
	(do_load): Handle LS_MAT_ASCII files.
	Thanks to Mel Melchner <mjm@research.att.com> for initial version
	of this code.

	* sysdep.cc: Conditionally include ieeefp.h.
	(BSD_init, SCO_init): New functions.
	(sysdep_init): Conditionally call them here.

Tue Nov 12 00:14:56 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-plot.cc (open_plot_stream): Don't block SIGCHLD.

	* load-save.cc (read_binary_data): When reading string arrays, be
	sure to create an octave_char_matrix_str object, not just an
	octave_char_matrix object.
	(read_ascii_data): Likewise.

Mon Nov 11 22:52:58 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* load-save.cc (read_binary_data): Don't forget teminating NUL for
	string that we plan to insert.
	(read_ascii_data): Likewise.

Sun Nov 10 16:58:07 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* dirfns.cc (Ffnmatch): New function.

	* octave.cc (intern_argv): Use new string_vector constructor.

	* ov-str-mat.cc (octave_char_matrix_str::all_strings): Have
	charMatrix::row_as_string() strip trailing whitespace.

	* dirfns.cc (Fglob): new function.

	* sysdep.cc (oct_tilde_expand): Provide version that works on
	string vectors too.
	(Ftilde_expand): Work on string vector args.

	* load-save.cc (save_binary_data): Call char_matrix_value() to
	extract charMatrix from octave_value object, not all_strings().
	(save_ascii_data): Likewise.
	* pt-mat.cc (tree_matrix::eval): Likewise.

	* ov.h (octave_value::all_strings): Return string_vector, not
	charMatrix.
	* ov-base.cc (octave_base_value::all_strings): Likewise.
	* ov-str-mat.h, ov-str-mat.cc (octave_char_matrix_str::all_strings): 
	Likewise.

Fri Nov  8 09:54:59 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* defaults.cc, dynamic-ld.cc, fn-cache.cc, help.cc, oct-hist.cc,
	octave.cc, pager.cc, pt-fcn.cc, toplev.cc, utils.cc, variables.cc,
	lex.l: Change #include "" to #include <> for defaults.h,
	oct-conf.h, oct-gperf.h, y.tab.h, and version.h, to avoid getting
	them from $srcdir when we really want the version from the build
	directory.  (Maybe this should be done for all the include files,
	not just those that are auto-generated?  Hmm.)

	* defaults.h.in (CXXLIB_LIST, CXXLIB_PATH, FLIB_LIST, FLIB_PATH):
	Delete.

	* Makefile.in (install-oct): Use $(INSTALL_PROGRAM) for .oct files.

Thu Nov  7 07:59:07 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* variables.cc (gobble_leading_white_space): New arg, update_pos.
	* (is_function_file): Don't update file position information here.

	* Version 1.91.

	* pt-fvc.cc (tree_indirect_ref::reference): If the lhs object is
	not a map, convert it to one.

	* ov-typeinfo.h (init_tab_sz): New static member.

	* ov-struct.cc, ov-struct.h: Add hooks for custom memory management.
	* ov-scalar.cc, ov-scalar.h: Likewise.
	* ov-re-mat.cc, ov-re-mat.h: Likewise.
	* ov-range.cc, ov-range.h: Likewise.
	* ov-cx-mat.cc, ov-cx-mat.h: Likewise.
	* ov-complex.cc, ov-complex.h: Likewise.
	* ov-ch-mat.cc, ov-ch-mat.h: Likewise.

Wed Nov  6 12:32:48 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pager.cc (do_sync): Don't call clear_external_pager() here.

	* pt-const.h (tree_constant::allocator) New static member.
	(tree_constant::operator new, tree_constant::operator delete):
	Implement with custom allocator.

	* syscalls.cc (Fgetgid, Fgetegid): New functions.

	* sighandlers.cc (sigchld_handler): If necessary, reinstall
	handler after call to waitpid().

	* pager.cc (pager_death_handler): Don't use warning() to print
	message.

	* getgrent.cc: New file.
	* Makefile.in (DLD_SRC): Add it.

	* ov.cc (octave_value::print_with_name): Call is_map() instead of
	print_as_structure().
	* ov-struct.cc (octave_struct::print): Likewise.

	* ov.h, ov.cc, pt-const.h: Delete force_numeric(), make_numeric(),
	convert_to_matrix_type(), print_as_structure() member functions.

	* variables.cc (is_function_file): Call gobble_leading_whitespace
	here to strip all leading whitespace and comments.
	(parse_fcn_file): If reading a function file, call
	gobble_leading_whitespace again after resetting parser state to
	grab help text.

Tue Nov  5 13:00:35 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* syscalls.cc (Fgeteuid, Fgetuid): New functions.

	* getpwent.cc: Use gripe_not_supported from gripes.cc, instead of
	local gripe_not_implemented function.

	* input.cc, sysdep.cc, variables.cc: Only include readline.h and
	history.h if USE_READLINE is defined.

	* help.cc: Make it compile without warnings even if USE_GNU_INFO
	is not defined.

	* sighandlers.h (octave_child_list): Don't define
	HAVE_POSIX_SIGNALS HERE.

	* sighandlers.cc (SIGHANDLER_RETURN): New macro.
	(generic_sig_handler, sigchld_handler, sigfpe_handler,
	sigint_handler, sigpipe_handler):  Use it.
	(sigchld_handler, sigfpe_handler, sigint_handler, sigpipe_handler):
	Only reinstall signal handler if MUST_REINSTALL_SIGHANDLER is defined.

Sun Nov  3 00:45:30 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-const.cc (tree_constant::print): Just call val.print().
	* ov-base.cc, ov-ch-mat.cc, ov-colon.cc, ov-complex.cc,
	ov-cx-mat.cc, ov-range.cc, ov-re-mat.cc, ov-scalar.cc,
	ov-str-mat.cc, ov-struct.cc ov-va-args.cc, ov.cc (print):
	Handle pr_as_read_syntax arg.

	* defaults.cc (subst_octave_home): Search for prefix repeatedly in
	retval, not s.

	* gripes.h: Make declaration of gripes_not_supported match
	definition.

	* mk-oct-links.in: In sed command, match "DEFUN_DLD *( *", not
	"DEFUN_DLD_BUILTIN *( *".

	* chol.cc, colloc.cc, dassl.cc, det.cc, eig.cc, expm.cc, fft.cc,
	fft2.cc, filter.cc, find.cc, fsolve.cc, fsqp.cc, getpwent.cc,
	getrusage.cc, givens.cc, hess.cc, ifft.cc, ifft2.cc, inv.cc,
	log.cc, lpsolve.cc, lsode.cc, lu.cc, minmax.cc, npsol.cc, pinv.cc,
	qpsol.cc, qr.cc, quad.cc, qzval.cc, rand.cc, schur.cc, sort.cc,
	svd.cc, syl.cc, time.cc: Change all uses of DEFUN_DLD_BUILTIN to
	be just DEFUN_DLD.

	* defun-dld.h: Eliminate DEFUN_DLD_BUILTIN.

	* syswait.h: Use #ifdef HAVE_SYS_WAIT_H, not #if HAVE_SYS_WAIT_H
	to decide whether to include sys/wait.h.

	* pt-exp-base.h (tree_expression): Declare oper() here as a
	virtual member function.

	* pt-pr-code.cc (tree_print_code::visit_constant): Check for
	string before checking for char_matrix.

	* ov-ch-mat.cc (octave_char_matrix::print): Supply correct number
	of args to octave_print_internal().

Sat Nov  2 20:44:55 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* file-io.cc (Ftmpnam): Rename from Foctave_temp_file_name.

	* Makefile.in (DLD_SRC): Move time.cc and getrusage.cc here from
	SOURCES.  Add getpwent.cc.

	* getrusage.cc: Rename from resource.cc.  Make getrusage a
	loadable function.

	* time.cc: Rename from timefns.cc.  Make time functions loadable.

	* getpwent.cc: New file.

Wed Oct 30 01:06:19 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Version 1.90.

	* Makefile.in (DISTFILES): Add ChangeLog.

	* ov-range.cc (octave_range::convert_to_str): New function.

	* ov-str-mat.h (octave_char_matrix_str::char_matrix_value):
	Delete function.  Already handled by octave_char_matrix class.	

	* ov-ch-mat.h (octave_char_matrix::convert_to_str): New function.

	* pager.cc (Fmore): Set page_screen_output to 1.0 or 0.0, not
	"true" or "false".

	* ov-ch-mat.cc, ov-struct.cc, ov-struct.h, pr-output.cc,
	pt-cmd.cc, pt-const.cc, pt-const.h, pt-fcn.cc, pt-fvc-base.cc,
	pt-fvc-base.h, pt-fvc.cc, pt-fvc.h, rand.cc, sighandlers.cc,
	variables.cc, variables.h: Delete unused code.

	* octave.cc: Only include pwd.h if HAVE_PWD_H.

	* oct-strstrm.h: Include <string>, not <string.h>.

	* defaults.cc, dirfns.cc, file-io.cc, help.cc, input.cc,
 	oct-hist.cc, oct-procbuf.cc, oct-procbuf.h, octave.cc, pager.h,
 	procstream.h, pt-misc.cc, pt-plot.cc, sighandlers.cc, strftime.c,
 	syscalls.cc, sysdep.cc, syswait.h, toplev.cc, utils.cc,
 	variables.cc: Only include sys/types.h if HAVE_SYS_TYPES_H.

	* error.h (panic): Use GCC_ATTR_NORETURN macro, not NORETURN.
	* toplev.h (clean_up_and_exit): Likewise.
	* utils.h (jump_to_top_level): Likewise.

	* derfaults.h.in, defaults.cc (local_arch_lib_dir): New variable.
	* defaults.cc (set_default_local_arch_lib_dir): New function.
	(install_defaults): Call it.
	(exec_path): Use Vlocal_arch_lib_dir here.
	* toplev.cc (octave_config_info): Add localarchlibdir to structure.

Tue Oct 29 15:54:27 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (install-oct): Don't do anything if $(OCT_FILES) is
	empty.

	* ov-range.cc (octave_range::index): New Function.
	(octave_range::all, octave_range::any, octave_range::is_true):
	Make these functions work.

	* ov.cc (octave_value::try_assignment_with_conversion): Remove
	left over debugging print statements.

Mon Oct 28 10:49:03 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* strftime.c: Add missing #endif for previous change.

Sun Oct 27 14:06:44 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* oct-hist.cc (do_history): Rewite option parsing to avoid
	(probably bogus) errors from g++ on cygwin32 system.

	* strftime.c: Use autoconf macros TIME_WITH_SYS_TIME and
	HAVE_SYS_TIME_H to decide which time.h files to include.

	* oct-stream.h, oct-stream.cc (octave_stream::error,
	octave_base_stream::error): Rename errno => err_num.

Sat Oct 26 10:40:05 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* oct-hist.cc (do_history): Move declaration of file inside
	conditional.

	* defun.h (DEFVAR_INT): Set eternal flag with (svc_fcn != 0)
	instead of (sv_fcn ? 1 : 0)

Fri Oct 25 01:10:51 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-ch-mat.h (octave_char_matrix::any): Return 0.0 instead of false.
	(octave_char_matrix::all): Likewise.

	* input.cc (Fecho): When binding value of echo_executing_commands,
	cast ECHO_* to double.

	* sighandlers.cc (octave_child_list::do_remove): Delete unused
	variable `enlarge'.

	* pt-const.h (tree_constant::tree_constant (const tree_constant&)):
	Don't pass arg to tree_fvc constructor.

	* resource.cc (getrusage): [HAVE_GETRUSAGE && RUSAGE_TIMES_ONLY]:
	Only fill in time values.

Thu Oct 24 20:37:28 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* parse.y: Comment out the %expect declaration so byacc can
	compile this file.
	(if_cmd_list): Add missing semicolon.
	Include <cstdlib> for getenv if using byacc.

	* ov.h: Move typedefs outside of octave_value class scope to avoid
	problem with cygwin32 beta16 compiler.

Fri Oct 18 13:44:33 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov.h (octave_value::index): Undo previous change.
	* ov.cc (octave_value constructors): Call maybe_mutate() in most
	cases.

	* ov-complex.cc (octave_complex::index): Avoid implicit type
	conversion back to scalar type.
	* ov-scalar.cc (octave_scalar::index): Likewise.

	* ov.h (octave_value::index): Call maybe_mutate() on retval before
	returning it.

Wed Oct 16 12:00:11 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov.h (octave_value::struct_elt_val): New optional arg, silent.
	* ov-base.h, ov-base.cc, ov-struct.h, ov-struct.cc: Likewise, but
	for the derived classes the arg is required.

	* data.cc (Fstruct_contains): Require arguments to be struct and
	string, respectively.  Call octave_value::struct_elt_val with
	silent flag set.

	* pt-mat.cc (tm_row_const::tm_row_const_rep::eval_error,
	tm_row_const::tm_row_const_rep::eval_warning): New functions.
	(tm_row_const::tm_row_const (const tree_matrix_row&): Use them to
	give better error messages.

	* pt-fvc.cc (tree_identifier::eval): Avoid dereferencing null
	object_to_eval.

Tue Oct 15 11:35:51 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* op-cs-cm.cc, op-cs-cs.cc, op-cs-m.cc, op-cs-s.cc
	(complex_matrix_conv): New functions.
	Install preferred assignment conversion and widening ops.

	* op-s-cm.cc, op-s-cs.cc (complex_matrix_conv): New functions.
	Install preferred assignment conversion and widening ops.

	* op-s-m.cc, op-s-s.cc (matrix_conv): New functions.
	Install preferred assignment conversion and widening ops.

	* ov.cc (octave_value::try_assignment_with_conversion,
	octave_value::convert_and_assign, octave_value::try_assignment): 
	New functions.
	(octave_value::assign): Use them to implement twisted logic for
	type conversions in assigments.

	* pt-const.h (tree_constant::maybe_mutate): New function.
	* ov.h (octave_value::maybe_mutate): New function.
	(octave_value::try_narrowing_conversion): New function.
	Use just one typedef for widening_op_fcn and numeric_conv_fcn.
	Change all uses.
	* ov-base.h, ov-complex.h, ov-complex.cc, ov-cx-mat.h,
	ov-cx-mat.cc, ov-range.h, ov-range.cc, ov-re-mat.h, ov-re-mat.cc,
	Provide derived class versions of try try_narrowing_conversion().

	* pr-output.cc (octave_print_internal): Don't bother handing off
	to scalar/real versions, even when it would seem appropriate.

	* symtab.cc (symbol_def::define (tree_constant *)): Call
	maybe_mutate on constants here.

Mon Oct 14 11:05:24 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-fvc.cc (tree_identifier::eval): If retval is undefined and
	the object to eval is a constant, print	error message.

	* Makefile (distclean): Remove *.oct too.

	* defun-int.h: Include variables.h here.

Sun Oct 13 10:52:28 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* variables.cc (print_symbol_info_line): Never print negative
	diminsions.

	* symtab.h (octave_symbol_record_info): Store const_type as string.
	(octave_symbol_record_info::init): Delete.  Fix constructors.
	(octave_symbol_record_info::type_name): Handle const_type as string.

	* octave.cc (maximum_braindamage): Replace "true" with 1.0 and
	"false" with 0.0 in calls to bind_builtin_variable().
	Include sun-utils.h here.
	(intern_argv): Also bind __argv__.

Sat Oct 12 13:40:21 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (distclean): Also delete mk-oct-links.

Fri Oct 11 13:13:13 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	Changes for Octave's new type system:

	* arith-ops.cc: Delete.
	* pt-const.h, pt-const.cc: Massive changes.  Most functionality
	moved to ov.h, ov.cc, and derived classes.

	* variables.h, variables.cc (octave_variable_reference): New class
	for getting references to variables and structure elements used in
	assignments or value contexts.

	* symtab.h, symtab.cc (symbol_record::define (const octave_value&),
	symbol_record::variable_value, symbol_record::variable_reference):
	New functions.
	(symbol_record_info::type_name): Rename from type_as_string.

	* pt-fvc-base.h, pt-fvc-base.cc (tree_fvc::increment,
	tree_fvc::decrement): New functions to replace
	tree_fvc::bump_value.
	#if 0 assign and lookup_map_element functions.

	* pt-mvr.cc (tree_multi_assignment_expression::eval):
	Generated RHS value is now a tree_constant.

	* pt-exp.h, pt-exp.cc (tree_boolean_expression): New class.
	(tree_unary_expression, tree_binary_expression,
	tree_boolean_expression): Move codes here from tree_expression.
	(tree_simple_assignment_expression): Cope with changes to way of
	doing assignments.

	* pt-exp-base.h, pt-exp-base.cc (enum type): Delete codes for
	unary and binary ops.
	(tree_expression::expression_type): Delete.
	(tree_expression::is_logically_true): Hand off to
	octave_value::is_true to do real work.

	* pr-output.h, pr-output.cc (any_element_is_inf_or_nan,
	all_elements_are_ints): Delete.  Call member new functions for
	these operations.
	(free_format, plus_format, bank_format, hex_format,
	compact_format, print_e, print_big_e): Use bool, not int.
	(octave_print_internal): Hand off to scalar/real versions when
	appropriate.

	* octave.cc (main): Call initialize_types() and install_ops().
	(verbose_usage): Add WWW address to output.

	* parse.y (indirect_ref): Handle by making a tree instead of a
	list using new version of tree_indirect_ref class.

	* parse.y (make_boolean_op): New function.  Use it instead of
	make_binary_op to create trees for && and || ops.
	(make_binary_op): Codes come from tree_binary_expression now,
	instead of tree_expression.
	(make_unary_op): Codes come from tree_unary_expression now,
	instead of tree_expression.
	(make_boolean_op): Codes come from tree_boolean_expression.
	
	 *parse.y (tree_constant_type): Change type to tree_constant* from
	octave_value*, and rename from octave_value_type.  Change uses.

	* defun.h (DEFVAR_INT): Pass octave_value not pointer to
	octave_value for defn when creating builtin_variable.

	* gripes.h, gripes.cc (gripe_invalid_conversion): Args are
	strings, not char*.
	(gripe_implicit_conversion, gripe_divide_by_zero): New extern
	gripe functions.

	* mkbuiltins: For each file, create a separate static function to
	install builtins, then create another single extern function to
	call all of them.

	* pt-fcn.cc (tree_function::bind_nargin_and_nargout):
	Just pass doubles and let symbol_record::define handle creating
	new value.

	* pt-pr-code.cc, pt-pr-code.h (visit_constant): Renamed from
	visit_octave_value.
	(visit_unary_expression): Use tree_expression::is_prefix_op()
	instead of switch on op types.

	* pt-walk.h (visit_constant): Renamed from visit_octave_value.

	* pt-misc.cc (initialize_undefined_elements): Get reference to
	tmp, then assign.
	* pt-cmd.cc (do_for_loop_once): Likewise, for loop identifier.

	* input.cc (generate_struct_completions, looks_like_struct): Cast
	tmp_fvc to tree_constant*, not octave_value*.
	(get_user_input): Call print() on retval, not eval(1).

	* help.cc (Ftype): Cast defn to tree_constant*, not octave_value*.

	* balance.cc: Fix docstring.

	* dassl.cc, fsolve.cc, load-save.cc, lsode.cc, npsol.cc, qpsol.cc,
	quad.cc:
	Include pt-fvc.h.

	* data.cc (Fstruct_contains): call octave_value::struct_elt_val,
	not octave_value::lookup_map_element.

	* dirfns.cc (Fcd): Pass directory name as string directly to
	bind_builtin_variable instead of creating new octave_value.

	* toplev.cc: Include pt-fvc.h and lo-mappers.h

	* data.cc, error.cc, file-io.cc, load-save.cc, pager.cc,
	pt-mat.cc, pt-plot.cc, syscalls.cc, toplev.cc:
	Include variables.h.

	* Array-tc.cc, Map-tc.cc, SLList-misc.cc SLList-tc.cc, data.cc,
	defaults.cc, dynamic-ld.cc, error.cc, gripes.cc, lex.l, octave.cc,
	oct-map.h, oct-map.cc, oct-obj.h, pt-cmd.cc, pt-exp.cc, pt-fcn.cc,
	pt-fvc-base.cc, pt-mat.cc, pt-misc.cc, pt-mvr-base.cc, pt-mvr.h,
	resource.cc, strfns.cc, sysdep.cc, timefns.cc, toplev.cc:
	Include ov.h instead of pt-const.h.

	* xpow.cc (any_element_is_negative): Delete.
	(xpow and elem_xpow functions): Check conformance here.

	* xdiv.cc (mx_leftdiv_conform, mx_div_conform):
	Now template-based, taking Matrices instead of dimensions as args.
	Change all callers.

	* op-cm-cm.cc, op-cm-cm.h, op-cm-cs.cc, op-cm-cs.h, op-cm-m.cc,
 	op-cm-m.h, op-cm-s.cc, op-cm-s.h, op-cs-cm.cc, op-cs-cm.h,
 	op-cs-cs.cc, op-cs-cs.h, op-cs-m.cc, op-cs-m.h, op-cs-s.cc,
 	op-cs-s.h, op-m-cm.cc, op-m-cm.h, op-m-cs.cc, op-m-cs.h, op-m-m.cc,
	op-m-m.h, op-m-s.cc, op-m-s.h, op-s-cm.cc, op-s-cm.h, op-s-cs.cc,
 	op-s-cs.h, op-s-m.cc, op-s-m.h, op-s-s.cc, op-s-s.h,
 	op-str-str.cc, op-str-str.h, ops.cc, ops.h, ov-base.cc, ov-base.h,
 	ov-ch-mat.cc, ov-ch-mat.h, ov-colon.cc, ov-colon.h, ov-complex.cc,
 	ov-complex.h, ov-cx-mat.cc, ov-cx-mat.h, ov-range.cc, ov-range.h,
 	ov-re-mat.cc, ov-re-mat.h, ov-scalar.cc, ov-scalar.h, ov-str-mat.cc,
	ov-str-mat.h, ov-struct.cc, ov-struct.h, ov-typeinfo.cc,
 	ov-typeinfo.h, ov-va-args.cc, ov-va-args.h, ov.cc, ov.h:
 	New files for Octave's new type system.
	* Makefile.in: Add them to the appropriate lists.

Sat Sep 14 21:58:33 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* mkbuiltins: Use .df instead of .def.
	Write one function for each .df file, then call them
	all in install_builtin_functions().
	* Makefile.in: Handle .df instead of .def.

	* balance.cc (balance): Fix typo in doc string.

Wed Aug 28 21:01:49 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* octave.cc (verbose_usage): Include WWW address and bug-octave
	mailing list address.

Tue Aug 20 17:41:19 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in: Only define pattern rules for making .oct files if
	OCTAVE_LITE is true.
	Only add pic/ to $(TI_OBJ) if $(SHARED_LIBS) is true.
	(stamp-picdir): Only create a pic subdirectory if SHARED_LIBS or
	OCTAVE_LITE is true AND CPICFLAG or CXXPICFLAG is not empty.

	* minmax.cc (Fmin, Fmax): Deal with changes to Matrix class
	min/max methods.

Thu Jul 25 01:42:38 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* input.cc (generate_possible_completions): Force the names to be
	unique.

	* load-save.cc (read_mat_binary_data): Expect to read terminating
	NUL character in the variable name.
	(save_mat_binary_data): Likewise, save it here.

Wed Jul 24 05:08:07 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* lsode.cc (Flsode): Don't set the return value if an error
	occurred during integration.
	* dassl.cc (Fdassl): Likewise.

	* file-io.cc (symbols_of_file_io): Redefine values of SEEK_SET,
	SEEK_CUR, and SEEK_END for Matlab compatibility.
	* oct-stream.cc (seek): Check for compatible values of ORIGIN arg.
	Also handle "bof", "cof", and "eof".

Fri Jul 19 15:24:36 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-const.cc: When creating octave_value_reps from ComplexMatrix
	values, check to see if all the elements are actually real.

Tue Jul 16 10:53:42 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* input.cc (decode_prompt_string): Swap meanings of \h and \H.

Mon Jul 15 16:01:51 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* toplev.cc (run_command_and_return_output): Renamed from do_system.
	(Fsystem): Make `system ("emacs")' work as one would expect.

Sun Jul 14 17:34:33 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* file-io.cc (Ffopen, Ffread, Ffwrite): Update doc strings,
	correctly handle default architecture and precision args.

	* load-save.cc (mopt_digit_to_float_format): Rename from
	get_floating_point_format.
	(float_format_to_mopt_digit): New function.

	* oct-stream.cc (octave_base_stream::read, octave_base_stream::write):
	Simplify by calling Matrix::read and Matrix::write to do real work
	of reading, writing, and format conversion.

	* oct-stream.h (octave_base_stream): Move data_type enum to
	liboctave/data-conv.h.  Use float_format from
	liboctave/mach-info.h instead of arch_type enum.

	* sysdep.h, sysdep.cc (octave_words_big_endian, ten_little_endians):
 	Delete.  Now part of oct_mach_info class in liboctave.

Tue Jul  9 11:18:59 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* arith-ops.cc, balance.cc, dassl.cc, data.cc, filter.cc, find.cc,
	fsolve.cc, load-save.cc, log.cc, lsode.cc, minmax.cc, npsol.cc,
	oct-obj.cc, oct-stream.cc, pr-output.cc, pt-cmd.cc, pt-const.cc,
	pt-fvc.cc, pt-plot.cc, quad.cc, rand.cc, sighandlers.cc, sort.cc,
	syscalls.cc, unwind-prot.cc, xdiv.cc, xpow.cc:
	When indexing arrays, use operator() instead of elem() so that
	bounds checking can be done consistently.

Mon Jun 24 02:13:27 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (install-oct): Use INSTALL_PROGRAM, instead of
	INSTALL_DATA for installing shared libraries.

	* lex.l (grab_help_text): Ignore all initial comment characters,
	not just the first.
	* variables.cc (gobble_leading_white_space): Likewise.

Sat Jun 22 22:43:45 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* input.h, input.cc (octave_completion_matches_called): New varaible.
	(Fcompletion_matches): Set it to true on a successful call.
	* toplev.cc (main_loop): If octave_completion_matches_called is
	true, don't increment current_command_number.

Thu Jun 13 03:52:19 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* variables.cc (is_mapper_function_name,
	is_builtin_function_name): New functions.
	(Fdocument): Use them.
	Define as regular function, not a text style function.

Thu Jun  6 00:09:25 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-plot.cc: Handle new built-in variable `gnuplot_has_frames'.

Wed Jun  5 14:45:04 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* input.cc (decode_prompt_string): \h now means the whole host
	name and \H is the host name up to the first `.'.

Thu May 30 23:41:51 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* fn-cache.cc (octave_fcn_file_name_cache::do_list): Always
	recompute the lists of function files instead of trying to cache
	them.

Tue May 28 12:05:24 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* utils.cc (warn_old_style_preference): New function.
	(check_preference): Use it.

	* fn-cache.h: Include <ctime> here.

Fri May 24 00:57:14 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* input.cc (completion_matches): Don't return empty string_vectors.

	* octave.cc (long_opts): Add braindead.

Thu May 23 01:49:33 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* input.cc (gnu_readline): New optional arg, force_readline.
	(get_user_input): Use it.

	* pt-const.cc (OCT_VAL_REP::assign): If converting the rhs to a
	numeric value, convert a copy, not the actual object.
	(OCT_VAL_REP::do_index): Prevent s([]) from resulting in a string
	with zero rows.

	* mappers.cc: Handle toascii here.
	* strfns.cc: Not here.

	* mappers.cc: Handle tolower and toupper here.
	* mappers.h: Rename can_return_complex_for_real to flag and
	overload meaning for ch_mapper.
	* pt-fvc.cc (apply_mapper_fcn): Handle overloaded meaning.

	* syscalls.cc (stat): Return 3 values instead of just 1.
	(lstat): Likewise.

Wed May 22 02:34:20 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-const.cc (OCT_VAL_REP::make_numeric): For string to number
	conversions, correctly set type tag before calling force_numeric.
	(do_binary_op): Force string to number conversion if both args are
	strings and we are doing some sort of comparison operation.

	* Makefile.in (stamp-tinst, stamp-interp): Use SH_TERMLIBS and
	SH_LIBS instead of TERMLIBS and LIBS.

	* pt-const.cc (do_unary_op): Add special case to handle
	transposing strings.

	* pt-mat.cc (Vstring_fill_char): New variable.
	(symbols_of_pt_mat): DEFVAR it.

	* input.cc (generate_struct_completions,
	generate_possible_completions):	Return string_vector, not char **.
	Change all callers.

	* pt-const.cc (lookup_map_element): Use substr() correctly.

Tue May 21 21:37:17 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* oct.h: New file.
	* Makefile.in (INCLUDES): Add it to the list.

	* octave.cc: New args --no-site-file and --no-init-file.  Delete
	--ignore-init-file.  The flag --norc (-f) implies both
	--no-site-file and --no-init-file.

Fri May 17 01:54:51 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* input.cc (Fcompletion_matches): New function.

	* utils.cc (get_fcn_file_names): Delete.
	* help.cc (simple_help): Use new file name cache instead of
	calling get_fcn_file_names.
	* variables.cc (make_name_list): Likewise.

	* fn-cache.h, fn-cache.cc, Map-fnc.cc: New files.
	* Makefile.in: Add them to the lists.

	* Makefile.in (uninstall): Install in octincludedir, not includedir.

	* pt-plot.h: Include <csignal> here.

Thu May 16 10:52:51 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* oct-stream.cc (octave_stream::oscanf, octave_base_stream::oscanf,
 	octave_base_stream::do_oscanf): New functions for backward
	compatibility with older versions of Octave.
	(scanf_format_elt, scanf_format_list): Keep track of width specifier.
	* file-io.cc (Fscanf): New function.
	(Fscanf, Ffscanf, Fsscanf): Handle compatibility arg.

Wed May 15 01:00:12 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* oct-stream.cc (do_scanf): If doing '%c' conversion, unset
	ios::skipws on input stream.

	* sighandlers.h, sighandlers.cc (octave_child, octave_child_list):
	New classes for keeping track of the child processes we create.
	(sigchld_handler): Check in octave_child_list to see if there is
	anything we can do for the child that died.
	* pager.cc: Register child pager process.
	* pt-plot.cc: Likewise, for the plotter.
	* Array-oc.cc: New file
	* Makefile.in (TI_SRC): Add it to the list.

	* pager.cc (do_sync): Don't check error_state.
	(flushing_output_to_pager): New static variable.
	(flush_octave_stdout): Use it to avoid doing anything if already
	flushing output.

	* sighandlers.cc (sigchld_handler): Call warning instead of
	writing directly to cerr.
	(sigpipe_handler): Call warning instead of message.

	* octave.cc (main): Call install_signal_handlers,
	initialize_file_io, initialize_symbol_tables, and install_builtins
	before parsing command line options.

	* user-prefs.h, user-prefs.cc: Delete.

	* utils.cc (check_preference): Move here.
	* user-prefs.cc: From here.

	* defaults.cc: New file.  Move initialization stuff from
	variables.cc.  Move DEFVARS for EDITOR, EXEC_PATH, LOADPATH,
	IMAGEPATH, and OCTAVE_VERSION here.

	* user-prefs.h, user-prefs.cc: Delete all stuff related to
	INFO_FILE and INFO_PROGRAM.
	* help.cc: Move all of that here.
	(symbols_of_help): Add DEFVARS for INFO_FILE and INFO_PROGRAM.

Tue May 14 00:23:06 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pager.cc (do_sync): Be more defensive about sending stuff to the
	external pager.
	* sighandlers.cc (sigchld_handler): For now, only wait for
	octave_pager_pid.  Don't call error().  Do set octave_pager_pid to
	-1 if the pager process no longer exists.

	* user-prefs.h, user-prefs.cc: Delete all stuff related to
	PWD.
	* dirfns.cc: Move all of that here.
	(symbols_of_dirfns): New function.
	* variables.cc (install_builtin_variables): Call it.

	* user-prefs.h, user-prefs.cc: Delete all stuff related to
	default_save_format and save_precision.
	* load-save.cc: Move all of that here.
	(symbols_of_load_save): New function.
	* variables.cc (install_builtin_variables): Call it.

	* user-prefs.h, user-prefs.cc: Delete all stuff related to
	warn_divide_by_zero.
	* arith-ops.cc: Move all of that here.
	(symbols_of_arith_ops): New function.
	* variables.cc (install_builtin_variables): Call it.

	* mappers.cc: Add wrappers for ctype is* functions so that they
	will work on systems that only define them as macros.

Mon May 13 00:27:08 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* user-prefs.h, user-prefs.cc: Delete all stuff related to
	suppress_verbose_help_message.
	* help.cc: Move all of that here.
	(symbols_of_help): New function.
	* variables.cc (install_builtin_variables): Call it.

	* user-prefs.h, user-prefs.cc: Delete all stuff related to
	treat_neg_dim_as_zero.
	* pt-const.cc: Move all of that here.

	* pager.cc (octave_pager_stream::do_sync): Don't return early if
	not interactive.

	* data.h: New file.
	* Makefile.in (INCLUDES): Add it to the list.
	* data.cc (symbols_of_data): New function.  Move definition of I,
	Inf, J, NaN, e, eps, i, inf, j, nan, pi, realmin, and realmax here.
	* variables.cc: From here.
	(install_builtin_variables): Call symbols_of_data.

	* file-io.cc (symbols_of_file_io): New function.  Move definition
	of SEEK_CUR, SEEK_END, SEEK_SET, stdin, stdout, stderr here.
	* variables.cc: From here.
	(install_builtin_variables): Call symbols_of_file_io.

	* user-prefs.h, user-prefs.cc: Delete all stuff related to
	do_fortran_indexing, implicit_str_to_num_ok,
	ok_to_lose_imaginary_part, prefer_column_vectors,
	prefer_zero_one_indexing, print_answer_id_name,
	propagate_empty_matrices, resize_on_range_error, and
	struct_levels_to_print.
	* pt-const.cc: Move all of that here.
	(symbols_of_pt_const): New function.
	* variables.cc (install_builtin_variables): Call it.
	* pt-fvc.cc (tree_identifier::assign): Use Vresize_on_range_error
	instead of user_pref.resize_on_range_error here.
	* load-save.cc (save_mat_binary_data): Use Vimplicit_str_to_num_ok
	instead of user_pref.implicit_str_to_num_ok here.
	* utils.cc (empty_arg): Use Vpropagate_empty_matrices instead of
	user_pref.propagate_empty_matrices here.
	* pt-exp-base.cc (tree_expression::is_logically_true): Likewise..

	* pt-fcn.cc (symbols_of_pt_fcn): Also move DEFVAR for
	default_return_value here.

	* user-prefs.h, user-prefs.cc: Delete all stuff related to
	ps1, ps2, ps4, and completion_append_char.
	* input.cc: Move all of that here.
	(symbols_of_input): New function.
	* variables.cc (install_builtin_variables): Call it.
	* pt-pr-code.cc (indent): Use Vps4 instead of user_pref.ps4 here.
	* help.cc (Ftype): Also here.

	* user-prefs.h, user-prefs.cc: Delete all stuff related to
	automatic_replot, gnuplot_binary, and gnuplot_has_multiplot.
	* pt-plot.cc: Move all of that here.
	(symbols_of_pt_plot): New function.
	* variables.cc (install_builtin_variables): Call it.

	* user-prefs.h, user-prefs.cc: Delete all stuff related to
	beep_on_error.
	* error.cc: Move all of that here.
	(symbols_of_error): New function.
	* variables.cc (install_builtin_variables): Call it.

	* user-prefs.h, user-prefs.cc: Delete all stuff related to
	empty_list_elements_ok.
	* pt-mat.cc: Move all of that here.
	(symbols_of_pt_mat): New function.
	* variables.cc (install_builtin_variables): Call it.

	* user-prefs.h, user-prefs.cc: Delete all stuff related to
	define_all_return_values, return_last_computed_value, and
	silent_functions.
	* pt-fcn.cc: Move all of that here.
	(symbols_of_pt_fcn): New function.
	* variables.cc (install_builtin_variables): Call it.

	* user-prefs.h, user-prefs.cc: Delete all stuff related to
	whitespace_in_literal_matrix.
	* lex.l: Move all of that here.
	(symbols_of_lex): New function.
	* variables.cc (install_builtin_variables): Call it.

	* user-prefs.h, user-prefs.cc: Delete all stuff related to
	warn_assign_as_truth_value, warn_comma_in_global_decl,
	warn_function_name_clash, and warn_missing_semicolon.
	* parse.y: Move all of that here.
	(symbols_of_parse): New function.
	* variables.cc (install_builtin_variables): Call it.

	* user-prefs.h, user-prefs.cc: Delete all stuff related to
	output_precision, output_max_field_width, print_empty_dimensions,
	and split_long_rows.
	* pr-output.cc: Move all of that here.
	(symbols_of_pr_output): New function.
	* variables.cc (install_builtin_variables): Call it.

	* user-prefs.h, user-prefs.cc: Delete all stuff related to
	page_screen_output, page_output_immediately, and pager_binary.
	* pager.cc: Move all of that here.

	* user-prefs.h (check_preference): Provide declaration.
	* user-prefs.cc (check_preference): Make external.

	* toplev.cc (Foctave_config_info): New function.

	* oct-conf.h.in: New file
	* Makefile.in (oct-conf.h): New target.
	Add it to the appropriate lists.

	* sighandlers.cc (sigchld_handler): Don't complain about wait
	returning a negative value.

	* file-io.cc (Fsscanf, Fsprintf): Pass true for second arg of
	octave_stream constructor.

	* oct-stream.h (octave_stream): New field, preserve.
	(octave_stream::~octave_stream): If preserve, don't delete rep.

	* pager.cc (symbols_of_pager): Set default for
	page_output_immediately to 0.

	* toplev.cc (do_system): Correctly handle return_output.
	Append ends to output_buf before calling str().

	* variables.cc: If M_PI and M_E are available, use them.

	* mk-oct-links.in (links_dir): If old link exists, delete it first.

Sun May 12 01:46:07 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (DISTFILES): List defaults.h.in and oct-gperf.h here.
	(INCLUDES): Not here.
	(install-inc): New target.
	(uninstall): Also delete libraries and include files.
	(install-inc): If linkdir is a directory, leave it alone.
	(TERMLIBS, LIBPLPLOT, LIBDLFCN): Don't substitute here (now in
	Makeconf).

	* oct-stream.cc (octave_base_stream::do_read): Provide initial
	value for tmp var.

	* pt-walk.h, pt-pr-code.h, pt-pr-code.cc: New tree-walking classes.
	* Makefile.in: Add them to the appropriate lists.
	* pt-fvc-base.h, pt-exp-base.cc, pt-fvc-base.cc, pt-mvr-base.cc,
	pt-base.cc, pt-mvr.cc, pt-mat.h, pt-mat.cc, pt-fvc.cc,
	pt-const.cc, pt-cmd.cc, pt-const.h, pt-misc.cc, pt-plot.cc,
	pt-fcn.cc, pt-plot.h, pt-mvr.h, pt-mvr-base.h, pt-misc.h,
	pt-fcn.h, pt-exp.h, pt-exp.cc, pt-exp-base.h, pt-fvc.h, pt-cmd.h,
	pt-base.h:
	Replace print_code stuff with accept() functions.
	Add member access functions where necessary.
	* help.cc (Ftype): Update to use new method of walking trees to
	print text representation of user-defined functions.

	* file-io.cc (Ffscanf): Update doc string.
	(Fsscanf): Likewise.

	* oct-stream.cc (octave_base_stream::do_read): Correctly set max_size.
	Pad mval with zeros on final resize.
	(octave_base_stream::do_scanf): Likewise.
	(do_scanf_conv): Correctly resize mval.
	
Sat May 11 05:14:09 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pager.cc (octave_pager_buf::sync): Correctly set bypass_pager.

	* lex.l (<MATRIX>{SNLCMT}*\]{S}*): Match SNLCMT, not just SNL.

Fri May  3 11:05:30 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-const.cc (OCT_VAL_REP::set_index): Complain if type can't be
	indexed.

	* input.cc (get_user_input): Don't increment input line number if
	input is coming from eval string.

	* user-prefs.cc: Allow empty strings for prompts.

Thu May  2 10:50:29 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-mvr.h (class tree_oct_obj): Declare values data member const.

Sun Apr 28 03:16:52 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* user-prefs.h (user_preferences): New field,
	`page_output_immediately'.
	* user-prefs.cc (init_user_prefs): Initialize it.
	(page_output_immediately): New function.
	* pager.cc (syms_of_pager): Add DEFVAR.
	(really_flush_to_pager): New file-scope variable.
	(flush_octave_stdout): Set and restore it.
	(octave_pager_buf::sync): Check it, user_pref.page_screen_output,
	and user_pref.page_output_immediately to decide when to really
	flush output.
	(more_than_a_screenful): New function.  If paging but not
	immediately, then check this too.

	* pager.cc (default_pager): Move here from variables.cc.  If pager
	is less and LESS is not in the environment, append useful flags.
	(symbols_of_pager): New function.
	* variables.cc (install_builtin_variables): Call it.
	Delete pager-related DEFVARs.	

	* syswait.h (WIFSIGNALLED): Define if sys/wait.h doesn't.

	* sighandlers.cc: Handle SIGCHLD.

	* pager.cc, pager.h: Rewrite.
	* pt-mvr.cc, pt-misc.cc, pt-fcn.cc, pt-const.cc, oct-hist.cc,
	file-io.cc, help.cc, variables.cc, qpsol.cc, dassl.cc, quad.cc,
	npsol.cc, lsode.cc, fsolve.cc, load-save.cc, dirfns.cc, octave.cc,
	toplev.cc, error.cc, input.cc:
	Write to octave_stdout and octave_diary instead of calling
	maybe_page_output() or maybe_write_to_diary_file().

	* oct-procbuf.h, oct-procbuf.cc: New files.
	* procstream.h (class procstreambase): Use octave_procbuf instead
	of procbuf from libg++, so we can get pids of subprocesses.

Fri Apr 26 01:21:29 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-const.cc (OCT_VAL_REP::do_index): Call maybe_mutate() before
	returning.

	* mappers.h (struct Mapper_fcn): Delete.
	(struct builtin_mapper_function): New field ch_mapper.
	* pt-fvc.h (tree_builtin): Convert type of mapper_fcn from
	Mapper_fcn to builtin_mapper_function.
	* variables.cc (install_builtin_mapper): Likewise, for arg.
	Simplify, since we don't have to do the copying ourselves now.
	* pt-fvc.cc (apply_mapper_function): Handle ch_mapper case.
	* defun.h (DEFUN_MAPPER): Likewise.
	* mappers.cc (install_builtin_mappers): Likewise.
	Add ctype is* functions here.

Thu Apr 25 00:57:06 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* arith-ops.h, defun-int.h, defun.h, dynamic-ld.h, gripes.h,
	load-save.h, oct-map.h, oct-obj.h, oct-stream.h, pt-cmd.h,
	pt-const.h, pt-exp-base.h, pt-exp.h, pt-fcn.h, pt-fvc-base.h,
	pt-fvc.h, pt-mat.h, pt-misc.h, pt-mvr-base.h, pt-mvr.h, pt-plot.h,
	symtab.h, toplev.h, utils.h, variables.h, xpow.h, Array-tc.cc,
	Map-i.cc, Map-tc.cc, SLList-tc.cc, arith-ops.cc, balance.cc,
	bogus.cc, chol.cc, colloc.cc, dassl.cc, data.cc, det.cc,
	dirfns.cc, eig.cc, error.cc, expm.cc, fft.cc, fft2.cc, file-io.cc,
	filter.cc, find.cc, fsolve.cc, fsqp.cc, givens.cc, gripes.cc,
	help.cc, hess.cc, ifft.cc, ifft2.cc, input.cc, inv.cc,
	load-save.cc, log.cc, lpsolve.cc, lsode.cc, lu.cc, minmax.cc,
	npsol.cc, oct-hist.cc, oct-obj.cc, oct-stream.cc, pager.cc,
	pinv.cc, pr-output.cc, pt-cmd.cc, pt-const.cc, pt-exp-base.cc,
	pt-exp.cc, pt-fcn.cc, pt-fvc-base.cc, pt-fvc.cc, pt-mat.cc,
	pt-misc.cc, pt-mvr-base.cc, pt-mvr.cc, pt-plot.cc, qpsol.cc,
	qr.cc, quad.cc, qzval.cc, rand.cc, resource.cc, schur.cc, sort.cc,
	strfns.cc, svd.cc, syl.cc, symtab.cc, syscalls.cc, sysdep.cc,
	timefns.cc, toplev.cc, utils.cc, variables.cc, xpow.cc, parse.y:
	Rename tree_constant -> octave_value.
	Rename Octave_object -> octave_value_list.

Wed Apr 24 22:15:34 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* toplev.cc (Fsystem): Merge functionality of async_system and
	sync_system.

	* oct-fstrm.h, oct-iostrm.h, oct-prcstrm.h, oct-stdstrm.h,
	oct-stream.h, oct-strstrm.h, oct-fstrm.cc, oct-iostrm.cc,
	oct-prcstrm.cc, oct-stdstrm.cc, oct-stream.cc, oct-strstrm.cc,
	Array-os.cc: New files.
	* Makefile.in: Add them to the appropriate lists.
	* file-io.cc: Rewrite to use new stream classes.

Tue Apr 23 18:59:25 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* gripes.cc (gripe_not_supported): New function.

	* toplev.cc (do_octave_atexit, Fatexit): New functions.
	(octave_atexit_functions): New file-scope variable.
	* octave.cc (main): Register do_octave_atexit with atexit.

	* variables.cc (install_builtin_variables): Call
	symbols_of_syscalls here.

	* syscalls.h, syscalls.cc: New files.

Mon Apr 22 21:14:01 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* syscalls.cc: New file.
	(Flstat, Fmkfifo, Fstat, Funlink, Fwait, Fwaitpid): Move here.
	* file-io.cc: From here.
	* Makefile.in (SOURCES): Add syscalls.cc to the list.

Wed Apr 17 18:34:10 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* file-info.h, file-info.cc: Delete files.
	* Makefile.in: Remove from lists.

	* toplev.cc (Fquit): Accept exit status argument.
	(Fflops): Delete (now a function file).

Thu Apr 11 16:20:20 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* lex.l: Recognize `.'.
	Update current_input_column even for unrecognized characters.
	Return LEXICAL_ERROR for unrecognized characters.

Mon Apr  8 19:59:01 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* variables.cc (install_builtin_variables): Split into several
	functions to make compiling with g++ go faster and consume less
	memory.
	
Sun Apr  7 16:25:35 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* load-save.cc (Fsave): Print usage if i == argc.
	(Fload): Likewise.	

Sat Apr  6 21:26:49 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (clean): Also delete pic/*.o
	(maintainer-clean, distclean): Also remove stamp-picdir,
	stamp-tinst, stamp-interp, and pic directory.
	(stamp-prereq): New target.

Wed Apr  3 11:19:30 1996  Rick Niles  <niles@axp745.gsfc.nasa.gov>

	* resource.cc: Don't make including sys/resource.h and sys/times.h
	mutually exclusive.

Fri Mar 29 13:43:37 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (distclean): Delete so_locations, which is created
	on DEC Alpha systems.

Thu Mar 28 02:53:48 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* utils.h (undo_string_escape): Provide extern declaration here.

	* lex.l (NL): Allow \r\n as new line character.
	(.): Complain if invalid character is found on input

Fri Mar 22 03:47:52 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* resource.cc (getrusage): If getrusage is missing, try using
	times to at least fill in the cpu time values.  If neither one is
	available, return 0 for cpu times instead of NaN.
	
	* sighandlers.cc (octave_signal_mask): New file-scope variable.
	(octave_save_signal_mask, octave_restore_signal_mask): New functions.
	* toplev.cc (main_loop): Use them.

Wed Mar 20 01:21:28 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* utils.cc (get_fcn_file_names (const string&, int)): Resize
	retval to value of k, not i.
	(get_fcn_file_names (int)): In loop for copying names to retval,
	don't increment j twice.

Mon Mar 18 22:27:19 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in ($(MAKEDEPS)): Depend on oct-gperf.h.

Fri Mar  1 18:15:52 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* fsolve.cc (fsolve_options): Delete unused argument nargout.

	* filter.cc: Use MArray instead of Array so that automatic
	conversions will work again.

Tue Feb 27 04:49:51 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* variables.cc (looks_like_octave_copyright): Make the strings
	that we are trying to match both have length 29.

	* Makefile.in (install-bin): Use $(INSTALL_PROGRAM), not $(INSTALL).

	* load-save.cc (read_mat_binary_data): Make sure name is
	NUL terminated.

Mon Feb 26 18:18:45 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* variables.cc (whos): Make argv from tmp_args, not args.

	* defun.h (DEFCONSTX): Don't stringify name.

Sat Feb 24 01:12:59 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (install-oct): Make mk-oct-links executable.
	* mk-oct-links.in (links_dir): Update to match new format of
	DEFUN_DLD_BUILTIN macro.  Use LN_S, not just LN.
	(links_dir): 

	* pr-output.cc (octave_print_internal): New arg, extra_indent, for
	versions of this function that take matrices and ranges.
	* pt-const.cc (TC_REP::print (ostream&)): Fix printing of structures.
	Pass struct_indent to octave_print_internal as appropriate.
	(print_with_name (ostream&, const string&, bool)): Handle spacing
	around `=' differently for structures.

Fri Feb 23 04:51:04 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* token.cc (token (double, const string&, int, int)): Store orig_text.

Tue Feb 20 20:36:01 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* variables.cc (Fclear): Fix off-by-one error.

Sat Feb 17 16:54:02 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* oct-hist.cc (default_history_file): Append "/.octave_hist" to
	return value, not to home_directory.

Fri Feb 16 18:10:46 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* utils.cc: (NINT, D_NINT): Move to liboctave.

	* sysdep.cc (octave_ieee_init): Move to liboctave.

	* procstream.h, procstream.cc: Rewrite.

	* pager.cc (cleanup_oprocstream): New static function.
	* toplev.cc (cleanup_iprocstream): Likewise.
	* dirfns.cc (cleanup_iprocstream): Likewise.

	* unwind-prot.cc (matrix_cleanup, complex_matrix_cleanup): Delete.

Thu Feb 15 22:03:28 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* oct-obj.cc, oct-obj.h: Move most code to the header.

	* oct-obj.cc (make_argv, all_strings): New member functions.
	* utils.cc: Moved from here.

	* load-save.cc: Move byte swapping stuff to liboctave.
	Move float format conversion stuff to liboctave.
	(all_parts_int, too_large_for_float): Move to liboctave.

	* symtab.cc (valid_identifier): Move here.
	* load-save.cc: From here.

	* sysdep.cc: Move floating-point format stuff to liboctave.
	* pr-output.cc: Include float-fmt.h here.

Wed Feb 14 01:49:20 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* defun.h, defun-dld.h, defun-int.h: Simplify interface for DEFUN,
	DEFUN_DLD, DEFVAR, and DEFCONST macros.  Change all uses.

	* qzval.cc: Move guts to liboctave.

Tue Feb 13 10:28:27 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* variables.cc (parse_fcn_file): Also avoid saving history if
	input is from a script file.

	* help.cc (Ftype): Call unwind_protect_str for user_pref.ps4.

	* npsol.cc (nonlinear_constraints_ok): Now static.

	* npsol.cc (linear_constraints_ok): Now static.
	* qpsol.cc (linear_constraints_ok): Duplicate here.

	* data.cc (Flinspace): Don't print usage message if nargin == 2.

Sun Feb 11 14:20:32 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* mk-oct-links.in: Rename from mk-oct-links.
	(LN_S): Use this variable instead of ln.
	Set -e option for shell.
	Exit with status of last command.
	Print message when making link.
	* Makefile.in (DISTFILES): Add mk-oct-links.in to the list.
	(install-oct): Run ./mk-oct-links, not $(srcdir)/mk-oct-links.

	* variables.cc (install_builtin_variables): Restore accidentally
	deleted DEFVAR for save_precision.

Fri Feb  9 11:24:32 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (INCLUDES): Delete statdefs.h from the list (it's
	now in the liboctave directory).

	* toplev.cc (toplevel): Define here.
	* octave.cc (toplevel): Not here.

	* toplev.cc (main_loop): New function.
	* octave.cc (main): Call it here instead of doing main loop
	actions here.

	* user-prefs.cc (do_fortran_indexing): Also set liboctave_dfi_flag.
	(prefer_column_vectors): Also set liboctave_pcv_flag.
	(prefer_zero_one_indexing): Also set liboctave_pzo_flag.
	(resize_on_range_error): Also set liboctave_rre_flag.

	* variables.cc (restore_command_history): New function.
	(parse_fcn_file): Use it here in unwind_protect.

	* dynamic-ld.cc (load_octave_oct_file): Reverse sense of test.
	(load_octave_builtin): Delete.
	(mangle_octave_oct_file_name): Delete.

	* pt-fvc.cc (tree_builtin::eval): Don't try to dynamically load
	functions here.

	* pr-output.cc (set_format_style): Decrement argc for first arg too.
	
	* input.cc (gnu_readline): If readline returns an empty string,
	convert it to a string containing a single newline character.

	* octave.cc (octave_argv): Now a static string_vector.
	(intern_argv): Use string_vector ops, not charMatrix ops.
	* toplev.cc (octave_argv): Delete definition.
	* toplev.h (octave_argv): Delete declaration.

Thu Feb  8 10:58:24 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (conf-dist): New target.

Tue Feb  6 10:59:45 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* help.cc (Ftype): Correctly handle structure names.

Sun Feb  4 02:02:20 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* qpsol.cc (Fqpsol): Call set_options(), not copy() to set
	options for QPSOL objects.

	* npsol.cc (Fnpsol): Call set_options(), not copy() to set
	options for NPSOL objects.

	* quad.cc (Fquad): Call set_options(), not copy() to set
	options for Quad objects.

	* dynamic-ld.cc (load_octave_builtin): Don't call destructor on string.
	(load_octave_oct_file): Likewise.
	Check oct_file.empty(), not just oct_file.

	* fsolve.cc (Ffsolve): Call set_options(), not copy() to set
	options for NLEqn object.

	* variables.cc (do_who): Properly set match patterns from argument
	vector for call to maybe_list.

Sat Feb  3 03:29:33 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* octave.cc (long_opts): Properly set second field using new enum.

	* lsode.cc: Change ODE to LSODE where appropriate.
	Use LSODE_options, not ODE_options.

	* dassl.cc: Change DAE to DASSL where appropriate.
	Use DASSL_options, not ODE_options.

Fri Feb  2 01:41:37 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* dirfns.cc: Include unistd.h.

	* parse.y, lex.l: Handle matrix lists without ml or mlnm stacks.
	* pt-mat.h, pt-mat.cc (tree_matrix):
	Rewrite to use SLList instead of home brew list.
	* SLList-tm.cc: New file
	* Makefile.in: Add it to the lists.
	* SLStack-tm.cc: Delete.
	* Makefile.in: Delete it from the lists.

	* All pt-* files: Use bool instead of int where appropriate.

	* Makefile.in (DEP_SOURCES_3): Add octave.cc.

	* pt-const.h (class tree_constant::tree_constant_rep): Make
	everything in this class public, then it doesn't need to declare
	the tree_constant class as a friend.

Thu Feb  1 01:42:45 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* lex.h, lex.l, parse.h, parse.y (class lexical_feedback): New
	class for lexer flags.  Replace lots of global vars with members
	of this class.

	* lex.l (class brace_paren_nesting_level): New class to replace
	nesting_level stack.  nesting_level is now an instance of this
	class.

	* lex.l (yum_yum): New typedef.
	(ATE_NOTHING): New global var.
	(ATE_SPACE_OR_TAB, ATE_NEWLINE): Don't #define these, declare them
	as const yum_yum.
	(eat_whitespace, eat_continuation): Return yum_yum, not int.

	* lex.l (SHORT_CIRCUIT_LOGICALS): Delete.  Always do this for ||
	and && tokens.
	(yy_flex_alloc, yy_flex_realloc, yy_flex_free, next_char_is_space):
	Delete.

	* toplev.cc (verbose_flag): Delete definition.
	* toplev.h (verbose_flag): And declaration.
	* octave.cc (verbose_flag): Now static.

	* lex.l (lookup_identifier): Arg is now string, not char*.
	(handle_identifier, is_plot_keyword, is_keyword): Likewise.
	(strip_trailing_whitespace): Return value is now string, not char*.
	(plot_style_token): Likewise, for both arg and return value.

	* input.cc (octave_gets_line): Delete.
	(gnu_readline, octave_gets, octave_read):
	Properly handle input when using_readline is either true or false.
	Don't limit length of input lines to flex buffer size.
	(get_user_input): New function.

	* octave.cc (main): Handle --no-line-editing.
	* toplev.h (using_readline): Provide external declaration here.
	* input.h: Not here.
	* toplev.cc (using_readline): Define here.
	* input.cc: Not here.

	* toplev.h (no_line_editing): Delete declaration.
	* input.cc (no_line_editing): Delete definition.

Wed Jan 31 05:28:45 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* input.cc (DEFAULT_ARRAY_SIZE, PROMPT_GROWTH): Delete definitions
	of unused macros.
	(read_octal): Now static.

	* givens.cc (Fgivens): Use new functions from matrix classes
	instead of calling Fortran functions directly.
	* syl.cc (Fsyl): Likewise.
	* expm.cc (Fexpm): Likewise.

Mon Jan 29 00:00:48 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* octave.cc: Use new prog_args class instead of calling getopt
	directly.

	* getopt.h, getopt.c, getopt1.c: Move to liboctave directory.
	* Makefile: Remove from lists.

	* utils.cc (strconcat, read_until, discard_until): Delete.

	* pager.cc (terminal_columns, terminal_rows): Move to
	liboctave/oct-term.cc.
	* pager.cc, pr-output.cc: Include oct-term.h.

	* utils.cc (list_in_columns): Moved to liboctave/str-vec.cc.
	Change all callers to use new member function syntax.

	* dirfns.cc (absolute_program): Now static.
	(absolute_pathname): Delete.

	* pt-plot.cc (save_in_tmp_file): Call oct_tempnam, not
	octave_tmp_file_name.  Include file-ops.h.	
	* file-io.cc (do_scanf, Foctave_tmp_file_name): Likewise.
	* oct-hist.cc (mk_tmp_hist_file): Likewise.

	* file-io.cc (Foctave_tmp_file_name): Move here.
	* utils.cc: From here.

	* utils.cc (octave_tmp_file_name): Move to liboctave/file-ops.cc.

	* tempname.c, tempnam.c: Move to liboctave directory.
	* Makefile.in: Remove from lists.

Sun Jan 28 19:00:52 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* xdiv.cc (all xdiv functions): Return Matrix or ComplexMatrix,
	not tree_constant.

	* oct-hist.h, oct-hist.cc, toplev.cc, octave.cc, input.cc,
	file-io.cc, user-prefs.cc: Rewrite to use new command_history
	class instead of calling readline history functions directly.

	* utils.cc (get_fcn_file_names): Delete num arg.

Thu Jan 25 20:33:54 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* load-save.cc (matches_patterns): Use new glob_match class
	instead of calling fnmatch directly.
	* symtab.cc (matches_patterns, symbol_table::glob): Likewise.
	* variables.cc (Fclear): Likewise.

Wed Jan 24 02:05:22 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* fnmatch.h fnmatch.c: Delete.
	* Makefile.in: Add glob stuff in the appropriate places, remove
	fnmatch.h and fnmatch.c from lists.

	* octave.cc (program_invocation_name, program_invocation_short_name):
	Maybe declare.
	(initialize_globals): Maybe initialize them.

	* octave.cc (initialize_pathsearch): Define here, not in pathsearch.cc.
	* pathsearch.h, pathsearch.cc: Remove files.
	* Makefile.in: Remove them from the lists.
	
	* help.cc (simple_help): Ignore directories that don't have any .m
	or .oct files.

	* utils.cc (search_path_for_file): Use new dir_path class instead
	of calling kpathsea routines directly.
	(get_fcn_file_names): Likewise.
	* help.cc (simple_help): Likewise.

	* dirfns.cc (make_absolute): Don't convert empty arg to "./".

	* sysdir.h: Move to liboctave directory.
	* Makefile.in: Remove from lists.

	* dirfns.cc (Freaddir): Use new dir_entry class instead of calling
	readdir directly.  Include dir-ops.h, not sysdir.h.
	* utils.cc (get_fcn_file_names): Likewise.  Delete unnecessary
	first arg, change all callers.

Tue Jan 23 00:43:12 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* safe-xstat.hin, safe-xstat.cin, statdefs.h, file-ops.h,
	file-ops.cc, filemode.c, mkdir.c, rmdir.c, rename.c:
	Files moved to liboctave directory.
	* Makefile.in: Remove them from lists.  Move appropriate rules.

	* acosh.c, asinh.c, atanh.c, erf.c, erfc.c, gamma.c, lgamma.c:
	Files moved to liboctave directory.
	* Makefile.in: Remove them from lists.
	* missing-math.h: Deleted.
	* pr-output.cc, sysdep.cc, minmax.cc, mappers.cc, expm.cc,
	arith-ops.cc: Include oct-math.h, not cmath or missing-math.h.

Mon Jan 22 19:33:05 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* variables.cc (Fexist): Use file_stat instead of calling stat
	directly.  Include file-ops.h, not statdefs.h.
	* octave.cc (execute_startup_files): Likewise.
	* file-io.cc (file_io_get_file, fopen_internal, popen_internal, Fstat):
	Likewise.
	(mk_stat_map): Likewise, use file_stat object, not struct stat.
	* oct-hist.cc (do_history): Likewise.

	* file-ops.h, file-stat.cc: New files.
	* Makefile.in: Include them.
	* dirfns.cc: Delete is_newer.  Don't include statdefs.h.
	* toplev.cc: Don't include statdefs.h.

Sun Jan 21 22:48:03 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-mvr.h, pt-fvc.h, Map.cc, Map.h, dynamic-ld.h,
	pt-fvc-base.cc, SLList-str.cc, pt-fcn.h, pt-fvc-base.h,
	SLStack-str.cc, pt-mvr.cc, pt-exp.cc, token.h, token.cc,
	user-prefs.h, pt-base.cc, user-prefs.cc, dirfns.h, sysdep.h,
	sysdep.cc, input.h, parse.h, lex.l, parse.y, defun.h, mappers.h,
	pt-fvc.cc, pt-plot.h, load-save.h, octave.cc, defun-int.h, help.h,
	variables.h, oct-map.h, oct-obj.h, oct-obj.cc, pt-const.cc,
	oct-map.cc, input.cc, symtab.h, pt-const.h, pathsearch.cc,
	pr-output.h, pr-output.cc, toplev.h, timefns.cc, schur.cc,
	pt-plot.cc, pager.cc, load-save.cc, dynamic-ld.cc, dirfns.cc,
	data.cc, file-info.h, file-info.cc, colloc.cc, utils.h, qpsol.cc,
	quad.cc, npsol.cc, lsode.cc, fsolve.cc, dassl.cc, file-io.cc,
	help.cc, utils.cc, oct-hist.h, oct-hist.cc, symtab.cc, toplev.cc,
	pt-fcn.cc, unwind-prot.h, unwind-prot.cc, variables.cc:
	Most functions in these files that deal with character strings
	have been converted to use the string class insatead of char*.  If
	you want more detailed information, you'll have to figure it out
	for yourself.

Sat Jan 20 18:19:12 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* dynamic-ld.cc [WITH_DL]: Define RTLD_LAZY to be 1 if it is not
	already defined.

Sun Jan 14 07:48:05 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-const.cc (print_as_scalar, print_as_structure):
	Make these member functions.
	(tree_constant::print_with_name): New function, moved here from
	old tree-expr.cc file (where it was called print_constant) and
	converted to member function.  Change all callers.

Fri Jan 12 01:54:49 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* octave.cc (initialize_globals): Don't do kpathsearch stuff here.
	(main): Call initialize_pathsearch() here.
	
	* pathsearch.cc: New file.
	* Makefile.in (SOURCES): Add it to the list

	* oct-hist.h: Rename from octave-hist.h.
	* oct-hist.cc: Rename from octave-hist.cc.
	* Makefile.in, parse.y, other .cc files: Cope with it.

	* dynamic-ld.cc: Avoid warnings if !WITH_DYNAMIC_LINKING.

	* load-save.cc (save_ascii_data): string::data() returns const char*.

	* utils.h: Don't provide forward declaration for tree_constant.

	* oct-obj.h: Don't include mx-base.h or provide forward
	declarations for Matrix and Range types.

	* file-info.h: Don't include oct-obj.h.  Do include cstdio.

	* symtab.h: Don't provide forward declaration for ostream.

	* variables.h: Don't provide forward declarations for istream,
	ostrstream, tree, builtin_function, or builtin_variable objects.

	* balance.cc, chol.cc, colloc.cc, dassl.cc, det.cc, eig.cc,
	expm.cc, fft.cc, fft2.cc, filter.cc, find.cc, fsolve.cc, fsqp.cc,
	givens.cc, hess.cc, ifft.cc, ifft2.cc, inv.cc, log.cc, lpsolve.cc,
	lsode.cc, lu.cc, minmax.cc, npsol.cc, pinv.cc, qpsol.cc, qr.cc,
	quad.cc, qzval.cc, rand.cc, schur.cc, sort.cc, svd.cc, syl.cc:
	Clean up #include statements.

	* pt-const.h: Don't include oct-obj.h or tree-base.h.
	Provide forward declaration of Octave_object here.
	* pt-const.cc: Include oct-obj.h here.

	* pt-mat.h, pt-fcn.h, pt-const.h, pt-misc.h, pt-plot.h,
	pt-exp-base.h, pt-cmd.h, pt-fvc-base.h, pt-mvr-base.h, pt-exp.h,
	pt-mvr.h, pt-fvc.h: New files, split from tree-expr.h and/or
	renamed from other tree-*.h files (pt == parse tree).
	* pt-base.cc, pt-const.cc, pt-exp.cc, pt-fvc-base.cc, pt-mat.cc,
	pt-mvr-base.cc, pt-plot.cc, pt-cmd.cc, pt-exp-base.cc, pt-fcn.cc,
	pt-fvc.cc, pt-misc.cc, pt-mvr.cc: Likewse, split from tree-expr.cc
	and/or other tree-*.cc files.
	* Makefile.in: Include them in the appropriate lists.
	* All: Fix #include statements to match.

	* Array-tc.cc: Don't instantiate ArrayRep objects.

Thu Jan 11 02:35:19 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* tree-const.cc (tree_constant::eval (int, int, const Octave_object&)):
	Define here instead of in tree-const.h.

Wed Jan 10 04:34:20 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* tree-const.h (tree_constant::tree_constant (const string&):
	* tree-const.cc (TC_REP::tree_constant_rep (const string&)):
	New constructor.

Tue Jan  9 04:10:29 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* rand.cc (do_rand): Use string_value() result directly instead of
	c_str() conversion.
	* balance.cc (Fbalance): Likewise.

	* tree-const.cc (TC_REP::string_value()):
	Handle new definition of charMatrix::row_as_string()
	* load-save.cc (save_ascii_data): Ditto.
	(save_binary_data): Ditto.
	* pr-output.cc (octave_print_internal): Ditto.

	* balance.cc (Fbalance):
	Handle new definition of TC_REP::string_value()
	* colloc.cc (Fcolloc): Ditto.
	* dassl.cc (Fdassl_options): Ditto.
	* data.cc (Fstruct_contains): Ditto.
	* dirfns.cc (Fmkdir): Ditto.
	(Freaddir): Ditto.
	(Frmdir): Ditto.
	(Frename): Ditto.
	* error.cc (handle_message): Ditto.
	* file-io.cc (process_printf_format): Ditto.
	(fopen_internal): Ditto.
	(file_io_get_file): Ditto.
	(return_valid_file): Ditto.
	(Flstat): Ditto.
	(Fstat): Ditto.
	(unlink_internal): Ditto.
	(mkfifo_internal): Ditto.
	(async_system_internal): Ditto.
	(sync_system_internal): Ditto.
	(execute_internal): Ditto.
	(popen_internal): Ditto.
	(fwrite_internal): Ditto.
	(fread_internal): Ditto.
	(do_printf): Ditto.
	(do_scanf): Ditto.
	* input.cc (get_user_input): Ditto.
	* lsode.cc (Flsode_options): Ditto.
	* npsol.cc (Fnpsol_options):Ditto.
	* qpsol.cc (Fqpsol_options):Ditto.
	* quad.cc (Fquad_options): Ditto.
	* rand.cc (do_rand): Ditto.
	* schur.cc (Fschur): Ditto.
	* sysdep.cc (Fputenv): Ditto.
	(Fgetenv): Ditto.
	* timefns.cc (extract_tm): Ditto.
	(Fstrftime): Ditto.
	* toplev.cc (Fsource): Ditto.
	(eval_string): Ditto.
	(Fsystem): Ditto.
	* tree-plot.cc (subplot::handle_plot_data): Ditto.
	* variables.cc (is_valid_function): Ditto.
	(Fis_global): Ditto.
	(Fexist): Ditto.
	(builtin_string_variable): Ditto.
	* utils.cc (make_argv): Ditto.
	(Fundo_string_escapes): Ditto.

Mon Jan  8 01:54:50 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (install-bin): Use $(LN_S), not just ln.

	* variables.cc (octave_fcn_file_dir): New function.
	* tree-expr.cc (mark_as_system_fcn_file): Use it instead of
	octave_lib_dir.

	* Makefile.in (clean): If $(SHARED_LIBS), also remove shared libs.

	* pr-output.cc (set_format (const ComplexMatrix&, int&, int&)):
	Unconditionally call all_elements_are_int_or_inf_or_nan().
	(set_format (const Matrix&, int&, int&)): Likewise.

Sun Jan  7 19:12:39 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* utils.cc (oct_putenv): New function.
	* sysdep.cc (Fputenv): Use oct_putenv.
	* octave.cc (initialize_globals): Likewise.

Sat Jan  6 23:22:37 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* sysdep.cc (Fputenv): New function.

	* input.cc (initialize_readline): Call rl_initialize() here.

	* octave.cc: Conditionally define atexit to be on_exit here.
	* toplev.cc: Not here.

Fri Jan  5 14:01:02 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* toplev.cc: Don't include <pwd.h> here.

	* octave-hist.cc, tree-plot.cc, utils.cc: Do include "sysdep.h".

	* dirfns.cc, file-io.cc, help.cc, load-save.cc, octave.cc,
	octave-hist.cc, tree-plot.cc, utils.cc:
	Don't include <readline/tilde.h>.
	* sysdep.h: Do include it here.

	* tree-const.cc (TC_REP::assign (tree_constant&, Octave_object&)):
 	If we have a matrix or range, call maybe_mutate before returning.

Sun Dec 31 15:56:18 1995  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* npsol.cc (Fnpsol): Improve doc string.
	* qpsol.cc (Fqpsol): Likewise.

Fri Dec 29 21:46:58 1995  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* defun-dld.h: Make work again for OCTAVE_LITE and
	WITH_DYNAMIC_LINKING.

	* Makefile.in: Handle shared libraries.

Wed Dec 27 17:47:51 1995  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* mk-oct-links: New file.
	* Makefile.in (install-oct): Use it.
	* f-*.cc: Rename to *.cc.

	* Makefile.in (install-bin, install-lib, install-oct): New targets.
	(install): Use them.

Tue Dec 26 21:38:22 1995  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* toplev.cc (reading_startup_message_printed): Move initialization
	here and make extern.

	* dirfns.cc, dynamic-ld.cc, help.cc, input.cc, octave-hist.cc,
	octave.cc, sighandlers.cc, sysdep.cc, tree-expr.cc, tree-misc.cc,
	utils.cc, variables.cc, parse.y, lex.l: Include toplev.h instead
	of octave.h.
	* toplev.h: rename from octave.h.

	* octave.cc (main): Delete unused variable saved_sigint_handler.

Sun Dec 24 00:26:54 1995  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* dynamic-ld.cc: Massive re-write to handle dlopen/dlsym and
	shl_load/shl_findsym methods of dynamic linking.

	* utils.cc (get_fcn_file_names): Check for .oct files if
	WITH_DYNAMIC_LINKING, not WITH_DLD.

	* Makefile.in (LIB, TERMLIBS): Substitute values.
	(octave): Add $(LIBS) to link command and use $(TERMLIBS) instead
	of -ltermcap.

Sat Dec 23 21:56:12 1995  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* dynamic-ld.h, dynamic-ld.cc: Remove old unused code.

	* variables.cc (load_fcn_from_file):
	Always call load_octave_oct_file.

Wed Dec 20 00:56:57 1995  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pr-output.cc (set_real_format, set_real_matrix_format,
	set_complex_format, set_complex_matrix_format, set_range_format):
	New functions.  Ensure the count of the digits to the right of the
	decimal point is positive.

	* xpow.cc (xpow (const Matrix&, double)): Print warning if
	inverting singular matrix (but return value anyway, in the name of
	compatibility).
	xpow (const ComplexMatrix&, double)): Likewise.

	* f-inv.cc (Finv): If matrix is singular, return result anyway, in
	the name of compatibility.

	* symtab.cc (symbol_record::pop_context):
	Don't assert (! context.empty ()).

	* tree-const.cc (TC_REP::char_matrix_value): Don't complain about
	type conversion if object is an empty matrix.f
	(TC_REP::assign): If rhs is a string, don't convert to numeric
	type if rhs is empty or "".
	Only widen if rhs is not empty.
	Don't return 0x0 char_matrix if it is supposed to be a string.
	
	* arith-ops.h, mappers.h, pr-output.h, xdiv.h, xpow.h: Include
	oct-cmplx.h in place of forward declaration for class Complex.

	* pr-output.cc, mappers.cc, arith-ops.cc, xdiv.cc, xpow.cc,
	utils.cc: Include "oct-cmplx.h" instead of <Complex.h>.

	* octave.cc (initialize_error_handlers): Don't call
	set_Complex_error_handler().
	(octave_Complex_error_handler): Delete unused function.
	Delete declaration for set_Complex_error_handler().

	* sighandlers.cc (catch_interrupts): New function.
	* octave.cc (main): Call catch_interrupts() instead of calling
	octave_set_signal_handler() directly.

Tue Dec 19 03:22:37 1995  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* variables.cc (looks_like_octave_copyright): Also recognize the
	string " This program is free software".

Thu Dec 14 01:54:06 1995  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* octave-hist.cc (clean_up_history): Only write history file if
	user_pref.saving_history.

	* octave-hist.cc (initialize_history, clean_up_history,
	do_history): Perform tilde expansion on history file name.

	* octave.cc (main): Check `defined (HAVE_ON_EXIT)' not just
	`(HAVE_ON_EXIT)'.

	* user-prefs.h (user_preferences): New fields, `history_file' and
	`history_size'.
	* user-prefs.cc (init_user_prefs): Initialize them.
	(sv_history_file, history_size): New functions.
	* variables.cc (install_builtin_variables): Initialize user-level
	variables history_file and history_size.
	* octave-hist.cc (default_history_size): Now extern.
	(default_history_file): Likewise.
	(octave_hist_size, octave_hist_file): Use user preference
	variables instead.
	* octave.cc (main): Call initialize_history after
	execute_startup_files.

Fri Dec  8 15:53:59 1995  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* user-prefs.h (user_preferences): New field, `saving_history'.
	* user-prefs.cc (init_user_prefs): Initialize it.
	(saving_history): New function.
	* variables.cc (install_builtin_variables): Initialize user-level
	variable saving_history.
	* octave.cc (parse_and_execute): Don't reset value of
	saving_history here.
	(main) Use user_pref.saving_history instead of saving_history.
	* variables.cc (parse_fcn_file): Likewise.
	* octave-hist.cc (maybe_save_history): Likewise.
	Don't save history if input_from_startup_file.

Mon Nov 27 23:05:52 1995  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* resource.cc: Include systime.h before <sys/resource.h>.

Tue Nov 14 14:09:40 1995  John Eaton  <jwe@bevo.che.wisc.edu>

	* error.cc: Include cstring.

	* tree-expr.cc (print_code): Decrement indent level after printing
	function body.

	* Makefile.in: Remove references to oct-str.cc, oct-str.h, and
	Array-string.cc.

	* tree-const.h: Don't include oct-str.h.

Mon Nov  6 11:16:49 1995  John Eaton  <jwe@bevo.che.wisc.edu>

	* parse.y (make_plot_command, finish_colon_expression,
	make_unwind_protect, make_try_command, make_for_command,
	make_break_command, make_continue_command, make_return_command,
	start_if_command, finish_if_command, make_elseif_clause,
	make_simple_assignment, make_multi_val_ret, start_function_def,
	frob_function_def, finish_function_def, start_matrix,
	finish_matrix):  New functions.  Use them in the grammar to clean
	things up a bit.  Possibly convert matrix lists, colon
	expressions, binary expressions, and unary expressions to constant
	values.
	(tree_matrix_type): Delete.
	(simple_expr1): Handle all expression stuff here, including
	assignments.
	(simple_expr): Just check to see that simple_expr1 produced
	something useful.

	* tree-plot.cc, tree-plot.h: Move most simple constructors to the
	header file.

	* tree-expr.h (tree_expression::is_constant): Move virtual
	function definition here.
	(tree_fvc::is_constant): From here.
	(tree_expression::is_matrix_constant): New virtual function.
	(tree_expression::is_range_constant): New virtual function.
	* tree-expr.cc (tree_matrix::is_matrix_constant): New function.
	* tree-expr.cc (tree_colon_expression::is_range_constant): New
	function.

Fri Nov  3 03:42:04 1995  John Eaton  <jwe@bevo.che.wisc.edu>

	* utils.cc, utils.h (jump_to_top_level): Declare as extern "C".

	* tree-const.h (tree_constant::eval ()): Only mutate if printing.

	* tree-const.cc (TC_REP::tree_constant_rep (const Complex&),
	TC_REP::tree_constant_rep (const ComplexMatrix&),
	TC_REP::tree_constant_rep (const ComplexDiagMatrix&),
	TC_REP::tree_constant_rep (const ComplexRowVector&),
	TC_REP::tree_constant_rep (const ComplexColumnVector&)):
	Also check to see if we can convert to scalar_constant, not just
	complex_scalar_constant.

	* user-prefs.h (user_preferences): New field, `exec_path'.
	* user-prefs.cc (init_user_prefs): Initialize it.
	(sv_exec_path): New function.
	* variables.cc (install_builtin_variables): Add DEFUN for EXEC_PATH.
	(default_exec_path): New function.
	* octave.cc (exec_path): New global variable.
	Don't set and putenv() exec path here.
	(long_opts): Add --exec-path option.
	(main): Handle it.
	(initialize_globals): Set default value here.

	* user-prefs.h (user_preferences): New field, `info_prog'.
	* user-prefs.cc (init_user_prefs): Initialize it.
	(sv_info_prog): New function.
	* variables.cc (install_builtin_variables): Add DEFUN for INFO_PROGRAM.
	(default_info_prog): New function.
	* octave.cc (info_prog): New global variable.
	(initialize_globals): Set default value here.
	(long_opts): Add --info-prog option.
	(main): Handle it.
	* help.cc (try_info): Use user_pref.info_prog here.

	* octave.cc (initialize_globals): Put arch_dir and bin_dir ahead
	of shell_path when resetting PATH.

Thu Nov  2 04:30:13 1995  John Eaton  <jwe@bevo.che.wisc.edu>

	* f-rand.cc (Frandn): New function.
	(do_initialization): New function.
	(do_rand): New function for doing the real work.
	(Frand): Use it.

	* octave.cc (parse_and_execute): New arg, warn_for.  If given,
	print message if file cannot be opened.
	Set curr_fcn_file_full_name here. 
	(Fsource): Pass extra arg to parse_and_execute to get warning message.

	* tree-const.h: Handle line and column info for double, Complex,
	and char* constants.

	* parse.y (maybe_convert_to_ans_assign): Pass along line and
	column info from expression.

	* parse.y (make_constant): New function.
	(simple_expr1, word_list): Use it.
	
	* input.cc, input.h (curr_fcn_file_full_name): New global.
	* variables.cc (load_fcn_from_file): Set it here.
	* parse.y (func_def2, yyerror, maybe_warn_missing_semi): Use it.
	(func_def2): If !reading_fcn_file, don't call strcmp if
	curr_fcn_file_name is 0.

	* octave.cc (Fsource): New function.
	(parse_and_execute): Declare file name const char *.
	* input.cc (get_input_from_file): Likewise.

Wed Nov  1 13:54:34 1995  John Eaton  <jwe@bevo.che.wisc.edu>

	* f-filter.cc: New file.
	* Makefile.in (DLD_SRC): Add it to the list.

	* sysdep.h (gethostname): Change declaration to match definition
	in sysdep.cc.

	* resource.cc: Include sysdep.h here, for octave_NaN.

Tue Oct 31 02:12:18 1995  John Eaton  <jwe@bevo.che.wisc.edu>

	* tree-const.cc (TC_REP::assign): After converting rhs to a
	numeric type, use the converted value, not the original.

	* dirfns.cc (Fpwd): If nargout == 0, print the directory name
	instead of returning it.

	* pager.cc (maybe_page_output): Call maybe_write_to_diary_file here.
	(flush_output_to_pager): Not here.

Mon Oct 30 23:39:43 1995  John Eaton  <jwe@bevo.che.wisc.edu>

	* variables.cc (install_builtin_commands): Add DEFVAR for
	echo_executing_commands.

	* octave-hist.cc (do_edit_history): Handle new echo stuff.
	* variables.cc (parse_fcn_file): Likewise.
	* octave.cc (parse_and_execute): Likewise.
	(main): Likewise.
	* input.cc (do_input_echo):
	(Fecho): New function.
	
	* tree-expr.cc (tree_function::print_code_function_header,
	tree_function::print_code_function_trailer): New functions.
	(tree_function::print_code): Use them.
	(tree_function::eval): Likewise, if echoing commands.
	* tree-misc.cc (tree_statement::maybe_echo_code): New function.

	* user-prefs.h (user_preferences): New field, echo_executing_commands.
	(echo_state): New enum, for various types of echoing we do.
	* user-prefs.cc (echo_executing_commands): New function.

	* tree-base.cc (print_code_indent): Print PS4 as line prefix.
	* help.cc (Ftype): Add unwind_protect for ps4 and set it to ""
	before printing code.

	* tree-misc.h (tree_statement_list): New field, function_body.
	(tree_statement_list::mark_as_function_body): New function.
	* parse.y (func_def3): Mark function bodies.

	* pr-output.cc (octave_print_internal): Undo string escapes when
	printing charMatrix as strings.

Sat Oct 28 17:38:29 1995  John Eaton  <jwe@bevo.che.wisc.edu>

	* utils.h (undo_string_escapes): Add missing const in declaration.

Fri Oct 27 03:49:44 1995  John Eaton  <jwe@bevo.che.wisc.edu>

	* file-io.cc (next_available_file_number): New stack for keeping
	track of next available file number.
	(get_next_avail_file_num): New function.
	(fopen_file_for_user, fopen_internal, popen_internal,
	execute_internal): Use it.

Mon Oct 23 07:00:09 1995  John Eaton  <jwe@bevo.che.wisc.edu>

	* tree-const.cc (TC_REP::convert_to_matrix_type,
	tree_constant::convert_to_matrix_type): New arg, make_complex.
	(TC_REP::set_index): New arg, rhs_is_complex.  Pass it to
	convert_to_matrix_type.
	(TC_REP::assign): Pass rhs.is_complex_type() to set_index.

Thu Oct 19 00:38:38 1995  John Eaton  <jwe@bevo.che.wisc.edu>

	* xpow.cc: Include <climits>.

	* sysdep.cc (Fpause): Do pause even if not interactive.

	* tree-const.cc (TC_REP::assign): Don't make RHS numeric if both
	RHS and LHS are strings.

Wed Oct 18 22:19:16 1995  John Eaton  <jwe@bevo.che.wisc.edu>

	* f-expm.cc (Fexpm): Avoid taking log of negative number.  Also,
	don't unnecessarily divide the input matrix by 1.0.

	* input.cc (decode_prompt_string): Recognize \[ and \] too.
	(initialize_readline): Bind M-p to history-search-backward and M-n
	to history-search-forward.

Tue Oct 17 04:31:06 1995  John Eaton  <jwe@bevo.che.wisc.edu>

	* xpow.cc (xpow): Handle integer powers better for complex^double.
	(elem_xpow): Likewise.

	* lex.l ({CCHAR}): If nesting_level.top() is BRACE, return ';',
	not '\n'.

Mon Oct 16 19:03:45 1995  John Eaton  <jwe@bevo.che.wisc.edu>

	* help.cc (Fwhich): Fix doc string.

	* variables.cc (Fexist): Update doc string.

Sun Oct 15 22:19:16 1995  John Eaton  <jwe@bevo.che.wisc.edu>

	* Another massive set of changes to support character matrices
	with indexing.  The Octave_str_object class is no longer used.
	Anything having to do with Octave_str_object in the following
	files has been changed to use charMatrix instead: octave.h,
	load-save.cc, octave.cc, strfns.cc, data.cc, pr-output.h,
	pr-output.cc, tree-const.h, dirfns.cc, tree-const.cc,
	tree-expr.cc.

Sat Oct 14 22:28:18 1995  John Eaton  <jwe@bevo.che.wisc.edu>

	* f-sort.cc (mx_sort): Don't attempt to sort vectors that have
	only one element, or matrices that have only one row.

Thu Oct 12 02:16:58 1995  John Eaton  <jwe@bevo.che.wisc.edu>

	* mappers.cc (install_mapper_functions): Add gammaln as an alias
	for lgamma.

	* tree-const.h, tree-const.cc: Massive overhaul of indexing and
	indexed assignment functions.
	* tc-inlines.h, tc-rep.h: Remove files.
	* Makefile.in: Remove mention of them here too.

	* Makefile.in: Include $(TI_SRC) in DEP_SOURCES_3, not
	$(TI_SOURCES).
	Include $(DLD_SRC) in DEP_SOURCES_3.
	Include $(TI_SRC) in DEF_FILES_5.

Wed Oct 11 01:26:18 1995  John Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (INCLUDES): Remove tc-inlines.h and tc-rep.h from
	the list.

Mon Oct  9 08:31:04 1995  John Eaton  <jwe@bevo.che.wisc.edu>

	* lex.l (next_token_is_bin_op): Do match `.+', `.*', etc.

Sun Oct  8 18:19:56 1995  John Eaton  <jwe@bevo.che.wisc.edu>

	* idx-vector.h, idx-vector.cc: Delete files.
	* Makefile.in (SOURCES, INCLUDES): Remove them from lists.

Fri Oct  6 00:52:06 1995  John Eaton  <jwe@bevo.che.wisc.edu>

	* f-svd.cc (Fsvd): If nargout == 0 or nargout == 1, don't ask for
	U and V.

Wed Oct  4 00:04:57 1995  John Eaton  <jwe@bevo.che.wisc.edu>

	* f-npsol.cc (Fnpsol, Fnpsol_options): Avoid unused variable
	warnings if NPSOL_MISSING.
	* f-qpsol.cc (Fqpsol, Fqpsol_options): Likewise for QPSOL_MISSING.

	* Makefile.in (DISTFILES): Add octave.gperf.

	* lex.l (next_token_is_bin_op): Don't ever return true for `.'
	since that causes problems with things like [ .1 .1 ].

Tue Oct  3 05:30:24 1995  John Eaton  <jwe@bevo.che.wisc.edu>

	* variables.cc (is_valid_function): Avoid setting error_state if
	argument is not a string.

	* parse.y (maybe_warn_missing_semi): New function.
	(list1, list): Call it if statement not terminated by semicolon.
	* tree-misc.h (tree_statement::line, tree_statement::column):
	New functions.
	* octave.cc (input_from_command_line_file): New global variable.
	(main): Set it.
	(parse_and_execute): Unwind-protect it and set it to zero.
	(eval_string): Likewise.
	* variables.cc (parse_fcn_file): Likewise.

	* user-prefs.cc (warn_missing_semicolon): New function.
	* user-prefs.h (user_preferences): New field, warn_missing_semicolon.
	* variables.cc (install_builtin_variables): DEFVAR it.
	
	* tree-expr.cc (tree_expression::is_logically_true): Actually use
	argument.

Mon Oct  2 19:55:48 1995  John Eaton  <jwe@bevo.che.wisc.edu>

	* variables.cc (install_builtin_variables): Reduce the default
	value of save_precision to 15.

	* variables.cc (builtin_real_scalar_variable): Return 1 for
	success, 0 for failure.

	* user-prefs.cc (struct_levels_to_print, set_save_precision,
	set_output_max_field_width, set_output_precision):
	Change sense of test for builtin_real_scalar_variable return value.
	(check_preference): Rename from check_str_pref.  Change all callers.
	Accept value of 0 to be the same as "false" and nonzero to be the
	same as "true".
	Delete val to avoid memory leak.
	* variables.cc (install_builtin_variables): Change initial values
	from "true" to 1, "false" to 0.

	* variables.cc (install_builtin_variables): Add DEFVAR for
	gnuplot_has_multiplot.

	* user-prefs.h (user_preferences): New field,
	`gnuplot_has_multiplot'.
	* user-prefs.cc (init_user_prefs): Initialize it.
	(gnuplot_has_multiplot): New function.

Sat Sep 30 16:52:57 1995  John Eaton  <jwe@bevo.che.wisc.edu>

	* oct-gperf.h, octave.gperf: Newfiles.
	* Makefile.in (DISTFILES): Add octave.gperf.
	(INCLUDES): Add oct-gperf.h.
	(oct-gperf.h): New rule.
	(local-dist, dist): Depend on oct-gperf.h.
	* lex.l (is_keyword): Use perfect hash function to lookup
	keywords.

Fri Sep 29 04:36:04 1995  John Eaton  <jwe@bevo.che.wisc.edu>

	* version.h (OCTAVE_NAME_AND_VERSION): Add TARGET_HOST_TYPE to this.

Thu Sep 28 00:03:51 1995  John Eaton  <jwe@bevo.che.wisc.edu>

	* tree-expr.cc (tree_expression::is_logically_true): New function.
	* tree-cmd.cc (tree_while_command::eval): Use it instead of
	handling the test directly here.
	* tree-misc.cc (tree_if_clause::eval): Likewise

	* tree-const.cc (TC_REP::force_numeric): Don't try to print value
	of str_obj with %s.

	* error.cc (buffer_error_messages): Rename from
	suppress_octave_error_messages.
	(error_message_buffer): New global variable.
	(verror): Handle buffering of messages.
	(handle_message): New function.
	(Ferror, Fwarning, Fusage): Use it instead of duplicating code.

	* octave.cc (Feval): Buffer error messages instead of supressing them.

	* lex.l (is_keyword): Recognize `try', `catch', and `end_try_catch'.
	* parse.y (TRY, CATCH): New tokens.
	(command): Recognize try-catch block.
	(end_error): Add cases for unwind_protect_end and try_catch_end.
	* token.h (end_tok_type): New field, try_catch_end.
	* tree-cmd.h, tree-cmd.cc (tree_try_catch): New class.
	* variables.cc (bind_global_error_variable): New Function.
	(clear_global_error_variable): Likewise.
	(install_builtin_variables): Add DEFCONST for __error_text__.
	* help.cc (keywords): Add `try', `catch', and `end_try_catch'.

	* tree-cmd.cc (tree_unwind_protect::eval): Undo previous change.

	* dirfns.cc (Freaddir, Fmkdir, Frmdir):
	Do tilde expansion on the argument.

Tue Sep 26 00:10:29 1995  John Eaton  <jwe@bevo.che.wisc.edu>

	* f-dassl.cc, f-fsolve.cc, f-lsode.cc, f-npsol.cc, f-quad.cc:
	Don't try to figure out if the user-supplied functions take the
	correct number of arguments.  Simply let the call fail.
	* variables.cc (takes_correct_nargs): Delete unused function.
	* tree-expr.cc (tree_builtin::eval): Don't complain for too many
	arguments to mapper functions.
	* tree-expr.h, tree-expr.cc (tree_builtin, tree_function, tree_fvc):
	Delete unused function max_expected_args.

	* defun.h (DEFUN): Delete unnecessary args nargin_min and nargout_max.
	New arg unused_arg_flags.
	(DEFUN_TEXT): Likewise.
	* defun-dld.h (DEFUN_DLD_BUILTIN): Likewise.
	* defun-int.h (DEFUN_INTERNAL, DECLARE_FUN, DEFINE_FUN_STRUCT):
	Do the real work.

	* data.cc, dirfns.cc, dynamic-ld.cc, error.cc, f-balance.cc,
 	f-chol.cc, f-colloc.cc, f-dassl.cc, f-det.cc, f-eig.cc, f-expm.cc,
 	f-fft.cc, f-fft2.cc, f-find.cc, f-fsolve.cc, f-fsqp.cc,
 	f-givens.cc, f-hess.cc, f-ifft.cc, f-ifft2.cc, f-inv.cc, f-log.cc,
 	f-lpsolve.cc, f-lsode.cc, f-lu.cc, f-minmax.cc, f-npsol.cc,
 	f-pinv.cc, f-qpsol.cc, f-qr.cc, f-quad.cc, f-qzval.cc, f-rand.cc,
 	f-schur.cc, f-sort.cc, f-svd.cc, f-syl.cc, file-io.cc, help.cc,
 	input.cc, lex.l, load-save.cc, mappers.cc, octave-hist.cc,
 	octave.cc, octave.h, pager.cc, pr-output.cc, resource.cc,
 	sighandlers.cc, strfns.cc, sysdep.cc, timefns.cc, token.cc,
 	tree-const.cc, tree-expr.cc, tree-expr.h, tree-plot.cc,
 	unwind-prot.cc, unwind-prot.h, utils.cc, variables.cc,
 	variables.h, version.h, xdiv.cc:
	Avoid unused variable warnings.

	* tree-expr.h (tree_oct_obj::print_value (ostream&)):
	Delete name of unused arg.
	(tree_fvc::save (ostream&, int, int): Likewise.

	* tree-const.h (tree_constant::tree_constant (magic_colon)):
	Delete name of unused arg.
	(tree_constant::tree_constant (all_va_args)): Likewise
	(ColumnVector vector_value (int, int)): Likewise.
	(ComplexColumnVector vector_value (int, int)): Likewise.
	(Octave_object::eval (int, int, const Octave_object&): Likewise.

	* octave.cc (execute_startup_files): Look for octaverc first in
	site/m, then in $(version)/m.
	* variables.cc (get_local_site_defaults): New function.
	* defaults.h.in (OCTAVE_LOCALFCNFILEDIR, OCTAVE_LOCALSTARTUPFILEDIR):
	New macros.
	* Makefile.in (defaults.h): Also substitute ${localfcndir}.

Mon Sep 25 17:01:03 1995  John Eaton  <jwe@bevo.che.wisc.edu>

	* variables.cc (install_builtin_variables): Add DEFCONST for "e".

Fri Sep 22 02:18:45 1995  John Eaton  <jwe@bevo.che.wisc.edu>

	* dirfns.cc (Fls): Delete ls_command after using it, not before.

	* input.h, input.cc (gnu_readline): Don't declare gnu_readline
	`extern "C"'.

	* sysdep.h: Only declare gethostname if it is missing, then don't
	declare it `extern "C"'.

	* dirfns.cc: Don't declare strerror().

	* input.cc (command_generator): Use malloc, not xmalloc.  Don't
	declare xmalloc.
	(gnu_readline): Don't declare this `extern "C"'.

	* octave-hist.cc: Don't declare history_get().  It is now in
	readline/history.h.

	* input.cc: Don't declare history_get().  It is now in
	readline/readline.h.

	* resource.cc: Don't surround include of sys/resource.h in
	`extern	"C" { }'.

	* fnmatch.h [__cplusplus]: Surround contents in `extern "C" { }'.
	* load-save.cc, symtab.cc, variables.cc: Don't surround
	fnmatch.h include in `extern "C" { }'.

	* help.cc: Don't #undef __FUNCTION_DEF before including
	readline/tilde.h.

	* dirfuns.cc, file-io.cc, help.cc, load-save.cc, octave-hist.cc,
	sysdep.cc, tree-plot.cc, utils.cc, variables.cc:
	Don't surround readline includes in `extern "C" { }'.

	* sysdep.cc: Move all include statements to top of file.

Tue Sep 19 01:58:21 1995  John Eaton  <jwe@bevo.che.wisc.edu>

	* octave.cc (Fsystem): Use iprocstream *, and unwind_protect it.
	* pager.cc (flush_output_to_pager): Likewise.
	* dirfns.cc (Fls): Likewise.
	* tree-plot.cc (plot_stream): Now a pointer.
	(open_plot_stream): Deal with it.
	(send_to_plot_stream, cleanup_tmp_files, do_external_plotter_cd):
	Likewise.

	* procstream.cc (cleanup_iprocstream, cleanup_oprocstream):
	New functions. 

	* procstream.h, procstream.cc (class iprocstream, class oprocstream):
	Keep track of pbuf.  Initialize it to 0 in default constructors,
	delete it in destructor.  Don't call close in destructor.

	* sighandlers.cc (octave_set_signal_handler): New function.
	Use this name instead of signal everywhere.
	* help.cc (try_info): Likewise.
	* pager.cc (flush_output_to_pager): Likewise.
	* octave.cc (main): Likewise.
	* octave-hist.cc (do_edit_history): Likewise.

	* input.cc (initialize_readline): Set rl_paren_string_delimiters
	to avoid treating single quotes as string delimiters when doing
	paren matching.

	* Makefile.in (SOURCES): Don't list Map.cc or SLStack.cc here.

	* tree-const.cc: Do include utils.h.

	* sysdep.cc: Don't surround terminal includes in extern "C".
	Include them before readline.h.

	* Map.h: Don't include utils.h.
	(CHNode::CHNode (const char*, const C&, CHNode *t):
	Do strsave() inline.

	* input.cc (generate_possible_completions): Generate name list
	even when text == 0.
	(operate_and_get_next): Don't declare history_stifled, call
	history_is_stifled () instead.
	Don't declare history_length, or max_input_history either.
	Check (where >= history_length - 1) too, as in recent versions of
	bash.
	
	* user-prefs.h (user_prefs): New field, `completion_append_char'.
	* user-prefs.cc (init_user_prefs): Initialize it.
	(sv_completion_append_char): New function.
	* variables.cc (install_builtin_variables): Install
	completion_append_char.
	* input.cc (command_generator): Use it.

	* SLList-expr.cc, SLList-misc.cc, SLList-plot.cc, SLList-tc.cc,
	DLList-fi.cc: Include config.h.
	* DLList-fi.cc: Include file-info.h, not file-io.h.

Mon Sep 18 11:01:24 1995  John Eaton  <jwe@bevo.che.wisc.edu>

	* octave.h (clean_up_and_exit): Tag with NORETURN instead of using
	typedef trick.
	* error.h (panic): Likewise.
	* utils.h (jump_to_top_level): Likewise.

	* file-io.h: Protect from multiple includes with octave_file_io,
	not octave_files.

	* file-info.h (class file_info): Convert to using std C++ string
	class from char *.
	* file-info.cc: Likewise.  Don't include utils.h.
	* file-io.cc (return_valid_file, fopen_file_for_user,
	fflush_internal, do_scanf): Use operator ==, not strcmp.
	(close_files): Call error with file.name ().data (),
	not file.name ().
	(freport_internal): Call form with file.mode ().data () and
	file.name ().data ().

	* file-io.cc, file-io.h: Extract file_info class.
	* file-info.cc, file-info.h: New files for file_info class.

	* user-prefs.h (user_prefs): New field, `beep_on_error'.
	* user-prefs.cc (init_user_prefs): Initialize it.
	(beep_on_error): New function.
	* variables.cc (install_builtin_variables): Install beep_on_error.
	* octave.cc (maximum_braindamage): Set beep_on_error to "true".
	* error.cc (verror): Conditionally beep.
	(error): Don't reset error_state until after verror is called.

Sun Sep 17 16:41:25 1995  John Eaton  <jwe@bevo.che.wisc.edu>

	* load-save.cc (read_mat_binary_data, read_ascii_data,
	save_ascii_data, read_binary_data, save_binary_data):
	Handle string arrays.

Fri Sep 15 00:24:19 1995  John Eaton  <jwe@bevo.che.wisc.edu>

	* user-prefs.cc (struct_levels_to_print,
	set_output_max_field_width, set_output_precision,
	set_save_precision): Eliminate unecessary kludge variable.
	
	* variables.cc (gobble_leading_white_space): New arg,
	in_parts.  Change all callers.

	* lex.l (HELP_FCN): Delete start state.  The `help' command is now
	handled the same as any other text-style function.

	* gripes.cc (gripe_invalid_value_specified): New function
	* user-prefs.cc: Use it.

	* sysdep.cc (octave_words_big_endian): New global variable.
	(ten_little_endians): New function.
	(sysdep_init): Call it.
	* load-save.cc (words_big_endian): Use this at run-time instead of
	depending on WORDS_BIGENDIAN at compile-time.

	* symtab.h (SYMTAB_VARIABLES): New macro.
	* variables.cc (Fclear): Use it instead of just
	symbol_def::USER_VARIABLE when looking for variables.

	* octave.cc (main): If there is a file to execute, set
	program_invocation_name and program_name to the name of the file
	and argv to the remaining args.
	(intern_argv): Only define argv if there are some remaining
	arguments.

	* defun.h (DEFVAR_INT): New macro.
	(DEFVAR): Define in terms of DEFVAR_INT.  Delete args protect and
	eternal.
	(DEFCONST): New macro.
	* variables.cc (install_builtin_variables): Use DEFCONST where
	appropriate, change uses of DEFVAR to match new definition.

	* variables.cc (bind_builtin_variable): New variant that accepts
	const tree_constant& value.
	(install_builtin_variables): Properly alphabetize DEFVAR for this.

	* octave.cc (short_opts): Prefix with `+' to prevent argv
	permutation.
	(main): Don't use readline if forced_interactive.
	(traditional): New file-scope variable.
	(long_opts, usage_string, verbose_usage): Add `--traditional'.
	(maximum_braindamage): New function.
	(main): Call it if --traditional.

	* input.cc (do_input_echo): Print prompt correctly when
	forced_interactive is either true or false.

Thu Sep 14 00:54:06 1995  John Eaton  <jwe@bevo.che.wisc.edu>

	* data.cc (Fstruct_elements): New function.

	* file-io.cc (Fumask): New function.

	* dirfns.cc (Fmkdir, Frmdir, Frename): New functions.

	* Makefile.in: Add rules and dependencies for building safe-stat.o
	and safe-lstat.o.

	* mkdir.c, rename.c, rmdir.c: New files.
	* Makefile.in (SOURCES): Include them in the list.

	* safe-xstat.hin, safe-xstat.cin: New files
	* Makefile.in (DISTFILES): Include them in the list.

	* sighandlers.cc (octave_new_handler): Try to continue on memory
	exhausted errors.
	(sigfpe_handler): Improve error message.

	* Makefile.in: Use `ifndef omit_deps', not `ifndef $(omit_deps)'.

	* dirfns.cc (Freaddir): New function.

	* f-sort.cc: Complete rewrite.  Now uses stable sort algorithm and
	correctly handles complex matrices containing columns of all real
	numbers.

Wed Sep 13 03:16:40 1995  John Eaton  <jwe@bevo.che.wisc.edu>

	* arith-ops.cc: Unconditionally #define DIVIDE_BY_ZERO_ERROR.

	* variables.cc (install_builtin_variables): Unconditionally
	install NaN and nan.

	* mappers.cc (xisinf): Don't do bogus things if isinf, isnan, or
	finite are missing.
	(xfinite): Likewise.

	* sysdep.cc (octave_ieee_init): Don't set octave_NaN and
	octave_Inf if values are not available.

	* resource.cc (mk_ru_map): Don't use ru_ or tv_ as prefixes to
	Octave names for the structure members.

Tue Sep 12 02:04:16 1995  John Eaton  <jwe@bevo.che.wisc.edu>

	* procstream.h, procstream.cc: Rewrite.

Mon Sep 11 18:42:05 1995  John Eaton  <jwe@bevo.che.wisc.edu>

	* filemode.c: New file, from Emacs.
	* Makefile.in (SOURCES): Add it to the list.

	* file-io.cc (Fstat, Flstat, mk_stat_map): New functions.

	* timefns.cc (mk_tm_map): Don't use tm_ as prefix to Octave names
	for these structure members.
	(extract_tm): Likewise.
	(Flocaltime): Fix doc string to match.

Thu Sep  7 02:04:27 1995  John Eaton  <jwe@bevo.che.wisc.edu>

	* load-save.cc (save_user_variables): New function.
	* sighandlers.cc (my_friendly_exit): Call it before exiting.
	(sigfpe_handler): New function.
	(install_signal_handlers) [__alpha__]: Install it.

Wed Sep  6 14:35:10 1995  John Eaton  <jwe@bevo.che.wisc.edu>

	* tree-cmd.cc (tree_unwind_protect::eval): Ignore errors and
	suppress error messages while executing first block of
	unwind_protect commands.

	* parse.y (end_error): Add missing case for unwind_protect_end.

	* tree-expr.cc (tree_builtin::eval): Complain if no arguments
	given for mapper functions.
	(tree_fvc::lookup_map_element): Print error message for invalid
	structure reference.

Tue Sep  5 02:04:12 1995  John Eaton  <jwe@bevo.che.wisc.edu>

	* file-io.cc, input.cc, load-save.cc, octave.cc, sysdep.cc,
	variables.cc, octave-hist.cc, utils.cc, f-schur.cc, f-rand.cc,
	f-quad.cc, f-qpsol.cc, f-npsol.cc, f-lsode.cc, f-fsolve.cc,
	f-dassl.cc, f-colloc.cc, f-balance.cc, error.cc, data.cc:
	Add const qualifiers where appropriate.

	* dirfns.h: Include <ctime>, for time_t.

	* tempname.c, file-io.cc, help.cc, input.cc, octave-hist.cc,
	octave.cc, sighandlers.cc, sysdep.cc, tree-expr.cc, tree-misc.cc,
	tree-plot.cc, utils.cc, variables.cc, sysdir.h:
	Move #include <sys/type.h> inside #ifdef HAVE_UNISTD_H.

	* syswait.h: New file.
	* Makefile.in (INCLUDES): Add it to the list.
	* file-io.cc, sighandlers.cc: Use it instead of including
	sys/wait.h directly.

	* octave.cc: Include statdefs.h, not sys/stat.h.

	* sysdir.h: New file.
	* Makefile.in (INCLUDES): Add it to the list.
	* dirfns.cc, utils.cc: Use it instead of including the headers
	directly.

	* pathlen.h: New file.
	* Makefile.in (INCLUDES): Add it to the list.
	* dirfns.cc, input.cc: Use it instead of including sys/param.h
	directly.
	* utils.cc: Don't include sys/param.h

Sun Sep  3 18:52:59 1995  John Eaton  <jwe@bevo.che.wisc.edu>

	* tree-const.cc (TC_REP::string_value): Return const char*, not
	char *.

	* All .cc, .y, .l, .y files: Include <cctype>, not <ctype.h>, and
	so on for all new C++ versions of these standard C headers.

Thu Aug 31 17:09:38 1995  John Eaton  <jwe@bevo.che.wisc.edu>

	* pathsearch.h: Also hide `string'.

	* oct-str.cc, oct-str.h: New files.
	* Makefile.in: Add to the appropriate lists.
	* tc-rep.h: Change char* to Octave_string* in anonymous union.
	* tree-expr.cc (tree_matrix::eval): Handle multiple element strings.
	* strfns.cc (toascii): Likewise.
	* tree-const.cc (print_as_string): Likewise.
	(TC_REP::force_numeric, TC_REP::rows, TC_REP::columns,
	TC_REP::double_value, TC_REP::complex_value, TC_REP::matrix_value,
	TC_REP::complex_matrix_value, TC_REP::convert_to_str): Likewise.
	(TC_REP::print): Call octave_print_internal for string case.
	(all_strings): New function.
	Fix constructors to use new data structure.
	* pr-output.cc (octave_print_internal): Add version for strings.
	* Array-string.cc: New file.

	* octave.cc (octave_argv): New global variable.
	(intern_argv): New function.
	(main): Fix argument parsing to do the right thing for arguments
	to executable scripts.
	* variables.cc: Add DEFUNs for argv, program_invocation_name, and
	program_name.

	* defun.h (DEFVAR): Fix comment.

Thu Aug 24 00:02:00 1995  John Eaton  <jwe@bevo.che.wisc.edu>

	* file-io.cc (fgets_internal): Make second arg optional.  Add
	optional arg `strip_final_newline'.
	(Ffgets): Change to match new definition of fgets_internal.
	(Ffgetl): Implement using the new fgets_internal.

	* f-rand.cc (Frand): Update code for sizing return value to match
	that used by ones, zeros, and eye.

Wed Aug 23 19:52:45 1995  John Eaton  <jwe@bevo.che.wisc.edu>

	* tree-const.cc (do_vector_assign): Don't crash for
	A(range) = scalar, or A(matrix) = scalar.

	* f-dassl.cc (set_dassl_option): Rename from do_dassl_option.
	(show_dassl_option): New function.
	(Fdassl_options): Handle single arg.
	* f-fsolve.cc (set_fsolve_option): Rename from do_fsolve_option.
	(show_fsolve_option): New function.
	(Ffsolve_options): Handle single arg.
	* f-fsqp.cc (set_fsqp_option): Rename from do_fsqp_option.
	(show_fsqp_option): New function.
	(Ffsqp_options): Handle single arg.
	* f-lpsolve.cc (set_lpsolve_option): Rename from do_lpsolve_option.
	(show_lpsolve_option): New function.
	(Flpsolve_options): Handle single arg.
	* f-lsode.cc (set_lsode_option): Rename from do_lsode_option.
	(show_lsode_option): New function.
	(Flsode_options): Handle single arg.
	* f-npsol.cc (set_npsol_option): Rename from do_npsol_option.
	(show_npsol_option): New function.
	(Fnpsol_options): Handle single arg.
	* f-qpsol.cc (set_qpsol_option): Rename from do_qpsol_option.
	(show_qpsol_option): New function.
	(Fqpsol_options): Handle single arg.
	* f-quad.cc: (set_quad_option): Rename from do_quad_option.
	(show_quad_option): New function.
	(Fquad_options): Handle single arg.
	(Fquad): Doc fix.

Tue Aug 22 00:38:05 1995  John Eaton  <jwe@bevo.che.wisc.edu>

	* tree-plot.cc (do_external_plotter_cd): New function.
	* dirfns.cc (octave_change_to_directory): New function.  If cd is
	successful, also call do_external_plotter_cd().
	(Fcd): Call octave_change_to_directory(), not change_to_directory().

	* pr-output.cc (pr_any_float): Change declaration of counter to
	size_t to avoid gcc warnings.

	* idx-vector.cc, octave-hist.cc, tree-const.cc, tree-expr.cc,
	tree-misc.cc, utils.cc, xpow.cc, Map.cc:
	Update for change in for loop variable scope for gcc 2.7.0.

Mon Aug 21 19:34:53 1995  John Eaton  <jwe@bevo.che.wisc.edu>

	* tree-const.cc (fortran_style_matrix_assignment): Properly handle
	case of complex LHS, real RHS.

	* Makefile.in: Only include dependency files if $(omit_deps) is
	not set.

Wed Jul  5 00:03:58 1995  John Eaton  <jwe@bevo.che.wisc.edu>

	* sysdep.cc: Explicitly include string.h.

Sun Jun 25 00:18:10 1995  John Eaton  <jwe@schoch.che.utexas.edu>

	* load-save.cc (too_large_for_float (const Matrix&)):
	Extract elements as doubles, not Complex.

Sat Jun 24 22:59:15 1995  John Eaton  <jwe@schoch.che.utexas.edu>

	* pr-output.cc (any_element_is_inf_or_nan): Declare extern, not static.
	* f-svd.cc (Fsvd): Call here to avoid trying to take SVD of matrix
	containing Inf or NaN values.

	* pr-output.cc (bit_format): New file-scope variable.
	(set_format, pr_any_float): Handle bit_format.
	(octave_print_internal): Handle bit_format like bank_format.
	(init_format_state): Initialize bit_format.
	(set_format_style): Allow `format bit' and `format native-bit'.

Thu Jun  8 15:20:26 1995  John Eaton  <jwe@schoch.che.utexas.edu>

	* mappers.cc (arg, imag, signum): If arg is NaN, return NaN.

Mon May 15 14:47:04 1995  John Eaton  <jwe@schoch.che.utexas.edu>

	* pager.cc (Fdiary): Initialize diary_file here, not in the
	file-scope declaration.

	* tree-expr.cc (tree_index_expression::eval):
	Handle nargin == 0 the same as other cases. 

Tue May  2 10:02:23 1995  John Eaton  <jwe@schoch.che.utexas.edu>

	* load-save.cc (do_double_format_conversion): Add missing breaks.
	(do_float_format_conversion): Likewise.

Mon May  1 13:50:24 1995  John Eaton  <jwe@schoch.che.utexas.edu>

	* Makefile.in (OCTAVE_LIBS): Add @LIBPLPLOT@ to the list.

	* timefns.cc (Ftime): Handle GETTIMEOFDAY_NO_TZ.

	* Makefile.in (SOURCES): Delete tc-rep.cc, tc-rep-ass.cc, and
	tc-rep-idx.cc from the list.

	* tree-const.h: Add #pragma interface.
	* tree-const.cc: Add contents of tc-rep.cc, tc-rep-ass.cc, and
	tc-idx.cc to this file.  Add #pragma implementation.  This makes
	tree-const.cc large, but makes the final binary smaller.
	
	*  unwind-prot.h unwind-prot.cc token.cc token.h procstream.cc
	procstream.h idx-vector.cc idx-vector.h symtab.cc symtab.h
	oct-map.cc oct-map.h oct-obj.cc oct-obj.h tree-plot.h tree-plot.cc
	tree-misc.cc tree-misc.h tree-expr.cc tree-expr.h tree-cmd.cc
	tree-cmd.h tree-base.cc tree-base.h:
	Add #pragma interface/implementation.

	* Makefile.in (OCTAVE_LIBS): Delete @LIBINFO@ from list.
	* help.cc: Don't include info headers or extern declarations for
	functions from info.
	(try_info): Call info as a subprocess.	Delete second arg.
	Handle SIGINT here, not in help_from_info().
	(help_from_info): Complain if info doesn't work.

	* defun-dld.h (DEFUN_DLD_BUILTIN) [OCTAVE_LITE && MAKE_BUILTINS]:
	If ! WITH_DLD, simply emit a character string constant.

Fri Apr 28 15:23:06 1995  John Eaton  <jwe@schoch.che.utexas.edu>

	* lex.l ({IDENT}{S}*): Don't delete tok.  That's handled by
	strip_trailing_whitespace() now.
	(<HELP_FCN>[^ \t\n]*{S}*|<TEXT_FCN>[^ \t\n\;\,]*{S}*): Ditto.

	* pathsearch.h: Include kpathsea/progname.h.
	* octave.cc (initialize_globals): Call kpse_set_progname().

	* token.h: Declare copy constructor and operator = private.
	* token.cc: Abort if copy constructor or operator = is used.

Thu Apr 27 13:54:39 1995  John Eaton  <jwe@schoch.che.utexas.edu>

	* tree-expr.cc (lookup_map_element): Don't list default argument
	values here too.

	* pr-output.cc (hex_format): New file-scope variable.
	(set_format, pr_any_float): Handle hex_format.
	(octave_print_internal): Handle hex_format like bank_format.
	(init_format_state): Initialize hex_format.
	(set_format_style): Allow `format hex' and `format native-hex'.

	* variables.cc (bind_ans): Create ans_id each time with new and
	ask tree_simple_assignment_expression to handle cleaning it up.
	This apparently plugs a memory leak.

	* help.cc (Ftype): Don't try to print map constants.  Handle
	references to structure members.

Wed Apr 26 12:40:59 1995  John Eaton  <jwe@schoch.che.utexas.edu>

	* input.cc (generate_struct_completions): New function.
	(generate_possible_completions): Likewise.
	(looks_like_struct): Likewise.
	(command_generator): Handle completion of struct variables.

	* tree-expr.h, tree-expr.cc (tree_fvc::lookup_map_element):
	Add insert and silent args.

	* oct-map.cc: New file.
	* Makefile.in (SOURCES): Add it to the list.

Mon Apr 24 09:41:02 1995  John Eaton  <jwe@schoch.che.utexas.edu>

	* variables.cc (Fexist): Handle structure references too.

	* tree-const.cc (lookup_map_element (const char*, int, int):
	New function.
	(lookup_map_element (SLList<char*>&, int, int): New arg, silent.
	* tc-rep.cc (lookup_map_element): New arg, silent. If nonzero,
	don't call error().

	* tc-rep.h (is_empty): Define here.
	* tree-const.h (is_empty): Hand off to TC_REP::is_empty().

	* data.cc (Fstruct_contains): Call lookup_map_element on args(0)
	instead of extracting the map and calling contains() on it.

	* parse.y (EPLUS, EMINUS): New tokens.
	(simple_expr): Handle EPLUS, EMINUS the same as `+' and `-'.
	* lex.l (".+", ".-"): New patterns.  Match these separately to
	disallow using them as unary operators.

	* lex.l (next_token_is_bin_op): Simplify by noting that spacing
	only matters for those tokens that can also be unary ops.

Fri Apr 21 14:34:45 1995  John Eaton  <jwe@schoch.che.utexas.edu>

	* load-save.cc (read_ascii_data): Allow reading of empty
	matrices. 

	* tc-rep-ass.cc (vector_assignment): Only assert that we are not
	doing fortran-style indexing and that nr <= 1 || nc <= 1.
	(do_vector_assign): Handle assignment of [] when one dimension is
	zero and the other is anything.

Thu Apr 20 13:56:21 1995  John Eaton  <jwe@schoch.che.utexas.edu>

	* tc-rep-ass.cc (delete_rows, delete_columns): Simply return if
	num_to_delete is 0.

	* lex.l (handle_identifier): Don't match plot option keywords
	inside parentheses or braces.

	* variables.cc (parse_fcn_file): Also delete tmp_help_txt if
	running a script.

	* tree-cmd.h (tree_command): Add destructor.

	* tree-expr.h tree_simple_assignment_expression (lhs_idx_expr):
	Hang on to idx_expr, not just its parts so it can be deleted.
	(init): Initialize it.
	* tree-expr.cc (~tree_simple_assignment_expression): Delete it.

	* tree-expr.h (tree_multi_val_ret, tree_oct_obj, tree_fvc,
	tree_identifier, tree_builtin, tree_function): Add destructors.
	* tree-expr.cc (tree_function::~tree_function): Delete some stuff.

	* tree-misc.h (tree_va_return_list): Add destructor.

	* octave.cc (__builtin_new, __builtin_delete): Provide our own,
	for debugging.

	* utils.cc (strconcat): Don't depend on the return value from
	strcat.
	(file_in_path): Simplify logic.

	* parse.y (maybe_convert_to_ans_assign): Create ans_id each time
	with new and ask tree_simple_assignment_expression to handle
	cleaning it up.  This apparently plugs a memory leak.

	* lex.l (strip_trailing_whitespace): Declare retval static.
	Delete it before saving next string.

	* error.cc (Ferror): Do call error() for empty string args.
	(error_1): Don't print anything if fmt is "" or "\n", but do set
	the error state appropriately.

	* tree-cmd.cc (tree_unwind_protect::eval): Handle return and break
	in the `try' part of the statement.

Mon Apr 10 19:29:44 1995  John Eaton  <jwe@schoch.che.utexas.edu>

	* f-expm.cc, f-givens.cc, f-qzval.cc, f-syl.cc, f-rand.cc:
	Where appropriate, declare Fortran functions to take reference
	instead of pointer args.  Change callers.

	* mappers.cc: Declare Fortran functions to take reference instead
	of pointer args.  Change callers.	

	* gamma.c, lgamma.c, erfc.c, erf.c, atanh.c, asinh.c, acosh.c:
	Declare Fortran functions to take reference instead of pointer
	args.

Sun Apr  9 19:38:53 1995  John Eaton  <jwe@schoch.che.utexas.edu>

	* file-io.cc (Fpopen, Fpclose, Fexecute, Fsync_system,
	Fasync_system, Fwaitpid, Fmkfifo, Funlink): New functions.

	* sighandlers.cc (sigchld_handler): New function.
	(install_signal_handlers): Add call to install
	sigchld_handler. (This is #if 0'd out, waiting for code to help
	determine which child exited and what to do about it).

	* tree-expr.h (tree_oct_obj): New class.

	* tree-expr.h (tree_multi_assignment_expression::preserve): New
	data member.  Add arg with default value to constructors.  Change
	callers as necessary.
	* tree-expr.cc (~tree_multi_assignment_expression): Conditionally
	delete lhs.

	* parse.y (make_multi_val_ret): Pass matrix instead of getting it
	from the global matrix list.
	(expression): Extract matrix from matrix list before calling
	make_multi_val_ret().

	* parse.y (command): Handle new for loop syntax for structures.

	* tree-plot.h (subplot_list): Include tree_print_code() in
	initializer lists for constructors.
	* tree-expr.h (tree_statement_list, tree_argument_list,
	tree_parameter_list, tree_return_list, tree_global_init_list,
	tree_if_command_list, ): Likewise.

	* tree-cmd.h (tree_for_command::id_list): New data member.
	(tree_for_command (tree_return_list*, tree_expression*,
	tree_statement_list*, int, int)): Likewise.
	* tree-cmd.cc (tree_for_command::eval): Handle for loops with
	structures.
	(do_for_loop_once (tree_return_list*, Octave_object&, int&)):
	New form for handling for loops with structures.

	* sysdep.cc (octave_ieee_init): Determine floating point format
	here.
	(native_float_format): New global variable.
	(Fisieee): Compute return value from native_float_format, not by
	using preprocessor macros.
	* sysdep.h (enum floating_point_format): Move declaration here.
	* load-save.cc: From here.
	Always define all floating point format conversion routines.
	(do_double_format_conversion, do_float_format_conversion):
	Use native_float_format instead of preprocessor macros.

Sat Apr  8 15:41:35 1995  John Eaton  <jwe@schoch.che.utexas.edu>

	* Makefile (TEMPLATE_SRC): New variable.
	(DISTFILES): Add $(TEMPLATE_SRC).
	(SOURCES): Delete Map.cc and SLStack.cc from here.

	* variables.cc (install_builtin_variables): Use OCTAVE_VERSION
	instead of version_string to initialize OCTAVE_VERSION.
	* version.h (version_string): Delete.

	* getopt.c (_getopt_internal): Initialize indfound to avoid warning.

Fri Apr  7 15:29:41 1995  John Eaton  <jwe@schoch.che.utexas.edu>

	* tc-inlines.h (REP_RHS_MATRIX): Just check to see if tc is real
	or complex.  If conversion fails, return.

Thu Apr  6 00:10:47 1995  John Eaton  <jwe@schoch.che.utexas.edu>

	* data.cc (Fstruct_contains): New function.

	* tc-rep.cc (print_code): Add extra parens around while condition
	to avoid warning.
	* utils.cc (undo_string_escapes): Likewise.
	* input.cc (decode_prompt_string): Likewise.  Also rewrite if
	statement to avoid warning. 

Tue Apr  4 22:54:17 1995  John Eaton  <jwe@schoch.che.utexas.edu>

	* tree-expr.cc (tree_multi_assignment_expression::eval,
	tree_simple_assignment_expression::eval):  Call print_constant
	even if user_pref.print_answer_id_name is false.
 
Mon Apr  3 17:57:14 1995  John Eaton  <jwe@schoch.che.utexas.edu>

	* tc-inlines.h (TC_REP): Avoid redefinition.

	* tree-const.h (do_binary_op, do_unary_op): Declare as friends of
	tree_constant class too.

	* tree-plot.h (subplot_using::have_values): Delete data member.
	* tree-plot.cc (subplot_using::eval): Always recompute values.

Fri Mar 31 10:18:32 1995  John Eaton  <jwe@schoch.che.utexas.edu>

	* tc-rep.cc (print): Print open brace for structures here.
	* tree-expr.cc (print_constant): Not here.

	* symtab.cc (define): Don't delete arg if sv_fcn fails.

	* tree-const.cc (print): New function.  Create ostrstream buffer
	and pass it to rep->print().
	* tree-const.h (eval (int)): Call print(), not rep->print().
	* tc-rep.cc (structure_indent_level): New file-scope variable.
	(print): New arg, output_buf, is stream to print to.
	Print values of structure elements too.

	* user-prefs.h (user_preferences): New field, struct_levels_to_print.
	* user-prefs.cc (struct_levels_to_print): New function.
	* variables.cc (install_builtin_variables): Add DEFVAR for new
	variable struct_levels_to_print.

	* tree-const.cc (print_as_scalar, print_as_structure): Move here
	from tree-expr.cc and make extern.

	* tree-expr.cc (print_as_structure): New function.
	(print_constant): Use it.

	* tree-expr.cc (print_constant): New arg, print_padding.
	(tree_simple_assignment_expression::eval): Use print_constant
	instead of duplicating code here.
	(tree_multi_assignment_expression::eval): Likewise.

Thu Mar 30 13:24:11 1995  John Eaton  <jwe@schoch.che.utexas.edu>

	* Makefile.in (SOURCES): Add resource.cc.
	* resource.cc: New file, extracted from timefns.cc.
	(Fgetrusage): New function.
	* timefns.cc (cputime): Delete (now implemented in a function file
	using new getrusage function).

Wed Mar 29 22:52:42 1995  John Eaton  <jwe@schoch.che.utexas.edu>

	* Makefile.in (SOURCES): Add strftime.c.
	* strftime.c: New file, from sh-utils distribution.

	* timefns.cc (mk_tm_map, extract_tm, Ftime, Fgmtime, Flocaltime,
	Fmktime, Fstrftime): New basic time functions.
	(Fclock, Fdate): Delete (now implemented in function files using new
	time functions).

Tue Mar 28 17:51:51 1995  John Eaton  <jwe@schoch.che.utexas.edu>

	* file-io.cc (return_valid_file, do_printf, do_scanf,
	fclose_internal, feof_internal, ferror_internal, fflush_internal,
	fgets_internal, fopen_internal, fread_internal, freport_internal,
	frewind_internal, fseek_internal, ftell_internal,
	fwrite_internal): Declare static.
	* file-io.h: Delete extern declarations for them.

Fri Mar 24 09:52:50 1995  John Eaton  <jwe@schoch.che.utexas.edu>

	* pr-output.cc (pr_col_num_header): New function.
	(compact_format): New file-scope variable.
	(set_format_style): Handle loose and compact formats.
	(octave_print_internal (ostream&, const ComplexMatrix&, int)):
	Replace duplicate code with call to pr_col_num_header().
	(octave_print_internal (ostream&, const Matrix&, int): Likewise.
	(octave_print_internal (ostream&, const Range&, int): Likewise.

Tue Mar 21 08:44:48 1995  John Eaton  <jwe@schoch.che.utexas.edu>

	* mappers.cc (xgamma): Always use Slatec library function.
	* (xlgamma): Likewise.
	* Makefile.in (SOURCES): Don't include lgamma.c.

Fri Mar 17 22:38:39 1995  John Eaton  <jwe@schoch.che.utexas.edu>

	* tc-rep.cc (TC_REP::new): Don't try to keep track of newlist_tail.
	Explicitly initialize newlist to zero.
	* tree-const.cc (tree_constant::operator new): Likewise.

Fri Mar 10 12:40:24 1995  John Eaton  <jwe@schoch.che.utexas.edu>

	* tree-cmd.cc (quit_loop_now): Declare inline.
	(tree_for_command::do_for_loop_once): Split into two versions, one
	for the general case and one for when the loop variable is a
	simple identifier.
	(DO_LOOP): New macro.  Move tests outside of loop.
	(tree_for_command::eval): Speed up by checking to see if loop
	variable is a simple identifier and by using DO_LOOP.

	* tree-const.h: New union of rep and freeptr.  The freeptr element
	is used for our custom memory management functions.

	* tc-rep.h: Add freeptr element to anonymous union (for our custom
	memory management functions).

	* tree-const.cc (newlist, newlist_grow_size, newlist_tail): New
	static variables.
	(tree_constant::operator new): Always define to allow more
	efficient allocation of single tree_constants.
	(tree_constant::operator delete): Likewise, handle deletion of the
	memory we allocate.

	* tc-rep.cc (newlist, newlist_grow_size, newlist_tail): New static
	variables.
	(tree_constant::operator new): Always define to allow more
	efficient allocation of single tree_constants.
	(tree_constant::operator delete): Likewise, handle deletion of the
	memory we allocate.

Fri Mar  3 14:00:08 1995  John Eaton  <jwe@schoch.che.utexas.edu>

	* error.cc (verror): Terminate output_buf with ends.

	* statdefs.h: Use C-style comment in first line instead of
	C++-style comment.

Mon Feb 27 10:11:18 1995  John Eaton  <jwe@schoch.che.utexas.edu>

	* parse.y (maybe_convert_to_ans_assign): Only lookup ans once.
	* variables.cc (bind_ans): New function.
	* tree-expr.cc (tree_identifier::eval (int)): Use it here.
	(tree_identifier::eval (int, int, const Octave_object&): And here.

	* tree-expr.cc (install_nargin_and_nargout): New function.
	* tree-expr.h (tree_function::tree_function (tree_statement_list *,
	symbol_table *, int, int)): Call it.

	* tree-expr.cc (tree_function::bind_nargin_and_nargout): New function.
	(tree_function::eval): Call it insead of the one from variables.cc.

	* variables.cc (bind_nargin_and_nargout): #if 0 out.

Sun Feb 26 00:17:06 1995  John Eaton  <jwe@schoch.che.utexas.edu>

	* load-save.cc (Fload, Fsave): Free fname returned by tilde_expand().
	* dirfns.cc (Fls): Likewise.

	* tree-expr.cc (tree_multi_assignment_expression::eval (int, int,
	const Octave_object&)): Call tree_return_list::operator () (Pix)
	explicitly.

	* octave.cc (initialize_globals): Put TEXMF in the environment for
	kpthsea.

	* Makefile.in (OCTAVE_LIBS): Use @LIBINFO@ and @LIBREADLINE@,
	substituted by configure.  Use kpathsea.a, not libkpathsea, so we
	don't have to modify the kpathsea Makefile.

Sat Feb 25 18:59:26 1995  John Eaton  <jwe@schoch.che.utexas.edu>

	* pathsearch.cc: New file.
	* pathsearch.h: New file.
	* Makefile.in (INCLUDES): Include it in the list.
	* dynamic-ld.cc, help.cc, utils.cc: Use it instead of repeating
	identical code multiple times.

	* variables.cc (install_builtin_variables): Only DEFVAR
	suppress_verbose_help_message if USE_GNU_INFO.

	* help.cc (Fhelp): Only handle -i if USE_GNU_INFO.
	(additional_help_message): Only print message if USE_GNU_INFO.
	(builtin_help): New function.
	(help_from_info): New function.  Print warning if not USE_GNU_INFO.

See ChangeLog.1 in the top level directory for earlier changes.
