diff src/octave.cc @ 1684:f85887dfe06c

[project @ 1995-12-30 03:46:07 by jwe]
author jwe
date Sat, 30 Dec 1995 03:51:15 +0000
parents 6708c53892c1
children acf3af7e64f7
line wrap: on
line diff
--- a/src/octave.cc	Sat Dec 30 03:46:07 1995 +0000
+++ b/src/octave.cc	Sat Dec 30 03:51:15 1995 +0000
@@ -78,90 +78,16 @@
 #include "variables.h"
 #include "version.h"
 
-#if !defined (HAVE_ATEXIT) && defined (HAVE_ON_EXIT)
-extern "C" int on_exit ();
-#define atexit on_exit
-#endif
-
-// argv[0] for this program.
-char *raw_prog_name = 0;
-
-// Cleaned-up name of this program, not including path information.
-char *prog_name = 0;
-
-// Login name for user running this program.
-char *user_name = 0;
-
-// Name of the host we are running on.
-char *host_name = 0;
-
-// User's home directory.
-char *home_directory = 0;
-
-// Guess what?
-char *the_current_working_directory = 0;
-
-// The path that will be searched for programs that we execute.
-// (--exec-path path)
-char *exec_path = 0;
-
-// Load path specified on command line.
-// (--path path; -p path)
-char *load_path = 0;
-
-// Name of the info file specified on command line.
-// (--info-file file)
-char *info_file = 0;
-
-// Name of the info reader we'd like to use.
-// (--info-program program)
-char *info_prog = 0;
-
-// Name of the editor to be invoked by the edit_history command.
-char *editor = 0;
-
-// If nonzero, don't do fancy line editing.
-int no_line_editing = 0;
-
-// If nonzero, print verbose info in some cases.
-// (--verbose; -V)
-int verbose_flag = 0;
-
-// Command number, counting from the beginning of this session.
-int current_command_number = 1;
-
-// Nonzero means we are exiting via the builtin exit or quit functions.
-int quitting_gracefully = 0;
-
-// Current command to execute.
-tree_statement_list *global_command = 0;
-
-// Pointer to function that is currently being evaluated.
-tree_function *curr_function = 0;
-
-// Nonzero means input is coming from startup file.
-int input_from_startup_file = 0;
-
-// The command-line options.
-charMatrix octave_argv;
-
-// Nonzero means that input is coming from a file that was named on
-// the command line.
-int input_from_command_line_file = 1;
+// This is from readline's paren.c:
+extern int rl_blink_matching_paren;
 
 // Top level context (?)
 jmp_buf toplevel;
 
-// This is from readline's paren.c:
-extern int rl_blink_matching_paren;
-
 // Nonzero means we read ~/.octaverc and ./.octaverc.
 // (--norc; --ignore-init-file; -f)
 static int read_init_files = 1;
 
-// Nonzero means we printed messages about reading startup files.
-static int reading_startup_message_printed = 0;
-
 // Nonzero means we don't print the usual startup message.
 // (--quiet; --silent; -q)
 static int inhibit_startup_message = 0;
@@ -295,120 +221,6 @@
   editor = default_editor ();
 }
 
-void
-parse_and_execute (FILE *f, int print)
-{
-  begin_unwind_frame ("parse_and_execute");
-  
-  YY_BUFFER_STATE old_buf = current_buffer ();
-  YY_BUFFER_STATE new_buf = create_buffer (f);
-
-  add_unwind_protect (restore_input_buffer, (void *) old_buf);
-  add_unwind_protect (delete_input_buffer, (void *) new_buf);
-
-  switch_to_buffer (new_buf);
-
-  unwind_protect_int (using_readline);
-  unwind_protect_int (input_from_command_line_file);
-
-  using_readline = 0;
-  input_from_command_line_file = 0;
-
-  unwind_protect_ptr (curr_sym_tab);
-
-  int retval;
-  do
-    {
-      reset_parser ();
-
-      retval = yyparse ();
-
-      if (retval == 0 && global_command)
-	{
-	  global_command->eval (print);
-	  delete global_command;
-	}
-    }
-  while (retval == 0);
-
-  run_unwind_frame ("parse_and_execute");
-}
-
-void
-parse_and_execute (const char *s, int print, int verbose,
-		   const char *warn_for)
-{
-  begin_unwind_frame ("parse_and_execute_2");
-
-  unwind_protect_int (reading_script_file);
-  unwind_protect_ptr (curr_fcn_file_full_name);
-
-  reading_script_file = 1;
-  curr_fcn_file_full_name = s;
-
-  FILE *f = get_input_from_file (s, 0);
-  if (f)
-    {
-      unwind_protect_int (input_line_number);
-      unwind_protect_int (current_input_column);
-
-      input_line_number = 0;
-      current_input_column = 1;
-
-      if (verbose)
-	{
-	  cout << "reading commands from " << s << " ... ";
-	  reading_startup_message_printed = 1;
-	  cout.flush ();
-	}
-
-      parse_and_execute (f, print);
-
-      fclose (f);
-
-      if (verbose)
-	cout << "done." << endl;
-    }
-  else if (warn_for)
-    error ("%s: unable to open file `%s'", warn_for, s);
-
-  run_unwind_frame ("parse_and_execute_2");
-}
-
-DEFUN ("source", Fsource, Ssource, 10,
-  "source (FILE)\n\
-\n\
-Parse and execute the contents of FILE.  Like executing commands in a\n\
-script file but without requiring the file to be named `FILE.m'.")
-{
-  Octave_object retval;
-
-  int nargin = args.length ();
-
-  if (nargin == 1)
-    {
-      const char *file = args(0).string_value ();
-
-      if (! error_state)
-	{
-	  file = tilde_expand (file);
-
-	  parse_and_execute (file, 1, 0, "source");
-
-	  if (error_state)
-	    error ("source: error sourcing file `%s'", file);
-
-	  delete [] file;
-	}
-      else
-	error ("source: expecting file name as argument");
-    }
-  else
-    print_usage ("source");
-
-  return retval;
-}
-
 // Initialize by reading startup files.
 
 static void
@@ -502,37 +314,6 @@
   exit (1);
 }
 
-// Fix up things before exiting.
-
-void
-clean_up_and_exit (int retval)
-{
-  raw_mode (0);
-
-  clean_up_history ();
-
-  close_plot_stream ();
-
-  close_diary_file ();
-
-  close_files ();
-
-  cleanup_tmp_files ();
-
-  if (!quitting_gracefully && (interactive || forced_interactive))
-    cout << "\n";
-
-  if (retval == EOF)
-    retval = 0;
-
-  exit (retval);
-
-  // This is bogus but should prevent g++ from giving a warning saying
-  // that this volatile function does return.
-
-  panic_impossible ();
-}
-
 static void
 print_version_and_exit (void)
 {
@@ -801,385 +582,6 @@
   clean_up_and_exit (retval);
 }
 
-DEFUN_TEXT ("casesen", Fcasesen, Scasesen, 10,
-  "casesen [on|off]")
-{
-  Octave_object retval;
-
-  DEFINE_ARGV("casesen");
-
-  if (argc == 1 || (argc > 1 && strcmp (argv[1], "off") == 0))
-    warning ("casesen: sorry, Octave is always case sensitive");
-  else if (argc > 1 && strcmp (argv[1], "on") == 0)
-    ; // ok.
-  else
-    print_usage ("casesen");
-
-  DELETE_ARGV;
-
-  return retval;
-}
-
-DEFUN ("computer", Fcomputer, Scomputer, 11,
-  "computer ():\n\
-\n\
-Have Octave ask the system, \"What kind of computer are you?\"")
-{
-  Octave_object retval;
-
-  int nargin = args.length ();
-
-  if (nargin != 0)
-    warning ("computer: ignoring extra arguments");
-
-  ostrstream output_buf;
-
-  if (strcmp (TARGET_HOST_TYPE, "unknown") == 0)
-    output_buf << "Hi Dave, I'm a HAL-9000";
-  else
-    output_buf << TARGET_HOST_TYPE;
-
-  if (nargout == 0)
-    {
-      output_buf << "\n" << ends;
-      maybe_page_output (output_buf);
-    }
-  else
-    {
-      output_buf << ends;
-      char *msg = output_buf.str ();
-      retval = msg;
-      delete [] msg;
-    }
-
-  return retval;
-}
-
-DEFUN ("flops", Fflops, Sflops, 10,
-  "flops (): count floating point operations")
-{
-  int nargin = args.length ();
-
-  if (nargin > 0)
-    print_usage ("flops");
-
-  warning ("flops is a flop, always returning zero");
-
-  return 0.0;
-}
-
-DEFUN ("quit", Fquit, Squit, 00,
-  "quit (): exit Octave gracefully")
-{
-  Octave_object retval;
-  quitting_gracefully = 1;
-  clean_up_and_exit (0);
-  return retval;
-}
-
-DEFALIAS (exit, quit);
-
-DEFUN ("warranty", Fwarranty, Swarranty, 00,
-  "warranty (): describe copying conditions")
-{
-  Octave_object retval;
-
-  ostrstream output_buf;
-  output_buf << "\n" OCTAVE_NAME_VERSION_AND_COPYRIGHT "\n\n\
-This program is free software; you can redistribute it and/or modify\n\
-it under the terms of the GNU General Public License as published by\n\
-the Free Software Foundation; either version 2 of the License, or\n\
-(at your option) any later version.\n\
-\n\
-This program is distributed in the hope that it will be useful,\n\
-but WITHOUT ANY WARRANTY; without even the implied warranty of\n\
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n\
-GNU General Public License for more details.\n\
-\n\
-You should have received a copy of the GNU General Public License\n\
-along with this program. If not, write to the Free Software\n\
-Foundation, 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\n\
-\n";
-
-  output_buf << ends;
-  maybe_page_output (output_buf);
-
-  return retval;
-}
-
-// XXX FIXME XXX -- this may not be the best place for these...
-
-Octave_object
-feval (const Octave_object& args, int nargout)
-{
-  Octave_object retval;
-
-  tree_fvc *fcn = is_valid_function (args(0), "feval", 1);
-  if (fcn)
-    {
-      int tmp_nargin = args.length () - 1;
-      Octave_object tmp_args;
-      tmp_args.resize (tmp_nargin);
-      for (int i = 0; i < tmp_nargin; i++)
-	tmp_args(i) = args(i+1);
-      retval = fcn->eval (0, nargout, tmp_args);
-    }
-
-  return retval;
-}
-
-DEFUN ("feval", Ffeval, Sfeval, 11,
-  "feval (NAME, ARGS, ...)\n\
-\n\
-evaluate NAME as a function, passing ARGS as its arguments")
-{
-  Octave_object retval;
-
-  int nargin = args.length ();
-
-  if (nargin > 0)
-    retval = feval (args, nargout);
-  else
-    print_usage ("feval");
-
-  return retval;
-}
-
-static Octave_object
-eval_string (const char *string, int print, int& parse_status,
-	     int nargout) 
-{
-  begin_unwind_frame ("eval_string");
-
-  unwind_protect_int (get_input_from_eval_string);
-  unwind_protect_int (input_from_command_line_file);
-  unwind_protect_ptr (global_command);
-  unwind_protect_ptr (current_eval_string);
-
-  get_input_from_eval_string = 1;
-  input_from_command_line_file = 0;
-  current_eval_string = string;
-
-  YY_BUFFER_STATE old_buf = current_buffer ();
-  YY_BUFFER_STATE new_buf = create_buffer (0);
-
-  add_unwind_protect (restore_input_buffer, (void *) old_buf);
-  add_unwind_protect (delete_input_buffer, (void *) new_buf);
-
-  switch_to_buffer (new_buf);
-
-  unwind_protect_ptr (curr_sym_tab);
-
-  reset_parser ();
-
-  parse_status = yyparse ();
-
-  // Important to reset the idea of where input is coming from before
-  // trying to eval the command we just parsed -- it might contain the
-  // name of an function file that still needs to be parsed!
-
-  tree_statement_list *command = global_command;
-
-  run_unwind_frame ("eval_string");
-
-  Octave_object retval;
-
-  if (parse_status == 0 && command)
-    {
-      retval = command->eval (print, nargout);
-      delete command;
-    }
-
-  return retval;
-}
-
-tree_constant
-eval_string (const char *string, int print, int& parse_status)
-{
-  tree_constant retval;
-
-  Octave_object tmp = eval_string (string, print, parse_status, 1);
-
-  retval = tmp(0);
-
-  return retval;
-}
-
-static Octave_object
-eval_string (const tree_constant& arg, int& parse_status, int nargout)
-{
-  const char *string = arg.string_value ();
-
-  if (error_state)
-    {
-      error ("eval: expecting string argument");
-      return -1.0;
-    }
-
-  // Yes Virginia, we always print here...
-
-  return eval_string (string, 1, parse_status, nargout);
-}
-
-DEFUN ("eval", Feval, Seval, 11,
-  "eval (TRY, CATCH)\n\
-\n\
-Evaluate the string TRY as octave code.  If that fails, evaluate the\n\
-string CATCH.")
-{
-  Octave_object retval;
-
-  int nargin = args.length ();
-
-  if (nargin > 0)
-    {
-      begin_unwind_frame ("Feval");
-
-      if (nargin > 1)
-	{
-	  unwind_protect_int (buffer_error_messages);
-	  buffer_error_messages = 1;
-	}
-
-      int parse_status = 0;
-
-      retval = eval_string (args(0), parse_status, nargout);
-
-      if (nargin > 1 && (parse_status != 0 || error_state))
-	{
-	  error_state = 0;
-
-	  // Set up for letting the user print any messages from
-	  // errors that occurred in the first part of this eval().
-
-	  buffer_error_messages = 0;
-	  bind_global_error_variable ();
-	  add_unwind_protect (clear_global_error_variable, 0);
-
-	  eval_string (args(1), parse_status, nargout);
-
-	  retval = Octave_object ();
-	}
-
-      run_unwind_frame ("Feval");
-    }
-  else
-    print_usage ("eval");
-
-  return retval;
-}
-
-// Execute a shell command.
-
-DEFUN ("system", Fsystem, Ssystem, 11,
-  "system (string [, return_output]): execute shell commands")
-{
-  Octave_object retval;
-
-  int nargin = args.length ();
-
-  if (nargin < 1 || nargin > 2)
-    {
-      print_usage ("system");
-      return retval;
-    }
-
-  tree_constant tc_command = args(0);
-
-  const char *tmp_str = tc_command.string_value ();
-
-  if (error_state)
-    {
-      error ("system: expecting string as first argument");
-    }
-  else
-    {
-      iprocstream *cmd = new iprocstream (tmp_str);
-
-      add_unwind_protect (cleanup_iprocstream, cmd);
-
-      int status = 127;
-
-      if (cmd && *cmd)
-	{
-	  ostrstream output_buf;
-
-	  char ch;
-	  while (cmd->get (ch))
-	    output_buf.put (ch);
-
-	  output_buf << ends;
-
-	  status = cmd->close ();
-
-	  // The value in status is as returned by waitpid.  If the
-	  // process exited normally, extract the actual exit status of
-	  // the command.  Otherwise, return 127 as a failure code.
-
-	  if ((status & 0xff) == 0)
-	    status = (status & 0xff00) >> 8;
-
-	  if (nargout > 0 || nargin > 1)
-	    {
-	      char *msg = output_buf.str ();
-
-	      retval(1) = (double) status;
-	      retval(0) = msg;
-
-	      delete [] msg;
-	    }
-	  else
-	    maybe_page_output (output_buf);
-	}
-      else
-	error ("unable to start subprocess for `%s'", tmp_str);
-
-      run_unwind_protect ();
-    }
-
-  return retval;
-}
-
-DEFALIAS (shell_cmd, system);
-
-#if defined (__GNUG__) && defined (DEBUG_NEW_DELETE)
-int debug_new_delete = 0;
-
-typedef void (*vfp)(void);
-extern vfp __new_handler;
-
-void *
-__builtin_new (size_t sz)
-{
-  void *p;
-
-  /* malloc (0) is unpredictable; avoid it.  */
-  if (sz == 0)
-    sz = 1;
-  p = (void *) malloc (sz);
-  while (p == 0)
-    {
-      (*__new_handler) ();
-      p = (void *) malloc (sz);
-    }
-
-  if (debug_new_delete)
-    cout << "__builtin_new: " << p << endl;
-
-  return p;
-}
-
-void
-__builtin_delete (void *ptr)
-{
-  if (debug_new_delete)
-    cout << "__builtin_delete: " << ptr << endl;
-
-  if (ptr)
-    free (ptr);
-}
-#endif
-
 /*
 ;;; Local Variables: ***
 ;;; mode: C++ ***