* main.c (enable_external_editor): Don't declare.
[binutils-gdb.git] / gdb / main.c
index eb058bb1a27183d0839521e58c5e2d4fe7a97358..2e69d800a2c31bb53bf1ba5e7b57a4963bc44df5 100644 (file)
@@ -1,5 +1,6 @@
 /* Top level stuff for GDB, the GNU debugger.
-   Copyright 1986-1995, 1999-2000 Free Software Foundation, Inc.
+   Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
+   1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -22,7 +23,8 @@
 #include "top.h"
 #include "target.h"
 #include "inferior.h"
-#include "call-cmds.h"
+#include "symfile.h"
+#include "gdbcore.h"
 
 #include "getopt.h"
 
 #include "gdb_string.h"
 #include "event-loop.h"
 #include "ui-out.h"
-#if defined (TUI) || defined (GDBTK)
-/* FIXME: cagney/2000-01-31: This #include is to allow older code such
-   as that found in the TUI to continue to build. */
-#include "tui/tui-file.h"
-#endif
 
 /* If nonzero, display time usage both at startup and for each command.  */
 
@@ -53,6 +50,11 @@ int display_space;
    processes UI events asynchronously. */
 int event_loop_p = 1;
 
+#ifdef UI_OUT
+/* Has an interpreter been specified and if so, which. */
+char *interpreter_p;
+#endif
+
 /* Whether this is the command line version or not */
 int tui_version = 0;
 
@@ -79,14 +81,8 @@ static void print_gdb_help (struct ui_file *);
 /* These two are used to set the external editor commands when gdb is farming
    out files to be edited by another program. */
 
-extern int enable_external_editor;
 extern char *external_editor_command;
 
-#ifdef __CYGWIN__
-#include <windows.h>           /* for MAX_PATH */
-#include <sys/cygwin.h>                /* for cygwin32_conv_to_posix_path */
-#endif
-
 /* Call command_loop.  If it happens to return, pass that through as a
    non-zero return status. */
 
@@ -100,7 +96,7 @@ captured_command_loop (void *data)
   /* FIXME: cagney/1999-11-05: A correct command_loop() implementaton
      would clean things up (restoring the cleanup chain) to the state
      they were just prior to the call.  Technically, this means that
-     the do_cleanups() below is redundant.  Unfortunatly, many FUNC's
+     the do_cleanups() below is redundant.  Unfortunately, many FUNCs
      are not that well behaved.  do_cleanups should either be replaced
      with a do_cleanups call (to cover the problem) or an assertion
      check to detect bad FUNCs code. */
@@ -192,20 +188,10 @@ captured_main (void *data)
   getcwd (gdb_dirbuf, sizeof (gdb_dirbuf));
   current_directory = gdb_dirbuf;
 
-#if defined (TUI) || defined (GDBTK)
-  /* Older code uses the tui_file and fputs_unfiltered_hook().  It
-     should be using a customized UI_FILE object and re-initializing
-     within its own _initialize function.  */
-  gdb_stdout = tui_fileopen (stdout);
-  gdb_stderr = tui_fileopen (stderr);
-  gdb_stdlog = gdb_stdout;     /* for moment */
-  gdb_stdtarg = gdb_stderr;    /* for moment */
-#else
   gdb_stdout = stdio_fileopen (stdout);
   gdb_stderr = stdio_fileopen (stderr);
   gdb_stdlog = gdb_stderr;     /* for moment */
   gdb_stdtarg = gdb_stderr;    /* for moment */
-#endif
 
   /* initialize error() */
   error_init ();
@@ -260,9 +246,11 @@ captured_main (void *data)
       {"enable-external-editor", no_argument, 0, 'y'},
       {"editor-command", required_argument, 0, 'w'},
 #endif
+#ifdef UI_OUT
       {"ui", required_argument, 0, 'i'},
       {"interpreter", required_argument, 0, 'i'},
       {"i", required_argument, 0, 'i'},
+#endif
       {"directory", required_argument, 0, 'd'},
       {"d", required_argument, 0, 'd'},
       {"cd", required_argument, 0, 11},
@@ -342,7 +330,7 @@ captured_main (void *data)
 #ifdef GDBTK
          case 'z':
            {
-             extern int gdbtk_test PARAMS ((char *));
+extern int gdbtk_test (char *);
              if (!gdbtk_test (optarg))
                {
                  fprintf_unfiltered (gdb_stderr, "%s: unable to load tclcommand file \"%s\"",
@@ -352,27 +340,19 @@ captured_main (void *data)
              break;
            }
          case 'y':
-           {
-             /*
-              * This enables the edit/button in the main window, even
-              * when IDE_ENABLED is set to false. In this case you must
-              * use --tclcommand to specify a tcl/script to be called,
-              * Tcl/Variable to store the edit/command is:
-              * external_editor
-              */
-             enable_external_editor = 1;
-             break;
-           }
+           /* Backwards compatibility only.  */
+           break;
          case 'w':
            {
-             /*
-              * if editor command is enabled, both flags are set
-              */
-             enable_external_editor = 1;
              external_editor_command = xstrdup (optarg);
              break;
            }
 #endif /* GDBTK */
+#ifdef UI_OUT
+         case 'i':
+           interpreter_p = optarg;
+           break;
+#endif
          case 'd':
            dirarg[ndir++] = optarg;
            if (ndir >= dirsize)
@@ -462,6 +442,7 @@ captured_main (void *data)
          execarg = argv[optind];
          break;
        case 2:
+         /* FIXME: The documentation says this can be a "ProcID". as well. */
          corearg = argv[optind];
          break;
        case 3:
@@ -474,12 +455,6 @@ captured_main (void *data)
       quiet = 1;
   }
 
-#if defined(TUI)
-  /* Should this be moved to tui-top.c:_initialize_tui()? */
-  if (tui_version)
-    init_ui_hook = tuiInit;
-#endif
-
   /* Initialize all files.  Give the interpreter a chance to take
      control of the console via the init_ui_hook()) */
   gdb_init (argv[0]);
@@ -522,21 +497,7 @@ captured_main (void *data)
      *before* all the command line arguments are processed; it sets
      global parameters, which are independent of what file you are
      debugging or what directory you are in.  */
-#ifdef __CYGWIN32__
-  {
-    char *tmp = getenv ("HOME");
-
-    if (tmp != NULL)
-      {
-       homedir = (char *) alloca (MAX_PATH + 1);
-       cygwin32_conv_to_posix_path (tmp, homedir);
-      }
-    else
-      homedir = NULL;
-  }
-#else
   homedir = getenv ("HOME");
-#endif
   if (homedir)
     {
       homeinit = (char *) alloca (strlen (homedir) +
@@ -571,7 +532,7 @@ captured_main (void *data)
 
   for (i = 0; i < ndir; i++)
     catch_command_errors (directory_command, dirarg[i], 0, RETURN_MASK_ALL);
-  free ((PTR) dirarg);
+  xfree (dirarg);
 
   if (execarg != NULL
       && symarg != NULL
@@ -580,15 +541,15 @@ captured_main (void *data)
       /* The exec file and the symbol-file are the same.  If we can't
          open it, better only print one error message.
          catch_command_errors returns non-zero on success! */
-      if (catch_command_errors (exec_file_command, execarg, !batch, RETURN_MASK_ALL))
-       catch_command_errors (symbol_file_command, symarg, 0, RETURN_MASK_ALL);
+      if (catch_command_errors (exec_file_attach, execarg, !batch, RETURN_MASK_ALL))
+       catch_command_errors (symbol_file_add_main, symarg, 0, RETURN_MASK_ALL);
     }
   else
     {
       if (execarg != NULL)
-       catch_command_errors (exec_file_command, execarg, !batch, RETURN_MASK_ALL);
+       catch_command_errors (exec_file_attach, execarg, !batch, RETURN_MASK_ALL);
       if (symarg != NULL)
-       catch_command_errors (symbol_file_command, symarg, 0, RETURN_MASK_ALL);
+       catch_command_errors (symbol_file_add_main, symarg, 0, RETURN_MASK_ALL);
     }
 
   /* After the symbol file has been read, print a newline to get us
@@ -653,7 +614,7 @@ captured_main (void *data)
 #endif
       catch_command_errors (source_command, cmdarg[i], !batch, RETURN_MASK_ALL);
     }
-  free ((PTR) cmdarg);
+  xfree (cmdarg);
 
   /* Read in the old history after all the command files have been read. */
   init_history ();
@@ -694,13 +655,6 @@ captured_main (void *data)
 #endif
     }
 
-  /* The default command loop. 
-     The WIN32 Gui calls this main to set up gdb's state, and 
-     has its own command loop. */
-#if !defined _WIN32 || defined __GNUC__
-  /* GUIs generally have their own command loop, mainloop, or
-     whatever.  This is a good place to gain control because many
-     error conditions will end up here via longjmp(). */
 #if 0
   /* FIXME: cagney/1999-11-06: The original main loop was like: */
   while (1)
@@ -736,7 +690,6 @@ captured_main (void *data)
     {
       catch_errors (captured_command_loop, 0, "", RETURN_MASK_ALL);
     }
-#endif
   /* No exit -- exit is through quit_command.  */
 }