changeset 6253:f1676652d808

[project @ 2007-01-24 20:43:36 by jwe]
author jwe
date Wed, 24 Jan 2007 20:43:37 +0000
parents 738c97e101eb
children 5b43c2332b69
files ChangeLog libcruft/ChangeLog libcruft/misc/f77-fcn.h octMakefile.in src/ChangeLog src/help.cc src/pt-assign.cc src/pt-assign.h src/pt-stmt.cc src/version.h
diffstat 10 files changed, 182 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- 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  <jwe@octave.org>
+
+	* octMakefile.in (install): Install NEWS file.
+	(uninstall): Remove it.
+
 2007-01-08  David Bateman  <dbateman@free.fr>
 
 	* configure.in: Replace sparsesuite with suitesparse to match
--- 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  <abarth@marine.usf.edu>
+
+	* misc/f77-fcn.h (F77_CSTRING): Call OCTAVE_LOCAL_BUFFER with cs,
+	not F77_CHAR_ARG_USE (s).
+
 2006-11-11  John W. Eaton  <jwe@octave.org>
 
 	* Makerules.in (%.def : %.f): Use $(simple-move-if-change-rule) here.
--- 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 <cstring> and <vector>.  */
 
 #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' 
 
--- 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 ""
--- 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  <jwe@octave.org>
+
+	* 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  <lortiz@interactivesupercomputing.com>
 
 	* strfns.cc (Fstrncmp): New function.
--- 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);
--- 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 <iostream>
+#include <set>
 
 #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<std::string> 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)
--- 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);
 
--- 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<tree_identifier *> (expr);
+	      tree_identifier *id = dynamic_cast<tree_identifier *> (expr);
 
 	      id->do_lookup (script_file_executed, true);
 
--- 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