# HG changeset patch # User jwe # Date 1169671417 0 # Node ID f1676652d808c69f665d4631caad9f2fd9373a18 # Parent 738c97e101eb98dd59e4b1c73bf5db454e1e5eb0 [project @ 2007-01-24 20:43:36 by jwe] diff -r 738c97e101eb -r f1676652d808 ChangeLog --- a/ChangeLog Wed Jan 24 19:58:46 2007 +0000 +++ b/ChangeLog Wed Jan 24 20:43:37 2007 +0000 @@ -1,3 +1,8 @@ +2007-01-24 John W. Eaton + + * octMakefile.in (install): Install NEWS file. + (uninstall): Remove it. + 2007-01-08 David Bateman * configure.in: Replace sparsesuite with suitesparse to match diff -r 738c97e101eb -r f1676652d808 libcruft/ChangeLog --- a/libcruft/ChangeLog Wed Jan 24 19:58:46 2007 +0000 +++ b/libcruft/ChangeLog Wed Jan 24 20:43:37 2007 +0000 @@ -1,3 +1,8 @@ +2007-01-24 Alexander Barth + + * misc/f77-fcn.h (F77_CSTRING): Call OCTAVE_LOCAL_BUFFER with cs, + not F77_CHAR_ARG_USE (s). + 2006-11-11 John W. Eaton * Makerules.in (%.def : %.f): Use $(simple-move-if-change-rule) here. diff -r 738c97e101eb -r f1676652d808 libcruft/misc/f77-fcn.h --- a/libcruft/misc/f77-fcn.h Wed Jan 24 19:58:46 2007 +0000 +++ b/libcruft/misc/f77-fcn.h Wed Jan 24 20:43:37 2007 +0000 @@ -216,8 +216,7 @@ Needs to include and . */ #define F77_CSTRING(s, len, cs) \ - OCTAVE_LOCAL_BUFFER (char, F77_CHAR_ARG_USE (s), \ - F77_CHAR_ARG_LEN_USE (s, len) + 1); \ + OCTAVE_LOCAL_BUFFER (char, cs, F77_CHAR_ARG_LEN_USE (s, len) + 1); \ memcpy (cs, F77_CHAR_ARG_USE (s), F77_CHAR_ARG_LEN_USE (s, len)); \ cs[F77_CHAR_ARG_LEN_USE(s, len)] = '\0' diff -r 738c97e101eb -r f1676652d808 octMakefile.in --- a/octMakefile.in Wed Jan 24 19:58:46 2007 +0000 +++ b/octMakefile.in Wed Jan 24 20:43:37 2007 +0000 @@ -113,6 +113,7 @@ $(INSTALL_SCRIPT) mkoctfile $(DESTDIR)$(bindir)/mkoctfile-$(version) (cd $(DESTDIR)$(bindir); $(LN_S) mkoctfile-$(version) $(DESTDIR)$(bindir)/mkoctfile) $(INSTALL_DATA) config.h $(DESTDIR)$(octincludedir)/octave/config.h + $(INSTALL_DATA) $(srcdir)/NEWS $(DESTDIR)$(datadir)/octave/$(version)/NEWS uninstall:: rm -f $(DESTDIR)$(bindir)/octave-bug @@ -122,6 +123,7 @@ rm -f $(DESTDIR)$(bindir)/mkoctfile rm -f $(DESTDIR)$(bindir)/mkoctfile-$(version) rm -f $(DESTDIR)$(octincludedir)/octave/config.h + rm -f $(DESTDIR)$(datadir)/octave/$(version)/NEWS maintainer-clean:: @echo "" diff -r 738c97e101eb -r f1676652d808 src/ChangeLog --- a/src/ChangeLog Wed Jan 24 19:58:46 2007 +0000 +++ b/src/ChangeLog Wed Jan 24 20:43:37 2007 +0000 @@ -1,3 +1,20 @@ +2007-01-24 John W. Eaton + + * pt-assgn.cc (former_built_in_variables): New static data. + (maybe_warn_former_built_in_variable): New static function. + (tree_simple_assignment::tree_simple_assignment, + tree_multi_assignment::tree_multi_assignment): + Move definition here from pt-assign.h + Maybe warn about assignment to obsolete built-in variables. + + * version.h (OCTAVE_STARTUP_MESSAGE): Mention "news" function. + + * pt-stmt.cc (tree_statement::eval): Use dynamic_cast, not + static_cast. + + * help.cc (help_from_file): Show .oct or .mex file name if one + exists in the same directory as the .m file. + 2007-01-23 Luis F. Ortiz * strfns.cc (Fstrncmp): New function. diff -r 738c97e101eb -r f1676652d808 src/help.cc --- a/src/help.cc Wed Jan 24 19:58:46 2007 +0000 +++ b/src/help.cc Wed Jan 24 20:43:37 2007 +0000 @@ -43,6 +43,7 @@ #include "cmd-edit.h" #include "file-ops.h" +#include "file-stat.h" #include "oct-env.h" #include "str-vec.h" @@ -1078,6 +1079,18 @@ { if (h.length () > 0) { + // Strip extension + size_t l = file.length (); + if (l > 2 && file.substr (l-2) == ".m") + { + std::string tmp = file.substr (0, l - 2); + + if (file_stat (tmp + ".oct")) + file = tmp + ".oct"; + else if (file_stat (tmp + ".mex")) + file = tmp + ".mex"; + } + os << nm << " is the file " << file << "\n\n"; display_help_text (os, h); diff -r 738c97e101eb -r f1676652d808 src/pt-assign.cc --- a/src/pt-assign.cc Wed Jan 24 19:58:46 2007 +0000 +++ b/src/pt-assign.cc Wed Jan 24 20:43:37 2007 +0000 @@ -26,6 +26,7 @@ #endif #include +#include #include "defun.h" #include "error.h" @@ -43,6 +44,125 @@ // Simple assignment expressions. +static const char *former_built_in_variables[] = +{ + "DEFAULT_EXEC_PATH", + "DEFAULT_LOADPATH", + "EDITOR", + "EXEC_PATH", + "FFTW_WISDOM_PROGRAM", + "IMAGEPATH", + "INFO_FILE", + "INFO_PROGRAM", + "LOADPATH", + "MAKEINFO_PROGRAM", + "PAGER", + "PS1", + "PS2", + "PS4", + "__kluge_procbuf_delay__", + "ans", + "automatic_replot", + "beep_on_error", + "completion_append_char", + "crash_dumps_octave_core", + "current_script_file_name", + "debug_on_error", + "debug_on_interrupt", + "debug_on_warning", + "debug_symtab_lookups", + "default_save_format", + "echo_executing_commands", + "fixed_point_format", + "gnuplot_binary", + "gnuplot_command_axes", + "gnuplot_command_end", + "gnuplot_command_plot", + "gnuplot_command_replot", + "gnuplot_command_splot", + "gnuplot_command_title", + "gnuplot_command_using", + "gnuplot_command_with", + "gnuplot_has_frames", + "history_file", + "history_size", + "ignore_function_time_stamp", + "max_recursion_depth", + "octave_core_file_format", + "octave_core_file_limit", + "octave_core_file_name", + "output_max_field_width", + "output_precision", + "page_output_immediately", + "page_screen_output", + "print_answer_id_name", + "print_empty_dimensions", + "print_rhs_assign_val", + "save_header_format_string", + "save_precision", + "saving_history", + "sighup_dumps_octave_core", + "sigterm_dumps_octave_core", + "silent_functions", + "split_long_rows", + "string_fill_char", + "struct_levels_to_print", + "suppress_verbose_help_message", + "variables_can_hide_functions", + "warn_assign_as_truth_value", + "warn_associativity_change", + "warn_divide_by_zero", + "warn_empty_list_elements", + "warn_fortran_indexing", + "warn_function_name_clash", + "warn_future_time_stamp", + "warn_imag_to_real", + "warn_matlab_incompatible", + "warn_missing_semicolon", + "warn_neg_dim_as_zero", + "warn_num_to_str", + "warn_precedence_change", + "warn_reload_forces_clear", + "warn_resize_on_range_error", + "warn_separator_insert", + "warn_single_quote_string", + "warn_str_to_num", + "warn_undefined_return_values", + "warn_variable_switch_label", + "whos_line_format", + 0, +}; + +static void +maybe_warn_former_built_in_variable (const std::string& nm) +{ + static bool initialized = false; + + static std::set vars; + + if (! initialized) + { + const char **p = former_built_in_variables; + + while (*p) + vars.insert (*p++); + } + + if (vars.find (nm) != vars.end ()) + warning_with_id ("Octave:built-in-variable-assignment", + "%s is no longer a built-in variable; please read the NEWS file or type `news' for details", + nm.c_str ()); +} + +tree_simple_assignment::tree_simple_assignment + (tree_expression *le, tree_expression *re, + bool plhs, int l, int c, octave_value::assign_op t) + : tree_expression (l, c), lhs (le), rhs (re), preserve (plhs), etype (t) +{ + if (lhs) + maybe_warn_former_built_in_variable (lhs->name ()); +} + tree_simple_assignment::~tree_simple_assignment (void) { if (! preserve) @@ -179,6 +299,20 @@ // Multi-valued assignment expressions. +tree_multi_assignment::tree_multi_assignment + (tree_argument_list *lst, tree_expression *r, + bool plhs, int l, int c, octave_value::assign_op t) + : tree_expression (l, c), lhs (lst), rhs (r), preserve (plhs), etype (t) +{ + for (tree_argument_list::iterator p = lhs->begin (); p != lhs->end (); p++) + { + tree_expression *lhs = *p; + + if (lhs) + maybe_warn_former_built_in_variable (lhs->name ()); + } +} + tree_multi_assignment::~tree_multi_assignment (void) { if (! preserve) diff -r 738c97e101eb -r f1676652d808 src/pt-assign.h --- a/src/pt-assign.h Wed Jan 24 19:58:46 2007 +0000 +++ b/src/pt-assign.h Wed Jan 24 20:43:37 2007 +0000 @@ -50,9 +50,7 @@ tree_simple_assignment (tree_expression *le, tree_expression *re, bool plhs = false, int l = -1, int c = -1, - octave_value::assign_op t = octave_value::op_asn_eq) - : tree_expression (l, c), lhs (le), rhs (re), preserve (plhs), - etype (t) { } + octave_value::assign_op t = octave_value::op_asn_eq); ~tree_simple_assignment (void); @@ -120,9 +118,7 @@ tree_multi_assignment (tree_argument_list *lst, tree_expression *r, bool plhs = false, int l = -1, int c = -1, - octave_value::assign_op t = octave_value::op_asn_eq) - : tree_expression (l, c), lhs (lst), rhs (r), preserve (plhs), - etype (t) { } + octave_value::assign_op t = octave_value::op_asn_eq); ~tree_multi_assignment (void); diff -r 738c97e101eb -r f1676652d808 src/pt-stmt.cc --- a/src/pt-stmt.cc Wed Jan 24 19:58:46 2007 +0000 +++ b/src/pt-stmt.cc Wed Jan 24 20:43:37 2007 +0000 @@ -119,7 +119,7 @@ if (expr->is_identifier ()) { - tree_identifier *id = static_cast (expr); + tree_identifier *id = dynamic_cast (expr); id->do_lookup (script_file_executed, true); diff -r 738c97e101eb -r f1676652d808 src/version.h --- a/src/version.h Wed Jan 24 19:58:46 2007 +0000 +++ b/src/version.h Wed Jan 24 20:43:37 2007 +0000 @@ -82,7 +82,8 @@ #define OCTAVE_STARTUP_MESSAGE \ X_OCTAVE_NAME_VERSION_COPYRIGHT_COPYING_WARRANTY_AND_BUGS \ - (" For details, type `warranty'.\n\n") + (" For details, type `warranty'.\n\ + For information about changes from previous versions, type `news'.\n\n") #endif